Linuxセキュリティ監査を自動化するLynisの使い方とチェックリスト
Linuxのセキュリティ監査を自動化するLynisのインストールから自動スキャン、レポート生成、チェックリスト活用法までを解説。実践的なセキュリティ強化手順を紹介。
*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*
Linux セキュリティ監査を自動化する Lynis の使い方とチェックリスト
Linux サーバーのセキュリティを維持するには、定期的な監査が欠かせません。しかし、手動でチェックするのは時間がかかり、見落としも発生しがちです。そこで役立つのが、オープンソースのセキュリティ監査ツール Lynis です。Lynis はシステムの構成、脆弱性、コンプライアンスを自動でスキャンし、改善点を提示してくれます。本記事では、Lynis のインストールから自動スキャンの設定、チェックリストとしての活用法までを解説します。
Lynis とは?
Lynis は、Linux や Unix 系 OS 向けのセキュリティ監査ツールです。システム全体をスキャンし、以下をチェックします。
スキャン結果はカテゴリ別に表示され、各項目に「Warning(警告)」「Suggestion(提案)」「Compliance(コンプライアンス)」が付与されます。改善が必要な箇所を明確に把握できるため、セキュリティ強化のチェックリストとして活用できます。
Lynis のインストール
多くの Linux ディストリビューションでは、パッケージマネージャからインストール可能です。以下に代表的な方法を示します。
Ubuntu / Debian
sudo apt update
sudo apt install lynis
CentOS / RHEL / Fedora
<h1>EPEL リポジトリが必要な場合あり</h1>
sudo yum install epel-release
sudo yum install lynis
AlmaLinux / Rocky Linux
sudo dnf install epel-release
sudo dnf install lynis
最新版を直接ダウンロードする場合は、公式サイトから取得します。
cd /opt
sudo wget https://downloads.cisofy.com/lynis/lynis-3.1.1.tar.gz
sudo tar xzf lynis-3.1.1.tar.gz
sudo ln -s /opt/lynis/lynis /usr/local/bin/lynis
基本的なスキャンの実行
インストール後、以下のコマンドでスキャンを開始します。
sudo lynis audit system
スキャンには数分かかります。終了後、ターミナルに結果が表示されます。また、レポートは /var/log/lynis.log と /var/log/lynis-report.dat に保存されます。
#### スキャン結果の見方
出力はセクションごとに整理されています。
例えば、以下のように表示されます。
[!] File permissions (6 tests)
- [!] Set permissions on /etc/shadow [FILE-7524]
- [!] Set permissions on /etc/passwd [FILE-7525]
各項目には識別子(例: FILE-7524)が付いており、詳細な説明や修正方法は lynis show details FILE-7524 で確認できます。
自動スキャンの設定
定期的に監査を自動実行するには、cron や systemd タイマーを利用します。
#### cron を使う場合
以下のように、毎週日曜日にスキャンを実行し、結果をメールで送信する例です。
sudo crontab -e
<h1>毎週日曜 午前2時に実行</h1>
0 2 * * 0 /usr/sbin/lynis audit system --cronjob --report-file /var/log/lynis-report-weekly.dat | mail -s "Lynis Report" admin@example.com
--cronjob オプションを付けると、非対話モードで実行され、出力が抑制されます。
#### systemd タイマーを使う場合
sudo vi /etc/systemd/system/lynis-audit.service
[Unit]
Description=Lynis Security Audit
[Service]
Type=oneshot
ExecStart=/usr/sbin/lynis audit system --cronjob --report-file /var/log/lynis-report-$(date +%%Y%%m%%d).dat
sudo vi /etc/systemd/system/lynis-audit.timer
[Unit]
Description=Run Lynis weekly
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable lynis-audit.timer
sudo systemctl start lynis-audit.timer
チェックリストとしての活用法
Lynis は単なるスキャンツールではなく、改善点をリストアップしてくれるので、セキュリティ対策のチェックリストとして利用できます。
#### 改善項目の優先順位付け
スキャン結果には「Warning」「Suggestion」「Compliance」の3段階があります。Warning はリスクが高いため、最優先で対応します。Suggestion はベストプラクティスに基づく提案で、可能な限り実施します。Compliance は特定の基準(PCI DSS など)に関する項目で、必要に応じて対応します。
#### 各項目の修正例
sudo chmod 640 /etc/shadow
sudo chmod 644 /etc/passwd
sudo systemctl disable avahi-daemon
sudo systemctl stop avahi-daemon
sudo systemctl enable auditd
sudo systemctl start auditd
#### レポートの比較による進捗管理
自動スキャンで生成されるレポートファイル(.dat)は、日付ごとに保存しておくと、前回との差分を確認できます。スクリプトで差分を抽出すれば、改善状況を可視化できます。
#!/bin/bash
<h1>最新のレポートと比較</h1>
latest=$(ls -t /var/log/lynis-report-*.dat | head -1)
previous=$(ls -t /var/log/lynis-report-*.dat | head -2 | tail -1)
if [ -f "$previous" ]; then
diff <(grep "^hardening_index" $previous) <(grep "^hardening_index" $latest)
fi
注意点とベストプラクティス
/var/log/ に保存されます。ログローテーションを設定し、古いレポートを圧縮・削除しましょう。/etc/lynis/custom.prf に設定を記述します。まとめ
Lynis を使うことで、Linux サーバーのセキュリティ監査を効率的に自動化できます。インストールは簡単で、cron や systemd タイマーと組み合わせれば、定期的なスキャンが手間なく実行可能です。スキャン結果はチェックリストとして活用し、優先順位を付けて改善を進めましょう。自動化により、セキュリティの見落としを防ぎ、堅牢なシステム運用を実現できます。
まずは一度手動でスキャンを実行し、自サーバーの現状を把握してみてください。継続的な監査が、セキュリティ向上の第一歩です。