2025年01月25日(土) - 22:14 | カテゴリ:
Linux
以前、自宅サーバ上にADドメコンやOpenLDAP基板を構築したものの放置していたが、
構築ナレッジの蓄積とスキル習得のためにADドメコンを作り直す必要が出てきたため、
Samba4でソースからビルドしたバイナリを用いてADドメコンを再構築する事にしてみた。
環境に利用するRHELの構築とSamba4のテストビルドも終わったため、
ADドメインのフォレストを作りテストに着手中。
挙動に癖が強い上、ドメインレベルがWindows Server 2008R2相当に限定されてしまうものの、
テスト利用する位なら問題無く動く様だった。
まだ、構築テストの域なので細かい確認は出来てないが、
確認する事自体が今回の目的でもあるので気長に進めていこうと思う。
ソースコードからのビルドは中々大変なのでコレも書き溜めて何処かで出したいと思う。
2025年01月13日(月) - 20:58 | カテゴリ:
Linux
RHEL8で開発用パッケージ(development)をインストールする時は、
powertoolsリポジトリを有効化してdnfコマンドを利用するとdevelを参照出来る。
RHEL9ではpowertoolsが存在せずどれを参照すれば良いのかと思いつつも、
EPELなどサードパーティリポジトリで回避しつつ誤魔化していた。
昨日、RHEL9公式リポジトリ縛りでlmdb-develをインストールしようとしたのだが、
lmdb-develが存在せずインストールが出来なかった。
RHEL9にはpowertoolsが存在しないため何処からインストールした物かと思いつつ調査したところ、
powertoolsはCodeReady Linux Builder (CRB)という名前に変わっていた様で、
そちらのリポジトリを有効化するとインストール出来た。
“/etc/yum.repos.d/redhat.repo”の抜粋は次の通り。
初期状態は”enabled = 0″で無効化されていた。
[codeready-builder-for-rhel-9-x86_64-rpms]
name = Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel9/$releasever/x86_64/codeready-builder/os
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/example-key.pem
sslclientcert = /etc/pki/entitlement/example.pem
metadata_expire = 86400
enabled_metadata = 0
sslverifystatus = 1
|
有効化は”enabled = 1″に書き換えるか、”dnf config-manager –enable repository”でフラグを立てると、
次回以降のdnfコマンド実行時に新しいリポジトリを参照する様になる。
そろそろRHEL10がリリースされる筈だし、
最近はLinuxを弄る機会が減っていたので良いリハビリになった。
弄らないと勘も忘れてしまう物なので、少しずつでもコマンドを叩く機会を増やして行きたい。
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でのルール生成方法と自動処理の手段も確立出来たので、
ディストリビューションでスクリプトを統一する手ごたえも得られたのでヨシとしよう。
« 続きを隠す