前回買ったACEPCのAK2というミニPCにSnortをインストールします。
Windows10Pro入りなので勿体ないですけどね。元々IPS/IDS用にアーキテクチャx86_64搭載のベアボーンPCの安いのを探した結果辿り着いたものなので、予定通りSnortを入れちゃいます。
一応ARMベースのRaspberry Pi 3B+、4にも入れようと思えば入れられるんですが、私の技術では安定稼働できそうになかったので素直にIntel製CPUにします。
ミニPCを買う前にRaspberry Pi 3B+でSnortのインストールしていたんですが、1回目成功、2回目失敗という結果になったのでリタイアしました。失敗の内容は後述で
私の構築したバージョンは下記の通り↓
ベースOS:CentOS-7-x86_64-Minimal-2009(最小インストール)
IPS/IDS:Snort2.9.18.1(Source) ←ベースをCentOS8にするならCentOS8用のrpmをDl可能です
インストールについてはこちらの記事には書きません。インストール後に躓いたところを記載します。
インストールは一番最初に検索で出てくるQiitaで記事を書いてる方のページと、公式TOPのSourceの手順に従えばインストールと初期設定は完了します。
<今も原因調査中>
ちなみに現在も引っかかっているところは、Web通信(443/80)のURLがログに出ないところです。解決したら記載します。
<私が躓いたところ、自爆したところなど、対処したこと、etc>
OSSのIPS/IDS始めて触ってます。以下は自己責任で見てください。
製品版って普通ManagerでGUI設定だもん・・・
ここから本編(前置き長い)
■community.rules以外のルールも必要そうだけど、どこで手に入るの?
■インストール直後にコマンド"snort"で実行したらログが出てるけどこれでいいの?
■自動起動しようして「rc.local」に記載したら起動しなくなった
■LAN挿してるけどリンクが+(0゚・∀・)+テカテカ+しないしログ少ないゾ
私は初回3B+でやってみました、1回目は成功しましたが2回目失敗です。
1回目は脳死でarmを考慮せず、どこかのブログの方を参考にRaspberry piにx86_64ベースのパッケージを入れまくりました。すると↓のように起動できました。(この時点ではconfいじってないです)
2回目は真面目にarmベースでDLし、ないものはtar.gzをDLしてmakeしました。
そうするとsnortのmake中にコンパイルエラー吐き出した。x86_64用じゃないとダメなパッケージがあるかもです。
Suricataはどうでしょう、Raspberypi3、4ともに初期導入だけなら以下の方の手順そのままでいけます。最低限conf変更とかルール入れはこちらも必要なので変わらないかも・・・
https://jufajardini.wordpress.com/2021/02/15/suricata-on-your-raspberry-pi/
初期の動きはIDSの動きをしているようです。IPSで使用するドロップ機能は基本的に#でコメントアウトされているので自分で有効化する必要があります。
編集ファイル「/etc/snort/snort.conf」
Snortで無料アカウント作成してください。そうすると以下ページのRulesが表示されるようになります。
https://www.snort.org/downloads
※ただしRuleは導入バージョンに適合する番号をDLしてください※
Snort2.9.18.1の場合
↓
snortrules-snapshot-29181.tar.gz
<メッセージ内容>
WARNING: No preprocessors configured for policy 0
snort.confを参照しないとただのパケットキャプチャーになります。
以下のコマンドでconfファイルを読み込んでください(インストール直後はありません。confファイルは自分で配置する必要があります。)
snort -v -c /etc/snort/snort.conf
手順1:デフォルトは無効です。「/etc/snort/snort.conf」内で#コメントアウトを取っ払ってください
output alert_syslog: LOG_AUTH LOG_INFO ※デフォはLOG_ALERT
手順2:rsyslogの転送設定「rsyslog.conf」への追記も忘れずに
auth.info @転送先IPアドレス
・飛ばねぇぞ!(Part2)
まずはSnort実行してみてちゃんとパケット情報が画面に出るか見てみてください。
それでもダメならLOG_AUTHをlocal5とかに変えて見るか・・・local5に変更した場合はauth.infoをlocal5にしてください。あとはLOG_ALERTをLOG_INFOまで下げてみてね。
・飛ばねぇぞ!!(半ギレ)
そこまで来たらどっかでドロップしてるか受信側だって!!
旧Verは下記の方法で無理矢理転送していたそうな・・・
output alert_syslog: host=転送先IPアドレス:514, LOG_AUTH LOG_ALERT
そんなあなたは私と同じ直感タイプ!きっと確認せずにSELinuxでもTypeに無効ステータス入れちゃう人です。
下のURLの動画を参考に「rc.local」をロードしないようにしてログインしてください。
その後問題の箇所を修正してて再起動してください
「rc.local」に記載する場合は、コマンドの後ろに"&"をつけてバッググラウンドで起動するようにするといいです。
#snort auto run
snort -v -c /etc/snort/snort.conf 駄目な例
snort -v -c /etc/snort/snort.conf & 大丈夫なの
(送信元のポートはミラーリング済み)
監視対象がPROMISCになってますか、NOARPも念の為しときましょう
ip a
3: インターフェース名: <BROADCAST,MULTICAST,NOARP,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 28:ee:52:17:e3:0f brd ff:ff:ff:ff:ff:ff
※私の環境では「/etc/sysconfig/network-scripts/ifcfg-インタフェース名」にて「PROMISC=Yes」の記載してもPROMISCになってませんでした。
そのため起動時に毎回有効化コマンド走らせるようにしてます。
ip link set インタフェース名 arp off promisc on
Snortの各ファイルを見るとeno1じゃなくてeth1の箇所が何箇所かあるんですよね・・・ 大丈夫なのかなこれ
①正式な方法
ファイル:/etc/sysconfig/snort内のINTERFACEを確認します。
管理ポートも監視すべきと思いますが、スイッチで全てミラーリングしているなら1個だけでよいかと。インターフェース名は自分の環境で置き換えてください。
・1個の場合
INTERFACE=インタフェース名
・全部
INTERFACE=ALL
・複数の書き方
INTERFACE="eth1 eth2 eth3 eth4 eth5"
②1個ずつみたい、ALLでもconf信じられない
Snort起動時に監視インターフェース指定可能です、マルチでも動作します。
snort -i インターフェース名 -v -c /etc/snort/snort.conf
※ちなみにSnortを起動すると↓赤字のようにインタフェース名が出ます
[ Number of patterns truncated to 20 bytes: 14 ]
pcap DAQ configured to passive.
Acquiring network traffic from "インタフェース名".
Reload thread starting...
Reload thread started, thread 0x7f8641bc8700 (1863)
Decoding Ethernet
--== Initialization Complete ==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.18.1 GRE (Build 1005)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.5.3
Using PCRE version: 8.32 2012-11-30
Using ZLIB version: 1.2.7
キーボードの「Ctrl」+「C」で無理矢理止めて大丈夫です。
統計結果も正常に返ってきます
①プロセスを探して・・・
ps ax | grep snortを入力
②結果
1279 ? Sl 0:08 snort -v -c /etc/snort/snort.conf
5255 pts/0 S+ 0:00 grep --color=auto snor
③対象のプロセス番号入れてドーン(雑)
kill 1279
やっぱり公式マニュアルが一番わかりやすいです。#コメントアウトされた機能が何か調べるときはマニュアル(Ver古いですがほぼ一緒です)で確認してください。
↓ならPDFじゃないのでクロームで日本語翻訳も可能です
http://manual-snort-org.s3-website-us-east-1.amazonaws.com/
①動いてるけど出たMSG、こちらを御覧ください
WARNING: No preprocessors configured for policy 0
②起動時に出て失敗
ERROR: /etc/snort/snort.conf(323) => Invalid keyword '}' for server configuration.
Fatal Error, Quitting..
decompress_swf {deflate lzma} \
decompress_pdf {deflate}
↓下記のように変更するとエラーでなくなります。
# decompress_swf {deflate lzma} \
decompress_swf {deflate} \
decompress_pdf {deflate}
参考したところ(海外サイトです)
③起動時に出て失敗
ERROR: /etc/snort/./rules/x11.rulesi(0) Unable to open rules file "/etc/snort/./rules/x11.rulesi": No such file or directory.
Fatal Error, Quitting..
参照したルール(/x11.rule)がナイっす!と言ってます。
community.ruleだけを使用する際は「/etc/snort/snort.conf」内から存在しないルールを消してください
消さずにルールを入れてみたい方はこちらを参照してください
ざっと洗い出すとこんな感じでしょうか、追加入れたパッケージとかtar.gzも書きたいところですが、ログがもう30個くらいあるのでちょっと追いたくないかな・・・・
インストール時にmakeしたディレクトリ内のsrcとかrpmディレクトリからconfig系取り出して自分で配置しないといけないとかSnortのTOPのインストール手順に含めてほしいですね。
まぁそこは無料なので別途マニュアルや自力でなんとかせいって感じなのでしょう
( ˘ω˘)丸2日使ったのは痛いなぁ、気づいたら夜中だし、はまると楽しいですけどね
以上、今後も追加するかも…?
0 件のコメント:
コメントを投稿