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


キーワード:
参照:[にわか鯖管のメモ]