sprout2000

PC・スマホに関する備忘録

Ubuntu + freeradius でRADIUSサーバを構築する

のつづき

このような環境を構築したい

f:id:sprout2000:20161224082708p:plain

1. freeradius のインストール

~$: sudo apt-get install freeradius freeradius-mysql

 2. 証明書の用意
・StartSSL のルート証明書をダウンロード

~$: wget https://startssl.com/certs/ca.pem

 ・サーバの秘密鍵にパスワードを含める

~$: openssl rsa -in server_secret.key.secure -out server_secret.key

 ・freeradius用に配置

~$: sudo su -
# cd /etc/freeradius/certs
# mv ca.pem ca.pem.orig
# mv server.pem server.pem.orig
# cp /home/user-name/ca.pem .
# cp /home/user-name/server_secret.key .
# cp /home/user-name/2_radius.sample.com.crt server.pem

 3. /etc/freeradius/radiusd.conf の編集

#  Port on which to listen.
        #  Allowed values are:
        #       integer port number (1812)
        #       0 means "use /etc/services for the proper port"
        #port = 0
        port = 1812
#  Log authentication requests to the log file.
        #
        #  allowed values: {no, yes}
        #
        #auth = no
        auth = yes

 4. /etc/freeradius/clients.conf に追加

client 192.168.1.0/24 {
        secret          = testing123
        shortname       = private-network-1
}

 5. /etc/freeradius/users に追加

user-name       Cleartext-Password := "hello"
                Reply-Message = "Hello, %{User-Name}"

 6. /etc/freeadius/eap.conf を編集

        eap {
                default_eap_type = peap
                timer_expire     = 60
                ignore_unknown_eap_types = yes
                cisco_accounting_username_bug = no
                max_sessions = ${max_requests}

                tls {
                        certdir = ${confdir}/certs
                        cadir = ${confdir}/certs
                        private_key_password =
                        private_key_file = ${certdir}/server_secret.key
                        certificate_file = ${certdir}/server.pem
                        CA_file = ${cadir}/ca.pem
                        dh_file = ${certdir}/dh
                        random_file = /dev/urandom
                        CA_path = ${cadir}
                        cipher_list = "DEFAULT"

                        make_cert_command = "${certdir}/bootstrap"

			cache {
                              enable = no
                              lifetime = 24
                              max_entries = 255
                        }

                        verify {
                        }

                }

                ttls {
                        default_eap_type = mschapv2
                        copy_request_to_tunnel = yes
                        use_tunneled_reply = yes
                }

                peap {
                        default_eap_type = mschapv2
                }

                mschapv2 {
                }
        }
                mschap {
                        authtype = MS-CHAP
                        use_mppe = yes
                        require_encryption = yes
                        require_strong = yes
                }       

 7. iptables の設定

# iptables -I INPUT 1 -s 192.168.1.0/24 -p udp --dport 1812:1813 -j ACCEPT

 8. とりあえず peapデバッグモードで試す

# freeradius -X
 ... adding new socket proxy address * port 60509
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel
Listening on proxy address * port 1814
Ready to process requests.

 ・他のターミナルから radtest コマンドで接続してみる

~$: radtest user-name hello localhost 1812 testing123
Sending Access-Request of id 54 to 127.0.0.1 port 1812
	User-Name = "user-name"
	User-Password = "hello"
	NAS-IP-Address = 127.0.1.1
	NAS-Port = 1812
	Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=54, length=35
	Reply-Message = "Hello, user-name"

 ・デバッグモードのターミナル

Sending Access-Accept of id 54 to 127.0.0.1 port 50929
	Reply-Message = "Hello, user-name"
Finished request 0.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 0 ID 54 with timestamp +43
Ready to process requests.

 9. EAP-TLS に挑戦

Windowsなどのクライアントへ配布するためのクライアント証明書をパッケージする

~$: wget https://www.startssl.com/certs/sca.client1.crt
~$: openssl pkcs12 -export -inkey client-secret.key -in 2_user-name@radius.example.jp -certfile sca.client1.crt -out user-name.p12

 このp12ファイルは Windows でも macOS でもダブルクリックするだけでインポートされる。

・/etc/hostname や /etc/hosts の確認

~$: cat /etc/hostname
radius.example.jp
~$: cat /etc/hosts
127.0.0.1		localhost
127.0.0.1		radius.example.jp	radius

 ・/etc/freeradius/eap.conf の変更

        eap {
                #default_eap_type = peap
                default_eap_type = tls
                timer_expire     = 60
                ignore_unknown_eap_types = yes
                cisco_accounting_username_bug = no
                max_sessions = ${max_requests}

 ・WiFi AP の設定
WiFi AP にはRadiusクライアント機能が必要(画像は CheckPoint730)

f:id:sprout2000:20161224092859p:plain

・クライアント Windows での設定
あらかじめサーバ証明書とクライアント証明書をインストールしておく。
コントロールパネル→ネットワークと共有センター

f:id:sprout2000:20161224093004p:plain

f:id:sprout2000:20161224093021p:plain

f:id:sprout2000:20161224093033p:plain

f:id:sprout2000:20161224093054p:plain

f:id:sprout2000:20161224093107p:plain

f:id:sprout2000:20161224093143p:plain

f:id:sprout2000:20161224093226p:plain

f:id:sprout2000:20161224093249p:plain

f:id:sprout2000:20161224093734p:plain

f:id:sprout2000:20161224093745p:plain

 

参考にしたサイト