httpのディレクトリトラバーサル攻撃に対する設定¶
apache-httpdへのディレクトリトラバーサル攻撃(意図しないアクセスできるアドレス)に対する設定を行います。
例えば、特定のアクセスできるアドレスの一個上のディレクトリや/adminを付加した画面へ管理者の意に反して
意図せずアクセスできるか試すといったもので、辞書などを利用した大量の404や403アクセスが発生します。
設定¶
アクセスログでします。
アクセスログで403,404を調査する¶
httpdへのアクセスログ監視設定はデフォルトで下記の場所にあります。
この解析設定はデフォルトでは存在しないので、新規に作成します。
注意点として、正しく表示されるページに含まれるコンテンツ(画像ファイルやfavicon.ico、robots.txt)
がリンク切れしている場合にも同様に404が表示されるため、これらを例外として登録します。
これを行わない場合、コンテンツのパスを誤ったページを表示すると1ページだけでも画像ファイルやcss
ファイルごとに404が大量に記録され即時ban……ということにもなりかねません。
- /etc/fail2ban/filter.d/apache-404.conf
特定の文字列を検出時にレコードを無視する場合、下記に設定を行う。[Definition] failregex = ^<HOST>.*"(GET|POST).*" (403|404) .*$ ignoreregex = \.(?i)(jpe?g|gif|png|bmp|pdf|js|css|woff|eot|ttf|ico|txt|xml|swf|xlsx?|docx?|pptx?)
スタンスとしては個別のコンテンツファイルは無視し、.htmlや.phpなどの本体ファイルを
対象とするように除外を設定します。
次のアクセス制限の設定を行います。以下のファイルに追記していきます。
- /etc/fail2ban/filter.d/jail.local
[apache-404] enabled = true port = http,https filter = apache-404 logpath = /var/log/httpd/*access_log action = iptables-multiport[name=http, port="http,https", protocol=tcp] sendmail-whois[name=http, dest=root, sender=fail2ban@localhost, sendername="Fail2Ban-HTTPD"] maxretry = 10 findtime = 60 bantime = 86400
ここでは「apache-404」という名前で設定を作り有効化します。
フィルタは前述の「filter.d/apache-404.conf」を使用します。
iptablesでポリシーを追加する際に使用する「名前、ポート、プロトコル」を指定します。
次の行では、banした際に送信するメールの名前、送り先、送信者アドレス、送信者名を指定します。
次に監視するログのパス、banする間隔と試行回数(60秒ごとに10アクセス)と時間(86400)を指定します。
設定の有効化¶
fail2ban設定を再読み込みします。
# systemctl reload fail2ban
動作確認¶
iptablesにポリシーが追加されていることを確認します。
# iptables -L -n Chain f2b-httpd (1 references) target prot opt source destination REJECT all -- xxx.xxx.xxx.xxx 0.0.0.0/0 reject-with icmp-port-unreachable …… … RETURN all -- 0.0.0.0/0 0.0.0.0/0