一、IPTABLES 主要参数:
-A 添加规则到链表末尾
-I 添加规则到首部
-t 操作的表,后面加表名,不加这个参数默认操作表为filter
-D 删除表中规则,可以指定序列号或者匹配的规则来删除
(iptables -t nat -D PREROUTING 1)
-F 清空规则,重启后恢复(iptables -F 清空的是filter表)
-L 列出规则
-p 用来指定协议
-s 指定源地址 (取相反ip -s ‘!’ 172.24.254.120 )
-d 指定目的地址(取相反ip -s ‘!’ 172.24.254.120/24 其中/24 表示的是掩码)
-i 进入接口 如:eth0
-o 流出接口
-j 采取的动作:ACCEPT,DROP,SNAT,DNAT,MASQUERADE,REDIRECT
--sport 源端口
--dport 目的端口,端口必须和协议一起,才能使用;多个端口如何使用?--dprot 1:24
二、配置文件:/etc/sysconfig/iptables
三、启动服务:/etc/init.d/iptables start/stop/restart
四、Iptables的三个表:filter(管理本机的数据包进出),nat(用来进行来源与目的ip或者port的转换),mangle(可以只定义规则,一般用不到)
五、例题
Iptables -t filter -A INPUT -s 172.24.254.120 -p tcp --dport 80 -j DROP
使用--dport必须加上协议)
Iptables -t filter -I OUTPUT -d 172.24.254.111 -j DROP
禁止本机向172.24.254.111发送信息包
六、注意项
规则顺序的重要性:假设input列表中有10条规则,当一个数据包要进入主机时,防火墙如何分析这个数据包的,数据包过滤的规则操作及分析过程:数据包先与input链中第一条规则进行匹配,符合匹配则进行第一条规则的动作:accept或者drop。而不会理睬后续的9条规则。如果不符合第一条规则则逐一往下匹配,如果全部不符合则执行默认策略(ACCEPT或者DROP)。
如何修改默认策略?Iptables-P INPUT DROP/ACCEPT
当修改input默认策略为drop时(iptables -P INPUT DROP);ssh会马上掉线
简单的filter表规则添加不多提,详细可以参考鸟哥服务器篇,262页。
七、NAT原理与配置
1、在做nat之前,要先将路由转发功能打开,不然数据链forward都过不了
2、nat表中的三个链:PREROUTING(路由之前),POSTROUTING(路由之后),OUTPUT
3、需要用到的几个动作选项:
REDIRECT:端口的转换
SNAT: 源地址转换
DNAT: 目的地址转换
MASQUERADE:ip伪装用于动态获取ip地址的主机。如果主机地址静态分配的,就用SNAT
4、数据流向过程分析
数据依次经过PREROUTING-------FORWORD -------POSTROUTING这三个链
SNAT数据流向过程分析:首先进入PREROUTING,发现不是本网段的地址,而后开始查找路由表(查找路由的过程在PREROUTING和FORWORD之间),再经过FORWORD进行转发,在经过POSTROUTING进行nat转换。在这个流程中,nat转换的步骤在POSTROUTING链上操作,之所以不在PREROUTING上操作是因为数据进来之前还不知道本网段地址是外网地址。
DNAT数据流向过程分析:在DNAT中nat抓换在PREROUTING链上操作,因为数据进入主机后,路由选择过程在PREROUTING和FORWORD之间,所以只有先做完地址转换,才进行路由选择。
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议)。
八、例题
1、使用防火墙,将80端口的请求转发到8080端口
Iptables -t nat -I PREROUTING -p tcp --dprot80 -j REDIRECT --to-port 8080
2、使用防火墙技术,将本机上的80端口请求转发到另外一台主机的8080端口上
假设本机内网ip为172.24.254.55/16 外网ip为 172.24.254.120/24
另一台内网ip为:172.24.254.44/16
Iptables -t nat -I PREROUTING -d 172.24.254.120/24 -p tcp--dport 80 -j
DNAT --to-destination172.24.254.44:8080
Iptables -t nat -I POSTROUTING -s 172.24.254.44/16 -p tcp --dport 8080 -j
SNAT --to-source 172.24.254.120:80
3、定制一条iptables,实现:只允许8.8.8.8,使用udp协议,访问本机的1-1024端口,其他全部拒绝。
Iptables -I INPUT -s ‘!’ 8.8.8.8-p udp --dport 1:1024 -j dorp
九、当数据包到达防火墙是,防火墙的一系列操作
1、以本地为目标的包
2、以本地为源的包
3、被转发的包