ヘルプ
ログ関連
ご利用サーバから監視センターへログを送信する際は、AES128による暗号化処理が実施されています。
攻撃遮断くんエージェントは、以下のログを収集して監視センターへ送信します。
■Linux
/var/log/messages
/var/log/secure
/var/log/maillog
/var/log/httpd/error_log
/var/log/httpd/access_log
/var/log/auth.log
■Windows
1)Eventlog
- Security.evtx
- Application.evtx
- System.evtx
2)WEBサーバ
・IISの場合 : exYYMMDD.log
・Apacheの場合 : error_log, access_log
※ログファイルパスが異なる場合は、設定ファイル(ossec.conf)を編集することで対応が可能です
攻撃遮断くんが対応するアクセスログのフォーマットは下記のとおりです。
※異なるログフォーマットをご利用の場合はサポート窓口までお問い合わせ下さい
■Apache
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
"%h %l %u %t \"%r\" %>s %b"
■Nginx
'$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent";
■IIS
date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-querysc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs(User-Agent) cs(Cookie) cs(Referer)
LTSV形式のアクセスログは、監視センターでログデコーダを最適化することで対応が可能です。
サポート窓口まで以下の情報をご提供ください。
・ログサンプル
・ログフォーマット
・ネットワーク構成(テキストベースの簡易図)
攻撃遮断くんは以下のいずれかのログローテーションに対応します。
1. 毎日ローテートしている
2. ローテート時の最新ファイルに日付を含まない
3. ローテートをしていない
監視対象ログは複数指定が可能です。
また、ログ設定数の制限はありません。
メール機能(postfix等)を使用していない場合は、/var/log/maillogを監視対象にする必要はありません。
※maillogを監視対象のまま設定しても問題はありません
監視センターにログを送信する場合、トラフィック負荷の目安は以下のとおりです。
100~150 byte / 1PV
※ご利用の回線や帯域幅に影響するため明確な負荷は提示できません
※月間数千万PV規模のサイト導入にて動作実績があります
※各販売パートナー様による負荷検証において正常動作を確認いただいております
Apache環境ではmod_dumpostモジュールを有効化することで、POSTデータのログ出力が可能です。
※ミドルウェアの設定内容についてはサポート対象外です。詳細はサービス提供元のドキュメント等をご確認ください。
【手順】
1. apache2-threaded-devをインストール
sudo apt-get install apache2-threaded-dev
2. ログ出力レベルをinfoに変更
ApacheのLogLevel warnからinfoに変更します。
# LogLevel warn
LogLevel info
3. mod_dumpostを任意のディレクトリにコピー
git clone https://github.com/danghvu/mod_dumpost
4. mod_dumpostのディレクトリに移動
# cd mod_dumpost
5. mod_dumpostをインストール
1行目 "APXS = apxs" を "APXS = apxs2"に変更後、make実行します。
# vi Makefile
# make
# make install
6. Apacheを再起動
# /etc/init.d/apache2 restart
7. 動作確認
POSTリクエストを送信します。
# curl http://127.0.0.1/ -X POST -d "testdata"
# tail /var/log/apache2/error.log
[Fri Jun 17 13:03:52.800420 2016] [:info] [pid 13441] [client 127.0.0.1:12345] "POST / HTTP/1.1" testdata
【ログサイズ変更】
POST通信を出力するとログファイルのサイズが大きくなるため注意が必要です。
ログサイズを制限する場合は以下の設定を変更してください。
設定ファイル:apache2.conf
# Postデータサイズ上限を5120に設定
DumpPostMaxSize 5120
※初期設定では1048576(1MB)まで出力されます
%表記が使用できます。
%Y -> 西暦4ケタ(yyyy)
%y -> 西暦2ケタ(yy)
%m -> 月2ケタ(mm)
%d -> 日2ケタ(dd)
例
access_20170901.log → access_%Y%m%d.log
※ワイルドカード(*)は使えません。
サイトごとにアクセスログを分けている場合は、すべてのアクセスログを監視対象に設定する必要があります。
<設定ファイル>
ossec.conf
<記載箇所>
アクセスログごとに「<localfile>~</localfile>」およびログファイルパスを記載してください。
Apache環境ではmod_dumpostモジュールをインストール・有効化することでPOSTデータのログ出力が可能です。
※ミドルウェアの設定内容についてはサポート対象外です。詳細はサービス提供元のドキュメント等をご確認ください。
【手順】
1. mod_dumpostパッケージをダウンロード
# git clone https://github.com/danghvu/mod_dumpost
2. 必要なパッケージをインストール
# yum install httpd-devel
3. mod_dumpost モジュールをインストール
# cd mod_dumpost
# make
# make install
4. Apache設定を変更
設定ファイル:httpd.conf
# mod_dumpostをロード
LoadModule dumpost_module modules/mod_dumpost.so
# ログ出⼒レベルを”info”に変更
LogLevel info
5. Apacheを再起動
# /etc/init.d/httpd reload
6. 動作確認
POSTリクエストのデータがerror_logに出力されていることを確認
# curl http://127.0.0.1/ -X POST -d "testdata"
# tail /var/log/httpd/error_log
[Sun Feb 13 08:32:58.505435 2022] [:info] [pid 6162:tid 140297044453120] [client 127.0.0.1:47340] "POST / HTTP/1.1" testdata
【ログサイズ変更】
POST通信を出力するとログファイルのサイズが大きくなるため注意が必要です。
ログサイズを制限する場合は以下の設定を変更してください。
設定ファイル:apache2.conf
# Postデータサイズ上限を5120に設定
DumpPostMaxSize 5120
※初期設定では1048576(1MB)まで出力されます
■ Modsecurity遮断の場合
攻撃遮断くんをModsecurity構成で導入している環境でmod_dumpostを有効化した場合、error_logには中間機器のIPアドアレスが出力されます。
【Modsecurity遮断構成例(中間機器あり)】
───────────────────────────────────────────
クライアント[203.0.113.100] -> 中間機器[192.168.0.1] -> Webサーバ(Apache)
───────────────────────────────────────────
この場合、mod_remoteipを有効化することでerror_logにクライアントのIPアドレス出力が可能です。
※Apache2.4ではmod_remoteipがインストールされています(Apache2.2では別途インストールが必要です)
【手順】
1. Apache設定を変更
設定ファイル:httpd.conf
# mod_remoteipモジュールをロード
LoadModule remoteip_module modules/mod_remoteip.so
# 中間機器(192.168.0.1)が付与するXFFヘッダーはクライアントIPアドレスと判定
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.168.0.1
#「%a」にREMOTE_ADDRを出力
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
2. Apacheを再起動
# /etc/init.d/httpd reload
3. 攻撃遮断くん設定を変更
遮断対象をX-Forwarded-ForヘッダーからREMOTE_ADDRに変更
設定ファイル:/var/ossec/active-response/bin/modsecurity.sh
# 変更前
# SecRule REQUEST_HEADERS:X-Forwarded-For "@Contains ${IP_ADDRESS}" "log,drop,id:${RULEID}, msg:'deny by ossec-agent'"
# 変更後
SecRule REMOTE_ADDR "^${IP_ADDRESS}$" "log,drop,id:${RULEID},msg:'deny by ossec-agent'"
4. 動作確認
POSTリクエスト(中間機器経由)のデータがerror_logに出力されていることを確認
# curl http://example.com/ -X POST -d "testdata"
# tail /var/log/httpd/error_log
[Sun Feb 13 08:32:58.505435 2022] [:info] [pid 6162:tid 140297044453120] [client 203.0.113.100:47340] "POST / HTTP/1.1" testdata
Nginx環境ではnginx.confのlog_format ディレクティブ内に$request_body を追加することで、POSTデータのログ出力が可能です。
※ミドルウェアの設定内容についてはサポート対象外です。詳細はサービス提供元のドキュメント等をご確認ください。
設定ファイル:nginx.conf
# $request_bodyを追加
log_format post '$remote_addr - $remote_user [$time_local] "$request"'
' $status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_content_type" postdata[$request_body]';
# log_format の名称(下記例では「post」)を追加
access_log /var/log/nginx/access.log post;
※監視センターとの接続状況がオフラインの場合はこちらを参照してください
ログフォーマットをカスタマイズしている環境では、ログが監視センターのログデコーダに対応しない場合があります。
監視センターのログデコーダを最適化する場合は、ご利用環境のログ情報(下記3点)をサポート窓口までご連絡ください。
【1】ログフォーマット
ミドルウェアに設定しているログフォーマットをご提供ください。
<ログフォーマット例>
LogFormat ""%{X-Forwarded-For}i" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
【2】ログサンプル
ミドルウェアで出力されたログサンプルをご提供ください。
<ログサンプル例>
"203.0.113.1" 192.168.0.1 - - [06/Aug/2020:12:53:23 +0000] "GET / HTTP/1.1" 200 4897 "-" "UA/1.0"
【3】クライアントIPアドレス情報
検知対象のクライアントIPアドレスが出力されるカラムをログフォーマットもしくはログサンプルからご提示ください。
<例1(ログフォーマットから提示)>
X-Forwarded-For
<例2(ログサンプルから提示)>
203.0.113.1
Webアプリケーションのログローテート設定でcopytruncateオプションを指定している場合は、ローテート後に攻撃遮断くんエージェントの再読み込み処理を追加する必要があります。
【設定例】
-
ログローテート設定にpostrotate~endscriptにエージェント再読み込みの処理コマンドを追記
#vi /etc/logrotate.d/httpd
──────────────────────────────────────
/var/log/httpd/*log {
copytruncate
postrotate
/var/ossec/bin/ossec-control reload > /dev/null 2>&1 || true
endscript
}
──────────────────────────────────────
※copytruncateはファイルコピー後、コピー元のログの内容を削除するオプションです
※エージェントの再読み込み設定がない場合は、ログ監視に失敗し検知や遮断が正常に動作しない可能性があります