1

假設我的應用程序具有偵聽UDP套接字,並且它知道它可以從哪些IP地址接收UDP數據報。來自其他IP地址的任何內容都將被視爲惡意數據報,應儘早丟棄以防止DoS攻擊。最困難的部分是這些合法IP地址的集合可以動態改變應用程序的生命週期(即通過在控制通道上動態接收它們)。應該在應用層本身實現源IP地址過濾還是由應用委託給防火牆

如何在上述情況下基於源IP地址實施過濾?

我看到了兩個解決方案,其中把這個源IP篩選邏輯:

  1. 它recvfrom的()調用後,應用程序本身實現。
  2. 在防火牆中安裝默認的丟棄策略,然後讓應用程序安裝可動態將白名單合法IP地址列入白名單的防火牆規則。

每種解決方案都有優點和缺點。一些來我的腦海:

  1. 的iptables可以用O(n)的濾波的複雜性(CON iptables的)
  2. 的iptables丟棄數據包之前,他們甚至得到套接字緩衝區(親iptables的)最終
  3. iptables的可能不是非常便攜(CON iptables的)從我的應用程序
  4. iptables的可能與可能也將安裝iptables規則(CON iptables的)
  5. ,如果我的應用程序安裝的iptables規則,那麼它可能成爲其他應用程序攻擊矢量本身(con for iptables)

你會在哪裏實現源IP過濾,爲什麼?

你可以命名遵循約定#2的任何應用程序(管理員手動安裝靜態防火牆規則不計數)嗎?

+0

iptables是內核級別,應用程序是用戶空間。那裏存在顯着差異。我期望一個tcpwrapper像實現,如果你在用戶空間做的事情..但通常有它的共同基礎設施,如Apache允許/拒絕規則的全部原因。 –

回答

1

我的建議防禦(絕對沒有權威)是使用iptables做速率限制來抑制任何DoS攻擊,並在應用程序中執行實際的過濾。這會給你兩個世界中最壞的東西,允許你使用iptables的性能來限制DoS吞吐量,以及在不引入潛在安全漏洞的情況下更改允許哪些地址的能力。

如果您確實決定單獨使用iptables,我會創建一個新鏈來執行特定於應用程序的過濾,以降低干擾的可能性。

希望這會有所幫助。

-3

Hope this link help you 網絡層防火牆或分組過濾器在TCP/IP協議棧操作,不允許數據包通過防火牆除非它們匹配由管理員定義的或默認應用已建立的規則集。現代防火牆可以根據很多數據包屬性(如源IP地址,源端口,目標IP地址或端口)或目標服務(如WWW或FTP)來過濾流量。他們可以基於協議,TTL值,發起者的網絡塊,源的許多其他屬性進行過濾。 應用層防火牆適用於TCP/IP協議棧的應用層,攔截所有去往或來自應用程序的數據包,將不需要的外部通信放到受保護的機器上,而不需要發件人的確認。額外的檢查標準可能會增加額外的延遲,以便將數據包轉發到目的地。 強制訪問控制(MAC)過濾或沙箱通過根據允許連接到特定網絡的特定設備的MAC地址允許或拒絕訪問來保護易受攻擊的服務。 代理服務器或服務可以在專用硬件設備上運行,也可以在通用計算機上運行,​​響應輸入數據包(如連接請求),同時阻止其他數據包。儘管IP欺騙等方法可以將數據包傳輸到目標網絡,但濫用內部系統並不一定會導致安全漏洞。 網絡地址轉換(NAT)功能允許通過與「私有地址範圍」地址編號來隱藏受保護設備的IP地址,如RFC 1918中定義該功能提供對網絡偵察

相關問題