誰かが私のウェブサイトで強制バースト攻撃を試みた場合、どうすればそれらをブロックできますか?
理想的には、1秒間に多くのhttp/Apacheリクエストがある場合は、IPをブロックする必要があります。
fail2banは、これを行うように構成できます。ログファイルの正規表現の一致でトリガーするように構成でき、1分あたりの発生回数が多すぎる場合(秒の解像度になるかどうかはわかりませんが、1秒あたりに考えていたものに60を掛けるだけ)、クライアントIPをドロップできますiptablesパケットフィルターまたはその他の必要なアクションに追加します。または、iptables最近のモジュールを使用して、ここで行ったことをSIPブルートフォース攻撃に適合させて、Webサーバーで使用することができます。
# Deal with SIP brute forcing iptables -N SIP_WHITELIST # home iptables -A SIP_WHITELIST -s 1.2.3.0/24 -m recent --remove --name SIP -j ACCEPT # voip provider iptables -A SIP_WHITELIST -s 4.5.6.0/24 -m recent --remove --name SIP -j ACCEPT # remote location iptables -A SIP_WHITELIST -s 7.8.9.0/24 -m recent --remove --name SIP -j ACCEPT iptables -N SIP_BRUTEFORCE iptables -A SIP_BRUTEFORCE -m recent --set --name SIP iptables -A SIP_BRUTEFORCE -p udp --dport 5060 -m state --state NEW -j SIP_WHITELIST iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j LOG iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j DROP iptables -A INPUT -p udp --dport 5060 -m state --state NEW -j SIP_BRUTEFORCE
fail2ban は、これらの場合に実装が簡単なソリューションです。
次のようなblock-all-dem-noobs.conf
ファイルをfilter.d
ディレクトリに追加します
[Definition]
failregex = ^<Host> -.*"GET.*
翻訳:GETリクエストを見つけるためのRegExp
次に、jail.conf
に次のような新しいエントリを作成します
[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
翻訳:access.log
ファイルを調べ、5秒で100リクエストを行ったIPアドレスを600秒(10分)ブロックします
ただし、主な欠点の1つは、 [〜#〜] nat [〜#〜] edのユーザーがすべて1つのIPアドレスとして表示されるため、誤検知が発生する可能性があることです。
Apache mod_evasiveモジュールを構成できます。このモジュールは、要求されたIPとページのハッシュテーブルを保持することによって非常に基本的な機能を提供し、ターゲットページまたはサイトでしきい値レベルを超えると、403「禁止」エラーでIPを「ブロック」します。設定の詳細については、「 mod_evasiveでApache DDoS攻撃を停止する方法 」を参照してください。