CentOS 7 下 iptables 防火墙配置指南
1. 安装与初始化
1.1 安装 iptables 服务
yum install -y iptables-services
1.2 停止并禁用 firewalld
# 停止firewalld服务
systemctl stop firewalld
# 永久禁用firewalld服务
systemctl mask firewalld
1.3 启用 iptables 服务
systemctl enable iptables
执行后显示:
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service
to /usr/lib/systemd/system/iptables.service.
2. 安全配置指南
重要提示:配置前请确保已开放SSH(22端口)或其他管理端口,避免被锁在服务器外。
2.1 编辑防火墙规则
安装vim编辑器(如未安装)
yum -y install vim*
编辑配置文件
vim /etc/sysconfig/iptables
初始配置文件示例
# 默认配置模板
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
推荐安全配置(带注释版)
# 安全增强配置
*filter
## 默认策略:入站丢弃,转发接受,出站接受
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
## 允许本地回环接口
-A INPUT -i lo -j ACCEPT
## 允许已建立的连接和相关的数据包
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
## 允许ICMP(ping)
-A INPUT -p icmp -j ACCEPT
## 允许特定网段访问SSH(按需修改)
-A INPUT -s 10.211.55.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
精简配置版
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -s 10.211.55.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
2.2 应用配置
service iptables restart
输出示例:
Redirecting to /bin/systemctl restart iptables.service
2.3 验证配置
iptables -nvL
输出示例:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2644 224K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 10.211.55.0/24 0.0.0.0/0 tcp dpt:22
2.4 查看服务状态
systemctl status iptables
输出示例:
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: active (exited) since Tue 2022-09-20 04:08:55 EDT; 13min ago
Process: 21978 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
Process: 22016 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 22016 (code=exited, status=0/SUCCESS)
2.5 临时关闭防火墙
systemctl stop iptables
3. 安全建议
- 最小权限原则:只开放必要的端口和服务
- 网络分段:根据业务需求配置不同的访问策略
- 日志记录:建议添加日志记录规则,便于审计
- 定期检查:定期审查防火墙规则的有效性
- 备份配置:修改前备份现有配置
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
通过以上配置,您可以构建一个安全的网络环境,同时确保服务的可用性。建议在生产环境中进行充分测试后再部署。