如何设置Linux登录Banner来隐藏系统版本详细信息?

2026-05-07 19:321阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计626个文字,预计阅读时间需要3分钟。

如何设置Linux登录Banner来隐藏系统版本详细信息?

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来隐藏系统版本详细信息?

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服务已重启