CISCO ASAでのACL挿入

CISCO ASAにACLを投入する際に、意図した順序にならないのでいろいろ調べてわかったことをメモしておきます。

結論

ASAでACLを追加する際、意図した場所に挿入したい場合は明示的にラインナンバーを記述する。

逆にラインナンバーを指定しないと、ポインタがどこにあるかわからないので、必ずしも末尾に追記されない場合があり、ACLのロード順序がコントロールできない。

解説

ASAでextendedのACLを投入する際、ルータ/スイッチと違って、シーケンスナンバーでの整理ではなく、ラインナンバーで整理されています。

ライン numberも含めたACLの確認は下記コマンドで実行します。

sh access-l

下記コマンドではラインナンバーは含まれないので注意が必要です。

sh run al

具体例

一般社員用のACL「vpn_filter1」を例にします。

asa# sh access-l vpn_filter1
access-list vpn_filter1 line 1 extended deny tcp any any eq ssh
access-list vpn_filter1 line 2 extended deny tcp any any eq telnet

line 1の前にACLを挿入したい場合は下記のようにラインナンバーを上書きします。

結果として既存のline 1はline2に、line 2、line 3も同様に次のラインナンバーに移動し、line 1に追記挿入されます。

access-list vpn_filter1 line 1 extended deny tcp any any eq ftp

ここでラインナンバーを明示しない場合、ポインタがどこにあるかわからないので、ftpをdenyするのが、ACL冒頭に来るか、ACL末尾に来るか、意図しない途中に挿入されるか違ってきます。

結果として意図したACLのロード順序にならず、適切なセキュリティコントロールが実現できません。

ASAでextendedのACLを投入する際はラインナンバーにも注意する必要があります。

なおラインナンバーはシーケンスナンバーと違って歯抜けでの指定はできません。番号は連続した数値となります。

おまけ

line 2を削除したい場合は下記コマンドを実行します。

no access-list vpn_filter1 line 2 extended deny tcp any any eq telnet

この場合、line 3がline 2に移動します。line 3、line 4以降も同様に前に移動します。