サーバーへの不正アクセスを検知するシステム「snort-2.4.4-1.fc5.i386.rpm」をFC-5にインストールしました。
Snortをダウンロードします。*最新版をダウンロードしてください。
[root@server ~]# wget http://ftp.kddilabs.jp/Linux/packages/fedora/extras/5/i386/snort-2.4.4-3.fc5.i386.rpm
–12:47:40– http://ftp.kddilabs.jp/Linux/packages/fedora/extras/5/i386/snort-2.4.4-3.fc5.i386.rpm
=> `snort-2.4.4-3.fc5.i386.rpm.1′
ftp.kddilabs.jp をDNSに問いあわせています… 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp|192.26.91.193|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 963,142 (941K) [application/x-rpm]
100%[==============================================>] 963,142 535.35K/s
12:47:42 (534.58 KB/s) – `snort-2.4.4-3.fc5.i386.rpm.1′ を保存しました [963142/963142]
Snortをインストールします
[root@server ~]# rpm -ivh snort-2.4.4-3.fc5.i386.rpm
準備中… ########################################### [100%]
1:snort ########################################### [100%]
ダウンロードしたファイルを削除します
[root@server ~]# rm -f snort-2.4.4-3.fc5.i386.rpm
SnortSnarfのインストール
/usr/local/ディレクトリへ移動します
[root@server ~]# cd /usr/local/
Time-modulesをダウンロードします
[root@server local]# wget http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Time-modules-2003.1126.tar.gz
–00:13:35– http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Time-modules-2003.1126.tar.gz
=> `Time-modules-2003.1126.tar.gz’
search.cpan.org をDNSに問いあわせています… 216.52.237.136
search.cpan.org|216.52.237.136|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 302 Moved Temporarily
場所: http://ftp.cpan.jp/authors/id/M/MU/MUIR/modules/Time-modules-2003.1126.tar.gz [続く]
–00:13:36– http://ftp.cpan.jp/authors/id/M/MU/MUIR/modules/Time-modules-2003.1126.tar.gz
=> `Time-modules-2003.1126.tar.gz’
ftp.cpan.jp をDNSに問いあわせています… 219.101.183.186
ftp.cpan.jp|219.101.183.186|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 22,296 (22K) [application/x-tar]
100%[===================================================================>] 22,296 –.–K/s
00:13:36 (8.00 MB/s) – `Time-modules-2003.1126.tar.gz’ を保存しました [22296/22296]
Time-modulesを解凍します
[root@server local]# tar zxvf Time-modules-2003.1126.tar.gz
Time-modules-2003.1126/
Time-modules-2003.1126/lib/
Time-modules-2003.1126/lib/Time/
Time-modules-2003.1126/lib/Time/JulianDay.pm
Time-modules-2003.1126/lib/Time/ParseDate.pm
Time-modules-2003.1126/lib/Time/CTime.pm
Time-modules-2003.1126/lib/Time/DaysInMonth.pm
Time-modules-2003.1126/lib/Time/Timezone.pm
Time-modules-2003.1126/t/
Time-modules-2003.1126/t/datetime.t
Time-modules-2003.1126/CHANGELOG
Time-modules-2003.1126/MANIFEST
Time-modules-2003.1126/Makefile.PL
Time-modules-2003.1126/README
解凍してできたディレクトリへ移動します
[root@server local]# cd Time-modules-2003.1126
Makefileを作成します
[root@server Time-modules-2003.1126]# perl Makefile.PL
Writing Makefile for Time-modules
コンパイルします
[root@server Time-modules-2003.1126]# make
Manifying blib/man3/Time::JulianDay.3pm
Manifying blib/man3/Time::ParseDate.3pm
Manifying blib/man3/Time::CTime.3pm
Manifying blib/man3/Time::DaysInMonth.3pm
Manifying blib/man3/Time::Timezone.3pm
Time-modulesをインストールします
[root@server Time-modules-2003.1126]# make install
Installing /usr/lib/perl5/site_perl/5.8.8/Time/JulianDay.pm
Installing /usr/lib/perl5/site_perl/5.8.8/Time/DaysInMonth.pm
Installing /usr/lib/perl5/site_perl/5.8.8/Time/CTime.pm
Installing /usr/lib/perl5/site_perl/5.8.8/Time/ParseDate.pm
Installing /usr/lib/perl5/site_perl/5.8.8/Time/Timezone.pm
Installing /usr/share/man/man3/Time::ParseDate.3pm
Installing /usr/share/man/man3/Time::DaysInMonth.3pm
Installing /usr/share/man/man3/Time::CTime.3pm
Installing /usr/share/man/man3/Time::Timezone.3pm
Installing /usr/share/man/man3/Time::JulianDay.3pm
Writing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Time-modules/.packlist
Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
ダウンロードしたファイルを削除します
[root@server Time-modules-2003.1126]# rm -f /usr/local/Time-modules-2003.1126.tar.gz
/usr/local/ディレクトリへ移動します
[root@server Time-modules-2003.1126]# cd /usr/local/
SnortSnarfをダウンロードします
[root@server local]# wget http://www.snort.org/dl/contrib/data_analysis/snortsnarf/SnortSnarf-050314.1.tar.gz
–11:46:36– http://www.snort.org/dl/contrib/data_analysis/snortsnarf/SnortSnarf-050314.1.tar.gz
=> `SnortSnarf-050314.1.tar.gz’
www.snort.org をDNSに問いあわせています… 199.107.65.177
www.snort.org|199.107.65.177|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 144,103 (141K) [application/x-gzip]
100%[==============================================>] 144,103 111.81K/s
11:46:38 (111.39 KB/s) – `SnortSnarf-050314.1.tar.gz’ を保存しました [144103/144103]
SnortSnarfを解凍します
[root@server local]# tar zxvf SnortSnarf-050314.1.tar.gz
SnortSnarf-050314.1/
SnortSnarf-050314.1/cgi/
SnortSnarf-050314.1/cgi/add_annotation.pl
SnortSnarf-050314.1/cgi/inclist.pl
・
・
・
SnortSnarf-050314.1/utilities/fix_perms.pl
SnortSnarf-050314.1/utilities/IPAddrContact.pl
SnortSnarf-050314.1/utilities/setup_anns_dir.pl
SnortSnarf-050314.1/utilities/setup_sisrdb_dir.pl
解凍してできたディレクトリへ移動します
[root@server local]# cd SnortSnarf-050314.1
/usr/local/snortsnarf/ディレクトリを作成します
[root@server SnortSnarf-050314.1]# mkdir /usr/local/snortsnarf
snortsnarf.plを/usr/local/snortsnarf/ディレクトリへコピーします
[root@server SnortSnarf-050314.1]# cp snortsnarf.pl /usr/local/snortsnarf/
include/を/usr/local/snortsnarf/ディレクトリへコピーします
[root@server SnortSnarf-050314.1]# cp -r include/ /usr/local/snortsnarf/
ダウンロードしたファイルを削除します
[root@server SnortSnarf-050314.1]# rm -f /usr/local/SnortSnarf-050314.1.tar.gz
rootのホームディレクトリへ移動しておきます
[root@server SnortSnarf-050314.1]# cd
Snortの設定
Snortの設定ファイルを編集します
[root@server ~]# vi /etc/snort/snort.conf
var HOME_NET any
↓
var HOME_NET 192.168.1.0/24 ← ネットワークアドレスとネットマスクを指定します
var EXTERNAL_NET any
↓
var EXTERNAL_NET !$HOME_NET ←LAN内マシンからのパケットは除外
preprocessor http_inspect: global \
iis_unicode_map unicode.map 1252
↓
#preprocessor http_inspect: global \ ← コメントアウトします(Snort実行時エラー対処)
# iis_unicode_map unicode.map 1252 ← コメントアウトします(Snort実行時エラー対処)
preprocessor http_inspect_server: server default \
profile all ports { 80 8080 8180 } oversize_dir_length 500
↓
#preprocessor http_inspect_server: server default \ ← コメントアウトします(Snort実行時エラー対処)
# profile all ports { 80 8080 8180 } oversize_dir_length 500 ← コメントアウトします(Snort実行時エラー対処)
preprocessor portscan: $HOME_NET 4 3 portscan.log ← ポートスキャンログを取得するようにするため最下行に追加します
SnortSnarfの設定
SnortSnarfのpmファイル(HTMLMemStorage.pm)を編集します
[root@server ~]# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLMemStorage.pm
return @arr->[($first-1)..$end];
↓
return @arr[($first-1)..$end]; ← ”->”を削除します(SnortSnarf実行時エラー対処)
SnortSnarfのpmファイル(HTMLAnomMemStorage.pm)を編集します
[root@server ~]# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLAnomMemStorage.pm
return @arr->[($first-1)..$end];
↓
return @arr[($first-1)..$end]; ← ”->”を削除します(SnortSnarf実行時エラー対処)
Webサーバー設定
SnortSnarfによるHTML出力先ディレクトリ作成
[root@server ~]# mkdir /var/www/html/snort
Snortの起動
Snortを起動します
[root@server ~]# /etc/rc.d/init.d/snortd start
Starting snort: [ OK ]
SnortSnarfの起動
SnortSnarfの実行スクリプトを作成します
[root@server ~]# vi snortsnarf.sh
#!/bin/sh
cd /usr/local/snortsnarf
./snortsnarf.pl -d /var/www/html/snort /var/log/snort/alert /var/log/snort/portscan.log
Snortが記録した不正アクセスログを入力してHTMLに整形したものを/var/www/html/snort/ディレクトリへ出力します
SnortSnarfの実行スクリプトに実行権限を与えます
[root@server ~]# chmod +x snortsnarf.sh
SnortSnarfを実行します
[root@server ~]# ./snortsnarf.sh
SnortFileInput: input file /var/log/snort/alert exists but is length 0; skipping it
SnortFileInput: input file /var/log/snort/portscan.log exists but is length 0; skipping it
http://サーバーのIPアドレス/snort/ にアクセスして「SnortSnarf start page」というページが表示されることを確認します
SnortSnarf定期自動実行設定
crondを編集します
[root@server ~]# crontab -e
45 0-23/2 * * * /root/snortsnarf.sh > /dev/null 2>&1
2時間おきの45分にSnortSnarfを実行するように追加します
SnortSnarfの日本語化パッチのインストール
SnortSnarfのpmファイル格納ディレクトリへ移動します
[root@server ~]# cd /usr/local/snortsnarf/include/SnortSnarf/
オリジナルのpmファイルをリネーム
[root@server SnortSnarf]# mv HTMLOutput.pm HTMLOutput.pm.org
日本語化対応のpmファイルをダウンロードします
[root@server SnortSnarf]# wget http://mt-fuji.ddo.jp/~fujito/Linux/secu_soft/s2/HTMLOutput.pm
–00:43:13– http://mt-fuji.ddo.jp/~fujito/Linux/secu_soft/s2/HTMLOutput.pm
=> `HTMLOutput.pm’
mt-fuji.ddo.jp をDNSに問いあわせています… 58.188.20.227
mt-fuji.ddo.jp|58.188.20.227|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 86,832 (85K) [text/plain]
100%[===================================================================>] 86,832 277.31K/s
00:43:14 (276.64 KB/s) – `HTMLOutput.pm’ を保存しました [86832/86832]
SnortSnarf日本語化確認
[root@server SnortSnarf]# /root/snortsnarf.sh
SnortFileInput: input file /var/log/snort/alert exists but is length 0; skipping it
SnortFileInput: input file /var/log/snort/portscan.log exists but is length 0; skipping it
http://サーバーのIPアドレス/snort/ にアクセスして「SnortSnarf ページの開始」というページが表示されることを確認
ルールファイルの自動更新 Oinkmasterのインストール
/usr/local/ディレクトリへ移動します
[root@server SnortSnarf]# cd /usr/local/
Oinkmasterをダウンロードします
[root@server local]# wget http://easynews.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
–00:46:33– http://easynews.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
=> `oinkmaster-2.0.tar.gz’
easynews.dl.sourceforge.net をDNSに問いあわせています… 69.16.168.245
easynews.dl.sourceforge.net|69.16.168.245|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 80,111 (78K) [application/x-tar]
100%[===================================================================>] 80,111 135.19K/s
00:46:34 (135.10 KB/s) – `oinkmaster-2.0.tar.gz’ を保存しました [80111/80111]
Oinkmaster解凍
[root@server local]# tar zxvf oinkmaster-2.0.tar.gz
oinkmaster-2.0
oinkmaster-2.0/README.templates
oinkmaster-2.0/oinkmaster.pl
oinkmaster-2.0/FAQ
oinkmaster-2.0/UPGRADING
oinkmaster-2.0/README
oinkmaster-2.0/README.win32
oinkmaster-2.0/README.gui
oinkmaster-2.0/LICENSE
oinkmaster-2.0/INSTALL
oinkmaster-2.0/ChangeLog
oinkmaster-2.0/oinkmaster.1
oinkmaster-2.0/template-examples.conf
oinkmaster-2.0/oinkmaster.conf
oinkmaster-2.0/contrib
oinkmaster-2.0/contrib/create-sidmap.pl
oinkmaster-2.0/contrib/addsid.pl
oinkmaster-2.0/contrib/makesidex.pl
oinkmaster-2.0/contrib/addmsg.pl
oinkmaster-2.0/contrib/README.contrib
oinkmaster-2.0/contrib/oinkgui.pl
ダウンロードしたファイルを削除します
[root@server local]# rm -f oinkmaster-2.0.tar.gz
Oinkmasterの設定
Oinkmasterの設定ファイルの編集をします
[root@server local]# vi /usr/local/oinkmaster-2.0/oinkmaster.conf
# 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
Oinkmasterの起動
rootのホームディレクトリへ移動します
[root@server local]# cd
Oinkmasterの実行スクリプトを作成します
[root@server ~]# vi oinkmaster.sh
#!/bin/sh
cd /usr/local/oinkmaster-2.0/
./oinkmaster.pl -C oinkmaster.conf -o /etc/snort/rules/
Oinkmaster実行スクリプトに実行権限を与えます
[root@server ~]# chmod +x oinkmaster.sh
Oinkmasterを実行します
[root@server ~]# ./oinkmaster.sh
Loading /usr/local/oinkmaster-2.0/oinkmaster.conf
Downloading file from http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules-2.4.tar.gz… done.
Archive successfully downloaded, unpacking… done.
Setting up rules structures… done.
Processing downloaded rules… disabled 0, enabled 0, modified 0, total=138
Setting up rules structures… done.
Comparing new files to the old ones… done.
Updating local rules files… done.
[***] Results from Oinkmaster started 20060330 01:09:10 [***]
[+++] Added rules: [+++]
・
・
・
[+++] Added non-rule lines: [+++]
・
・
・
[+] Added files (consider updating your snort.conf to include them if needed): [+]
・
・
・
Oinkmasterの定期自動起動設定
crond編集
[root@server ~]# crontab -e
00 05 * * * /root/oinkmaster.sh > /dev/null 2>&1
毎日5:00にOinkmasterを実行するように追加します