Red Hat Enterprise Linux 9 のファイヤーウォール設定

conoha Linux
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

ここまで ConoHa の VPS に RHEL9 をインストールする方法と、初期設定の解説をしてきました。

今回はサーバー構築において、最も大事な部分であるファイヤーウォールの設定をしていきます。

ファイアーウォールの設定方針

以前までは firewalld を使用した ipset でアクセスの可否をリスト管理していましたが、RHEL9 から ipset が廃止になったという事なので nftables で運用していきます。

IP アドレスのリストは、管理者用(admin)と、日本国内(domestic)の 2 種類を用意し、下記の方針で設定します。

  • 管理者のみアクセス可能:ssh, 後からインストールする予定の OLS 管理画面(TCP 7080)
  • 日本国内からのみアクセス可能:SMTPS, IMAPS
  • IP アドレスによる制限なし:HTTP, HTTPS, SMTP

また fail2ban を導入し、アクセスログに残された不正アクセスの痕跡をもとに、自動的に遮断するように設定します。

nftables の設定

nftables のインストール

RHEL9 や CentOS Stream 9 では最初から nftables が組み込まれていますが、AlmaLinux 9 や Rocky Linux 9 の場合は入っていないので、インストールから行ってください。

管理者用の IP アドレスリストを作成

nftables の設定ファイルは /etc/nftables にありますが、ここにリスト用のディレクトリ(list)を作成します。そして、その中に管理者用の IP アドレスリスト(admin)を作成します。

admin を定義し、自宅と職場の IP アドレスを登録しました。

※コメントはアドレスと同じ行の後ろに書く分には問題ありませんが、コメントだけの行にしてしまうとエラーになります。

日本国内の IP アドレスリストを作成

次に、日本国内に配布されている IPv4 アドレスの表からリスト(domestic)を作成します。

スクリプトは下記のサイトを参考に作成しました。

nftablesでSSHを日本国内からの接続に限定する (CentOS 8) | 稲葉サーバーデザイン
はじめに以前、国別のIPアドレスリストを利用して、CentOS 7で、ipset と iptables で SSH を日本国内からの接続に限定する設定方法をまとめました。・ipsetとiptablesでSSHを日本国内からの接続に限定する ...

パーミッションを変更し、スクリプトを実行すると、リストが作成されています。

nftables のテーブルを作成

nftables のテーブルファイル(/etc/nftables/filter.nft)を新規に作成します。

※管理者のみに開放している 7080 ポートは、OpenLiteSpeed を導入しない方には不要な設定です。適宜調整してください。

nftables - ArchWiki

filter.nft を読み込む

nftables の設定ファイル(/etc/sysconfig/nftables.conf)を修正して、filter.nft を読み込むようにします。

サービスの起動

まず、現在動いている firewalld の停止と、自動起動を解除する。

次に、nftables の起動と、自動起動を設定する。

テーブルの確認

nftables のテーブル一覧を表示します。

nftables のルールセットを表示します。

先ほど作成した filter.nft に、admin と domestic の IP アドレスリストが反映されていることが確認できました。

fail2ban の設定

fail2ban のインストール

アクセスログから不審なログインを監視する fail2ban をインストールする。

※whois コマンドは入れなくても動きますが、Ban した際にメールで Whois 情報を送る場合は必要になります。

設定ファイルを作成

設定ファイルを直接編集するのではなく、jail.local ファイルを作成してオーバーライドさせます。

連携先をiptables から nftables に変更します。

標準の設定ファイル(/etc/fail2ban/jail.conf)に対して、上書きしたい部分だけを記述すれば OK です。

Fail2Banを使って不正なアクセスを遮断する(全自動)
Fail2BanFail2Banはログを監視し、おかしなアクセスがあったらBAN、指定時間を過ぎたらUNBANを自動で実行してくれるツールです。Fail2Ban自体に遮断する機能はありませんが、iptablesやfirewalldと連携して

※繰り返しアタックしてくる再犯者をブロックする設定(recidive)を最初から入れると fail2ban の設定エラーになる場合がありました。その場合は recidive の設定は外して運用し、後述する f2b-table が作られてから追加すると上手くいきました。

起動オプションを修正

起動時のオプションを確認すると firewalld を呼ぶようになっているので、ここも修正していきます。

設定を上書きしたい部分だけを記入して保存します。

Using systemd to bind fail2ban to nftables < System | The Art of Web
Systemd configuration instructions for binding fail2ban.service so it starts, stops and restarts with nftables.service.

fail2ban を起動する

動作確認

nftables に f2b-table のテーブルが追加されたことを確認します。

確認のため、一時的に ssh のポートを全開放に変更。暫く経ってから確認したところ、ssh への侵入をブロックした形跡が確認できた。

fail2ban 側のステータスも出力して、nftables と同じ内容であることが確認できました。

以上で最低限のファイヤーウォールの設定は一旦完了です。

定期的にログを確認し、ルールの見直しや調整を行ってください。


次の記事

コメント

タイトルとURLをコピーしました