Linux/Source/Radius
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*Radius [#w590415c]
[[FreeRADIUS:+http://freeradius.org/]]
OSSのRadiusServerとしては、多分一番シェアが高い物。
~
*インストール [#of8b6c87]
&size(16){&font(b){1. 前書き};};
ソースから入れるなら、3.0.xを入れるべきなのだろうが、Cent...
libtallocとの連結やOpenSSLの組み込みとかで転けて大変だっ...
という事で、今回は以下の構成を前提にメモ。
OS : CentOS 6.5 x86_64
FreeRADIUS : 2.2.5
認証方式 : EAP-TTLS & PEAP
~
&size(16){&font(b){2. FreeRADIUSのコンパイル};};
[[OpenSSL:http://www.ns-lab.org/wiki/?cmd=read&page=Linux...
yumなりapt-getなりでOpenSSLを入れた場合は、./configureの...
# mkdir /usr/local/src/radius
# cd /usr/local/src/radius
# wget "ftp://ftp.freeradius.org/pub/freeradius/freeradi...
# tar zxvf freeradius-server-2.2.5.tar.gz
# cd freeradius-server-2.2.5
# ./configure --prefix=/usr/local/radius-2.2.5 \
--with-openssl-lib-dir=/usr/local/openssl/lib \
--with-openssl-include-dir=/usr/local/openssl/in...
# make && make install
後は事後処理として、FreeRADIUSへPATHを通したり、ldconfig...
~
&size(16){&font(b){3. インストール後処理};};
ログディレクトリを作成したり、FreeRADIUS用にユーザ・グル...
"/etc/radius/raddb/*"内のファイルには生パスワードを書き込...
# mkdir /var/run/radiusd
# mkdir -p /var/log/radius/radacct
# groupadd radiusd
# useradd -g radiusd -d /var/log/radius -s /sbin/nologin...
# cd /usr/local
# ln -s /usr/local/radius-2.2.5 ./radius
# ln -s /uar/local/radius /etc/radius
# chown -R radiusd.radiusd /var/log/radius
# chmod -R 755 /var/log/radius
# chgrp -R radius /etc/radius/raddb/*
# chmod -R o-rwx /etc/radius/raddb/*
~
&size(16){&font(b){4. コンフィグ};};
大規模システムならradiusのデータをMySQLへ流すのだろうが、
今回は小規模な仕組みかつ平常時のメンテナンス性を重視する...
下記メモでは変更した部分のみ記載。他はメモ注釈を参照。
~
&font(b){# vi radiusd.conf};
prefix = /usr/local/radius #インストールディレクトリ
localstatedir = /var #PIDやログ保存ディレクトリの親
user = radiusd #FreeRADIUSの実行ユーザ
group = radiusd #FreeRADIUSの実行グループ
###Radius認証用の待ち受け設定
listen {
type = auth #認証設定
ipaddr = * #認証の許可IPアドレス
port = 1812 #認証待ち受けポート
}
###アカウンティングの待ち受け設定
listen {
type = acct #アカウンティング設定
ipaddr = * #アカウンティング許可IPアドレス
port = 1813 #アカウンティング待ち受けポート
}
###ログ設定
log {
auth = yes #認証時のログを保存する
auth_badpass = no #認証失敗時のパスワードを記録し...
auth_goodpass = no #認証成功時のパスワードを記録し...
}
###RadiusServerセキュリティ
security {
allow_vulnerable_openssl = yes #OpenSSLのHeartBeat...
#上記オプションを入れないと、yumで入れた修正済みOpen...
}
~
&font(b){# vi clients.conf};
###localhostのクライアント設定を全部コメントアウト
#client localhost {
# ipaddr = 127.0.0.1
# netmask = 32
# secret = PASSWORD
# require_message_authenticator = no
# nastype = other
#}
###RadiusServerへの接続を許可するクライアント情報
client 192.168.1.0/24 { #認証を許可するネットワーク
secret = RadiusServerPassword #クライアント用Radiu...
shortname = RadiusServerName #クライアント用Radius...
}
~
&font(b){# vi eap.conf};
###EAP認証の設定
eap {
default_eap_type = ttls #デフォルトでEAP-TTLSを使...
###EAP-MD5を無効化する
#md5 {
#}
###EAP-LEAPを無効化する
#leap {
#}
###EAP-TLS認証の設定
tls {
private_key_password = "KeyPASSWORD" #private.key...
# cipher_list = "DEFAULT" #TLS認証局のサイトリスト...
}
###EAP-TTLS認証の設定
ttls {
default_eap_type = mschapv2 #EAPトンネリング方式に...
# copy_request_to_tunnel = no #EAPトンネル内への属...
# use_tunneled_reply = no #EAPトンネル内ユーザ名に...
# virtual_server = no #トンネル内の認証要求はVirtua...
}
~
&font(b){# vi users};
###Radius認証用のユーザ名とパスワード
#"ユーザ名" Cleartext-Password := "ログインパスワード"
# Reply-Message = "Hello, %{User-Name}"
###『ユーザ名=hoge / パスワード=bar』だとこんな感じ
"hoge" Cleartext-Password := "bar"
Reply-Message = "Hello, %{User-Name}"
~
&font(b){# vi proxy.conf};
###下記RadiusProxyの設定以外は全てコメントアウトする
###RadiusProxyの設定
proxy server {
default_fallback = yes #Radiusフォールバック機能を...
}
~
&font(b){# vi certs/ca.cnf};
###RadiusServerの証明書を作成するMakefileを変更
DH_KEY_SIZE = 2048 #Diffie-Hellmanの鍵長を"2048"bitに...
~
&font(b){# vi certs/bootstrap};
###DHパラメータの鍵長を"2048"bitに変更
if [ ! -f dh ]; then
openssl dhparam -out dh 2048 || exit 1
if [ -e /dev/urandom ] ; then
dd if=/dev/urandom of=./random count=10 >/dev/nu...
else
date > ./random;
fi
fi
~
&font(b){# vi certs/ca.cnf};
###認証鍵のパスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
[certificate_authority]
countryName = ""
stateOrProvinceName = ""
localityName = ""
orgnaizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi certs/client.cnf};
###認証鍵パスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
[client]
countryName = ""
stateOrProvinceName = ""
localityName = ""
organizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi certs/server.cnf};
###認証鍵パスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
countryName = ""
stateOrProvinceName = ""
localityName = ""
organizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi sites-enabled/default};
###コンフィグが下記の状態になる様にコメントアウト&アンコ...
###(-> 下記以外は全てコメントアウトする)
###EAPトンネル内で許可する認証方式
authorize {
preprocess
mschap
suffix
eap {
ok = return
}
files
expiration
logintime
}
###接続を許可する認証タイプ
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
}
###アカウンティングの接続ログ書式
accounting {
detail
exec
}
###認証が通った時の設定
post-auth {
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
~
&size(16){&font(b){5. 起動準備};};
最初にinitスクリプトの編集
# cp /usr/local/src/radius/freeradius-server-2.2.5/redha...
# chown root.root /etc/init.d/radiusd
# chmod 755 /etc/init.d/radiusd
# chkconfig --add radiusd
# chkconfig radiusd on
# vi /etc/init.d/radiusd
exec=${exec:=/usr/local/radius/sbin/$prog}
config_dir=${config_dir:=/etc/radius/raddb}
config=${config:=$config_dir/radiusd.conf}
pidfile=${pidfile:=/var/run/$prog/$prog.pid}
lockfile=${lockfile:=/var/lock/subsys/radiusd}
~
次にlogrotateスクリプトの編集
# cp /usr/local/src/radius/freeradius-server-2.2.5/redha...
# chown root.root /etc/logrotate.d/radiusd
# chmod 644 /etc/logrotate.d/radiusd
*起動 [#h27eb723]
&size(16){&font(b){1. 初回起動(テスト起動)};};
初回起動時はRadiusServerで使用する証明書やDHパラメータの...
その為、1回目の起動は失敗するのでテストモードで起動をして...
また、初回起動前にいらないファイルの全消しもしておく
# cd /etc/radius/raddb/certs
# rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* inde...
###1回目の起動(必ず失敗する)
# radiusd -X
###2回目の起動(テストモードで実行)
# radiusd -X
# [Ctrl]+[C]
###initスクリプトでRadiusServerを起動
# /etc/init.d/radiusd start
~
&size(16){&font(b){2. テスト認証};};
今回の設定で認証が通るのかテストする。テストにはradtestコ...
RadiusServerをテストモード[radiusd -X]で起動するか、
RadiusServerのログを[tail -f]した状態でradtestを実行する...
radtestコマンドの書式は以下の通り(詳細はman見る事)。
# radtest "ユーザ名" "ユーザパスワード" "RadiusServerのI...
~
RadiusServerのIPアドレスが[192.168.200.1]と仮定すると、以...
# radtest hoge bar 192.168.200.1:1812 0 RadiusServerPass...
~
RadiusServer側はログを見ればOK。radtest側は認証結果が標準...
###radtestに成功した場合は以下の様なreplyが来る
rad_recv: Access-Accept packet from host 192.168.200.1 p...
Reply-Message = "Hello, hoge"
###radtestに失敗した場合はこちら
rad_recv: Access-Reject packet from host 192.168.200.1 p...
終了行:
*Radius [#w590415c]
[[FreeRADIUS:+http://freeradius.org/]]
OSSのRadiusServerとしては、多分一番シェアが高い物。
~
*インストール [#of8b6c87]
&size(16){&font(b){1. 前書き};};
ソースから入れるなら、3.0.xを入れるべきなのだろうが、Cent...
libtallocとの連結やOpenSSLの組み込みとかで転けて大変だっ...
という事で、今回は以下の構成を前提にメモ。
OS : CentOS 6.5 x86_64
FreeRADIUS : 2.2.5
認証方式 : EAP-TTLS & PEAP
~
&size(16){&font(b){2. FreeRADIUSのコンパイル};};
[[OpenSSL:http://www.ns-lab.org/wiki/?cmd=read&page=Linux...
yumなりapt-getなりでOpenSSLを入れた場合は、./configureの...
# mkdir /usr/local/src/radius
# cd /usr/local/src/radius
# wget "ftp://ftp.freeradius.org/pub/freeradius/freeradi...
# tar zxvf freeradius-server-2.2.5.tar.gz
# cd freeradius-server-2.2.5
# ./configure --prefix=/usr/local/radius-2.2.5 \
--with-openssl-lib-dir=/usr/local/openssl/lib \
--with-openssl-include-dir=/usr/local/openssl/in...
# make && make install
後は事後処理として、FreeRADIUSへPATHを通したり、ldconfig...
~
&size(16){&font(b){3. インストール後処理};};
ログディレクトリを作成したり、FreeRADIUS用にユーザ・グル...
"/etc/radius/raddb/*"内のファイルには生パスワードを書き込...
# mkdir /var/run/radiusd
# mkdir -p /var/log/radius/radacct
# groupadd radiusd
# useradd -g radiusd -d /var/log/radius -s /sbin/nologin...
# cd /usr/local
# ln -s /usr/local/radius-2.2.5 ./radius
# ln -s /uar/local/radius /etc/radius
# chown -R radiusd.radiusd /var/log/radius
# chmod -R 755 /var/log/radius
# chgrp -R radius /etc/radius/raddb/*
# chmod -R o-rwx /etc/radius/raddb/*
~
&size(16){&font(b){4. コンフィグ};};
大規模システムならradiusのデータをMySQLへ流すのだろうが、
今回は小規模な仕組みかつ平常時のメンテナンス性を重視する...
下記メモでは変更した部分のみ記載。他はメモ注釈を参照。
~
&font(b){# vi radiusd.conf};
prefix = /usr/local/radius #インストールディレクトリ
localstatedir = /var #PIDやログ保存ディレクトリの親
user = radiusd #FreeRADIUSの実行ユーザ
group = radiusd #FreeRADIUSの実行グループ
###Radius認証用の待ち受け設定
listen {
type = auth #認証設定
ipaddr = * #認証の許可IPアドレス
port = 1812 #認証待ち受けポート
}
###アカウンティングの待ち受け設定
listen {
type = acct #アカウンティング設定
ipaddr = * #アカウンティング許可IPアドレス
port = 1813 #アカウンティング待ち受けポート
}
###ログ設定
log {
auth = yes #認証時のログを保存する
auth_badpass = no #認証失敗時のパスワードを記録し...
auth_goodpass = no #認証成功時のパスワードを記録し...
}
###RadiusServerセキュリティ
security {
allow_vulnerable_openssl = yes #OpenSSLのHeartBeat...
#上記オプションを入れないと、yumで入れた修正済みOpen...
}
~
&font(b){# vi clients.conf};
###localhostのクライアント設定を全部コメントアウト
#client localhost {
# ipaddr = 127.0.0.1
# netmask = 32
# secret = PASSWORD
# require_message_authenticator = no
# nastype = other
#}
###RadiusServerへの接続を許可するクライアント情報
client 192.168.1.0/24 { #認証を許可するネットワーク
secret = RadiusServerPassword #クライアント用Radiu...
shortname = RadiusServerName #クライアント用Radius...
}
~
&font(b){# vi eap.conf};
###EAP認証の設定
eap {
default_eap_type = ttls #デフォルトでEAP-TTLSを使...
###EAP-MD5を無効化する
#md5 {
#}
###EAP-LEAPを無効化する
#leap {
#}
###EAP-TLS認証の設定
tls {
private_key_password = "KeyPASSWORD" #private.key...
# cipher_list = "DEFAULT" #TLS認証局のサイトリスト...
}
###EAP-TTLS認証の設定
ttls {
default_eap_type = mschapv2 #EAPトンネリング方式に...
# copy_request_to_tunnel = no #EAPトンネル内への属...
# use_tunneled_reply = no #EAPトンネル内ユーザ名に...
# virtual_server = no #トンネル内の認証要求はVirtua...
}
~
&font(b){# vi users};
###Radius認証用のユーザ名とパスワード
#"ユーザ名" Cleartext-Password := "ログインパスワード"
# Reply-Message = "Hello, %{User-Name}"
###『ユーザ名=hoge / パスワード=bar』だとこんな感じ
"hoge" Cleartext-Password := "bar"
Reply-Message = "Hello, %{User-Name}"
~
&font(b){# vi proxy.conf};
###下記RadiusProxyの設定以外は全てコメントアウトする
###RadiusProxyの設定
proxy server {
default_fallback = yes #Radiusフォールバック機能を...
}
~
&font(b){# vi certs/ca.cnf};
###RadiusServerの証明書を作成するMakefileを変更
DH_KEY_SIZE = 2048 #Diffie-Hellmanの鍵長を"2048"bitに...
~
&font(b){# vi certs/bootstrap};
###DHパラメータの鍵長を"2048"bitに変更
if [ ! -f dh ]; then
openssl dhparam -out dh 2048 || exit 1
if [ -e /dev/urandom ] ; then
dd if=/dev/urandom of=./random count=10 >/dev/nu...
else
date > ./random;
fi
fi
~
&font(b){# vi certs/ca.cnf};
###認証鍵のパスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
[certificate_authority]
countryName = ""
stateOrProvinceName = ""
localityName = ""
orgnaizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi certs/client.cnf};
###認証鍵パスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
[client]
countryName = ""
stateOrProvinceName = ""
localityName = ""
organizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi certs/server.cnf};
###認証鍵パスワードを変更
[ req ]
input_password = "" #"eap.conf"内の[private_key_passwo...
output_password = "" #"eap.conf"内の[private_key_passw...
###作成するCA証明書のパラメータを設定(ここでは説明省略)
countryName = ""
stateOrProvinceName = ""
localityName = ""
organizationName = ""
emailAddress = ""
commonName = ""
~
&font(b){# vi sites-enabled/default};
###コンフィグが下記の状態になる様にコメントアウト&アンコ...
###(-> 下記以外は全てコメントアウトする)
###EAPトンネル内で許可する認証方式
authorize {
preprocess
mschap
suffix
eap {
ok = return
}
files
expiration
logintime
}
###接続を許可する認証タイプ
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
}
###アカウンティングの接続ログ書式
accounting {
detail
exec
}
###認証が通った時の設定
post-auth {
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
~
&size(16){&font(b){5. 起動準備};};
最初にinitスクリプトの編集
# cp /usr/local/src/radius/freeradius-server-2.2.5/redha...
# chown root.root /etc/init.d/radiusd
# chmod 755 /etc/init.d/radiusd
# chkconfig --add radiusd
# chkconfig radiusd on
# vi /etc/init.d/radiusd
exec=${exec:=/usr/local/radius/sbin/$prog}
config_dir=${config_dir:=/etc/radius/raddb}
config=${config:=$config_dir/radiusd.conf}
pidfile=${pidfile:=/var/run/$prog/$prog.pid}
lockfile=${lockfile:=/var/lock/subsys/radiusd}
~
次にlogrotateスクリプトの編集
# cp /usr/local/src/radius/freeradius-server-2.2.5/redha...
# chown root.root /etc/logrotate.d/radiusd
# chmod 644 /etc/logrotate.d/radiusd
*起動 [#h27eb723]
&size(16){&font(b){1. 初回起動(テスト起動)};};
初回起動時はRadiusServerで使用する証明書やDHパラメータの...
その為、1回目の起動は失敗するのでテストモードで起動をして...
また、初回起動前にいらないファイルの全消しもしておく
# cd /etc/radius/raddb/certs
# rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* inde...
###1回目の起動(必ず失敗する)
# radiusd -X
###2回目の起動(テストモードで実行)
# radiusd -X
# [Ctrl]+[C]
###initスクリプトでRadiusServerを起動
# /etc/init.d/radiusd start
~
&size(16){&font(b){2. テスト認証};};
今回の設定で認証が通るのかテストする。テストにはradtestコ...
RadiusServerをテストモード[radiusd -X]で起動するか、
RadiusServerのログを[tail -f]した状態でradtestを実行する...
radtestコマンドの書式は以下の通り(詳細はman見る事)。
# radtest "ユーザ名" "ユーザパスワード" "RadiusServerのI...
~
RadiusServerのIPアドレスが[192.168.200.1]と仮定すると、以...
# radtest hoge bar 192.168.200.1:1812 0 RadiusServerPass...
~
RadiusServer側はログを見ればOK。radtest側は認証結果が標準...
###radtestに成功した場合は以下の様なreplyが来る
rad_recv: Access-Accept packet from host 192.168.200.1 p...
Reply-Message = "Hello, hoge"
###radtestに失敗した場合はこちら
rad_recv: Access-Reject packet from host 192.168.200.1 p...
ページ名: