Debian 下安裝 PPTP + RADIUS + LDAP

07月 7, 2010 作者:陸宇峯

首先安裝 OpenLDAP

aptitude install slapd ldap-utils

方便起見,使用 phpLDAPadmin 的 WEBUI 來管理 OpenLDAP。

wget -P /tmphttp://downloads.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/1.2.0.5/phpldapadmin-1.2.0.5.tgz
cd /var/www && tar xvfz /tmp/phpldapadmin-1.2.0.5.tgz
mv phpldapadmin-1.2.0.5/config/config.php.example phpldapadmin-1.2.0.5/config/config.php

由於 phpLDAPadmin 需要 PHP 支持,如果之前沒有安裝過 lighttpd 及 PHP,用 aptitude 安裝

aptitude install lighttpd php5-cgi php5-ldap
lighttpd-enable-mod fastcgi
/etc/init.d/lighttpd force-reload

快速測試
打開瀏覽器,指向 http://server/phpldapadmin-1.2.0.5,使用安裝 slapd 時指定的管理員用戶登錄。

接下來安裝 FreeRADIUS

aptitude install freeradius

修改 /etc/freeradius/users 文件,增加一行

test Cleartext-Password := "test"

重啓 FreeRADIUS 是測試用戶生效

/etc/init.d/freeradius restart

快速測試

radtest test test localhost 0 testing123

得到結果應該類似於

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=4, length=20

修改 /etc/freeradius/users 文件,把剛纔增加的那一行刪除或註釋掉,重啓 FreeRADIUS,重新測試

/etc/init.d/freeradius restart
radtest test test localhost 0 testing123

得到結果應該類似於

rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=66, length=20

接下來配置 OpenLDAP 支持 FreeRADIUS 的 schema

aptitude install freeradius-ldap
cp /usr/share/doc/freeradius/examples/openldap.schema /etc/ldap/schema/radius.schema

修改 /etc/ldap/slapd.conf 以支持 FreeRADIUS 的 schema,在開頭的 include 行後增加一行

include /etc/ldap/schema/radius.schema

重啓 OpenLDAP 使配置生效

/etc/init.d/slapd restart

快速測試
打開瀏覽器,指向 http://server/phpldapadmin-1.2.0.5,使用安裝 slapd 時指定的管理員用戶登錄。新建一個 entry,Templates 選擇 default,ObjectClasses 選擇 radiusObjectProfile,Password 類型選擇 clear。

接下來配置 FreeRADIUS 的 LDAP 支持

編輯 /etc/freeradius/radiusd.conf,找到 modules 下的 ldap 一節,改成如下所示 (如果 OpenLDAP 與 FreeRADIUS 不是俺裝在同一臺服務器上,localhost 需要改成安裝 OpenLDAP 服務器的域名或 IP)

ldap {
server = "localhost"
identity = "cn=admin,dc=domain,dc=com"
password = secret
basedn = "dc=domain,dc=com"
base_filter = "(objectclass=radiusObjectProfile)"
}

編輯 /etc/freeradius/sites-enabled/default,把 authorize 下的 ldap 註釋去除,把 authenticate 下 Auth-Type LDAP 一節的註釋去除,如下所示

authorize {
ldap
}
authenticate {
Auth-Type LDAP {
ldap
}
}

編輯 /etc/freeradius/ldap.attrmap,增加一行

checkItem Cleartext-Password userpassword

快速測試

radtest test test localhost 0 testing123

得到結果應該類似於

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=4, length=20

接下來安裝 PoPToP

aptitude install pptpd

編輯 /etc/ppp/chap-secrets,增加一行

test * test *

重啓 PoPToP

/etc/init.d/pptpd restart

快速測試
在 PC 或手機上連接 PPTP 服務器,用戶名是 test,密碼是 test,應該連接成功。
編輯 /etc/ppp/chap-secrets,把剛纔增加的那一行刪除或註釋掉,重啓 PoPToP

/etc/init.d/pptpd restart

在 PC 或手機上連接 PPTP 服務器,用戶名是 test,密碼是 test,應該不能連接成功。

最後配置 PoPToP 支持 RADIUS

aptitude install radiusclient1

編輯 /etc/ppp/pptp.options,在最後增加兩行

plugin radius.so
plugin radattr.so

創建 /etc/radiusclient/dictionary.microsoft 文件,內容如下

#
# Microsoft's VSA's, from RFC 2548
#
# $Id: dictionary.microsoft,v 1.1 2002/03/06 13:23:09 dfs Exp $
#

VENDOR Microsoft 311 Microsoft

ATTRIBUTE MS-CHAP-Response 1 string Microsoft
ATTRIBUTE MS-CHAP-Error 2 string Microsoft
ATTRIBUTE MS-CHAP-CPW-1 3 string Microsoft
ATTRIBUTE MS-CHAP-CPW-2 4 string Microsoft
ATTRIBUTE MS-CHAP-LM-Enc-PW 5 string Microsoft
ATTRIBUTE MS-CHAP-NT-Enc-PW 6 string Microsoft
ATTRIBUTE MS-MPPE-Encryption-Policy 7 string Microsoft
# This is referred to as both singular and plural in the RFC.
# Plural seems to make more sense.
ATTRIBUTE MS-MPPE-Encryption-Type 8 string Microsoft
ATTRIBUTE MS-MPPE-Encryption-Types 8 string Microsoft
ATTRIBUTE MS-RAS-Vendor 9 integer Microsoft
ATTRIBUTE MS-CHAP-Domain 10 string Microsoft
ATTRIBUTE MS-CHAP-Challenge 11 string Microsoft
ATTRIBUTE MS-CHAP-MPPE-Keys 12 string Microsoft
ATTRIBUTE MS-BAP-Usage 13 integer Microsoft
ATTRIBUTE MS-Link-Utilization-Threshold 14 integer Microsoft
ATTRIBUTE MS-Link-Drop-Time-Limit 15 integer Microsoft
ATTRIBUTE MS-MPPE-Send-Key 16 string Microsoft
ATTRIBUTE MS-MPPE-Recv-Key 17 string Microsoft
ATTRIBUTE MS-RAS-Version 18 string Microsoft
ATTRIBUTE MS-Old-ARAP-Password 19 string Microsoft
ATTRIBUTE MS-New-ARAP-Password 20 string Microsoft
ATTRIBUTE MS-ARAP-PW-Change-Reason 21 integer Microsoft

ATTRIBUTE MS-Filter 22 string Microsoft
ATTRIBUTE MS-Acct-Auth-Type 23 integer Microsoft
ATTRIBUTE MS-Acct-EAP-Type 24 integer Microsoft

ATTRIBUTE MS-CHAP2-Response 25 string Microsoft
ATTRIBUTE MS-CHAP2-Success 26 string Microsoft
ATTRIBUTE MS-CHAP2-CPW 27 string Microsoft

ATTRIBUTE MS-Primary-DNS-Server 28 ipaddr Microsoft
ATTRIBUTE MS-Secondary-DNS-Server 29 ipaddr Microsoft
ATTRIBUTE MS-Primary-NBNS-Server 30 ipaddr Microsoft
ATTRIBUTE MS-Secondary-NBNS-Server 31 ipaddr Microsoft

#ATTRIBUTE MS-ARAP-Challenge 33 string Microsoft

#
# Integer Translations
#

# MS-BAP-Usage Values

VALUE MS-BAP-Usage Not-Allowed 0
VALUE MS-BAP-Usage Allowed 1
VALUE MS-BAP-Usage Required 2

# MS-ARAP-Password-Change-Reason Values

VALUE MS-ARAP-PW-Change-Reason Just-Change-Password 1
VALUE MS-ARAP-PW-Change-Reason Expired-Password 2
VALUE MS-ARAP-PW-Change-Reason Admin-Requires-Password-Change 3
VALUE MS-ARAP-PW-Change-Reason Password-Too-Short 4

# MS-Acct-Auth-Type Values

VALUE MS-Acct-Auth-Type PAP 1
VALUE MS-Acct-Auth-Type CHAP 2
VALUE MS-Acct-Auth-Type MS-CHAP-1 3
VALUE MS-Acct-Auth-Type MS-CHAP-2 4
VALUE MS-Acct-Auth-Type EAP 5

# MS-Acct-EAP-Type Values

VALUE MS-Acct-EAP-Type MD5 4
VALUE MS-Acct-EAP-Type OTP 5
VALUE MS-Acct-EAP-Type Generic-Token-Card 6
VALUE MS-Acct-EAP-Type TLS 13

#
# Experimental extensions, configuration only (for check-items)
# Names/numbers as per the MERIT extensions (if possible).
#
ATTRIBUTE NAS-Identifier 32 string
ATTRIBUTE Proxy-State 33 string
ATTRIBUTE Login-LAT-Service 34 string
ATTRIBUTE Login-LAT-Node 35 string
ATTRIBUTE Login-LAT-Group 36 string
ATTRIBUTE Framed-AppleTalk-Link 37 integer
ATTRIBUTE Framed-AppleTalk-Network 38 integer
ATTRIBUTE Framed-AppleTalk-Zone 39 string
ATTRIBUTE Acct-Input-Packets 47 integer
ATTRIBUTE Acct-Output-Packets 48 integer
# 8 is a MERIT extension.
VALUE Service-Type Authenticate-Only 8

編輯 /etc/radiusclient/dictionary,在最後增加兩行

INCLUDE /etc/radiusclient/dictionary.microsoft
INCLUDE /etc/radiusclient/dictionary.merit

編輯 /etc/freeradius/sites-enabled/default,把 authorize 下的 mschap 註釋去除,把 authenticate 下 Auth-Type MS-CHAP 一節的註釋去除,如下所示

authorize {
mschap
ldap
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
Auth-Type LDAP {
ldap
}
}

編輯 /etc/radiusclient/servers,增加一行 (如果 FreeRADIUS 與 PPTP 不在同一臺服務器上,localhost 需要修改爲 FreeRADIUS 服務器的域名或 IP)

localhost testing123

如果 FreeRADIUS 跟 PoPToP 不是安裝在同一臺服務器上,還需要額外修改一些配置。

編輯 /etc/radiusclient/radiusclient.conf,把 authserver 及 acctserver 修改成安裝 FreeRADIUS 服務器的域名或 IP。

編輯 /etc/freeradius/clients.conf,增加 PPTP 服務器所在網絡的小節,如下所示 (pptp.domain.com 改成 PoPToP 服務器的域名或 IP)。

client pptp.domain.com {
secret = testing123
shortname = pptp
}

編輯 /etc/freeradius/radiusd.conf,找到 modules 下的 mschap 一節,改成如下所示

modules {
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
}
}

重啓 PoPToP

/etc/init.d/pptpd restart

快速測試
在 PC 或手機上連接 PPTP 服務器,用戶名是 test,密碼是 test,應該連接成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章