SSH在CentOS上的安全策略有哪些
1. 修改SSH默认端口
将SSH默认端口22更改为非标准端口(如2222),可减少自动化扫描工具对默认端口的攻击。修改/etc/ssh/sshd_config文件中的Port参数(取消注释并设置为新端口),修改后需重启SSH服务生效。若系统启用了SELinux,还需通过semanage port -a -t ssh_port_t -p tcp 新端口命令将新端口添加到SELinux的SSH允许端口列表中。
2. 禁用root用户直接登录
禁止root用户通过SSH直接登录,可降低服务器被暴力破解后直接获取最高权限的风险。修改/etc/ssh/sshd_config文件中的PermitRootLogin参数为no,重启SSH服务后生效。日常运维可通过普通用户登录后,再使用su -或sudo切换至root权限。
3. 强制使用公钥认证替代密码认证
公钥认证的安全性远高于密码认证(需破解私钥而非猜测密码)。首先在本地机器生成RSA密钥对(ssh-keygen -t rsa -b 4096),然后将公钥复制到服务器目标用户的~/.ssh/authorized_keys文件中(ssh-copy-id user@remote_host)。修改/etc/ssh/sshd_config文件,设置PubkeyAuthentication yes(启用公钥认证)和PasswordAuthentication no(禁用密码认证),重启SSH服务后生效。
4. 限制SSH访问IP范围
通过AllowUsers或AllowGroups参数限制可访问SSH的用户或用户组及对应IP地址,仅允许可信IP访问服务器。例如,AllowUsers user1@192.168.1.100 user2@10.0.0.0/24表示仅允许user1从192.168.1.100、user2从10.0.0.0/24网段访问。修改/etc/ssh/sshd_config文件后重启SSH服务生效。
5. 配置空闲会话超时断开
设置空闲会话超时时间,防止他人非法使用未注销的SSH会话。修改/etc/ssh/sshd_config文件中的ClientAliveInterval(服务器向客户端发送存活探测的时间间隔,单位:秒,建议300-900秒)和ClientAliveCountMax(服务器未收到客户端响应时的探测次数,建议1-3次)。例如,ClientAliveInterval 300和ClientAliveCountMax 3表示5分钟(300秒)无响应时发起3次探测,仍未响应则断开连接。
6. 启用Fail2Ban防止暴力破解
Fail2Ban通过监控SSH日志,自动封禁多次登录失败的IP地址。安装Fail2Ban(sudo yum install fail2ban -y),启动并启用服务(sudo systemctl start fail2ban、sudo systemctl enable fail2ban)。编辑/etc/fail2ban/jail.local文件,添加SSH防护配置:[sshd]部分设置enabled = true(启用SSH防护)、port = 新端口(如2222)、filter = sshd(使用sshd过滤规则)、logpath = /var/log/secure(日志路径)、maxretry = 3(最大失败次数,超过则封禁)、bantime = 600(封禁时间,单位:秒,建议600-3600秒)。
7. 配置防火墙允许SSH端口
使用firewalld配置防火墙,仅允许指定端口(如修改后的SSH端口)的流量通过。执行sudo firewall-cmd --permanent --add-port=新端口/tcp(如--add-port=2222/tcp)添加端口规则,然后sudo firewall-cmd --reload重新加载防火墙配置,使规则生效。
8. 启用SELinux增强安全
SELinux通过强制访问控制(MAC)限制进程权限,进一步提升SSH安全性。确保SELinux处于enforcing模式(sudo setenforce 1),并编辑/etc/selinux/config文件,将SELINUX=permissive修改为SELINUX=enforcing(永久生效)。若修改了SSH端口,需通过semanage命令将新端口添加到SELinux的SSH允许端口列表中。
9. 更新SSH软件包至最新版本
定期更新OpenSSH软件包,修复已知安全漏洞。执行sudo yum update openssh-server -y命令更新SSH服务端软件包,更新后重启SSH服务(sudo systemctl restart sshd)使新版本生效。
10. 强化密码策略(可选补充)
若仍使用密码认证,需设置强密码策略。修改/etc/login.defs文件,设置PASS_MIN_DAYS 7(密码修改最小间隔天数,避免频繁修改导致密码遗忘)、PASS_MAX_DAYS 90(密码有效期,强制定期更换)、PASS_MIN_LEN 10(密码最小长度,建议8-12位);同时编辑/etc/security/pwquality.conf文件,设置minlen=10(密码最小长度)、minclass=3(至少包含小写字母、大写字母、数字、特殊字符中的3类)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SSH在CentOS上的安全策略有哪些
本文地址: https://pptw.com/jishu/743479.html
