Iptables:
Netfilter:可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
一.iptables 简介
内核空间中定义5个位置:
1.内核空间中:从一个网络接口进来,到另一个网络接口去的
2.数据包从内核流入用户空间的
3.数据包从用户空间流出的
4.进入/离开本机的外网接口
5.进入/离开本机的内网接口
五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING(路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链
防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。
定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。
1.filter 定义允许或者不允许的
2.nat定义地址转换的
3.mangle功能:修改报文原数据
对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
二.IPtables格式
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-ttable :3个选项:filternat mangle
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-jACTION :指定如何进行处理
比如:不允许172.16.0.0/24的进行访问。
iptables-t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
当然你如果想拒绝的更彻底:
iptables-t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
iptables-L -n -v #查看定义规则的详细信息
练习题1:
只要是来自于172.16.0.0/16网段的都允许访问我本机的172.16.100.1的SSHD服务
分析:首先肯定是在允许表中定义的。因为不需要做NAT地址转换之类的,然后查看我们SSHD服务,在22号端口上,处理机制是接受,对于这个表,需要有一来一回两个规则,如果我们允许也好,拒绝也好,对于访问本机服务,我们最好是定义在INPUT链上,而OUTPUT再予以定义就好。(会话的初始端先定义),所以加规则就是:
定义进来的: iptables -t filter -A INPUT -s 172.16.0.0/16 -d172.16.100.1 -p tcp --dport 22 -j ACCEPT
定义出去的: iptables -t filter -A OUTPUT -s 172.16.100.1 -d172.16.0.0/16 -p tcp --dport 22 -j ACCEPT
将默认策略改成DROP:
iptables-P INPUT DROP
iptables-P OUTPUT DROP
iptables-P FORWARD DROP
练习题2:
假如我们允许自己ping别人,但是别人ping自己ping不通如何实现呢?
分析:对于ping这个协议,进来的为8(ping),出去的为0(响应).我们为了达到目的,需要8出去,允许0进来
在出去的端口上:iptables -A OUTPUT -p icmp--icmp-type 8 -j ACCEPT
在进来的端口上:iptables -A INPUT -p icmp--icmp-type 0 -j ACCEPT
小扩展:对于127.0.0.1比较特殊,我们需要明确定义它
iptables-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables-A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
参考文献:
http://blog.chinaunix.net/uid-26495963-id-3279216.html