Snort

提供: ArchWiki
2019年3月1日 (金) 00:51時点におけるKusakata (トーク | 投稿記録)による版 (カテゴリ変更)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

プロジェクトの ホームページ より:

Snort® は Sourcefire によって開発されているオープンソースのネットワーク侵入防止・検知システム (IDS/IPS) です。署名・プロトコル・異常ベースの検査を組み合わせて使うことができ、Snort は世界で最も広く使われている IDS/IPS テクノロジーとなっています。数百万のダウンロードと四十万近くの登録ユーザーがいる Snort は IPS のデファクトスタンダードです。

一般的なセットアップとノート

  • Snort を使って WAN <-> LAN の調査をするのは困難です。どのコンピュータが警報を鳴らしたのか表示されず、また、HOME_NET を WAN の IP アドレスに設定する必要がありますが、モデルが DHCP を使用している場合、アドレスは変わってしまう可能性があります。
  • Snort が2つのインターフェイスのブリッジを設定するため、あなたが設定をする必要はありません。

2つのルーターを使うことで Snort で無線トラフィックを調査することができます。分かりやすくするために、DHCP がオンで無線がオフのルーターを「ルーター A」、無線がオンで DHCP がオフのルーターを「ルーター B」 とします。

  • 2つのルーターの IP アドレスは異なっている必要があります。ただしサブネットは同一にしてください。
  • Snort をインラインモードで動作させる場合、3つのネットワークインターフェイスカードが必要になります。管理用、受信トラフィック用、送信トラフィック用です。
  • ルーター B から Snort マシンの空いている NIC にイーサネットケーブルを接続してください。
  • ルーター A から Snort マシンの空いている NIC に別のイーサネットケーブルを接続してください。
  • Snort を起動したらトラフィックがルーター B <-> Snort マシン <-> ルーター A <-> インターネットを通るようにします。
  • インラインモードを使わない場合、トラフィックを Snort マシンに転送してください。参照: Port Mirroring

インストール

AUR から snortAUR をインストールしてください。

設定

メインの設定ファイルは /etc/snort/snort.conf です。

監視したいネットワークを Snort に指定してください:

ipvar HOME_NET [10.8.0.0/24,192.168.1.0/24]   

ファイルの一番下には、インクルードするファイルのリストがあります。Pulledpork を使ってルールセットをダウンロードする場合、以下の行以外を全てコメントアウトしてください:

include $RULE_PATH/snort.rules

Inline モード

Snort をインラインモードで使用する場合、設定の一番下に以下の行を追加してください:

config policy_mode:inline
config daq: afpacket
config daq_mode: inline
config daq_var:  buffer_size_mb=1024

インラインモードのサンプルとなる snort.confpastebin にもあります。

そして、サービスファイル /usr/lib/systemd/system/snort@.service の引数に -Q を追加してインラインモードを使うように設定してください。また、Snort は LRO と GRO をオフにすることを推奨しています [1]

[Unit]
Description=Snort IDS system listening on '%I'

[Service]
Type=simple
ExecStartPre=/usr/sbin/ip link set up dev %I
ExecStartPre=/usr/bin/ethtool -K %I gro off
ExecStart=/usr/bin/snort --daq-dir /usr/lib/daq/ -A fast -b -p -u snort -g snort -c /etc/snort/snort.conf -i %I -Q

[Install]
Alias=multi-user.target.wants/snort@%i.service

インラインモードに設定した Snort を起動するには (インターフェイスは適当に置き換えてください):

# systemctl start snort@ens1:ens4

IDS モード

IDS モードで Snort を起動するには:

systemctl start snort@ens1

Pulledpork でルールを更新

AUR から pulledporkAUR をインストールしてください。

設定

設定ファイルは /etc/pulledpork にあります。

/etc/pulledpork/pulledpork.conf を編集して使用したいルールをアンコメントしてください。ルールをダウンロードするには "oinkcode" が必要となります。

  • dropsid.conf に書かれているルールにマッチしたトラフィックは拒否されます。
  • enablesid.conf は署名を有効にします。全ての署名はデフォルトで有効になっているため、ファイルを編集する必要はありません。
  • disablesid.conf は Snort から署名を完全に削除したいときに使います。

ルールセットの中にあるカテゴリは以下のコマンドで確認できます:

pulledpork.pl -c /etc/snort/pulledpork.conf -Pw
lz /var/tmp/*.gz | egrep '\.rules' | cut -d'/' -f3 | sort -u | perl -lne '/(.*).rules/ && print $1' > rules.`date +%F`

Pulledpork でトラフィックを拒否

警告を発するだけでなく Snort の署名が一致したトラフィックを全て拒否するには、dropsid.conf に以下を追加してください:

pcre:.

もしくはカテゴリにマッチしたトラフィックを全て拒否したい場合:

policy-social
policy-other
file-other

特定のルールのみを拒否したい場合:

118:7

Pulledpork でルールを無効化

署名を無効化したいときは gen_id と sig_id を /etc/pulledpork/disablesid.conf に追加:

118:22

カテゴリを無効化したい場合:

deleted
protocol-icmp
policy-social
policy-other

Pulledpork の実行

以下のコマンドで新しいルールがダウンロードされて /etc/snort/rules/snort.rules に書き込まれます:

pulledpork.pl -c /etc/pulledpork/pulledpork.conf  -P

ルールの更新: Oinkmaster

Snort の最新ルールをダウンロードしたい場合、サブスクリプションが必要になります。お金がかかります。5日ほど古くなったルールでも問題ない場合は、無料で登録できます。登録しない場合、Snort が新しくリリースされるときに配布されるルールでしかアップデートを得られません。Snort から登録してください。どうしても登録したくないときは、BleedingSnort.com のルールを使うことができます。ただし最新版のルールなので、テストが十分に行われていない場合があります。

oinkmasterAURAUR パッケージでインストールできます。

Oinkmaster の設定

/etc/oinkmaster.conf を編集して URL セクションの 2.4 行をアンコメントしてください。また、Snort アカウントにログインした後に生成される Oink コードで <oinkcode> を置き換えてください。Bleeding Snort ルールを使用する場合、適当な行をアンコメントしてください。

新しいアカウントにログインしたら、"Oink code" を作成してください。また、以下の行を変更してください:

use_external_bins=1 # 1 uses wget, tar, gzip instead of Perl modules

設定ファイルの残りの部分は変更しなくても問題ありません。

Oinkmaster の使用方法

oinkmaster.pl -o /etc/snort/rules

適当なコマンドで実行スクリプトを作成して /etc/cron.daily に配置すれば自動的にルールが更新されます。

関連項目