JANOG51 NETCON 問題解説 (Level 1-3) 

トラシュー

JANOG51ではNETCONの委員として問題を作成したので解説します!
ここでは私が作成した3問のうちLevel 1-3の回答をしようと思います。
その他の2問はこちら。
Level 1-5
Level 3-2

Level 1-3 問題内容

問題文

弊社ではNW機器の監視用のサーバーを用意しており、
サーバからSNMPで定期的に情報を取得している。

新人であるあなたは上司から「RT2もSNMP監視できるようにしておいてね。よろしく(^_-)-☆」と言われた。
しかし、下記の表のようにRT2はMONITOR-SV2からはSNMP監視は禁止するポリシーのようだ。
RT1はすでに設定されている。RT2に設定を行いましょう。

SNMP Ver: 2c
SNMP Community: janog51

RT1RT2
MONITOR-SV1
MONITOR-SV2X
OTHERXX
達成条件
  • RT2の情報をSNMPで読み取りができること
  • SNMPの取得について、上記の表のポリシー通りに設定されていること
SNMP取得方法

MONITOR-SV1/MONITOR-SV2にログインした後、下記のコマンドを実行して確認できる。

export SNMP_COMMUNITY=janog51
python get_snmp/snmp_watch.py
GitHub - izumin-baal/get_snmp
Contribute to izumin-baal/get_snmp development by creating an account on GitHub.

問題概要

この問題はSNMPによる監視ができるように設定し、ACLを用いて制限を実施する問題。
今回のNETCONの中では難度が低く、多くの人が回答していました。
問題について解説していきます。

問題解説

この問題では、SNMPによる監視を許可する設定を行い、監視サーバから情報を取れるようにすることがゴールとなっている。

  • RT2の情報をSNMPで取得できること

1つ目の達成条件であるSNMPの取得を行うにはルータにsnmpの設定を行う必要がある。

設定をしない段階では情報を取得できないため、snmp_watch.pyを実行しても以下のようになる。

bash-5.2# python get_snmp/snmp_watch.py
=== SNMP Monitor ===
COMMUNITY: janog51
 
== 192.168.1.1 ==
 hostname: RT1
 Uptime: 0:0:02:51.23
== 192.168.1.2 ==
 hostname: None
 Uptime: None

RT2の情報だけ取得できないことがわかる。
問題文にコミュニティが指定されているためそのパラメータを利用して設定する。

snmp-server community janog51 RO

上記のように、communityを指定する。
ROについてはこの問題では指定はなく、読み取りだけができれば良いためROでよい。
RT1にはすでに設定が入っており、ここではROが設定されているので参考にすればOK

しかし、この状態では2つの目の条件が達成できない。

  • SNMPの取得について、上記の表のポリシー通りに設定されていること

表をみるとMONITOR-SV2からは取得できないようなポリシーであり、OTHERも取得できないようになっていることから、
ホワイトリスト式に許可する必要があることがわかる。

したがって、SNMPにACLを適用し、必要最低限のhost prefixを追加してあげればOK
ACLは暗黙のDenyがあるためdenyを書く必要はない。

ip access-list standard SNMP_ACL
 10 permit 192.168.2.1

ACLを作成したらSNMPに適用する。

snmp-server community janog51 RO SNMP_ACL

以上のように設定することでMONITOR-SV1だけ取得できるようになり、以下のようにポリシー通りの設定となる。

[MONITOR-SV1 get_snmp]# python snmp_watch.py
=== SNMP Monitor ===
COMMUNITY: janog51
 
== 192.168.1.1 ==
 hostname: RT1
 Uptime: 0:0:03:58.59
== 192.168.1.2 ==
 hostname: RT2
 Uptime: 0:0:03:58.89
 
[MONITOR-SV2 get_snmp]# python snmp_watch.py
=== SNMP Monitor ===
COMMUNITY: janog51
 
== 192.168.1.1 ==
 hostname: RT1
 Uptime: 0:0:04:27.55
== 192.168.1.2 ==
 hostname: None
 Uptime: None

まとめると

+ ip access-list standard <acl_name>
+  10 permit 192.168.2.1
!
+ snmp-server community janog51 RO <acl_name>

全体を通して

以上が、Level1-3の解説です。
採点については各MONITOR-SVからsnmpwalkを叩いて、
+50%: 取得できる
+50%: ポリシー通り
としています。

ACLは事故りやすいので気をつけましょう。以上、ありがとうございました!

タイトルとURLをコピーしました