読者です 読者をやめる 読者になる 読者になる

まちゅあドック - コミュ障ぼっちの社会冒険譚

重度コミュ障ながらも上流SEとして働く男の嘆息記です

Cisco 841M J with IOS m800 15.5(3)M のZBFにSMTPS通信の穴を空ける

にほんブログ村 その他日記ブログ ひとりぼっち日記へ

お久しぶりです。

何とか生きてます。もう精神的には半分死に体ですが(^q^)

 

そして、記事タイトルを見て「あっ(察し)」となった方、正解です。

今回も誰得な防備録でお茶を濁します!!11

 

何で社畜生活について一切投稿しないかと言うと、あまりにも辛く惨めな日々を思い出すと休日なのに心身が休まらないという所が2割、忙しすぎてブログを更新する気力が湧いてこないという所が8割ぐらいの理由です。

「やっぱり自閉ぎみのコミュ障ぼっちに社会人生活なんてどだい無理やったんや!!orz」と落ち込む時が日に日に増してきています…。

 

…と、ここまで書いたところでだいぶ気分がブルーになってきたので、このあたりの話題はおいおい別記事で紹介する予定にして、今回はZone Based Firewall(ZBF)を設定したCisco 841M Jで、SMTP over SSL/TLS (SMTPS)が通らずハマったときの状況と解決法を記載しておきます。

 

※ ZBFをご存じない方は、まず下記ドキュメントを読んでみると良いと思います。
いきなり公式のマニュアルを読むと心が折れます(^o^;)

changineer.info

 

 

 

----------------------------------------------------

1. 【経緯】port-mapでSMTPSをセットしても穴が明かないぞヴォケ!!( ゚Д゚)

会社で受験させられたCCENTを無勉で受けたところ、Cisco IOSのコマンドがまるで分からず無事に玉砕*1した私は、僅か2万円弱で本物のIOSが触れてipv6ルーティングもVPNも設定できちゃうCisco 841M Jを買い込み、色々と遊んで勉強してみることにしました。

 

シリアルポートやSSH経由でCUIに接続してコマンドを設定してみたり、セキュリティ向上策として一度アクセスを禁じたはずのtelnetやtcp22番のsshを、設定ページを眺めているだけで復活させてくれる大変有り難いCisco Configuration Professional Expressを光の速さで封じたりして楽しんでいたわけです。

ところが、その矢先に母から「iPhoneのメールが使えない!!」とクレームが入り、ZBFでIMAP over SSL/TLS(IMAPS)やSMTPS、ついでにFaceTime/iMessagesが使う各ポートの開放設定を忘れていたことに気がついた私は、ZBFの設定を変えることにしました。

 

 

● ZBFで判別させたいプロトコルを手動で追加する

本機に初期搭載されているProtocol Packには、IMAPSを判別するsecure-imapというプロトコル設定は事前に入っているのですが、SMTPSやFaceTime/iMessages設定は入っていません。

そこで今回は、port-map機能を用いて手作業で設定を作りました。


configure terminal

ip port-map user-facetime1 port udp from 3478 to 3497
p port-map user-facetime2 port udp from 16384 to 16387
ip port-map user-facetime3 port udp from 16393 to 16402
ip port-map user-facetime4 port tcp 5223
ip port-map user-rdp port tcp 3389
ip port-map user-smtp-tls port tcp 587
ip port-map user-smtp-ssl port tcp 465

 

● 許可したいプロトコルを指定する

そして、IMAP/IMAPS関連の設定や上で追加したプロトコルを、予め用意しておいたclass-mapであるother_appに追加しました。

ちなみに、other_appに追加したプロトコルは、LAN(VLAN1)からWAN(Dialer1)に出て行く通信に対してチェック・制御が機能するように設定しています*2

 

class-map type inspect match-any others_app

match protocol imap
match protocol secure-imap
match protocol imap3
match protocol user-smtp-ssl
match protocol user-smtp-tls
match protocol user-facetime1
match protocol user-facetime2
match protocol user-facetime3
match protocol user-facetime4

 

● これで準備万端??

…なはずだったのですが、この設定によって上手く動作するようになったのはIMAP/IMAPS (=メールの受信)のみ。

SMTPSは相変わらず動かない (=メールの送信が出来ない)し、FaceTimeも呼び出し音は鳴るもののキャッチアップも通話も出来ないという状況でした。

 

もちろん、はじめは「追加したプロトコルが全部ダメってことは、ZBFにport-mapで設定したプロトコルは適用できないのではないか?」と疑いました。

が、試しにrdpプロトコル*3の設定を追加してOS X MavericksMicrosoft Remote DesktopでRDP通信のテストをしてみたところ、こちらは普通に成功してしまったので、この仮説はあっさりと覆ってしまいました。

 

ip port-map user-rdp port tcp 3389

class-map type inspect match-any others_app
match protocol user-rdp

 

2. 【解決法】もう面倒くさいからZBFの許可設定にACLグループを追加しちゃえ★

で、その後も色々調べてはみたんですが、解決法はまるで見つからず…。

仕方ないので、ACLグループをZBFの判別条件に追加することにしました。

 

ACLを作る

我が家の環境では、192.168.0.224/31をスマホ等のPDA系ガジェット (死語)のIPにしていて、PCではWebメール (Gmail)を使っているためにSMTPSを使わないため、192.168.0.224/31 (ACL的記述では、192.168.0.224 0.0.0.31)を送信元とする通信のみを制御対象に加えています。・

IP指定がめんどくさければ、192.168.0.224 0.0.0.31をanyに変えてしまえば良いと思いますが、セキュリティレベルは僅かに落ちます。

access-list 110 permit udp 192.168.0.224 0.0.0.31 any range 3478 3497
access-list 110 permit udp 192.168.0.224 0.0.0.31 any range 16384 16387
access-list 110 permit udp 192.168.0.224 0.0.0.31 any range 16393 16402
access-list 110 permit tcp 192.168.0.224 0.0.0.31 any eq 5223
access-list 111 permit tcp 192.168.0.224 0.0.0.31 any eq 465
access-list 111 permit tcp 192.168.0.224 0.0.0.31 any eq 587

 

ACL番号をZBFの許可条件に加える

class-map type inspect match-any others_app

match access-group 110
match access-group 111

 

● この設定でもう一度メールを受信してみると…

なんということでしょう。匠の(超投げやりかつ強引な設定変更)でメールが送付できるようになったではありませんか!!

しかも、FaceTimeやiMessageもまともに受発信が出来るようになりました。

 

前述したとおり、私はCisco認定試験の中では最も易しい(らしい?)CCENTに落ちるレベルのIOS初心者なので、何故設定が機能しないのかは分からずじまい*4です。

でもまあ、通信はできているので良しとします*5。というかこの辺についてご存知の方がいらっしゃいましたら、是非教えてください。

 

しかし、この辺について言及してる記事が全く無かったのが気になるところではあります。

Apple製機器、ましてやiPhoneCiscoルーターの親和性に関する問題なんて瞬く間に表面化しそうなものですが、みなさん気にされないものなのか、それともIOS 15.5系のバグなのか…(^o^;

 

まあ、もしお困りの方がいれば試してみてください。

*1:同期は半分以上合格してました

*2:WANからLANに入る通信は別なルールを使ってます。

*3:RDPも初期のプロトコルリストに定義されてないようです

*4:nbarで通信を確認したところ、SMTPS/FaceTime/iMessagesのApplicationがいずれも"Layer7 Unknown"になっていたので、iPhoneあるいはApple製機器が発出するパケットに何らかの非標準な構造をとっていたり謎データ・フラグが混じっていたりして、それをZBFで制御できないバグ/仕様があるのではないか…という妄想同然の仮説は立てました。本当かは知りません

*5:上流工程のSEとしてはこの上なく最低の対応ですが、細かいところを気にしないのが私のいいところですw