linux服务配置之Iptables防火墙配置教程

发布时间:2019-12-15编辑:脚本学堂
本文介绍了linux下iptables防火墙的配置方法,在linux中配置iptables不复杂,有了iptables防火墙的防护,再也不用担心linux系统的安全了。

一,iptables防火墙服务
iptables分为两个部分:一个部分在内核中实现,一个为用户接口命令iptables,用户通过该命令来修改防火墙的功能。
所以,iptables要使用相应的功能,必须要在内核中添加相应的模块。
modprobe添加模块

1:防火墙匹配规则   raw表----> mangle表------->nat表------>filter表。
raw:主要是进行包跟踪 ,包含的rule chians(规则链): PEREROUTING  OUTPUT
mangle: 设置数据包的标记  (规则链)   : PERE  OUTPUT INPUT POST FORWARD
nat:修改数据包中的源,目地址和mac (规则链)   : POST PERE  OUTPUT
filter:对包进行过滤。(规则链)   : INPUT OUTPUT FORWARD
一个规则链中可以有很多规则,一个表中可以包含多个链,规则依次匹配,匹配则停止。

2:对于入站和出站数据,经过的链为 PEREROUTING --->INPUT --->OUTPUT ---> POSTROUTING

3:对转发的数据:经过的链为  PEREROUTING --->FORWARD ---->POSTROUTING
防火墙先按照表的顺序,再按照数据的流向来进行相应链中的规则的匹配。

4:链中规则的jump(动作)分为:ACCEPT(接受),DROP(丢弃),REJECT(拒绝),LOG(日志),SNAT
DNAT REDRECT等等
动作的意思就是当匹配到该规则时,防火墙进行怎样的操作,丢弃还是通过,或者记录到日志中,当动作为LOG时,会继续向下匹配,所以为LOG时应该写在最前面。

二,iptables的详细命令配置

1: iptables -nvL   -n(numeric)-L(List) -v(verbose) 详细显示filter表中的规则,默认filter表

2: iptables -t filter -P INPUT ACCEPT   配置INPUT链默认的policy为ACCEPT  -t (table)

3: iptables -A INPUT  向INPUT链中添加规则,后面接相应的选项  -A (append)

4: iptables  -D INPUT  rules numbers   删除INPUT链中的规则 rules numbers为规则的序号。-D(delete)

5: iptables  -I  INPUT  4  rules   在INPUT的第四条规则中插入规则 -I (insert)

6: iptables  -A INPUT -m [ limit/multiport/state] 添加相应的模块实现相应的功能,-m(model),

7: iptables -A INPUT -m state --state NEW -j ACCEPT  使用state模块,通过数据包状态匹配来控制。

8: service iptables save  将规则保存到/etc/iptables文件,下次重启自动生效。

9: iptables-save  > iptables.conf  将配置写入iptables.conf文件,iptables-restore<iptables.conf写回。

三:匹配的类型
1:通用类型的匹配.
如协议类型,网络接口,网络地址  如: -p  tcp/udp/icmp -i eth0 -s 172.16.0.1 --sport 60等

2:隐含条件匹配
通常以特定的协议匹配为前提

3:显示条件匹配
需要添加相应的扩展模块来实现。如  -m  limit  --limit  5/sec -j ACCEPT 实现数据包通过速率
-m multiport  --dport 80,53,21 实现多个端口同时控制   -mstate --state NEW or ESTABLISHED

四:SNAT和DNAT动作的原理
1,在利用iptables进行PAT的nat地址转换时,必须在POSTROUING链中写入规则,这样FORWARD链中对内部地址的控制规则才会有效,如果再PREROUTING就转换,就立刻变为公有地址了,FORWARD链中的规则匹配不到,则失效,
2,在发布内部服务器时,必须要在PREROUING链中写入nat转换规则,如果不这样,当外网访问时,为防火墙上的一个公有地址接口,不会经过转发直接被防火墙接收。
3,由于防火墙服务器上有缓存,在回来的数据会直接转换。
4,配置SNAT,和DNAT命令。
1)、配置SNAT  

复制代码 代码示例:
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.0/16 -j SNAT --to-source  27.45.33.231  这里一定要接出接口的名字!
 

2)、配置DNAT, 

复制代码 代码示例:
iptables -t nat -A PREROUTING -i eth2 -d 23.55.13.45 -j DNAT --to-destination 172.16.0.3   这里一定要指定入接口的名字!