IPCOMをファイアウォールとして使う場合のルール設定方法を説明します。
基本的なルールの設定方法と拡張的なルールの設定方法2種類を紹介します。
この記事は、
- IPCOMをファイアウォールとして使いたい
- ファイアウォールの設定コマンドを知りたい
こんな方に読んでもらいたいです。
ルールを設定するコマンド
設定コマンドはIPCOMログイン後に、管理モード、設定モード、設定の読み込みを行った後に入力できます。
IPCOM>admin
Password:xxxx←表示はされませんがここでadminのパスワードを入力
IPCOM#configure ←設定モードに変更
IPCOM(config)#load running-config ←実行中の設定を読み込み
IPCOM(edit)#←この状態で入力していきます。
一般的にファイアウォールの条件として使われる
- 送信元IPアドレス
- 送信先IPアドレス
- 送信先ポート番号
この3つでルールを作成します。
後から条件を追加することもできるのでここでは3つのバージョンを参考にしてください。
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
クラスマップ(class-map)とはルール設定に必要な、
- 送信元IPアドレス
- 送信先IPアドレス
- 送信先ポート番号
をまとめるグループだと考えてください。
そしてそのグループに所属するメンバーはマッチ(match)で記載します。
マッチ(match)で指定する内容は3つです。
- 送信元IPアドレス
- 送信先IPアドレス
- 送信先ポート番号
それぞれ赤マーカー部分の値を変える事で自由に設定できます。
- match source-address ip 192.168.10.1
- match destination-address ip 192.168.20.1
- match destination-port 80/tcp
マッチ(match)の設定が終わったらクラスマップをインタフェースに設定します。
インタフェースは複数ありますが、どこに設定するべきかはファイアウォール自身のルーティング情報を見なければ判断ができません。
今回のポートはinterface channel0とします。
どうしても設定するべきインタフェースがわからない場合はすべてのインタフェースに設定することで確実にルールを適用させることができますが、そこも注意が必要です。
具体的なコマンドの作り方
クラスマップを作成
rule-1000という名前で作成します。
class-map match-all rule-1000
rule-1000の名前は他のクラスマップ名と重複しないよう命名します。
番号をつける場合はインタフェースに設定するrule accessの番号と統一することで可読性が上がります。
送信元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を指定します。
クラスマップを1つにまとめる場合の特徴
こちらは全ての条件が1つのクラスマップに入っているので目視で条件がわかりやすいです。
注意点としては複数の送信元IPがある場合などは後ろに続けて書く必要があるのと後からメンテナンスする時にミスしやすくなります。
メリット
- 視覚的に分かりやすい
- コンフィグがスマートになる
デメリット
- 条件が多い場合はメンテナンスが難しい
- 膨大な条件を設定できない
参考:他の記述方法
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行毎に書けるのでクラスマップ毎の状態を見やすいです。
ですが、クラスマップ名でランニングコンフィグがソートされるので名前の付け方によっては親と子のクラスマップの位置がバラバラになるので読みにくくなります。
メリット
- 条件が多くても対応できる
デメリット
- 可読性が低い
設定を保存する
設定が終わったら保存しましょう。
保存するコマンド
IPCOM(edit)#save Do you overwrite "running-config" by the current configuration? (y|[n]):y ←yを入力 Do you update "startup-config" for the restarting system? (y|[n]):y ←yを入力
この表示が出ればOK
The configuration was committed and saved to startup-config.
編集モードを終了しておきます。
IPCOM(edit)#end
クラスター(装置冗長化)の場合は同期コマンドも実行します。
IPCOM#sync cluster Thes System:primary primary ("設定日の日付") -> secondary("前回設定日の日付") Are you sure? (y|[n]):y ←yを入力
同期処理のログが沢山出力されますが、
最後にこの表示が出ればOKです。
[INFO]The synchronization was completed.
動作確認方法
正しく設定できているかは実際に通信を行って試せばいいですが、ネットワーク管理者側では難しい場合もあります。
そんな時はこちらの表示コマンドを実行してください。
show access statistics channel1 in
赤色部分は設定したインタフェースに応じて変更してください。
設定したアクセスルール毎に通過または破棄した数を確認できます。
設定直後だとまだカウントされていないかもしれませんが、少し日数を空ければ確認ができるかもしれません。
IPCOMの確認コマンドは、こちらの記事で紹介しているので参考にしてください。
ネットワークはどうやって覚える?
ネットワークといっても基本用語が分からないと都度ネットで調べたりして時間がかかってしまいます。基礎から学ぶと実際のネットワークを見た時に、その構成の理由を理解できるようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはネットワークの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
実際に使われるコマンドなど実戦形式で覚えたい方はCCNAの学習をおススメします。
私もこのWEBサイトで勉強して資格を取りました。
>>CCNA学習用WEBサイトを見てみる
過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。
本ではわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、ネットワークを覚える敷居がとても低くなります。
誰かに相談できるのは心強いです。
>>ネットワークの基本資格CCNAのオンラインスクールを見てみる
まとめ
ルールの書き方は自由度が高いので悩むところですが、
既に設定するルールやボリュームがわかっている場合は1つのクラスマップにまとめて書く方法をおススメします。
逆に今後ルールが増える見込みの場合は、クラスマップを子と親で分けたほうが拡張性が高まります。
ルールの設定を行ったら次はアクセスログの解析が必要です。
コピペで使えるExcelVBAの解析ツールで通信を見てみましょう。