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. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   KZKG ^我愛羅

    そして、これが私がDDoS攻撃の前にチュートリアルを置いた理由です😉
    理由や問題を説明/説明し(前のチュートリアル)、解決策を提供します(このチュートリアル)🙂

    1.    ディアゼパン

      完璧。

  2.   コラツキ

    子供のお菓子..。

  3.   ヒューゴー

    良い品

    私のXNUMXセント:

    UDPパケットの場合、状態制御のないプロトコルであるため、SYN​​フラグはありません。 ただし、逆説的に、iptablesはこの目的のために内部的にテーブルを保持するため、NEW状態とESTABLISHED状態が存在します。

    一方、私の意見では、XNUMXつの理由から、REJECTの代わりにDROP宛先を使用する方が良いと思います。XNUMXつは、拒否の場合、攻撃者の可能性のある人に情報を提供することと、コンピューターが接続の一部を使用して送信することです。攻撃チームへの通知。

    もうXNUMXつのことは、ICMPプロトコルの場合(および一般的に)、要求と応答の両方を規制するのが便利なことです。これは、おそらくある時点で自分自身にpingを実行することに関心があり、この機能を有効にすることで、誰かがボットネットを使用して偽造する可能性があるためです。これらの侵害されたPCの多くに終わりなくpingを送信するための送信元アドレス。応答はサーバーに送信され、制限が課されていない場合はサーバーが折りたたまれます。

    私は通常、ICMPタイプ0,3,8,11、12、XNUMX、XNUMX、およびXNUMXを許可し、入力制限はXNUMX秒あたりXNUMX回、バーストは最大XNUMX回またはXNUMX回で、その他はすべてDROPに任されています。

    実際、より適切に規制できるTCPプロトコルを除いて、他のすべてのプロトコルは、最近のタイプの偶然によって、DDoS対策で保護する必要があります。 これに関して、好奇心として、このモジュールの作成者は、最初に更新を配置し、次にセットを配置することを好みます。

    Iptablesは非常に柔軟で強力です。これまでのところ、私が提案し、まだ達成していない唯一のことは(達成に近づいていますが)、psdモジュールがポートスキャンを回避できるようにすることですが、これについて学んだことはすべてあります。ツール、私はまだ表面を引っかいたとは思わない。 😉

    とにかく、この世界では常に勉強しなければなりません。

  4.   コラツキ

    良い点ヒューゴ、私たちの用語集のためにファイルに: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.    アレジ

        ヒューゴ、psdを含むこの投稿のスクリプトを改善するための提案を含むiptables.shを公開してみませんか(これは良いことです)

        感謝

  5.   ネルソン

    @hugoからの優れた記事、優れたiptables、優れた説明。 私はまだ学ぶことがたくさんあるとますます確信するようになっています。

  6.   コラツキ

    それはあなただけではありません、少なくとも私は...私は百万を逃しています...😀

  7.   ミゲル·アンヘル

    みなさん、こんにちは。貢献に感謝しますが、真実は私たちが必死であり、今何をすべきかわからないということです。あなたがシステムの専門家であることがわかっているこのiptablesのためにあなたのところに来ます。
    私はカウンターストライクソースのスペインのコミュニティのリーダーであり、私たちはまだかろうじて立っている数少ない人の6.2人です。私たちはマシンへの絶え間ない攻撃やその他の攻撃を一定の間隔で受けており、絶え間なく除去されますが、サーバーは少しですが、時間のあるサーバーはより多くのダメージを与えます。 私たちのマシンはXNUMXセントにマウントされています
    サーバーを制御するtcadminがあります。 この種の攻撃を少しでも止めることができる構成を作ることができます、私たちはすでに必死です、
    誰に頼ればよいかわかりません。3つのボットネットがあり、XNUMXつは自家製で、もうXNUMXつは時間と労力を支払っています。 このように、私たちはこのタイプの残忍な攻撃にほぼXNUMX年間耐えてきました。私たちを助けてくれれば、今は持続不可能であるため、永遠に感謝します。私はhoobieのようなサーバーを構成するのが大好きです。私は子供ではありませんが、これは私にとって多くのことです。 私のtsXNUMXに話してもらいたい場合、または私たちを助けてくれれば私が好きなことを何でもして、結果と多くの人々の利益のために解決されたすべてをここに投稿します。 ddos。 自分で設定しようとし、マシンへのアクセスをブロックしたので、バイオからフォーマットする必要があったので、私たちがどのようになっているか想像してみてください。
    心からの挨拶を送ります。 そして、行方不明のブログをおめでとうございます。多くの人がこれで更新されたブログを持っています。 -ミゲルエンジェル-

    1.    KZKG ^我愛羅

      こんにちは、お元気ですか🙂
      Escríbeme a mi email, te ayudamos con mucho gusto 😀 -» kzkggaara[@]desdelinux[.]net

  8.   アーサーシェルビー

    こんにちはみんな、今まで私が働いているので、このスクリプトをとってください、ところで非常に良いです...ただXNUMXつの疑問:«最近の»モジュールはパフォーマンスを低下させませんか?

    挨拶-ありがとう/誰があなたを好きですか?

  9.   ホセ・タピア

    私の友人の素晴らしい貢献、私たちがマウントしているチュートリアルビデオのリファレンスにあなたを入れます、コスタリカからの抱擁

  10.   クリスチャン・マーフィル・レイノソ

    こんにちは、

    複数のポートでスクリプトを使用できませんか?
    私はゲームサーバーを持っていて、Webポートとゲームサーバーポートの両方で攻撃を受けます。

    挨拶。