CentOS 系统中的 SSH 与 Iptables 配置详解
在 CentOS 系统管理中,SSH(Secure Shell)和 Iptables 是两个至关重要的工具,SSH 提供安全的远程访问能力,而 Iptables 作为 Linux 内核自带的防火墙,能够有效保护系统免受未授权访问,合理配置 SSH 和 Iptables 不仅能提升系统的安全性,还能确保网络服务的稳定运行,本文将详细介绍如何在 CentOS 系统中配置 SSH 和 Iptables,包括基础设置、安全优化及常见问题处理。

SSH 的基础配置
SSH 是一种加密的网络协议,用于远程登录和管理服务器,在 CentOS 系统中,SSH 服务通常由 OpenSSH 软件包提供,确保系统已安装 OpenSSH:
sudo yum install openssh-server openssh-clients
安装完成后,启动 SSH 服务并设置开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
默认情况下,SSH 服务监听 22 端口,为增强安全性,建议修改默认端口,编辑 /etc/ssh/sshd_config 文件,找到 Port 22 一行,将其修改为其他未被占用的端口,如 Port 2222,保存文件后,重启 SSH 服务使配置生效:
sudo systemctl restart sshd
禁用 root 用户的直接登录也是一项重要安全措施,在 sshd_config 文件中,确保 PermitRootLogin no 已取消注释并启用,这样,管理员必须通过普通用户账户登录后再切换至 root,从而降低暴力破解的风险。
Iptables 防火墙的基本规则
Iptables 是 Linux 系统的内核级防火墙,通过规则链控制网络流量,在 CentOS 7 及更高版本中,推荐使用 firewalld 替代传统的 Iptables,但 Iptables 仍被广泛支持,以下是 Iptables 的基础配置步骤。
检查 Iptables 服务状态并启动:
sudo systemctl status iptables sudo systemctl start iptables sudo systemctl enable iptables
默认情况下,Iptables 会阻止所有入站流量,仅允许出站流量,要允许 SSH 连接,需添加规则放行 SSH 端口(以 2222 为例):

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
-A INPUT 表示添加规则到 INPUT 链,-p tcp 指定协议为 TCP,--dport 2222 目标端口为 2222,-j ACCEPT 表示允许该流量。
为防止规则丢失,需保存 Iptables 配置,在 CentOS 7 中,使用以下命令:
sudo service iptables save
SSH 与 Iptables 的协同安全优化
SSH 和 Iptables 的协同配置可以进一步提升系统安全性,以下是一些优化建议:
-
限制 SSH 访问 IP
在 Iptables 中添加规则,仅允许特定 IP 地址访问 SSH 端口:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 2222 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 2222 -j DROP
第一条规则允许 IP
168.1.100访问 SSH,第二条规则拒绝其他所有 IP 的 SSH 请求。 -
启用 fail2ban 防暴力破解
fail2ban是一个防止暴力破解的工具,可与 Iptables 结合使用,安装后,配置/etc/fail2ban/jail.local文件,设置 SSH 端口和最大重试次数:[sshd] enabled = true port = 2222 maxretry = 3 bantime = 3600
启动
fail2ban服务后,连续失败 3 次的 IP 将被禁止访问 1 小时。
-
定期更新 SSH 密钥
禁用密码登录,改用 SSH 密钥对认证,在sshd_config中设置PasswordAuthentication no,并确保PubkeyAuthentication yes已启用。
常见问题与解决方案
-
问题:无法通过 SSH 连接服务器
解答:首先检查 SSH 服务是否运行(sudo systemctl status sshd),并确认防火墙规则是否放行 SSH 端口,使用sudo iptables -L -n查看 Iptables 规则,确保目标端口未被阻止,检查/var/log/secure日志文件,定位具体错误原因(如端口错误或认证失败)。 -
问题:Iptables 规则重启后丢失
解答:在 CentOS 7 中,Iptables 规则需要手动保存,执行sudo service iptables save将规则保存到/etc/sysconfig/iptables文件,若使用firewalld,则需通过sudo firewall-cmd --permanent添加规则并重新加载。
通过合理配置 SSH 和 Iptables,可以显著提升 CentOS 系统的安全性,定期检查日志文件、更新规则并启用额外的安全工具(如 fail2ban),是维护服务器稳定运行的关键步骤。