重要: 本記事のコマンドはroot権限またはsudoが必要です。テスト環境でまず実行し、修正は影響範囲を確認してから本番に反映してください。
Lynisとは
LynisはUnix系(Linux、BSDなど)システムのセキュリティ監査およびハードニング支援ツールです。一行で定義すると: システム設定、ソフトウェア状態、認証や暗号化の設定などを自動でチェックして、改善点をレポートするツールです。
利点:
- 軽量でCLIから簡単に実行できる
- 設定のベースラインチェックと推奨事項を提示する
- スキャナ結果はログに残り自動化しやすい
注意点:
- Lynis自体は修正を自動で行わない(推奨を提示するのみ)
- ローカル環境や用途に応じた判断で提案を取捨選択する必要がある
インストール
Ubuntu系ではソフトウェアセンターからインストールできますが、リモートで作業する場合はコマンドラインで簡単に導入できます。
sudo apt-get install lynis
他のディストリビューション向けにはLynisの公式サイトに非公式RPMやDebパッケージへのリンクがあります。公式ページで配布形態を確認してください。
使用方法
ターミナルで以下を実行するとシステムの監査が開始されます。
sudo lynis -c
実行内容は非常に広範囲で、代表的なチェック項目は次の通りです。
- システムツールの存在とバージョン
- ブートローダーと起動サービス
- カーネル設定やロード済みモジュール
- メモリとプロセス(ゾンビ/IO待ちなど)
- ユーザ/グループと認証(sudoers、PAM、パスワードポリシー)
- ファイルシステムのマウントと権限、/tmpの管理
- ストレージ関連(usb/firewireの設定)
- NFSやDNSといった名前解決サービス
- ポートとパッケージの脆弱性やリポジトリ設定
- ファイアウォール(iptablesなど)やウェブサーバー設定
- SSH設定、SNMP、データベースのベーシックチェック
- PHPやスケジュールタスク(cron/at)
- 時刻同期(ntp)やSSL証明書の有効期限
- AppArmor/SELinuxの状態、ファイル整合性、マルウェアスキャン設定
- ホームディレクトリのシェル履歴確認
レポートの確認とフィルタリング
スキャンが完了すると、結果は /var/log/lynis.log に保存されます。ログをエディタで開いて全体を読むか、キーワードでフィルタします。
sudo nano /var/log/lynis.log
特に注目すべきは「Warning」(警告)と「Suggestion」(改善提案)です。端末でフィルタする例:
sudo grep Warning /var/log/lynis.log
sudo grep Suggestion /var/log/lynis.log
実務での導入メソッド(ミニ手順)
- 準備: バックアップを取得し、テスト環境で初回実行してベースラインを把握する。
- 監査:
sudo lynis -c
を実行してレポート取得。 - 分類: レポートから「Warning」を優先、「Suggestion」は改善計画に組み込む。
- 修正: 影響範囲を評価して順次修正(設定変更、パッケージ更新、権限の修正など)。
- 再監査: 修正後に再度Lynisで確認して改善が反映されたか検証。
- 定期化: CI/定期ジョブに組み込んで継続的に監査を実行。
このサイクルを回すことで、監査→修正→検証のPDCAを回せます。
ロール別チェックリスト
ホームユーザー
- 目的: 重要ファイルの保護と不要な公開サービスの無効化
- 実行: Lynisを年1回実行し、重大なWarningは優先修正
- チェック: SSHの公開鍵認証、未使用サービスの停止、OS自動更新の有効化
サーバー管理者
- 目的: 公開サービスの堅牢化と監査可能性の確保
- 実行: Lynisを定期実行(週次または変更時)し、ログは集中管理
- チェック: ファイアウォールルール、SSH設定、パッケージ脆弱性済対応、NTP同期
セキュリティ監査担当
- 目的: 組織のセキュリティ基準に対するギャップ把握
- 実行: Lynis結果を基に脆弱性分類、リスク評価を実施
- チェック: ポリシー準拠(PAM、パスワードポリシー、ログ保持)、SLAとの整合
受け入れ基準(Kriterien)
- すべての重大なWarningが解決または受容可能な理由がドキュメント化されていること
- 主要サービス(SSH/HTTP/DB)が最小権限で運用されていること
- 定期監査が自動化され、結果が保存・通知される仕組みがあること
よくある失敗例と対処
失敗: Lynisの提案をそのまま機械的に適用してサービスが停止した
- 対処: 変更前に影響範囲をテスト、段階的ロールアウト
失敗: ログだけ溜めてアクションがない
- 対処: SLAと担当を決め、修正期限を設ける
失敗: 自動化でスキャンを走らせても結果が他システムに流れていない
- 対処: 中央ログ/チケット連携を設計する
テストケースと受け入れ検証
- テスト1: 既知の設定ミス(例: rootでのSSHパスワード認証有効)を作成してLynisがWarningを検出するか確認
- テスト2: 設定変更後に再監査して、該当Warningが解消されることを確認
- テスト3: ログのgrepコマンドで「Warning」と「Suggestion」が抽出できることを確認
便利なチートシート(よく使うコマンド)
# フルスキャン(対話なし)
sudo lynis -c
# ログを開く
sudo nano /var/log/lynis.log
# Warningのみ抽出
sudo grep Warning /var/log/lynis.log
# Suggestionのみ抽出
sudo grep Suggestion /var/log/lynis.log
1行用語集
- Lynis: Unix系向けのセキュリティ監査ツール
- Warning: すぐに対応が必要な可能性が高い指摘
- Suggestion: 改善を推奨する提案で優先度は低め
まとめ
Lynisは短時間でシステムのセキュリティギャップを洗い出すのに適したツールです。重大な問題は優先的に修正し、提案は長期改善計画に組み込みます。定期的な監査と変更管理を組み合わせることで、継続的にシステムの安全性を高められます。
Image credit: Up, Tight