在Ubuntu上加固SSH服务可以采取以下措施:1) 修改默认端口(如更改为2222);2) 禁用root登录;3) 使用公钥认证代替密码;4) 设置强密码策略;5) 配置防火墙(如UFW)仅允许特定IP访问;6) 定期更新SSH和系统软件;7) 使用Fail2ban监控并阻止多次失败的登录尝试。保持日志监控以发现潜在威胁。
SSH(Secure Shell)成为了远程管理 Linux 服务器的主要工具,尽管 SSH 为系统管理员提供了便利性,但其安全性也必须得到重视。弱密码将探讨如何在 Ubuntu 上加固 SSH 服务,以防止潜在的入侵和攻击。

1. 更新系统与软件包
确保您的 Ubuntu 系统始终保持最新状态是非常重要的。定期更新软件包可以修复已知的安全漏洞。您可以通过以下命令更新您的系统:
sudo apt update
sudo apt upgrade
定期运行上述命令,并考虑设置自动更新,以确保及时获取最新的安全补丁。
2. 修改 SSH 默认端口
默认情况下,SSH 服务运行在 22 端口上,这使其成为攻击者的主要目标。通过更改 SSH 服务的默认端口,可以减少自动扫描工具的攻击。在/etc/ssh/sshd_config文件中,找到以下行:
# Port 22
将其更改为非标准端口,例如:
Port 2222
重新启动 SSH 服务:
sudo systemctl restart sshd
请确保在防火墙和路由器上相应地调整端口转发设置,以允许新的 SSH 端口流量。
3. 使用强密码和公钥身份验证
通过使用复杂且难以猜测的密码,您可以显著提高 SSH 服务的安全性。考虑使用公钥身份验证,这是一种比密码更安全的身份验证方法。在服务器上生成密钥对:
ssh-keygen
将公钥复制到目标服务器上:
ssh-copy-id user@your-server-ip
使用公钥身份验证后,可以禁用密码身份验证。在/etc/ssh/sshd_config中找到以下设置,并进行如下修改:
PasswordAuthentication no
这将强制用户仅使用公钥进行身份验证,提高系统的安全性。
4. 启用防火墙
在 Ubuntu 上,您可以使用 UFW(Uncomplicated Firewall)来保护您的 SSH 服务。确保 UFW 已安装并启用:
sudo apt install ufw
sudo ufw enable
然后允许您的 SSH 端口(如果您已更改默认端口,请记得指定正确的端口):
sudo ufw allow 2222/tcp
可以通过以下命令检查 UFW 状态和允许的规则:
sudo ufw status
您还可以使用 fail2ban 来防止暴力破解攻击,即通过监控日志文件,自动阻止多次失败的登录尝试。
安装 fail2ban:
sudo apt install fail2ban
配置 fail2ban 以保护 SSH。编辑/etc/fail2ban/jail.local文件在适当位置添加以下内容:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
这样设置后,如果一个 IP 地址在短时间内多次尝试失败登录,将被锁定 10 分钟。
5. 限制 SSH 用户访问
您可以限制只有特定用户或用户组可以通过 SSH 登录,从而提高系统的安全性。在/etc/ssh/sshd_config文件中添加以下行:
AllowUsers yourusername
如果您使用组访问,可以使用:
AllowGroups sshusers
这将允许只有指定用户或组访问 SSH 服务。
6. 禁用 root 用户 SSH 登录
为了增强安全性,建议禁用 root 账户的 SSH 远程访问。在/etc/ssh/sshd_config中找到以下行,并进行修改:
PermitRootLogin no
这将防止直接以 root 身份登录。管理员可以通过其他用户身份登录后,再使用sudo提权。
7. 使用 SSH 连接时的额外安全措施
- 使用 SSH 代理转发:在使用 SSH 连接到其他主机时,可以考虑启用 SSH 代理转发,这样可以避免将私人密钥放在多个服务器上。
- 设置连接超时:通过设置
ClientAliveInterval和ClientAliveCountMax参数可以增加安全性。编辑/etc/ssh/sshd_config,添加或修改为以下内容:ClientAliveInterval 300ClientAliveCountMax 0
这将使 SSH 会话在 300 秒后如果没有活动则自动断开。
8. 定期检查 SSH 登录记录
定期检查/var/log/auth.log文件可以帮助您识别异常活动。使用以下命令查看 SSH 登录记录:
sudo less /var/log/auth.log
您可以使用 grep 命令过滤出特定的 SSH 登录尝试:
sudo grep 'sshd' /var/log/auth.log
这将帮助您捕捉到异常登录尝试,并进行相应的调查。
9. 备份 SSH 配置
在进行任何配置更改之前,请确保备份您的 SSH 配置文件。可以使用以下命令创建备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
万一出现问题,可以方便地恢复到之前的状态。
10. 监控与定期审计
建议定期审计您的 SSH 配置和日志,以确保没有未授权的更改或异常活动。可以使用工具(如 Lynis)对系统进行更全面的安全审核。为了保证服务器的安全,定期进行全面的安全扫描非常必要。
使用如下命令安装 Lynis:
sudo apt install lynis
运行 Lynis 进行系统审核:
sudo lynis audit system
根据审计结果采取相应的措施,及时修复系统中的漏洞和不当配置。
结论
SSH 对系统管理员至关重要,但安全性必须得到优先考虑。通过实施上述建议,可以显著提高 Ubuntu 上 SSH 服务的安全性,降低潜在攻击者入侵系统的风险。在安全性日益重要的今天,确保 SSH 服务的安全不仅是管理员的责任,也是保护整体服务器安全的重要环节。定期更新、监控日志、使用强密码和公钥验证等措施,将帮助您构建一个更安全的 SSH 环境。







川公网安备51062302000291号