在CentOS系统中,安全组是保障服务器安全的重要屏障,它通过控制网络流量进出服务器的规则,有效防止未授权访问和潜在攻击,合理配置安全组不仅能提升服务器安全性,还能确保必要服务的正常访问,本文将详细介绍CentOS系统中安全组的设置方法、最佳实践及注意事项,帮助用户构建可靠的安全防护体系。

安全组的基本概念与作用
安全组(Security Group)是一种虚拟防火墙,通过定义入站(Inbound)和出站(Outbound)规则来控制服务器的网络流量,在CentOS中,安全组通常与云服务提供商(如阿里云、腾讯云)的网络服务集成,也可通过系统自带的防火墙工具(如firewalld、iptables)实现,其核心作用包括:限制特定端口的访问、阻止恶意IP地址、允许合法服务流量(如SSH、HTTP)等。
使用firewalld配置安全组
CentOS 7及以上版本默认使用firewalld作为防火墙管理工具,其动态规则管理功能更适合云环境下的安全组配置,以下是具体操作步骤:
启动并启用firewalld服务
sudo systemctl start firewalld sudo systemctl enable firewalld
通过firewall-cmd --state命令确认服务状态为“running”。
添加安全规则
以允许SSH(默认端口22)和HTTP(端口80)为例,执行以下命令:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http
--permanent参数确保规则重启后仍生效,若需临时测试可省略该参数。

限制特定IP访问SSH
为增强安全性,仅允许指定IP(如192.168.1.100)访问SSH:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
禁用危险端口
默认情况下,CentOS可能开放不必要的端口(如Telnet的23端口),需手动关闭:
sudo firewall-cmd --permanent --remove-service=telnet
重新加载防火墙配置
sudo firewall-cmd --reload
通过sudo firewall-cmd --list-all查看当前生效的规则。
使用iptables配置安全组
对于CentOS 6或习惯使用iptables的用户,可通过以下步骤配置:
安装iptables服务
sudo yum install iptables-services -y sudo systemctl start iptables sudo systemctl enable iptables
添加规则
允许本地回环和已建立的连接:

sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许SSH和HTTP访问:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
拒绝其他所有入站流量:
sudo iptables -P INPUT DROP
保存规则
sudo service iptables save
安全组配置的最佳实践
- 最小权限原则:仅开放必要的端口和服务,避免全通规则。
- 定期审计规则:通过
firewall-cmd --list-all或iptables -L检查冗余规则,及时清理无用配置。 - 使用默认拒绝策略:将默认入站策略设置为“拒绝”(DROP),仅明确允许的流量可通过。
- 限制管理端口访问:将SSH等管理端口限制为内网IP或特定IP段,避免公网直接暴露。
- 结合云平台安全组:若使用云服务器,需同时配置云平台安全组与系统防火墙,避免规则冲突。
常见问题与注意事项
- 配置后无法远程连接:检查是否误放行了SSH端口或防火墙规则未正确加载,可通过控制台VNC登录排查。
- 规则冲突:firewalld与iptables不可同时运行,需禁用未使用的服务(
sudo systemctl disable iptables)。
FAQs
Q1: 如何在CentOS中查看当前生效的安全组规则?
A1: 使用firewalld时,执行sudo firewall-cmd --list-all;若使用iptables,运行sudo iptables -L -n -v,其中-n避免域名解析,-v显示详细信息。
Q2: 误操作导致无法SSH登录服务器,如何紧急恢复?
A2: 若通过云平台,可控制台VNC登录后临时关闭防火墙(sudo systemctl stop firewalld或sudo iptables -F);若本地服务器,直接连接物理终端,检查并修正规则后重启防火墙服务。