CentOS配置iptables
一、iptables简介

iptables是一个用于设置、维护和检查Linux内核中的IP包过滤规则的工具,它作为netfilter项目的一部分,被广泛用于实现防火墙功能,iptables通过定义一组规则来控制数据包的进出,从而实现网络安全策略。
二、基本命令说明
查看当前所有的iptables配置
- iptables L n
L
:列出规则。
n
:以数字形式显示地址和端口。
添加允许INPUT访问规则
以下示例展示了如何添加常见服务的端口设置,如果需要拒绝访问,则将ACCEPT
改为DROP
即可。
- SSH
- iptables A INPUT p tcp dport 22 j ACCEPT
- HTTP
- iptables A INPUT p tcp dport 80 j ACCEPT
- iptables A INPUT p tcp dport 8080 j ACCEPT
- HTTPS
- iptables A INPUT p tcp dport 443 j ACCEPT
- POP3
- iptables A INPUT p tcp dport 110 j ACCEPT
- SMTP
- iptables A INPUT p tcp dport 25 j ACCEPT
- FTP
- iptables A INPUT p tcp dport 21 j ACCEPT
- iptables A INPUT p tcp dport 20 j ACCEPT
- DNS
- iptables A INPUT p tcp dport 53 j ACCEPT
添加使用IP限制INPUT访问规则
以ssh为例,只允许特定IP(如192.168.0.100)访问SSH服务。

- 删除之前的允许所有IP的规则
- iptables D INPUT p tcp dport 22 j ACCEPT
- 添加新的规则只允许特定IP访问
- iptables A INPUT s 192.168.0.100 p tcp dport 22 j ACCEPT
保存iptables的设置
修改完规则后记得保存:
- /etc/rc.d/init.d/iptables save
重启iptables
- service iptables restart
开启/关闭 开机启动
- 开启开机启动
- chkconfig iptables on
- 关闭开机启动
- chkconfig iptables off
打开iptables的配置文件
- vi /etc/sysconfig/iptables
8. 修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口
- A RHFirewall1INPUT m state state NEW m tcp p tcp dport 80 j ACCEPT
关闭/开启/重启防火墙
- 停止防火墙
- /etc/init.d/iptables stop
- 启动防火墙
- /etc/init.d/iptables start
- 重启防火墙
- /etc/init.d/iptables restart
永久性关闭防火墙
- chkconfig level 35 iptables off
- /etc/init.d/iptables stop
- iptables P INPUT DROP
打开主动模式21端口
- iptables A INPUT p tcp dport 21 j ACCEPT
12. 打开被动模式49152~65534之间的端口
- iptables A INPUT p tcp dport 49152:65534 j ACCEPT
- iptables A INPUT i lo j ACCEPT
- iptables A INPUT m state state ESTABLISHED j ACCEPT
三、iptables高级配置与优化
设置扩展的规则匹配
多端口匹配
匹配多个源端口或目的端口:

- 多个源端口
- iptables A INPUT p tcp m multiport sport 22,23,53,80 j ACCEPT
- 多个目的端口
- iptables A INPUT p tcp m multiport dport 22,23,53,80 j ACCEPT
- 连续端口范围
- iptables A INPUT p tcp sport 20:80 j ACCEPT
指定TCP匹配
使用tcp包的标志位进行过滤:
- 仅SYN包匹配
- iptables A INPUT p tcp tcpflags SYN,FIN,ACK,SYN j ACCEPT
速率匹配
限制单位时间内的数据包个数:
- 每秒最多允许10个数据包通过
- iptables A INPUT m limit limit 10/sec j ACCEPT
NAT模式配置
网络地址转换NAT模式
- 将所有从eth0接口进来的流量转发到192.168.1.100:8080
- iptables t nat A PREROUTING p tcp dport 80 j DNAT todestination 192.168.1.100:8080
企业级防火墙配置建议
状态检测机制
确保启用状态检测机制,提高防火墙性能和安全性:
- 确保状态检测模块加载成功
- lsmod | grep xt_state
- 如果未加载,手动加载模块
- modprobe xt_state
日志记录与监控
配置iptables记录匹配的规则日志,以便后续分析和监控:
- 在INPUT链上记录丢弃的数据包信息
- iptables A INPUT m limit limit 5/min j LOG logprefix "IPTablesDropped: " loglevel 4
四、常见问题FAQs解答
Q1: 如何更改iptables配置使其立即生效?
A1: 修改完iptables规则后,可以使用以下命令使其立即生效:
- service iptables restart
或者直接重新加载规则而不重启服务:
- /etc/rc.d/init.d/iptables save && /etc/rc.d/init.d/iptables restart
注意:某些情况下,可能需要清空现有规则并重新添加。