SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地访问远程计算机。然而,如果配置不当,SSH可能成为攻击者入侵Linux服务器的入口。因此,强化SSH配置是确保服务器安全的重要步骤。本文将介绍一系列最佳实践,帮助您提升Linux服务器上SSH服务的安全性。
1. 禁用root用户直接登录
默认情况下,root用户可以通过SSH直接登录,这增加了安全风险。建议禁用root直接登录,改用普通用户登录后再使用sudo
提升权限。
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
#PermitRootLogin yes
PermitRootLogin no
保存并退出,然后重启SSH服务:
sudo systemctl restart sshd
2. 使用非标准SSH端口
默认情况下,SSH服务监听在TCP端口22上,这是攻击者首先尝试的目标。通过更改SSH端口,可以降低被扫描和攻击的风险。
修改SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下行(或添加新行):
#Port 22
Port 2222 # 改为其他非标准端口,如2222
保存并退出,然后重启SSH服务,并确保防火墙规则已更新以允许新端口:
sudo systemctl restart sshd
sudo ufw allow 2222/tcp # 如果使用ufw防火墙
3. 禁用密码认证,启用公钥认证
密码认证相对容易被暴力破解。建议使用公钥认证,它基于密钥对(私钥和公钥),安全性更高。
修改SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
#PasswordAuthentication yes
PasswordAuthentication no
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
#PubkeyAuthentication yes
PubkeyAuthentication yes
保存并退出,然后重启SSH服务。
4. 限制允许登录的用户
通过AllowUsers
指令,可以限制只有特定用户可以通过SSH登录。
修改SSH配置文件:
sudo nano /etc/ssh/sshd_config
添加或修改以下行:
AllowUsers user1 user2 # 替换为允许登录的用户名
保存并退出,然后重启SSH服务。
5. 使用防火墙限制SSH访问
除了更改SSH端口外,还应使用防火墙限制SSH访问的来源IP地址。
使用ufw防火墙:
sudo ufw allow from 192.168.1.100 to any port 2222 # 允许特定IP访问新SSH端口
sudo ufw deny 22/tcp # 禁用默认SSH端口
sudo ufw enable # 启用防火墙规则
使用iptables防火墙:
sudo iptables -A INPUT -p tcp --dport 2222 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo service iptables save # 保存规则
6. 定期更新SSH版本和补丁
保持SSH服务器的软件更新是防止已知漏洞被利用的关键。定期检查并应用安全补丁。
更新SSH:
sudo apt update && sudo apt upgrade openssh-server # Debian/Ubuntu
sudo yum update openssh-server # CentOS/RHEL
7. 监控和日志记录
启用详细的SSH日志记录,可以帮助您监控和检测可疑活动。
修改SSH配置文件:
sudo nano /etc/ssh/sshd_config
添加或修改以下行:
LogLevel VERBOSE # 或 DEBUG,根据需要调整日志详细程度
保存并退出,然后重启SSH服务。确保系统日志服务(如rsyslog
或systemd-journald
)正在运行,并定期检查SSH日志。
通过实施上述安全强化措施,您可以显著提升Linux服务器上SSH服务的安全性。记住,安全是一个持续的过程,需要定期审查和更新配置以应对新的威胁。同时,结合其他安全措施(如防火墙规则、入侵检测系统、定期备份等),可以构建更加坚固的安全防御体系。