【syslog入門 第11回】ログ管理の設計演習 ― 500名の会社のログ集約、改ざん防止と1年保存、オンプレとAWSの一元検索、届かない・抜ける障害

syslog入門 第11回 ログ管理の設計演習 SYSLOG サーバー

「で、うちの会社のログは、どうやって集めればいいんですか?」

仕組みや設定を学んだ後に出てくるのが、この問いです。ログ管理の設計にも、正解は1つではありません。送信元の種類と数、運用の人数、監査の要件、クラウドの有無……どの要件を重く見るかで、選ぶ案が変わります。

連載の最終回となる第11回では、第1回〜第10回の知識を使って、4つの設計演習に取り組みます。答えを覚えるのではなく、要件から案を選ぶ筋道を身に付けましょう。


演習の進め方

問題を読んで要件に線を引き無い条件は仮定する、個人で5分案・理由・概算の式を書く、グループで共有してほかの人の案と比べる、解答例と解説で決め手になった要件を確かめる、の4つの手順と、答え合わせより案が分かれた理由を比べることを示す図
  • 各問は「問題 → 解答例 → 解説」の順に進みます
  • まず5分考え、選ぶ案と、その理由を書き出します。容量や費用は、概算の式を書くところまでで構いません
  • 最初にすべきことは、要件と現状の確認です。問題文に書かれていない条件(体制、予算、ログの量)は、どう仮定したかを明記します

問1 500名の会社のログを1か所に集める

本社と2拠点に散在するLinuxサーバー×60(RHEL 9)、Windowsサーバー×40(うちDC×2)、PC約520台(Windows 11、セキュリティ関連だけ)、ネットワーク機器×80(うちFW×2)、ESXi×12・vCenter×1のログを、直近90日分を検索できる場所に集めたいが、運用の担当は2名、新しいサーバーは数台まで、受信側の停止や保守のあいだもログを失わないという条件を示す図
  • 状況:従業員500名の会社(本社と2拠点)で、ログがサーバーや機器ごとに散らばっている。障害やセキュリティの調査のため、1か所に集めて検索できるようにする
  • 対象:Linuxサーバー60台(RHEL 9)、Windowsサーバー40台(DC 2台を含む)、PC約520台(Windows 11)、ネットワーク機器80台(FW 2台を含む)、ESXi 12台とvCenter 1台
  • 要件:直近90日分を検索できること。受信側の停止や保守のあいだもログを失わないこと。PCはセキュリティ関連のイベントだけ集める
  • 制約:運用の担当は2名。新しいサーバーは数台までなら置ける

考えるポイント:送信元ごとの収集の方式(syslog・WEF・エージェント)、中継の要否、容量の見積もり、冗長。

問1 解答例

案構成メリットデメリット
Aすべて syslog にそろえ、1台の rsyslog サーバーへ UDP 514 で送ってファイルに保存する構成が単純で、費用がほとんどかからないUDP で抜け、1台が止まると失う。Windows 全台に syslog へ変換するエージェントが要る。ファイルでは横断の検索が遅い
B送信元ごとに方式を分け、中継を2台置く。Linux は rsyslog(TCP+ディスクキュー)、Windows は WEF で収集サーバー(WEC)に集めてから転送、NW 機器・ESXi は syslog で中継へ。中継から検索基盤へ送るOS と機器の標準機能で集められ、PC にエージェントが要らない。中継でバッファーと形式の統一ができる構成要素が増え、WEF と中継の運用・監視が必要
C全台にエージェント(Fluent Bit や SIEM 製品のエージェント)を入れ、SaaS の SIEM へ直接送る検索と相関分析がすぐに使え、基盤の運用が少ないNW 機器・ESXi にはエージェントを入れられず、syslog の受け口が別に要る。取り込み量に応じた費用が大きい
Linux×60はrsyslogからTCPで、WindowsサーバーとPCはWEFでWEC×2に集めてから、NW機器・FW×80とESXi×12・vCenterはsyslogで、2台で冗長にしたディスクキュー付きのrsyslog中継①②へ送り、中継から直近90日を検索する検索基盤へ送ることと、運び方は送信元ごとに分けそろえるのは中継から先で、中継が止まってももう1台とキューで受けることを示す図

機器の種類が多く、運用が2名である点から、案Bが基本です。案Cは、案Bの中継の送り先をSaaSにする形で組み合わせられます。ESXiはUDP・TCP・TLSを選べますが、TLSの既定のポートが1514など、機器ごとの違いに注意します(第6回)。

運び方は送信元ごとに分け、そろえるのは中継から先。これがポイントです。

問1 解説:容量の見積もり

送信元台数1台の平均 EPS(仮定)合計 EPS
Linux サーバー602120
Windows サーバー(DC を除く)385190
DC2100200
PC(セキュリティ関連のみ)5200.5260
NW 機器(FW を除く)780.539
FW2150300
ESXi・vCenter13565
合計713—約1,200
1日の量  = 1,200 EPS × 500 バイト × 86,400 秒 ≒ 52 GB/日(生データ)
90日分   = 52 GB × 90 ≒ 4.7 TB(検索基盤は索引と複製で 1〜2倍を見込む)
ピーク時 = 平常の 3〜5倍(障害・攻撃・一斉の更新)→ 4,000〜6,000 EPS を受けられるように
合計約1,200 EPSの内訳を1台のEPS×台数で帯グラフにし、FW×2で300、DC×2で200、PC×520で260、Windows×38で190、Linux×60で120、ESXiで65、NW機器で39となり、713台のうち4台で500 EPS(約4割)を占め、PCは1台は少なくても台数で2番目で、量は台数ではなくどの送信元かで決まるので多い送信元から先に測ることを示す図

EPS(1秒あたりの件数)と1件の大きさは仮定です。実際には1〜2週間、中継のimpstatsや既存の機器の送信量で測ってから決めます。DCとFWだけで全体の4割を占めるように、量は一部の送信元に偏ります(第7回)。


問2 監査で「改ざん防止と1年保存」を求められた

監査で改ざんから守る・1年間保存する・直近3か月はすぐ調べることを求められたカード決済のシステムで、Web・AP・DBサーバー×20とFW×2がUDP 514で集約サーバー×1(rsyslog、logrotateで4週間だけ残す、管理者は全員rootを使える)に送り、時刻の同期は台によってまちまちで、ログの量は1日約5 GB、費用は抑えたいという状況を示す図
  • 状況:カード決済を扱うシステム(Web・AP・DBのサーバー20台、FW 2台)を運用している。監査で「ログを改ざんから守り、1年間保存すること。直近3か月はすぐに調べられること」と指摘された
  • 現状①:各サーバーはUDP 514でrsyslogの集約サーバー1台へ送り、集約サーバーはlogrotateで4週間分だけ残している
  • 現状②:サーバーの管理者は全員、集約サーバーのrootも使える。サーバーの時刻同期は、台によって設定がまちまち
  • 要件:抜けや改ざんがないことを、後から示せること。費用は抑えたい。ログの量は1日あたり約5 GB

考えるポイント:転送の信頼性と暗号化、保存先の改ざん防止、検索用と保管用の分け方、時刻の証跡。

問2 解答例

案構成メリットデメリット
A集約サーバーの logrotate を1年分に延ばし、ディスクを増やすすぐにでき、費用が小さいUDP の抜けが残る。root を使える人は誰でも消せて、改ざんがないことを示せない
B送信を TLS(6514)とディスクキューにし、必要なら RELP も使う。直近3か月は検索基盤に置き、日ごとのファイルのハッシュを取って WORM のストレージ(S3 Object Lock のコンプライアンスモード等)へ1年保管する。集約サーバーとアーカイブの管理者を分ける抜け・盗聴・改ざんのそれぞれに手当てがあり、証跡を示せる。保管の費用が安い設計と運用の手間が増える。WORM は期間中に誰も消せないため、保存期間の設定を誤ると費用が残り続ける
CSaaS の SIEM へ送り、1年分をオンラインで保管する検索・改ざん防止・アクセス管理を製品に任せられる1年分をすべて検索できる状態で持つと費用が大きい。製品を替えるときの移行が難しい
送信元サーバー×20・FW×2がTLS 6514+ディスクキューでサーバーの管理者が管理する集約サーバーに送り、日ごとにファイルを閉じて、直近3か月は検索基盤ですぐ調べ、日ごとのファイルとSHA-256を別の人が管理するWORMストレージ(S3 Object Lock等)に1年保管し、全台をNTPで同期してオフセット付きのRFC 3339で記録することと、「すぐ調べる」と「1年守る」は置き場所を分け保管側は集約サーバーの管理者にも消せないようにすることを示す図

案Bが有力です。1年分は約1.8 TB(5 GB × 365日)で、圧縮すればその数分の1になります。PCI DSS v4.0.1の要件10も、12か月の保存と直近3か月をすぐに分析できることを求めています(第1回・第7回)。

問2 解説:抜け・盗聴・改ざん・時刻への手当て

脅威手当て確かめ方
転送中の抜けTCP とディスクキュー(queue.type=”LinkedList”、queue.filename、action.resumeRetryCount=”-1″)。受け取りの確認まで要るなら RELP(第4回・第5回)impstats の破棄数、送信元ごとの件数の突き合わせ
盗聴・なりすましTLS(RFC 5425、6514。暗号スイートは RFC 9662 で更新)と、証明書による相互の確認openssl s_client -connect 集約サーバー:6514、Test-NetConnection -Port 6514(TCP まで)
保存後の改ざん・削除日ごとにファイルを閉じて SHA-256 を取り、ハッシュの一覧も別の場所へ。保管先は WORMsha256sum -c、Get-FileHash -Algorithm SHA256
管理者による消去集約サーバーの root と、アーカイブを管理する権限を分け、操作も記録する権限の棚卸し、操作の記録(CloudTrail 等)
時刻の信頼性全台を NTP で同期し、オフセット付きの RFC 3339 で記録。同期の状態も記録を残すchronyc tracking の定期的な記録(連載「NTP入門」第7回)
1年の保存と検索直近3か月は検索基盤、それ以降はアーカイブから戻して検索する取り出しの手順を年に1回試す
ログの一生を送信(TLS+ディスクキュー)、集約(日ごとに閉じる)、ハッシュ(SHA-256を別の場所へ)、WORM保管(1年・権限を分ける)、取り出す(年に1回試す)の段に分け、抜け・盗聴・なりすまし・改ざん・管理者による消去の脅威ごとに守る段が違い、すべての段の時刻をNTPで同期し同期の状態も記録することと、どれか1つでは全部は守れないことを示す図

RFC 5848(署名付きsyslog)は対応する製品が限られるため、ファイル単位のハッシュとWORMで守るのが現実的です。AWSのCloudTrailは、ログのハッシュと署名(ダイジェストファイル)を1時間ごとに自動で作ります(第9回)。脅威ごとに、守る場所がログの一生の別の段にあるのです。


問3 オンプレとAWSのログを一元的に検索する

直近30日は数秒〜数十秒、1年分は数分かかってもよいという要件に対し、オンプレの本社のrsyslogの集約サーバー(ファイルで保存、40 GB/日、時刻はJST)とDirect ConnectでつながったAWS東京リージョンのアカウントA・B・CにそれぞれCloudWatch Logs・CloudTrail・VPCフローログがあり、アプリのログは20 GB/日で時刻はUTCで、場所も時刻もばらばらのログをどこに集めて1つの時系列に並べるかを問う図
  • 状況:業務システムの一部をAWS(東京リージョン、アカウント3つ)へ移した。オンプレの本社とは、Direct Connectでつながっている
  • 現状①:オンプレは、rsyslogの集約サーバーにファイルで集めている(1日約40 GB)
  • 現状②:AWS側は、EC2のアプリのログがアカウントごとのCloudWatch Logsに(1日約20 GB)、CloudTrailとVPCフローログが別々の場所にある
  • 要件:障害や不正アクセスのとき、両方のログを時系列に並べて検索したい。直近30日は数秒〜数十秒で、1年分は数分かかってもよい
  • 時刻:オンプレのログはJST、AWSのログはUTCで記録されている

考えるポイント:どこに集めるか(CloudWatch Logs・S3・SIEM)、転送の経路と費用、タイムゾーン。

問3 解答例と解説

案構成メリットデメリット
Aオンプレのログも CloudWatch Logs へ送り(CloudWatch エージェントや中継から)、Logs Insights でアカウントをまたいで検索するAWS のマネージドなサービスで完結する取り込み量に比例して費用がかかり、オンプレの 40 GB/日も課金される。syslog の機器には中継が要る
B両方を S3 に集め(オンプレは中継から、AWS は CloudWatch Logs から)、Athena などで検索する保管が安く、1年分も持ちやすい直近の調査には遅い。形式(スキーマ)とパーティションの設計が要る
C検索基盤(OpenSearch や SIEM)を1つ決めて直近30日を入れ、生データは S3 に1年保管する(案B と組み合わせる)速い検索と安い保管を両立でき、相関分析もできる構成が大きくなり、検索基盤の容量と費用の管理が要る
オンプレのrsyslogの集約サーバー(40 GB/日・JST)から中継(Fluent Bit等)でDirect Connectを通って(入る転送は無料)AWS東京リージョンへ送り、3アカウントのCloudWatch Logs・CloudTrail・VPCフローログと合わせて収集の段でUTCにそろえ元の時刻とTZも残し、直近30日はOpenSearch・SIEMの検索基盤へ、1年分の生データはS3(Athena等)へ入れることと、入口の収集で時刻をそろえてから速い置き場と安い置き場の2か所へ入れることを示す図

「30日は速く、1年は安く」という2段の要件から、案Cが有力です(第7回のホットとコールド)。

  • AWSへ入る転送は無料で、出る転送は課金されるため、集める場所はAWS側に置くと転送の費用を抑えやすい(第9回)
  • 時刻は収集のときにUTC(RFC 3339)へそろえ、元の時刻とタイムゾーンも残す(連載「NTP入門」第11回の問2)

問4 「一部の機器のログだけ届かない・ときどき抜ける」

rsyslogの集約サーバー×1(RHEL 9、UDP 514とTCP 514で受信)に対し、①大阪拠点の先月入れ替えたFWの先のスイッチ×10は入れ替え以降まったく届かない、②本社のFW(毎秒約2,000件をUDPで送信)は夕方の混雑時だけところどころ抜ける、③Webサーバー(RHEL 9、アプリが大量に出力)は大量に出た日だけ一部しか届かず/var/log/messagesにも無い、という症状の違う3件を示す図
  • 状況:rsyslogの集約サーバー1台(RHEL 9、UDP 514とTCP 514で受信)に、全社のログを集めている。1週間のうちに、次の3件の報告を受けた
  • 報告①:先月、拠点のFWを入れ替えた大阪拠点のスイッチ10台のログが、入れ替え以降まったく届いていない
  • 報告②:本社のFW(毎秒約2,000件をUDPで送信)のログが、夕方の混雑する時間帯だけ、ところどころ抜ける
  • 報告③:Webサーバー(RHEL 9)のアプリが大量のログを出した日だけ、アプリのログが一部しか届かない。そのサーバーの/var/log/messagesにも残っていない

考えるポイント:それぞれをどの順に切り分けるか、原因の候補、恒久的な対策。

問4 解答例と解説

案対応メリットデメリット
A集約サーバーを再起動し、性能の高いサーバーに替える手順が分かりやすい送信側や経路の原因(①・③)には効かず、原因も分からない
B報告ごとに、送信側 → 経路 → 受信側の順に確かめ(tcpdump、受信エラーのカウンター、レート制限の記録)、原因ごとに対策する3件の原因をそれぞれ特定でき、再発を防げる手間がかかり、コマンドの知識が要る
Cすべての送信元を TCP(または RELP)に切り替えるUDP の欠損(②)には効く①・③は直らない。TCP に対応しない機器もある
$ sudo tcpdump -i any -nn 'udp port 514 and src net 198.51.100.0/24'   # ①大阪から届くか
$ nstat -az UdpRcvbufErrors ; ss -uanm 'sport = :514'                   # ②夕方に増えるか
$ grep 'rate-limiting' /var/log/messages ; journalctl -b | grep Suppressed  # ③送信元で
①大阪のスイッチは送っているが経路の新しいFWのルールか送信元IPの変化でtcpdumpに何も来ない、②本社のFWは送っていてtcpdumpには来ているが受信側で受信バッファーからあふれる、③Webサーバーは送信側のjournald・imjournalのレート制限で捨てられ届いた分は通り保存されるので、原因は送信側・経路・受信側に1つずつあり、受信側のtcpdumpに来ているかを最初に見ると送信側・経路の問題か受信側の問題かに分けられることを示す図

案Bです。原因は、送信側・経路・受信側に1つずつありました(第10回)。

  • ①は、新しいFWのルールか送信元IPの変化(経路)。受信側のtcpdumpに何も来ない
  • ②は、受信バッファーのあふれ(受信側)。RcvBufSizeの拡大、TCPへの切り替え、受信の分散で対処する
  • ③は、journald・imjournalのレート制限(送信側)。上限の見直しと、出しすぎの是正で対処する

受信側のtcpdumpに来ているかを最初に見ると、送信側・経路の問題か、受信側の問題かに分けられます。「性能の高いサーバーに替える」や「全部TCPに」は、3件のうち1件にしか効きません。


振り返り

全11回を通じて、持ち帰ってほしいことは3つです。

  1. ログは「届いたか確かめられる形」で運ぶ。UDPは抜ける前提で、重要なログはTCPとディスクキュー、暗号化はTLS、受け取りの確認まで要るならRELP
  2. 時刻・形式・文字コードをそろえてから集める。全台をNTPで同期し、オフセット付きのRFC 3339(できればUTC)とUTF-8で記録する
  3. 容量・保存期間・改ざん防止を最初に設計する。EPS × 1件の大きさ × 日数で見積もり、検索用と保管用を分け、WORMとハッシュで証跡を守る

まずは自分のサーバーでlogger -n 集約サーバー -P 514 -T "test"を送り、受信側のtcpdumpとファイルで到着を確かめてみてください。困ったときに戻る場所は、第10回の「連載の早見表」にまとめています。時刻の合わせ方は連載「NTP入門」、TLSの証明書は連載「証明書入門」もあわせてどうぞ。


まとめ

  • 設計は要件と現状の確認から。書かれていない条件は仮定を明記する
  • 問1:運び方は送信元ごと(rsyslog・WEF・syslog)、そろえるのは中継から先。量は多い送信元から測る
  • 問2:抜け・盗聴・改ざん・消去・時刻に、ログの一生のそれぞれの段で手当てする。「すぐ調べる」と「1年守る」は置き場所を分ける
  • 問3:入口でUTCにそろえ、速い置き場(30日)と安い置き場(1年)の2か所へ
  • 問4:受信側のtcpdumpで二分し、送信側・経路・受信側の原因を1つずつ直す

「syslog入門」全11回、最後までお読みいただき、ありがとうございました。


連載「syslog入門」全11回

全回の目次と、読む順番・目的別の読み方は、syslog入門の入口のページにまとめています。

  1. ログとは・なぜ集めるか
  2. syslogの基本
  3. Linuxのログの仕組み
  4. rsyslog 前編
  5. rsyslog 後編
  6. Windows・ネットワーク機器のログ
  7. ログ集約基盤の設計
  8. 分析と監視・SIEM
  9. クラウドのログ
  10. syslogのトラブルシュート
  11. ログ管理の設計演習(この記事)
seichan

プロフィール詳細は「プロフィール」をご覧ください。
AWS Certified Solutions Architect – Professional (https://www.credly.com/badges/fd8feb88-6f1f-42ff-a94b-445bb6661cb8/public_url)
Nutanix Certified Professional - Multicloud Infrastructure 6 (https://www.credly.com/badges/5c081bef-a425-42e4-809c-85138e676630/public_url)
Palo Alto Networks System Engineer (PSE) - Hardware Firewall Professional (https://www.credly.com/badges/69dc3880-4a51-47eb-8843-47ba6ea7d013/public_url)

seichanをフォローする
SYSLOG サーバー
シェアする
seichanをフォローする

コメント

タイトルとURLをコピーしました