LinuxCentOS7+FreeRADIUS+Catalystで、IEEE802.1x認証を実装してみた有線/無線LANでユーザ認証をする方法として、IEEE802.1x認証が広く利用されています。無線LANの設定画面に出てくる「WPA2エンタープライズモード」などが、これにあたります。Key認証)などで十分ですが、企業の事務所などで多数のユーザが有線/無線LANを共用する場合は、個人別に認証をした方がセキュリティが強固になります。radiusサーバを使う案件に参加する機会があったのですが、自分は体制的にradius構築に関わることができなかったので、それなら自宅で試してみようと思ったわけです。Catalystスイッチを組み合わせて、IEEE802.1x認証の環境を自宅ラボに構築してみた話を、備忘録として記事にしました。動作確認まとめIEEE802.1x/radiusとは?IEEE802.1xは、有線/無線LANにおけるユーザ認証の規格です。元々は有線LANのユーザ認証を想定して作られた規格ですが、無線LANが誕生した当初はセキュリティが不十分であったことから、無線LANにも広く適用されるようになり、現在に至ります。IEEE802.1xは、以下の3種類の装置で構成されます。サプリカントクライアント側の認証ソフトです。ユーザが使う端末がこれにあたります。オーセンティケータサプリカントと認証サーバを仲介するスイッチです。ユーザの端末が接続するLANスイッチや、無線アクセスポイントがこれになります。認証サーバ実際に認証を行うサーバです。radius(らでぃうす)プロトコルを使用します。こんな感じで認証が行われます。今回は、以下のような構成でシステムを作りました。(超ざっくり)ユーザの端末と認証サーバは別セグメントにあり、FWでルーティングしています。FWが、ユーザ向けにIPアドレスを払い出すDHCPサーバを兼ねている構成です。(FWの細かい設定は、今回のお話とは関係ないので割愛)自宅の無線アクセスポイントがradius非対応なので、代わりにCisco製スイッチのCatalyst2960に有線LAN接続して、実験してみます。CentOS7に、FreeRADIUSインストールそれでは、無料で使えるオープンソースのradiusサーバソフト「FreeRADIUS」を、CentOS7に入れていきます。サーバにログインして、rootユーザになります。-yumでインストール。freeradius-utils設定ファイルを編集。/etc/raddb/radiusd.conf以下の部分を変更。yesauthは、認証時のログ出力設定。auth_badpassは、認証失敗時にログ出力。auth_goodpassは、認証成功時にログ出力。接続を許可するネットワークを設定。/etc/raddb/clients.conf以下を追記。SECRET}ipaddrは、radiusサーバへの接続を許可するセグメントを設定。secretは、L2スイッチとの接続に使うパスワードを指定。あとで同じ値をL2スイッチに設定します。ユーザとパスワードを設定。/etc/raddb/users認証で使うユーザとパスワードを追記。"●●●●"firewalldで、radiusが使うUDP1812番、1813番を開放。--reloadSELinuxは無効化しておきます。/etc/selinux/config以下になっていることを確認。なっていなければ変更して、サーバを再起動して適用します。SELINUX=disabled1SELINUX=disabledFreeRADIUSを起動して、自動起動設定。次に、L2スイッチ側の設定をしていきます。コンフィギュレーションモードに変更。terminal(config)#AAA(Authentication、Authorization、Accounting)の有効化。new-model認証サーバのIPアドレスを設定。keyは、radiusサーバで設定したパスワードを指定。exit(config)#認証サーバグループの設定。exit(config)#IEEE802.1x認証リストの設定。group-radius認証をグローバルで有効化。system-auth-control対象のポートをアクセスモードにして、認証を有効化させる。vlanには、このポートのVLAN番号を指定。このポートには端末を直接接続するので、portfastも有効化。(ルータやスイッチなど、ループの可能性がある場合は、portfastは無効化しておく)設定をスタートアップコンフィグに保存。configuration...[OK]#クライアント端末(Windows10)の設定これでサーバとスイッチ側の準備ができました。最後に、ユーザが使用するパソコンの設定を行います。AutoConfigを起動させておきます。(これが無効だと、有線LANポートのプロパティで「認証」タブが出てきません)スタートアップの種類を「自動」にして、自動起動にしておくのが良いです。「コントロールパネル」⇒「ネットワークと共有センター」⇒「アダプターの設定の変更」で、対象の有線LANポートのプロパティを開く。802.1X認証を有効にする」をチェック。(PEAP)」にして、設定ボタンをクリック。「証明書を検証してサーバーのIDを検証する」のチェックは外す。v2)」にして、構成ボタンをクリック。「Windowsのログオン名とパスワードを自動的に使う」のチェックは外して、OKをクリック。そのままOKをクリックして、画面を閉じる。イーサネットのプロパティ画面で、追加の設定ボタンをクリック。「認証モードを指定する」をチェックして、プルダウンから「ユーザー認証」を選び、資格情報の保存ボタンをクリック。radiusサーバで設定したユーザ名とパスワードを設定して、OKボタンをクリック。OKボタンを押して行って、設定画面を閉じれば、完了です。全ての準備が出来たので、さっそく試してみましょう!LANケーブルをスイッチに接続すると、認証が始まります。ユーザ名とパスワードが合っていれば、そのまま認証が済みます。このタイミングでネットワークと通信できるようになるので、DHCPサーバからIPアドレスが端末に払い出されて、ネットが使用できるようになります。パスワードを間違えていたりしたら、認証が失敗します。これで、無事に動作確認できました!radiusサーバの方にも、ログが出力されているはずです。0)まとめ以上で、radiusによるIEEE802.1x認証を実現できました。実際にこれを運用する場合は、ユーザアカウントの管理方法などいろいろ工夫が必要です。ActiveDirectoryなどと連携して一元管理する場合が多いようです。今回は、動くことが確認できたので、良しとしておきます。コメントをキャンセルメールアドレスが公開されることはありません。