このブログでもお世話になっている、「ConoHa」の応援団長、美雲このはの公式 Twitter でこのような告知がありました。
ConoHa などのVPSは簡単にサーバーが作れるのはメリットですが、その分セキュリティ対策も必要になってくるので、早速試してみました。
サーバーを追加してみた
まずは公式マニュアルを確認してみます。
動作を確認している OS は下記のようです。
- CentOS 7.x以降
- Ubuntu 16.04以降
- Debian 9.x以降
- Fedora 29以降
- openSUSE-15.x以降
OS イメージはもちろん、WordPress などのアプリケーションイメージも、上記の OS を採用していれば利用できそうです。
アプリケーションイメージは今日時点でこれだけありました。
今回は、アプリケーションイメージの LEMP(PHP)を利用してみます。
Fail2ban を利用するには、スタートアップスクリプトのテンプレートを選択します。
Fail2ban の動作確認してみた
とりあえず5回間違えてみます。
# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
(中略:10分以内に5回認証に失敗)
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
# ssh [email protected]
ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
このように、Ban されてこれ以降は Connection refused で接続できなくなりました。
サーバー側もこのように、ブロックしたIPが記載されています。
# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 14
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 2
|- Total banned: 2
`- Banned IP list: aaa.aaa.aaa.aaa bb.bbb.bb.bbb
詳細は公式ガイドに記載がありますが、例えば BAN を解除するには下記のコマンドを入力します。
fail2ban-client set sshd unbanip IPアドレス
まとめ
VPSでグローバル公開した時に課題になる、総当たり攻撃について、Fail2ban のスタートアップスクリプトを使用することで手軽に対策できることを確認できました。
もちろん、セキュリティ対策をしっかりすると、ポートを変えたり、特定のIPからを制限したり、時間をかけるともっとできることはあるのですが、
手軽にVMを立てられるConoHaにはぴったりな対策法だと思いました。