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. 安全建议

  1. 最小权限原则:只开放必要的端口和服务
  2. 网络分段:根据业务需求配置不同的访问策略
  3. 日志记录:建议添加日志记录规则,便于审计
  4. 定期检查:定期审查防火墙规则的有效性
  5. 备份配置:修改前备份现有配置
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

通过以上配置,您可以构建一个安全的网络环境,同时确保服务的可用性。建议在生产环境中进行充分测试后再部署。