CiscoのACLにコメントを付ける

CiscoのACLにはコメントを付けることができる。
特に難しいことはないのだが、多少癖があるのでメモしておく。


ACLのコメント


やり方は至って簡単で、通常のACL作成時に"remark"コマンドを使用すれば良い。
雰囲気はInterfaceの"description"の使い方に似ている。

番号付きACLの場合は下記になる。

 ip access-list 100 remark ==== XXXXX ====


名前付きACLの場合は下記になる。

 ip access-list extended [ACL名]
remark ==== XXXXX ====


全体の用途はACL名で付けるので、一行一行の用途をremarkで書く人もいれば、
ACL名はあくまで簡易的に付けて、詳細をremarkで記述するという人もいる。
言い分は人それぞれなので、正解はない。
好きなように使えば良いと思う。

■ACL全体のコメント
 ip access-list extended TEST
remark ==== from Inside to Server Segment ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
permit icmp any any
deny ip any any


■ACL一行一行に対するコメント
 ip access-list extended TEST
remark ==== HTTP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
remark ==== HTTPS ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
remark ==== RDP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
remark ==== ICMP ====
permit icmp any any
remark ==== All Deny ====
deny ip any any


残念ながら"show run"で確認しないと"remark"は見れない。
"show ip access-list"だと下記のように省かれてしまう。

 RT01#show ip access-lists 
Extended IP access list TEST
10 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
20 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
30 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
40 permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
50 permit icmp any any
60 deny ip any any


まぁ上記のような状態で間にコメントが挟まっていると見づらいのだろうが。


remarkコマンドの注意点


使い方によっては便利だなと思う"remark"コマンドだが、
ACLを修正する場合には注意が必要になる。

例えば下記ACLの一行目に行を追加したい場合。

 ip access-list extended TEST
remark ==== HTTP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
remark ==== HTTPS ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
remark ==== RDP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
remark ==== ICMP ====
permit icmp any any
remark ==== All Deny ====
deny ip any any


シーケンス番号は下記のようになっていたとすると、
一行目の"10"より小さい番号を付与して行を追加すれば良いのだが・・・。

 RT01#show ip access-lists 
Extended IP access list TEST
10 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
20 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
30 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
40 permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
50 permit icmp any any
60 deny ip any any


実際にやってみる。

 RT01(config)#ip access-list extended TEST
RT01(config-ext-nacl)#5 deny ip any host 3.3.3.3
RT01(config-ext-nacl)#end


これで"show ip access-list"で確認してみる。

 RT01#show ip access-lists 
Extended IP access list TEST
5 deny ip any host 3.3.3.3
10 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
20 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
30 permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
40 permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
50 permit icmp any any
60 deny ip any any


想定通り、一行目に挿入できた。
では"show run"を確認してみる。

 RT01#show run
~中略~
ip access-list extended TEST
deny ip any host 3.3.3.3
remark ==== HTTP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
remark ==== HTTPS ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
remark ==== RDP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
remark ==== ICMP ====
permit icmp any any
remark ==== All Deny ====
deny ip any any


remarkよりも上にきている。
ダメでは無いが、この状態だと一行目にもremarkを入れたくなる。
なので、実際にremarkを追加してみる。

例えば"5"よりも小さい番号を付与して"remark"を挿入しようとすると・・・。

 RT01(config)#ip access-list extended TEST
RT01(config-ext-nacl)#1 ?
deny Specify packets to reject
exit Exit from access-list configuration mode
permit Specify packets to forward


"remark"コマンドがない!
残念ながらシーケンス番号を付与しての"remark"コマンドの挿入は不可のようだ。

ちなみに、一行下とかにACL行を追加する分には
"remark"よりも上に追加されるので問題はなさそうだ。

 RT01(config)#ip access-list extended TEST
RT01(config-ext-nacl)#15 permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 80
RT01(config-ext-nacl)#end
RT01#
RT01#show run
~中略~
ip access-list extended TEST
deny ip any host 3.3.3.3
remark ==== HTTP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq www
remark ==== HTTPS ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
remark ==== RDP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
remark ==== ICMP ====
permit icmp any any
remark ==== All Deny ====
deny ip any any


"remark"コマンドはすぐ次の行と連動していると考えると良いのかもしれない。
間に行を挿入するときは良く考えてやらないと上手くいかないこともでてくるだろう。

綺麗に並べたいのであれば、ACLを消してから入れ直すしか無い。

 RT01(config)#no ip access-list extended TEST
RT01(config)#
RT01(config)#ip access-list extended TEST
RT01(config-ext-nacl)# remark ==== deny 3.3.3.3 ====
RT01(config-ext-nacl)# deny ip any host 3.3.3.3
RT01(config-ext-nacl)# remark ==== HTTP ====
RT01(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
RT01(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq www
RT01(config-ext-nacl)# remark ==== HTTPS ====
RT01(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
RT01(config-ext-nacl)# remark ==== RDP ====
RT01(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
RT01(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
RT01(config-ext-nacl)# remark ==== ICMP ====
RT01(config-ext-nacl)# permit icmp any any
RT01(config-ext-nacl)# remark ==== All Deny ====
RT01(config-ext-nacl)# deny ip any any
RT01(config-ext-nacl)#
RT01(config-ext-nacl)#end
RT01#
RT01#show run
~中略~
ip access-list extended TEST
remark ==== deny 3.3.3.3 ====
deny ip any host 3.3.3.3
remark ==== HTTP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq www
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq www
remark ==== HTTPS ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 443
remark ==== RDP ====
permit tcp 192.168.1.0 0.0.0.255 host 1.1.1.1 eq 3389
permit tcp 192.168.1.0 0.0.0.255 host 2.2.2.2 eq 3389
remark ==== ICMP ====
permit icmp any any
remark ==== All Deny ====
deny ip any any


このやり方は、一瞬ではあるがACLが外れてノーガードになる。
気にしない企業もあるだろうが、金融とかは厳しいので怒られる可能性もある。

Interfaceの"description"のように気軽に追加してしまうと
痛い目を見ることもあるかもしれない。
ACLの入れ直しが難しいのであれば、"remark"は使わないほうが良いとも言える。


以上。



Cisco IOSアクセスリスト


この記事へのコメント