ab’s blog

インフラの呟きです。

REDHAT8にsnort2(侵入検知ツール)をインストールする

はじめに

snort2をrpmパッケージからインストールした方法です*1 。snortにはルールセットというファイルが必要ですが、ルールセットには無償版と有償版があります。今回は無償のコミュニティ版を使用しています。インストールの流れはこんな感じでした。


インストール前準備

snort2のインスト実行する前に内容です。インスト対象のマシンがインターネットに繋がっている前提です。

epelリポジトリ追加

依存パッケージdaqを拡張リポジトリからダウンロードするために設定します。

$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

関連パッケージインストール

依存関係が正しく効いてないのか、ライブラリが足りないとか後で言われるので事前に追加しておきます。

$ dnf install gcc flex bison zlib libpcap pcre libdnet tcpdump libnghttp2 daq daq-devel

snortインストール

snortをdnfで追加します。

$ dnf install https://www.snort.org/downloads/archive/snort/snort-2.9.18.1-1.centos8.x86_64.rpm
...中略...
完了しました!
$

スクリプト編集

以下スクリプトを編集してインターフェース名「eth0」の箇所を使用しているものに変えます。

①/etc/rc.d/init.d/snortd

vi /etc/rc.d/init.d/snortd

変更例)
変更前:INTERFACE="-i eth0"
変更後:INTERFACE="-i enp0s3"

②/etc/sysconfig/snort

vi /etc/sysconfig/snort

変更例)
変更前:INTERFACE=eth0
変更後:INTERFACE=enp0s3

試運転

インストールが完了したらsnortをスニッフィングモードで試運転します。

$ ldconfig
$ snort -v

※もし「libdnet.1~」のエラーメッセージがでたら以下のリンクを貼ります。
また前準備でインストールした「libdnet」パッケージ入れ忘れてないかも確認します。
$ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1

ルールセット(コミュニティ版)取得

$ wget https://www.snort.org/downloads/community/community-rules.tar.gz -O community-rules.tar.gz
$ tar -xvzf community-rules.tar.gz -C /etc/snort/rules

$ ls -l /snort/rules/community-rules

snort.confの編集

ファイルを編集しますvi /etc/snort/snort.conf。ファイル中の「Step #7: Customize your rule set」項を以下内容にします。(デフォルトで入っている他の「include~」の記載は消すかコメントアウトする)

###################################################
# Step #7: Customize your rule set
# For more information, see Snort Manual, Writing Snort Rules
#
# NOTE: All categories are enabled in this conf file
###################################################

# site specific rules
include $RULE_PATH/local.rules

include $RULE_PATH/community-rules/community.rules

local.rulesファイルの作成

$ touch /etc/snort/rules/local.rules

snortdサービス起動

$ systemctl start snortd
$ systemctl status snortd
 →ステータスがactive (running)になってればOK

以上

*1:snort公式ドキュメントのセットアップガイド「Snort 2.9.16.1 on CentOS8」、その他いろいろを参考にしています。新しいバージョンsnort3も出ているのですが、rpmでインストールできるのは今のところsnort2までです。

こぼれた水銀

今週のお題「こぼしたもの」

こぼしたというか爆発したといいますか、、私が小学生の頃、家には こんな感じのガスストーブがあってそいつは結構な熱風を吐いて近づくと火傷さえしそうな勢いのものだったんですね。あるときそのストーブの前に昔のタイプの水銀式の体温計が放置されていたんですが、私は体温計に気づかずにストーブを付けまして。暫くたったあと虫の知らせでしょうか、、ふとストーブに目をやり体温計が視界にはいって、「体温計があるなぁ」なんて眺めていたら。。その体温計のメモリがすごい勢いで上がってゆき、パリンという音とともに体温計が割れて中の水銀がこぼれ出して床に落ちていきました。当時小学生の私は水銀のことがよく分からずに「なんか銀色の液が出てきた」と指でツンツンしたりしてたのですがすぐに飽きてちりとりで割れた体温計ごと片付けました。あとで水銀のことを調べて毒性があるということで体に異常がないかと暫くヒヤヒヤしていたのですが、特段何もなく、30年過ぎたいまでも元気なのであります。

以上

Linux tls1.2接続の確認(REDHAT8)

webサーバのSSL/TLS接続状態を確認する方法です。いつも見るわけでは無いですがTLS1.1無効化の流れでサーバの設定変更後に通信状態を確認するのに使ったりします。

opensslの場合

「openssl s_client」でhttpsサイトへの接続確認ができます。-crlfオプションはおまじない程度です。

$ openssl s_client -tls1_2 -connect google.com:443 -crlf

実行結果

…中略…
SSL-Session:
    Protocol  : TLSv1.2
…中略…

curlの場合

curltlsの確認ができるのはRedhat8からです。Redhat7以下ではcurlの「--tls-max」オプションが無いのでこの方法は使えません。

$ curl -v --tls-max 1.2  https://google.com

実行結果

* Rebuilt URL to: https://google.com/
…中略...
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305

以上