隐藏服务器系统版本和软件信息的核心目标是减少攻击者可获取的指纹信息,避免因暴露具体版本而被精准利用已知漏洞;需屏蔽/etc/issue、/etc/issue.net及SSH登录前横幅,禁用DebianBanner与PrintMotd,关闭Apache的ServerTokens和ServerSignature、Nginx的server_tokens、PHP的expose_php,并检查MySQL、FTP及自定义错误页等泄露点。

隐藏服务器系统版本和软件信息,核心目标是减少攻击者可获取的指纹信息,避免因暴露具体版本而被精准利用已知漏洞。这不是“防黑客”,而是降低被自动化扫描器识别后针对性攻击的概率。
隐藏 Linux 系统版本信息
主要屏蔽 /etc/issue、/etc/issue.net 和登录前横幅(pre-login banner),这些内容会在 SSH 连接未认证时直接显示。
- 编辑
/etc/issue和/etc/issue.net,清空内容或仅保留一行简洁提示(如Authorized access only.) - 修改 SSH 配置:编辑
/etc/ssh/sshd_config,确保以下两项设置为no:PrintMotd noDebianBanner no(适用于 Debian/Ubuntu;RHEL/CentOS 系统该参数无效,但需确认无VersionAddendum) - 重启 SSH 服务:
systemctl restart sshd
隐藏 Web 服务器版本号(Apache/Nginx)
HTTP 响应头中的 Server 字段和错误页面默认会泄露软件名与版本,必须关闭。
-
Apache:在
/etc/httpd/conf/httpd.conf或站点配置中添加:ServerTokens ProdServerSignature Off
重启服务:systemctl restart httpd -
Nginx:在
/etc/nginx/nginx.conf的http{}块内添加:server_tokens off;
重载配置:nginx -s reload
隐藏 PHP 版本信息
PHP 默认通过 X-Powered-By 响应头暴露版本,需禁用。
- 编辑
/etc/php.ini(路径依发行版可能为/etc/php/*/apache2/php.ini或/etc/php/*/cli/php.ini) - 找到并修改:
expose_php = Off - 重启 Web 服务(
httpd或nginx+ PHP-FPM)
其他常见泄露点检查
别忽略容易被忽略的细节:
-
MySQL/MariaDB:连接时 banner 默认显示版本。可通过配置
skip-name-resolve并限制远程访问,或使用防火墙仅允许可信 IP 连接,不依赖隐藏版本来防御 -
FTP 服务(vsftpd/proftpd):设置
ftp_banner=Welcome或ServerName类似参数,禁用默认 banner - 自定义错误页:确保 404/500 页面不包含服务器标识(如 “Powered by Apache 2.4.6”),统一使用静态纯 HTML


















