fail2banで総当たり攻撃を防ぐ

2018年11月24日未分類

fail2banを設定して一定回数以上のログイン試行をしたipアドレスをbanするようにしました。

対象読者

  • webサーバーでBasic認証をしている人
  • 同じipからの攻撃が多い人

使用している環境

  • ubuntu 18.04.1
  • nginx 1.14.1

fail2banについて

fail2banを使うと一定回数以上ログインに失敗したipアドレスからの
アクセスをbanすることができるので、パスワードの総当たり攻撃を防ぐことができます。
今回はnginxに設定しました。

fail2banの設定

インストール

$sudo aptitude install fail2ban

でインストールできます。

設定ファイルの編集

設定ファイルは
/etc/fail2ban/jail.conf
になります。330行目あたりにnginxの設定がありますのでそちらを編集しました。

[nginx-http-auth]
port    = http,https
enabled = true
filter  = nginx-http-auth
logpath  = /var/log/nginx/*error*.log
maxretry = 1
bantime = -1
action = iptables-multiport[name=404, port="http,https", protocol=tcp]

logpathの方で監視するlogファイルを指定して、maxretryで何回ログインを失敗したらbanするか決めることができます。bantimeはbanしたipアドレスをいつまでbanし続けるか指定するものになり、-1とすると永遠にbanされた状態となります。actionではbanされた際に行う処理を書くことができます。sendmailコマンドでメールを送ることができる環境であれば、

action = iptables-multiport[name=404, port="http,https", protocol=tcp]
sendmail-whois[name=nginx, dest=example@gmail.com, sender=example@gmail.com, sendername="Fail2Ban"]

とすることでbanしたことをメールで受け取れるようになります。

起動

$sudo systemctl start fail2ban

で起動できます。

確認

$sudo fail2ban-client status nginx-http-auth

でbanされたipを確認することができ、

$sudo fail2ban-client set nginx-http-auth unbanip ban解除するipアドレス

とすることでbanを解除することができます。

メール
ちなみにメールの設定をするとこのようなメールが送信されます。

まとめ

今回はnginxでの設定をしましたが、sshなど他のサービスでも使うことができるので便利だと思います。
読んでいただきありがとうございました。

2018年11月24日未分類

Posted by 吉田周平