Iptables 语法与格式
netfilter机制的命令结构:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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 –t [ 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 “<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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 –t filter”
SERVER=192.168.10.100
CLIENT=192.168.10.150
#Clear Original Rule
$VALUES –t filter –F
#Set Default Policy
$VALUES –t filter –P INPUTDROP
$VALUES –t filter –P FORWARD DROP
#Set Rule
$VALUES –A INPUT –p tcp –m state –-state INVALID –j DROP
$VALUES –A INPUT –p icmp –j DROP
$VALUES –A INPUT –p tcp –d $SERVER –-dport 80 –j ACCEPT
$VALUES –A INPUT –p tcp –s $CLIENT –d $SERVER –-dport 23 –j ACCEPT
$VALUES –A INPUT –p tcp –s $CLIENT –d $SERVER –-dport 22 –j 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 –t filter –A INPUT –m state –-state ESTABLISHED – j ACCEPT i
ptables -t filter –A INPUT –m state –-state RELATED –j ACCEPT
将以上两条规则添加到现有的规则中就可以了。
https://blog.51cto.com/renhm/334685