Iptables
语法与格式
netfilter
机制的命令结构:
netFilter: INPUIT
、FORWARD、OUTPUT 《filter的三种chain《最重要
Nat:PREROUTING
、POSTROUTING、OUTPUT 《nat的三种chain《地址转换
Mangle: PREROUTING
、INPUT、FORWARD 《mangle的五种chain《提供QOS
OUTPUT
、POSTROUTING 可以更改封包的内容
RAW: PREROUTING
、OUTPUT 《raw的两种chain《提高性能
Iptables
命令参数:
Iptables �Ct [ filter | nat | mangle | raw]
-t
参数的意义是功能是哪一个(默认是filter)
Iptables
的操作方式:
-L
列出规则(table)内容,--line显示行号 (默认是filter)
-F
清除规则(table)内容
-A
加入新的规则
-P
修改default policy (默认是ACCEPT)
-I
插入新的规则
-R
配置新的规则取代旧的规则
-D
删除规则
Iptables
基本的规则语法:
1)
接口的匹配参数:
-i
匹配封包从哪个接口进入 例如: -i eth0
-o
匹配封包从哪个接口出去 例如: -o eth1
(常见的网络接口: eth0、 ppp0、 lo、 fddi0 “ 0” 代表第一块网卡,如果有多个就以此类推)
2)
协议的匹配参数:
-p
匹配使用的协议 例如: tcp、udp、icmp等也可使用all代表所有
在/etc/protocols文档中可以查看全部的协议及端口号
3 )
匹配来源/目的的IP地址:
-s
匹配封包的来源ip地址 例如: -s 192.168.10.100
-d
匹配封包的目的ip地址 例如: -d 172.16.10.100
可匹配单一ip、网段(192.168.10.0/24)、FQDN名(www.baidu.com)
4)
匹配来源/目的的post位置:
--sport
匹配来源就是来源使用哪个服务端口回应客服端封包
例如: --sport 110 匹配由pop3 Server回应客户端封包
--dport
匹配目的就是目的端要访问源端端哪个端口(服务)
例如: --dport 80 匹配访问Web Server的封包
5)
处理方式:
-j ACCEPT
允许
DROP
将封包丢掉
REJECT
将封包丢掉,并回应发送端一个ICMP封包
结合以上参数语法编写一下规则:
使用shell脚本的方式
#!/
Variable
VALUES=“/sbin/iptables �Ct filter”
SERVER=192.168.10.100
CLIENT=192.168.10.150
#Clear Original Rule
$VALUES �Ct filter �CF
#Set Default Policy
$VALUES �Ct filter �CP INPUT
DROP
$VALUES �Ct filter �CP FORWARD DROP
#Set Rule
$VALUES �CA INPUT �Cp tcp �Cm state �C-state INVALID �Cj DROP
$VALUES �CA INPUT �Cp icmp �Cj DROP
$VALUES �CA INPUT �Cp tcp �Cd $SERVER �C-dport 80 �Cj ACCEPT
$VALUES �CA INPUT �Cp tcp �Cs $CLIENT �Cd $SERVER �C-dport 23 �Cj ACCEPT
$VALUES �CA INPUT �Cp tcp �Cs $CLIENT �Cd $SERVER �C-dport 22 �Cj j ACCEPT
规则编写完成后将脚本赋予700权限并将属组与属主改成root然后执行脚本。
使用service iptables save 指令将规则存储到/etc/sysconfig/iptables文件中。
在/etc/rc.d/rc.local文件中的最后加入脚本的名称,需要决对路径
注:如何解决无发在防火墙主机上对外建立连接的问题:
解决方法:使用xt_state.ko模块该模块提供“连接追踪”功能
Netfilter
模块所在目录:
/lib/modules/kernel_version/kernel/net/netfilter
Iptables
工具模块所在目录:
/lib/iptables
State
模块的四种描述如下:
ESTABLISHED
、 NEW、 RELATED、 INVALID
使用规则如下:
I iptables �Ct filter �CA INPUT �Cm state �C-state ESTABLISHED �C j ACCEPT i
ptables -t filter �CA INPUT �Cm state �C-state RELATED �Cj ACCEPT
将以上两条规则添加到现有的规则中就可以了。