IPTABLES 软防火墙
防火墙是做什么的:
在生活中顾名思义防火墙即是为了防止火势、火情蔓延而设立的一道屏障,那么这道屏障在设置在那里后就可以保障内外两地将无情火分隔,保证我的内地不受外地的火情影响,从而安全的生活下去;查看下图帮助理解防火墙;
图1-1
图1-1可以看出当数据流量从外网主机访问内网主机时,因为网络中有一道防火墙存在,而组织了恶意攻击,并且将数据包直接丢弃在门外,这就是防火墙了;
在网络环境中都有哪些防火墙 :
我们可以把iptables叫做防火墙;因为防火墙有两种,分为硬件防火墙和软防火墙;
硬件防火墙就是一个网络设备,比如CISCO公司生产的ASA系列产品就属于硬件防火墙了,那么软件防火墙呢,软件防火墙即是将防火墙的功能集成到系统之上,例如windos的防火墙,linux的iptables,这些都属于软件防火墙,但是我们称软件防火墙叫做软防火墙;本文档中只介绍软防火墙iptables;
iptables和netfilter的关系:
这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables的实现:
iptables是集成在linux发行版本内核中的一个IP包过滤系统,以数据包过滤的方式来决定数据包的留去,怎么定义呢;通过表单查询方式;在iptables中默认有以下几表,表下面分为几个链,链下面分了几个2个规则:
表:filter、nat、mangle、raw
链:(filter的链)INPUT、OUTPUT、FORWARD
规则:ACCEPT、DROP
INPUT链:从别的主机访问我的主机才被INPUT链匹配
OUTPUT链:从我的主机访问别的主机才被OUTPUT链匹配
FORWARD链:经过我的主机才被FORWARD链匹配
把他们理解在一个平面上是这样的:
filter表 |
|||||
INPUT链 |
ACCEPT/DROP规则 |
||||
ACCEPT |
Tcp |
1.1.1.1 |
1.1.1.2 |
23 |
23 |
OUTPUT链 |
ACCEPT/DROP规则 |
||||
规则 |
协议 |
源ip |
目ip |
源端口 |
目端口 |
FORWARD链 |
ACCEPT/DROP规则 |
||||
ACCEPT |
Tcp |
1.1.1.2 |
1.1.1.1 |
23 |
23 |
表1-1
同表1-1表示所示:这张表中设定了两个规则;
当数据流量进入linux,linux会将数据包给到iptables,让iptables进行解封数据包封装,得出数据包中的源ip地址、目ip地址、源端口、目端口,进行对iptables的表进行比对;
举例:
主机A的ip地址1.1.1.1 向主机2的ip地址1.1.1.2发送了一个telnet连接,数据包格式大概为:
源IP |
目ip |
协议 |
源端口 |
目端口 |
1.1.1.1 |
1.1.1.2 |
Tcp |
23 |
23 |
表1-2
在主机2中,Iptables解封数据包得出大概得出表1-2内容,获取到这些基本信息后,对比iptables表单,这表单中有四个表,这里查看filter表,这个表中有三个链,因为这里是主机1发送给我的数据包,是进入主机的数据包,所以从INPUT这个进入链来查看规则;这些源ip,目ip能被iptables的filter表单INPUT链的规则中的项所匹配后,才允许放行,缺一不可;
源IP |
目ip |
协议 |
源端口 |
目端口 |
1.1.1.2 |
1.1.1.1 |
Tcp |
23 |
23 |
表1-3
数据包讲究有去有回,在主机1的数据包到达主机2后,主机2需要将数据包返回给主机1,当返回主机1的时候数据包源目发生该表,如图1-3
所以在iptables的filter表中将由两条规则;
Iptables的配置
Itables –t filter –P INPUT DROP
-t:指明表单
-P:指明哪个链
#指明filter表的INPUT链默认规则修改为DROP
Itables –t filter –P OUTPUT DROP
#指明filter表的OUTPUT链默认规则修改为DROP
Iptables –t filter –A INPUT –p tcp –s 1.1.1.1 –d 1.1.1.2 –sport 23 –dport 23 –j ACCEPT
-p:指明协议所用tcp协议
-s:指明表中匹配项的源端口地址
-d:指明表中匹配项的目的端口地址
–sport:指明匹配项的源端口地址
–dport:指明匹配项的目端口地址
-j:指明若数据包被这条规则所匹配后是ACCEPT放行还是DROP丢弃
#设置filter表中的INPUT链中匹配到源ip为1.1.1.1目ip为1.1.1.2的telnet数据允许放行
Iptables –t filter –A OUTPUT –p tcp –s 1.1.1.2 –d 1.1.1.1 –sport 23 –dport 23 –j ACCEPT
#设置filter表中的OUTPUT链中匹配到源ip为1.1.1.2目ip为1.1.1.1的telnet数据允许放行
-m:指明所匹配项所用的模块
原创文章,作者:system,如若转载,请注明出处:http://www.178linux.com/66344