SSH在Debian上的安全设置指南
定期更新系统和软件包是安全基础,可修复已知漏洞。执行以下命令更新软件包列表并升级所有可升级的包:
sudo apt update && sudo apt upgrade -y
可选:配置自动安全更新(如unattended-upgrades),自动安装关键安全补丁,减少手动维护成本。
/etc/ssh/sshd_config,找到PermitRootLogin行,修改为:PermitRootLogin no
重启SSH服务使配置生效:sudo systemctl restart ssh。admin),并将其加入sudo组以执行管理员命令:sudo adduser admin # 创建用户并设置强密码
sudo usermod -aG sudo admin # 添加到sudo组
/etc/ssh/sshd_config,取消Port行注释并修改:Port 2222
若使用云服务器,需在控制台安全组中开放新端口。/etc/ssh/sshd_config,设置:PasswordAuthentication no
PubkeyAuthentication yes
生成SSH密钥对(客户端执行ssh-keygen -t rsa -b 4096),将公钥复制到服务器~/.ssh/authorized_keys文件中,再重启SSH服务。/etc/ssh/sshd_config,添加:AllowUsers admin # 允许admin用户
# 或AllowGroups ssh_users # 允许ssh_users组的用户
MaxAuthTries 3
ClientAliveInterval 120 # 120秒无活动断开连接
使用ufw(Uncomplicated Firewall)配置防火墙,仅允许必要端口(如SSH新端口、HTTP/HTTPS)的入站连接:
sudo ufw default deny incoming # 默认拒绝所有入站
sudo ufw default allow outgoing # 允许所有出站
sudo ufw allow 2222/tcp # 允许SSH新端口(若修改过端口)
sudo ufw allow http # 允许HTTP(若需要)
sudo ufw allow https # 允许HTTPS(若需要)
sudo ufw enable # 启用防火墙
sudo ufw status # 查看状态
Fail2Ban可监控SSH日志,自动封禁多次登录失败的IP地址(如600秒内尝试5次失败)。安装并配置:
sudo apt install fail2ban
复制默认配置文件并修改(可选):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑/etc/fail2ban/jail.local,启用SSH jail:
[sshd]
enabled = true
port = 2222 # 与新端口一致
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
重启Fail2Ban服务:sudo systemctl restart fail2ban。
/etc/ssh/sshd_config,设置日志级别为VERBOSE,记录更多登录细节:LogLevel VERBOSE
重启SSH服务使配置生效。grep命令查找异常登录尝试(如失败密码):sudo grep "Failed password" /var/log/auth.log
可结合日志分析工具(如Logwatch)实现自动化监控。/etc/ssh/sshd_config,关闭X11转发、TCP端口转发等不必要的功能,减少攻击面:X11Forwarding no
AllowTcpForwarding no
sudo aa-enforce /etc/apparmor.d/usr.sbin.sshd强制实施SSH配置。/etc/ssh/sshd_config和~/.ssh/authorized_keys等重要文件,防止配置丢失或泄露。