SnortをCentOS7にインストールする

# Snortをインストール

## 必要パッケージのインストール

```console:恒例のパッケージ更新
# yum update
```

```console:yumでインストールするもの
# yum install wget
# yum install gcc
# yum install flex
# yum install bison
# yum install libpcap-devel
# yum install pcre-devel
# yum install libdnet-devel
# yum install zlib-devel
# yum install openssl-devel
```

## daqのインストール

```Console:公式サイトからdaqをダウンロード
# wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
```

```console:DLしたものを展開
# tar -xvzf daq-2.0.7.tar.gz
```

```console:ディレクトリ移動
# cd daq-2.0.7
```

```console:インストール
# ./configure && make && make install
```

## LuaJITのインストール
```console:先ほどのdaq-2.0.7ディレクトリのままだとややこしいので移動しておく
# cd ..
```

```console:LuaJITをDL
# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
```

```console:DLしたものを展開
# tar -xvzf LuaJIT-2.0.5.tar.gz
```

```console:ディレクトリ移動
# cd LuaJIT-2.0.5
```

```console:インストール
# make && make install
```
LuaJITをyumでインストールできるらしいが、できなかったのでこのやり方にした。

## Snortのインストール
```console:先ほどのLuaJIT-2.0.5ディレクトリのままだとややこしいので移動しておく
# cd ..
```

```console:公式サイトからSnortをDL
# wget https://www.snort.org/downloads/snort/snort-2.9.18.tar.gz
```

```console:DLしたものを展開
# tar -xvzf snort-2.9.18.tar.gz
```

```console:ディレクトリ移動
# cd snort-2.9.18
```

```console:インストール
# ./configure --enable-sourcefire && make && make install
```

```console:インストールされたか確認
# snort -V
```
バージョンとかわいいブタちゃんが出たらヨシ！

# Snortを使えるようにする

## 必要なものを作成

```console:共有ファイル登録
# ldconfig
```

```console:シンボリックリンク作成
# ln -s /usr/local/bin/snort /usr/sbin/snort
```

```console:グループの作成
# groupadd snort
```

```console:ユーザの作成
# useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
```

```console:必要ディレクトリ作成
# mkdir -p /etc/snort/rules
# mkdir /var/log/snort
# mkdir /usr/local/lib/snort_dynamicrules
```

```console:権限の付与
# chmod -R 5775 /etc/snort
# chmod -R 5775 /var/log/snort
# chmod -R 5775 /usr/local/lib/snort_dynamicrules
# chown -R snort:snort /etc/snort
# chown -R snort:snort /var/log/snort
# chown -R snort:snort /usr/local/lib/snort_dynamicrules
```

```console:必要ファイルの作成
# touch /etc/snort/rules/white_list.rules
# touch /etc/snort/rules/black_list.rules
# touch /etc/snort/rules/local.rules
```

```console:設定ファイルのコピー
# cp ~/snort_src/snort-2.9.16/etc/*.conf* /etc/snort
# cp ~/snort_src/snort-2.9.16/etc/*.map /etc/snort
```

## コミュニティルールのインストール

```console:公式からDL
# wget https://www.snort.org/rules/community -O ~/community.tar.gz
```

```console:DLしたものを展開
# tar -xvf ~/community.tar.gz -C ~/
```

```console:展開したものをコピー
# cp ~/community-rules/* /etc/snort/rules
```

```console:設定ファイルの文字列を置換
# sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf
```

## ユーザ設定ファイルのインストール
```
# wget https://www.snort.org/rules/snortrules-snapshot-2983.tar.gz?oinkcode=<oinkcode> -O ~/registered.tar.gz
```
\<oinkcode\>はSnort.orgにログインしてユーザー情報の欄から得られるもの。


```console:DLしたものを展開
# tar -xvf ~/registered.tar.gz -C /etc/snort
```


```console:設定ファイルを変更
# vi  /etc/snort/snort.conf
```

```Console:/etc/snort/snort.conf
# Setup the network addresses you are protecting
ipvar HOME_NET <server_public_ip>/24

# Path to your rules files (this can be a relative path)
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

# Set the absolute path appropriately
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

# unified2
# Recommended for most installs
output unified2: filename snort.log, limit 128

include $RULE_PATH/local.rules
include $RULE_PATH/community.rules
```
\<server_public_ip\>にはsnortが存在しているネットワークを記入。後ろのサブネットマスクの書き換えも忘れずに

```console:設定ファイル適応
# sudo snort -T -c /etc/snort/snort.conf
```

```console:ルールファイルを作成
# vi /etc/snort/rules/local.rules
```

```Console:/etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP get"; sid:10000001; rev:001;)
```

```console:動作確認
# snort -u snort -g snort -c /etc/snort/snort.conf -i enp0s3 -A console
```
enp0s3の部分は自分子PCの環境に合わせる。
他のPCからSnortのPCに対して`ping`コマンドを実行してログが残ればヨシ!

## 動かす
```console:serviceファイルの作成
# vi /lib/systemd/system/snort.service
```

```Console:snort.service
[Unit]
Description=Snort NIDS Daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/snort -u snort -g snort -c /etc/snort/snort.conf -i enp0s3 -A full -b -D # 入力内容は環境に合わせる

[Install]
WantedBy=multi-user.target
```

```console:
# sudo systemctl daemon-reload
```

```console:snortを起動
# sudo systemctl start snort
```
```console:動いてるか確認
# sudo systemctl status snort
```

終わり。
後はルールをいじって遊びましょう。