Fedora Core 4 Snort



Snortとは・・・

Linuxサーバーへの不正アクセスを検知するシステムです。
これらはIDS(Intrusion Detection System)と呼ばれるものです。

ここではSnortのインストールを行うほかに、自動でルールファイル(不正アクセスの判断を行う設定ファイル)を自動更新するOinkmasterをインストールします。

pcre-develのインストール

snortに必要な pcre-devel をパッケージインストールします。

# yum install pcre-devel

FedoraのFTPサーバーに問い合わせがかかり、最新版のpcre-develがダウンロードされます。
最後にインストールしていいか(y/n)と聞かれるので y でインストールします。

snort のソースファイルの入手・RPMパッケージ化

Snortの公式サイト [http://www.snort.org/] からSnortソースファイルを入手します。
執筆時点で最新版は 2.4.3 になります。

# wget http://www.snort.org/dl/current/snort-2.4.3.tar.gz

ダウンロードしたソースファイルをRPMパッケージ化します。
(多少時間がかかります。)

#rpmbuild -tb snort-2.4.3.tar.gz

インストール

作成したRPMパッケージをインストールします。
作成したRPMパッケージは /usr/src/redhat/RPMS/i386/ 配下にできています。

# rpm -ivh /usr/src/redhat/RPMS/i386/snort-2.4.3-1.i386.rpm

自動Update設定の変更

Snortはソースファイルからインストールしたのyumの自動アップデートの対象外にするため、その旨を記載します。
(※Snortのアップデートは手動で公式サイトを確認して行います。)

# vi /etc/yum.conf

下記を追記します。

exclude=snort

※2つ以上列記する場合は半角スペースで区切って記述します。

Snort設定

Snortの設定は /etc/snort/snort.conf で行います。
テキストエディタで /etc/snort/snort.conf を開きます。

# 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

preprocessor portscan: $HOME_NET 4 3 portscan.log
  • var HOME_NET 192.168.1.0/24 は内部のネットワークを指定します。
  • var EXTERNAL_NET !$HOME_NET は内部ネットワークを不正アクセスとしない
  • preprocessor portscan: $HOME_NET 4 3 portscan.log はポートスキャンを検地するようにします。

ルールファイルの入手

Snortはルールファイルによって動作します。
公式サイト から最新のルールファイルを入手します。

# wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_pr/snortrules-pr-2.4.tar.gz

ルールファイルの解凍とコピー

入手したルールファイルを解凍

# tar xzf snortrules-pr-2.4.tar.gz

解凍したルールファイルを /etc/snort 配下にコピーします。

# cp -r rules/* /etc/snort/rules/

Snortのログ設定

cronからエラーログが送られてくることがあるので、その対処を記載変更します。 テキストエディタで /etc/logrotate.d/snort を開きます。

# /etc/logrotate.d/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の起動

起動スクリプトができているので、それを利用して起動します。

# /etc/rc.d/init.d/snort start

ルールファイルの自動更新化

ルールファイルの自動更新には oinkmaster を利用します。

oinkmaster の入手・展開・コピー

Oinkmasterの公式サイト http://oinkmaster.sourceforge.net/download.shtml で最新版を確認してください。

# wget http://jaist.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-1.2.tar.gz
# tar xzf oinkmaster-1.2.tar.gz
# mkdir /usr/local/oinkmaster
# cp -r oinkmaster-1.2/* /usr/local/oinkmaster/

Oinkmasterの設定

Oinkmasterの設定ファイルをテキストエディタで開き修正します。

# vi /usr/local/oinkmaster/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の実行スクリプトの作成

crontabを用いて自動で処理できるようにします。

# vi oinkmaster.sh

下記の内容を記載します。

#!/bin/sh

cd /usr/local/oinkmaster/
./oinkmaster.pl -C oinkmaster.conf -o /etc/snort/rules/ -q|logger -t oinkmaster

パーミッションを変更

# chmod 700 oinkmaster.sh

Oinkmaster起動確認

# ./oinkmaster.sh

実行すると /etc/snort/rules/ 配下にあるルールファイルが最新のものに更新されるはずです。

# ls -la /etc/snort/rules/ | grep community
-rw-r--r--  1 root root    876 12月 12 16:56 community-dos.rules
-rw-r--r--  1 root root   1868 12月 12 16:56 community-exploit.rules
-rw-r--r--  1 root root    249 12月 12 16:56 community-ftp.rules
-rw-r--r--  1 root root   1376 12月 12 16:56 community-game.rules
-rw-r--r--  1 root root    663 12月 12 16:56 community-icmp.rules
-rw-r--r--  1 root root   2412 12月 12 16:56 community-imap.rules
-rw-r--r--  1 root root    948 12月 12 16:56 community-inappropriate.rules
-rw-r--r--  1 root root    257 12月 12 16:56 community-mail-client.rules
-rw-r--r--  1 root root   1750 12月 12 16:56 community-misc.rules
-rw-r--r--  1 root root    621 12月 12 16:56 community-nntp.rules
-rw-r--r--  1 root root    775 12月 12 16:56 community-oracle.rules
-rw-r--r--  1 root root  10796 12月 12 16:56 community-sid-msg.map
-rw-r--r--  1 root root   1759 12月 12 16:56 community-sip.rules
-rw-r--r--  1 root root   1003 12月 12 16:56 community-smtp.rules
-rw-r--r--  1 root root   3279 12月 12 16:56 community-sql-injection.rules
-rw-r--r--  1 root root    852 12月 12 16:56 community-virus.rules
-rw-r--r--  1 root root   2332 12月 12 16:56 community-web-attacks.rules
-rw-r--r--  1 root root   4122 12月 12 16:56 community-web-cgi.rules
-rw-r--r--  1 root root   1089 12月 12 16:56 community-web-client.rules
-rw-r--r--  1 root root    254 12月 12 16:56 community-web-dos.rules
-rw-r--r--  1 root root   1473 12月 12 16:56 community-web-iis.rules
-rw-r--r--  1 root root   7518 12月 12 16:56 community-web-misc.rules
-rw-r--r--  1 root root   1912 12月 12 16:56 community-web-php.rules

作成したスクリプトをcrontabへ登録します。

# crontab -e

下記の内容を追記します。
(毎日 00:00 にOinkmasterを起動し、最新のルールファイルを更新するようにしています。)

00 00 * * * /root/oinkmaster.sh


Last-modified: 2015-04-23 (木) 15:20:21 (1329d)