Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

AWS

Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

改ざん検知はPCI DSSなどセキュリティを強化する際には、必ず必要になります。

例えば侵入者にサーバに侵入されがWebコンテンツを改ざんなどの被害を受けてしまうことがあります。

そのような場合に、早期に改ざんを検知し、被害を最小限に食い止める必要があるためです。

改ざん検知用ソフトウェアとして有名なのはTripwireですが、有料版のTripwire Enterpriseと無料で利用できるOSS版Tripwireがあります。

今回は、Amazon Linux2上でOSS版のtripwireを使うための手順について説明します。

工夫したところは、通常のOSS版のtripwireだと、メールでレポートを送信する機能はあるのですが、ログに出力することができません。サーバ台数が多くなると一台一通メールが送られるとチェックするだけでかなり時間がかかってしまい煩わしいです。そのため、スクリプトを使って改ざん検知の結果をログに出力するようにしました。

ちなみにAmazon Linuxでも同じ手順で使用できました。

EPELリポジトリの有効化

amazon-linux-extras enable epel
yum clean metadata
yum install epel-release

Tripwireのインストール

yum install tripwire
Importing GPG key とメッセージが表示される。
Is this ok [y/N]: と聞かれるので yと入力しEnterを押す

サイト鍵を生成する

twadmin --generate-keys --site-keyfile /etc/tripwire/site.key --site-passphrase (任意のサイトパスワード)
Generating key (this may take several minutes)...Key generation complete.

ローカル鍵を生成する

twadmin --generate-keys --local-keyfile /etc/tripwire/`hostname`-local.key --local-passphrase (任意のローカルパスワード)
Generating key (this may take several minutes)...Key generation complete.

設定ファイルを修正する

vim /etc/tripwire/twcfg.txt 

ROOT                   =/usr/sbin
POLFILE                =/etc/tripwire/tw.pol
DBFILE                 =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE             =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE            =/etc/tripwire/site.key
LOCALKEYFILE           =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR                 =/bin/vi
LATEPROMPTING          =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS       =true
EMAILREPORTLEVEL       =3
REPORTLEVEL            =1     # 改ざん検知したファイル名だけを表示させたいのでREPORTLEVELを一番低い1にする
MAILMETHOD             =SENDMAIL
SYSLOGREPORTING        =false
MAILPROGRAM            =/usr/sbin/sendmail -oi -t

設定ファイルを生成する

echo (設定したサイトパスワード) | twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt 
Please enter your site passphrase: 
Wrote configuration file: /etc/tripwire/tw.cfg

ポリシーファイルを生成する

echo (設定したサイトパスワード) | twadmin -m P --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt

データベースの初期化

echo (設定したローカルパスワード) | tripwire -m i -L /etc/tripwire/`hostname`-local.key
Wrote database file: /var/lib/tripwire/(ホスト名).twd
The database was successfully generated.

テストファイルの配置

検知されるか確認するためテスト用のファイルを配置してみます。

touch /root/dummy.txt

ファイルチェックの実行

改ざん検知のチェックをコマンドを実行します。

tripwire --check -s -n

レポートの生成

改ざん検知のレポートを生成します。先ほど配置したファイルが検知されることを確認します。

Added:	"/root/dummy.txt"

チェック用スクリプトの作成

OSSのtripwireだと改ざんチェックの結果を良い感じでログに出力してくれないので、下記のスクリプトを作成してタイムスタンプ付きでログを出力してくれるようにします。

#!/bin/bash

LOG_FILE=/var/log/tripwire/tripwire.log.$(date + %Y%m%d)

mkdir -p /var/log/tripwire

/usr/sbin/tripwire --check -s -n

TIMESTAMP=$(date --iso-8601=seconds)
RESULT=$(/usr/sbin/twprint -m r -r `find /var/lib/tripwire/report/ -type f | sort | tail -n 1` -s)
echo -ne "$RESULT" | while read line
do
  formatted_line=$(echo -n $line | tr -d '":')
  echo "$TIMESTAMP $formatted_line" >> $LOG_FILE
done

CRON設定

下記のようなスクリプトを作成して、1時間に一回改ざんチェックをするようにします。

crontab -e
0 * * * * (チェックスクリプトのパス) > /dev/null 2>&1

あとは出力されたログをkinesisエージェントを使ってS3に送り、Lambda関数を使って日時でチェックをするなどすると良いかなと思います。

関連記事

  1. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWSでファイルや画像などを配置する場所として利用する場所はS3ですが…

  2. PCI DSS

    PCI DSSでデータを暗号化して保存する際の4つのポイント

    今回はデータを暗号化する際の鍵の管理方法についてお話したいと思いま…

  3. AWSでCloudFrontを導入する際に注意する点

    AWS

    AWSでCloudFrontを導入する際に注意する点

    前回の記事でAWSでシステムを構築する際にはCloudFrontを利用…

  4. PCI DSSの12要件とAWSにおける対応方法

    AWS

    PCI DSSの12要件とAWSにおける対応方法

    今回は、AWSを使ってクレジットカード業界のセキュリティ基準であるPC…

  5. AWS

    CloudFrontでLambda@Edgeを本番運用してわかった注意点

    CloudFrontでLambda@Edgeを一年間運用しまして、気づ…

  6. AWSをセキュリティを高めて安全に使う方法

    AWS

    AWSをセキュリティを高めて安全に使う方法

    今回はAWSを安全に使うための方法についてご説明します。AWSは簡…

最近の記事

  1. Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    AWS

    Amazon Linux2でOSS版tripwireを使って改ざん検知する方法
  2. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法
  3. AWS

    CloudFrontでLambda@Edgeを本番運用してわかった注意点
  4. AWS

    AWSでS3を安全に使うための2つのポイント
  5. AWS

    AWSでOSの脆弱性対策をする方法
PAGE TOP