Linux防火牆REJECT與DROP的區別
Linux防火牆內的策略動作有REJECT和DROP兩種,區別如下:
1.、REJECT動作會返回一個拒絕(終止)數據包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明確的拒絕對方的連接動作。
連接馬上斷開,Client會認為訪問的主機不存在。
REJECT在IPTABLES里面有一些返回參數,參數如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(這個封包會要求對方關閉聯機),進行完此處理動作后,將不再比對其它規則,直接中斷過濾程序。
2、DROP動作只是簡單的直接丟棄數據,並不反饋任何回應。需要Client等待超時,Client容易發現自己被防火牆所阻擋。
至於使用DROP還是REJECT更合適一直未有定論,因為的確二者都有適用的場合:
1、REJECT是一種更符合規范的處理方式,並且在可控的網絡環境中,更易於診斷和調試網絡/防火牆所產生的問題;
2、DROP則提供了更高的防火牆安全性和稍許的效率提高,但是由於DROP不很規范(不很符合TCP連接規范)的處理方式,可能
會對你的網絡造成一些不可預期或難以診斷的問題。
火牆未經通知的應用了DROP規則的話,所有的同類連接都會失敗,並且由於超時時間,將導致難以判斷是
由於防火牆引起的問題還是網絡設備/線路故障。
注:在部署防火牆時,如果是面向企業內部(或部分可信任網絡),那么最好使用更紳士REJECT
方法,對於需要經常變更或調試規則的網絡也是如此;而對於面向危險的Internet/Extranet的防火牆,
則有必要使用更為粗暴但是安全的DROP方法,可以在一定程度上延緩黑客攻擊的進度(和難度,至少,DROP
可以使他們進行TCP-Connect方式端口掃描時間更長)。
