Snort 2.4.x インストール

更新履歴

  • 2006/06/07 初版

概要

  • オープンソースな侵入検知システム
  • シグネチャベースのネットワークベースIDS

バージョン

  • Snort 2.4.5

インストール環境

  • CentOS 4.3

前提条件

  • 以下ライブラリが必要
    • pcre
    • libpcap

参考URL

インストール手順

Snort インストール

  • 事前に pcre,libpcap をインストールする。
    • libpcap については、初期インストールされているはず
    • pcre については、ヘッダーファイルが必要なため pcre-devel を yum でインストールする
# rpm -qa |grep pcap
libpcap-0.8.3-10.RHEL4
# 
# yum install pcre-devel
# rpm -qa |grep pcre
pcre-4.5-3.2.RHEL4
pcre-devel-4.5-3.2.RHEL4
# 
# 
# groupadd snort
# useradd -g snort -d /dev/null -s /sbin/nologin snort
# 
# cd /usr/local/src/
# wget http://www.snort.org/dl/current/snort-2.4.5.tar.gz
# tar xvzf snort-2.4.5.tar.gz
# cd snort-2.4.5
# 
# ./configure --prefix=/usr/local/snort
# make
# make install

Snort 初期設定

# mkdir /etc/snort
# cd /etc/snort/
# wget http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode here>/snortrules-snapshot-2.4.tar.gz
# tar xvzf snortrules-snapshot-2.4.tar.gz
# vi /etc/snort/snort.conf

/etc/snort/snort.conf

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

var HOME_NET xxx.xxx.xxx.xxx/24  ※適宜変更
var EXTERNAL_NET !$HOME_NET
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
config disable_tcpopt_experimental_alerts
config disable_tcpopt_obsolete_alerts
config disable_tcpopt_ttcp_alerts
config disable_tcpopt_alerts
config disable_ipopt_alerts
config flowbits_size: 256

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

preprocessor flow: stats_interval 0 hash 2
preprocessor frag3_global: max_frags 65536
preprocessor frag3_engine: policy first detect_anomalies
preprocessor stream4: disable_evasion_alerts
preprocessor stream4_reassemble
preprocessor http_inspect: global iis_unicode_map $RULE_PATH/unicode.map 1252
preprocessor http_inspect_server: server default profile all ports { 80 8080 8180 } oversize_dir_length 500
preprocessor rpc_decode: 111 32771
preprocessor telnet_decode

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

# portscan
#preprocessor portscan: $HOME_NET 100 5 portscan.log
#preprocessor portscan-ignorehosts: 172.16.1.0/24
#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
#output alert_prelude: profile=snort

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

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

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

#include threshold.conf
# mkdir /var/log/snort
# chown -R snort:snort /etc/snort/
# chown -R snort:snort /var/log/snort/

Snort 自動起動設定

  • サーバ起動時に、自動的にSnortが起動するように設定する。
  • 起動スクリプト内のオプション(ARGS)については、環境に応じて適宜変更すること。
# vi /etc/init.d/snort

/etc/init.d/snort

#!/bin/sh
#
# chkconfig: 2345 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
# chmod +x /etc/init.d/snort
# chkconfig --add snort
# chkconfig --list |grep snort
snort           0:off   1:off   2:on    3:on    4:on    5:on    6:off
#

Snort 起動

  • Snortを起動する。
# /etc/init.d/snort start
Starting snort                                             [  OK  ]
#

ログの確認

  • 本手順のとおり、設定していれば「/var/log/snort/」以下に検知したアラートのログ・キャプチャファイルが保存される。
    • alert
      • 検知したアラートの内容
    • snort.log.xxxxxxxxxx
      • 検知したパケットとキャプチャしたファイル(pcap形式)

参考:Snort起動オプション説明

option 説明
-u snortを実行するユーザを指定
-g snortを実行するグループを指定
-i パケットキャプチャするインターフェースを指定
-v コンソールにパケットを表示
-d アプリケーションレイヤーのデータを取り込む
-e レイヤー2のパケットヘッダを取り込む
-D デーモンモードでsnortを起動する
-b tcpdumpフォーマットでパケットを記録する
-k チェックサムモードを使用するかどうか。使用しなければ、動作は高速になる。Snortの設置状況で多いのは、ルーターやファイアウォールの後ろなので、チェックサムを行う必要がない。指定は、all、noip、notcp、noudp、noicmp、noneです。noneがもっとも高速。
-A full/console/none/unsock/cmgのいずれかを付属し、アラートの出力の詳細を選択する。unsockはまだ実験モードでUNIXソケットを使用して他のソケットへアラートを送出する。cmgで起動すると、コンソール上にfullで指定した場合と同じアラートが表示される。
-c 設定ファイルであるsnort.confのパス名を指定
-l ログディレクトリを指定する
-m ログファイルのマスク
 
ids/snort/snort_install24.txt · 最終更新: 2007/10/16 12:02
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki NINJA TOOLS