iptables是系统自带的软件防火墙 (IP信息包过滤系统:IP 端口 协议)网络层
iptables CentOS 5/6
两个关键组件 netfilter 内核态(保存规则集) iptables 用户态(防火墙的管理规矩)
内容:
四表
raw表: 确定是否对该数据包状态进行跟踪
包含两个链:#OUTPUT #PREROUTING
mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。
包含链: #INPUT #OUTPUT #FORWARD #PREROUTING #POSTROUTING
nat表:负责网络地址的转换,用来修改数据包中的源、目标ip地址或端口。
包含链:#OUTPUT #PREROUTING #POSTROUTING
filter表:负责过滤数据包,确定是否放行该数据包。
包含链:#INPUT #FORWARD #OUTPUT
五链
INPUT:处理入站数据包,匹配目标IP为本机的数据包
OUTPUT:处理出站数据包,一般不在此链上做配置
FORWARD:处理转发数据包,匹配流经本机的数据包
PRERONTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的ip和端口映射到路由器的外网ip和端口上。
POSTRONTING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网地址上网。
默认策略:默认值为 允许通过
链中的规则:"串行" 从上到下依次处理,找到对应的处理规则就结束,若是没有就按照默认值
iptable 命令行配置方法:
命令格式
iptables [-t 表名] 管理选项 [链名][匹配条件][-j 控制类型(需要大写)]
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指定表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型使用大写字母,其余的均是小写
常用的控制类型:(必须大写)
ACCEPT:允许数据包的通过
DROP:直接丢弃数据包,不给出任何回应信息
SNAT:修改数据包的源地址
DNAT:修改数据包的目的地址
REJECT: 拒绝数据包通过
MASQUERADE:地址欺骗
REDIECT:重定向
规则的匹配:
1.通用匹配
可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口协议
协议匹配:-p 协议名
地址匹配:-s 源地址 -d 目的地址 可以是ip 网段 域名
接口匹配:-i入网网卡 -o出站网卡
2.隐含匹配
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等类型
端口匹配: --sport源端口 --dport目的端口
iptables -t 表 -A 匹配条件 -j ACCEPT|DROP|REJECT
-I插入防火墙规则
-D删除防火墙规则
-F清空防火墙规则
-R 替换防火墙
-nL --line-numbers 查看筛查表中的链规则
-P ACCEPT|DROP|REJECT 设置默认值
匹配条件
-p tcp|udp|imcp 匹配协议
-s 源IP|网段
-d 目的IP|网段
-i 入站网卡
-o 出战网卡
-p tcp|udp --sport 源端口
--dport 目的端口
-p tcp --tcp-flags SYN|FIN|ACK|RST|PSH|URG
-p icmp --icmp-type 8|0|3
firewalld CentOS 7/8
(在7里面一般默认安装了iptables的应用,但是缺乏服务管理工具需要安装iptables-services)