CentOS / RHEL8でSSHを保護するためにFail2Banをインストールする方法


Fail2banは、無料のオープンソースで広く使用されている侵入防止ツールで、ログファイルをスキャンして、パスワードの失敗が多すぎるなどの悪意のある兆候を示すIPアドレスを探し、それらを禁止します(IPアドレスを拒否するようにファイアウォールルールを更新します) 。デフォルトでは、sshdを含むさまざまなサービス用のフィルターが付属しています。

この記事では、fail2banをインストールして構成し、SSHを保護し、CentOS/RHEL8に対するブルートフォース攻撃に対するSSHサーバーのセキュリティを向上させる方法について説明します。

CentOS / RHEL8へのFail2banのインストール

fail2banパッケージは公式リポジトリにはありませんが、EPELリポジトリで入手できます。システムにログインした後、コマンドラインインターフェイスにアクセスし、図のようにシステムでEPELリポジトリを有効にします。

# dnf install epel-release
OR
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

その後、次のコマンドを実行して、Fail2banパッケージをインストールします。

# dnf install fail2ban

SSHを保護するためのFail2banの構成

fail2ban構成ファイルは/ etc/fail2ban /ディレクトリーにあり、フィルターは/etc/fail2ban/filter.d/ディレクトリーに保管されています(sshdのフィルター・ファイルは/etc/fail2ban/filter.d/sshd.confです) 。

fail2banサーバーのグローバル構成ファイルは/etc/fail2ban/jail.confですが、将来パッケージをアップグレードする場合に上書きまたは改善される可能性があるため、このファイルを直接変更することはお勧めしません。

別の方法として、jail.localファイルで構成を作成して追加するか、/ etc/fail2ban/jail.d /ディレクトリの下にある個別の .conf ファイルを作成することをお勧めします。 jail.localで設定された構成パラメーターは、jail.confで定義されているものをすべてオーバーライドすることに注意してください。

この記事では、次のように/ etc/fail2ban /ディレクトリにjail.localという別のファイルを作成します。

# vi /etc/fail2ban/jail.local

ファイルを開いたら、次の構成をコピーして貼り付けます。 [DEFAULT] セクションにはグローバルオプションが含まれ、 [sshd] にはsshdjailのパラメーターが含まれます。

[DEFAULT] 
ignoreip = 192.168.56.2/24
bantime  = 21600
findtime  = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd] 
enabled = true

上記の構成のオプションについて簡単に説明しましょう。

  • ignoreip: specifies the list of IP addresses or hostnames not to ban.
  • bantime: specified the number of seconds that a host is banned for (i.e effective ban duration).
  • maxretry: specifies the number of failures before a host gets banned.
  • findtime: fail2ban will ban a host if it has generated “maxretry” during the last “findtime” seconds.
  • banaction: banning action.
  • backend: specifies the backend used to get log file modification.

したがって、上記の構成は、IPが過去5分間に3回失敗した場合、6時間禁止し、IPアドレス192.168.56.2を無視することを意味します。

次に、今のところfail2banサービスを開始して有効にし、次のsystemctlコマンドを使用してサービスが稼働しているかどうかを確認します。

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl status fail2ban

fail2ban-clientを使用した失敗および禁止されたIPアドレスの監視

sshdを保護するようにfail2banを構成した後、fail2ban-clientを使用して、失敗したIPアドレスと禁止されたIPアドレスを監視できます。 fail2banサーバーの現在のステータスを表示するには、次のコマンドを実行します。

# fail2ban-client status

sshd jailを監視するには、を実行します。

# fail2ban-client status sshd

fail2ban(すべてのjailとデータベース)でIPアドレスの禁止を解除するには、次のコマンドを実行します。

# fail2ban-client unban 192.168.56.1

fail2banの詳細については、次のmanページを参照してください。

# man jail.conf
# man fail2ban-client

これでこのガイドは要約されます。このトピックについてご質問やご意見がございましたら、下記のフィードバックフォームからお気軽にお問い合わせください。