2024年12月21日(土) - 23:29 | カテゴリ:
Linux
ns-lab BBのメールサーバではマルウェア対策でamavisとclamavを利用しており、
postfixからプロセス間通信でメールをリアルタイムで投げ込む様にしていたりする。
先日メールサーバをメンテナンスしていた所、
プロセス間通信の箇所が上手く動かずデータをロストしている事がわかった。
調べてみたら、プロセス間通信用のソケットファイルがsystemdでパス強制化されており、
本来の設定が上手く反映されておらずデータ損失をしていた。
amavisやclamavの設定を変更する事も考えたが他サーバとも構成を統一したかったので、
強制上書きされたファイルの保存先を書き換えてみた。
実施した事は簡単で、”systemctl edit example”でsystemdユニットファイルを上書きするのみ。
記載する内容にコツがあり、正規のユニットファイルで保存されたデータを一度初期化してから、
上書き内容を追記する必要があった。
例えば、ListenStream・SocketUser・SocketGroupを変更する場合、
“systemctl edit example”で実行した後に次の内容を追記する必要がある。
以下サンプルはソケットの設定だが、systemdユニットファイルでも同様の事が出来る模様。
[Socket]
ListenStream=
SocketUser=
SocketGroup=
ListenStream=/var/run/example/service.sock
SocketUser=exauser
SocketGroup=exagroup
|
最初に設定を初期化をしないと、変更前のユニットファイルで設定した内容に追記する形となる。
コレに気づくまでに丸一日を溶かしてしまった… (´・ω・`)
挙動についてArch Linuxのコミュニティーにも記載があるので詳細は以下の内容も読んで欲しい。
« 続きを隠す
2024年12月05日(木) - 22:30 | カテゴリ:
Linux
筆者が古くから運用している自鯖システムの中でも歴史の長い物がDNSとメールとなる。
サーバを作り直すタイミングでシステム全体をリビルドする事はあったものの、
ゲートウェイは2台以上でフルアクティブ化して、MDAはアクティブ・スタンバイを基本としている。
また、ns-lab BBのメールはこれらのメールゲートウェイを経由して送受信する様に構成しており、
基本的に限られたIPアドレスからのみ他ドメインへ送付する様に構成している。
筆者の様な極小自鯖でもメールアドレス詐称をする輩はいるもので、
ちょくちょくとDMARCレポートに引っ掛かっているが、
連日となると相手にするのも大変なのでSPFをsoftfailからhardfailに変更してみた。
softfailにしていた理由を書くと自鯖を運用しだした頃はサーバ構成もバラバラで、
メール配送経路も統一出来ておらずsoftfailにしないとGmailに弾かれる問題があった。
時は流れーーー
今はセキュリティ強化も叫ばれる時代で対策をしないとGmailに弾かれる時代になったうえ、
前述の通り自鯖のメール配送経路も統一する事が出来たので今回を機に思い切って変更した。

現在のns-lab BBメールゲートウェイは、受信サーバが4台・送信サーバも4台で構成している。
メール関連の機能を色々と実装しているので、
管理都合でどうしても4台が限界になって来る事もあり4台を1セットに作る様にしている。

SPFレコードは、includeを使って外部参照する構成は維持しつつ判定をhardfailに変更した。
以前はSPFレコードにIPアドレスを直接書いていたのだが、
管理が面倒になったため数年前にDNSレコードを整理した時にまとめて見直した。
………
変更して数日しか経過していないので効果の程は未知数だが、
必要なメールは正常に送受信出来ているのでひとまずは大丈夫そうだった。
DMARCレポートの構成変更もしており、コッチは海外のサービスも併用予定で調整中だったりする。
此方はスケジュール的にギリギリだが、間に合えば調整内容をコミケで小冊子頒布するかもしれない。
メールはオールドメディアになってきているが、今でもビジネスシーンでは現役なのは事実。
SaaSを使えば細かい所を知らなくてもシステム維持は出来るが、
基礎知識は重要なのと日頃から弄れば自ずと場数を踏めるので引き続き運用していく事になりそう。
« 続きを隠す
2024年10月10日(木) - 23:08 | カテゴリ:
Linux
先日、自宅鯖のDNSクエリログを眺めていたところ、
Zabbix 7.0から発せられるDNSクエリが大量に出ていたり、大小英数字でランダム化されている事に気づいた。
DNSキャッシュサーバの負荷高騰までは行っていないが結構な量だったので原因調査をしてみた。
………
改めてログ解析すると元はZabbix Proxy 7.0だった。
以前のバージョンでは秒間50~100クエリ程度と控え目なのだが、
Zabbix 7.0にアップグレードした直後から秒間200~300クエリに増加しており、
さらに今までは無かったAAAAレコードのDNS名前解決も増加している事が分かった。
そんなでログ解析しながらコミュニティを漁っていたら、時期もバージョンもズバリ合致する記事が見つかった。
| This looks like being a feature of libevent that Zabbix 7.0 uses for async DNS resolution. |
どうやら、Zabbix 7.0の非同期DNS名前解決で利用しているlibeventライブラリの機能らしく、
プログラムの組み方次第ではAAAAレコードも無作為に名前解決してNXDOMAINになり、
NXDOMAINをキャッシュせずに改めて名前解決を行う無限ループになる様だった。
………
さらに、DNSクエリがDNS-0x20で大小英数字にランダマイズされる事により、
より一層キャッシュに乗りにくくなっていた。
DNS-0x20の仕組みはカミンスキー攻撃などDNSキャッシュポイズニングを防止する目的で有用だが、
環境によっては凶悪なDDoS状態になり得ると実感した。
筆者の環境ではDNSキャッシュサーバのクエリログ解析をしているので、
DNS-0x20を施されると困る場合もあるのだが、仕様らしく解除するにはプログラムを書き換えるしか無さそう。
コミュニティにみお解決困難と書かれてあり、ワークアラウンドもDNSキャッシュを使う方法のみだった。
自宅のDNSキャッシュサーバは元からスペックを積んでいるので余裕で耐えられるクエリ数ではあるが、
エンタープライズなど大規模環境でコレが発生すると、凄い負荷がかかる筈なのでぞっとする。
特にISPやサーバ事業者とかは死活問題な気がする (´・ω・`)
以前に仕様と分かっているならサーバ増強で対処も出来るが、バグの分類にも感じるので解決は難しそう。
メジャーバージョンアップなので何かあると思っていたが、予期しない所から刺客が来た形となった。