在CentOS系统中,设置SSH访问控制可以通过多种方式实现,包括使用防火墙、配置SSH服务器选项以及使用PAM(可插拔认证模块)等。以下是一些常见的方法:
CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。你可以通过以下命令来限制SSH访问:
# 允许特定IP地址访问SSH
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
# 重新加载防火墙规则
firewall-cmd --reload
编辑SSH服务器配置文件/etc/ssh/sshd_config,可以设置多种访问控制选项:
# 只允许特定用户登录
AllowUsers user1 user2
# 禁止root用户直接登录
PermitRootLogin no
# 使用公钥认证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 限制登录尝试次数
MaxAuthTries 3
# 设置SSH端口(非默认端口22)
Port 2222
# 重启SSH服务以应用更改
systemctl restart sshd
PAM(可插拔认证模块)提供了更细粒度的认证控制。你可以编辑/etc/pam.d/sshd文件来添加额外的认证规则。例如,限制特定IP地址段的访问:
auth required pam_access.so
account required pam_access.so
然后创建或编辑/etc/security/access.conf文件,添加如下规则:
# 允许特定IP地址段的访问
+:192.168.1.0/24:ALL
-:ALL:ALL
Fail2Ban是一个入侵防御软件框架,可以监控日志文件并根据规则禁止恶意IP地址。安装并配置Fail2Ban:
# 安装Fail2Ban
yum install fail2ban -y
# 启动Fail2Ban服务
systemctl start fail2ban
# 设置开机自启动
systemctl enable fail2ban
编辑Fail2Ban的配置文件/etc/fail2ban/jail.local,添加SSH相关的规则:
[sshd]
enabled = true
port = sshd
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 600
SELinux(Security-Enhanced Linux)提供了强制访问控制(MAC)功能,可以进一步增强系统安全性。确保SELinux处于 enforcing 模式:
# 设置SELinux为enforcing模式
setenforce 1
# 检查SELinux状态
sestatus
通过以上方法,你可以有效地设置CentOS系统的SSH访问控制,提高系统的安全性。