DDoS和其他攻擊與iptables(iptables中的Anti-DDoS安全性)

避免攻擊 DDoS攻擊iptables的 它有很多方法可以做到,按數據包大小,按連接限制等。 在這裡,我們將看到如何以一種簡單,直觀且易於解釋的方式實現目標,並阻止對服務器的其他惱人攻擊。

# Iptables

IPT="/sbin/iptables"
ETH="eth0"

#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT

#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP

#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT

#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN

#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP

#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP

#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP

它所做的是計算SYN數據包的數量(TCP連接開始)中的最後10秒中的每個IP地址。 如果達到30,則會丟棄該數據包,因此不會建立連接(TCP將重試幾次,當它跌落到可以設置的限制以下時).

#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP

#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP

#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP

這是我們粘貼中的腳本: 糊。DesdeLinux.net (Script anterior)

引用:


14條評論,留下您的評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   KZKG ^ Gaara 他說:

    這就是為什麼我在DDoS攻擊之前放一個教程why
    放置/解釋原因或問題(上一教程),並提供解決方案(本教程)🙂

    1.    透澤潘 他說:

      PERFECTO。

  2.   rat月 他說:

    兒童糖果...

  3.   雨果 他說:

    Buenartículo。

    我的兩分錢:

    對於UDP數據包,沒有SYN標誌,因為它是沒有狀態控制的協議。 然而,矛盾的是,確實存在NEW和ESTABLISHED狀態,因為iptables內部為此目的攜帶錶。

    另一方面,在我看來,使用DROP目的地而不是REJECT更好,原因有兩個:首先,在拒絕的情況下,它會將​​信息提供給可能的攻擊者,並且計算機也在使用其連接的一部分進行發送通知攻擊團隊。

    另一件事是,在ICMP協議(以及一般而言)的情況下,調節請求和響應很方便,因為我們可能在某些時候對ping通自己感興趣,並且通過啟用此功能,某人可以使用殭屍網絡並偽造“源”地址,對許多這些受感染的PC進行無窮無盡的ping操作,然後響應將發送到我們的服務器,如果沒有施加限制,則會崩潰。

    我通常允許ICMP類型0,3,8,11、12、XNUMX、XNUMX和XNUMX的輸入限制為每秒XNUMX個,最大突發為XNUMX或XNUMX個,其他所有內容都留給DROP。

    實際上,除了可以更好地調節的TCP協議外,所有其他協議都應通過最近的一種巧合來採用反DDoS措施加以保護。 出於好奇,本模塊的作者希望先放置更新,然後再放置更新。

    iptables確實非常靈活和強大,到目前為止,我建議做的但我尚未實現的唯一事情(儘管我已接近實現)是使psd模塊避免使用portcans,但即使一切我已經了解了此工具,但我認為還沒有開始。 😉

    無論如何,在這個世界上,您總是必須學習。

  4.   rat月 他說:

    雨果(Hugo)的要點在我們的詞彙表中有記載:像往常一樣,D學習...

    1.    雨果 他說:

      順便說一句,我已經有了psd模塊為我工作。 問題在於它最初依賴於不支持patch-o-matic的內核功能,因此默認情況下將其從netfilter的內置模塊中刪除。 因此,現在在Debian中使用psd擴展名,首先必須執行以下操作:


      aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
      module-assistant auto-install xtables-addons-source

      然後可以根據說明正常使用它:

      man xtables-addons

      1.    他說:

        雨果,為什麼不發布包含建議的iptables.sh來改善本文的腳本(很好),包括psd

        謝謝

  5.   尼爾森 他說:

    優秀的文章,出色的iptables和@hugo的出色解釋。 我越來越相信我還有很多東西要學習。

  6.   rat月 他說:

    並非只有你一個人,至少我...我想念一百萬...😀

  7.   米格爾·安赫爾 他說:

    大家好,感謝您的貢獻,但事實是我們很拼命,不知道現在該怎麼做,我們來此iptables就是因為您知道您是系統專家。
    我是西班牙反罷工來源社區的負責人,我們是為數不多的勉強站穩腳跟的人之一,我們每隔一段時間就會收到對計算機的持續攻擊和其他攻擊,持續不斷地刪除服務器但會對服務器造成麻煩一點點,但時間久了會造成更大的傷害。 我們的機器安裝在6.2 centos上
    並且我們有tcadmin來控制服務器。 您可以為我們提供一種配置,該配置甚至可以阻止這種類型的攻擊,我們已經絕望了,
    而且我們不知道該找誰,我們知道有兩個殭屍網絡,一個是自製的,另一個是費時費力的。 因此,我們一直遭受這種類型的殘酷攻擊近一年,如果您能幫助我們,我們將永遠感激,因為它現在已經不可持續了,我喜歡配置hoobie之類的服務器,而且我不是孩子,我向您保證這對我來說很多。 如果您希望我的ts3進行交流,或者希望我能幫忙的任何事情,以便我們在此發布結果以及為許多人的利益而解決的所有內容,那將是我向您保證的年度訪問量最高的博客因為令人難以置信的是它如何使這些攻擊ddos煩惱。 由於我們嘗試自行配置它並阻止了對計算機的訪問,因此我們不得不從BIOS對其進行格式化,因此請想像我們的狀態。
    我致以親切的問候。 我對缺少的博客表示祝賀,許多人都對此進行了更新。 -米格爾·天使-

    1.    KZKG ^ Gaara 他說:

      你好你好🙂
      Escríbeme a mi email, te ayudamos con mucho gusto 😀 -» kzkggaara[@]desdelinux[.]網

  8.   亞瑟·謝爾比 他說:

    大家好,直到我工作之前,都採用此腳本,非常好……只是一個疑問:“ recent”模塊是否不會降低性能?

    問候-謝謝/誰喜歡你?

  9.   何塞·塔皮亞 他說:

    出色的貢獻,我的朋友,我將帶您參考我們正在安裝的教程視頻的參考,該視頻來自哥斯達黎加

  10.   克里斯蒂安·馬菲爾·雷諾索 他說:

    HOLA,

    不能在多個端口上使用腳本嗎?
    我有一個遊戲服務器,並且在Web和遊戲服務器端口上都受到攻擊。

    問候。