ACL【拡張ACLの設定】

CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。


前回投稿記事
-
こちらの[ACL【ACLの概要 / 標準ACLの設定】」](https://qiita.com/k-yasuhiro/items/4f0e59fdcdf0ec908bbf)投稿記事の続きです。
<br>

2.ACL / 拡張ACL
-

#### 2-1.拡張ACLの概要

##### ■拡張ACLとは？
拡張ACLとは、、送信元アドレス以外に<font color="Red"><b>宛先IPアドレス、プロトコル番号、送信元ポート番号、
宛先ポート番号</b></font>を指定出来る為、標準ACLよりも細かくパケットフィルタリングを掛ける事が
出来ます。

例えば、「192.168.0.0./24」からのHTTPアクセスは許可するが、TELNETは拒否するといった
分けて通信をする事が出来たり、
「172.16.0.1」へは許可、「172.16.0.2」へは拒否といったような、宛先事に許可と拒否を変えると
いった事も出来ますので、柔軟で細かい制御が出来る点で標準ACLと大きく異なります。

また、標準ACLと同様に、拡張ACLには<font color="Red">名前付き拡張ACL</font>と<font color="Red">番号付き拡張ACL</font>があります。

<br>
#### 2-2.拡張ACLの設定と確認

##### ■2-2-1.拡張ACLの設定

拡張ACLの設定の手順は、① 拡張ACLを作成する、② インターフェイスに適用する
といった標準ACLと同様の設定手順になります。
名前付き拡張ACLと番号付き拡張ACL、それぞれの作成方法で作成します。

① 拡張ACLを作成する

▶︎ 番号付き拡張ACLの作成
番号付き拡張ACLを作成するには、<b>グローバルコンフィギューレションモード</b>で
次の <font color="Red"><b>access-listコマンド</b></font>を実行します。

```
(config)# access-list < ACL番号 > < permit / deny > < プロトコル > < 送信元アドレス > < ワイルドカードマスク > 
　　　　　　[< 送信元ポート番号 >] < 宛先IPアドレス > < ワイルドカードマスク > [< オプション >]
```
>
＜ACL番号＞には、拡張ACL識別する為に、<font color="Red">100 ～ 199</font>、2000 ～ 2699 の範囲で指定する。
通常は100 ～ 199を使用します。こちらの全てを使用した場合に 2000 ～ 2699 を使用して行きます。
>
＜permit / deny＞は、条件文のパケット許可する場合は permit、拒否する場合は denyを使用します。
＜プロトコル＞には、プロトコル名を指定します。（ 例 ： ip / icmp / tcp / udp )
＜送信元アドレス＞と＜宛先IPアドレス＞、それぞれの＜ワイルドカードマスク＞を指定します
>
＜送信元ポート番号＞は、省略可能です。
プロトコルで<font color="Red">TCP、UDPを指定した際</font>に指定する事が出来ます。
指定方法は、<font color="Green">パラメータ＋ポート番号</font>となります。パラメータには以下の種類があります。
eq （ equal = 等しい） / neq （ not equal = 等しくない） / gt （ greater than = より大きい ）
lt （ less than = より小さい ） / range （ ポート番号の範囲 ）
>
＜オプション＞は、プロトコルで指定したプロトコルによって指定出来る値が異なります。※1

拡張ACLを作成する場合も、標準ACLと同様に、作成する順番に注意が必要です。
拡張ACLでも、最後に全て拒否するという<b>暗黙のdeny</b>が存在します。拡張ACLでは、
最後に自動的に追加される行は、<font color="Red"><b>「deny ip any any」</b></font>です。
>
※ anyは、ワイルドカードマスクを使用せず、全てのIPアドレスを指定する場合の表記
2つ並んでいるのは、送信元アドレスと宛先IPアドレスそれぞの分

※1 プロトコルのオプション例一覧

|プロトコル|説明|オプション例|
|:---|:---|:---|
|ip　　　　　|IPに関する項目。省略するとIPを使用する全通信を指定可能|dscnなど|
|tcp|パラメータ＋ポート番号、ポート番号は数字またはポート名|eq www　eq 80|
|udp|パラメータ＋ポート番号|eq snmp　eq 161|
|icmp|ICMPのメッセージのタイプ|echo(エコー要求)、echo-reply(エコー応答)|

<br>
▶︎ 名前付き拡張ACLの作成
名前付き拡張ACLの作成には、<b>グローバルコンフィギューレションモード</b>で
次の <font color="Red"><b>ip access-list extendedコマンド</b></font>を実行します。

```
(config)# ip access-list extended < ACL名 >
```

このコマンドを実行すると、<b>拡張ACLグローバルコンフィギューレションモード</b>に移行し、
プロンプト<font color="Green">（config-ext-nacl）#</font>に変わります。その後、条件を指定していきます。

```
（config-ext-nacl）# < permit / deny > < 送信元アドレス > < ワイルドカードマスク >
　　　　　　　　　　　[< 送信元ポート番号 >] < 宛先IPアドレス > < ワイルドカードマスク > [< オプション >]
```

プロトコルとオプションの指定方法や、最後に暗黙のdenyが自動的に追加される点も、
番号付き拡張ACLと同様です。

<br>
◇ ② インターフェイスに適用する
作成した拡張ACLをインターフェイスに適用するには、<b>インターフェイスコンフィギューレションモード</b>で
次の <font color="Red"><b>ip access-groupコマンド</b></font>を実行します。

```
(config)# ip access-group < ACL番号 | ACL名 > < in | out >
```

<br>
標準ACLは、<font color="Green">宛先に近いインターフェイスに設定</font>される事を推奨していますが、
拡張ACLは、<font color="Red">送信元に近いインターフェイスに適用</font>する事が推奨されています。

<br>
##### ■2-2-2.拡張ACLの設定例

通信要件：
①「192.168.0.11」のホストから、「10.1.1.1」のWebサーバーに対してポート番号80の通信を拒否する
②「192.168.0.12」のホストから、「10.1.1.1」のWebサーバーに対してポート番号23の通信を拒否する
③上記内容を除く、全ホストからの宛先へのIP通信を許可する


▶︎ 番号付き標準ACLで作成

① 拡張ACLを作成する

```
Router1(config)# access-list 100 deny tcp host 192.168.0.11 host 10.1.1.1 eq 80
Router1(config)# access-list 100 deny tcp host 192.168.0.12 host 10.1.1.1 eq 23
Router1(config)# access-list 100 permit ip any any
```
>
ACL番号は、1 ~ 99を指定すると標準ACLになってしまうので注意。
Telnetサーバは、TCPの23番ポートで待ち受けしているので、「eq telnet」と表記指定も問題なし。

②インターフェイスに適用する

```
Router1(config)# interface FastEthernet 0/1
Router1(config)# ip access-group 100 in
```
>
拡張ACLは、送信元に近いインターフェイスに適用する事が推奨されているので
「 in 」を指定しています。

▶︎ 名前付き標準ACLで作成

① 拡張ACLを作成する

```
Router1(config)# ip access-list extended ETTEST
Router1（config-ext-nacl）# deny tcp host 192.168.0.11 host 10.1.1.1 eq 80
Router1（config-ext-nacl）# deny tcp host 192.168.0.12 host 10.1.1.1 eq 23
Router1（config-ext-nacl）# access-list 100 permit ip any any
Router1（config-ext-nacl）#  exit
```

②インターフェイスに適用する

```
Router1(config)# interface FastEthernet 0/1
Router1(config)# ip access-group ETTEST in
```

<br>
上記意外の番号付き拡張ACLの条件文の例

|要件　　　　　　　　　　　　　　　　　　　　　　|ACLの設定|
|:---|:---|
|192.168.1.1 から 10.1.1.1 へのIP通信を許可|access-list 100 permit ip host 192.168.1.1 host 10.1.1.1|
|192.168.1.0/24 から全ての宛先へのIP通信を拒否|access-list 100 deny ip 192.168.1.0 0.0.0.255 any|
|全ての送信元から 10.1.1.1 へのHTTP通信を許可|access-list 100 permit tcp any host 10.1.1.1 eq 80|
|10.1.1.1 のWebサーバから全ての宛先への通信を許可|access-list 100 permit tcp host 10.1.1.1 eq 80 any|
|全てのICMP通信を許可|access-list 100 permit icmp any any|
|192.168.1.1 から 10.1.1.0/24 へのICMP通信を許可|access-list 100 permit icmp host 192.168.1.1 10.1.1.0 0.0.0.255|
|全てのIP通信を拒否|access-list 100 deny ip any any（ 最終行に自動で追加される ）|

<br>
参考記事
-
<font color="DarkTurquoise">※[ACL - Extended ACL](https://www.infraexpert.com/study/aclz5.html)という記事参照</font>