什么是iptables
iptables(网络过滤器)是一个工作于用户空间的防火墙应用软件。
防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在linux内核中。
iptables有三张表五条链:
(1)filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。(2)nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
(3)mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由
之前本地的包)。
我们简单的用一张图表示一下:
一.iptables服务的基本管理
1.关闭firewalld的管理,打开iptables的管理方式
systemctl stop firewalld
systemctl start iptables
2.显示iptables中的所有策略
iptables -nL
3.刷新火墙的信息(清空策略)
iptables -F
4.保存火墙的策略
service iptables save
保存的策略在/etc/sysconfig/iptables
二.iptables策略的增删改
iptables读取策略时是从上到下依次读取,读到满足自身的条件时就不再向下读取
(一).增加策略时几个重要的参数:
-L查看表的策略信息
-A和-I都是插入,但是-A只能将新的策略写在最后位置,而-I可以插入到任何位置
-R不删除原有策略,直接修改
-n对ip地址做解析
-j表示选择ACCEPT REJECT DROP
-p表示协议类型
(二).增加,删除,修改策略
1.修改默认的ACCEPT和DROP(只有这两种)
iptables -P INPUT DROP
2.在最后添加对80端口访问拒绝的策略
iptables -A INPUT -p tcp --dport 80 -j REJECT
3.在最后添加一条对80端口172.25.254.10访问接受的策略
iptables -A INPUT -s 172.25.254.10 -p tcp --dport 80 -j REJECT
4.删除第二条的策略
iptables -D INPUT 2
5.在第一条策略的位置处插入
iptables -I INPUT 1 tcp --dport 80 -j ACCEPT
6.修改第一条策略,只允许172.25.254.10访问80端口
iptables -R INPUT 1 -s 172.25.254.10 -p tcp --dport 80 -j ACCEPT
7.管理自己定义的链
(1)添加一条自定义的链
iptables -N jay
(2)对自己添加的链修改名称
iptables -E jay JAY
(3)删除自己定义的链
iptables -X JAY
8.为了节省时间,我们可以让正在访问某些端口的或者已经访问过的直接通过
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
然后对没有访问过的一一说明
(比如)
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT lo表示机本机回环接口
NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
RELATED: 该包是属于某个已建立的连接所建立的新连接。
ESTABLISHED:该包属于某个已建立的连接。
INVALID: 该包不匹配于任何连接,通常这些包被DROP
三iptables管理地址伪装
1.SNAT就是改变转发数据包的源地址
–to-source:
POSTROUTING:可以在这里定义进行源NAT的规 则,系统在决定了数据包的路由以后在执行该链中的规则。
(1).iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.110
(2).iptables -t nat -nL
2.DNAT就是改变转发数据包的目的地址
–to-dest:
PREROUTING:(外部访问内部)可以在这里定义进行 目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
(1).iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to-dest 172.25.4.110
(2).iptables -t nat -nL