Iptables In Case of
Read First ! #
用一个实例深入理解 iptables 的 SNAT/DNAT, bak
Chain 顺序 #
入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING
ref1: cnblog; ref2 Linux iptables 用法与 NAT, ref: //翻译的比较差或者自动翻译,有些东西顺序不对
ACCEPT vs. DROP vs. REJECT #
1、ACCEPT 一旦包满足了指定的匹配条件,就会被 ACCEPT,并且不会再去匹配当前链中的其他规则或同一个表内的其他规则,但它还要通过其他表中的链。
2、DROP 如果包符合条件,这个 target 就会把它丢掉,也就是说包的生命到此结束,不会再向前走一步,效果就是包被阻塞了。 在某些情况下,这个 target 会引起意外的结果,因为它不会向发送者返回任何信息,也不会向路由器返回信息,这就可能会使连接的另一方的 sockets 因苦等回音而亡。
解决这个问题的较好的办法是使用 REJECT(因为它在丢弃包的同时还会向发送者返回一个错误信息,这样另一方就能正常结束),尤其是在阻止端口扫描工具获得更多的信息时,可以隐蔽被过滤掉的端口等等(因为扫描工具扫描一个端口时,如果没有返回信息,一般会认为端口未打开或被防火墙等设备过滤掉了)。
还要注意如果包在子链中被 DROP 了,那么它在主链里也不会再继续前进,不管是在当前的表还是在其他表里。
3、REJECT REJECT 和 DROP 基本一样,区别在于它除了阻塞包之外,还向发送者返回错误信息。 现在,此 target 还只能用在 INPUT、FORWARD、OUTPUT 和它们的子链里,而且包含 REJECT 的链也只能被它们调用,否则不能发挥作用。 它只有一个选项,是用来控制返回的错误信息的种类的。
ref: iptables ACCEPT DROP REJECT 说明
Flush: #
iptables --flush
ref
Accept HTTP Request #
iptables -I INPUT 1 -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -I INPUT 2 -m state --state NEW -p tcp --dport 443 -j ACCEPT
Allow Port Range #
iptables -I INPUT -p tcp --dport 1234:2345 -j ACCEPT
Save Rules to Be Used During Boot #
/sbin/service iptables save
or
iptables-save
ref:
Red Hat Enterprise Linux 4: Security Guide > Chapter 7. Firewalls http://www.centos.org/docs/4/html/rhel-sg-en-4/s1-fireall-ipt-act.html
Block an IP #
iptables -I INPUT -s 1.1.1.1 -j DROP
Delete a Rule #
iptables -D INPUT -s 1.1.1.1 -j DROP
or
iptables -D INPUT <rule-number>
List / Show / Display Rule-numbers & Others #
iptables -L -v --line-numbers
line-numbers