在Linux系统中,配置SSH安全是非常重要的,因为它可以防止未经授权的访问和潜在的安全威胁。以下是一些常见的步骤和建议,帮助你配置SSH以提高安全性:
默认情况下,SSH使用端口22。更改默认端口可以减少自动化攻击的风险。
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
Port 22
将其更改为一个非标准端口(例如2222):
Port 2222
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
直接以root用户登录是非常危险的。你应该配置SSH允许普通用户登录,然后使用sudo
命令提升权限。
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
PermitRootLogin yes
将其更改为:
PermitRootLogin no
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
使用公钥认证比密码认证更安全。你可以生成SSH密钥对,并将公钥添加到服务器的authorized_keys
文件中。
生成SSH密钥对:
ssh-keygen -t rsa -b 4096
将公钥复制到服务器:
ssh-copy-id user@server_ip -p 2222
编辑SSH配置文件以禁用密码认证:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
PasswordAuthentication yes
将其更改为:
PasswordAuthentication no
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
确保你的防火墙只允许必要的端口和服务。例如,如果你使用的是ufw
(Uncomplicated Firewall),可以添加以下规则:
启用SSH端口(例如2222):
sudo ufw allow 2222/tcp
启用防火墙:
sudo ufw enable
Fail2Ban可以监控日志文件并自动禁止恶意IP地址。
安装Fail2Ban:
sudo apt-get install fail2ban
配置Fail2Ban以监控SSH登录尝试:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
找到并修改以下部分:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
保存并退出编辑器,然后启动Fail2Ban:
sudo systemctl start fail2ban
确保你的系统和SSH服务器软件保持最新,以防止已知的安全漏洞。
sudo apt-get update
sudo apt-get upgrade
通过以上步骤,你可以显著提高SSH服务器的安全性。记住,安全是一个持续的过程,需要定期检查和更新配置。