1. 禁用Root用户直接SSH登录
修改SSH配置文件/etc/ssh/sshd_config,找到#PermitRootLogin yes行,取消注释并将值改为no(完全禁止root通过SSH登录)或without-password(允许root使用密钥登录但不允许密码登录)。修改后重启SSH服务使配置生效:sudo systemctl restart sshd。此操作可防止攻击者直接针对root账户进行暴力破解,降低系统被入侵的风险。
2. 修改SSH默认端口(从22改为非标准端口)
默认的22端口是攻击者的主要扫描目标,修改为1-65535之间的非常用端口(如2222、3333)可显著减少自动扫描攻击。编辑/etc/ssh/sshd_config,找到#Port 22行,取消注释并修改为Port 新端口号(如Port 2222)。修改后需重启SSH服务:sudo systemctl restart sshd。注意:修改前需测试新端口能否正常连接(如ssh -p 新端口号 用户名@服务器IP),避免因配置错误导致无法远程登录。
3. 启用SSH密钥认证并禁用密码登录
密钥认证比密码认证更安全(难以暴力破解),且能有效防止密码泄露风险。操作步骤:
ssh-keygen -t rsa(默认保存在~/.ssh/id_rsa,私钥需严格保密);ssh-copy-id -p 端口号 用户名@服务器IP(自动将公钥添加到~/.ssh/authorized_keys);/etc/ssh/sshd_config,设置PubkeyAuthentication yes(启用密钥认证)、PasswordAuthentication no(禁用密码认证)。修改后重启SSH服务。4. 限制SSH登录用户或IP地址
通过配置文件限制可访问SSH的用户或IP,减少不必要的访问尝试:
/etc/ssh/sshd_config中添加AllowUsers 用户1 用户2(仅允许指定用户登录)或DenyUsers 用户3 用户4(禁止指定用户登录);AllowGroups sshd_group(先创建组并将允许访问的用户加入,如sudo groupadd sshd_group、sudo usermod -aG sshd_group 用户1),或使用Match指令限制IP段(如Match Address 192.168.1.0/24下设置AllowUsers 用户1)。修改后重启SSH服务。5. 配置防火墙限制SSH访问来源
使用firewalld(CentOS默认防火墙)限制SSH端口的访问来源,仅允许信任的IP或网段访问:
sudo systemctl enable firewalld && sudo systemctl start firewalld;sudo firewall-cmd --permanent --add-port=2222/tcp;sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2222" protocol="tcp" accept';sudo firewall-cmd --permanent --remove-service=ssh;sudo firewall-cmd --reload。此操作可阻止未经授权的IP尝试连接SSH。6. 安装并配置Fail2Ban防止暴力破解
Fail2Ban是一款入侵防御工具,可通过监控日志自动封禁多次登录失败的IP地址。操作步骤:
sudo yum install epel-release && sudo yum install fail2ban -y;/etc/fail2ban/jail.local,添加[sshd] section(enabled = true、port = 端口号、filter = sshd、logpath = /var/log/secure、maxretry = 3(最大尝试次数)、bantime = 600(封禁时间,单位秒));sudo systemctl start fail2ban && sudo systemctl enable fail2ban。此配置可在3次登录失败后自动封禁IP 10分钟,有效防止暴力破解。7. 调整SSH会话超时设置
通过设置会话超时,防止空闲会话被非法利用。编辑/etc/ssh/sshd_config,添加或修改以下参数:ClientAliveInterval 300(服务器每300秒向客户端发送一次探测包)、ClientAliveCountMax 3(若连续3次未收到响应,则断开连接,总超时时间为900秒)。修改后重启SSH服务。
8. 禁用不安全的SSH协议版本和功能
SSH协议版本1存在安全漏洞,应禁用并仅使用版本2;同时禁用不必要的功能(如GSSAPI认证)以减少攻击面。编辑/etc/ssh/sshd_config,设置Protocol 2(仅允许SSH2)、GSSAPIAuthentication no(禁用GSSAPI认证)。修改后重启SSH服务。