手動監査と自動セキュリティスキャンの比較
かつて私は、ログを監視し、紙のクリップボードの項目にチェックを入れる作業に何時間も費やしていました。それは非常に疲れる作業でした。そんな中、管理していたサーバーが午前2時にSSHブルートフォース攻撃を受けました。その苦い経験から、手動チェックは遅く、ヒューマンエラーが発生しやすいという教訓を得ました。rootログインの無効化は覚えていても、新規ユーザーのUMASK設定や、ICMPリダイレクトに対するカーネルの応答設定まで確認できていたでしょうか?
手動監査では、CISベンチマークやSTIGを一行ずつ丹念に確認していく必要があります。学習には最適ですが、拡張性はありません。10台のサーバーがあれば, 40時間以上の作業になります。Lynisによる自動監査はそれを変えます。300以上のセキュリティチェックを5分以内で実行します。OpenVASのような重いネットワークスキャナーとは異なり、Lynisはローカルで動作します。これにより、外部スキャンでは見落とされるファイルシステム、カーネルパラメータ、実行中のプロセスを深く詳細に把握できます。
Lynisを使用するメリットとデメリット
Lynisを本番環境のワークフローに組み込む前に、その限界を理解しておく必要があります。これは診断ツールであり、魔法の杖ではありません。実は、この区別こそが最大の強みなのです。
メリット
- 依存関係ゼロ: Lynisはシェルスクリプトで構築されています。Python、Ruby、データベースなどは不要です。サーバーにシェルがあれば, Lynisは動作します。
- 非侵入型: 設定ファイルを書き換えることはありません。ファイルを読み取り、結果を報告するだけなので、システムの安定性は維持されます。
- モジュール式アーキテクチャ: 特定のテストを切り替えることができます。専用のウェブサーバーや軽量なコンテナホストの監査に最適です。
- 教育的: すべての提案にはドキュメントへのリンクが含まれています。単に何が悪いかを指摘するだけでなく、なぜそれが重要なのかを説明してくれます。
デメリット
- 手動での修正: Lynisは脆弱性を特定しますが、自動で修正はしてくれません。要塞化を適用するには、AnsibleやSalt、または手動での編集が必要です。
- ローカル実行: シェルアクセスが必要です。外部からリモートIPアドレスをスキャンすることはできません。
- データの密度: 出力は詳細です。カラフルなダッシュボードに慣れているチームは、最初はターミナルベースのレポートに戸惑うかもしれません。
実環境での推奨セットアップ
`apt`や`yum`などのデフォルトのパッケージマネージャーからLynisをインストールするのは避けましょう。セキュリティツールは常に最新である必要があります。ディストリビューションのレポジトリは、最新リリースから半年ほど遅れていることがよくあります。本番環境では、公式のCISOfyレポジトリから直接取得するか、GitHubからクローンすることをお勧めします。
セットアップを`/usr/local/lynis`に集約し、カスタムプロファイルを使用しましょう。これにより、アプリケーションに必要な特定の警告を無視できるようになり、「アラート疲れ」を防げます。アプリで特定のポートを開放する必要がある場合、毎週赤い警告が表示されるのは避けたいはずです。
実装ガイド:インストールから要塞化まで
これは、新しいLinux環境を本番レベルのセキュリティまで引き上げるために、私が実際に行っているワークフローです。
1. 最新バージョンのインストール
最新のUbuntuやDebianシステムでは、署名済みレポジトリを使用してください。これにより、署名済みのアップデートを自動的に受け取ることができます。
# 必須コンポーネントのインストール
sudo apt update && sudo apt install apt-transport-https ca-certificates curl gnupg
# GPGキーを信頼できるキーリングに追加
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | sudo gpg --dearmor -o /usr/share/keyrings/cisofy-archive-keyring.gpg
# レポジトリの追加
echo "deb [signed-by=/usr/share/keyrings/cisofy-archive-keyring.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
# Lynisのインストール
sudo apt update
sudo apt install lynis
2. 初回の監査の実行
`audit system`コマンドでフルシステムスキャンを開始します。必ずroot権限で実行してください。標準ユーザーでは、`/etc/shadow`などの機密ファイルや深いカーネル設定を検査する権限がありません。
sudo lynis audit system
カテゴリが流れていくのを確認しましょう:ブートとサービス、ユーザーとグループ、ネットワーク、ストレージ。色に注目してください。緑は健全、黄色は提案、赤は即時の修正が必要な警告です。
3. Hardening Index(要塞化指数)の分析
レポートの最後に表示されるHardening Indexを確認してください。デフォルトのUbuntu 22.04 LTSのインストールでは、通常58前後になります。驚かないでください。これらのOSは利便性のために最適化されており、ロックダウンされているわけではありません。本番環境での私の目標は常に80以上です。各要塞化セッションの後に生成される`lynis-report.dat`ファイルを比較することで, 進捗を確認できます。
4. 要塞化の修正の適用
下部の「Suggestions(提案)」セクションは、あなたのTo-Doリストです。ほとんどすべてのサーバーに適用している2つの修正を紹介します。
カーネルの要塞化
Lynisは、中間者攻撃を許容するパラメータを頻繁に指摘します。これらを修正するには、`/etc/sysctl.conf`を編集します。
# IPフォワーディングを無効化し、ICMPリダイレクトを無視する
sudo nano /etc/sysctl.conf
# 以下の行を末尾に追加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
# 設定を反映
sudo sysctl -p
コンパイラの制限
攻撃者がアクセス権を得たとしても、攻撃コードをコンパイルさせてはいけません。`gcc`コンパイラをrootユーザーのみに制限することは、素早く効果的な対策です。
# root以外のユーザーによるgccの実行を防止
sudo chmod o-x /usr/bin/gcc
5. 監査の自動化
セキュリティはプロセスであり、ゴールではありません。設定は徐々に変化し、新しい脆弱性が現れます。私は毎週月曜の午前3時にクワイエットスキャンを実行するcronジョブを設定しています。これにより結果がログに記録され、セキュリティベースラインを逸脱した場合に通知されます。
# rootのcrontabを開く
sudo crontab -e
# 毎週月曜の午前3時に定期監査を実行
0 3 * * 1 /usr/bin/lynis audit system --cronjob --quiet > /var/log/lynis-weekly.log
プロファイルの微調整
設定を変更できない場合もあります。例えば、クラウドプロバイダーがLynisでフラグが立つ特定のファイアウォール設定を要求している場合などです。そのような場合は、`/etc/lynis/`に`custom.prf`を作成します。`skip-test=TEST-ID`を追加してノイズを除去しましょう。これにより、レポートを実用的かつ正確に保つことができます。事前の監査を徹底することで、次に誰かがSSHポートにブルートフォース攻撃を仕掛けてきても、彼らが目にするのはドアではなく、ただの壁になるでしょう。

