Setup Debian as Freeradius PEAP MSCHAPv2 Authentication Server

Filed Under (debian, linux) by Coni on 30-04-2008

Artikel ini melanjutkan dari artikel sebelumnya tentang Instalasi freeradius di Debian Etch. Freeradius akan menggunakan database MySQL. Langkah2nya sbb:

1. Membuat Sertifikat SSL. Pastikan openssl sudah terinstall. Copy file xpextensions dari direktori tempat source yg diekstrak jika filenya tidak ada didirektori /etc/freeradius/certs.

cp /direktori_source/freeradius-1.1.3/scripts/xpextensions /etc/freeradius/certs/

Masuk ke /etc/freeradius/certs/ dan buat script file untuk mengenerate sertifikat dengan nama CA.certs. File tersebut sebenernya sudah ada di /direktori_source/freeradius-1.1.3/scripts/CA.certs tetapi jika dipakai akan error sehingga perlu dimodifikasi seperti ini:

#!/bin/sh
 
#
#  This is a NON-INTERACTIVE script to help generate certificates for
#  use with the EAP-TLS module.
#
#	$Id: CA.certs,v 1.1 2004/01/23 17:02:31 aland Exp $
 
#
#  This environment variable should point to the SSL installation
#
[ "$SSL" = "" ] && SSL=/usr/lib/ssl
export SSL
 
#
#  Edit the following variables for your organization.
#
COUNTRY="ID"
PROVINCE="Jawa Barat"
CITY="Bandung"
ORGANIZATION="yuniarko.net"
ORG_UNIT=`hostname`
PASSWORD="private_key_password"
 
COMMON_NAME_CLIENT="FreeRadius Client certificate"
EMAIL_CLIENT="coni@yuniarko.net"
PASSWORD_CLIENT=$PASSWORD
 
COMMON_NAME_SERVER="FreeRadius Server certificate"
EMAIL_SERVER="coni@yuniarko.net"
PASSWORD_SERVER=$PASSWORD
 
COMMON_NAME_ROOT="FreeRadius Root certificate"
EMAIL_ROOT="coni@yuniarko.net"
PASSWORD_ROOT=$PASSWORD
 
#
#  lifetime, in days, of the certs
#
LIFETIME=730
 
######################################################################
#
#  Don't change anything below this line...
#
######################################################################
 
#
#  Prefer the SSL configured above, over any previous installation.
#
PATH=${SSL}/bin/:${SSL}/misc:${PATH}
LD_LIBRARY_PATH=${SSL}/lib
export PATH LD_LIBRARY_PATH
mv demoCA/serial .
rm -rf demoCA roo* cert* *.pem *.der
mkdir -p demoCA
mv serial demoCA
echo -e ""
echo -e "\t\t##################"
echo -e "\t\tcreate private key"
echo -e "\t\tname : name-root"
echo -e "\t\tCA.pl -newcert"
echo -e "\t\t##################\n"
 
(echo $COUNTRY
echo $PROVINCE
echo $CITY
echo $ORGANIZATION
echo $ORG_UNIT
echo $COMMON_NAME_CLIENT
echo $EMAIL_CLIENT
) | openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT
if [ "$?" != "0" ]
then
echo "Failed to create client certificate"
exit 1
fi
 
echo -e ""
echo -e "\t\t##################"
echo -e "\t\tcreate CA"
echo -e "\t\tuse just created 'newreq.pem' private key as filename"
echo -e "\t\tCA.pl -newca"
echo -e "\t\t##################\n"
 
echo "newreq.pem" | CA.pl -newca || exit 2
 
#ls -lg demoCA/private/cakey.pem
 
echo -e ""
echo -e "\t\t##################"
echo -e "\t\texporting ROOT CA"
echo -e "\t\tCA.pl -newreq"
echo -e "\t\tCA.pl -signreq"
echo -e "\t\topenssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.pem"
echo -e "\t\topenssl pkcs12 -in root.cer -out root.pem"
echo -e "\t\t##################\n"
 
openssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.p12 -cacerts -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
openssl pkcs12 -in root.p12 -out root.pem -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
openssl x509 -inform PEM -outform DER -in root.pem -out root.der
 
echo -e ""
echo -e "\t\t##################"
echo -e "\t\tcreating client certificate"
echo -e "\t\tname : name-clt"
echo -e "\t\tclient certificate stored as cert-clt.pem"
echo -e "\t\tCA.pl -newreq"
echo -e "\t\tCA.pl -signreq"
echo -e "\t\t##################\n"
 
(echo $COUNTRY
echo $PROVINCE
echo $CITY
echo $ORGANIZATION
echo $ORG_UNIT
echo $COMMON_NAME_SERVER
echo $EMAIL_SERVER
echo $PASSWORD_SERVER
echo "testing"
) | openssl req -new -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER
if [ "$?" != "0" ]
then
echo "Failed to create server certificate"
exit 1
fi
 
(echo y
echo y) | openssl ca  -policy policy_anything -out newcert.pem -passin pass:$PASSWORD_SEREVER -key $PASSWORD_SERVER -extensions xpclient_ext -extfile xpextensions -infiles newreq.pem
if [ "$?" != "0" ]
then
echo "Failed to do sign certificate"
exit 1
fi
 
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-clt.p12 -clcerts -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT || exit 8
openssl pkcs12 -in cert-clt.p12 -out cert-clt.pem -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT || exit 9
openssl x509 -inform PEM -outform DER -in cert-clt.pem -out cert-clt.der || exit 10
 
echo -e ""
echo -e "\t\t##################"
echo -e "\t\tcreating server certificate"
echo -e "\t\tname : name-srv"
echo -e "\t\tserver certificate stored as cert-srv.pem"
echo -e "\t\tCA.pl -newreq"
echo -e "\t\tCA.pl -signreq"
echo -e "\t\t##################\n"
 
(echo $COUNTRY
echo $PROVINCE
echo $CITY
echo $ORGANIZATION
echo $ORG_UNIT
echo $COMMON_NAME_ROOT
echo $EMAIL_ROOT
echo $PASSWORD_ROOT
echo $ORG_UNIT
) | openssl req -new  -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
if [ "$?" != "0" ]
then
echo "Failed to create root certificate"
exit 1
fi
 
(echo y
echo y) | openssl ca  -policy policy_anything  -out newcert.pem -passin pass:$PASSWORD_ROOT -key $PASSWORD_ROOT -extensions xpserver_ext -extfile xpextensions -infiles newreq.pem
if [ "$?" != "0" ]
then
echo "Failed to sign root certificate"
exit 1
fi
 
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-srv.p12 -clcerts -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER || exit 5
openssl pkcs12 -in cert-srv.p12 -out cert-srv.pem -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER || exit 6
openssl x509 -inform PEM -outform DER -in cert-srv.pem -out cert-srv.der || exit 7
 
echo -e "\n\t\t#################################"
echo -e "\t\tDONE.  Thank you for your patience."
echo -e "\t\t###################################\n"

2. Instalasi database Mysql.
Membuat database radius dan user radius

mysql -u root -p
> CREATE DATABASE radius;
> GRANT ALL PRIVILEGES ON radius.* to ‘radius’@'localhost’ IDENTIFIED BY ‘password’;
> FLUSH PRIVILEGES;
> EXIT

Import Skema freeradius MySQL

zcat /usr/share/doc/freeradius/examples/mysql.sql.gz | mysql -u radius -p radius

3. Konfigurasi radius. Masuk kedirektori /etc/freeradius lalu ubah beberapa file dibawah ini. Cukup disesuaikan saja. Yg ada disini berarti yg perlu diaktifkan.
radiusd.conf

mschap {
authtype = MS-CHAP
use_mppe = yes
require_encryption = yes
require_strong = yes
}
authorize {
preprocess
mschap
suffix
eap
sql
}
accounting {
sql
}
session {
sql
}
post-auth {
sql
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
}

clients.conf

  client 192.168.1.0./24 {
secret          = secret
shortname       = myhomewireless
}

192.168.1.0./24 adalah alamat network AP atau bisa diganti dengan ip address AP.
eap.conf

eap {
default_eap_type = peap
tls {
private_key_password = private_key_password
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
}
peap {
default_eap_type = mschapv2
}
}

private_key_password sama dengan pada saat mengkonfigure script CA.cert untuk menggenerate sertifikat.
sql.conf

sql {
driver = "rlm_sql_mysql"
server = "localhost"
login = "radius"
password = "password"
radius_db = "radius"
}

4. Konfigurasi AP. AP yg saya pake LinkSys WAP54G. Kali ini pakai gambar saja karena sederhana

secret sama dengan yg ada pada file clients.conf

Install Freeradius di Debian Etch yg support EAP TLS

Filed Under (debian, linux) by Coni on 29-04-2008

Jika kita menginstall freeradius dari repository debian maka tidak ada dukungan EAP TLS (Ini karena masalah lisensi katanya). Akan muncul pesan error pada log file jika kita mengaktifkan EAP TLS

Error: rlm_eap: Failed to link EAP-Type/tls: rlm_eap_tls.so: cannot open shared object file: No such file or directory
Error: radiusd.conf[10]: eap: Module instantiation failed.
Error: radiusd.conf[1940] Unknown module “eap”.
Error: radiusd.conf[1887] Failed to parse authenticate section.

Karena itu kita perlu mengunduh source file radius dari http://freeradius.org/getting.html. Setelah didownload jangan lupa diekstrak.

tar -zxvf freeradius_1.1.3-0.tar.gz
cd freeradius-1.1.3

Build paket dgn perintah

dpkg-buildpackage -us -uc -rfakeroot

Jika muncul pesan spt ini:

dpkg-checkbuilddeps: Unmet build dependencies: dpatch (>= 2) libltdl3-dev libpam0g-dev libmysqlclient15-dev | libmysqlclient-dev libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-dev libkrb5-dev libperl-dev libpcap-dev python-dev libsnmp9-dev | libsnmp-dev libpq-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)

Berarti ada dependsi paket yg perlu diinstall. Maka kita install aja

apt-get install dpatch libltdl3-dev libpam0g-dev libmysqlclient15-dev libmysqlclient-dev libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-dev libkrb5-dev libperl-dev libpcap-dev python-dev libsnmp9-dev libsnmp-dev libpq-dev

Setelah itu jalanin dpkg-buildpackage -us -uc -rfakeroot lagi. Setelah selesai naik satu direktori ntar ada file-file depnya

ls *.deb

freeradius_1.1.3-0_i386.deb
freeradius-dialupadmin_1.1.3-0_all.deb
freeradius-iodbc_1.1.3-0_i386.deb
freeradius-krb5_1.1.3-0_i386.deb
freeradius-ldap_1.1.3-0_i386.deb
freeradius-mysql_1.1.3-0_i386.deb
freeradius-postgresql_1.1.3-0_i386.deb

Dari situ install deh satu persatu yg dibutuhin.

dpkg -i freeradius_1.1.3-0_i386.deb freeradius-mysql_1.1.3-0_i386.deb

Install Debian Testing found booting error Processor Device is not Present

Filed Under (debian, linux) by Coni on 24-04-2008

Because of this error I really shock. At installation process everything worked fine. When I boot at first time suddenly it’s stopped and nothing shown on the screen. If I remove option quiet in booting parameter then it showed messages Processor Device is not Present approximately 4 or 5 times (I don’t remember exactly) and then just stopped.

After I searched, I found no solution but just some clue. The solution is adding some booting parameter:

noapic acpi=off pnpbios=off

so it’s look likes

kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/sdaX ro quiet vga=XXX noapic acpi=off pnpbios=off

That’s all finally my debian can boot.

Visit Yogyakarta / Jogja