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でのルール生成方法と自動処理の手段も確立出来たので、
ディストリビューションでスクリプトを統一する手ごたえも得られたのでヨシとしよう。
« 続きを隠す
2025年01月04日(土) - 18:54 | カテゴリ:
Linux
“ns-lab BB”はRHEL系・Debian系・SUSE系の3ディストリビューションを併用し、
基本となるOS設計は合わせつつも導入時期によって微妙に違いがあったりする。
差異があると言ってもインターネットに接続しているサーバは、
セキュリティ対策としてファイアウォールでACLを書いてパケット制御もしている。
このACL設定量がかなりの大きさとなっており、
システムによって差異はあるとしてもACLを6,000~45,000行ほど書いている。
全盛期は60,000~70,000行はあったのでコレでも最適化して登録内容を減らした方だが、
とは言っても多いのは否めない状況になっている (´・ω・`)
話が変わり、年末年始にSUSE系のOSをアップグレードした所、
firewalldのポリシーを自動更新するスクリプトでエラーが出る様になった。
詳細を調べたら”firewall-cmd –reload”を実行した時に25秒以上の時間を要してしまい、
d-bus応答不能と判断されてプロセス間通信をぶった切ってしまう様だった。
ややこしいのが、SUSE系でのみ問題が発生してRHEL系・Debian系は発生しない所だった。
フォーラムを読むとOS毎にfirewall-cmdとd-busの細かい実装差異がある様で、
今回はSUSE系で問題を踏み抜いた形となった。
また、timeコマンドを使って処理秒数を計測したところ、
ACLを6,000行ほど読み込む段階で約26秒を要しておりコレが原因と言えそうだった。
最終的に次の設定を行い、d-busのservice_start_timeoutを60秒(60000ms)に拡張しつつ、
ACLをipsetでまとめる事にした。
………
ACL処理のipset化とd-bus拡張を同時に実行したので何方が効いたのかわからないが、
テスト段階では正常動作しており丸一日は自動制御含め処理を継続出来た。
$ cat /etc/dbus-1/system.d/system-local.conf
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<limit name="service_start_timeout">60000</limit>
</busconfig>
|
ACLを自動生成するスクリプトの改修も年始に行い日時処理が無事通るのかテストを実施中。
こちらは土日に高負荷の処理が走るので、それを無事にオールクリアしたら記事にしようと思う。
iptablesのACLをipsetでグループ化する方法はググればいくらでも出てくるので省略するが、
今回の改修で地雷ポイントも分かって来たので、こちらも時間があれば書きたい。
« 続きを隠す
2025年01月01日(水) - 10:57 | カテゴリ:
雑談
あけましておめでとうございます。
2025年も、ITネタをお届けするnowsky system-labをよろしくお願いいたします。
昨年の抱負を確認すると、最終的に延期した物が大半となりました (´・ω・`)
KVMホスト刷新は移行先選定に時間を要し、コミケ冊子はリアルが忙しすぎて執筆出来ず、
検証用K8sを動作させようとホストサーバを準備したものの、
想像以上の構築負荷で一旦ペンディングにしました。
リアルが忙しかったのも事実ですが、
現実味を帯びた内容にすべきだったと少々反省です。
………
2025年は昨年以上に忙しくなる事が予想されるため、自宅サーバ・自宅ラックは抑え気味にしつつ、
とは言っても新しいオタク領域を開拓すべく違う事にもチャレンジしてみようと思います。
- KVMホスト刷新
ホストサーバにさくらの専用サーバを利用しており、コレが1年ちょっとでサービス終了予定です。
サーバが維持出来なくなると本職のスキル研鑽と趣味の両方に支障が出るため、
1年以内に移行先選定を行い具体的な移行作業に着手する必要があります。
今回の刷新を機に、肥大化したサービスの整理と場合によってはレンタルサーバへの移行、
インターネットと接するサーバにはCDN最適化やRTBHによる攻撃対策など、
今まで実施していなかった事も入れてみたいので、移行先を検討しつつ設計を進める予定です。
- イラスト入門
今までIT系の文字書きとしてオタク活動に勤しんでいましたが、
自鯖運用を開始して15年の節目となる今年を機に、違う領域にもチャレンジします。
他にもやってみたい事、やる必要のある事は大量にありますが身バレするので割愛して、
オタク活動の観点ではこちらに1年取り組んで2026年にどうなるか見る予定です。
今まで通りの自宅サーバ・自宅ラックも継続はしますし、
KVMホスト刷新によって空いたオタクリソースを別のリソースに振り分けると捉えて頂けると嬉しいです。
………
本職だけでは疲弊してしまう事にも気づいたので、以前からやってみたかった新たな事にもチャレンジし、
一昨年から続く変化の年の集大成かつ今後のオタク活動に向けた始動年にすべく邁進します。
そんな2025年は「始動開始、心穏やかに。」をキーワードに行きますので、よろしくお願いいたします。