Linux系统中用iptables管理防火墙

时间:2020-12-24 22:30:43

什么是iptables

iptables(网络过滤器)是一个工作于用户空间的防火墙应用软件。
防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在linux内核中。
iptables有三张表五条链:
(1)filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。

(2)nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
(3)mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由
之前本地的包)。

我们简单的用一张图表示一下:
Linux系统中用iptables管理防火墙

一.iptables服务的基本管理

1.关闭firewalld的管理,打开iptables的管理方式

systemctl stop firewalld
systemctl start iptables

2.显示iptables中的所有策略

iptables -nL

3.刷新火墙的信息(清空策略)

 iptables -F

4.保存火墙的策略

 service iptables save

保存的策略在/etc/sysconfig/iptables

Linux系统中用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

Linux系统中用iptables管理防火墙
3.在最后添加一条对80端口172.25.254.10访问接受的策略

 iptables -A INPUT -s 172.25.254.10 -p tcp --dport 80 -j REJECT 

Linux系统中用iptables管理防火墙
4.删除第二条的策略

 iptables -D INPUT 2

5.在第一条策略的位置处插入

 iptables -I INPUT 1 tcp --dport 80 -j ACCEPT

Linux系统中用iptables管理防火墙
6.修改第一条策略,只允许172.25.254.10访问80端口

  iptables -R INPUT 1 -s 172.25.254.10 -p tcp --dport 80 -j ACCEPT

Linux系统中用iptables管理防火墙
7.管理自己定义的链
(1)添加一条自定义的链

 iptables -N jay

Linux系统中用iptables管理防火墙
(2)对自己添加的链修改名称

 iptables -E jay JAY

Linux系统中用iptables管理防火墙
(3)删除自己定义的链

     iptables -X JAY

Linux系统中用iptables管理防火墙
8.为了节省时间,我们可以让正在访问某些端口的或者已经访问过的直接通过

 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

Linux系统中用iptables管理防火墙
然后对没有访问过的一一说明
(比如)

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表示机本机回环接口

Linux系统中用iptables管理防火墙

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

Linux系统中用iptables管理防火墙
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