AWS EC2 の Amazon Linux 2023 で fail2ban する

EC2で稼働しているAmazon Linux 2023で、やむを得ずSSHの接続元IPアドレスを制限できないサーバがあり、ブルートフォース攻撃などのリスクがありました。
このような不正アクセスのリスクを緩和するために、むかし利用していた fail2ban をインストールしようと思い立ちました。
Webで検索したところ、EPELリポジトリから fail2ban をインストールするような記事ばかりですが、2025年5月現在、Amazon Linux 2023 の標準リポジトリから、fail2ban のパッケージをインストールすることが可能です。

いろいろ検索していたところ、AWSの re:Post で以下のような記事がありました。

Amazon Linux 2023 (AL2023) は EPEL をサポートしていません。詳細については、「Extra Packages for Enterprise Linux (EPEL)」を参照してください。

そして個人的にもEPELはできるだけ使わないようにしています。
標準のリポジトリを眺めたら、普通に fai2ban パッケージがありました。

これをインストールしてみます。

依存関係でたくさんのパッケージがインストールされます。
不正アクセスと思われる接続元を一定期間Ban(接続できないように)するために、firewalld がインストールされます。
最初はこれに気づかずに、公開していたWebサイトが閲覧できなくなって焦りました。
firewalld の使い方は検索するとたくさん出てくるので割愛します。
また、fail2ban もインストールさえできてしまえば、使い方はたくさん出てくるので、今回試した内容だけお伝えします。
設定ファイルは、/etc/fail2ban にあります。

fail2ban.conf に基本的な設定がされており、以下のように記載があります。

基本的には、このファイルは変更しないでね、みたいなことが書いてあります。
どうやら、jail.d ディレクトリに、対象にしたいサービスごとのファイルを作成するようです。
今回はSSHのアタックを防ぎたいので、sshd.local というファイルを作成しました。

ファイルの中身はこんな感じで書いてみました。

sshd を監視対象にして、この設定をenable(有効)にして、ignoreself(自分は除外)して、findtime(カウントする期間)を60分、maxretry(失敗してリトライした回数)を3回、Ban(接続拒否)する時間を30分としてみました。

これは運用していくなかで、見直していく感じかと思います。
で、fail2ban を起動してみます。

起動して、しばらくして以下のコマンドで確認してみます。

ちゃんとBanしてくれているようです。(xxxはマスクしています)
動作に問題ないようなら、自動起動するよう設定します。

以上、Amazon Linux 2023 では EPELリポジトリは使えないことと、標準リポジトリから fail2ban パッケージをインストールして使えることを覚えました。
他にもメールサーバなど、セキュリティグループで接続元IPアドレスを制限できないケースで使えそうです。

ちなみに普段はセキュリティグループでがっちり接続元IDアドレスを制限しているので、EC2でファイアウォールとか気にしたことがなかったのですが、fail2ban 使うと firewalld も起動します。
こいつがデフォルトで、dhcpv6-client 、mdns 、ssh しか許可していないので、気を付けてください。
こちらも詳細な手順は割愛しますが、以下のように確認できます。

Webサーバとして公開しているなら、HTTP(80/tcp) と HTTPS(443/tcp) を許可しておきましょう。

コメントを残す

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

PAGE TOP