不正アクセスを検知するシステム Snort を導入します。
導入には、
不正アクセス検知システムにSnort。
不正アクセスログをWebブラウザ上で確認できるようにSnortSnarf。
ルールファイルを自動で最新の状態にするためのOinkmaster。
がセットとして必要になります。
============ Snort の導入 ============
①snort のインストール
GNOME端末より
# su + 管理者権限パスワード
---------------- 困ったさん情報メモ ------------------------------------------------
# wget http://www.snort.org/dl/snort-2.8.3.1.tar.gz
# wget http://www.snort.org/dl/prerelease/2.8.4-4-beta/snort-2.8.4.beta.tar.gz
等をダウンロードしてインストールを色々と試みましたが、結果、NG。
最終的にバイナリー版で搭載OKとなりました。
---------------- ---------------- ---------------- ---------------- ---------------- --
# wget http://www.snort.org/dl/binaries/linux/snort-2.8.3.1-1.FC7.i386.rpm
→ snort(バイナリー版)ダウンロード
# rpm -Uvh snort-2.8.3.1-1.FC7.i386.rpm
→ インストールします。
* snort 最新版を確認しましょう。
* ここで、依存性エラーが出た場合は更にパッケージをインストールします。
* 下記は当サイト構築時に依存性エラーにより必要になったパッケージの覚え書きです。
* 必要なパッケージは環境により違ってきますので、参考として下さい。
(補足) *.src.rpm、*.nosrc.rpm などのソースパッケージ(SRPM)をリビルドすることにより、
*.i386.rpm、*.noarc.rpm などのバイナリパッケージ(RPM)を作ることができます。
* リビルドで搭載する場合は
例) rpmbuild -tb --clean snort-2.8.3.1.tar.gz とします。
---------------- バイナリパッケージ作成に必要なパッケージ ----------------
# yum install autoconf → インストール
# yum install automake → インストール
# yum install pcre-devel → インストール
# yum install libpcap-devel → インストール
# wget http://jaist.dl.sourceforge.net/sourceforge/flex/flex-2.5.35.tar.gz → wget でダウンロード
# tar zxvf flex-2.5.35.tar.gz → 解凍します。
# cd flex-2.5.35 → 解凍先ディレクトリへ移動
# ./configure && make && make install → flexインストール
# cd → 解凍ディレクトリから移動
# wget http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz → wget でダウンロード
# tar zxvf bison-2.4.1.tar.gz → 解凍します。
# cd bison-2.4.1 → 解凍先ディレクトリへ移動
# ./configure && make && make install → bisonインストール
# cd → 解凍ディレクトリから移動
# rm -rf flex-2.5.35 → 解凍ディレクトリ削除
# rm -rf bison-2.4.1 → 解凍ディレクトリ削除
# rm -f flex-2.5.35.tar.gz → ダウンロードしたファイルを削除
# rm -f bison-2.4.1.tar.gz → ダウンロードしたファイルを削除
--------------------------------------------------------------------- 以上 ------------------
②yum 設定ファイルの確認(アップデート対象より削除)
GNOME端末より
# vi /etc/yum.conf
exclude=snort → (yumのアップデート対象から除外--エラーメール対応)
* 今後のアップデートは手動で行います。
③Snort 設定ファイルの編集
GNOME端末より
# vi /etc/snort/snort.conf → snort設定ファイル編集
var HOME_NET any
→ var HOME_NET 192.168.1.0/24(内部ネットワークアドレスを指定)
var EXTERNAL_NET any
→ var EXTERNAL_NET !$HOME_NET(内部からのアクセスを除外)
④Snort ルールファイルの導入
1. Snort - the de facto standard for intrusion detection/preventionでユーザ登録をします。
2. oinkcode と url の取得
下記の様に、登録時に送信したメールに返信があります。
Thank you for registering at www.snort.org.
Your Snort account has been successfully created.
Please use the information below to login at www.snort.org.
User Name: abc@def.com
Password: xxxxxxxx
This password was randomly generated so, for security purposes,
we recommend that you change it when you first login. You can
do this at https://www.snort.org/reg-bin/userprefs.cgi
上記のアドレスをクリックしログイン画面にあるログイン名とパスワードに入力
Snort login: abc@def.com
Password: xxxxxxxx
次に oinkcode を取得し、画面の指示に従い url を決定します。
3. ルールファイルのダウンロードと登録
GNOME端末より
# wget http://www.snort.org/pub-bin/oinkmaster.cgi/-oinkcode here-/-filename-
* 今回の-filename-は snortrules-snapshot-2.8.tar.gz としました。
(実際のファイルの中身はFC5がベースかも?)
# tar zxvf snortrules-snapshot-2.8.tar.gz
→ snortルールファイル(Sourcefire VRT Certified Rules)解凍
# /bin/cp -r rules/* /etc/snort/rules/ → ルールファイルを所定のディレクトリへコピー
# rm -rf doc/ rules/ so_rules/ etc/ → 解凍してできたディレクトリを削除
# rm -f snortrules-snapshot-2.8.tar.gz → ダウンロードしたファイルを削除
# wget http://www.snort.org/pub-bin/oinkmaster.cgi/-oinkcode here-/-filename-
→ snortコミュニィティルールファイル(Community Rules)ダウンロード
* 今回の-filename-は Community-Rules-2.4.tar.gz としました。
# tar zxvf Community-Rules-2.4.tar.gz → 解凍
# /bin/cp -r rules/* docs/* /etc/snort/rules/ → ルールファイルを所定のディレクトリへコピー
# rm -rf rules/ docs/ → 解凍してできたディレクトリを削除
# rm -f Community-Rules-2.4.tar.gz → ダウンロードしたファイルを削除
⑤snort のログロテートエラーへの対処
GNOME端末より
# vi /etc/logrotate.d/snort → snort用ログロテート設定ファイル編集
/var/log/snort/alert /var/log/snort/*log /var/log/snort/*/alert /var/log/snort/*/*log {
→ /var/log/snort/alert /var/log/snort/*log { (エラーに起因する部分を削除します。)
⑥snort の起動
GNOME端末より
# /etc/rc.d/init.d/snortd start → snort起動
# chkconfig snortd on → snortを自動起動に設定
# chkconfig --list snortd → snort自動起動設定の確認
⑦snort の動作確認
GNOME端末より
# tail /var/log/snort/alert → Snortのログを表示して確認します。
* 上手く動作していると、アクセス記録が随時書き込まれます。
============ SnortSnarf の導入 ============
①perl-Time-modules のインストール
GNOME端末より
# yum install perl-Time-modules → SnortSnarfに必要です。
# vi /etc/yum.conf → yum設定ファイル編集
exclude=snort perl-Time-modules
→ 追加(yumのアップデート対象から除外--エラーメール対応)
* 今後のアップデートは手動で行います。
②SnortSnarf のインストール
GNOME端末より
# wget http://www.snort.org/dl/contrib/data_analysis/snortsnarf/SnortSnarf-050314.1.tar.gz
# tar zxvf SnortSnarf-050314.1.tar.gz → 解凍
# mkdir /usr/local/snortsnarf → インストール先ディレクトリ作成
# cp SnortSnarf-050314.1/snortsnarf.pl /usr/local/snortsnarf/
→ snortsnarf.plをSnortSnarfインストール先へコピー
# cp -r SnortSnarf-050314.1/include/ /usr/local/snortsnarf/
→ includeディレクトリをSnortSnarfインストール先へコピー
# rm -rf SnortSnarf-050314.1 → 解凍してできたディレクトリを削除
# rm -f SnortSnarf-050314.1.tar.gz → ダウンロードしたファイルを削除
* SnortSnarf 最新版を確認しましょう。
③SnortSnarf実行時エラーへの対処
GNOME端末より
# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLMemStorage.pm
return @arr->[($first-1)..$end]; → return @arr[($first-1)..$end]; (変更)
# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLAnomMemStorage.pm
return @arr->[($first-1)..$end]; → return @arr[($first-1)..$end]; (変更)
④Webサーバー設定
GNOME端末より
# mkdir /var/www/snort → SnortSnarfのHTML出力先ディレクトリ作成
# vi /etc/httpd/conf.d/snort.conf → SnortSnarf用Webサーバー設定ファイル作成
---------- 作成内容(LAN内からのみアクセスする場合) ----------
Alias /snort /var/www/snort
<Location /snort>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24
</Location>
------------------------------------------------------------------------
---------- 作成内容(外部からもアクセスする場合) ----------
<Location /snort>
Order deny,allow
Deny from All
Allow from All
Allow from ::1
</Location>
------------------------------------------------------------------------
# /etc/rc.d/init.d/httpd reload → Webサーバーに反映
# chmod 700 snortsnarf.sh → 実行権限付与
⑤SnortSnarf 実行スクリプト作成
GNOME端末より
# vi snortsnarf.sh → SnortSnarf 実行スクリプト作成
---------- 作成内容 ----------
cd /usr/local/snortsnarf
if [ -s /var/log/snort/alert ]; then
if [ -s /var/log/snort/portscan.log ]; then
./snortsnarf.pl -dns -d /var/www/snort /var/log/snort/alert /var/log/snort/portscan.log
else
./snortsnarf.pl -dns -d /var/www/snort /var/log/snort/alert
fi
fi
------------------------------------
⑥SnortSnarf の動作確認
1. GNOME端末より
# ./snortsnarf.sh → SnortSnarf の実行
2. Webブラウザで
http://サーバー名(ホスト名ドメイン名)/snort/ とします。
⑦SnortSnarf の定期自動実行設定
1. GNOME端末より
# mv snortsnarf.sh /etc/cron.hourly/ → snortsnarf.shを1時間ごとに自動実行
* この他に、クロンタブを利用する方法もあります。
# crontab -e
00 10 * * * /root/snortsnarf.sh → 追記すると毎時10分に実行します。
============ Oinkmaster の導入(ルールファイルの自動更新) ============
①Oinkmaster のンストール
1. GNOME端末より
# wget http://jaist.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
→ Oinkmasterダウンロード
# tar zxvf oinkmaster-2.0.tar.gz → Oinkmaster の解凍
# cp oinkmaster-2.0/oinkmaster.pl /usr/local/bin/
→ oinkmaster.pl を所定のディレクトリへコピー
# cp oinkmaster-2.0/oinkmaster.conf /etc/
→ oinkmaster.conf を所定のディレクトリへコピー
# cp oinkmaster-2.0/oinkmaster.1 /usr/share/man/man1/
→ oinkmaster.1 を所定のディレクトリへコピー
# rm -rf oinkmaster-2.0 → Oinkmaster 解凍先ディレクトリを削除
# rm -f oinkmaster-2.0.tar.gz → ダウンロードした Oinkmaster を削除
②Oinkmaster の設定
1. GNOME端末より
# vi /etc/oinkmaster.conf → Oinkmaster 設定ファイル編集
# Example for Snort-current ("current" means cvs snapshots).
# url = http://www.snort.org/pub-bin/oinkmaster.cgi/-oinkcode-/snortrules-snapshot-2.4.tar.gz
url = http://www.snort.org/pub-bin/oinkmaster.cgi/-oinkcode here-/-filename- → 追加
* -oinkcode here-はこのページの上段にある
「3. ルールファイルのダウンロードと登録」で使用したものと同じです。(再度取得:ログイン)
* 今回の-filename-も はこのページの上段にある
「3. ルールファイルのダウンロードと登録」で使用したものと同じ
(snortrules-snapshot-2.8.tar.gz) です。
# Example for Community rules
# url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz
url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules-2.4.tar.gz → 追加
* 今回の -filename- はこのページの上段にある
「3. ルールファイルのダウンロードと登録」で使用したものと同じ
(Community-Rules-2.4.tar.gz) です。
③Oinkmaster の動作確認
GNOME端末より
# oinkmaster.pl -o /etc/snort/rules/ → Oinkmaster の実行
④Oinkmaster の定期自動実行設定
GNOME端末より
# vi /etc/cron.daily/snort-rule-update → Oinkmaster 定期自動実行スクリプト作成
---------- 作成内容 ----------
#!/bin/sh
/usr/bin/oinkmaster.pl -o /etc/snort/rules/ 2>&1 | logger -t oinkmaster
/etc/rc.d/init.d/snortd restart > /dev/null
------------------------------------
# chmod +x /etc/cron.daily/snort-rule-update
→ 定期自動実行スクリプトへ実行権限付与(file の実行属性を on にする)
* パーミッションの指定方法には絶対方式と相対方式がある。
絶対方式は8進数の数字によって指定する。
下記は相対方式で、
・ u,g,o,a ... 所有者、グループに属するユーザ、その他のユーザ、全員
・ r,w,x ... 読み込み属性、書き込み属性、実行属性
・ +/- ... 属性を on にする / off にする
があります。これは現在のパーミッションの一部だけを変更する際に便利です。
いやー、、お疲れ様です。
完成しました。