温馨提示×

SSH在Debian上如何安全设置

小樊
48
2025-10-08 06:45:49
栏目: 智能运维

SSH在Debian上的安全设置指南

1. 系统更新与补丁管理

定期更新系统和软件包是安全基础,可修复已知漏洞。执行以下命令更新软件包列表并升级所有可升级的包:

sudo apt update && sudo apt upgrade -y

可选:配置自动安全更新(如unattended-upgrades),自动安装关键安全补丁,减少手动维护成本。

2. 用户账户与权限管理

  • 禁用root远程登录:root用户权限过高,直接SSH登录风险大。编辑/etc/ssh/sshd_config,找到PermitRootLogin行,修改为:
    PermitRootLogin no
    
    重启SSH服务使配置生效:sudo systemctl restart ssh
  • 创建专用运维账户并配置sudo:避免直接使用root,创建普通用户(如admin),并将其加入sudo组以执行管理员命令:
    sudo adduser admin  # 创建用户并设置强密码
    sudo usermod -aG sudo admin  # 添加到sudo组
    
  • 强密码策略:为用户设置复杂密码(包含大小写字母、数字、特殊符号,长度≥12位),定期更换(如每90天)。

3. SSH服务核心配置加固

  • 修改默认端口:默认22端口是攻击者的首要目标,修改为1024-65535之间的未使用端口(如2222),降低自动化扫描风险。编辑/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组的用户
    
  • 限制登录尝试次数:防止暴力破解,设置最大尝试次数(如3次):
    MaxAuthTries 3
    
  • 设置空闲超时:长时间不活动的会话自动断开,节省资源并降低风险:
    ClientAliveInterval 120  # 120秒无活动断开连接
    

4. 防火墙配置

使用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                 # 查看状态

5. 安装与配置Fail2Ban

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

6. 日志审计与监控

  • 启用详细日志:修改/etc/ssh/sshd_config,设置日志级别为VERBOSE,记录更多登录细节:
    LogLevel VERBOSE
    
    重启SSH服务使配置生效。
  • 定期检查日志:使用grep命令查找异常登录尝试(如失败密码):
    sudo grep "Failed password" /var/log/auth.log
    
    可结合日志分析工具(如Logwatch)实现自动化监控。

7. 其他安全增强措施

  • 禁用不必要的SSH功能:编辑/etc/ssh/sshd_config,关闭X11转发、TCP端口转发等不必要的功能,减少攻击面:
    X11Forwarding no
    AllowTcpForwarding no
    
  • 使用SELinux或AppArmor:启用强制访问控制(MAC),限制进程权限。例如,AppArmor可通过sudo aa-enforce /etc/apparmor.d/usr.sbin.sshd强制实施SSH配置。
  • 定期备份配置:备份/etc/ssh/sshd_config~/.ssh/authorized_keys等重要文件,防止配置丢失或泄露。

0