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 Subclipse (SVN Plugin) on Eclipse 3.3 Europa

Filed Under (Java) by Coni on 25-04-2008

Kali saya akan memakai banyak gambar mumpung kerjaan lagi sepi. IDE yg dipake adalah Eclipse. Jika lom punya download aja dulu. Gratis kok, ga bayar. Saya akan jelaskan cara installnya baik secara normal yg internetnya ga usah setting proxy dan secara Offline atau download paketnya dulu.

Sekarang yg normal dulu:

0. Dibuka dulu program Eclipsenya

1. Kita buka menu Help -> Software Updates -> Find and Install

2. Pilih Search for new features to install lalu klik Next

3. Pilih New Remote Site. Disini ada banyak karena sebelumnya sudah menginstall beberapa plugin

4. Isikan sesuai dengan yg ada digambar.

5. Cek bagian Subclipse kemudian klik Finish

6. Pilih fitur yg mau diinstall; Subclipse Plugin kemudian klik Next

7. Terima saja term licensenya lalu klik Next

8. Change Location untuk mengecek alamat instalasi program Eclipse. Jika sudah benar klik Finish

9. Sedang mengunduh dengan koneksi internet yg lemot

10. Setelah terunduh keluar verifikasi mau install. Pilih saja Install/Install All

11. Ada pertanyaan nih. Terserah mau pilih yang mana.

12. Setelah terinstall Cek ke Menu Window -> Open Perspective -> Other. Pastikan ada SVN Repository Exploring

13. Jika perspectivenya dipilih makan akan keluar gambar lebih kurang kayak gini

Jika kita terkoneksi internet dengan mengeset proxy maka download saja paketnya di sini. Karena saat saya menulis yg paling baru adalah yg site-1.2.4.zip, maka saya pilih yg itu saja. Mari kita kembali kelangkah nomor 3 hanya saja yg kita pilih adalah New Archived Site. Contohnya ada digambar.

Visit Yogyakarta / Jogja