ネットワークセキュリティHACKS Wiki 第七章 ログの取得 - careerbeat/dit-ehime GitHub Wiki

HACK#72 Syslogサーバによるログの集中管理

HACK#73 Syslogの運用管理

HACK#75 ログの自動解析

HACK#76 ログの自動監視

HACK#77 リモートコンピュータからのログの集約

HACK#78 プロセス監視によるユーザーの行動記録

HACK#79 コンピュータの集中監視

HACK#72 Syslogサーバによるログの集中管理

概要

  • ログを専用のサーバに集約して、ネットワーク上に散在するコンピュータの監視を効率化する
  • ネットワーク上に散在するコンピュータそれぞれがログを管理していると、コンピュータに侵入された場合にログが改ざんされる可能性がある

背景

Linuxのシステムログ

  • 自動的に記録される必要最低限のログをシステムログという
  • UNIX系OSのシステムログは「syslog」が出力する
  • 実際にログを出力しているプログラム(デーモン)は「syslogd」である

システムログの集中管理の必要性

HACK #5で述べた通り、コンピュータのログは改ざんされる可能性がある

HACK #5ではログファイル自体の権限を変更して変更や削除ができないようにした

ここでは、コンピュータのログを別の場所にあるログ専用のサーバに格納して、たとえコンピュータ上のログが改ざんされても改ざん前のログが残るようにする

コンピュータのログをサーバに格納するには、ネットワークでログを転送しなければならない

それを実現するために「syslogd」がリモートコンピュータからログを受信できるようにする

前提知識

CentOS6ではsyslogdの変わりに「rsyslog」が標準のsyslogデーモンとして採用されている

rsyslogの「r」はreliableの頭文字で信頼性を意味する

syslogdはログを転送するためにudpポートを使用するが、rsyslogdはtcpポートを使用されており信頼性が確保されている

そこで、CentOS6の標準で信頼性のあるログ転送が行えるrsyslogdを用いたログの集中管理方法を解説する

ログサーバを安全に運用するための注意点

  • ログサーバのユーザー名とパスワードをほかのサーバと同じにしない(サーバーへの侵入を困難にする)
  • 複数のサーバからログの転送を行う場合、ログサーバの容量を十分に確保する

確認方法

ログ受信側ホスト(ログサーバ)の設定

  1. 「/etc/sysconfig/syslog」に下記を追記しましょう
 SYSLOGD_OPTIONS="-m 0 -r"
 
  1. rsyslog(サーバ側)の設定を行いましょう
 # vi /etc/rsyslog.conf

 #$ModLoad imtcp
 #$InputTCPServerRun 514
   ↓
 $ModLoad imtcp
 $InputTCPServerRun 514 
 
  1. ポートを開放して、rsyslogを再起動しましょう iptables で UDP, TCP の514番ポートを開けておきます
 # vi /etc/sysconfig/iptables
 -A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 514 -j ACCEPT
 # /etc/init.d/iptables restart
 

上記の編集が完了したらrsyslog 再起動します

 # /etc/rc.d/init.d/rsyslog restart
 システムロガーを停止中:                                    [  OK  ]
 システムロガーを起動中:                                    [  OK  ]
 

ログ送信元ホストの設定

  1. rsyslog(クライアント側)の設定を行いましょう  
     # vi /etc/rsyslog.conf
     # authpriv.* 認証に関するログを centos に転送する場合
     authpriv.*  @{受信側のIPアドレス}:514
     
     # 72行目からのコメントを解除して有効にする
     $WorkDirectory /var/lib/rsyslog # where to place spool files
     $ActionQueueFileName fwdRule1 # unique name prefix for spool files
     $ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
     $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
     $ActionQueueType LinkedList # run asynchronously
     $ActionResumeRetryCount -1 # infinite retries if host is down
     
     上記の編集が完了したらrsyslog 再起動します  
     # /etc/rc.d/init.d/rsyslog restart
     システムロガーを停止中:                                    [  OK  ]
     システムロガーを起動中:                                    [  OK  ]
     

以上で設定は完了です

実際にログが送信されているかを以下のように確認しましょう

  • 受信側
tail -f /var/log/secure
  • 送信側 (今回は認証関係のログを送信しているので、sshで確認する)
ssh localhost

受信側にログが出力されない場合はIPアドレスやiptablesの設定が間違っている可能性があります

その場合はiptablesを初期化したり、そもそもログが送信されているかなどを確認して、設定を見直しましょう

ログサーバへ転送されたログは、ログサーバのsyslog.confの内容に従って処理されるので、受信側の設定を見直しましょう

HACK#73 Syslogの運用管理

概要

  • rsyslogのフィルタを利用してログの分類を行う
  • デフォルトではフィルタが設定されていないため、様々なサービスが出力するが分類されていない

背景

syslogやrsyslogのデフォルトの設定では、Sendmailやsudo、BINDなど様々なサービスのログが/var/log/messagesに混在して記録される

そのため、記録されたログの中から該当サービスのログを見つけるのは大変な作業である

そこで、syslogやrsyslogの設定を変更して、ある基準に従ってログが振り分けられるようにしていく

このHACKでは、CentOS6に標準で採用されているrsyslogにおける設定方法を解説していく

前提知識

まず、rsyslogの設定は/etc/rsyslog.confで行う

rsyslog.confのフォーマット

  • スペースまたはタブで区切られた2つのフィールド「selector」と「action」で構成されている
    • selector:取得するログの指定
    • action:取得したログの出力先の指定
selector    action

selector

  • 「facility」と「priority」を「.」(ピリオド)で接続したもの
  • 特定のactionに対して複数のselectorを指定したい場合は、「;」(セミコロン)で接続する
facility.priority{;facility.priority}

facility

  • ログの分類に当たるものである
  • facilityを複数指定する場合は「,」(カンマ)で接続する

facilityで指定できるキーワード

facility 対象のログ
auth(security) 認証サービスのメッセージ(現在はauthprivが推奨されている)
authpriv 認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる)
cron cronのメッセージ
daemon デーモンのメッセージ
kern カーネルのメッセージ
lpr プリンタサービスのメッセージ
mail メールサービスのメッセージ
news ニュースサービスのメッセージ
syslog syslogのメッセージ
user ユーザープロセスのメッセージ
uucp uucp転送を行うプログラムのメッセージ
local0~7 アプリケーションに依存する

※local0からlocal7は、特定のプログラムが所属するfacilityを既存のものと分けたいときに利用する

priority

  • プログラムが出力するメッセージのうち、ログのレベルの重要度を設定する
  • 通常の設定では、指定したpriority以上のログが出力される(重要度の低いpriorityほどメッセージが多くなる)
  • 指定したpriority以下のログを出力したい場合は、priorityの前に「!」をつける
  • 指定したpriorityのみのログを出力したい場合は、priorityの前に「=」をつける
  • priorityを「*」にすると、全てのメッセージを出力できる

priorityで指定できるキーワード

priority 内容
priority 内容
debug デバッグ情報
info 情報
notice 通知
warn 警告
err 一般的なエラー
crit 致命的なエラー
alert 緊急に対処すべきエラー
emerg システムが落ちるような状態

※下になるほど重要度が高くなる

action

  • selectorで指定したログをどこに、あるいはどのように出力するかを設定する
    • ファイルパスを記述すると、どのファイルに出力するかを指定できる
    • 「|」(パイプ)を利用することで、ログを他のプログラムに渡すことができる
    • 「@ホスト名」と記述することで、ログを他のホストに渡すことができる
    • ユーザー名を記述することで、ログを指定したユーザーのコンソールに表示することができる

以上を踏まえて、実際のrsyslog.confの中身を確認してみる

確認方法

*.info;mail.none;authpriv.none;cron.none /var/log/messages 1.
authpriv.* /var/log/secure  2.
mail.* /var/log/maillog  3.
cron.* /var/log/cron   4.
*.emerg *          5.
uucp,news.crit /var/log/spooler   6.
local7.* /var/log/boot.log  7.
  1. authprivとcronを除いたすべてのfacilityでinfo以上のメッセージを/var/log/messagesに出力
  2. authprivのfacilityはすべてのメッセージを/var/log/secureに出力
  3. mailのfacilityはすべてのメッセージを/var/log/maillogに出力
  4. cronのfacilityはすべてのメッセージを/var/log/cronに出力
  5. すべてのfacilityでemergのメッセージをオンラインユーザーのコンソールへ出力
  6. uucpとnewsのfacilityでcrit以上のメッセージを/var/log/spoolerへ出力
  7. local7のfacilityのすべてのメッセージを/var/log/boot.logへ出力

HACK#75 ログの自動解析

概要

  • 「Logwatch」を用いて大量に記録されたログの中から有用な情報だけを取り出す
  • ネットワーク上にある全てのシステムとサービスのログを収集すると、記録される量が膨大になり、必要情報に辿り着くまでに手間がかかる

背景

HACK#73のようにサービスごとにログを分類したとしても、監視対象が多ければ多いほど記録されるログの量も多くなる

その大量に記録されたログの中から、人手で必要な情報を取り出していると時間が余分にかかり、精度も低下する

また、常時監視しているログでは重要なログを見落とす可能性もある

そこで、「Logwatch」を用いてログを自動で解析して必要な情報を取り出す

前提知識

Logwatchとは

  • ログを解析してレポートを作成するツール
  • cronを利用することにより、定期的にログ解析を実行し、その解析結果をメールで送信することができる
  • Logwatchによるログ解析によって、「障害の兆候」や「原因」、「稼働状況」などを知ることができる

下記でLogwatchのインストール、利用方法を解説する

確認方法

まずはLogwatchのインストールを行います。

本にはソースをダウンロードしてコンパイルをしてますが、現在はyumコマンドでインストールすることができます。

# yum install logwatch

インストールが完了するとlogwatchコマンドが使えるようになります。

# logwatch

logwatchコマンドのみを打つと画面にはなにも出力されず、メールのみが送信されます。デフォルトの設定ではrootに対して送信されるようになっています。

# mail
(前略)
>N 14 [email protected]  Tue Mar 21 14:28  42/1508  "Logwatch for localhost.localdomain (Linux)"
& 14
Message 14:
From [email protected]  Tue Mar 21 14:28:38 2017
Return-Path: 
X-Original-To: root
Delivered-To: [email protected]
To: [email protected]
From: [email protected]
Subject: Logwatch for localhost.localdomain (Linux)
Content-Type: text/plain; charset="iso-8859-1"
Date: Tue, 21 Mar 2017 14:28:38 +0900 (JST)
Status: R


 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Tue Mar 21 14:28:38 2017
        Date Range Processed: yesterday
                              ( 2017-Mar-20 )
                              Period is day.
      Detail Level of Output: 0
              Type of Output: unformatted
           Logfiles for Host: localhost.localdomain
  ################################################################## 
 
 --------------------- Disk Space Begin ------------------------ 
(以下略)

このように、メールでログのレポートが届けられます。

標準出力として画面に出力したい場合はオプションに「--print」と付けることでできます。

その他、logwatchのオプションには以下のようなものがあります。

オプション 説明
--print 結果を画面出力する
--save 指定したファイルに出力する
--mailto 指定したメールアドレスにメールが届く
--range 対象期間を設定する
--detail ログの詳細レベルを変更する
--service 指定したサービスのログのみを表示する
--logfile 指定したログファイルのみをチェックする

また、これらのデフォルトの設定は「/usr/share/logwatch/default.conf/logwatch.conf」に記述されています。

設定内容を変更したい場合は、デフォルトのファイルを変更するのではなく、「/etc/logwatch/conf/logwatch.conf」に変更したい内容を記述することで設定できます。

ただ、一つ一つ設定項目を記述していくのが面倒な場合はデフォルトの設定を全てコピーし、その上で変更したい箇所を修正しても良いです。

主な設定内容

オプション 設定例 説明
LogDir /var/log ログの格納先
MailTo [email protected] メールの送信先
Detail Med ログの詳細レベル。0~10の整数、または「Low」「Med」「High」で指定
Archives Yes アーカイブも参照するか
HostLimit Yes 転送されてきたログも対象に含めるか
Range yesterday いつのログファイルをチェックするか。「All」「Today」「Yesterday」から選んで設定

(詳しくはこちらを参照)

また、本に書かれている通り、cronで定期的に1日1回メールが送信されるようにすると日毎にログを管理できるので良いでしょう。

なおこの設定は、yumでlogwatchをインストールすると、自動的にcronに登録されて毎日logwatchが実行されるようになるので、確認しておきましょう。(設定ファイルは「/etc/cron.daily/0logwatch」)

これらの設定を適切に行って、効果的にログのレポートが見れるようにし、重要なログを見逃さないようにしましょう。

HACK#76 ログの自動監視

概要

  • 「Swatch」を用いてログのリアルタイム監視を実現し、イベント発生のアラートが出力されるようにする
  • rsyslogなどでは、ログを解析することはできるがリアルタイムで監視してアラートを出す機能がない

背景

サーバを無防備な状態でインターネットに接続すると、数十分もすればハッキングされてしまい、ポートスキャンや脆弱性をついた攻撃、DoS攻撃などの危険性にさらされる

それらの脅威からサーバを守るためには、ログをリアルタイムで監視して迅速に対処できるようにしておかなければならない

しかし、大量のログの中からそれらを1つ1つ分析して危険性があるかどうかを判断するとなると、人力による対策には限界がある

そこで、任意のログをリアルタイムにチェックしたり、メッセージのパターンを検知してメールを投げたりできる(アラートを出す)ツール「Swatch」でログの監視を行う

前提知識

Swatchとは

  • サーバのログをリアルタイムで監視する
  • 監視しているログと予め指定しておいたパターンがマッチングすると、ターミナルやメールなどでアラートを出すアクションを実行できる

Swatchの設定

Swatchの設定は、任意のファイル名(swatchrc.secureなど)で設定ファイルを作成してそこに記述する

設定ファイルは下記のような書式で記述する

下記の記述によって、「パターンにマッチした文字に対して、特定のアクションをする」という設定ができる

watchfor   /パターン/
     アクション1(行頭にTabを入れる)
     アクション2(行頭にTabを入れる)
     ……

パターン

Perlの正規表現で文字列を指定する

主に下表のようなパターンがよく用いられる

パターン 説明
/hoge/ hogeにマッチする
/hoge/i hogeの大文字、小文字どちらでもマッチする
/hoge huga/
/ho[gn]e/ hogeまたはhoneにマッチする
/hoge/,/huga/ hogeまたはhugaにマッチする(2つのパターンに分ける)
/h..e/ hで始まり、間に任意の1文字が2つ入り、eで終わる場合にマッチする
/ho.*e/ hoで始まり、間に任意の1文字が0回以上の繰り返し、eで終わる場合にマッチする

アクション

パターンに一致した場合に実行される

アクション 説明
echo [modes] ターミナルにメッセージを表示
modesにより表示形式を変更可能
bell [N] beep音をN回鳴らす
数字を指定しなければ1回
exec command 指定したコマンドを実行
スペース区切りでコマンドに引数を渡すことができる
コマンド内で「$0」を指定すると、表示されるログそのものを意味する
「$N」は、N番目のフィールドの文字列を意味する
mail [=address:address:…][,subject=your_text_here] 指定されたアドレスにメールを送信
メールは複数指定できるほか、サブジェクトの指定が可能
アドレスを指定しなければswatchを起動したユーザーに送信
pipe command[,keep_open] パイプでコマンドに結果を渡す
keep_openを指定すると異なるパイプが実行されるか、swatchが終了するまでパイプが実行されたままになる
write [user:user:…] swatchを実行しているサーバにログインしているユーザーに、writeコマンドを使用して結果を送信
throttle hours:minutes:seconds,[use=message|regex] (後述するthreshold推奨)一度検出されたパターンが再度検出された場合、検出を抑えることができる
標準では「use=messges」が指定されており、同じmessagesは検出されない
「use=regex」を指定すると、同じ正規表現の場合は検出されない
continue 通常は、マッチするパターンが検出されると指定されたアクションが実行されて終了するが、continueが指定されている場合はさらにマッチするパターンの検出が行われる
quit マッチするパターンを検出するとswatchが終了
threshold track_by=”/hoge/”,type=limit,count=1,seconds=15といった具合に指定
track_byはマッチしする正規表現
typeはlimit,threshold,both

limitはcountの回数だけログを処理>limitはcountの回数だけログを処理
これは最初のマッチからsecondsの間だけだけ有効
secondsだけ時間が過ぎたら再びリセット

thresholdはcountの回数だけマッチしたら1回ログを処理
再びcountの数だけログがマッチすれば、もう一度ログを処理(例えばcount=3と指定すると、3回マッチして初めて一度だけ処理)

bothはcountの回数だけマッチしたらログを1回だけ処理
thretholdと違い、有効時間内はcountの数だけマッチしてもログは処理されない

echoのmodes

modes 説明
normal 通常の表示
bold 太字で表示
underscore 下線で表示
blink 点滅で表示
inverse 反転して表示
[color] black、red、green、yellow、blue、magenta、cyan、whiteの色で表示
[color_h] black_、red_h、green_h、yellow_h、blue_h、magenta_h、cyan_h、white_hの色で反転
random 上記のものをランダムに使用

確認方法:TODO

HACK#77 リモートコンピュータからのログの集約

概要

  • 複数のコンピュータのログを1箇所に集約して、ログ管理を効率化する
  • コンピュータを管理するためにはログが必要不可欠だが、複数台を管理する場合はログが散在していると管理しづらい

背景

複数のコンピュータは集中管理されるべきである

なぜなら、管理下にあるコンピュータが攻撃を受けた場合、集中管理されていないとその事実に気付くのが遅れる可能性がある

また、HACK#72で述べたようにログが改ざんされて、攻撃の事実を隠される可能性もある

そこで、syslogのネットワークでログを転送する機能を活用して、複数のサーバからのログを集約する

ただし、HACK#72でも述べた通り、syslogは通信にudpを使うため信頼性が確保されずにデータを失ってしまうかもしれない

また、暗号化通信をサポートしていないため何者かに通信内容を読み取られるかもしれない

上記の理由からtcpを使用した信頼性のある通信と暗号化して情報が読み取られないようにすることをサポートしている必要がある

テキストでは、tcpによる通信と暗号化通信をサポートしたsyslog-ngが紹介されているが、CentOS6には標準で同様の機能をサポートしたrsyslogが採用されているのでそれを用いる

前提知識

rsyslogによってリモートコンピュータからログを集約する上で下記の条件を満たしておく必要がある

  • ログを送信するネットワーク機器とログを受信するrsyslog搭載が搭載されたOS(CetnOS6など)
  • ログの送信側と受信側はネットワーク上で疎通が取れていること
  • 受信側は514(UDP)のポートが開放されていること

※UDPのポートを開放するのは、全てのリモートコンピュータがsyslog-ngやrsyslogを使用しているとは限らないため

下記で詳細な設定方法を解説する

確認方法

http://hosii.net/?p=468

本HACKに関して内容を網羅できていないのは暗号化だけなので、暗号化部分についてのみ記載します。

rsyslogの通信をTLS(SSL)化する方法

実行環境

  • log送信先(サーバー) 192.168.1.185 (任意)
  • log送信元(クライアント)192.168.1.77 (任意)

log送信先(サーバー)設定

  1. 必要なパッケージをインストール
# yum -y install rsyslog-gnutls gnutls-utils
  1. CA証明書の作成、サーバ証明書の作成(既に作成している場合はそれを使いまわしても可)
  2. /etc/rsyslog.confの設定
# vim /etc/rsyslog.conf

以下のように設定を行う

# make gtls driver the default
$DefaultNetstreamDriver gtls   ← デフォルトの受信方式をGnuTLSにする
# certificate files            ← 秘密鍵・証明書を設定する
$DefaultNetstreamDriverCAFile /etc/pki/tls/rsyslog/ca.pem    ← 公開鍵へのパスを指定
$DefaultNetstreamDriverCertFile /etc/pki/tls/rsyslog/cert.pem  ← 証明書ファイルへのパスを指定
$DefaultNetstreamDriverKeyFile /etc/pki/tls/rsyslog/key.pem   ← 秘密鍵へのパスを指定
# Provides TCP syslog reception
$ModLoad imtcp                 ← TCPによる通信を実現するモジュールを読み込む
$InputTCPServerStreamDriverMode 1   ← TLSによる暗号化通信を実行する
$InputTCPServerStreamDriverAuthMode anon  ← anonは認証なし
$InputTCPServerRun 514       ← TCPのポートを指定して待ち受けを行う
$AllowedSender TCP, 127.0.0.1, 192.168.1.77    ← 転送を許可するクライアントを指定
  1. rsyslogの再起動

  2. ca.pemをlog送信元(クライアント)にコピー 例:scp /etc/pki/tls/rsyslog/ca.pem 192.168.1.77:(クライアントの鍵置場)

  3. 作成した公開鍵をクライアントに送る (/etc/pki/tls/rsyslogはサーバー側で作成した鍵置場、以降クライアント側でも同じパスで行う)

log送信元(クライアント)の設定

  1. 必要なパッケージをインストール
# yum -y install rsyslog rsyslog-gnutls
  1. 証明書権限変更
# chmod 700 /etc/pki/tls/rsyslog/
  1. /etc/rsyslog.confの設定
# vim /etc/rsyslog.conf
# certificate files - just CA for a client
$DefaultNetstreamDriverCAFile /etc/pki/tls/rsyslog/ca.pem  ← 公開鍵を読み込む
# set up the action
$DefaultNetstreamDriver gtls  ← デフォルトの受信方式をGnuTLSにする
$ActionSendStreamDriverMode 1  ← TLSによる暗号化通信を実行する
$ActionSendStreamDriverAuthMode anon  ← anonは認証なし
authpriv.*             @192.168.1.185:514 ← /var/log/secureに送られるログをサーバーへ転送する
  1. rsyslogの再起動

以上で設定は完了です。実際に暗号化されているか確認します。

確認

sshでのログインをクライアント側で失敗した際のログが暗号化されているか確認する

設定前

# tcpdump -s0 -i eth1 -X port 514
10:02:24.329788 IP 192.168.1.77.35252 > 192.168.1.185.shell: Flags [P.], seq 85797040:85797136, ack 3977553391, win 229, options [nop,nop,TS val 2011838 ecr 3251508], length 96
0x0000:  4500 0094 43e7 4000 4006 7226 c0a8 014d  E...C.@[email protected]&...M
0x0010:  c0a8 01b9 89b4 0202 051d 28b0 ed14 a5ef  ..........(.....
0x0020:  8018 00e5 5f21 0000 0101 080a 001e b2be  ...._!..........
0x0030:  0031 9d34 3c38 363e 4d61 7220 3136 2031  .1.4<86>Mar.16.1
0x0040:  303a 3032 3a32 3520 646f 6a6f 2073 7368  0:02:25.dojo.ssh
0x0050:  645b 3334 3735 5d3a 2046 6169 6c65 6420  d[3475]:.Failed.
0x0060:  7061 7373 776f 7264 2066 6f72 2072 6f6f  password.for.roo
0x0070:  7420 6672 6f6d 2031 3932 2e31 3638 2e31  t.from.192.168.1
0x0080:  2e37 3720 706f 7274 2035 3735 3834 2073  .77.port.57584.s
0x0090:  7368 320a                                sh2.

設定後

# tcpdump -s0 -i eth1 -X port 514
11:02:14.200443 IP 192.168.1.77.35362 > 192.168.1.185.shell: Flags [P.], seq 1932:2129, ack 1974, win 316, options [nop,nop,TS val 5601744 ecr 6864987], length 197
0x0000:  4500 00f9 b00a 4000 4006 059e c0a8 014d  E.....@[email protected]
0x0010:  c0a8 01b9 8a22 0202 8891 91fa bc16 9392  ....."..........
0x0020:  8018 013c 40d6 0000 0101 080a 0055 79d0  ...<@........Uy.
0x0030:  0068 c05b 1703 0200 c0bf a094 a727 b3b7  .h.[.........''..
0x0040:  e469 21e5 a17a 11ce 0d56 cd7b 878a c688  .i!..z...V.{....
0x0050:  c3a9 0da0 8aa8 a9e2 5949 34ac 1543 9c35  ........YI4..C.5
0x0060:  ab7f 8c3d 5bb5 4a96 f779 b367 3bd8 f11f  ...=[.J..y.g;...
0x0070:  2501 2a0d 4786 4ce4 6de5 5c40 bf0b 042a  %.*.G.L.m.\@...*
0x0080:  53e9 9613 453d 850e b120 ddc0 affa 074d  S...E=.........M
0x0090:  197b 377e de00 acf0 3374 ebf5 b42b ec94  .{7~....3t...+..
0x00a0:  9774 c56c cb71 d6ac 5bf6 51a4 e4ca 6388  .t.l.q..[.Q...c.
0x00b0:  e757 06b9 350f 5e2c 430d 3f63 780b 4c48  .W..5.^,C.?cx.LH
0x00c0:  c231 f6a5 ed91 656e e000 a923 58b1 dfbc  .1....en...#X...
0x00d0:  82a5 f1a7 8f45 550d b0d1 c4e3 dba1 455e  .....EU.......E^
0x00e0:  4d0d 9d38 568e efcf 0fe8 7447 653c 7b78  M..8V.....tGe<{x
0x00f0:  1fbd 2be5 214f c1d4 86                   ..+.!O...

設定前ではログの内容が見えてしまっているが、設定後には暗号化されており盗聴することができないようになっている。

HACK#78 プロセス監視によるユーザーの行動記録

概要

  • プロセスアカウンティングによって、ユーザーの素行を監視する
  • 攻撃者は部外者だけに限らず、内部犯行の可能性もある

背景

システムに障害が発生したとき、システム自体に起因すると推測できるものであれば、システムに記録されているログを解析すれば良い

しかし、ユーザーに起因すると推測できるものであれば、ユーザーの行動を常時監視していなければ原因を追究できない

ユーザーの行動を監視するためには、「プロセスアカウンティング」を行うと良い

プロセスアカウンティングは、いつどんなコマンドを実行したのかをCPU時間やメモリの使用量などとともに詳しくログに残すものである

これにより、システムへの侵入やroot権限へのアクセスに加えて、ユーザーの不審な行動を監視することができる

前提知識

CentOS上でプロセスアカウンティングを行うには、psacctパッケージを用いる

psacctのスタートアップスクリプトを実行するだけでプロセスアカウンティングが有効になる

psacctには、記録したデータを操作するために下記のようないくつかのコマンドがある

コマンド 概要
ac ユーザーがコンピュータに接続した合計時間を解析する
引数なしで自分の、-pオプションをつけると全ユーザーのログインした時間を表示する
lastcomm 引数でユーザー名またはコマンド名またはターミナル名を指定すると、ユーザーが実行したコマンドの詳細情報を表示する
sa 引数なしで実行された全てのコマンド、-uオプションをつけるとユーザーごとに実行されたコマンドを集計して表示する

なお、プロセスアカウンティングは実行されたコマンドを全て記録するため、ログが膨大な量になる

そのため、下記サイトを参考にログのローテーションを設定することを推奨する

http://www.usupi.org/sysad/140.html

確認方法

まず、プロセスアカウンティングを行うpsacctパッケージをインストールしましょう。 (CentOS 6.8 の場合はデフォルトでインストールされているので、この操作は必要ないです)

 # yum install -y psacct
 

次に、psacctが自動で立ち上がるように、自動起動設定を行って、psacctを起動しましょう

 # chkconfig psacct on
 # /etc/init.d/psacct start
 

それでは、ユーザーの行動記録を見ていきましょう。

まずは、ユーザーがログインしていた合計時間を調査する方法です。

acコマンドを使用することで、ユーザがコンピュータに接続した時間を表示することができます。 引数なしで実行すると自分がログインした時間を表示することができます。

# ac 
total      336.47

オプション「-p」を使用することで、全ユーザーがログインしていた時間を表示することができます。

# ac -p
root       307.36
dojo       29.11
total      336.47

rootは307.36時間、dojoは29.11時間ログインしていたことが分かります。

これを利用することでどのユーザーがどのくらいログインしたかを調べることができ、証拠の確保することができます。

次に、アカウントログを見ていきましょう。

[lastcomm]コマンドを使用することで、psacctサービスを起動してから実行されたコマンドのログを出力することができます。

また、引数にユーザーやコマンドを指定することで、それに該当するログのみを出力することができます。

# lastcomm root
vim               S     root     pts/0      0.05 secs Tue Mar 21 10:23
touch             S     root     pts/0      0.00 secs Tue Mar 21 10:23
packagekitd       S     root     __         0.01 secs Tue Mar 21 10:18
flush-vboxsf-1     F    root     __         0.00 secs Tue Mar 21 10:18
lastcomm                root     pts/0      0.00 secs Tue Mar 21 10:20
ac                      root     pts/0      0.00 secs Tue Mar 21 10:20
crond             SF    root     __         0.00 secs Tue Mar 21 10:20
sadc                    root     __         0.00 secs Tue Mar 21 10:20
date                    root     __         0.00 secs Tue Mar 21 10:20
date                    root     __         0.00 secs Tue Mar 21 10:20
lastcomm                root     pts/0      0.00 secs Tue Mar 21 10:19
(以下略)
 
# lastcomm touch
touch             S     root     pts/0      0.00 secs Tue Mar 21 10:23
touch             S     root     pts/0      0.00 secs Tue Mar 21 10:19
touch                   root     pts/0      0.00 secs Tue Mar 21 10:19

表示される内容は全て左から順に以下のようになってます。

  • ユーザが実行したプロセスの名前
  • システムのアカウント機能によってつけられるフラグ
  • プロセスが呼ばれたコマンド名。
  • プロセスが使用した CPU ( -c) または実 ( -e) またはシステム ( -s) またはユーザ ( -u) 時間の合計 (秒単位)
  • プロセスが開始 ( -S) または終了 ( -E) した時刻

(http://www.yosbits.com/opensonar/rest/man/freebsd/man/ja/man1/lastcomm.1.html)

これを使用することで、いつ、どのユーザーが、どのコマンドを実行したかという証拠を確保することができます。

また、このログは「/var/account/pacct」に記載されており、削除すると履歴がクリアされてしまう。そして、psacctは機能しなくなるため、再度psacctを起動する必要があるので注意しましょう。

次に、コマンドのカウント情報を見ていきましょう。

[sa]コマンドでアカウントログに記録されているすべてのコマンドについて集計を行い、それらの実行回数、CPU時間などの詳細情報と共に表示することができます。

# sa 
    2414    6284.72re       0.01cp    10706k
       2       2.27re       0.01cp    25888k   prelink
      23    5355.36re       0.00cp    24339k   ***other*
      65       0.00re       0.00cp    28049k   find
    2148       0.19re       0.00cp     9148k   ld-linux-x86-64
      71       1.17re       0.00cp    26582k   awk
      33       0.00re       0.00cp     1790k   tmpwatch
      18       0.00re       0.00cp    26528k   makewhatis*
      12       0.00re       0.00cp    25232k   basename
      11       0.00re       0.00cp    25232k   logger
       3       0.00re       0.00cp    25232k   renice
       3       0.00re       0.00cp    25232k   cat
       3       0.00re       0.00cp    26528k   prelink*
       3       0.00re       0.00cp    25232k   rm
       3       0.00re       0.00cp    25232k   tr
       2     925.70re       0.00cp        0k   flush-vboxsf-1*
       2       0.02re       0.00cp    27456k   logrotate
       2       0.00re       0.00cp    25864k   grep
(以下略)

上記の表示内容は左から以下のようになっている。

  1. 実行回数
  2. 実行時間 (分単位)
  3. ユーザ時間とシステム時間を合計 (分単位)
  4. 1回実行したときの I/O 操作の平均回数
  5. CPU 時間 1 秒あたりのメモリ使用量 (KB 単位)
  6. コマンド名

詳しい内容は以下リンク先に載っているので、参考に。

また、オプション「-u」を用いることで、ユーザーごとにコマンドの実行履歴を集計して表示することができます。

# sa -u
root       0.00 cpu      981k mem accton           
root       0.00 cpu    26288k mem touch            
root       0.03 cpu    27152k mem psacct           
root       0.00 cpu    26656k mem service          
root       0.00 cpu     1018k mem ac               
root       0.00 cpu    25232k mem sleep            
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.01 cpu     1563k mem pgrep            
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    25232k mem sleep            
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu     1563k mem pgrep            
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu     1642k mem lastcomm         
root       0.00 cpu    25232k mem sleep            
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.01 cpu     1563k mem pgrep            
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    27056k mem ksmtuned         *
root       0.00 cpu    26496k mem awk              
root       0.00 cpu    27056k mem ksmtuned         *
root       0.01 cpu     4248k mem unix_chkpwd      
root       0.00 cpu    26304k mem date             
root       0.00 cpu    26304k mem date             
root       0.02 cpu    25248k mem sadc             
root       0.03 cpu    29216k mem crond            *

コマンドごとにCPU時間、メモリの使用量などが確認できます

このコマンドを使用すると、大量のログが出力されるので、一度ファイルに書き出してから[less]コマンドなどで参照することをオススメします。

このコマンドを使用することで、ユーザーが過度にCPU時間を消費していないか、危険なコマンドを実行していないかなど、不審な振る舞いを発見することができます。

難しい内容で、なかなか理解をするのが大変ですが、このコマンドがあるということだけでも覚えておきましょう。

Linuxの理解が深まった時、役に立てる時が来るのではないでしょうか。

HACK#79 コンピュータの集中監視

概要

  • IDSツールを用いてネットワーク上に接続されたシステムの状態を詳細に監視して、不正アクセスの兆候を発見できるようになる
  • コンピュータを単に強固にするだけでは未知の脅威から防御することができない
  • 防御できないものに関しては即座に発見して、迅速な対応をとらなければならない

背景

近年、アンチウイルスソフトやファイアウォールでは防御できない未知の脅威が増加している

その理由は、攻撃者の目的が自己顕示からある目的を果たす(個人情報を盗むなど)ことに変化してきているからである

何としてもコンピュータに不正アクセスしようとしてあらゆる手段を試す

その結果、攻撃者に不正アクセスを許してしまう事態に陥る

つまり、不正アクセスを完全に防御することは不可能なので、不正アクセスされたときに以下に早く気付いて対策をとれるかということが重要になってくる

前提知識

本で紹介されている「ossec HIDS」は統合監視ツールで、下記のような特徴を持つ

  • 多種多様な形態のログファイルの相関分析を行うことができる
  • Windows、Unix等様々なOSに対応しており、クライアント-サーバ方式で大規模なネットワークシステムの監視も行える

※Windowsではクライアント側のossecのみ提供されている

だが、2016年8月18日にJVNより「OSSEC」にはXSSの脆弱性があることが公表された。

以下引用(サイト: http://www.security-next.com/072863)

オープンソースIDS「OSSEC」向けウェブUIに脆弱性 - 利用は非推奨

オープンソースのIDS「Open Source HIDS Security(OSSEC)」向けに提供されているウェブユーザーインターフェースに脆弱性が含まれていることがわかった。修正版が公開されているものの、メンテナンスは中断しており、利用は非推奨とされている。

脆弱性情報のポータルサイトであるJVNによれば、「OSSEC Web UI」にクロスサイトスクリプティング(XSS)の脆弱性「CVE-2016-4847」が含まれていることが判明したもの。ウェブブラウザ上で任意のスクリプトを実行されるおそれがある。

同脆弱性は、馬場将次氏が情報処理推進機構(IPA)へ報告したもので、修正にあたりJPCERTコーディネーションセンターが調整を行った。

同ソフトは、「同0.8」の段階ですでにメンテナンスが行われていない状況だが、OSSECの開発チームでは、今回の報告を受けて2015年12月末に同脆弱性を解消するパッチ「OSSEC Web UI 0.9」を公開している。

しかしながら、メンテナンスを実施していないことを理由に開発チームでは同ソフトの利用を避け、他製品を利用するよう推奨。同プロジェクトのメンテナンスに興味がある開発者を募集している。

内容を簡単に要約すると、この報告の脆弱性の修正は行ったが、開発団体はそれ以降メンテナンスを実施していないため「OSSEC」を利用するのは非推奨としている。

つまり、「OSSEC」をメンテナンスする企業や団体が現れない限り、脆弱性に対する対策は行われないので、利用するにはリスクを伴うことになる。

一応これからメンテナンスを行う企業や団体が現れた時のために、「ossec HIDS」を用いた監視方法について解説するが、実務では使用しないように。使うとしても、「IDS」を理解することを目的として使うこと。

ちなみに、OSSECの代わりになるHIDSとしては以下のようなものがある。

Tripwire

Tripwireとは?

Tripwireとは、コンピュータに保存された情報の変更管理や改竄検知などができるソフトウェア。同名のTripwire社が開発しており、無償で公開されているオープンソース版と、同社が販売している商用版がある。

ファイルやフォルダ/ディレクトリの変更を監視し、いつどのように変更されたかを知ることができる。不正に改竄されたり意図せず破損してしまった場合には以前の状態に戻すことができる。

外部からの不正なアクセスによりシステムが改変されたり重要なファイルが改竄されたりした場合にこれを知ることができることから、ホスト型IDS(Intrusion Detection System:侵入検知システム)の一種として分類されることもある。

また、システムファイルやプログラムファイルを監視させることで、システムの管理や更新が正常に実施されたか確認し、異常がある場合は元の状態に復旧したり原因を調べたりすることもできるため、システム管理ソフトとして紹介されることもある。

(引用: http://e-words.jp/w/Tripwire.html)

また、Tripwireにおいてはこのような記述もあります。

変更検知のデファクトスタンダードTripwire

またクレジットカードの国際カードブランド5社 (American Express、Discover、JCB、MasterCard、VISA) 共同で策定した情報セキュリティ標準の PCI DSS に要求されるセキュリティ・コンプライアンスの遵守のために Tripwire 製品の使用が事実上必須となりました。

(引用: https://www.tripwire.co.jp/about/)

AIDE

AIDEとは?

AIDEとはAdvanced Intrusion Detection Environment の略で、オープンソースの改ざん・侵入検知システムです。

おもにサーバホストのファイル改ざん・侵入検知の機能を有しています。

この分野では『Tripwire』が最も有名です。

AIDEの魅力としては、CentOSやRedhatであれば、外部レポジトリを用いることなく、オリジナルのパッケージが使えることです。

(引用: http://techblog.clara.jp/2015/04/aide_install_and_setting/)

Tripwire  Tripwireには、OSS(GPLv2)のものと有償のものがあります。  OSS版であれば、すぐに使いはじめることが可能ですし、歴史も長いので情報も多いです。  しかし、2000年ごろに有償化され、現在OSSとして入手できるのはLinux版だけです。  CentOS 6では、EPELリポジトリから入手することが出来ます。 AIDE  AIDEは、OSS(GPL)です。  Tripwireが有償化されたため、代替品として使われることが多くなりました。  CentOS 6では、標準リポジトリ(base)に含まれています。

(引用: https://www.fl-ops.com/mori-dojo/archives/53)

これらを考慮すると、実運用で使用する場合はデファクトスタンダードにもなっている「Trip wire」を利用するのが良いでしょう。

確認方法

OSSEC

これから記載するのは「CentOS6.8」の場合です。他のバージョンを利用している場合は適宜そのバージョンに置き換えてください。

まず、ossecのソースアーカイブを入手して展開しましょう

下記サイトより[Server/Agent]と[Web UI]の最新のバージョンを入手します。 (現在2017/03/21の時点で、[Server/Agent]は2.9、[Web UI]は0.9) [Server/Agent] [Web UI] (元サイト: http://ossec.github.io/downloads.html)

左側にある「Latest release」をクリックすることで最新のバージョンのリンクに飛べます。下の方にスクロールして「Downloads」から「Source code(tar.gz)」を入手しましょう。

ダウンロードしたら任意の場所に解凍します。

# tar xf ossec-hids-2.9.0.tar.gz 
# tar xf ossec-wui-0.9.tar.gz 

それではまず、HIDSの方からインストールしましょう。

展開したディレクトリ「ossec-hids-2.9.0」内に移動し、install.shを実行してossecをインストールしましょう

インストール中の問い合わせには主に下記のものがあります

  • 「どの言語にしますか」

    • 「jp」と入力すると日本語になる
  • 「どの種類のインストールを選択しますか」

    • local:1台のコンピュータ上でossecすべてを実行する場合
    • agent,server:クライアント-サーバ方式にする場合 (← 今回はこれ)
  • OSSEC HIDS のインストール先を選択してください [/var/ossec]:

    • 特に指定がなければ「空Enter」で「/var/ossec」にインストールします。
  • 「整合性検査を行うデーモンを実行させますか?」

    • 整合性検査:ファイルが改ざんされていないかを定期的にチェックします
  • 「rootkit 検知エンジンを実行させますか?」

    • rootkit:侵入(攻撃)者がコンピュータへのアクセスに成功したあとで実行するソフトウェアツールのセット
  • 「アクティブレスポンスを有効にしますか?」

    • アクティブレスポンス:既知の侵入者のIPアドレスを一定時間、自動的に遮断する機能
  • 「OSSEC HIDS サーバの IP/hostname アドレスは何ですか?」(agentを選択した場合)

    • serverをインストールしたコンピュータのIPアドレスを指定します

今回はクライアント-サーバ方式で構成します。 実務では1台のコンピュータでIDSを構成することは業務形態上(SOCなど)、あまり考えにくいため、こちらを採用します。

では先にサーバーにインストール(server)して、あとでクライアントにインストール(agent)します。

# cd ossec-hids-2.9.0
# . install.sh
  ** Para instalação em português, escolha [br].
  ** 要使用中文进行安装, 请选择 [cn].
  ** Fur eine deutsche Installation wohlen Sie [de].
  ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el].
  ** For installation in English, choose [en].
  ** Para instalar en Español , eliga [es].
  ** Pour une installation en français, choisissez [fr]
  ** A Magyar nyelvű telepítéshez válassza [hu].
  ** Per l'installazione in Italiano, scegli [it].
  ** 日本語でインストールします.選択して下さい.[jp].
  ** Voor installatie in het Nederlands, kies [nl].
  ** Aby instalować w języku Polskim, wybierz [pl].
  ** Для инструкций по установке на русском ,введите [ru].
  ** Za instalaciju na srpskom, izaberi [sr].
  ** Türkçe kurulum için seçin [tr].
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: (← jpと入力)
 OSSEC HIDS v2.9.0 インストールスクリプト - http://www.ossec.net

 OSSEC HIDS のインストール作業を始めます.
 事前に C コンパイラがシステムにインストールされてる必要があります.

  - システム: Linux localhost.localdomain 2.6.32-642.13.1.el6.x86_64
  - ユーザ: root
  - ホスト: localhost.localdomain


  -- 続けるには ENTER を押してください.また,Ctrl-C で中止します. --


1- どの種類のインストールを選択しますか (server,agent,local または help)? server

  - Server インストールを選択しました.

2- インストール環境を設定しています.

 - OSSEC HIDS のインストール先を選択してください [/var/ossec]: 

    - インストール先を以下に作成します  /var/ossec .

3- 設定 OSSEC HIDS.

  3.1- メール通知を希望しますか? (y/n) [y]: n

   --- メール通知を無効にしました.

  3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]: n

   - syscheck (整合性検査デーモン) は実行させません.

  3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]: n

   - rootcheck (rootkit 検知) は実行させません.

  3.4- アクティブレスポンスによりイベントが発生した際に特定の
       コマンドを実行することができます.
       例えば,ある IP アドレスを遮断することや特定のユーザ
       に対してアクセスを無効にすることができます.
       詳細な情報は以下にあります:
       http://www.ossec.net/en/manual.html#active-response

   - アクティブレスポンスを有効にしますか? (y/n) [y]: n

     - アクティブレスポンスを無効にしました.

  3.5- リモート syslog (port 514 udp) を有効にしますか? (y/n) [y]: y

   - リモート syslog を有効にしました.

  3.6- 以下のログを解析するための設定を準備しています:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog

 - 他のファイルを監視したい場合は,ossec.conf を変更し
   新しいエントリーを追加してください.
   設定に関するどんな質問にも我々の Web サイト http://www.ossec.net
   を訪れることで答えることができます.

上記画面まで表示されると、Enterの入力を求められ、入力するとインストールが始まります。

そして、下記のメッセージが表示され、Enterを更に入力すると完了です。

 - システムは Redhat Linux.
 - 初期スクリプトはブート中に OSSEC HIDS を起動するよう修正しました.

 - 設定が完全に終了しました.

 - OSSEC HIDS を開始させます:
      /var/ossec/bin/ossec-control start

 - OSSEC HIDS を停止させます:
      /var/ossec/bin/ossec-control stop

 - 以下のファイルで設定についての確認と変更ができます /var/ossec/etc/ossec.conf


	OSSEC HIDS の使用に感謝します.
	あなたが何らかの質問,提案したいときや,バグを発見したときは,
	[email protected] まで連絡するか [email protected] にある
	我々の公開メーリングリストを使ってください.
    (http://www.ossec.net/main/support/).

	詳細な情報は http://www.ossec.net にあります.

	---  ENTER を押すと終了します (以下,詳細な情報が続きます).---

 - エージェントを追加する前にアクセスするための認証が必要になります.
   エージェントを追加するか削除する際は 'manage_agents' を実行してください:

   /var/ossec/bin/manage_agents

   詳細な情報は以下にあります: 
   http://www.ossec.net/en/manual.html#ma

上記画面のメッセージにもある通り、serverのインストールが完了したら「manage_agents」を実行するように求められます。

下記の操作をserver上で行い、serverで管理するagentを登録しましょう。

# /var/ossec/bin/manage_agents
:
Choose your actions: A,E,L,R or Q: a ← agentを登録する場合はaを入力します
: A name for the new agent: dojo.local ← agentの名前を入力します
The IP Address of the new agent: 192.168.1.80 ← agentのIPアドレスを入力します
:
Confirm adding it?(y/n) : y ← yを入力してagentを登録します

agentの登録が完了したら、続いてagentに与える鍵を生成します。

生成した鍵をagentがインポートするとserverと通信できます。

:
Choose your actions: A,E,L,R or Q: e ← 鍵を生成する場合はeを入力します
:
Provide the ID of the agent to extract the key (or '\q' to quit): 001 ← agentのIDを入力します

Available agents: 
   ID: 001, Name: ossec_client, IP: 192.168.1.125
Provide the ID of the agent to extract the key (or '\q' to quit): 001

Agent key information for '001' is: 
MDAxIG9zc2VjX2NsaWVudCAxOTIuMTY4LjEuMTI1IGY2ZTdkY2U4MzhiNzY4NzQzZDIyZmZjMmRmOTIwZDNlOTEyMDhiY2RlOGY0MDcxMzg1M2VhODNlOWEyYzMwZjY=

** Press ENTER to return to the main menu.
(Enterを入力して完了)

この時表示された「Agent key」の部分をコピーしておきましょう。後程必要になります。

これでserverの設定は完了です。では次に、agentの設定を行いましょう。

まずはserverと同様の手順で「OSSEC」をインストールします。

差異がある部分のみ記述します。

(前略)

1- どの種類のインストールを選択しますか (server,agent,local または help)? agent

  - Agent(client) インストールを選択しました.

(中略)

3- 設定 OSSEC HIDS.

  3.1- OSSEC HIDS サーバの IP/hostname アドレスは何ですか?: 192.168.1.32

   - サーバの IP を加えています 192.168.1.32

(以下略)

これでインストールは完了です。

次に、下記の操作をagent上で行い、server上で生成した鍵をagentにインポートします

# /var/ossec/bin/manage_agents
:
Choose your action: I or Q: i ← 鍵をインポートする場合はiを入力します
:
Paste it here (or '\q' to quit): ← ここにserver上で生成した鍵をペーストします
:
Confirm adding it?(y/n) : y ← yを入力してagentに鍵をインポートします
Added.
** Press ENTER to return to the main menu.
(Enterを入力して終了する)

これでagent側の設定が完了しました。

あとは、server上およびagent上でossecを起動して監視を開始しましょう。

設定が正しく行われていた場合、/var/ossec/logs/alertsの配下にアラートが書き出されます。 アラートは発生年、付きで名前を付けられたディレクトリに、発生日のファイル名で格納されます。ここでは「/var/ossec/logs/alerts/2017/Mar/ossec-alerts-17.log」(2017/3/17)

アラートファイルを参照すれば、クライアント側からの警告が書き込まれていることを確認できます。(以下の例はsshでの接続に失敗した時)

    tail -f /var/ossec/logs/alerts/2017/Mar/ossec-alerts-17.log

    ** Alert 1489725748.4720: - syslog,sshd,authentication_failed,
    2017 Mar 17 13:42:28 (dojo.local) 192.168.1.80->/var/log/secure
    Rule: 5716 (level 5) -> 'SSHD authentication failed.'
    Src IP: ::1
    User: root
    Mar 17 13:42:30 dojo sshd[11508]: Failed password for root from ::1 port 42358 ssh2
# /var/ossec/bin/ossec-control start

以上でOSSECの説明は終わりです。

冒頭にも説明しましたが、OSSECはメンテナンスがされておらず、脆弱性が晒される危険性は少なからずあるので、実運用では使用しないようにしましょう。

AIDEとTripwire

導入方法についてはそれぞれ下記を参考にしてください。

⚠️ **GitHub.com Fallback** ⚠️