iptablesログ解析(IPTables log analyzer)

最終更新日: 2014.02.19

<<トップページ <<新着情報 <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<CentOSで自宅サーバー構築 <<Scientific Linuxで自宅サーバー構築

■概要

IPTables log analyzerを導入して、iptablesのログをWebブラウザからリアルタイムに参照することができるようにする。⇒スナップショット

ファイアウォールWebサーバー+PHPMySQLデータベースが構築済であること


■IPTables log analyzerインストール

[root@fedora ~]# wget http://jaist.dl.sourceforge.net/sourceforge/iptablelog/iptablelog-v0.9.tar.bz2
 ← IPTables log analyzerダウンロード

※最新版のURLはダウンロードページで確認すること

[root@fedora ~]# tar jxvf iptablelog-v0.9.tar.bz2 ← IPTables log analyzer展開

[root@fedora ~]# mv iptablelog/ /var/www ← IPTables log analyzer展開先ディレクトリを所定のディレクトリへ移動

[root@fedora ~]# rm -f iptablelog-v0.9.tar.bz2 ← ダウンロードしたファイルを削除

■IPTables log analyzer用データベース作成

(1)IPTables log analyzer用データベース作成
IPTables log analyzerはiptablesのログをMySQLデータベースに保存するため、IPTables log analyzer用のデータベースをMySQLに作成する。
[root@fedora ~]# mysql -u root -p ← MySQLへrootでログイン
Enter password:  ← MySQLのrootパスワード応答
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.0.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database iptablelog; ← iptablelogデータベース作成
Query OK, 1 row affected (0.00 sec)

mysql> grant all on iptablelog.* to iptablelog_user@localhost identified by 'パスワード';
 ← iptablelogデータベースアクセスユーザ作成
Query OK, 0 rows affected (0.00 sec)

mysql> exit ← MySQLからログアウト
Bye

[root@fedora ~]# cat /var/www/iptablelog/conf/iptables.mysql | mysql -u iptablelog_user -pパスワード iptablelog
 ← iptablelogデータベース初期化※パスワードはiptablesデータベースアクセスユーザのパスワード

(2)php-mysqlインストール
IPTables log analyzerはPHPで動作するため、PHPからMySQLデータベースへ接続するためのパッケージであるphp-mysqlをインストールする。
[root@fedora ~]# rpm -q php-mysql ← php-mysqlインストール確認
パッケージ php-mysql はインストールされていません。

[root@fedora ~]# yum -y install php-mysql ← php-mysqlインストール※インストールされていない場合のみ

■ulogdインストール

iptablesのログをulogd経由でMySQLデータベースに保存するため、ulogdをインストールする。
[root@fedora ~]# yum -y install ulogd ulogd-mysql

■ulogd設定

iptablesのログをulogd経由でMySQLデータベースへ保存するように設定する。
[root@fedora ~]# vi /etc/ulogd.conf 
#
# ulogd_BASE.so - interpreter plugin for basic IPv4 header fields
#                 you will always need this
plugin="/usr/lib/ulogd/ulogd_BASE.so"
plugin="/usr/lib/ulogd/ulogd_LOCAL.so" ← 追加

# output plugins.
#plugin="/usr/lib/ulogd/ulogd_LOGEMU.so" ← コメントアウト
#plugin="/usr/lib/ulogd/ulogd_OPRINT.so"
plugin="/usr/lib/ulogd/ulogd_MYSQL.so" ← コメント解除
#plugin="/usr/lib/ulogd/ulogd_PGSQL.so"
#plugin="/usr/lib/ulogd/ulogd_SQLITE3.so"
#plugin="/usr/lib/ulogd/ulogd_PCAP.so"

[MYSQL]
table="ulog"
pass="パスワード" ← iptablelogデータベースアクセスユーザパスワード設定
user="iptablelog_user" ← iptablelogデータベースアクセスユーザ名設定
db="iptablelog" ← iptablelogデータベース名設定
host="localhost"

■ulogd起動

[root@fedora ~]# /etc/rc.d/init.d/ulogd start
ulogd を起動中:                                            [  OK  ]

[root@fedora ~]# chkconfig ulogd on

[root@fedora ~]# chkconfig --list ulogd 
ulogd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

■iptables設定

iptablesログをulogdに出力するようにiptablesを設定する。
ここでは、例として、受信パケットのiptablesのログ記録設定を示す。
iptables -A INPUT -m limit --limit 1/s -j ULOG --ulog-nlgroup 1 --ulog-prefix 'INPUT'

ファイアウォール構築(iptables)を参考にしてファイアウォール設定スクリプトを作成している場合は、ファイアウォール設定スクリプトの既存ログ出力コマンド直後へ、ulogdへのログ出力コマンドを追加してファイアウォール設定スクリプトを実行すること(下記参照)
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -m limit --limit 1/s -j ULOG --ulog-nlgroup 1 --ulog-prefix 'INPUT' ← 追加

■IPTables log analyzer設定

[root@fedora ~]# cp /var/www/iptablelog/conf/config.php.default /var/www/iptablelog/conf/config.php

[root@fedora ~]# vi /var/www/iptablelog/conf/config.php
# Password of the MySQL database
$db_password="パスワード"; ← iptablelogデータベースアクセスユーザパスワード設定

# File Path to your installation
$file_base="/var/www/iptablelog"; # i.e. "/var/www/html/iptablelog" ← iptablelogWebディレクトリ名設定

[root@fedora ~]# cp /var/www/iptablelog/conf/iptables_resolve.default /etc/cron.hourly/iptables_resolve
 ← IPアドレス名前解決スクリプトを定期自動実行ディレクトリへコピー

[root@fedora ~]# vi /etc/cron.hourly/iptables_resolve ← IPアドレス名前解決スクリプト編集
$iptablelog_path = "/var/www/iptablelog"; # Change this ← iptablelogWebディレクトリ名設定

db_connect("localhost","iptablelog","iptablelog_user", "パスワード");  # Change these db settings
 ← iptablelogデータベースアクセス情報設定

■Apache設定

[root@fedora ~]# vi /etc/httpd/conf.d/iptables.conf ← IPTables log analyzer用Apache設定ファイル作成
Alias /iptablelog /var/www/iptablelog

※以下は内部からのみ参照できるようにする場合のみ
<Location /iptablelog>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 192.168.1.0/24 ← 内部ネットワークアドレスを指定
</Location>

[root@fedora ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映
httpd を再読み込み中:                                      [  OK  ]

■IPTables log analyzer確認

http://サーバー名/iptablelog/でアクセスして、「IPTables logs」ページが表示されることを確認




▲このページのトップへ戻る

LPIロゴ Copyright© 2012 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします