1. 程式人生 > 其它 >Linux 防火牆 REJECT 與 DROP 的區別

Linux 防火牆 REJECT 與 DROP 的區別

原文連結:https://blog.csdn.net/likunwen_001/article/details/44622355

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雖然單方面的中斷了連線,但是並不返回任何拒絕資訊,因此連線客戶端將被動的等到tcp session超時才能判斷連線是否成功,這樣在企業內部網路中會有一些問題,例如某些客戶端程式或應用需要IDENT協議支援(TCP Port 113, RFC 1413),如果防火牆未經通知的應用了DROP規則的話,所有的同類連線都會失敗,並且由於超時時間,將導致難以判斷是由於防火牆引起的問題還是網路裝置/線路故障。

注:在部署防火牆時,如果是面向企業內部(或部分可信任網路),那麼最好使用更紳士REJECT方法,對於需要經常變更或除錯規則的網路也是如此;而對於面向危險的Internet/Extranet的防火牆,則有必要使用更為粗暴但是安全的DROP方法,可以在一定程度上延緩黑客攻擊的進度(和難度,至少,DROP可以使他們進行TCP-Connect方式埠掃描時間更長)。