fail2banでnginx-http-auth(Basic認証の総当り攻撃対策)を有効にする

投稿者: | 2014/03/24

前々回前回とfail2banによるSSH攻撃対策について記事をアップしてきました。今回もfail2banネタです。
fail2banはSSHだけでなく、様々な攻撃に対しても防ぐことができます。今回はその中の一つとして、nginxのBasic認証の攻撃を防ぐ設定を行います。
Basic認証は多くのブラウザで使えることと、簡単に認証設定が行えるため重宝することが多いですが、ユーザ名とパスワードとその間にセミコロン(:)を入れた文字列をBASE64でエンコードするだけなので、認証の強度としては弱く、SSLによる暗号化をしないと途中で盗聴されてパスワードがバレてしまいます。また、パスワード認証なので、総当りでユーザ名とパスワードを入力された場合でも、短期間で認証が突破されてしまう可能性があります。
したがって、Basic認証でセキュリティ強度を上げる場合には、ユーザ名とパスワードの文字数を多くし、予測できないようにすることと、総当り攻撃をされないようにある程度(回数)認証に失敗したらそのIPアドレスを弾く(BAN)するように設定することが重要です。
fail2banでBasic認証のセキュリティ強度向上の設定を行います。

Basic認証のフィルタを有効にする

/etc/fail2ban/jail.confでnginxのBasic認証のフィルタを有効にします。

fail2ban再起動

フィルタが有効になっているかを確認する

serviceコマンドから確認する

nginx-http-authが表示されていれば有効になっています。
もし、設定が有効になっていない場合はログ(/var/log/fail2ban/fail2ban.log)から原因を探ります。

ログから確認する

/var/log/fail2ban/fail2ban.log

上記のようなログが残っていればnginx-http-authは設定されているはずです。

実際にBANしてみた

SSHのときと同じようにiptablesにIPアドレスが追加されるだけです。

sendmailアクションが有効になっている場合は下記のようなメールが送信されます。

Apacheの場合

nginxの場合はnginx-http-authでしたが、Apacheの場合はapache-authです。設定方法は同じです。

最後に

fail2banでBasic認証の総当り攻撃を防ぐことができました。
これでひと通りfail2banの設定は大丈夫かと思います。
他にもフィルタなどtipsが出てきたら記事にしたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*