ファイアウォール(nftables)

 Rocky Linux 8(RHEL8 以降)で、firewalldおよびiptablesで特定のリストからのアクセス制限が動作しなくなった(ipsetユーティリティが使えなったのが原因?自分の力量不足?エラーは出ないが思った通りに動作しないので最悪)ので、nftablesでファイアウォールの設定を行いました。

アドレスリストの取得スクリプトの作成

IPアドレスの情報は、以下から入手
 ・ http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
 ・ https://ipv4.fetus.jp/ru.txt

ブロックリストは、以下の国のIPアドレスをブロックする。
 ・CN 中華人民共和国
 ・KP 北朝鮮
 ・RU ロシア連邦

・ /etc/nftables/country_list_ipv4 日本国内のIPv4アドレス (make_country_list_ipv4.sh)
・ /etc/nftables/country_list_ipv6 日本国内のIPv6アドレス (make_country_list_ipv6.sh)
・ /etc/nftables/block_list_ipv4   IPv4ブロックリスト   (make_block_list_ipv4.sh)
・ /etc/nftables/block_list_ipv6   IPv6ブロックリスト   (make_block_list_ipv6.sh)

nftables設定ファイルの作成

(注意事項)
 ・ IPブロックリストからの接続は、すべて拒否
 ・ smtp(25)、http(80)、https(443)は、すべてのIPアドレスから接続許可
 ・ ssh(22)は、国内のIPアドレスからのみアクセス許可

(IPアドレスでの個別設定例)
  ip saddr 192.168.1.0/24 tcp dport 22 accept             (accept、drop、reject)
  ip saddr 192.168.1.0/24 accept                    (accept、drop、reject)
  ip6 saddr N:N:N:N:N:N:N:N/128 tcp dport 22 accept (accept、drop、reject)
  ip6 saddr N:N:N:N:N:N:N:N/128 accept        (accept、drop、reject)

nftablesパッケージの起動&確認方法

(注意) 必ずブロックリストに一時的にテスト接続のIPアドレスを追加し動作確認を行うこと!!

デバッグ

動作に問題がある場合は、ログを出力し確認します。

・ ログの設定(rsyslog)

rsyslogを再起動します。

・ nftablesの設定例
 ip saddr @block_list_ipv4 log prefix “nftables-drop: “ reject

(注意)prefixで指定する文字列をrsyslogで設定しログファイルに出力するので、同じ文字列を含むものを指定すること。

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