IDS / NMSの向䞊Webむンタヌフェむスを備えたMikrotikずSuricata

どうやら、私はそのようなカルマを持っおいたすオヌプン゜ヌスでのサヌビスの実装をどのように取り䞊げおも、私は間違いなく倚くのマニュアルを芋぀けるでしょう。 -消化性は決しおなく、最終的には自分で結果に到達する必芁がありたす。



今回はすべおのマニュアルがELK5たたはそれより叀いものでしたが、以前のバヌゞョンの゜フトりェアをむンストヌルしたくありたせんでした。 私は、最も有望なサポヌト期間できれば最新の安定版で゜フトりェアを入手したかったのです。



その結果、今埌すべおの苊痛を繰り返さずに完璧な偉業を繰り返すこずができるようにするために、私はあなたず共有する段階的なチヌトシヌトを曞かなければなりたせん。



今日、MikrotikRouterOS、Suricata 4.1、Elasticsearch + Filebeat + Kibana 6.5。



参加する代わりに



条件





ここでは、IDS / IPS / NMSずは䜕か、なぜ必芁なのか、䜕が起こるのかに぀いおは説明したせん。 誰も私なしでこれを知っおいたす、そしお、知らない圌はグヌグルになりたす。



たた、私はSnortずSuricataのどちらを遞択するかを正圓化せず、埌者を支持したす。 これは奜みの問題です。



しかし、その仕組みを衚面的に説明したす。



Suricataはどういうわけかトラフィックを受け取りたす。 3぀のオプションがありたす。aむンラむンモヌドで自分に枡す、bスむッチポヌトからトラフィックのコピヌを受信する、cトラフィックを含むダンプを分析する。 Suricataは受信したトラフィックを分析し、分析に基づいお、このトラフィックで芋぀かったデヌタを提䟛したす。



SuricataはJSONでデヌタを発行できたす。 したがっお、構造化されたデヌタがあれば、凊理、システム化、分析、芖芚化のために䜕らかのシステムに送るこずができたす。

私が理解する限り、デヌタの分析ず芖芚化に぀いおは、この分野の専門家でなくおも、ELKスタックは完璧です。 ELKスタックは元々、Elasticsearch、Logstash、Kibanaで構成されおいたした。 これでBeatが远加されたしたデヌタ゜ヌスずLogstashたたはElasticsearchの間の仲介ずしお機胜するむンタヌフェむスプログラムのファミリ。 今埌は、BeatがElasticsearchに盎接デヌタを完党に䟛絊し、Elasticsearchがそれを完党に消費するため、Logstashはなかったず蚀えたす。 Elasticsearchは、噛たれたデヌタをELKスタック党䜓のWebむンタヌフェむスであるKibanaに転送したす。 Kibanaは、Filebeatから枡されたテンプレヌトを䜿甚しお、ナヌザヌにデヌタの芖芚化、いわゆるダッシュボヌドを提䟛したす。 Elasticsearch、Logstash、Beat、およびKibanaが1぀のメヌカヌの成果であるずいう事実を考慮するず、このファヌム党䜓は盞互にリンクされおおり、リンクプロセスはもちろん、オヌプン゜ヌス暙準によっお文曞化されおいたす。



したがっお、䞊蚘に基づいお、タスクを次のように説明できたすルヌタヌポヌトからトラフィックのコピヌを取埗し、Suricataに転送し、SuricataからJSON圢匏でデヌタを受信し、Filebeatに転送したす。 Kibanaが芖芚的なディスプレむを䜜成するのを助けたした。



Mikrotik RouterOS



Mikrotikルヌタヌハヌドりェアがあれば、ポヌトミラヌリングポヌトミラヌリングの問題はたったくありたせん。 すべおは、倖郚むンタヌフェむスを通過するトラフィックをMikrotik自䜓の空きポヌトにミラ​​ヌリングできるようにするこずで決定されたす。 Mikrotikに空きポヌトがない堎合は、スむッチでポヌトミラヌリングを有効にできたす。 しかし、私の堎合、Mikrotikには物理ポヌトがたったくなく、スむッチのポヌトはホスト党䜓からトラフィックを受信したした。ホストには、Mikrotikの他に、さらにいく぀かの仮想マシンがありたした。



そしお、もう䞀床、心から蚀った「ありがずう、ミクロティック」。 RouterOSの組み蟌みスニファヌをありがずう。 埓来、スクリヌンショットは䜿甚せず、コン゜ヌルコマンドのみを䜿甚しおいたした。



WinBoxでタヌミナルを開き、スニファヌをオンにしたす。



/tool sniffer set filter-interface=if-out filter-stream=yes streaming-enabled=yes streaming-server=192.168.1.253

/tool sniffer start








if-outの代わりに、トラフィックをむンタヌセプトする予定のむンタヌフェヌスの名前、および192.168.1.253の代わりに-むンタヌセプトされたトラフィックがTZSP経由で送信されるマシンのIPアドレスを瀺したす。



すべおMikrotik'omで。



すりかた



䞀般的に、私はあたりLinuxに向いおいないので、ポップディストリビュヌションが奜きです。 たあ、おそらく私はより犁欲的なDebianが奜きです。 だから私はそれから始めたした。 もちろん、Linux以倖の問題のために、リポゞトリからバむナリもむンストヌルしたかったのです。 アセンブリは私にずっお垞に怠け者です。 したがっお、Debianを遞択する機䌚がある堎合は、遞択しないでください 。 Debianでファヌム党䜓をむンストヌルするプラグむンがどこにあったのか正確には芚えおいたせんが、圌はそうでした。 そしお、すべおをUbuntaの䞋にむンストヌルするこずに぀いおの党䜓的なストヌリヌ。



4 ギガバむトのRAMを持぀4コア仮想マシンが䜜成され、 Ubuntu Server 18.04.1 LTSx64がダりンロヌドされおむンストヌルされたした



合意 以降のすべおのアクションはスヌパヌナヌザヌに代わっお実行されるため、rootずしおログむンするか、各コマンドにsudoを远加したす。


各段階でスナップショットを䜜成し、それらに繰り返しロヌルバックしたため、最終的には、仮想マシンのリアルタむムでの同期がずれた状態で倚くのグリッチを発生させたした。

したがっお、正しいタむムゟヌンずNTP同期をすぐに蚭定したす。



systemctl start systemd-timesyncd

systemctl status systemd-timesyncd

dpkg-reconfigure tzdata








Suricataのむンストヌル時に䟝存関係の問題がないこずを確認するには、 ナニバヌスリポゞトリを/etc/apt/sources.listに远加したす。



nano /etc/apt/sources.list





...

deb archive.ubuntu.com/ubuntuバむオニックメむンナニバヌス

deb archive.ubuntu.com/ubuntuバむオニックセキュリティメむンナニバヌス

deb archive.ubuntu.com/ubuntu bionic-updatesメむンナニバヌス


Suricataを取埗するリポゞトリも远加したす。

add-apt-repository ppa:oisf/suricata-stable







パッケヌゞデヌタベヌスの曎新

apt-get update







Suricataをむンストヌルしたす。

apt-get install -y suricata







次のステップでは、Suricataのルヌルずその曎新を蚭定したす。

apt-get install -y python-pip

pip install pyyaml

pip install https://github.com/OISF/suricata-update/archive/master.zip








suricata-update自䜓の曎新を開始したす 。

pip install --pre --upgrade suricata-update







远加の構成なしで実行するず、Emerging Threats Openルヌルセットが提䟛されたす。

suricata-update







゜ヌスのリストを衚瀺するには、次を実行したす。

suricata-update list-sources







ルヌル゜ヌスの曎新

suricata-update update-sources







゜ヌスでそこで曎新された内容を確認しお、もう䞀床実行したす。

suricata-update list-sources







すべおの無料゜ヌスが含たれたす。

suricata-update enable-source ptresearch/attackdetection

suricata-update enable-source oisf/trafficid

suricata-update enable-source sslbl/ssl-fp-blacklist








そしお再び、ルヌルを曎新したす。

suricata-update







Suricataがむンストヌルされたす。



次に、トラフィックを取埗する必芁がありたす。



トラフ



Trafrは、TZSPトラフィックをpcapに倉換するためにMikrotikによっお䜜成されたアプリケヌションです。 アプリケヌションは32ビットなので、起動するには、64ビットUbuntaで32ビットアプリケヌションのサポヌトを有効にする必芁がありたす。



dpkg --add-architecture i386

apt-get update && apt-get install -y libc6:i386








trafrをダりンロヌドしお解凍したす 。



wget http://www.mikrotik.com/download/trafr.tgz

tar xzf trafr.tgz








トラフィックがキャッチされおいるこずを確認したす。



./trafr -s







このような起動埌、グラフィックモヌドのシンボリック出力が仮想マシンのコン゜ヌルで壊れたため、再起動する必芁がありたした。 sshを介しおPuTTYにリモヌト接続する際に問題はありたせんでした。



画面にランダムなちら぀きが芋られる堎合、トラフィックが到着し、 trafrがそれをキャッチしたす。 その堎合、 trafrを氞䜏地に転送し、パむプラむンを介しおすぐにSuricataにキャッチされたトラフィックを送信しお実行したす。



mv trafr /usr/local/bin/

/usr/local/bin/trafr -s | suricata -c /etc/suricata/suricata.yaml -r /dev/stdin









ここで、トラフィックがスリカタに到着するこずを確認したす。このために、隣接端末で次のこずを行いたす。



tail -f /var/log/suricata/fast.log







意味のあるテキストのスマヌトスクロヌル-ミヌアキャットトラフィックの受信ログが衚瀺されたす。



たた、Suricataのトラフィックが受信するだけでなく、分析するこずを確認するのも面倒ではありたせん。



tail -f /var/log/suricata/eve.json







これは、FilebeatにフィヌドするJSON圢匏のSuricataからのむベントの出力です。



Elasticsearch + Filebeat + Kibana 6.5



Elasticリポゞトリを䜿甚するために必芁なPGPキヌをむンストヌルし、必芁な䟝存関係をむンストヌルしたす。



wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

apt-get update && apt-get install -y openjdk-8-jre apt-transport-https wget nginx








Javaはバヌゞョン8です。8を超えるものはサポヌトされおいたせん。 したがっお、より新しいJavaを以前にむンストヌルできた堎合は、それを砎棄しお8を眮きたす。



Javaが正しくむンストヌルされおいるこずを確認したす。



java -version







およそ次の結論が埗られたす。

Javaバヌゞョン "1.8.0_191"

JavaTMSEランタむム環境ビルド1.8.0_191-b12

Java HotSpotTM64ビットサヌバヌVMビルド25.191-b12、混合モヌド


Kibanaにアクセスするためのナヌザヌずパスワヌドを䜜成したす。 管理者の代わりに、お奜みのものを遞択しおください。



echo "admin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users







ELKはlocalhostでスピンするため、nginxでリバヌスプロキシを構成したす。



nano /etc/nginx/sites-available/kibana





サヌバヌ{

80を聞きたす。



server_name suricata.server;



auth_basic「アクセス制限」;

auth_basic_user_file /etc/nginx/htpasswd.users;



堎所/ {

proxy_pass localhost 5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $ http_upgrade;

proxy_set_header接続 'アップグレヌド';

proxy_set_header Host $ host;

proxy_cache_bypass $ http_upgrade;

}

}


rm /etc/nginx/sites-enabled/default

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/kibana









nginxを再起動したす。



systemctl restart nginx







Elasticsearchを眮きたす



apt-get install -y elasticsearch







OSのロヌド時に自動実行をオンにしたす。



systemctl daemon-reload

systemctl enable elasticsearch.service








以䞋を開始したす。



systemctl start elasticsearch.service







䞊昇しおいるかどうかを確認したす。



curl -X GET "localhost:9200/"







ハヌドりェアのパフォヌマンスによっおは、ESの起動に時間がかかる堎合がありたす。 接続が拒吊された堎合、リク゚ストを繰り返し、次のようなものが埗られるたで埅ちたす。

{

「名前」「lcZuxxm」、

「Cluster_name」「elasticsearch」、

「Cluster_uuid」「kmJHqJnlQe2Rk7F-CRi4EA」、

「バヌゞョン」{

「番号」「6.5.1」、

「Build_flavor」「デフォルト」、

「Build_type」「deb」、

「Build_hash」「8c58350」、

「ビルド日」「2018-11-16T022242.182257Z」、

「Build_snapshot」false、

「Lucene_version」「7.5.0」、

"Minimum_wire_compatibility_version" "5.6.0"、

「Minimum_index_compatibility_version」「5.0.0」

}、

キャッチフレヌズ知っおいる、怜玢甚

}


Kibanaを配眮したす。



apt-get install -y kibana







OSのロヌド時に自動実行をオンにしたす。



systemctl daemon-reload

systemctl enable kibana.service








以䞋を開始したす。



systemctl start kibana.service







これで192.168.1.253に移動できたすもちろん、IPアドレスはミヌアキャットでマシンに割り圓おられたものです。 Kibanaカバヌペヌゞが開きたす。



Filebeatを配眮したす。



apt-get install -y filebeat







OSのロヌド時に自動実行をオンにしたす。



systemctl daemon-reload

systemctl enable filebeat








Filebeatモゞュヌルセットの䞀郚であるSuricataモゞュヌルをオンにしたす。



filebeat modules enable suricata







ElasticsearchでSuricataのプラグむンをむンストヌルする



/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip

/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent






2019幎5月22日のUPDをご芧ください。



Elasticsearchの再起動



systemctl restart elasticsearch.service







Filebeatの初期構成を実行するず同時に、Kibanaにテンプレヌトをロヌドしたす。



filebeat setup -e







Filebeatが/var/log/suricata/eve.jsonを芋぀けお凊理しおいるこずを確認したすこれを行うには、 公開マヌカヌを䜿甚しおデヌタ出力モヌドでFilebeatを実行したす。



filebeat -e -d "publish"







最初はFilebeat自䜓のjson圢匏の出力、次にそのログの単玔なテキスト出力で、しばらくしおからSuricataからの出力です。すべおが機胜するこずを確認しおください。 その埌、Filebeatを䞭止しおbashに戻りたす。



OSのロヌド時に自動実行をオンにしたす。



systemctl daemon-reload

systemctl enable filebeat.service








Filebeatを実行したす。



systemctl start filebeat.service







Kibanaに移動し、巊偎のメニュヌから[ダッシュボヌド]を遞択し、 filebeat- * indexを遞択したす。 ダッシュボヌドをもう䞀床遞択し、リストから[Suricata]アラヌトの抂芁を遞択するず、次のようになりたす。



画像



オプショナル



ログロヌテヌションを忘れないでください。ハヌドドラむブの容量に関係なく、Suricataは非垞に迅速にスコアを蚘録したす。



nano /etc/logrotate.d/suricata





/var/log/suricata/*.log /var/log/suricata/*.json

{

毎週

回転3

行方䞍明

圧瞮しない

䜜成する

共有スクリプト

埌回転

/ bin / kill -HUP `cat /var/run/suricata.pid 2> / dev / null` 2> / dev / null || 本圓

終わり

}



加えお、誰かがミクロティックで定期的にスニファヌを実行しおいるずいう噂がありたした。 次に、スニファヌを再起動し、スケゞュヌルに埓っお実行するスクリプトを䜜成したす。



/tool sniffer stop

:delay 30s

/tool sniffer start








おわりに



率盎に蚀っお、私は䞊蚘のバンドルの安定性に完党には満足しおいたせん。 ぀たり、再起動する䟡倀があり、奇跡が始たりたす。 䞀床、ペアを陀くすべおのルヌルがルヌルの凊理を停止したした。 すべおを再むンストヌルする必芁がありたした。 2回目に、Elasticsearchは䞀般にFilebeatからのデヌタの受信を停止し、再起動する前に状態のスナップショットにロヌルバックする必芁がありたした。



これらの問題はただ解決しおいたせん。



さらに、Mikrotikに譲枡されたSuricataによっお特定された悪圹のIPアドレスに基づいおIPSを実装する蚈画がありたす。



UPD 䞍安定性の告発は削陀されたした。 ルヌル凊理の終了に関する私の結論は誀りでした。 実際、再起動埌にダッシュボヌドが空になる理由は、FilebeatずElasticsearchがmeerkatからマルチギガバむトのjsonファむルを解析するのにかなりの時間を芁するずいう事実によるものです。 eve.jsonファむルが䜜成された日付を含む期間のむベントでダッシュボヌドを開くず、ファむルが凊理されるに぀れおグラフの列がどのように成長するかを確認できたす。 凊理されたむベントずずもに、アラヌトが察応するダッシュボヌドに衚瀺されたす。 さらに、x86䞊のRouterOSのスニファヌはハングしたせんでした。



UPD 2019幎5月22日 バヌゞョンElasticsearch 6.7以降、ingest-geoipおよびingest-user-agentプラグむンはモゞュヌルに倉換されたした。 したがっお、むンストヌルされたアむテムはスキップされたす。



たた、アップグレヌドするず、Elasticsearchの起動゚ラヌが発生したす。 ログに゚ラヌが衚瀺されたす



[/ etc / elasticsearch / ingest-geoip]に存圚しないず予想されるデヌタベヌス[GeoLite2-ASN.mmdb]


パフォヌマンスを回埩するには、次を実行したす。



/usr/share/elasticsearch/bin/elasticsearch-plugin remove --purge ingest-geoip








All Articles