CentOSで「有線」の802.1xのコマンドライン設定方法

この記事は約10分で読めます。
スポンサーリンク

久しぶりに技術関係のネタです。

Linux(CentOS)で802.1xの設定方法を紹介します。

無線ではなく「有線」です。

Network Managerなしの、コマンドラインで全て完結する方法です。

 

CentOSの「有線」「コマンドライン(GUI)なし」「802.1x」設定は「wpa_supplicant」で出来ます。

この記事のコンフィグと「まるごとコピペ」するだけで、出来ます。

この記事で出来ること

要約すると、こんな感じ。

  • OS:CentOS(6.9だが7.Xでも大丈夫なはず)で
  • 有線の802.1x設定を
  • 完全にコマンドラインだけで実現

記事を書くにあたっての経緯

上記の設定がまとまってるサイトが少なかったからです。

 

802.1xは無線環境のセキュリティ対策として幅広く使われてきました。無線だと有線よりも様々なセキュリティリスクが内在しているので、802.1xのような対策が必須なので。

でも802.1xは無線に特化した規格ではありません。有線にも使えます。

これまで有線で802.1xを利用するシーンが少なかったのは、単純に「物理的なケーブル差込口は無線よりもセキュアにしやすい」からだと思います。有線のほうが802.1x以外の対策がしやすいですからね。

 

しかし、昨今、再度802.1x+有線が日の目を浴び始めています。その辺の話はトピックが変わってしまうのでまた別の機会に。

一つ言えるのは「今のうちに有線の802.1xを理解しておいたら、間違いなく良いことがある」という事です。

 

さて、話を戻します。有線の802.1xの設定です。

ネットで色々調べてみたら、以下の記事は(日本語・英語問わず)それなりに見つけることができました。

  • Windowsの有線・無線802.1x設定
  • Linuxの無線802.1x設定
  • Linuxの無線と有線せっていがごっちゃになってる

しかし、Linuxの有線802.1x設定の具体例が殆ど見つかりませんでした。

あっても「Network Manager」を使用したGUIでの設定くらいで、コマンドラインの設定例で網羅しているのが少ない。

英語のサイトはいくつか見つけたのですが、情報量が少ないページが殆ど。

 

なので、「とりあえずLinuxで動く有線の802.1xの設定」を紹介します。

英語だと[wired dot1x]ですね。検索キーワードとして残しておきます。

 

Windowsのイメージがないので、Linuxで手っ取り早く802.1xのクライアントを準備したい!

ネットでLinuxの有線802.1xのサイトを探していたが、イマイチ具体例がなかった!

NetworkManagerを使用する方法は見つかったが、GUIを使えない!

nmcliを使用する方法は見つかったが、なぜかオプションが使用できない!

無線・有線の設定がごっちゃになってるサイトが多くて、本質がわからない!

今日中に802.1xクライアントの準備しないといけないのに!

 

という方に少しでも参考になればと思います。

簡単にやることの紹介

wpa_supplicantというモジュールを使用します。

wpa_supplicantって、、、無線の設定に使用するものじゃないの?

と思われるかもしれませんが、、確かに無線設定にも使用しますが802.1xの設定も出来ます。

有線の802.1x設定も出来ます。

ネットでは「wpa_supplicantを使用して有線の802.1xの設定もできる」との記載がいくつかありますが、実際に私もwpa_supplicantで有線の802.1xの設定・稼働確認ができました。

元々は無線の設定から生まれたモジュールだとしても、名前を変えてほしいです・・・

 

なので、ここから先は基本的にwpa_supplicantの設定の紹介になります。細かいパラメーターの紹介は省きます。とりあえず動作検証が出来るレベルにするのが目的なので。

前提としてwpa_supplicantがyum installなどでインストールされていることとします。

yum install wpa_supplicant

 

以下の設定に沿ってやれば10分程度で稼働確認ができるかと。

設定詳細

/etc/wpa_supplicant/wpa_supplicant.confの設定

このファイルに802.1xの設定を行います。

今回はPEAPを使用したユーザID認証を行います。

まずはコピペして、細かいところを直してください。

# Where is the control interface located? This is the default path:
ctrl_interface=/var/run/wpa_supplicant

# Who can use the WPA frontend? Replace "0" with a group name if you
#   want other users besides root to control it.
# There should be no need to chance this value for a basic configuration:
ctrl_interface_group=0

# IEEE 802.1X works with EAPOL version 2, but the version is defaults 
#   to 1 because of compatibility problems with a number of wireless
#   access points. So we explicitly set it to version 2:
eapol_version=2

# When configuring WPA-Supplicant for use on a wired network, we don’t need to
#   scan for wireless access points. See the wpa-supplicant documentation if
#   you are authenticating through 802.1x on a wireless network:
ap_scan=0

network={
        key_mgmt=IEEE8021X
        eap=PEAP
        identity="cisco1"
        password="cisco1"
        phase1="peaplabel=1"
        phase2="auth=MSCHAPV2"
}

「network=」スタンザより前は「https://help.ubuntu.com/community/Network802.1xAuthentication」を参考にさせて頂きました。

(上記サイトでは/etc/wpa_supplicant.confにファイルを作れと書いていますが、基本的に/etc/wpa_supplicant/wpa_supplicant.confを修正したほうが良いかと。理由は後述)

identityとpasswordは自分のRadiusサーバーに登録しているユーザ名とパスワードに変更してください。

それ以外の内容はパラメーターの名前通りです。かなりわかりやすいかと。

802.1x認証の実行

インターフェースアップ時の自動実行の設定を行う前に、本当に動作するかを確認します。

以下のコマンドでコマンドラインで確認することが可能。

コピペして実行してみてください。

wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -D wired -i eth0
  • -cで事前に作成した設定ファイルを参照しています
  • -Dでドライバーの指定。wiredになってるのがポイント
  • -iで使用するポートをしていしている。無線ではなく物理ポートを指定しているのがポイント(ethXの番号は環境に応じて変えてください)

これで上手くいくとこんな感じになるはずです。

1528791654.129879: EAP-MSCHAPV2: Authentication succeeded
1528791654.828682: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
1528791654.828790: CTRL-EVENT-CONNECTED - Connection to XX:XX:XX:XX:XX:XX completed (auth) [id=0 id_str=]

AuthenticatorとRadiusサーバーのログも確認して認証・認可が期待通りの挙動になっているかも確認しましょう。

起動時の自動設定(/etc/sysconfig/wpa_supplicant)

以上が成功したら、802.1xの認証・認可が成立しています。

あとは自動設定を行うだけです。

wpa_supplicantサービスはインターフェースを起動後に動作します。chkconfigで自動起動するようにします。

自動起動の設定ファイルは/etc/sysconfig/wpa_supplicantです。

以下をそっくりそのままコピペしてください。

# Use the flag "-i" before each of your interfaces, like so:
#  INTERFACES="-ieth1 -iwlan0"
INTERFACES="-ieth0"

# Use the flag "-D" before each driver, like so:
#  DRIVERS="-Dwext"
DRIVERS="-Dwired"

# Other arguments
#   -u   Enable the D-Bus interface (required for use with NetworkManager)
#   -f   Log to /var/log/wpa_supplicant.log
#   -P   Write pid file to /var/run/wpa_supplicant.pid 
#        required to return proper codes by init scripts (e.g. double "start" action)
#        -B to daemonize that has to be used together with -P is already in wpa_supplicant.init.d
#   -t   include timestamp in debug messages
OTHER_ARGS="-u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid -t"

ここでもポイントはインターフェースとドライバの指定です。

-iとか-Dのオプション後にスペースがないのですが、これは気にしないでください。

 

ちなみに、自動起動時に/etc/wpa_supplicant/wpa_supplicant.confも読み込んでいます。上記のサイトでは/etc/wpa_supplicant.confにファイルを作れと書いていますが、結局は自動起動時にこっちを読み込みます。

これで起動ごとに該当インターフェースアップ後に802.1x認証が動作するはずです。少なくとも私の環境では動作しています。

 

今回は「PEAPを使用したユーザー認証」方式で説明しましたが、当然ながら(証明書使用などの)他の方式も利用可能です。

ただそれは「有線・無線」に関係ないので、普通にググったら設定方法が出てくるはずです。

 

この手の設定は一旦成功させる事が最も重要!あとは細かいところを直しながら詳細の知識を深めていけば良い。とりあえずやってみてください。

 

追記:

証明書の設定方法も記事にしました。

CentOSで802.1x(PEAP/証明書)の設定方法
前回の記事「CentOSで「有線」の802.1xのコマンドライン設定方法」の続きです。 せっかくなのでユーザ認証だけではなく証明書の設定方法も残しておきます。 PEAP方式の証明書について 先に言っておきますが、この話は「...

コメント

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