DigiLoog

PC関係の事なら何でもいけるそんな処

iptablesとfirewalldのACLをipset化した

2025年01月05日(日) - 16:49 | カテゴリ: Linux

前回書いたあらすじの通り自鯖ではiptablesとfirewalldのACLを自動生成しつつ、
日々インターネットから来るセキュリティリスクに備えている。
ACL行数が6,000~45,000行と非常に多いためルールを反映する際に時間を要したり、
CPU負荷が100%に張り付いてACL適用が終了しない事象が発生していた。

2025年始に発生した別エラーに対応をするついでにこれらの処理を最適化した所、
ACL提供時間の高速化と適用時のCPU負荷減少が出来たのでメモしておこうと思う。

過去資産の都合でRHEL系・Debian系はiptables、SUSE系はfirewalldで今回は実装した。
ACLをipset方式で書き出す方法は色々あり、
従来のipsetコマンドを利用したりfirewall-cmdコマンドを使う方法と、
生テキストでルールを直接出力しても保存・適用が出来る。

スクリプト改修をするにあたりポイントとなったのは次のコマンド類だった。

ディストリ RHEL系 Debian系 SUSE系
ルールタイプ iptables iptables firewalld
グループ化 ipset ipset firewall-cmd
インストール dnf install ipset ipset-service apt install ipset ipset-service zypper install ipset firewalld
ACL保存 ipset save >
/etc/sysconfig/ipset
netfilter-persistent save ipset save >
/etc/firewalld/ipsets/rules.xml
ACL自動復帰 ipset.service netfilter-persistent.service firewalld.service

ipsetを利用する上で特に重要なのは、ルール保存とサーバ再起動時のリストア処理の二つ。
ルール保存は上記コマンドを実行してルールを書き出せば良いのだが、
再起動時のリストアは環境によって千差万別なのでテスト含めた確認が必須となる。

firewalldかつfirewall-cmdの場合は所定のディレクトリに保存したxmlを自動で読み込むが、
iptablesかつipsetコマンドで保存している時は、別途サービスを有効化して自動復帰させる必要がある。
コレを忘れるとiptablesでルールをリストアする際にエラーが発生し、
状況によっては締め出しを食らう事になるので注意が必要だった。
………

改修後のスクリプト実行は以下の通り。
各々の環境で45,000~52,000行のACLを読み込ませているが実測2秒で適用完了できた。
改修前はCPU負荷が100%に張り付き10分待っても適用が完了しなかったので中々の速度と言える。

改修版スクリプトで3日間はサーバを連続稼働させているが正常稼働しており、
自動処理も継続出来ているので大丈夫そうだった。

RHEL

# time ./script.sh
real    0m1.510s
user    0m0.784s
sys     0m0.625s

# iptables -n -L | wc -l
87
# ip6tables -n -L | wc -l
55
# ipset list | wc -l
46153

Debian

# time ./firewall.sh
0.96s user 0.50s system 104% cpu 1.401 total

# iptables -n -L | wc -l
60
# ip6tables -n -L | wc -l
55
# ipset list | wc -l
52664

SUSE

# time ./firewall.sh
1.421u 0.590s 0:17.23 11.6%

# iptables -n -L | wc -l
333
# ip6tables -n -L | wc -l
350
# ipset list | wc -l
47491

………

急遽発生した冬休みの自由研究ならぬ冬休みのスクリプト改修だったが、
今までに抱えていたCPU負荷課題や処理速度の問題を解決するベストの結果となった。
今回の改修によってfirewalldでのルール生成方法と自動処理の手段も確立出来たので、
ディストリビューションでスクリプトを統一する手ごたえも得られたのでヨシとしよう。





  • 応援中

    D.C.5 Sweet Happiness ~ダ・カーポ5~スイートハピネス 2025年3月28日(金)発売予定 予約受付中
    バカップル・サプリメント