简介
iptables组成Linux平台下的 包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成 封包过滤、封包重定向 和 网络地址转换(NAT)等功能
iptables通过 表(tables)、链(chains) 和 规则(rules)来管理数据包处理函数,iptables会将这些数据包处理函数注册到 内核 提供的 五个Hook 点上,三者相关定义如下:
- 表(tables):表 将处理同一类型的数据包规则聚合在一起,内核中内置有4张表,分别是 raw、mangle、nat、filter,每一张表都只包含同一类型的数据包规则,比如nat表只包含与 网络地址转换 相关的规则。
- 链(chains):每一张表包含若干链,其规定了相关规则在什么时候执行,内核中内置有5条链,分别对应 netfilter 提供的5个Hook点,链能够让管理员在数据包传输过程中的某一个点通过相关规则控制数据包的走向。
- 规则(rules):规则 在于链中,每一条链包含若干规则。当链被调用时,数据包处理函数将按照顺序依次匹配对应链中的所有规则,每条规则都由 配部分+动作部分 成,如果数据包满足匹配规则,则会执行相关动作对数据包进行处理
iptables里最核心的东西,就是4表5链,那么它们到底是啥,有啥用?下面就让我给你们一一讲解吧~
正文
所谓的四表,其实就是用于不同目的的 规则集,如下所示
- raw表:确定是否对该数据包进行状态跟踪,包含的规则链有
- OUTPUT
- PREROUTING
- mangle表:修改数据包内容,用来做流量整形,给数据包设置标记,包含的规则链有
- INPUT
- OUTPUT
- FORWARD
- PREROUTING
- POSTROUTING
- nat表:负责网络地址转换,用来修改数据包中的源目标IP地址或端口,包含的规则链有
- OUTPUT
- PREROUTING
- POSTROUTING
- filter表:负责过滤数据包,确定是否放行该数据包,主要用作包过滤防火墙,包含的规则链有
- INPUT
- FORWARD
- OUTPUT
这篇文章中,我主要想聊聊 filter表,这也是iptables最为核心的能力
filter表
在iptables里,命令的通用格式为:iptables -t 【表名】【管理选项】【链名】条件匹配 -j 动作执行
对于filter表,来一个实例让大家有一个初步的认识:iptables -t filter -A INPUT -s 192.168.184.20 -p tcp --dport 22 -j DROP,下面给大家详细介绍下上述命令中的各项参数含义
- -p: 协议
- -s:源地址
- -d:目的地址
- --sport:源端口
- --dport:目的端口
- -P:默认策略,注意要与小p进行区分
- -j: 处理动作
- DROP:丢弃(直接丢弃,不返回任何消息)
- REJECT:丢弃(回显ICMP不可达消息)
- LOG:将数据包信息记录到syslog
- ACCEPT:允许数据包通过