とーますメモ

Ruby on Rails / Goなどの学習メモ

【Lynis】Ubuntu16.04にセキュリティ監査ツール「Lynis」を入れてみた

インストール

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
apt install apt-transport-https
echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/99disable-translations
echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" > /etc/apt/sources.list.d/cisofy-lynis.list
apt update
apt remove lynis
apt install lynis

以下のサイト様より引用
linuxのセキュリティツール - fr33f0r4ll

使い方

$ lynis audit system

メールレポート送信

デフォルトでは、メールレポート送信機能はないので、
以下のスクリプトを作成。

Lynisはスキャンが終わると、そのレポートを「/var/log/lynis-report.dat」に作成する。
大事なのは、「Warning」と「Suggestion」箇所なので、
その部分を抽出し、各行数を追記し、レポートをメールを送信する。

一日に1回のスキャンで自分は良いので、cron.dailyにスクリプトを配置している。
結構汚いコードなので、あしからず。

/etc/cron.daily/lynis_daily

#!/bin/bash

LOGFILE="{{ lynis_log_directory }}/lynis-$(date +'%Y-%m-%d_%H:%M:%S').log";

DATA="{{ lynis_log_directory }}/lynis-data-$(date +'%Y-%m-%d_%H:%M:%S').txt";
WARNING_DATA="{{ lynis_log_directory }}/lynis-warning-$(date +'%Y-%m-%d_%H:%M:%S').txt";
SUGGESTION_DATA="{{ lynis_log_directory }}/lynis-suggestion-$(date +'%Y-%m-%d_%H:%M:%S').txt";
TMP_DATA="{{ lynis_log_directory }}/lynis-tmp-$(date +'%Y-%m-%d_%H:%M:%S').txt";

EMAIL_FROM="{{ lynis_mail_from }}";
EMAIL_TO="{{ lynis_scan_email }}";

SEPARATOR="--------------------------------------------------------------------------------"

echo "Starting a lynis scan"
lynis audit system

if [ -f /var/log/lynis-report.dat ]; then
cat /var/log/lynis-report.dat | grep 'warning\[\]' | sed -e 's/^warning\[\]\=/warning: /g' > ${WARNING_DATA}
cat /var/log/lynis-report.dat | grep 'suggestion\[\]' | sed -e 's/^suggestion\[\]\=/suggestion: /g' > ${SUGGESTION_DATA}
mv /var/log/lynis-report.dat ${DATA}

# [START] append header
WARNING_HEADER="Warnings ($(cat "$WARNING_DATA" | wc -l)):\n$SEPARATOR"
SUGGESTION_HEADER="\n\n\nSuggestions ($(cat "$SUGGESTION_DATA" | wc -l)):\n$SEPARATOR"

sed "1s/^/$WARNING_HEADER\n/" ${WARNING_DATA} > ${TMP_DATA}
cat "$TMP_DATA" > ${WARNING_DATA}

sed "1s/^/$SUGGESTION_HEADER\n/" ${SUGGESTION_DATA} > ${TMP_DATA}
cat "$TMP_DATA" > ${SUGGESTION_DATA}

rm "$TMP_DATA"
# [END] append header

cat "$WARNING_DATA" "$SUGGESTION_DATA" | mail -s "Lynis Report" -r "$EMAIL_FROM" "$EMAIL_TO";
fi

exit 0