データセンターからワイヤレスまで、なんでもこなすネットワークのスペシャリスト。 注目技術はCisco DNA。
ササミとチュールをこよなく愛す、前橋生まれのロシアンブルー。注目力士は朝乃山。
今回は認証についてだ。前回の「セキュリティプロトコル」の解説で認証方式についても少し触れたが、内容は覚えているかね?
えーと、WPA2パーソナルでは「PSK(Pre Shared Key)」、WPA2エンタープライズでは「802.1x認証」、とかいう話でしたっけ。他は忘れました。
...まあ最低限そこが分かっていればいい。名前以外に知っていることは?
「PSK」ってのは要は共通パスワードを使う方式ですよね。これは家でも使ってるし、分かる気がします。「802.1x認証」ってのはさっぱり分かりません。
そうだな、「802.1x認証」は主に企業のネットワークで使われる方式なので、一般のネコにはあまりなじみがないかもしれん。今回はこの「802.1x」について説明していこう。
802.1Xについて
まずPSKの限界ついてだ。これは共通パスワードなので個人単位の制御ができない。例えば誰がいつ接続したかという情報を残すのも困難だし、退職者が出て無線LANに接続できないようにする場合、共通パスワードを変更するしかないので全端末が影響をうけてしまうわけだ。そのため企業など大規模なネットワークで利用するには問題が多い。そこで「802.1x」、正確には「IEEE802.1x」だ。略して「.1x」(ドットワンエックス)と呼ぶこともある。これは有線、無線に関わらず、端末をネットワークに接続するときの認証の仕組みを定義する規格だが、個人単位の制御が可能になっている。以下の3つの要素で構成されるぞ。
サプリカント :ユーザの端末、またはそこで動作する認証用クライアントソフト
認証装置 :端末を接続する装置。無線であればAP、有線であればスイッチなど
認証サーバ :認証を行うサーバ。ユーザ情報はここに格納されている
端末とAP、スイッチだけでなく認証サーバも必要になるんですね。
うむ。その認証サーバには「Radius Server」を利用する。これはWindowsサーバでサービスとして動かしたり、専用のハードウェアアプライアンスを利用することもある。802.1xで定めているのはレイヤの低い部分で、実際の認証の詳細を規定しているのは「EAP」とよばれるプロトコル上になるが、これは後程説明する。まずは無線の場合における接続手順の概略について見てみよう。
①端末からEAPに認証情報を載せて接続要求
②APがRadiusプロトコルで、接続可否を認証サーバに問い合わせ
③認証サーバが接続可否を認証装置に返答
④認証装置が接続を実施
さっそく分からないことが山盛りです。まず、突然出てきたEAPOLってなんですか?
EAPはもともと電話回線用に規定されていたプロトコルなので、そのままでは無線LANにも有線LANにも乗らないんだ。それをLANに乗せるために使われる台車とでも思ってくれ。
端末とAPの間がEAPOLで、APと認証サーバの間がRadiusになってますね。
その通り。APは単にEAPOLに乗ってやってきた認証情報を、Radiusに乗せ換えて認証サーバに送っているにすぎん。APはクライアントのユーザ名/パスワードや証明書などクライアントの認証情報には興味がなく、またそもそもどのような認証方式であるかにも興味がない。「つなぎたい」とEAPで言われればすべてRadiusプロトコルで認証サーバに転送し、そこが「OK」といえばOKというだけだ。
仕事の仕方としては投げやりですね。
誰かさんの仕事の仕方とそっくりだな。一点注意しなければいけない点として、Radiusサーバには「Radius ClientのIPアドレス」を登録しておく必要がある。またRadius ServerとRadius Clientの間での認証として、「secret key」というパスワードを設定しておかなければならない。
う~ん、ちょっと分からなくなってきました。共通パスワード使うんだったらPSKと同じじゃないですか?
おっとすまんすまん。Radiusの世界での「Radius Client」は、802.1xでいうところの認証装置、つまりAPやスイッチなんだ。接続してくる端末のことではない。絵にすると以下のようになる。
ややこしいなあもう。要はRadius Serverには、APやらスイッチやらのIPアドレスをあらかじめ登録しておく必要がある、ということですね。
その認識でよい。Radius Serverの設定時に「Client IP」とあったら「ああ、これはAPとかスイッチのアドレスを設定するところだな」と思い出してくれたまえ。
各種EAPについて
前置きが長くなったな。ようやく各種EAP認証プロトコルの説明だ。いくつかの種類があるが、代表的なところではEAP-TLS、Protected EAP(PEAP)、EAP-TTLS、EAP-FASTなどが...
無理無理!そんないっぺんに覚えられるわけがないでしょう!もっとこう、「最低限これだけは覚えておけ」的なスタンスでお願いします。それならバッチリ覚えるんで。
あいかわらず後ろ向きにポジティブな態度だな。だがほとんど使われていないような物も多く、その意見はある意味的を射ている。とりあえず2つ覚えてもらおう。一つ目は「EAP-TLS」だ。
【EAP-TLS】
証明書を使った双方向認証。APと接続する端末側双方に証明書がインストールされている必要がある。
証明書についての詳しい説明は省くが、端末側の認証にも証明書を利用することになり、強固な認証方式と言え、主に大規模なネットワークで利用される。最善の方式のように思えるが、認証局運用などの手間が嫌われる場合も多い。そんな時は次の「PEAP」が使われる。
【PEAP】
まずサーバ証明書を用いた片方向認証を行って暗号トンネルを確立し、その後ユーザ名/パスワードをそのトンネルを通して認証する。
ここで悲しいお知らせがあります。
なんでしょう。
PEAPにも何種類かあります。
またですか!いつものように「これだけは覚えておけ」の方針でお願いします!
もとよりそのつもりだが、紹介だけはしておこう。
【PEAPv0】別名 EAP-MSCHAPv2、MS-PEAP
【PEAPv1】別名 EAP-GTC、Cisco-PEAP
【PEAPv2】ほぼ使われていない
で、覚えておくべきは「PEAPv0」だ。なぜならWindows にサプリカントが標準搭載されていたことから最も普及しており、なんの説明もなく「PEAP」といえばまずこれだ。
じゃ、「EAP-TLS」と「PEAP」だけ覚えておけばOKですか。
最低限、という意味ではその通り。EAPは堅牢さと使い勝手の両立を目指して様々な規格が乱立している状況だ。最低限、今のふたつを覚えておいてその他は都度調べるという方針でよいぞ。2つの方式の概略も絵にしておこう。
PEAPであってもサーバ側の証明書は必要になるが、認証局を運用していない場合など、利便性の観点からこれを無視したい場合もある。このためPEAPにおいて端末側でのサーバ証明書の検証を無視する、といった設定をすることも可能になっており、実際そういった運用は珍しくない。この場合利用者が意識するのは単純に「ユーザ名/パスワード」だけになるな。
さて、今回はここまで。次回は...と言いたいところだが次がどうなるか分からん。まあ近々に機会はあるだろう。
ありがとうございました~
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
技術本部 技術統括部 第2技術部 1課
松浦 章吾