iptables防火墙
主要实现数据包的过滤、封包重定向和网络地址转换(NAT)等功能
- iptables:用户空间的命令行工具,用于管理配置
- netfilter:真正实现功能的是netfilter运行在内核空间
iptables的4表5链
- 链:通过数据包的走向可以分为5种状态
- inupt:对于目的是用户态应用程序的情况下使用的链
- output:对于用户态应用程序产生的数据包使用的链
- forward:用于一个网卡到另一个网卡使用的链
- prerouting:对数据包路由选择之前使用的链
- postrouting:对数据包路由选择之后使用的链
- 表:针对链下面的类似规则属性进行汇总,便于管理
- filter表:过滤数据包功能
- nat表:实现网络地址转换,修改ip和端口功能
- mangle:拆解报文,做出修改,并重新封装的功能
- raw表:是否对连接追踪机制进行处理
5种数据包状态链
- 有数据包去往主机的:PREROUTING>INPUT
- app应用产生的数据包发出去:OUTPUT>POSTROUTING
- 数据包的目的不是本机:PREROUTING>FORWARD>POSTROUTING
不是所有的链都包含4张表,每个数据包经过各链的表进行匹配规则
规则(iptables配置)
格式:iptables [-t 表名] command 链名 [规则序号] 匹配条件 -j 执行动作 (默认不写表名为filter表)
- command:执行的命令,查看(nvl)、删除(D)、插入(I)、修改®等等
- 链名:5个链的链名
- 规则序号:用于规则的匹配位置,默认不写为末尾行添加
- 匹配条件:基于tcp五元组包过滤条件
- 执行动作:规则匹配具体的动作,拒绝、运行、nat等等
- ACCETP:允许
- DROP:阻止,不返回icmp
- REJECT:拒绝,返回icmp
- SNAT:源nat
- DNAT:目的nat
- LOG:日志文件
- RETURN:直接返回,不匹配后面的规则了
- MASQUERADE:动态源nat
- REDIRECT:端口映射
- MARK:打标签
匹配条件
- 通用匹配:
- -s:源ip
- -d:目的ip
- -i:指定接口进入的数据包
- -o:指定接口发出的数据包
- 扩展匹配
- -p:协议类似,tcp、udp、icmp
- - -sport:源端口
- - - dport:目的端口
- 常用扩展模块
- multiport :指定多个非连续端口,支持 tcp 、udp 协议
- iprange :连续 IP 地址范围
- string :匹配数据包中的字符串
- time :根据指定时间范围来进行匹配
- connlimit :客户端到服务端的连接数限制
- limit :限制报文的速率
- udp :udp 协议扩展
- icmp :icmp 协议扩展,多用于 ping 命令
- state :对连接状态进行追踪
永久存储
- iptables-save > /etc/sysconfig/iptables