iptables学习
iptables由4表、5链和用户在链内写入的各种规则所组成。(iptables(/etc/sysconfig/iptables /sbin/iptables)) 1、表:容纳各种规则链;表是按照功能分的类,具体功能如下: (1)raw表:用来决定是否对数据包进行状态跟踪。(不常用) (2)mangle表:为数据包设置标记,有ACK、SYN、FIN、RST、PSH、URG等标记。(不常用) (3)nat表:修改数据包的IP地址、端口等信息。(网关型防火墙常用) (4)filter表:确定是否放行数据包。(常用) 2、链:容纳各种防火墙规则;链是按照时机分的类。 (1)input:处理入站请求包 (2)output:处理出站包(就是响应、应答包) (3)forward:处理转发数据包,实现不同网段间的通信 (4)prerouting:在包做路由选择之前应用此链的规则 (5)postrouting:在数据包做路由选择之后应用此链的规则 3、LOG:在/var/log/messages文件中记录日志信息,然后将包传给下一条规则,防火墙规则的"匹配即停止"对于log操作来说是一个特例,因为log只是一种辅助动作,并没有真正处理包。 4、查询规则 iptables -nL INPUT --line-number(以数字形式查看filter表INPUT链中的所有规则,并显示规则序号) iptables -t filter -L INPUT -vn (以数字形式详细显示filter表INPUT链的规则) iptables -p icmp -h (查看ICMP类型) 5、例子 iptables -t filter -A INPUT -p tcp -j ACCEPT(在filter表的INPUT链中最后一个规则后面添加一个新的规则) iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT (在filter表INPUT链第二行插入规则,允许tcp的80端口通过) iptables -D INPUT 3(删除filter表中INPUT链的第三条规则) iptables -t raw -F(清空raw表中所有链内的规则) iptables -F OUTPUT(清空filter表output链内所有规则) iptables -A FORWARD ! -p icmp -j ACCEPT(除了icmp协议的数据包,别的协议的包都能转发) iptables -A INPUT -p tcp --dport 20:23 -j ACCEPT(一般是主机型防火墙设置的,我们电脑的20到23端口可以被访问) iptables -A INPUT -p icmp --icmp-type 8 -j DROP (别人ping我主机的请求被丢弃,8代表请求) iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT (我ping别人时,回来的包被允许(一去一回才知道ping没ping通),0带表回来的icmp包) iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT(3也是代表请求,主机不可达,不常用) iptables -A INPUT -s 0/0 -m state --state NEW -p tcp -m multiport --dport 123,110 -j DROP (这句意思为源地址是0/0的 NEW状态的的TCP数据包都禁止访问我的123和110端口) iptables -A INPUT -s ! 172.20.89.0/24 -m state --state NEW -p tcp -m multiport --dport 1230,110 -j DROP ("!"号的意思 取反。就是除了172.20.89.0这个IP段的地址都DROP) iptables -t nat -A PREROUTING -d 192.168.102.55 -p tcp --dport 90 -j DNAT --to 172.20.11.1:800 (-A PREROUTING 指定在路由前做的。完整的意思是在 NAT TABLE 的路由前处理,目的地为192.168.102.55 的 目的端口为90的我们做DNAT处理,给他转向到172.20.11.1:800那里去) iptables -t nat -A POSTROUTING -d 172.20.11.1 -j SNAT --to 192.168.102.55 (-A POSTROUTING 路由后。意思为在 NAT TABLE 的路由后处理,凡是目的地为 172.20.11.1 的,我们都给他做SNAT转换,把源地址改写成 192.168.102.55 ) iptables -A INPUT -p tcp -s ip1/32 --dport 22 -j ACCEPT (允许SSH)
生效:
service iptables restart