Lynis 徹底解説:Linux/macOS セキュリティ監査ツールの使い方 🛡️

Lynis は、Linux、macOS、BSD などの UNIX 系オペレーティングシステム向けの強力なオープンソースセキュリティ監査ツールです。2007年から開発されており、システムの健全性を広範囲にスキャンし、システムの強化(Hardening)やコンプライアンス遵守(PCI DSS、HIPAA、ISO27001 など)を支援します。システム管理者、セキュリティ専門家、監査担当者にとって、システムの防御力を評価し、セキュリティ体制を改善するための貴重なツールとなります。

Lynis はエージェントレスであり、ターゲットシステムへのインストールは必須ではありません。単にファイルを展開して実行することも可能です。これにより、監査対象への影響を最小限に抑えつつ、詳細なセキュリティチェックを実施できます。

🚀 Lynis のインストール

Lynis を利用するためのインストール方法はいくつかあります。環境や好みに合わせて選択してください。

多くの Linux ディストリビューションや macOS (Homebrew) では、パッケージマネージャーを使って簡単に Lynis をインストールし、最新の状態に保つことができます。これが最も簡単な方法です。

公式リポジトリの追加 (推奨)

ディストリビューションの標準リポジトリに含まれる Lynis は古い場合があります。最新の機能やテストを利用するために、CISOfy の公式リポジトリを追加することをお勧めします。手順は Lynis の公式ドキュメントで確認できます。

Debian / Ubuntu / Mint 系:

sudo apt update
sudo apt install lynis -y

RHEL / CentOS / Fedora / Rocky Linux / AlmaLinux 系:

sudo dnf install lynis -y
# または (古いシステムの場合)
sudo yum install lynis -y

openSUSE:

sudo zypper install lynis

macOS (Homebrew):

brew install lynis

FreeBSD:

pkg install lynis

常に最新の開発版を利用したい場合は、GitHub からリポジトリをクローンする方法があります。

# Lynis を配置したいディレクトリに移動 (例: /usr/local)
cd /usr/local

# リポジトリをクローン
sudo git clone https://github.com/CISOfy/lynis.git

# クローンしたディレクトリに移動
cd lynis

# 実行権限を確認 (通常は不要)
# sudo chmod +x lynis

# 監査を実行
sudo ./lynis audit system

この方法の場合、Lynis を実行するには `lynis` ディレクトリ内で `./lynis` コマンドを使用します。

インストールせずに特定のバージョンを使用したい場合や、インターネット接続がない環境で使用する場合に適しています。

  1. Lynis のダウンロードページから最新版または特定のバージョンの tar.gz ファイルのリンクを取得します。
  2. ファイルをダウンロードし、展開します。
    # Lynis を配置したいディレクトリを作成 (例: /usr/local/lynis)
    sudo mkdir -p /usr/local/lynis
    cd /usr/local
    
    # ダウンロード (URL は適宜置き換えてください)
    sudo wget https://cisofy.com/files/lynis-<version>.tar.gz
    
    # 展開
    sudo tar xfvz lynis-<version>.tar.gz -C /usr/local/lynis --strip-components=1
    
    # 展開したディレクトリに移動
    cd /usr/local/lynis
    
    # 監査を実行
    sudo ./lynis audit system

Git や Tarball を利用した場合も、`./lynis` コマンドで実行します。

🔍 基本的な使い方: システム監査の実行

Lynis の最も基本的な使い方は、`audit system` コマンドを使用してローカルシステムの包括的なセキュリティ監査を実行することです。通常、システムの詳細な情報を取得するために root 権限が必要です。

# パッケージマネージャーでインストールした場合
sudo lynis audit system

# Git や Tarball でインストールした場合 (lynis ディレクトリ内で実行)
sudo ./lynis audit system

監査が開始されると、Lynis はシステムの初期化、OS やツールの検出、プラグインの実行、各カテゴリのセキュリティテストを順次行い、結果を画面に出力します。デフォルトでは、各セクションの終わりに一時停止し、Enter キーを押すと次のセクションに進みます。Ctrl+C で監査を中断できます。

一時停止せずに監査を実行したい場合は、`–quick` (または `-Q`) オプションを使用します。

sudo lynis audit system --quick

cron ジョブなどで完全に自動実行する場合は `–cronjob` オプションが便利です。これには `–quick` と、色付けや対話を無効にするオプションが含まれます。

sudo lynis audit system --cronjob

⚙️ 主要なコマンドとオプション

Lynis は `lynis [コマンド] [オプション]` の形式で使用します。よく使われるコマンドとオプションを見ていきましょう。

コマンド 説明
audit system ローカルシステムのセキュリティ監査を実行します。最も一般的に使用されるコマンドです。
audit dockerfile <ファイルパス> 指定された Dockerfile を分析します。
show 様々な情報を表示するためのコマンド群です。
show commands 利用可能な Lynis コマンドを表示します。
show help (または -h) ヘルプ画面(主要なオプションなど)を表示します。
show profiles 検出された監査プロファイルを表示します。
show settings 現在アクティブなプロファイル設定を表示します。
show version (または -V) Lynis のバージョンを表示します。
show options 利用可能なすべてのコマンドラインオプションを表示します。
update info Lynis のアップデート情報を確認します。
--man (または --view-manpage) man ページを表示します(パッケージとしてインストールされていない場合に便利)。
オプション 短縮形 説明
--auditor "<名前>" レポートに監査者名を指定します(例: `–auditor “山田 太郎”`)。
--check-all -c システム全体をチェックします (`audit system` とほぼ同義ですが、古いバージョンとの互換性のために残っています)。
--cronjob cron ジョブとして実行するのに適したモードです。色付け、一時停止、ユーザー入力要求を無効にします (`-c -Q` を含みます)。
--debug デバッグ情報を表示します。トラブルシューティングに役立ちます。
--logfile <ファイルパス> ログファイルの場所と名前を指定します (デフォルト: `/var/log/lynis.log`)。
--no-colors 出力の色付けを無効にします。
--no-log ログ情報を `/dev/null` にリダイレクトし、ディスクへの書き込みを防ぎます。
--pentest 非特権ユーザーで実行し、ペネトレーションテストに役立つ情報を表示します。root 権限が必要なテストはスキップされます。
--profile <プロファイルファイル名> デフォルト (default.prf) 以外のカスタムプロファイルファイルを指定してスキャンを実行します。
--quick -Q ユーザー入力を待たずに(エラー時を除く)スキャンを実行します。
--quiet -q 警告のみを表示し、それ以外の出力を抑制します (`–quick` も有効になります)。
--report-file <ファイルパス> レポートデータファイル (lynis-report.dat) の代替パスと名前を指定します。
--reverse-colors 明るい背景のターミナル用に色スキームを最適化します。
--tests <TEST-ID> 指定したテスト ID のテストのみを実行します。複数指定する場合はスペースで区切り、引用符で囲みます(例: `–tests “AUTH-9228 FILE-6310″`)。
--tests-from-category <カテゴリ名> 指定したカテゴリに属するテストのみを実行します(例: `–tests-from-category firewall`)。カテゴリは `lynis show categories` で確認できます。
--tests-from-group <グループ名> 指定したグループに属するテストのみを実行します。グループは `lynis show groups` で確認できます。
--upload Lynis Enterprise サーバーにデータをアップロードします(プロファイルで `upload=yes` の設定が必要)。
--verbose より詳細な情報(見つからなかったコンポーネントなど)を画面に表示します。
--wait 各セクションの後にユーザーの入力を待ちます (`–quick` の逆)。
--warnings-only `–quiet` と同様ですが、警告は表示されます。

📊 レポートの理解

Lynis の監査が完了すると、結果が画面に出力され、詳細がログファイルとレポートデータファイルに保存されます。

  • 画面出力: スキャンの進行状況と各テストの結果 ([OK], [WARNING], [SUGGESTION], [SKIPPED] など) がリアルタイムで表示されます。最後にサマリー、検出結果(Warnings と Suggestions)、Hardening Index などが表示されます。
  • ログファイル (/var/log/lynis.log): 実行されたすべてのテスト、チェック内容、検出された値、デバッグ情報など、スキャンの詳細な技術的情報が記録されます。問題の原因調査に不可欠です。
  • レポートデータファイル (/var/log/lynis-report.dat): スキャン結果の主要な情報(検出結果、システム情報、Hardening Index など)がキーと値のペア形式で保存されます。スクリプトでの処理や、過去のスキャン結果との比較に適しています。

テスト結果の意味:

  • [OK]: テストが成功したか、期待される状態であることを示します。ただし、これが必ずしも「安全」や「ベストプラクティス」を意味するとは限りません。
  • [WARNING]: 注意が必要な設定や、潜在的なセキュリティリスクを示します。優先的に確認・修正すべき項目です。
  • [SUGGESTION]: システム強化のための提案です。必須ではありませんが、実施することでセキュリティレベルが向上する可能性があります。
  • [SKIPPED]: テストがスキップされたことを示します(例: 関連するソフトウェアがインストールされていない、プロファイルで無効化されている)。
  • [FAILED]: テストの実行中にエラーが発生したことを示します。

[OK] であっても設定内容を確認し、[WARNING] であってもシステム要件によっては許容される場合があるため、結果は監査者が解釈する必要があります。

スキャン結果の最後には、検出された「Warnings」(警告)と「Suggestions」(提案)のリストが表示されます。

  • Warnings: 優先的に対処すべきセキュリティ上の問題点や設定ミスを示します。
  • Suggestions: セキュリティをさらに強化するための推奨事項です。必須ではありませんが、検討する価値があります。

各項目には、関連するテスト ID (例: `[AUTH-9228]`) が表示されます。この ID をログファイル (`/var/log/lynis.log`) で検索することで、どのテストで検出されたか、どのようなチェックが行われたかの詳細を確認できます。

# 例: AUTH-9228 に関するログを確認する
sudo grep AUTH-9228 /var/log/lynis.log

多くの場合、Suggestion の最後に表示される URL (例: `https://cisofy.com/controls/AUTH-9228/`) を参照すると、その項目に関する詳しい説明や修正方法が CISOfy のサイトで提供されています。

これは、Lynis が行ったテストに基づいてシステムのセキュリティ強化の度合いを 0 から 100 の数値で示したものです。数値が高いほど、多くのセキュリティ対策が講じられていることを意味します。ただし、これは絶対的な安全を示すものではなく、あくまで相対的な指標です。各テストの結果を個別に確認し、必要な対策を講じることが重要です。Warnings や Critical な Suggestions が残っている場合は、Hardening Index が高くても安心できません。

このファイルはキーと値の形式で結果を格納しているため、スクリプトで処理するのに便利です。例えば、特定の警告や提案の有無をチェックしたり、Hardening Index の変化を追跡したりできます。

# レポートデータファイルの内容例
# Lynis Report data
# Version:1.0
# Tool version:3.1.4
# Date:2025-04-01
# Hostname:my-server
# OS:Linux
# OS name:Ubuntu
# OS version:22.04
# [...]
hardening_index=65
# [...]
warning[]=AUTH-9286|Minimum password age is not set to minimum of 1 day|-|Minimum password age should be set||https://cisofy.com/controls/AUTH-9286/
suggestion[]=ACCT-9622|Consider installing a log auditing tool, to collect events from applications and system.|-|Install psacct or sysstat package for system accounting||https://cisofy.com/controls/ACCT-9622/
# [...]

🔧 カスタマイズ: プロファイルの使用

Lynis の動作はプロファイルファイル (`.prf`) によって制御されます。デフォルトでは `/etc/lynis/default.prf` が使用されますが、このファイルを直接編集することは推奨されません。

カスタマイズを行う場合は、同じディレクトリに `custom.prf` というファイルを作成し、変更したい設定をそこに記述します。`custom.prf` の設定は `default.prf` の設定を上書きします。

# カスタムプロファイルファイルを作成 (存在しない場合)
sudo touch /etc/lynis/custom.prf

# エディタで開いて編集
sudo nano /etc/lynis/custom.prf

環境によっては不要なテストや、意図的に設定しているために常に警告が出るテストなどをスキップしたい場合があります。`custom.prf` に `skip-test=<TEST-ID>` を追加します。

# 例: /home や /tmp を別パーティションにすることを推奨するテスト (FILE-6310) と
#     USB ストレージドライバの無効化を推奨するテスト (STRG-1840) をスキップする
skip-test=FILE-6310
skip-test=STRG-1840

`default.prf` 内の設定値を変更したい場合は、その設定行を `custom.prf` にコピーして値を変更します。

# 例: レポートファイルの場所を変更する
report-file=/opt/lynis_reports/my_server_report.dat

`default.prf` や `custom.prf` 以外のプロファイルを使用したい場合は、`–profile` オプションで指定します。これにより、特定の OS やサーバーロール(ウェブサーバー用、メールサーバー用など)に合わせたプロファイルを作成して使い分けることができます。

# webserver.prf というプロファイルを使用する
sudo lynis audit system --profile /etc/lynis/webserver.prf

✨ ベストプラクティスとヒント

  • 定期的なスキャン: セキュリティは継続的なプロセスです。週に一度など、定期的に Lynis を実行し、システムのセキュリティ状態を監視しましょう。cron ジョブ (`–cronjob` オプションを使用) で自動化するのが効果的です。
  • 結果の分析と対応: スキャン結果、特に Warnings は必ず確認し、必要な対策を講じましょう。Suggestions も検討し、可能な範囲で実装します。
  • ログの確認: 警告や提案の背景を理解するために、`/var/log/lynis.log` を参照しましょう。
  • カスタマイズ: 不要なテストは `custom.prf` でスキップし、ノイズを減らして重要な項目に集中できるようにしましょう。
  • 最新版の利用: 新しい脅威や設定に対応するため、Lynis は定期的にアップデートされます。常に最新版を利用することをお勧めします。パッケージマネージャーで公式リポジトリを使用するか、`lynis update info` で確認し、必要に応じてアップデートしましょう。
  • 他のツールとの連携: Lynis は包括的な監査ツールですが、特定の分野に特化したツール(例: Fail2ban, ClamAV, RKHunter, AIDE)と組み合わせることで、より堅牢なセキュリティ体制を構築できます。

🎉 まとめ

Lynis は、UNIX 系システムのセキュリティ監査と強化のための非常に強力で柔軟なツールです。インストールから基本的な使い方、レポートの解釈、カスタマイズまでを理解することで、システムのセキュリティレベルを効果的に評価し、向上させることができます。

定期的な監査と結果に基づいた改善を継続することで、システムの安全性を維持し、潜在的な脅威から保護することが可能になります。ぜひ Lynis を活用して、システムのセキュリティ強化に取り組んでみてください!🚀🔒

コメント

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