如何设置Linux登录Banner来隐藏系统版本详细信息?
- 内容介绍
- 文章标签
- 相关推荐
本文共计626个文字,预计阅读时间需要3分钟。
Linux系统在安装新手版时,登录Banner隐藏版本信息,主要功能是控制输出信息。核心包括SSH连接时的协议层标识、登录前的系统横幅显示、认证后的欢迎信息。无需编译源码,也能完成大部分有效隐藏。
关闭SSH协议层版本暴露
这是最关键的一步,因为攻击者在未登录前就能看到服务指纹。
- 编辑/etc/ssh/sshd_config:确保包含这两行(取消注释或新增):
DebianBanner no
Banner /etc/issue.net - DebianBanner no可屏蔽Debian/Ubuntu系自带的“OpenSSH_9.2p1 Debian-2+deb12u2”这类后缀
- Banner /etc/issue.net把协议握手后的提示指向一个可控文件,避免默认泄露
- 改完执行sudo systemctl restart sshd生效
清空或简化登录前横幅文件
/etc/issue 和 /etc/issue.net 控制本地终端和部分网络服务(如telnet、getty)登录前显示内容,常含内核、发行版、主机名等。
- 用命令快速清空并设只读:
sudo truncate -s 0 /etc/issue /etc/issue.net && sudo chmod 444 /etc/issue /etc/issue.net - 如果想保留一句提示,可向/etc/issue.net写入纯文本,例如:
echo "Authorized access only." | sudo tee /etc/issue.net - 注意:修改后需重新打开SSH连接或重启getty服务才能看到效果
禁用登录后自动显示的系统信息
即使登录成功,/etc/motd(Message of the Day)或/etc/issue也可能被展示,尤其在使用某些终端或SSH客户端时。
- 清空motd:sudo truncate -s 0 /etc/motd
- 在/etc/ssh/sshd_config中添加:
PrintMotd no
这能阻止sshd在用户登录后主动输出motd内容 - 检查是否还有其他服务(如agetty)调用issue,可临时重命名测试:
sudo mv /etc/issue /etc/issue.bak
验证是否真正隐藏成功
不要只看登录界面,重点检查协议握手原始响应:
- 用nc -v your-server-ip 22连接22端口,观察返回的第一行是否只剩SSH-2.0-OpenSSH(无版本号和系统后缀)
- 用ssh -o LogLevel=DEBUG1 user@host,在日志里找debug1: Remote protocol version那一行
- 如果仍看到完整版本,确认DebianBanner no未被其他配置覆盖,且sshd服务已重启
本文共计626个文字,预计阅读时间需要3分钟。
Linux系统在安装新手版时,登录Banner隐藏版本信息,主要功能是控制输出信息。核心包括SSH连接时的协议层标识、登录前的系统横幅显示、认证后的欢迎信息。无需编译源码,也能完成大部分有效隐藏。
关闭SSH协议层版本暴露
这是最关键的一步,因为攻击者在未登录前就能看到服务指纹。
- 编辑/etc/ssh/sshd_config:确保包含这两行(取消注释或新增):
DebianBanner no
Banner /etc/issue.net - DebianBanner no可屏蔽Debian/Ubuntu系自带的“OpenSSH_9.2p1 Debian-2+deb12u2”这类后缀
- Banner /etc/issue.net把协议握手后的提示指向一个可控文件,避免默认泄露
- 改完执行sudo systemctl restart sshd生效
清空或简化登录前横幅文件
/etc/issue 和 /etc/issue.net 控制本地终端和部分网络服务(如telnet、getty)登录前显示内容,常含内核、发行版、主机名等。
- 用命令快速清空并设只读:
sudo truncate -s 0 /etc/issue /etc/issue.net && sudo chmod 444 /etc/issue /etc/issue.net - 如果想保留一句提示,可向/etc/issue.net写入纯文本,例如:
echo "Authorized access only." | sudo tee /etc/issue.net - 注意:修改后需重新打开SSH连接或重启getty服务才能看到效果
禁用登录后自动显示的系统信息
即使登录成功,/etc/motd(Message of the Day)或/etc/issue也可能被展示,尤其在使用某些终端或SSH客户端时。
- 清空motd:sudo truncate -s 0 /etc/motd
- 在/etc/ssh/sshd_config中添加:
PrintMotd no
这能阻止sshd在用户登录后主动输出motd内容 - 检查是否还有其他服务(如agetty)调用issue,可临时重命名测试:
sudo mv /etc/issue /etc/issue.bak
验证是否真正隐藏成功
不要只看登录界面,重点检查协议握手原始响应:
- 用nc -v your-server-ip 22连接22端口,观察返回的第一行是否只剩SSH-2.0-OpenSSH(无版本号和系统后缀)
- 用ssh -o LogLevel=DEBUG1 user@host,在日志里找debug1: Remote protocol version那一行
- 如果仍看到完整版本,确认DebianBanner no未被其他配置覆盖,且sshd服务已重启

