本文目录导读:

- Web服务器(Nginx/Apache)
- SSH服务
- FTP服务器(vsftpd)
- 数据库服务(MySQL/MariaDB)
- 邮件服务(Postfix/Sendmail)
- 通用方法:防火墙与反向代理
- 验证隐藏效果
- 重要提醒
隐藏服务器Banner(服务器标识信息)是提升系统安全性的常见措施,可以防止攻击者根据版本信息定位已知漏洞,不同服务隐藏Banner的方法有所不同,以下是常见的几种场景及具体操作:
Web服务器(Nginx/Apache)
Nginx
编辑 nginx.conf:
http {
server_tokens off; # 隐藏版本号
# 或自定义Banner
add_header Server "CustomName" always;
}
然后重启:systemctl restart nginx
Apache
编辑 httpd.conf 或 security.conf:
ServerTokens Prod # 仅显示"Apache" ServerSignature Off
然后重启:systemctl restart apache2
SSH服务
编辑 /etc/ssh/sshd_config:
# 禁用版本信息 DebitBanner no # 自定义Banner文件(可选) Banner /etc/issue.net # 设置登录提示(不显示系统信息) PrintMotd no
重启:systemctl restart sshd
FTP服务器(vsftpd)
编辑 /etc/vsftpd.conf:
ftpd_banner=Welcome to FTP service # 或完全隐藏: banner_file=/etc/vsftpd_banner
重启:systemctl restart vsftpd
数据库服务(MySQL/MariaDB)
虽然不能完全隐藏版本,但可以限制信息泄露:
- 修改
my.cnf:[mysqld] skip-show-database
- 通过防火墙限制访问源IP
邮件服务(Postfix/Sendmail)
Postfix
编辑 /etc/postfix/main.cf:
smtpd_banner = $myhostname ESMTP
disable_vrfy_command = yes
重启:systemctl restart postfix
通用方法:防火墙与反向代理
- 使用CDN/WAF:如Cloudflare、AWS Shield,可完全隐藏源服务器Banner
- 反向代理:通过Nginx/Caddy反向代理,前端展示自定义Banner
- iptables:限制对特定端口的非预授权访问
验证隐藏效果
使用工具检查是否成功:
# 查看HTTP头部 curl -I http://example.com # 检查SSH版本 ssh -v user@host 2>&1 | grep "SSH" # 通用扫描 nmap -sV --script=banner target.com
重要提醒
- 隐藏Banner是深度防御的一部分,不能替代漏洞修补
- 部分合规要求(如PCI DSS)可能要求不显示敏感版本信息
- 某些服务版本信息可能通过错误页面、默认页面泄露,需一并修改
- 自定义Banner时避免包含真实服务器信息
建议结合安全扫描工具(如Nessus、OpenVAS)定期检查,确保无信息泄露风险。