新規作成  にわか鯖管のメモ  ページ一覧  検索  更新履歴  RSS  ログイン

Powered by Hiki Creative Commons License

Snortインストール手順

●概要

侵入検知システム「snort」

●バージョン

snort 2.3.3

●インストール環境

CentOS 4.0

●前提条件

以下がインストールされていること

  • libpcap  ※おそらく初期導入済み
  • pcre    ※おそらく初期導入済み
  • pcre-devel

●参考URL

●Snortのインストール

# yum install pcre-devel
Setting up Install Process
Setting up Repos
addons                    100% |=========================|  951 B    00:00     
base                      100% |=========================| 1.1 kB    00:00     
update                    100% |=========================|  951 B    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
Reading repository metadata in from local files
addons    : ################################################## 2/2
base      : ################################################## 1404/1404
update    : ################################################## 66/66
extras    : ################################################## 25/25
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for pcre-devel to pack into transaction set.
pcre-devel-4.5-3.i386.rpm 100% |=========================| 6.6 kB    00:00     
---> Package pcre-devel.i386 0:4.5-3 set to be updated
--> Running transaction check

Dependencies Resolved
Transaction Listing:
  Install: pcre-devel.i386 0:4.5-3 - base
Total download size: 96 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): pcre-devel-4.5-3.i 100% |=========================|  96 kB    00:00     
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: pcre-devel 100 % done 1/1 

Installed: pcre-devel.i386 0:4.5-3
Complete!
# 
# groupadd snort
# useradd -g snort -d /dev/null -s /bin/false snort
# passwd -l snort
Locking password for user snort.
passwd: Success
#
# cd /usr/local/src/
# wget http://www.snort.org/dl/current/snort-2.3.3.tar.gz
# tar xvzf snort-2.3.3.tar.gz
# cd snort-2.3.3
# ./configure --prefix=/usr/local/snort
#
# make 
# make install
# 

●Snortの設定

# mkdir /etc/snort
# cd /usr/local/src/snort-2.3.3
# cp -r rules /etc/snort/
# rm -rf /etc/snort/rules/Makefile*
#
# cp etc/sid-msg.map /etc/snort/rules      ※シグネチャIDの定義
# cp etc/unicode.map /etc/snort/rules      ※IIS用Unicodeマップファイル
# cp etc/classification.config /etc/snort/rules ※攻撃の警告アラートの優先順位定義ファイル
# cp etc/reference.config /etc/snort/rules    ※アラート内で参照するURLを定義(bugtraq,cve等)
# vi /etc/snort/snort.conf

 内容は下記参照

# 
# mkdir /var/log/snort
# chown -R snort:snort /etc/snort/
# chown -R snort:snort /var/log/snort/
#
[/etc/snort/snort.conf]

環境に応じて、変更すること。

使用するルールは、設置する環境に応じて変更しないと、誤検知が多くなるので注意。

#############################
# Set the network variables
#############################

var HOME_NET any                ※監視対象ネットワークを指定
var EXTERNAL_NET any            ※外部ネットワークを指定
var DNS_SERVERS $HOME_NET
var SMTP_SERVERS $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var TELNET_SERVERS $HOME_NET
var SNMP_SERVERS $HOME_NET
var HTTP_PORTS 80
var SHELLCODE_PORTS !80
var ORACLE_PORTS 1521
var AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]
var RULE_PATH /etc/snort/rules  ※ルールファイルのパスを指定


###############################
# Configure the snort decoder
###############################

config disable_decode_alerts                  ※Snort のデコード段階で生成されるアラートを無効にします
config disable_tcpopt_experimental_alerts     ※実験的なTCP オプションによって生成されるアラートを無効にします
config disable_tcpopt_obsolete_alerts         ※obsolete tcp オプションによって生成されるアラートを無効にします
config disable_tcpopt_ttcp_alerts             ※T/TCP オプションによって生成されるアラートを無効にします
config disable_tcpopt_alerts                  ※オプション長検証アラートを無効にします
config disable_ipopt_alerts                   ※IP オプション長検証アラートを無効にします
config flowbits_size: 256                     ※rulesetの中で使用することができるflowbitタグの最大数を指定します


###########################
# Configure preprocessors
###########################

preprocessor flow: stats_interval 0 hash 2
preprocessor frag2
preprocessor stream4: detect_scans, detect_state_problems, disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_inspect: global iis_unicode_map $RULE_PATH/unicode.map 1252
preprocessor http_inspect_server: server default profile all ports { 80 } oversize_dir_length 500
preprocessor telnet_decode: 21 23 25 80 110 119
preprocessor rpc_decode: 111 32771

# portscan
preprocessor portscan: $HOME_NET 100 5 portscan.log      ※同一ホストへ 5秒間に100のアクセス があった場合に検知
#preprocessor portscan-ignorehosts: 172.16.1.0/24        ※無視するネットワークを指定

# flow-portscan
preprocessor flow-portscan: \
                            server-watchnet [192.168.2.0/24] \
                            unique-memcap 5000000 \
                            unique-rows 50000 \
                            tcp-penalties on \
                            server-scanner-limit 50 \
                            alert-mode once \
                            output-mode msg \
                            server-learning-time 60 \
                            scanner-fixed-window 1 \
                            talker-fixed-window 1 \
                            scanner-sliding-window 1 \
                            talker-sliding-window 1

# sfPortscan
preprocessor sfportscan: proto  { all } \
                         scan_type { all } \
                         memcap { 10000000 } \
                         sense_level { low }

#preprocessor bo
#preprocessor arpspoof
#preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00
#preprocessor perfmonitor: time 300 file /var/snort/snort.stats pktcnt 10000
#preprocessor xlink2state: ports { 25 691 }


######################
# Log setting
######################

output alert_fast: alert
#output alert_full: alert
output log_tcpdump: tcpdump.log
#output alert_syslog: LOG_LOCAL2 LOG_ALERT
#output database: alert, mysql, user=snort password=snort dbname=snort host=localhost sensor_name=sensor1  detail=full
#output alert_unified: filename snort.alert, limit 128
#output log_unified: filename snort.log, limit 128


######################
# Customize rule set
######################

include $RULE_PATH/classification.config
include $RULE_PATH/reference.config

include $RULE_PATH/local.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/oracle.rules
include $RULE_PATH/mysql.rules
include $RULE_PATH/snmp.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/imap.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules
include $RULE_PATH/nntp.rules
include $RULE_PATH/other-ids.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
include $RULE_PATH/chat.rules
include $RULE_PATH/multimedia.rules
include $RULE_PATH/p2p.rules
include $RULE_PATH/experimental.rules

#include threshold.conf

●起動オプション

# /usr/local/snort/bin/snort -u snort -g snort -deD -b -k none -c /etc/snort/snort.conf -i eth0 -l /var/log/snort  -m 022

簡易オプション説明 ※詳細はマニュアル参照

  • -u snortを実行するユーザを指定
  • -g snortを実行するグループを指定
  • -i パケットキャプチャするインターフェースを指定
  • -v コンソールにパケットを表示
  • -d アプリケーションレイヤーのデータを取り込む
  • -e レイヤー2のパケットヘッダを取り込む
  • -D デーモンモードでsnortを起動する
  • -b tcpdumpフォーマットでパケットを記録する ※snort.conf内で指定したほうがいいかも!?
  • -k チェックサムモードを使用するかどうか。使用しなければ、動作は高速になる。Snortの設置状況で多いのは、ルーターやファイアウォールの後ろなので、チェックサムを行う必要がない。指定は、all、noip、notcp、noudp、noicmp、noneです。noneがもっとも高速。
  • -A full/console/none/unsock/cmgのいずれかを付属し、アラートの出力の詳細を選択する。unsockはまだ実験モードでUNIXソケットを使用して他のソケットへアラートを送出する。cmgで起動すると、コンソール上にfullで指定した場合と同じアラートが表示される。
  • -c 設定ファイルであるsnort.confのパス名を指定
  • -l ログディレクトリを指定する
  • -m ログファイルのマスク

●Snort 起動スクリプト

# vi /etc/init.d/snort

内容は下記参照

# chmod 755 /etc/init.d/snort
# chkconfig --add snort
# chkconfig --list |grep snort
snort           0:off   1:off   2:off   3:on    4:on    5:on    6:off
#
[/etc/init.d/snort]
#!/bin/sh
#
# chkconfig: 345 95 95
# description: snort
#
# processname: /usr/local/snort/bin/snort
# config:  /etc/snort/snort.conf
# pidfile: /var/run/snort_eth0.pid
#

. /etc/rc.d/init.d/functions

SERVICE="snort"
SERVER="/usr/local/snort/bin/snort"
ARGS="-u snort -g snort -deD -k none -c /etc/snort/snort.conf -i eth0 -l /var/log/snort -m 022"

case "$1" in
  start)
        echo -n "Starting $SERVICE"
        daemon $SERVER $ARGS
        echo
        touch /var/lock/subsys/$SERVICE
        ;;
  stop)
        echo -n "Stopping $SERVICE"
        killproc $SERVICE
        echo
        rm -f /var/lock/subsys/$SERVICE
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $SERVICE {start|stop|restart}"
        exit 1
esac

exit 0
更新日時:2005/04/27 13:00:42
キーワード:
参照:[にわか鯖管のメモ]
このページは凍結されています。