Fork me on GitHub

防火墙系列(四)-----iptables防火墙规则

防火墙系列(四)—–iptables防火墙规则

关于iptables

iptables是集成在linux下的包过滤防火墙,这个防火墙是免费的,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。iptables仅仅是linux下防火墙的管理工具,防火墙功能的具体实现是netfilter ,它是Linux内核中实现包过滤的内部结构。
通过之前的文章何为防火墙 我们可以知道防火墙最重要的点就是安全策略,也就是安全规则,下面将介绍iptables的各项安全规则。

iptables宏观构成

iptablles中规则的概念

防火墙的规则可以告诉防火墙哪些类型的通信量可以进出防火墙。所有防火墙都有一个规则文件,其中最重要就是配置文件。iptables根据这些规则处理数据包,配置防火墙的主要工作就是添加,修改,删除安全规则。
具体到iptables中:

匹配(match):符合预先设定好的条件,如源ip or 端口


丢弃(drop):当一个包到达时,直接丢弃,不做其它任何处理。
接受(accept):字面意思,接受这个包,让这个包通过。
拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。


目标(target):指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。
跳转(jump):和目标类似,不过它指定的不是一个具体的动作,而是另一个链,表示要跳转到那个链上。(具体什么是链后面会涉及)
规则(rule):一个或多个匹配及其对应的目标

iptables的规则表和链

表(tables):为防火墙提供了特定的功能,在iptables中存在四个表filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换,包修改和数据跟踪处理.
链(chains):可以理解为规则的一些排序,换句话说,链中包含一个或者多个规则。当某个数据包到达防火墙时,将与选定的链的各个规则进行比对,之后再进行相应的操作。如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。
如下图,规则1,2,3构成一条链
这里写图片描述
p.s.:
1、防火墙是层层过滤的,实际是按照配置规则的顺序从上到下进行过滤的。
2、如果匹配上规则,即明确表明是阻止还是通过,数据包就不在向下进行匹配新规则了。
3、如果所有规则中没有明确表明是阻止还是通过,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4、防火墙默认规则是所有的规则执行完才会执行的。

Linux中的四表五链

注意:表这块的内容简单理解,真正设置安全策略时基本用不到)

  • filter表——作用:过滤数据包
  • Nat表——作用:用于网络地址转换(IP、端口)
  • Mangle表——作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
  • Raw表——作用:决定数据包是否被状态跟踪机制处理

  • INPUT链——进来的数据包应用此规则链中的策略
  • OUTPUT链——外出的数据包应用此规则链中的策略
  • FORWARD链——转发数据包时应用此规则链中的策略
  • PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
  • POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

这里写图片描述
由于四表中我们常用的就只有filter和nat,这里放一张鸟哥版精简图:
这里写图片描述
关于图中流向的简单解释:

  1. 当一个数据包进入网卡时,它首先进入PREROUTING链,之后进行路由判断,判断下一步是进行转发还是进入本机。
  2. 当数据包经过路由判断进入本机后,进入filter表中的INPUT链,依据该链的规则决定是否可以访问本机的资源
  3. 本机的数据包想要发出,将经过OUTPUT链,最后到达POSTROUTING链实现封包传出
  4. 一开始路由判断是进行转发的数据包,将经过FORWARD链,到达POSTROUTING链实现封包传出

iptables规则设置

1.基本语法

1
iptables (选项)(参数)

2.选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-t<表>:指定要操纵的表
-A:向规则链中添加条目
-D:从规则链中删除条目
-i:向规则链中插入条目
-R:替换规则链中的条目
-L:显示规则链中已有的条目
-F:清除规则链中已有的条目
-Z:清空规则链中的数据包计算器和字节计数器
-N:创建新的用户自定义规则链
-P:定义规则链中的默认目标
-h:显示帮助信息
-p:指定要匹配的数据包协议类型
-s:指定要匹配的数据包源ip地址
-j<目标>:指定要跳转的目标
-i<网络接口>:指定数据包进入本机的网络接口
-o<网络接口>:指定数据包要离开本机所使用的网络接口

3.命令选项输入顺序

1
2
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 
<-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

关于动作

1
2
3
4
5
6
7
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。

一些实例

查看已添加的iptables规则

1
iptables -L -n -v

删除已添加的iptables规则

1
2
iptables -L -n --line-numbers  //将所有的规则以序号标记显示
iptables -D INPUT 8 //删除input链中序号为8的规则

清除已有iptables规则

1
2
iptables -F
iptables -Z

开放指定端口

1
2
3
4
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT  //允许本地还回网卡测试
iptables -A OUTPUT -j ACCEPT //允许向外的所有访问请求
iptables -A INPUT -p tcp --dport 22 -j ACCEPT //允许外界访问22端口
iptables -A INPUT -j reject //禁止其他未允许的规则进行访问

屏蔽IP

1
2
iptables -I INPUT -s 1.2.3.4 -j DROP       //屏蔽单个IP的命令
iptables -I INPUT -s 1.0.0.0/8 -j DROP //根据CIDR对应掩码进行一个ip段的屏蔽

根据上面的简单指令可以拼凑出能针对复杂攻击的过滤规则,未来几天我将针对不同攻击形式所对应的安全规则再写一篇博文.

-------------本文结束感谢您的阅读-------------
0%