外面网站上搜到的都不是说的很明白
所以自己学的时候,做了些笔记。放上来大家讨论讨论
删除所有规则
iptables -F
删除所有定义
iptables -X
创建新的定义firewall_in,类似于组概念
iptables -N firewall_in
删除定义firewall_in里第一条规则
iptables -D firewall_in 1
指定firewall_in定义应用到INPUT chain,类似于应用组
iptables -A INPUT -j firewall_in
创建一条规则在firewall_in组
iptables -A firewall_in -i eth0 -p tcp -m tcp -s 10.1.1.0/255.255.255.0 -d 10.1.1.1 –dport 22 –syn -j ACCEPT
插入一条规则在firewall_in组第一条
iptables -I firewall_in 1 -p udp -m udp -s 10.0.0.1 –sport 53 -d 10.1.1.1 -j ACCEPT
保存规则已备下次重启使用
/etc/init.d/iptables save
示例
iptables -F
iptables -X
iptables -N firewall_in
iptables -A INPUT -j firewall_in
iptables -A firewall_in -i eth0 -p tcp -m tcp -s 10.1.1.0/255.255.255.0 –dport 22 –syn -j ACCEPT
iptables -A firewall_in -i lo -j ACCEPT
iptables -A firewall_in -p udp -m udp -s 10.0.0.1 –sport 53 -j ACCEPT
iptables -A firewall_in -p tcp -m tcp –syn -j REJECT
iptables -A firewall_in -p udp -m udp -j REJECT
上面的示例的作用是清空当前所有iptables规则和定义然后创建规则:
允许10.1.1.0/255.255.255.0访问本机22(ssh)端口和与IP为10.0.0.1的dns服务器进行查询域名
其他所有入站通讯一律REJECT掉,也可以用DROP,区别是REJECT会返回一个ICMP包告知源地址访问失败,DROP则直接把包丢弃掉
应为与dns进行查询的时候会有dns的数据包从53端口进来,所以要开dns服务器到本机的53端口否则dns查询会失败
一开始我一直用的
iptables -A firewall_in -j DROP
结果发现只要一加所有包都给drop了,看来iptables对-p all -s any -d any 的优先权比较高,不是按照规则顺序只要匹配的放行的,要整个规则都过一边才防行。
iptables -A firewall_in -p tcp -m tcp –syn -j REJECT
iptables -A firewall_in -p udp -m udp -j REJECT