This tutorial covers how to make pptp authenticate to RADIUS using freeradius and use the files module where /etc/freeradius/users will be used to authenticate connections.
On Debian, the libradiusclient-ng2 and the freeradius client must be installed with:
aptitude install freeradius libradiusclient-ng2
Not many changes are required to FreeRADIUS because it does have MS-CHAP enabled by default - which is the authentication protocol used for Microsoft products and then one we will be using.
In the /etc/freeradius/modules/mschap file, enable the following options:
use_mppe = yes require_encryption = yes require_strong = yes
in order to:
MPPE,
Make a symbolic link between /etc/radiusclient-ng/ and /etc/radiusclient - this is due to the radius.so and radattr.so pppd plugins that look for the configuration in the /etc/radiusclient directory.
Next, create the Microsoft dictionary at /etc/radiusclient/dictionary.microsoft with the following contents:
# # 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
Also create a port-id-map:
echo "" >/etc/radiusclient/port-id-map
In order to take the Microsoft dictionary into account, edit the /etc/radiusclient/dictionary file and append the following lines at the end:
INCLUDE /etc/radiusclient/dictionary.merit INCLUDE /etc/radiusclient/dictionary.microsoft
Now, depending on where the RADIUS server can be find, you need to edit /etc/radiusclient/radiusclient.conf and configure the parameters. Pay particular attention to authserver and acctserver that should point to the IP or hostname and port pair of the RADIUS server.
In order to make the client aware of the RADIUS servers, edit /etc/radiusclient/servers and add the IP and the secret from /etc/freeradius/client.conf on a single line. For instance, given a server at 127.0.0.1 and a secret testing123, you would edit the file /etc/radiusclient/servers and add:
127.0.0.1 testing123
Edit /etc/pptpd.conf and add the lines:
option /etc/ppp/pptpd-options logwtmp localip 192.168.1.1 remoteip 192.168.1.10-20
where 192.168.1.1 will be the IP of the PPTPd server and 192.168.1.10 through 192.168.1.20 will be the IP addresses that will be dished out to clients.
Now edit /etc/ppp/pptpd-options and add the lines:
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 mppe-stateful proxyarp nodefaultroute lock nobsdcomp nopcomp debug lcp-echo-failure 10 lcp-echo-interval 60 plugin radius.so plugin radattr.so
In order to add users, edit /etc/freeradius/users and create users. For instance, the following configuration adds a user called joe with the password superduper:
joe Cleartext-Password := "superduper"
Service-Type = Framed-User
pptpd and pppd will log to the daemon facility, usually to be found at /var/log/daemon.log. In case you get authentication failures, then you could run freeradius on the command line with debugging turned on:
freeradius -X
For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.