修改SSH默认端口、禁用root登录、启用密钥认证、限制用户与IP访问、设置登录超时及失败尝试,并结合fail2ban防护,可显著提升SSH安全性。

在Linux系统中,安全Shell(SSH)是远程管理服务器最常用的方式。配置不当的SSH服务容易成为攻击入口,因此合理设置SSH对系统安全至关重要。以下是一些实用的配置与优化方法,帮助你提升SSH的安全性。
修改默认SSH端口
默认情况下,SSH服务运行在22端口,这是攻击者扫描和暴力破解的主要目标。更改端口可有效减少自动化攻击。
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到 Port 22 这一行,将其改为一个非知名端口,例如:
Port 2222
保存后重启SSH服务:
sudo systemctl restart sshd
注意:修改端口后,连接时需指定端口,如:ssh user@server -p 2222。
禁用root用户直接登录
允许root通过SSH直接登录会增加安全风险。建议使用普通用户登录后再切换到root。
编辑配置文件:
sudo nano /etc/ssh/sshd_config
修改或添加以下行:
PermitRootLogin no
重启sshd服务使更改生效。之后可通过普通账户登录,再使用sudo su –切换到root。
启用密钥认证并禁用密码登录
基于密钥的身份验证比密码更安全,能有效防止暴力破解。
在本地生成SSH密钥对:
ssh-keygen -t ed25519
将公钥上传到服务器:
ssh-copy-id user@server
确认密钥登录正常后,编辑配置文件:
sudo nano /etc/ssh/sshd_config
设置:
PubkeyAuthentication yes
PasswordAuthentication no
这样系统只接受密钥登录,关闭密码验证。
限制用户和IP访问
通过限制可登录的用户和来源IP,进一步缩小攻击面。
在 /etc/ssh/sshd_config 中添加:
AllowUsers alice bob@192.168.1.*
DenyUsers tom
上述配置表示只允许alice登录,bob只能从192.168.1.0/24网段登录,tom被禁止。
配合防火墙(如iptables或ufw),也可限制SSH端口的访问来源。
调整登录超时和失败尝试限制
设置合理的超时时间可以防止连接长时间挂起。
在配置文件中添加或修改:
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
表示客户端5分钟无响应后断开,最多允许3次认证尝试。
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable fail2ban 基本上就这些。通过修改端口、禁用root、使用密钥、限制访问和加强失败处理,你的SSH服务将更加安全。定期检查日志(/var/log/auth.log)有助于发现异常行为。安全不是一劳永逸,保持系统更新也很关键。


