IPCOMをファイアウォールとして使う場合のルール設定

ネットワーク

IPCOMをファイアウォールとして使う場合のルール設定方法を説明します。

ぱっと見でわかりやすい1つのクラスマップで作る方法が主になります。

最後に複数のクラスマップで分ける方法も紹介します。

この記事で説明するルールの条件

  • 送信元IPアドレス
  • 送信先IPアドレス
  • 送信先ポート番号

一般的にファイアウォールの条件として使われるこの3つでルールを作成します。

1つのクラスマップに全て書く

class-map match-all rule-1000
    match source-address ip 192.168.10.1
    match destination-address ip 192.168.20.1
    match destination-port 80/tcp
    exit
interface channel0
    rule access 1000 in rule-1000 accept audit-session-normal audit-match-none
    exit

こちらは全ての条件が1つのクラスマップに入っているので目視で条件がわかりやすいです。

注意点としては複数の送信元IPがある場合などは後ろに続けて書く必要があるのと後からメンテナンスする時にミスしやすくなります。

 

メリット

  • 視覚的に分かりやすい
  • コンフィグがスマートになる

デメリット

  • 条件が多い場合はメンテナンスが難しい
  • 膨大な条件を設定できない

クラスマップを作成

クラスマップを作成

rule-1000という名前で作成します。

class-map match-all rule-1000

 

 

rule-1000の名前は他のクラスマップ名と重複しないよう命名します。
番号をつける場合はインタフェースに設定するrule accessの番号と統一することで可読性が上がります。

rule access 1000 in rule-1000 accept audit-session-normal audit-match-none

送信元IPアドレスを指定

192.168.10.1を指定します。

    match source-address ip 192.168.10.1

複数のIPを指定したい場合はカンマで区切ります。

    match source-address ip 192.168.10.1,192.168.10.10

IPの範囲を指定したい場合はハイフンで区切ります。

    match source-address ip 192.168.10.1-192.168.10.10

ネットワークを指定したい場合はスラッシュでサブネットマスクを書きます。

    match source-address ip 192.168.10.0/24

 

送信先IPアドレスを指定

192.168.20.1を指定します。

    match destination-address ip 192.168.20.1

複数のIPを指定したい場合はカンマで区切ります。

    match destination-address ip 192.168.20.1,192.168.20.10

IPの範囲を指定したい場合はハイフンで区切ります。

    match destination-address ip 192.168.20.1-192.168.20.10

ネットワークを指定したい場合はスラッシュでサブネットマスクを書きます。

    match destination-address ip 192.168.10.0/24

 

送信先ポートを指定

80のTCPで指定します。

    match destination-port 80/tcp

 

TCPやUDPのプロトコルを指定しない場合

    match destination-port 80

TCPとUDPを指定する場合

    match destination-port 80/tcp-udp

UDPだけ指定する場合

    match destination-port 161/udp

複数のポートを指定する場合はカンマで区切る

    match destination-port 80/tcp,8080/tcp

数種類のパターンを指定する場合はカンマで区切る

    match destination-port 80/tcp,8080/tcp,161/udp

連続したポートの範囲を指定する場合はハイフンで区切る

    match destination-port 3000-3100/tcp

Pingの場合は「protocol 1」を使う

    match protocol 1

 

インタフェースの適用

作成したクラスマップをinterface channel0へ適用する

interface channel0
    rule access 1000 in rule-1000 accept audit-session-normal audit-match-none
    exit

インタフェースの選び方

パケットが入ってくるインタフェースを指定する。

これを間違えるとルールが効かないので気をつけてください。

rule accessの番号の選び方

ホワイトリスト形式で使う場合はほとんどなので1から順番に使用します。

acceptとは

クラスマップに一致した通信を通過させるオプションです。

通過させたくない場合はdropを指定します。

audit-session-normalとは

セッションを判別してログを1行で出力するオプションです。

audit-session-normalはデフォルト設定。

ログ出力しない場合はaudit-session-noneを指定します。

セッション内のデータも全て記録する場合はautit-session-allを指定します。

audit-match-noneとは

ルールの一致を判別してもログに出力しないオプションです。

audit-match-noneはデフォルト設定。

ログを1行で出力する場合はaudit-match-normalを指定します。

一致したログを全て出力する場合はaudit-match-allを指定します。

 

クラスマップを分けて書く

class-map match-all rule-1000-sourceaddress
    match source-address ip 192.168.10.1
    exit
class-map match-all rule-1000-destinationaddress
    match destination-address ip 192.168.20.1
    exit
class-map match-all rule-1000-destinationport
    match destination-port 80/tcp
    exit
class-map match-all rule-1000
    match class-map rule-1000-sourceaddress
    match class-map rule-1000-destinationaddress
    match class-map rule-1000-destinationport
    exit
interface channel0
    rule access 1000 in rule-1000 accept audit-session-normal audit-match-none
    exit

こちらは送信元IPアドレス/送信先IPアドレス/送信先ポート毎に3つの子クラスマップを作成します。

そして親クラスマップを1つ作成して子クラスマップをまとめます。

この記載方法だとIPアドレスを1行毎に書けるのでクラスマップ毎の状態を見やすいです。

ですが、クラスマップ名でランニングコンフィグがソートされるので名前の付け方によっては親と子のクラスマップの位置がバラバラになるので読みにくくなります。

 

メリット

  • 条件が多くても対応できる

デメリット

  • 可読性が低い

最後に

ルールの書き方は自由度が高いので悩むところです。

1つのクラスマップの方がわかりやすいですが、後で拡張させたくても管理上難しくなるので個人的にはクラスマップは子と親で分けたほうがいいと思います。

 

コメント

タイトルとURLをコピーしました