隐藏linux系统登录banner是关键安全加固措施,需修改ssh的debianbanner和banner配置、清空/issue与/issue.net、禁用ftp/http/数据库等服务的版本暴露,并配合服务最小化与网络访问控制。

Linux系统默认会在登录界面(如SSH、Telnet、FTP等服务)显示操作系统版本、内核信息及欢迎横幅(Banner),这些信息可能被攻击者用于针对性漏洞利用。隐藏或精简Banner内容,是基础但关键的安全加固措施。
修改SSH服务Banner(最常用)
OpenSSH默认不显示详细系统信息,但可通过配置主动屏蔽或自定义提示,防止泄露SSH服务版本号:
- 编辑/etc/ssh/sshd_config,确保以下两行存在且未被注释:
DebianBanner no Banner /etc/issue.net
- DebianBanner no:禁用OpenSSH自带的发行版标识(如“OpenSSH_9.2p1 Debian-2+deb12u2”);
- Banner指向一个自定义文件(如/etc/issue.net),内容可设为简洁提示(如“Authorized access only”),避免包含系统名、版本、架构等;
- 修改后执行sudo systemctl restart sshd生效;
- 验证方式:nc -v [IP] 22 或使用ssh -o LogLevel=DEBUG1 user@host观察连接初始响应。
清理登录前系统横幅(/etc/issue 和 /etc/issue.net)
这些文件控制本地终端和部分网络服务(如telnet、getty)登录前显示的内容,常含内核版本、主机名、发行版信息:
- 清空或重写/etc/issue和/etc/issue.net,仅保留必要提示(如法律声明或警告语);
- 避免使用\m(机器架构)、\r(内核版本)、\s(系统名)等转义序列;
- 若完全禁用,可将文件置为空并设置只读:sudo truncate -s 0 /etc/issue /etc/issue.net && sudo chmod 444 /etc/issue /etc/issue.net;
- 注意:修改后需重启getty服务或重新登录终端才能看到效果。
禁用或限制其他服务Banner(FTP、HTTP、数据库等)
非SSH服务同样可能暴露版本,需按服务类型单独处理:
- vsftpd:在/etc/vsftpd.conf中添加ftpd_banner=Unauthorized access prohibited.,并确保banner_file未启用;
- Apache/Nginx:关闭Server头(Apache加ServerTokens Prod + ServerSignature Off;Nginx设server_tokens off;);
- MySQL/MariaDB:启动时加--skip-show-database参数,或在my.cnf中配置skip_show_database,并禁用version变量暴露(需配合权限控制);
- 所有服务修改后务必重启对应进程,并用curl -I、nmap -sV或telnet测试是否仍返回敏感字段。
补充建议:系统级最小化与权限控制
Banner隐藏只是表层防护,需配合底层收敛:
- 卸载非必要服务(如telnet-server、ftp-server),减少Banner暴露面;
- 使用iptables或nftables限制服务访问源IP,降低探测成功率;
- 定期运行lynis audit system或goss检查Banner类风险项;
- 对生产环境主机,考虑统一部署配置管理工具(Ansible/Puppet)批量管控Banner策略,避免手工遗漏。










