変更検知Tripwire リスクの顕在化を未然に予防

変更検知Tripwire でサーバ内改竄検知

変更検知Tripwire は非常に実績のあるツールであり、日本でもセキュリティ要件の高い官庁での導入が非常に多いツールでもある。経済産業省の情報処理推進機構 (IPA) において、改ざん検知のソフトウェアとして推奨され、現在でもOSSの「Open Source Tripwire」と製品版の「Tripwire Enterprise」が存在し、変更検知やファイル改竄検知のデファクトスタンダードと言われている。

変更検知Tripwire

変更検知ツールTripwire とは

トリップワイヤ・ジャパン株式会社

Tripwire インストール

インストールログ AlamaLinux8

[root@aq3 ~]# dnf --enablerepo=epel -y install tripwire
[root@aq3 ~]# tripwire-setup-keyfiles
Enter the site keyfile passphrase: XXXX
Verify the site keyfile passphrase: XXXX
Enter the local keyfile passphrase: YYYY
Verify the local keyfile passphrase: YYYY

[root@aq3 ~]# cd /etc/tripwire
[root@aq3 ~]# vi /etc/twcfg.txt
####LOOSEDIRECTORYCHECKING =false
LOOSEDIRECTORYCHECKING =true

[root@aq3 ~]# twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
[root@aq3 ~]# vi /usr/local/bin/twpolmake.pl
#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# ----------------------------------------------------------------
# Usage:
# perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------
$POLFILE=$ARGV[0];
 
open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;
 
while (<POL>) {
    chomp;
    if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
        $myhost = `hostname` ; chomp($myhost) ;
        if ($thost ne $myhost) {
            $_="HOSTNAME=\"$myhost\";" ;
        }
    }
    elsif ( /^{/ ) {
        $INRULE=1 ;
    }
    elsif ( /^}/ ) {
        $INRULE=0 ;
    }
    elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
        $ret = ($sharp =~ s/\#//g) ;
        if ($tpath eq '/sbin/e2fsadm' ) {
            $cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
        }
        if (! -s $tpath) {
            $_ = "$sharp#$tpath$cond" if ($ret == 0) ;
        }
        else {
            $_ = "$sharp$tpath$cond" ;
        }
    }
    print "$_\n" ;
}
close(POL) ;

[root@aq3 ~]# perl /usr/local/bin/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new
[root@aq3 ~]# twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg /etc/tripwire/twpol.txt.new

[root@aq3 ~]# tripwire --init
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/aq3.mdjg.net.twd
The database was successfully generated.

[root@aq3 ~]# tripwire --check

設定ファイルを消す(textplan)

[root@aq3 ~]# rm -f /etc/tripwire/twcfg.txt
[root@aq3 ~]# rm -f /etc/tripwire/twpol.txt*

※Tripwire設定ファイル(テキスト版)を復元する場合
twadmin -m f -c /etc/tripwire/tw.cfg > /etc/tripwire/twcfg.txt
※ポリシーファイル(テキスト版)を復元する場合
twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt

変更検知Tripwireの除外設定

[root@aq3 ~]# echo ! "/var/lib/tripwire/`hostname`.twd ;" >> /etc/tripwire/twpol.txt.new
[root@aq3 ~]# echo ! "/tmp/tripwire.log ;" >> /etc/tripwire/twpol.txt.new
[root@aq3 ~]# echo ! "/var/log/sa ;" >> /etc/tripwire/twpol.txt.new
[root@aq3 ~]# echo ! "/etc/sysconfig/iptables ;" >> /etc/tripwire/twpol.txt.new
[root@aq3 ~]# twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg /etc/tripwire/twpol.txt.new
[root@aq3 ~]# tripwire --init
[root@aq3 ~]# vi /etc/cron.daily/tripwire-check
/usr/sbin/tripwire --init -P YYYY
[root@aq3 ~]# /etc/cron.daily/tripwire-check

先ほど変更したファイルがレポートに反映されています。

Modified:
"/etc/cron.daily/tripwire-check"

===============================================================================
Error Report:
===============================================================================

No Errors

-------------------------------------------------------------------------------
*** End of report ***

Open Source Tripwire 2.4 Portions copyright 2000-2018 Tripwire, Inc.  Tripwire is a registered
trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
for details use --version. This is free software which may be redistributed
or modified only under certain conditions; see COPYING for details.
All rights reserved.
Integrity check complete.
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/aq3.mdjg.net.twd
The database was successfully generated.

Tripwire運用後の除外設定

# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
# vi /etc/tripwire/twpol.txt

# twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg /etc/tripwire/twpol.txt
# tripwire --init
# rm *.txt -f

脆弱性対策

脆弱性診断・脆弱性リスク管理双方にバランスの取れたソリューション

企業の競争力の源泉となる重要な機密情報と、機密情報を取り扱うIT システムに対する様々なリスク要素の識別と定量化は、組織的課題として取り上げられます。機密情報の漏えいやサイバー攻撃による深刻な損害をもたらずリスク要素は、IT システムの脆弱性に起因するケースが多く、それら脆弱性を早期に発見し、解消することにより、リスクの顕在化を未然に予防することが重要です。

企業や組織の脆弱性対策における課題

  1. 脆弱性の発見
  2. リスクの定量化
  3. 対応方針や具体的解決法の策定
  4. 対応実施状況の追跡
  5. 対応プロセスの改善・最適化

組織のセキュリティコンプライアンス遵守ポリシーが曖昧の場合が多い。また、中途半端な技術や時代遅れの技術に慢心している。

結局、情報漏洩やサーバの踏み台利用、Webページの改竄などのリスクの顕在化は、IT システム担当者あるいは技術者の怠慢がもたらすことが多い。早期に発見することも出来ず、顕在化を未然防ぐことはできず、いつリスクが発生したかもわからない。変更検知Tripwireを導入して終わりとしないよう心がけよう。

変更管理/改ざん検知 何を監視すれば良い?

  1. Webコンテンツ
    変更管理/改ざん検知の対象として、OSの重要なファイルの整合性を保つ
  2. アプリケーションの構成ファイル
    HTTPサーバやWebアプリケーションサーバの実行ファイル、ライブラリファイル、設定ファイル、データファイル、ログファイルを監視
  3. WebサーバのOS構成ファイル
  4. DBサーバとDBの構成ファイル
  5. ネットワーク機器

門やドアの施錠を忘れた家

サーバの脆弱性を守る者たち
  • IDS(Intrusion Detection System)
  • IPS(Intrusion Prevention System)
  • WAF(Web Application Firewall)

IDS/IPSはファイアウォールと同じく、ネットワーク上の通信を監視して通信の可否を判断するセキュリティシステムですが、OS/Webサーバの脆弱性を突いた攻撃を防ぐことに特化している。

SQLインジェクション、クロスサイトスクリプティング、OSコマンドインジェクションなど、正常なリクエストを装っているためファイアウォールでは検知する。

関連記事: