ウェブサイト検索

Suricata - 侵入検知および防御セキュリティ ツール


Suricata は、侵入検知 (IDS)、侵入防止 (IPS)、ネットワーク セキュリティ監視の機能を提供する、強力で多用途なオープンソースの脅威検出エンジンです。脅威検出において信じられないほど強力なブレンドのパターン マッチングとともにディープ パケット インスペクションを実行します。

このガイドの執筆時点では、Suricata の最新バージョンは 6.0.5 です。

スリカタの特徴

  • IDS/IPS – Suricata は、Talos ルールセットや新たな脅威 Suricata ルールセットなど、外部で開発されたルールセットを活用する、ルールベースの侵入検知および防御エンジンです。悪意のあるアクティビティ、ポリシー違反、脅威がないかネットワーク トラフィックを監視します。
  • 自動プロトコル検出 – Suricata エンジンは、HTTP や HTTPS などのプロトコルを自動的に検出します。任意のポートで FTP と SMB を実行し、適切な検出とログ ロジックを適用します。これは、マルウェアや CnC チャネルの検出に役立ちます。
  • Lua スクリプト – Suricata は、高度なマルウェア検出を提供する Lua スクリプトを呼び出して、他の方法では検出が難しいマルウェア トラフィックを検出およびデコードできます。
  • マルチスレッド – Suricata は、ネットワーク トラフィックの決定に速度と重要性をもたらします。このエンジンは、最新のマルチコア ハードウェア チップセットによって提供される向上した処理能力を適用するために開発されました。

Linux への Suricata 侵入検知ツールのインストール

このセクションでは、Debian ベースおよび RHEL ベースのディストリビューションにSuricata をインストールする方法を説明します。

Debian/Ubuntu および Mint に Suricata をインストールする

SuricataDebian/Ubuntu リポジトリによって提供され、apt パッケージ マネージャーを使用して簡単にインストールできます。ただし、これでは最新バージョンの Suricata がインストールされないことに注意してください。最新バージョンをインストールするには、ソースからインストールする必要があります。これについては、このガイドで後ほど説明します。

apt パッケージ マネージャーを使用して Suricata をインストールするには、次のコマンドを実行します。

sudo apt install suricata -y

Suricata はインストールされると自動的に起動します。これは次のようにして確認できます。

sudo systemctl status suricata

Suricata を RHEL、Rocky、Almalinux、Fedora にインストールする

CentOS Stream、Rocky Linux、AlmaLinux、Fedora、RHEL などのRHEL ディストリビューションに Suricata をインストールするには、まず EPEL リポジトリを有効にする必要があります。

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 7]

EPEL が有効になったら、次の必須パッケージをインストールし、OISF リポジトリをシステムに追加します。

----------- On Fedora Systems ----------- 
sudo dnf install dnf-plugins-core
sudo  dnf copr enable @oisf/suricata-6.0

----------- On RHEL Systems ----------- 
sudo dnf install yum-plugin-copr
sudo dnf copr enable @oisf/suricata-6.0

次に、示されているように、dnf パッケージ マネージャーまたは yum パッケージ マネージャーを使用してSuricata をインストールします。

sudo dnf install suricata -y
Or
sudo yum install suricata -y

Suricata をインストールしたら、起動してステータスを確認します。

sudo systemctl start suricata
sudo systemctl status suricata

Linux でソースから Suricata をインストールする

デフォルトの OS リポジトリは、Suricata の最新バージョンを提供しません。最新バージョンの Suricata をインストールすることが目的の場合は、ソースからインストールする必要があります。

このガイドの執筆時点では、Suricata の最新バージョンは6.0.5です。 Ubuntu/Debian および RHEL ディストリビューション上のソースから Suricata をインストールするには、次のライブラリ、コンパイル ツール、および依存関係をインストールします。

----------- On Debian Systems ----------- 
sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y

----------- On RHEL Systems ----------- 
sudo yum install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel -y

次に、suricata ルールを更新するために suricata-update ツールをインストールします。

sudo apt install python3-pip           [On Debian]
sudo yum install python3-pip           [On RHEL]
pip3 install --upgrade suricata-update

次に、/usr/bin/suricata-update へのシンボリック リンクを作成します。

sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

次に、公式 Suricata ダウンロード ページに移動し、wget コマンドを使用して Linux 用の最新の tarball ファイルをダウンロードします。

wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz

ダウンロードしたら、tarball ファイルを解凍してインストールします。

sudo tar -xvf suricata-6.0.6.tar.gz
cd suricata-6.0.6
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install-full

Linux での Suricata の構成

Suricata の構成を開始するには、内部 IP と外部ネットワークを指定する必要があります。これを行うには、構成ファイルにアクセスします。

sudo vim /etc/suricata/suricata.yaml

HOME_NET ディレクティブには、Linux システムの IP アドレスを指定します。

HOME_NET: "[173.82.235.7]"

次に、EXTERNAL_NET ディレクティブを「!$HOME_NET」に設定します。

EXTERNAL_NET: "!$HOME_NET"

次に、Suricata がネットワーク トラフィックを検査するネットワーク インターフェイスを指定します。この例では、これはeth0 インターフェイスです。

ip コマンドを使用して、アクティブなネットワーク インターフェイスを確認できます。

ip a

構成ファイルで、ネットワーク インターフェイスの名前を使用してインターフェイス ディレクティブを更新します。

- interface: eth0

次に、default-rule-path 属性が /etc/suricata/rules に設定されていることを確認します。

次に、変更を保存して構成ファイルを閉じます。次に、Suricata を再起動して変更を適用します。

sudo systemctl status suricata

Linux での Suricata ルールセットの更新

デフォルトでは、Suricata には、/etc/suricata/rules ディレクトリにある限定された検出ルールのセットが同梱されています。ただし、これらは侵入の検出には弱く、効果がないと考えられています。 Suricata の最も包括的なルール セットと考えられる新たな脅威 (ET) ルールをロードする必要があります。

Suricata は、外部プロバイダからルールセットを取得する suricata-update と呼ばれるツールを提供します。サーバーの最新のルールセットを取得するには、次のコマンドを実行します。

sudo suricata-update -o /etc/suricata/rules

出力から、suricata-update が無料の新たな脅威 ET オープン ルールを取得し、それを Suricata の /etc/suricata/rules/suricata< に保存していることがわかります。 ルール ファイル。さらに、処理されたルールの数を示します。この例では、合計35941 が追加されました。そのうち、28,221 件が有効になり、18 件が削除され、1,249 件が変更されました。

Linux での Suricata ルールセットの追加

suricata-update ツールを使用すると、ルールセット プロバイダーからルールを取得できます。 ET オープン セットなど無料のものもありますが、有料のサブスクリプションが必要なものもあります。

ルール プロバイダーのデフォルト セットを一覧表示するには、次のように suricata-update コマンドを実行します。

sudo suricata-update list-sources

ルールセット (たとえば、tgreen/狩りルールセット) を追加するには、次のコマンドを実行します。

sudo suricata-update enable-source tgreen/hunting

ルールセットを追加したら、 -o /etc/suricata/rules フラグを指定して suricata-update コマンドをもう一度実行します。

sudo suricata-update -o /etc/suricata/rules

Linux での Suricata ルールのテスト

Suricata のテストを開始する前に、構成が適切かどうかをテストすることをお勧めします。これを行うには、次のコマンドを実行します。

sudo suricata -T -c /etc/suricata/suricata.yaml -v

エラーが報告されないことを確認してください。 RHEL、CentOS Stream、Fedora、および Rocky Linux を実行している場合は、Suricata を起動して有効にします。

sudo systemctl start suricata 
sudo systemctl enable suricata 

これまでのところ、Suricata のインストールと構成、およびルールセットの更新が正常に完了しました。 ET Open Rule Set には、悪意のあるトラフィックを検出するための 30,000 を超えるルールが含まれています。このセクションでは、Suricata をテストして、疑わしいネットワーク トラフィックを検出できるかどうかを確認します。

Suricata のクイックスタート ガイドで推奨されているように、侵入をシミュレートすることでET オープン ルールセットをテストします。

IDS 機能は、NIDS (ネットワーク侵入および検出システム) フレームワークである testmynids.org Web サイトに HTTP リクエストを送信することにより、シグネチャ ID 2100498 を使用してテストされます。

curl http://testmynids.org/uid/index.html

次の出力が得られるはずです。

uid=0(root) gid=0(root) groups=0(root)

送信される HTTP リクエストは、シェルを介して侵害されたリモート システム上で実行される可能性がある id コマンドの出力を模倣することでアラートをトリガーするように設計されています。

次に、Suricata のログを調べて、対応するアラートを探してみましょう。 Suricata には、デフォルトで有効になっている 2 つのログ ファイルが付属しています。

/var/log/suricata/fast.log
/var/log/suricata/eve.log

grep コマンドを使用して、curl リクエストに対応する /var/log/suricata/fast.log ログ ファイル内のログ エントリを確認します。クイックスタート ドキュメントの 2100498 ルール識別子を使用してログ エントリを検索します。

grep 2100948 /var/log/suricata/fast.log

侵入を示す次の出力が得られます。ここで、173.82.235.7 はサーバーのパブリック IP アドレスです。

09/09/2022-22:17:06.796434  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822

あるいは、/var/log/suricata/eve.log ログ ファイルで、次のようにシグネチャ ID 2100498 を確認することもできます。

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

これは、Linux にSuricata をインストールして設定する方法に関する包括的なガイドでした。さまざまなインストール方法、Suricata の構成方法とSuricata ルールの更新方法、さらに Suricata systemd サービスの管理方法とネットワーク侵入テストの実行方法について検討してきました。

ネットワーク侵入や悪意のあるトラフィックからシステムを保護するために、Suricata を快適にインストールして使用できるようになることを願っています。