仮想環境があり、Kali 2020を使用してUbuntuサーバーのポート53にSYNフラッド攻撃を行っています。
この攻撃に対する対策は、SYN、ACKであるSYNパケットへの応答を制限またはブロックすることであることに気付きました。
しかし、どうすればiptablesでこれを行うことができますか?
そのような攻撃を防ぐために他に何をすべきですか?
SYN、ACK応答をブロックすることは、SYNフラッディングを回避する正しい方法ではありません。すべてのTCP -way-handshake はSYNで始まります。SYN、ACK応答をブロックすると、クライアントはサーバーに正常に接続できなくなります。
私はこの Hakin9の記事 でSYNフラッディングと防止技術について読むことをお勧めします。重要なメカニズムは、iptablesルールセットで解決する場合、単一のIPからのSYNリクエストのレートを制限することです。以下は適切な構成ですが、単一のIPアドレスから多数の正当な要求を取得する場合(たとえば、NATの背後に大規模なネットワークがある場合)はもちろん、誤検知が発生する可能性があります。
# iptables -A INPUT -p tcp -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP
# iptables -A INPUT -p tcp -m state --state NEW -m recent --set -j ACCEPT
レート制限は賢明な方法です。
独自のiptables
ルールを作成するときは、logドロップ/拒否されたパケットもデバッグできるようにする必要があります調査します。ログがいっぱいにならないように、--limit
オプションを使用します。これにより、設定を調整し、ルールが実際に意図したとおりに機能することを確認できます。
提案:インストール CSF + LFD 。
これはFail2banに似たツールで、事前に作成された多数のiptablesルールが付属しています。また、iptables
を使用して攻撃者をブロックすることにより、SSH、SMTPなどに対するブルートフォース攻撃から保護します。また、送信元IPアドレスを一時的にブロックすることにより、ポートスキャンの試行を阻止します。
ただし、大規模な攻撃のターゲットになると、サーバーは被害を受け、停止する可能性があります。 DDOS攻撃はまれではなく、常に大企業を標的にしているわけではなく、小規模サイトでもあります。競合他社があるようなものです。 Cloudflareなどの企業が人気を博しているのはそのためです。
ポート53について言及しているので、DNSサーバーまたはリゾルバーが待機していることになります。次に、サーバーが reflection attack で無意識の共犯にならないように注意する必要があります。
たとえば、リゾルバとしても機能するサーバーがありますが、ポート53はインターネットに公開されていません。これは、tun0
インターフェースのプライベート範囲(172.20.xx)のIPアドレスにバインドされているため、 VPNクライアントだけがそれを表示して使用できます。
セキュリティ体制を改善する最も明白な方法の1つは、攻撃面を減らすことです。これは、可能な限りいくつかのポートを公開し、アクセスを可能な限り制限することを意味します。たとえば、該当する場合はIPアドレス範囲をホワイトリストに登録します。そのDNSサービスが必要ない場合は、シャットダウンするか、公開しないでください。それ以外の場合は、乱用されないようにしてください。
サーバーに対してnmap
のようなポートスキャナーを使用し、会社の内部および外部からすべてのポート1〜65535を確認し、どのポートが開いていると表示されるかを確認することもお勧めします。多くのサービスが不必要に公開されていますが、これは、システム管理者が適切なファイアウォールルールを確認して思いついたわけではないためです。たとえば、ほとんどの場合、ポート3306(mysql)を公開する必要はありません。 SQL Server(1433)やOracle(1521)も同様です。通常、これらのポートはLANの外からは見えません。
実際にサーバーに接続する必要があるリモートクライアントがある場合は、それらの(静的)IPアドレスをホワイトリストに登録する必要があります。 VPNトンネルも解決策となります。
->注意:CSF + LFDまたは同様のツールをインストールする前にテストを行ってください。これらは明らかに偵察活動を妨害するためです。または、サービスを一時的に停止します。
もう1つ:サーバーにパブリックIPv6アドレスがある場合、iptables
はIPv6でポートスキャンテストも実行する必要があります。 IPv4のみ。対応するIPv6はip6tables
です。あなたがしなければならないのは、多かれ少なかれIPv4ルールをIPv6に複製することです。 2つのプロトコルには違いがあるため、多かれ少なかれ言います。