在看过鸟哥的书还有IPTABLES 1.9的文档之后的一些心得
时间:2006-03-16 来源:wylon
iptables 技术要点解析
version 2.0 使用ipfwadm防火墙机制
version 2.2 使用ipchains防火墙机制
version 2.4 使用iptables防火墙机制,兼容ipchains机制
iptables 中的指令,均需区分大小写。
ipchains 和 iptables 在语法上的主要的差异,注意如下:
1. 在 ipchains 中,诸如 input 链,是使用小写的 chains 名,在 iptables 中,要改用大写 INPUT。
2. 在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。
3. 在 ipchains 中, -i 是指介面(interface),但在 iptables 中,-i 则是指进入的方向,且多了 -o,代表出去的方向。
4. 在 iptables 中,来源 port 要使用关键字 --sport 或 --source-port
5. 在 iptables 中,目的 port 要使用关键字 --dport 或 --destination-port
6. 在 iptables 中,"丢弃" 的处置动作,不再使用 DENY 这个 target,改用 DROP。
7. 在 ipchains 的记录档功能 -l,已改为目标 -j LOG,并可指定记录档的标题。
8. 在 ipchains 中的-y,在 iptables 中可用 --syn 或 --tcp-flag SYN,ACK,FIN SYN
9. 在 iptables 中,imcp messages 型态,要加上关键字 --icmp-type,如:
iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT
一、了解系统本身的IPTABLES分布
检查系统是否安装IPTABLES:lsmod | rmmod ipchains | modprobe ip_tables
首先查看一下机器上的有关于iptables的设定情况
作法如下:
iptables -L -n # -L:列出当前的table的规则 -n :不进行ip与hostname的转换
iptablse -t nat -L -n #-t 后面接iptables的table,例如nat或者filter默认为filter
二、打开核心 forward 功能,作法如下:
echo "1" > /proc/sys/net/ipv4/ip_forward或在/etc/sysconfig/network 中添加
FORWARD_IPV4=yes打开转发功能
三、清除所有的规则,作法如下::
一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下:
# 清除预设表 filter 中,所有规则链中的规则
iptables -F
# 清除预设表 filter 中,使用者自订链中的规则
iptables -X
# 清除mangle表中,所有规则链中的规则
iptables -F -t mangle
# 清除mangle表中,使用者自订链中的规则
iptables -t mangle -X
# 清除nat表中,所有规则链中的规则
iptables -F -t nat
# 清除nat表中,使用者自订链中的规则
iptables -t nat -X
四、定义策略
-P:定义策略,P为大写
INPUT : 数据包为输入主机方向
OUTPUT: 数据包为输出主机方向
FORWARD: 数据包为不进入主机而向外再传输出去的方向
PREROUTING: 在进入路由之前进行的工作
POSTROUTING:在进入路由之后进行的工作
OUTPUT: 数据包为输出主机方向
五、增加与插入规则
-A:新增加一条规则 (默认为最后一条)
-I: 插入一条规则 (默认为第一条)
-i | -o (interface) -p ( tcp | udp | icmp | all ) -s ( ip | network )
--sport ( port1:port2 ) -d ( ip | network )
-- dport ( port1:port2 )
-j(accept | drop | log )