防火墙真是个好东西啊,那么什么防火墙捏?其实防火墙就是监控进入我们网段内主机的信息数据包的一种机制。从广义上来说,凡是能够分析和过滤进出我们管理网段的数据包的数据,就可以称作是防火墙。
 
在Linux上,使用的是内核中内置的直接原生支持的iptables软件作为防火墙数据包过滤机制,由于iptables是内核内置的功能,并且同时是由内核直接进行处理的,因此它的执行效率非常高,很适合一般小型企业环境使用,它主要就是利用一些数据包过滤规则的设置来定义出什么数据可以接受,什么数据必须丢弃,通过比对数据包的内容与我们事先定义好的规则来实现保护主机的目的,防止非授权的访问,跟ACL其实差不多的。
 
iptables中有三张表,分别是filter,nat,mangle(这个表格主要是与特殊数据包的路由标记有关,很少使用,所以不会,我是略过了)。
其中filter表中包含三个链:
                                               1.INPUT:主要是与进入本机的数据包有关。
                                               2.OUTPUT:主要是与本机所要发出的数据包有关。
                                               3.FORWARD:与Linux本机无关,它可以将数据包发到后端的计算机中,即LAN内的计算机。
   nat表中也包含的三个链:
                                                1.PREROUTING:在进行路由判断之前执行的规则
                                                2.POSTROUTING:在进行路由判断之后执行的规则
                                                3.OUTPUT:同上上上上
 
接下来介绍一下iptables中最简单最单纯的基础用法。至于什么语法结构的就不罗嗦了。
 
1.列出filter表中的3条链的规则
[root@localhost ~]#iptables -t filter -L -n
 
2.清除所有已定义的规则
[root@localhost ~]#iptables -F
 
3.清除所以用户自定义的链
[root@localhost ~]#iptables -X
 
4.将所有chain中计数与流量的统计都归零
[root@localhost ~]#iptables -Z
 
5.定义INPUT的默认策略为拒绝
[root@localhost ~]#iptables -P INPUT DROP
 
6.将来自10.10.9.49这个IP的数据包都予以接受
[root@localhost ~]#iptables  -t filter -A INPUT -i eth0 -s 10.10.9.49 -j ACCEPT
 
7.只要是来自192.168.1.0/24的1024:65535端口的数据包,想要联机到本机的ssh端口,就予以毫不留情的阻止
[root@localhost ~]#iptables -t filter -A INPUT -i eth0 -p tcp -s 192.168.1.0/255.255.255.0  \
> --sport 1024:65535 --dport 22 -j DROP
 
8.将来自任何地方来源端口是1:1023 的主动联机到本机端的1:1203的数据包都丢弃
[root@localhost ~]#iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 \
>--syn -j DROP
 
9.只要是联机成功的数据包或者是和刚才发出去请求相关的数据包就予以通过,不合法数据包则丢弃处理
[root@localhost ~]#iptables -t filter -A INPUT -m state --state RELATER,ESTABLISHED -j ACCEPT
[root@localhost ~]#iptables -t filter -A INPUT -m state --state INVALID -j DROP
 
10.丢弃ICMP类型是8的数据包
[root@localhost ~]#iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
 
11对局域网内某台MAC地址是aa:bb:cc:dd:ee:ff的主机开放其联机
[root@localhost ~]#iptables -t filter -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j \
>ACCEPT
 
12.防火墙记录的存储于恢复
[root@localhost ~]#iptables-save > somefile
[root@localhost ~]#iptables-restore < somefile
 
13.将要由eht1传送出去的数据包的来源修改为200.200.200.10
[root@localhost ~]#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 200.200.200.10
 
14.将连接到eth1接口的port 80传送到到内部的10.10.9.49
[root@localhost ~]#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 10.10.9.49:80
 
其中一些简单的用法就如上所写。。