2022年10月22日(土) - 20:55 | カテゴリ:
Linux
5月にリリースとなったRHEL9を弄って感触を試しているのだが、
Ansibleから設定変更しようとしたら嵌ったので備忘録。
“ns-lab BB”はRHEL7系(CentOS7)を始め複数のディストリビューションを使っており、
互換性維持の為にSSH用の公開鍵もワザと暗号強度を下げている。
コレが問題でAnsibleからRHEL9を操作しようとしてもSSH接続が出来ず確認に時間がかかった。
原因は明確でRHEL9でCryptographic Policieが変更となった為。
デフォルト状態ではCentOS7の標準公開鍵と互換性が無かった。
解決するのは簡単で、暗号鍵を対応している物にするかポリシーをLEGACYに変更すれば良い。
# update-crypto-policies --set LEGACY
Setting system policy to LEGACY
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
|
アプリケーションの再起動が必要となるので、
手っ取り早くOS自体を再起動すれば変更後のポリシーが適用される。
2022年06月12日(日) - 23:07 | カテゴリ:
Linux
自鯖のメイン機はさくらの専用サーバにデュアルアクティブの2台構成で稼働しているが、
サブ用に純粋な自鯖も依然として稼働しており、ディスク装置にはQNAPのNASを使っている。
ちょっと前に、NASのOSをQTS 5.0にアップロードした所、
ファイルサーバへのアクセスログも普通に取得出来る様になったので、
機能を有効化して実際にファイルを読み書きしつつログを取ってみた。
QTS 5.0はQuLog Centerからイベントログとアクセスログの取得を設定出来る様になった。
以前のバージョンだと設定が各々独立しておりシステムログとプラグインを併用していた筈。
筆者は元からイベントログを外部のログサーバへsyslog転送していた為、
コレに加える形でアクセスログ取得を追加した。


ログサーバにマルチバイト文字を送信するとバグりやすい気がするのと、
QNAPのサポートへエラー報告する際に都合が良いので、ログの言語はEnglishにしている。
とは言っても、アクセスログで取得するファイルパスがマルチバイトなら、
English設定でもちゃんとマルチバイトなどのディレクトリ名が取れていた。

適当なファイルをファイル共有領域へ保存した後、10秒程度してから削除したログが上の通り。
横に長いので見えにくい人は右クリックから別窓確認を推奨。
ファイルを書き込む作業がAddとWriteの2行で記録されつつ、削除動作はDeleteになっていた。
画像には載っていないが、10万個の画像を1個のフォルダに置いて丸ごと読み込んでみた所、
今度はReadログが10万行分一気にログサーバへ飛んできた。
………
今回取得したログはQNAP本体でそのまま蓄積する事も出来るのと、
QTSにもログサーバのオプションが存在するので自身でそのまま蓄積するのも良さそう。
だが、一般家庭ではNASのアクセスログなんて取らないだろうし、
その上で取るなら本職の人だと思うので外部ログサーバへ転送するのが本筋だと思う。
結果としてNAS本体で蓄積するよりログサーバへ飛ばす事で真価を発揮する設定だと感じる。
アクセス数とファイルサーバ規模にもよると思うが、
エンタープライズ環境でフルロードをかけた際に耐えられるのかは未知数。
あくまで筆者の経験上だが、そこまで大規模になるならこの機能では耐えられない気がする。
そもそも、アクセスログ取得の前にNAS自体の処理限界を迎えて頭打ちになると思うが、
この辺りは何処かの企業がレポートを出してくれれば嬉しい。
« 続きを隠す
2022年06月04日(土) - 17:40 | カテゴリ:
Linux
5月頃から従来のスパムメールとは違う物が来る様になり、
学習フィルタを始め実装済みの対策を抜けていて困っていた。
DKIMポリシーを強める事で拒否するのも手だが、
自由に弄れる方が良いので既存設備を使って実装出来る自作DNSBLを作ってみた。
筆者の自鯖では権威DNSを立てているのと、
ログをリアルタイム解析して動的にiptablesやFirewallを遮断する仕組みが動いている。
最終的にはこの仕組みに組み込む事も考慮して、
リストを一元管理しやすいDNSBLを採用する事にした。
仕組みは単純で、所持ドメインにDNSBL用のサブドメインを新たに作成し、
サブドメインのゾーンにAレコードが127.0.0.0/8のホスト名を追加し続けるのみ。
DNSBLは何でも良いのでAレコードが返れば動くので、
ローカルアドレスを使って登録するケースが多いらしく踏襲した。
この仕組みなら自動遮断と連携する場合もDNSゾーンを操作する仕組みだけで良いので、
PowerDNSあたりをMasterにしてゾーン転送すれば拡張可能なのがメリットだったりする。
smtpd_client_restrictions =
permit_mynetworks,
reject_rbl_client dnsbl.example.jp,
reject_rhsbl_client dnsbl.example.jp,
reject_rhsbl_sender dnsbl.example.jp,
permit
|
Postfixからの参照はコツが必要で、上のような設定をPostfixのmain.cfに書く必要がある。
接続元IPアドレスを元に制限する場合は”reject_rbl_client”を使えばいいが、
送信元メールドメインで制御するには”reject_rhsbl_client”や”reject_rhsbl_sender”が必要。
今回は同じサブドメインにDNSBLを全て登録しているのと、
IPアドレス・ドメインの両方で遮断するケースが出てきたので、
接続元IP・送信元ドメイン・MAIL Fromドメインの3つで制御する事にした。
………
実装してから1週間が経過したが、遮断したい対象をうまくフィルタする事が出来ている。
取り急ぎスパムメールを止めたかったのでDNSBL自体は手動更新になっているが、
前述の通りAnsibleとAPIで作り込めば自動化出来そうだった。
今時、DNSBLを使うのは時代に逆行している意見も多いが、
古典的だからこそ確実に動くのがメリットだったりするので少しの間弄ってみようと思う。
« 続きを隠す