こんにちわ。
以前投稿した記事で、サーバーが攻撃や障害で落ちてしまう場合の対策として、自動再起動をsystemdで設定する方法 を記事に書きました。
今回はそれと一緒に入れといた方法がいいセキュリティ対策の一つで、
サーバーを運用していると、海外からの不正アクセスやブルートフォース攻撃をされます。
パスワードがたまたま通ってしまったら大変なことになりますし
SSHへの不正ログイン攻撃は代表的な手口です。
この記事ではサーバーに不正にアクセスしようとする輩を 一網打尽にし、そんな攻撃を防ぐ強力なツールセキュリティ設定「Fail2Ban」 のインストール・設定方法、さらにIPブロック解除方法を紹介していきます。
Fail2Banは、ログを監視して一定回数の認証失敗が発生したIPアドレスを、自動的にファイアウォールでブロックするセキュリティツールです。
ブルートフォース攻撃やDDoS攻撃の軽減に役立ち、サーバーの安全性を大幅に高めることができます。
👉 自動再起動をsystemdで設定する方法の記事はこちらからどうぞ↓↓↓↓↓↓↓
Fail2Banのインストール手順
まずは以下のコマンドでFail2Banをインストールします。
dnf install fail2ban -y
ここで私は問題が発生。。。
インストール時にKilledと表示されインストールができませんでした。
ですが、大丈夫です。
以下の手順でインストールできるようになります。
もしインストール時にKilledと表示された場合は、メモリ不足の可能性があります。
その場合は スワップ領域を追加してください。
スワップ領域を追加する方法
スワップの有無を確認
まずは、スワップが割り当てれているか確認するために以下のコマンドを実行してください。
free -m
Swapが0MBならスワップ領域を追加する必要があります。
スワップ領域を追加します。(1GBで追加します)
・1GBのスワップファイルを作成
fallocate -l 1G /swapfile
・セキュリティ対策のため、ファイル権限を制限します。
chmod 600 /swapfile
・スワップとして初期化
mkswap /swapfile
・スワップを有効化
swapon /swapfile
bash -c 'echo "/swapfile swap swap defaults 0 0" >> /etc/fstab'
これで再起動後もスワップが有効になります。
では、準備が整ったので再度Fail2Banインストールを実行しましょう。
dnf install fail2ban -y
Fail2Banの自動起動と起動
以下のコマンドでFail2Banの自動起動と起動をしましょう。
# systemctl enable fail2ban --now
jail.localの設定
Fail2Banの設定はjail.localで設定します。
以下のコマンドでファイルを開きます。
vi /etc/fail2ban/jail.local
ファイルを開いたら以下を記載してください。
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
backend = systemd
maxretry = 5
findtime = 60
bantime = -1
ignoreip = 127.0.0.1 ::1 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
ご自身に合った設定をしてください。
maxretry : 許容する失敗回数(例:5回)
findtime : 失敗回数をカウントする時間(秒)
bantime : IPアドレスをブロックする時間(秒)
どれだけの間、アクセス禁止にするかを決めれます。
-1 なら無期限ブロックされるため、人為的に解除するまでアクセスできなくなるので注意
ignoreip : 除外したいIPアドレスを記載。特にbantimeを-1にする場合、
これ記載しとかないと数回アクセス失敗してbanされた時に解除がめんどくさいので、自身のIP・または会社などで使用してる場合は必ず入れておきましょう。
Fail2Banの再起動と動作の確認
設定反映のため再起動します。
systemctl restart fail2ban
現在の状態を確認します。
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 5
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd + _COMM=sshd-session
`- Actions
|- Currently banned: 2
|- Total banned: 3
`- Banned IP list: xx.xxx.xxx.xxx xx.xxx.xxx.xxx xx.xxx.xxx.xxx ...
上記で見ておきたい点
Currently banned
現在 ban(遮断)されている IPアドレス数が表示れます。(例だと2回)
「Currently banned」に数字が出ていれば、不正アクセスがブロックされていることがわかります。
Banned IP list
現在banされているIPアドレスのリスト
2点が確認できていたら良いと思いますよ。
誤ってブロックされてしまった時に、IPを解除する方法
パスワードミス・ignoreipに除外書いてない時にbanされてしまいました。。。
ですが、誤って自分のIPをブロックした場合は、以下のコマンドで解除できます!!
sudo fail2ban-client set sshd unbanip xxx.xx.xxx.xxx
まとめ
Fail2Banを導入することで、SSHへの不正アクセスを自動的に遮断し、サーバーを安全に保つことができます。
Fail2Banは不正アクセス対策に必須のツール
メモリ不足の場合はスワップ領域を追加
jail.local で細かいルールが設定可能
状況確認やIP解除コマンドも覚えておくと便利
サーバーのセキュリティは「攻撃を受ける前提」で強化することが大切です。
Fail2Banを導入し、安心してサーバー運用を行いましょう!
コメント