首页 > 代码库 > iptables防火墙高级应用

iptables防火墙高级应用

             iptables 防火墙(主机防火墙)

前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptablesasa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但只要多做几遍,也就简单了。

 

一、防火墙基础

Linux防火墙主要工作在网络层,属于典型的包过滤防火墙。

 

1、iptables的表、链结构

Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根据处理数据包的不同时机划分为五种链,而决定是否过滤或处理数据包的各种规则,按先后顺序存放在各规则链中。

 

规则表分为以下4

1)filter表:用来对数据包进行过滤,表内包含三个链,即:INPUT,FORWARD,OUTPUT

2)Nat表:nat表主要用来修改数据包的ip地址、端口号等信息。包含三个链,即PREROUTING,POSTROUTING,OUTPUT

3)Mangle表:用来修改数据包的TOSTTL,或者为数据包设置MARL标记,实现流量整形,策略路由等高级应用,包含五个链,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

4)Raw表:用来决定是否对数据包进行状态跟踪,包含两个链:即OUTPUT,PREROUTING

 

规则链分为以下5

1)INPUT链:当收到访问防火墙本机地址的数据包(入站),应用此链中的规则。

2)OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。

3)FORWARD链:当收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。

4)PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。

5)POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。

 

 

2、数据包过滤的匹配流程

1)规则表的顺序

当数据包抵达防火墙时,将依次应用raw表,mangle表,nat表和filter表中对应链内的规则,应用顺序为raw-mangle-nat-filter

 

2)规则链之间的顺序

入站数据流向:来自外界的数据包到达防火墙后,首先被PRETOUTING链处理,然后进行路由选择,如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT链进行处理,通过以后再讲给系统的上层应用程序进行响应。

 

转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后再进行路由选择,如果数据包的目的地址是其他外部的地址,则内核将其传递给FORWARD链进行处理,最后交给POSTROUTING链进行处理。

 

出站数据流向:防火墙本机向外部地址发送的数据包,首先被OUTOUT处理,然后进行路由选择,再交给POSTROUTING链进行处理。

 

3)规则链内部各条防火墙规则之间的顺序

当数据包经过每条规则链时,依次按第一条规则,第二条规则......的顺序进行匹配和处理,链内的过滤遵循“匹配即停止”的原则,一旦找到一条相匹配的规则,则不再检查本链内后续的其它规则,如果比对完整个链,也找不到与数据包相匹配的规则,就按照规则链的默认策略进行处理。

3:防火墙过滤包的角度分为3种:

包过滤防火墙:工作在网络层,只匹配ip与端口

应用层防火墙:工作在应用层,匹配端口IP及数据

状态检测防火墙: 补充过滤包防火墙

4:命令格式为 iptables [ -t 表名 ] 选项 [链名] 【条件】【-j 控制列表】

控制列表分为:

ACCEPT:允许通过

DROP:丢弃,不响应

REJECT:拒绝,但响应

LOG:记录日志,但不做处理

选项:

-A :链尾添加新规则

-I:链首添加新规则

查看规则:

-L :列出规则条目

-n:以数字形式显示端口或ip

-v:更加详细

--line-numbers:查看规则,显示规则序列

删除,清空:

-D :删除链内的序列号

-F:清空所有规则

二、为网站服务器编写防火墙规则(主机型)

1.首先在服务器上安装httpdvsftpd服务器,并启动服务,更改ssh端口为2222,用于验证防火墙设置

2.修改INPUT莲默认策略为DROP

[root@rhel1 ~]# iptables -t filter -P INPUT  DROP

技术分享 

3.清空filter

[root@rhel1 ~]#iptables  -F

技术分享 

4.允许192.168.1.56(管理员)主机ping服务器,禁止从其他主机ping服务器,服务器可以ping其他主机

[root@rhel1 ~]# iptables -A INPUT -s 192.168.1.56 -p icmp --icmp-type 8 -j ACCEPT

[root@rhel1 ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

[root@rhel1 ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

技术分享 

5.允许192.168.1.56(管理员)主机对服务器进行ssh

技术分享 

验证是否可以链接:

技术分享 

6.允许访问服务器的ftp,http服务

[root@rhel1 ~]# iptables -I INPUT -p tcp -m multiport --dport 21,20,80 -j ACCEPT

[root@rhel1 ~]# iptables -I INPUT -p tcp -m state --state NEW, ESTABLISHED,RELATED  -j ACCEPT

技术分享 

如果用被动模式访问ftp,还需要编辑/etc/sysconfig/iptables-config文件,在其中加入如下内容:

IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

技术分享 

7.允许服务器访问其他的web服务

[root@rhel1 ~]# iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT

技术分享 

8.禁止转发与正常TCP连接无关的非--syn请求数据包

[root@rhel1 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

技术分享 


本文出自 “apache” 博客,请务必保留此出处http://xiaorenwutest.blog.51cto.com/12754924/1913620

iptables防火墙高级应用