初めてのmakeserverTOP > サーバ運用/管理 > Snort

Snortについて

 
Snortとは

ネットワーク型IDS(Intrusion Detection System)です。ネットワークを流れるパケットをキャプチャーし、不審なパケットを検出する機能があります。
「侵入検知システム」などと呼ばれているものです。

「Snort」設定にあたっては以下の3つを設定することになります。

Snort ・・・・・・ネットワーク型侵入検知システム本体
SnortSnarf・・・Snortのログをhtmlフォーマットで出力する為のもの
Oinkmaster・・ルールファイルの更新や管理作業をするもの

 


●snortダウンロード

最新版はこちらで確認してください。

# cd /usr/local/bin
(「cd」コマンドを使って移動)

# wget http://www.snort.org/dl/old/snort-2.8.0.1.tar.gz
(「wget」コマンドを使って「snort」ダウンロード)











# rpmbuild -tb --clean snort-2.8.0.1.tar.gz
(「rpmbuild」コマンドを使って、「snortのrpm」作成)













# rpm -Uvh /usr/src/redhat/RPMS/i386/snort-2.8.0.1-1.i386.rpm
(作成した「snortのrpm」を「rpm」コマンドを使ってインストール)

# rm -f snort-2.8.0.1.tar.gz
(「rm」コマンドを使ってダウンロードした「snort」削除)

# rm -f /usr/src/redhat/RPMS/i386/snort-2.8.0.1-1.i386.rpm
(「rm」コマンドを使って「snortのrpm」削除)

 


●yum設定ファイル編集

# vi /etc/yum.conf
(「vi」エディタを使って設定ファイルを編集。)

exclude=snort
(追記「yum」アップデート対象から「snort」を除外します。)

編集が終わったら設定を保存して終了します。

 


●Snortの設定

# vi /etc/snort/snort.conf
(「vi」エディタを使って設定ファイルを編集。)

var HOME_NET any
 ↓
var HOME_NET 192.168.11.0/24
(内部ネットワークアドレスに変更「各環境に合わせてください。」)

var EXTERNAL_NET any
 ↓
var EXTERNAL_NET !$HOME_NET
(内部ネットワークは不正アクセスとして扱わない様に変更)











編集が終わったら設定を保存して終了します。

 


●Snortルールファイルダウンロード

ルールファイルを入手するため、ここからユーザ登録する。こちらを参考に

ユーザ登録時に入力したメールアドレス宛にメールが送付されるのでログイン

Snortルールファイル「Sourcefire VRT Certified Rules」を
クライアント機にダウンロードする。
(Sourcefire VRT Certified Rules - The Official Snort Ruleset (registered user release)からDL)

ダウンロードしたSnortルールファイルをサーバーへFTPを使用しアップロード
(「home」ディレクトリなど分かるところにアップ。
              分かりやすくする為「/root」にアップ)
ここでは「/home/test」にFTPアップロードし、「/root」へ移動してみます。

# cd /home/test
(「cd」コマンドを使って移動)

# mv snortrules-snapshot-CURRENT.tar.gz /root





(「mv」コマンドを使ってファイルを「/」へ移動)

# cd /root
(「cd」コマンドを使って移動)

# ls




(「ls」コマンドを使って確認)

# tar zxvf snortrules-snapshot-CURRENT.tar.gz
(ルールファイルを展開)

# cp -r rules/* /etc/snort/rules/
(「cp」コマンドを使ってルールファイルを設定ファイル「/etc/snort/rules/」のディレクトリへコピー)

# rm -rf doc/ rules/ so_rules/
# rm -f snortrules-snapshot-CURRENT.tar.gz
(「rm」コマンドを使って削除)

 


●snort自動起動

# chkconfig snortd on
# chkconfig --list snortd
# /etc/init.d/snortd start







 


●Snort動作確認

# vi /etc/snort/snort.conf
(「vi」エディタを使って設定ファイルを編集。)

alert icmp $HOME_NET any -> $HOME_NET any
(最終行に追記)

編集が終わったら設定を保存して終了します。


# /etc/rc.d/init.d/snortd restart
(「Snort」再起動)

ping <各のサーバアドレス>
(クライアント機からサーバ宛に「ping」をします。)

# cat /var/log/snort/alert
(ログの確認)

06/01-00:56:35.534762 [Priority: 0] {ICMP} 192.168.11.20 -> 192.168.11.10
06/01-00:56:35.534870 [Priority: 0] {ICMP} 192.168.11.10 -> 192.168.11.20
06/01-00:56:36.534943 [Priority: 0] {ICMP} 192.168.11.20 -> 192.168.11.10
06/01-00:56:36.534995 [Priority: 0] {ICMP} 192.168.11.10 -> 192.168.11.20
06/01-00:56:37.534921 [Priority: 0] {ICMP} 192.168.11.20 -> 192.168.11.10
06/01-00:56:37.534935 [Priority: 0] {ICMP} 192.168.11.10 -> 192.168.11.20
06/01-00:56:38.534908 [Priority: 0] {ICMP} 192.168.11.20 -> 192.168.11.10
06/01-00:56:38.534955 [Priority: 0] {ICMP} 192.168.11.10 -> 192.168.11.20
(こんな感じで出ていると思います。)

# vi /etc/snort/snort.conf
(「vi」エディタを使って設定ファイルを編集。)

alert icmp $HOME_NET any -> $HOME_NET any
(削除)

編集が終わったら設定を保存して終了します。


# /etc/rc.d/init.d/snortd restart
(「Snort」再起動)

 


●SnortSnarfインストール

# mkdir /usr/local/snortsnarf
(「mkdir」コマンドを使ってをインストールするディレクトリ作成)

最新版はここで確認してください。

# wget http://www.snort.org/dl/contrib/data_analysis/snortsnarf/SnortSnarf-050314.1.tar.gz
(「wget」コマンドを使ってダウンロード)










# tar xzvf SnortSnarf-050314.1.tar.gz
(「tar」コマンドを使ってダウンロードしたファイルを展開)

# cp ./SnortSnarf-050314.1/snortsnarf.pl /usr/local/snortsnarf/
# cp -r ./SnortSnarf-050314.1/include/ /usr/local/snortsnarf/
(先に作ったディレクトリに「snortsnarf.pl」「include」をコピー)

# rm -f SnortSnarf-050314.1.tar.gz
(ダウンロードした「SnortSnarf」を削除)

 


●SnortSnarf設定

# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLMemStorage.pm
(「vi」エディタを使って設定ファイルを編集。)

return @arr->[($first-1)..$end];

return @arr[($first-1)..$end];
(「->」削除)










編集が終わったら設定を保存して終了します。

# vi /usr/local/snortsnarf/include/SnortSnarf/HTMLAnomMemStorage.pm
(「vi」エディタを使って設定ファイルを編集。)

return @arr->[($first-1)..$end];

return @arr[($first-1)..$end];
(「->」削除)











編集が終わったら設定を保存して終了します。

 


●Apacheの設定

# mkdir /var/www/snort
(「mkdir」コマンドを使ってHTML出力先ディレクトリ作成)

# vi /etc/httpd/conf.d/snort.conf
(「vi」エディタを使って設定ファイルを新規作成。)

------ここから追加------
Alias /snort /var/www/snort

<Location /snort>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.11
</Location>
------ここまで追加------
(「Allow from 192.168.11」は各環境に合わせてください。)

編集が終わったら設定を保存して終了します。

# /etc/init.d/httpd restart
(「Apache」再起動)

 


●SnortSnarf自動実行スクリプト作成

# cd
(一度ディレクトリを移動します。)

# vi snortsnarf.sh
(「vi」エディタを使ってスクリプト新規作成。)

------ここから追加------
#!/bin/sh

cd /usr/local/snortsnarf
./snortsnarf.pl -dns -d /var/www/snort /var/log/snort/alert
------ここまで追加------

編集が終わったら設定を保存して終了します。

# chmod 700 snortsnarf.sh
(スクリプトに実行権限付加)

# crontab -e
(編集)

00 * * * * /root/snortsnarf.sh

編集が終わったら設定を保存して終了します。
(1時間毎ににスクリプトが実行される)

# /etc/init.d/crond restart
(「cron」再起動)

表示画面確認
「http://<サーバ名>/snort/」を入力し画面を確認してみましょう。

 


●SnortSnarf日本語化

# cd /usr/local/snortsnarf/include/SnortSnarf/
(「cd」コマンドを使ってディレクトリを移動します。)

# mv HTMLOutput.pm HTMLOutput.pm.org
(「mv」コマンドを使って設定ファイルの名前を変更)

最新版はここで確認

# wget http://mt-fuji.ddo.jp/~fujito/Linux/secu_soft/s2/HTMLOutput.pm
(「wget」コマンドを使って日本語化「HTMLOutput.pm」をダウンロード)

# vi HTMLOutput.pm
(「vi」エディタを使って設定ファイルを編集。)

sub ip_to_num {
if ($_[0] ne '*undef*') {
my @byte= split(/\./,$_[0]);
return $byte[0]*256*256*256 + $byte[1]*256*256 + $byte[2]*256 + $byte[3];
}
}
赤字部分を追記











sub print_page_head {
my($self,$page_title,$page_type,$page_h2) = @_;

print "<html>\n<head>\n";
print "<title>$page_title</title>\n";
print "<meta http-equiv=\"Content-type\" content=\"text/html; charset=Shift_JIS\">\n";
(文字化け対策の為追記)












編集が終わったら設定を保存して終了します。

# cd
(「cd」コマンドを使って一度「/」に移動)

# ./snortsnarf.sh
(「snortsnarf.sh」スクリプトを実行)


「http://<サーバー名>/snort/」にアクセスをし日本語化を確認。





























 


●Oinkmasterインストール

最新版はここで確認

# mkdir /usr/local/oinkmaster
(「mkdir」コマンドを使ってインストール先ディレクトリ作成)

# cd /usr/local/bin
(「cd」コマンドを使ってディレクトリを移動します。)

# wget http://prdownloads.sourceforge.net/oinkmaster/oinkmaster-2.0.tar.gz?download
(「wget」コマンドを使ってダウンロード)

# tar zxvf oinkmaster-2.0.tar.gz
(ダウンロードしたファイルを展開)

# cp -r oinkmaster-2.0/* /usr/local/oinkmaster/
(先に作ったディレクトリに「oinkmaster-2.0/*」をコピー)

# rm -rf oinkmaster-2.0
# rm -f oinkmaster-2.0.tar.gz
(ダウンロードしたファイル、展開したディレクトリを削除)

 


●Oinkmaster設定

# vi /usr/local/oinkmaster/oinkmaster.conf
(「vi」エディタを使って設定ファイルを編集。)

# Example for Snort-current ("current" means cvs snapshots).
# url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-CURRENT.tar.gz

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<Oink Code>/snortrules-snapshot-CURRENT.tar.gz
(「#」を解除し、「Oink Code」を貼り付ける。)

# 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-CURRENT.tar.gz

(「#」を解除し、変更する。)











編集が終わったら設定を保存して終了します。

 


●Oinkmaster実行

# /usr/local/oinkmaster/oinkmaster.pl -C /usr/local/oinkmaster/oinkmaster.conf -o /etc/snort/rules/

# ls -l /etc/snort/rules/|grep community
(「community」がちゃんとダウンロードされているか確認)

 


●スクリプトファイル作成

# cd
(「cd」コマンドを使って一度ディレクトリを移動)

# vi oinkmaster.sh
(「vi」エディタを使って設定ファイルを新規作成。)

------ここから追加------
#!/bin/sh

/usr/local/oinkmaster/oinkmaster.pl -C /usr/local/oinkmaster/oinkmaster.conf -o /etc/snort/rules/
/etc/rc.d/init.d/snortd restart
------ここまで追加------

編集が終わったら設定を保存して終了します。

# chmod 700 oinkmaster.sh
(スクリプトに実行権限付加)

# crontab -e
(編集)

00 5 * * * /root/oinkmaster.sh

編集が終わったら設定を保存して終了します。
(毎日5時にスクリプトが実行される)

# /etc/init.d/crond restart
(「cron」再起動)

 


●cronからのエラーメール対処

以下の赤字のところはないので、「cron」実行時にエラーメールが「root」宛に飛んでくる
非常にうっとうしいので、こないようにします。

# vi /etc/logrotate.d/snort
(「vi」エディタを使って設定ファイルを編集。)

/var/log/snort/alert /var/log/snort/*log /var/log/snort/*/alert /var/log/snort/*/*log {

/var/log/snort/alert /var/log/snort/*log {
赤字のところは削除













編集が終わったら設定を保存して終了します。
 

サーバ運用/管理記事一覧

NET-SNMP

SNMPとはルータやコンピュータ、端末など、ネットワークに接続された通信機器を監視・制御するためのプロトコル。制御の対象となる機器はMIBと呼ばれる管理情報データベース...

Tripwire

Tripwireとはファイルやディレクトリが追加された場合や、削除された場合などを監視するためのツールで、ファイル改ざん検知として定番なので導入します。&nbs...

Denyhosts

DenyHostsとはこれはSSHブルートフォース対策に使います。辞書攻撃とかで、適当なユーザ名・パスワードを使って、侵入をしようとします。1分間に10回以上は...

Fail2ban

Fail2banとはこれも、「denyhosts」同様にログをチェックして、設定以上に認証に失敗していたら失敗したIPアドレスからの接続を拒否するよくあるブルートフ...

munin

muninとは設定が簡単で、システムを監視していろいろな値を取得してグラフ化してくれるものです。ディスク使用量・MySQL・IOstat・トラフィック・プロセス数・VM...

nagios

Nagios(3系 日本語版)とは指定されたホストやサービスを監視し、障害や復旧時にアラートをメール通知するなどの機能があるオープンソースで作られた総合監視ツール。...

nagios-Plugin

Nagios Pluginとは監視ツール「Nagios」はプラグインを追加することで監視する項目を増やすことができます。デフォルトでの監視項目では少し足りない部分が...

nagios-downtime

Nagios downtimeとはデフォルトで、ダウンタイムという機能があります。これはその時間帯を非監視にすることです。監視はするけど通知はしないというところでし...

nagios cheker

Nagios Chekerとは自宅ではFireFoxをブラウザとして使用しています。nagios関連で面白いものを見つけたので、アップしてみました。FireFoxの...

Snort

Snortとはネットワーク型IDS(Intrusion Detection System)です。ネットワークを流れるパケットをキャプチャーし、不審なパケットを検出する機能が...

Clam Antivirus

Clam AntiVirusとはLINUX用のフリーのアンチウイルスソフト ●Clam AntiVirusインストール# yum -y --e...

amavisd-new

amavisd-new送受信されるメールに対してウィルスチェックをするように設定をする。「postfix」「Clam AntiVirus」が設定済みであることが前提...

awstats

AWStatsとはAWStats (awstats6.95 日本語)アクセス解析・ログ解析「awstats」とは、アクセスを解析して、グラフィカルに表示するツールです。...