KUSANAGIのバージョン8.4.0から、IDS/IPS(不正通信防御/検知システム)としてSuricataが利用出来るようになりました。
IPS/IDSは、DoS攻撃やSynフラッド攻撃といったものを検知し、ネットワークやサーバーを防御します。ただ、webアプリケーションの脆弱性を突くような攻撃は検知出来ない事もあるので、WAF(Web Application Firewall、ウェブアプリケーションファイアーウォール)の併用も必要です。KUSANAGIでのWAFの使用に関しては下記記事をご参照ください。
KUSANAGIへのSuricata導入について、KUSANAGI公式ドキュメントに記載されているコマンドを実行した後で、設定ファイルの編集と起動の確認を行う必要があります。
なお、Suricata起動までの一連の作業は下記記事を参考にさせて頂きました。
CentOS 7 Suricata 4.0.4のソースファイルからのインストール
ネットワークインターフェース名とIPアドレスの確認
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.254.0 broadcast 192.168.1.255
inet6 0000::0:0000:0000:0000 prefixlen 64 scopeid 0x20<link>
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 13830 bytes 17217988 (16.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2451 bytes 192923 (188.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 36 bytes 2832 (2.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36 bytes 2832 (2.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
一般的にインタフェース名はethで始まる名前です。名前が異なる環境(kusanagi for Vagrantとか)もありますが、”inet”のIPアドレスが”127.0.0.1″でないものを確認します。このインタフェース名とIPアドレスをメモしておきます。
Suricataの導入
インストール
http://ftp.tsukuba.wide.ad.jp/Linux/fedora/epel/7/x86_64/repodata/repomd.xml: [Errno 14] curl#7 – “Failed connect to ftp.tsukuba.wide.ad.jp:80; 現在処理中の操作です”
他のミラーを試します。
Please tell me the interface card you would like to use to sniff packets from. [1-2]
(1) : eth0 (current)
(2) : lo
1
You choose: eth0
disabled
Created symlink from /etc/systemd/system/multi-user.target.wants/suricata.service to /usr/lib/systemd/system/suricata.service.
For more information about Suricata, please refer to the link below
https://suricata.readthedocs.io/en/latest/
INFO: add-on install was successful
完了しました。
”Please tell me the interface card you would like to use to sniff packets from.”では、調べておいたネットワークインターフェースを選択します。
このコマンドで、通常手動で行うべき下記の作業を済ませてくれるようです。
- ユーザー作成
- Suricataダウンロード
- コンパイル
- 所定の位置へディレクトリ作成とファイルコピー
- サービスへの登録
Suricataの設定ファイルを編集
address-groupsの一部コメントアウトと追記
HOME_NET: “[サーバーのネットワーク]”
サーバーのネットワークは、メモしておいたサーバのIPアドレスが、例えば192.168.1.11であり場合、192.168.1.0/24とします。
host-os-policyの一部コメントアウトと追記
linux: [サーバーのネットワーク]
起動確認
サービスに登録されているので、サーバー起動時に自動実行されるはずです。サーバーを再起動後、systemctlコマンドで確認します。
● suricata.service – Suricata Intrusion Detection Service
Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled)
Active: active (running) since 日 YYYY-MM-DD HH:MM:SS JST; 0min ago
Main PID: 1039 (Suricata-Main)
CGroup: /system.slice/suricata.service
└─1039 /sbin/suricata -c /etc/suricata/suricata.yaml -i eth0 –user suricata
:
:
Oinkmasterによるルールの管理
Suricataのルールの自動更新を目的としてOinkmasterを入れてみます。
ダウンロードと設置
$ tar -xvzf oinkmaster-2.0.tar.gz
$ cd oinkmaster-2.0
$ cp -p oinkmaster.pl /etc/
$ cp -p oinkmaster.conf /etc/
設定ファイル編集
ルールのダウンロード元を指定
url = https://rules.emergingthreats.net/open/suricata-3.2/emerging.rules.tar.gz
ルールのダウンロード
Suricataの設定ファイル編集
classification-fileとreference-config-file の項を変更します。
classification-file: /etc/suricata/rules/classification.config
#reference-config-file: /etc/suricata/reference.config
reference-config-file: /etc/suricata/rules/reference.config
ただ、ルールの更新をしてもreference.configはrulesディレクトリにありません。とりあえず/etc/suricata/reference.configからコピーしておきました。
また、”rule-files:”で、読み込ませるルールファイルのコメントアウトを適宜外しておきます。
crontabへの追加
0 0 * * * /etc/oinkmaster.pl -C /etc/oinkmaster.conf -o /etc/suricata/rules