■CT5508 Web認証設定
CT5508にはWeb認証機能が標準で装備されています。クライアントが無線LANにアソシエートした際、ブラウザを立ち上げると強制的に認証ページにリダイレクトされユーザ名/パスワードで認証した場合に外部に接続できるようになります。
認証するユーザはコントローラ内部に登録するユーザ、または外部のRADIUSに登録しているユーザが利用できます。コントローラ内部ユーザはあくまで簡易的なもので最大2048ユーザです。本格的な運用を考えるとRADIUSが望ましくユーザごとに異なる属性を与えることも可能です。
ここではコントローラ内部のユーザを利用する方法を紹介します。「WLANs」-「Security」-「Layer3」でWeb PolicyのAuthenticationにチェックを入れます。
Web認証に関する設定はこれだけで有効になります。あとは「SECURITY」-「Local Net Users」から認証用ユーザを作成します。
Newボタンをクリックして新規ユーザを作成します。
それぞれユーザ名、パスワード、どのWLANに紐付けるのかを選択してApplyをクリックします。Guest Userにはチェックを入れなくて構いません。
Web認証を設定したSSIDに無線でアソシエイトし、インターネットに接続しようとブラウザを起動すると強制的に認証ページにリダイレクトされます。認証ページのIPアドレスはコントローラに設定したVirtual Gatewayのアドレスです。
ここで上のLocal Net Userで登録したユーザ名およびパスワードを入力してSubmitをクリックします。認証に成功すれば次の画面が表示され、インターネットにも接続できるようになります。
上ではポップアップをブロックしている状態です。許可していればポップアップも表示されます。
大量のユーザを登録しようとした場合、CSV等の流し込み機能がコントローラにありません。複数台のコントローラが稼働して冗長化構成等をとっている場合は全てのコントローラに登録する必要があり運用上手間になる場合があるのでこれを回避すべくPerlで大量一括登録のスクリプトを組んでみました。
・一括ユーザ登録スクリプト
前提としてユーザ名とパスワードが1行づつtab区切りで記載されたテキストファイル名をスクリプトの引数として実行します。
user1 <tab> password
user2 <tab> password
user3 <tab> passowrd など
#!/usr/bin/perl use Net::Telnet; $userfile = $ARGV[0]; if($userfile eq ''){ print "Input userfile!\n"; exit; } open (TXT, $userfile); @list = <TXT>; close (TXT); chomp @list; # 複数台のコントローラの場合、IPアドレスを列挙 @host = ('192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'); $user = 'admin'; $pass = 'password'; $telnet = new Net::Telnet( Timeout => 30); for my $i (@host){ $result = ''; $telnet->open($i); $telnet->waitfor('/User:/'); $telnet->print($user); $telnet->waitfor('/Password:/'); $telnet->print($pass); $telnet->waitfor('/\(Cisco Controller\) >/'); for my $j (@list){ ($wlc_user,$wlc_pass) = split("\t", $j); $telnet->print("config netuser add $wlc_user $wlc_pass \ wlan X userType permanent"); } $telnet->close; } |
・一括ユーザ削除スクリプト
前提としてユーザ名が1行づつ記載されたテキストファイル名をスクリプトの引数として実行します。
user1
user2
user3 など
#!/usr/bin/perl $userfile = $ARGV[0]; if($userfile eq ''){ print "Input userfile!\n"; exit; } open (TXT, $userfile); @list = <TXT>; close (TXT); chomp @list; # 複数台のコントローラの場合、IPアドレスを列挙 @host = ('192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'); $user = 'admin'; $pass = 'password'; $telnet = new Net::Telnet( Timeout => 30); for my $i (@host){ $result = ''; $telnet->open($i); $telnet->waitfor('/User:/'); $telnet->print($user); $telnet->waitfor('/Password:/'); $telnet->print($pass); $telnet->waitfor('/\(Cisco Controller\) >/'); for my $j (@list){ chomp $j; $telnet->print("config netuser delete $j"); } $telnet->close; } |
いずれも5ユーザ程度であれば問題なく登録されましたが、十分な検証を行なっていないので参考程度にしてください。