LoginSignup
5
1

More than 1 year has passed since last update.

AWS NetWork Firewall を使用した Web フィルタリングの実装 - Suricata compatible IPS rules -

Last updated at Posted at 2021-06-21

本記事では AWS Network Firewall にて実装が可能な Suricata互換のIPSルールの解説と簡易的なルールを記載する

Suricataとは

Suricataとは、簡単にいうとオープンソースのセキュリティ監査エンジン。
Network Firewall では互換性のあるステートフルルールとしてSuricataが使用可能である。

以下、公式ドキュメント

特徴

他のステートフルルールである 5tuple あるいは domain list との大きな違いは、定義したシグネチャー通りに動作を行うところ。要は以下に記載したルールによって、検査を行う動作内容を表現する事が出来る。
また、5tuple あるいは domain list で実装が出来ないシグネチャー単位で優先順位を付ける事が可能。

image.png

ルール形式

基本的には公式ドキュメントに記載がある形式を使用する。

ルール形式は以下の3構成で定義される。

項目 動作内容
アクション 検査後にどのような対応を行うか
ヘッダ プロトコル、IPアドレス、ポート、ルールの方向を指定
オプション ルールの詳細を定義

以下を例として色付けによる解説を行う。

drop http any any -> any any (msg:"HTTP traffic detected"; sid:200000; rev:1;)

  • アクション

アクションでは以下 3つが定義可能
Pass : パケットの検査を終了し、目的の宛先への送信を許可。
drop : ファイアウォールにアラートログが設定されている場合は、メッセージを送信する。パケットのすべての検査を終了し、目的の宛先に送信されないようにブロックする。
alert : ファイアウォールにアラートログが設定されている場合は、メッセージを送信する。パケットが目的の宛先に送信されることを許可。

Network Firewall では reject アクションはサポートされない。

  • ヘッダ

ヘッダは以下大きく分けて 4つの構成から定義されている

protocol : 検査するプロトコルを定義。指定可能なプロトコル一覧は以下となる。
tcp / udp / icmp / ip (allまたは any) / http / ftp / tls (sslを含む) /smb / dns / dcerpc / ssh /smtp /imap / ikev2 / krb5 / ntp /dhcp

src and dest: 通信の送信元と、送信先のIP を指定。以下のように特定の演算子や変数の指定も可能。任意の送信先とする場合は any -> , -> any にて表現する。

演算子 内容
../.. CIDR
! 否定/例外
[.., ..] グループ化
$HOME_NET / $EXTERNAL_NET 自分のネットワークの範囲 / 自分以外のネットワークの範囲

port :送信元と送信先のポートを指定する。
以下のように演算子を用いた指定も可能。任意ポートは any -> , -> any にて表現する。

演算子 内容
: ポート範囲
! 否定/例外
[.., ..] グループ化

direction :通信の方向を指定する。
direction の記述については、以下の通り2パターン

演算子 内容
-> source から destionation への通信
<> 双方向の通信

このようにヘッダは記述を行う。先述したルールを上記に倣って解釈すると、全ての送信元から http プロトコルにて全ての送信先へ通信をする場合、 drop する。となる。

drop http any any -> any any (msg:"HTTP traffic detected"; sid:200000; rev:1;)
  • オプション

ルールの残りの部分はオプションで構成される。
これらは括弧 ( ) で囲まれ、; セミコロンで区切られる。
オプションはキーワードによって構成され、sid キーワード以外は任意のメタキーワードとなる。
一部の msg オプションには設定があり、キーワード、コロン、設定の順に指定される。その他には設定がなく、キーワードとなる。

sid : オプションで唯一必須の項目となる。任意のID を定義し、他のシグネチャーと重複しないようにする。

rev : シグネチャーのバージョンを表記する。変更があった際に更新をかけるキーワード

msg : アラートに関するテキスト情報を提供する。

オプションはキーワードの数が多く、適切なキーワードを使用してシグネチャーを作成する。先述したルールを上記に倣って解釈すると、全ての送信元から http プロトコルにて全ての送信先へ通信をする場合、通信は drop され、"HTTP traffic detected" といったテキスト情報をアラートログへ記述するようになる。

drop http any any -> any any (msg:"HTTP traffic detected"; sid:200000; rev:1;)
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1