Iptables In Case of

Iptables In Case of

2013-07-14. Category & Tags: Soft&Skills Soft&Skills

Read First ! #

用一个实例深入理解 iptables 的 SNAT/DNAT, bak

iptables 详解 (理论+一些常用规则)

Chain 顺序 #

入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING

image image image

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