実習やった:標準ACL(アクセスコントロールリスト)

・下図のようなネットワークを作り、標準ACLを設定する。


★手順
PC、各種パスワード、各インターフェースの設定を行う
スイッチとルータをストレートケーブルでつなぐ

PCのブラウザから、スイッチにアクセス
(PCのブラウザを起動、アドレスバーに192.168.3.1と入力)

ポップアップでユーザ名とパスワードを聞かれる


ユーザ名は空欄、パスワードは特権パスワードを入力

こんな感じでスイッチに入れます(いろいろ操作可能)




今回は、スイッチさんが「PCから、telnetやら、httpやらで、こんな風にのぞかれたくない!」と
不満を言ってきたので、PCからスイッチにアクセスできないよう設定する、という内容の実習です。


お付き合いくださいませ。




送信元IPアドレスでアクセス制御をするのが標準ACL(アクセスコントロールリスト)です。


ブロックしたいIPアドレスのリストを作って、
インターフェースにそのリストを適用する、という流れです。


注意点としては、
●リスト作るだけじゃ制御できないよってことと、
●スイッチはアクセスリスト作ったり、ACL設定できないので、近くのルータに設定するってこと、ですかね。
↑スイッチはレイヤ2の機器ですから〜IPアドレスとか見ないんでしたね。



それではさっそく、設定してみましょう。

スイッチではアクセスリスト作れないんで、近くのR2で作りましょう。

アクセスリスト作るコマンドは以下の通り。
(config)#access-list [番号] [permit | deny] [送信元IPアドレス]


ではひとつひとつ見てきましょうかね。

access-list のあとには任意の番号が入るんですが、今回使う「標準のアクセスリスト」は1〜99までの番号が使えるようですね。
ではとりあえず1を入力しましょう。



1のあとに?で見てみると、deny(拒否する)か、permit(許可する)か、remark(説明/コメントをつける)と出ます。
※denyは「デニー」じゃないですよ!「ディナイ」ですよ!!
↑コレ何度も先生に言われた上、あとでanyもコマンドに出てくるので、私普通にディナイって読めてたのにだんだん「デニー」って言っちゃう回数増えてきました。。。


今回は、PCを拒否したいので、デニー・・・いやいやディナイで。



送信元IPアドレスを指定します。anyってやると全拒否になっちゃうので、ご注意を。
ここではPCのIPアドレスである、192.168.1.1を指定します。



↑logキーワードを指定すると、
「ポート固有の情報以外に、ACL 番号と、パケットが許可されたか拒否されたかが表示されます。」(Ciscoサポートページより)と、
書いてあるのですが、特にいらない(ていうかよくわからない)ので、そのままエンター。
はCarriage Return、行頭復帰の意味です。要は「もう入力するのないから、そのままエンター押しちゃって!」ってことです。



show run してみると〜

のりましたねー。



ここまででとりあえず、リストの作成が終わったってことで、
次はリストの適用です。


リストを適用するコマンドは、インターフェースに設定するので、
インターフェースコンフィグレーションモードにて。

(config-if)#ip access-group [リストの番号] [in | out]


スイッチの近くのルータだから、R2。じゃあR2の入口、s0に設定しときますか。
さっき設定したリストは1なので、1を設定。



・・・インバウンド?アウトバウンド?
中へか、外へか?


う〜ん。どっちだ?


てゆーか、どこからだ???( ?´_ゝ`) ?


って、頭こんがらがりました(私だけ?)

そしたら、「難しく考えるな」って言われました。

「今設定してるのは、R2のルータ。
R2にinするのか、R2からoutするのかってだけだよ」って言われました。


↑inするのを拒否したいのか・・・

↑outするのを拒否したいのか・・・


ほんじゃinで設定してみるか。

↑よいしょー


PCからスイッチにpingうってみる。

↑おおぅ。拒否された。成功〜




・・・あれ。ちょっとまって。
これってさぁ、PCの設定かえて192.168.1.1じゃなくしたらping通っちゃうんじゃないの。



↑.2にかえてみた


しめしめ・・・



↑あれっ!?拒否されてる!!!なぜ!?(;゜ロ゜)




そーなのです。
アクセスリストを作る際に最も気をつけることがここなのです!!!




↑このコマンド打ったあと、アクセスリストの最後には、暗黙のdeny anyが勝手についてくるんです・・・!!!


つまり、
「これを拒否」
「これを拒否」
「これを拒否」
って指定したあと、
「それ以外全部拒否」
ってついてきちゃうんです!!!


設定したやつ意味ねーーーーーー!!!!(-д-;)



はい、そんなことにならぬよう、ちゃんと入れるコマンドがあるんですね。
それが

permit anyです!


「これを拒否」
「これを拒否」
「これを拒否」
「それ以外全部許可」
って指定するコマンドです。

このコマンドがあれば、暗黙のdenyは顔出せません。引っ込むしかありません。
なので、permit anyはほんと、忘れちゃいけません!!!!!



これしないと〜

R1からのパケットも当然拒否されますから、
RIPとかのルーティングプロトコルのパケットまで拒否しちゃったりして大変です。



じゃあpermit any設定しましょう。
動きを見るために、PCからスイッチにpingでパケット送り続けてみます。





ping通ったー!permit anyー!



R1からのパケットも許可されたので、さっきR2のルーティングテーブルから消えちゃったRIPも復活します。






これで、めでたしめでたし・・・かと思いきや。
まだめでたくないようです。
問題があるんです。




「てゆーかさー、
PCからさー、
スイッチじゃなくてさー、
ℓ0んとこにパケット送ろうとしたときどーすんの?
s0のとこでブロックされちゃってんじゃん。」


と、どこかしらからご指摘が。



う〜〜〜〜〜〜ん。
たしかにこのままじゃ192.168.100.100にはping通りません。

↑どうしよう。(´・ω・`;)


ちょっと1回リストの適用をはずしてみようか。

↑はずし方はno+適用の時のコマンド



↑192.168.100.100にはping通ったけど、これじゃスイッチにはアクセスできちゃう。



さてさて、ここでさっきのinとoutの話を思い出してみてください!
よくよく考えてみると、

s0はinで拒否しちゃだめそうですね。代わりに、f0のoutを拒否に変えたらちょうどよさそう。



そうなのです、基本的に標準ACLは、宛先に限りなく近いところで設定するのがよいのです。
だからこの場合はf0ですね。
手前のs0で設定しちゃうと、他のルートまでふさがっちゃう場合が出てくるので、
「じゃあR2の入口、s0に設定しときますか。」なんて、適当にインターフェース選んじゃいけませんよ!!


よしよし。これでいいんじゃね?

↑PC→ℓ0通った!

↑PC→スイッチ拒否できた!

めでたしめでたし!