āļŦāļĄāļēāļĒāđāļŦāļุ: āļ้āļāļāļĢāļ°āļ§ัāļ āļāļēāļĢāļāļĢัāļāđāļ่āļāļ่āļē freeradius 2.x āļāļ ubuntu āđāļāļĨี่āļĒāļāđāļāļĨāļāđāļāļāļēāļ freeradius 1.x āđāļāļĄāļēāļ
- āļāļāļŠāļāļāļัāļ ubuntu 10.04 āđāļĨāļ° freeradius 2.x
- āļ้āļāļāļัāļ freeradius āļāļĒู่āļี่ http://freeradius.org
- āļŠāļĄāļĄāļิāļ§่āļē radius server āļี้āļĄีāļŦāļĄāļēāļĒāđāļĨāļ ip āđāļ็āļ 10.0.1.1
- āļิāļāļั้āļāļ้āļ§āļĒāļāļģāļŠั่āļ sudo apt-get install freeradius freeradius-utils freeradius-mysql freeradius-ldap gawk
- āļŠั่āļāđāļŦ้āļāļģāļāļēāļāļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius start
- āļāļāļŠāļāļāļ§่āļē freeradius āļิāļāļั้āļāđāļ้āļāļēāļāđāļ้āđāļĨ้āļ§āļ้āļ§āļĒāļัāļ§āļāļĒ่āļēāļāļāļģāļŠั่āļ
*** āļāļēāļāļัāļ§āļāļĒ่āļēāļāđāļŦ้āđāļāļāļ้āļāļāļ§āļēāļĄ your_root_password āļ้āļ§āļĒāļĢāļŦัāļŠāļ่āļēāļāļāļāļ root
sudo radtest your_name your_password 127.0.0.1 0 testing123
āļŦāļēāļāļูāļāļ้āļāļāļāļ°āđāļ้āļĢัāļāļ้āļāļāļ§āļēāļĄāļāļāļāļāļĨัāļāļāļĢāļ°āļĄāļēāļāļ§่āļē
Sending Access-Request of id 232 to 127.0.0.1 port 1812
User-Name = "your-name"
User-Password = "your_password"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=232, length=20
āļึāļāļāļāļāļี้āđāļŠāļāļāļ§่āļē freeradius āđāļ้āļāļēāļāđāļ้āđāļĨ้āļ§ āđāļ่āđāļ้āđāļ้āđāļีāļĒāļ localhost āļืāļ 127.0.0.1
- āļŦāļēāļāļ้āļāļāļāļēāļĢāļāļุāļāļēāļิāđāļŦ้ radius client āđāļ้āļēāļĄāļēāđāļ้ radius server āļี้āđāļ้
āļ้āļāļāđāļ้āđāļāļŠิāļāļิ์āļี่āđāļ้āļĄ /etc/freeradius/clients.conf āļāļĢัāļāļั้āļāđāļŦ้āļĄีāļ่āļēāļัāļāļāļĢāļ°āļĄāļēāļāļัāļ§āļāļĒ่āļēāļāļี้
client 10.0.1.0/24 {
secret = mytestkey
shortname = private-network
}
āļัāļ§āļāļĒ่āļēāļāļี้āļืāļāđāļŦ้ radius client āļี่āļĄีāļŦāļĄāļēāļĒāđāļĨāļ ip 10.0.1.x āļŠāļēāļĄāļēāļĢāļāđāļ้āļēāļĄāļēāđāļ้āļ้āļ§āļĒ secret key āļ§่āļē mytestkey
āđāļĄื่āļāđāļ้āđāļāđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้ reload āđāļŦāļĄ่ āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
āļĨāļāļāļāļāļŠāļāļāļ้āļ§āļĒāļāļģāļŠั่āļāļัāļ§āļāļĒ่āļēāļ sudo radtest your_name your_password 10.0.1.1 0 mytestkey
*** āļ่āļē your_password āļืāļ āļĢāļŦัāļŠāļ่āļēāļāļāļāļ your_name āđāļĨāļ° 10.0.1.1 āļืāļāļŦāļĄāļēāļĒāđāļĨāļ ip āļāļāļ radius server
āđāļ้āļāļĨāđāļŠāļāļāļ้āļāļāļ§āļēāļĄāļัāļāļัāļ§āļāļĒ่āļēāļ
Sending Access-Request of id 246 to 10.0.1.1:1812
User-Name = "your_name"
User-Password = "your_password"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 10.0.1.1:1812, id=246, length=20
āļึāļāļั้āļāļāļāļāļี้āđāļ็āļāļัāļāđāļิāļāļāļĢิāļāļēāļĢāļĢāļ°āļāļ radius server āđāļ้āđāļĨ้āļ§
- āļั้āļāļāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ configuration āļāļāļ freeradius
āđāļ้āļĄ /etc/freeradius/radiusd.conf āđāļ็āļāļี่āļāļĢัāļāļ่āļēāļāļāļāļĢāļ°āļāļāļ่āļēāļāđ
āļŦāļēāļāđāļ็āļ freeradius 2.x āļāļ°āļĄีāļāļēāļĢāđāļĒāļāđāļ้āļĄāļĒ่āļāļĒāļāļāļāđāļāļāļēāļ /etc/freeradius/radiusd.conf
āđāļāļāļĒู่āļี่ /etc/freeradius/sites-available/default āđāļĨāļ° /etc/freeradius/modules
āļŦāļēāļāđāļ็āļ freeradius 1.x āļุāļāļāļĒ่āļēāļāļāļ°āļāļĢāļ°āļุāļāļัāļ§āđāļāđāļ้āļĄ /etc/freeradius/radiusd.conf
āđāļĄื่āļ radius server āđāļ้āļĢัāļāļāļēāļĢāļิāļāļ่āļāļāļēāļāļู้āđāļ้ radius client
āļ§ิāļีāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļุāļāļŠāļĄāļัāļิāļāļāļāļู้āđāļ้āļāļĒู่āđāļāļŠ่āļ§āļāļี่āļื่āļ authorize {...}
āļ āļēāļĒāđāļ authorize {...} āļี้ āļāļĢāļ°āļāļāļāļ้āļ§āļĒāļื่āļ modules āļāļĢāļ§āļāļŠāļāļāļ่āļēāļāđ
āļŦāļēāļāļุāļāļŠāļĄāļัāļิāđāļĄ่āļāļĢāļ āļāļĢāļāļิāđāļĨ้āļ§āļĢāļ°āļāļāļ็āļāļ°āļĢีāļāļีāļāļāļāļāļĄāļēāļāļĢ้āļāļĄāđāļ้āļ reject
āđāļ่āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļŦ้āđāļāļāļĢāļ§āļāļŠāļāļāļ่āļāļัāļ authorize modules
āđāļĢีāļĒāļāļĨāļģāļัāļāļัāļāļัāļāđāđāļāļี่āđāļŦāļĨืāļāļื่āļāđāđāļ้āļีāļ
āļŦāļēāļāļุāļāļŠāļĄāļัāļิāļ่āļēāļ āļ็āļāļ°āđāļ้āļēāļั้āļāļāļāļāļāļĢāļ§āļāļŠāļāļāļĢāļŦัāļŠāļ่āļēāļāļāļāļāļู้āđāļ้āļ§่āļēāļูāļāļ้āļāļāļŦāļĢืāļāđāļĄ่
āđāļāļĒ authorize modules āļāļ°āđāļĨืāļāļ modules āļี่āļ้āļāļāļāļēāļĢāđāļāļ āļāļēāļāļŠ่āļ§āļāļี่āļื่āļ authenticate {...}
āļŦāļēāļāļĢāļŦัāļŠāļ่āļēāļāļูāļāļ้āļāļ āļ็āļāļ°āđāļ้āļēāļŠู่āļŠ่āļ§āļāļāļāļ postauth {...}
āđāļ็āļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļิ้āļāļ้āļēāļĒāļ่āļāļāļŠ่āļāļืāļāļ่āļēāļāļĨัāļāđāļŦ้āđāļ่ radius client āļี่āļิāļāļ่āļāļĄāļē
āļāļēāļĢāļัāļāļึāļāļāļĢāļ°āļ§ัāļิāđāļ้āļāļēāļāļāļĒู่āđāļāļŠ่āļ§āļ accounting {...}
modules āļุāļāļัāļ§āļี่āđāļ้āļāļēāļ āļāļ°āļ้āļāļāđāļ้āļĢัāļāļāļēāļĢāļāļĢāļ°āļāļēāļĻāđāļ§้āļ่āļāļāđāļĨ้āļ§
āļŦāļēāļāđāļ็āļ freeradius 2.x āļāļ°āđāļĒāļ modules āļāļāļāđāļ็āļāđāļ้āļĄāļĒ่āļāļĒāđāļāļĒู่āļี่ directory āļื่āļ /etc/freeradius/modules
āļŦāļēāļāđāļ็āļ freeradius 1.x āļāļ°āļĄี modules āļāļĒู่āđāļāđāļ้āļĄ /etc/freeradius/radiusd.conf āļื้āļāļี่āļŠ่āļ§āļāļāļāļāļื่āļ modules {...}
- āļŦāļēāļāļ้āļāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļู้āđāļ้āļัāļ mail server āļ่āļēāļ imap/pop3 āđāļŦ้āļāļģāļัāļāļี้
āļัāļ§āļāļĒ่āļēāļāļี้āļāļ°āļāļĢāļ§āļāļŠāļāļāļัāļ mail server āļื่āļ your.mail.server
āļ้āļāļāļิāļāļั้āļ php āđāļĨāļ° php-imap āļ่āļāļāđāļĨ้āļ§ āļิāļāļั้āļāļ้āļ§āļĒāļāļģāļŠั่āļ sudo apt-get install php5 php5-imap php5-cli
āđāļ้āđāļāđāļ้āļĄ /etc/php5/cli/conf.d/imap.ini āļāļĢāļ§āļāļŠāļāļ/āđāļิ่āļĄāđāļŦ้āļĄีāļāļĢāļĢāļัāļāļัāļ§āđāļāļĢāļ§่āļē extension=imap.so
āļ่āļāđāļāļŠāļĢ้āļēāļāđāļ้āļĄ /etc/freeradius/imap.php āđāļŦ้āļĄีāđāļื้āļāļŦāļēāļ§่āļē
<?php
error_reporting(0);
$host = $argv[1];
$username = $argv[2];
$password = $argv[3];
$service = $argv[4];
$imap_host="{" . $host . $service . "}";
$mbox = imap_open("$imap_host", "$username", "$password");
$folders = imap_listmailbox($mbox, "$imap_host", "*");
if ($folders == false) {
echo "false";
} else {
echo "true";
}
imap_close($mbox);
?>
āļŠāļĢ้āļēāļāđāļ้āļĄāļāļģāļŠั่āļ shell script āļื่āļ /etc/freeradius/imap-authen.sh āļĄีāđāļื้āļāļŦāļēāļ§่āļē
#!/bin/bash
#exit 0 = valid ; exit 1 = invalid
AUTHEN_SHADOW="YES"
AUTHEN_MAIL="YES"
AUTHEN_LDAP="NO"
AUTHEN_PSU_PASSPORT="NO"
NAME=$(echo ${USER_NAME} | cut -d'"' -f2)
PASSWORD=$(echo ${USER_PASSWORD} | cut -d'"' -f 2-|sed "s/\"$//")
KEY="false"
if [ "${AUTHEN_SHADOW}" = "YES" ] ; then
KEY=$(/bin/sh /etc/freeradius/check-shadow.sh "${NAME}" "${PASSWORD}")
if [ "${KEY}" = "true" ] ; then
exit 0
fi
fi
if [ "${AUTHEN_LDAP}" = "YES" ] ; then
KEY=$(/bin/sh /etc/freeradius/check-ldap.sh "${NAME}" "${PASSWORD}")
if [ "${KEY}" = "true" ] ; then
exit 0
fi
fi
if [ "${AUTHEN_PSU_PASSPORT}" = "YES" ] ; then
USER=$(echo ${NAME} | cut -d'@' -f1)
KEY=$(/usr/bin/php /etc/freeradius/soap-authen.php ${USER} ${PASSWORD} $1 $2})
if [ "${KEY}" = "true" ] ; then
exit 0
fi
fi
if [ "${AUTHEN_MAIL}" = "YES" ] ; then
IS_EMAIL=$(echo ${NAME}|grep "@")
if [ -n "${IS_EMAIL}" ] ; then
USER=$(echo ${NAME} | cut -d'@' -f1)
DOMAIN=$(echo ${NAME} | cut -d'@' -f2)
else
USER=${NAME}
DOMAIN="mail.psu.ac.th"
fi
case ${DOMAIN} in
psu.ac.th)
HOST="mail.psu.ac.th"
SERVICE=":143/imap/notls" ;;
pharmacy.psu.ac.th)
HOST="mail.pharmacy.psu.ac.th"
SERVICE=":143/imap/notls" ;;
pn.psu.ac.th)
HOST="bunga.pn.psu.ac.th"
SERVICE=":143/imap/notls" ;;
gmail.com)
HOST="pop.gmail.com"
SERVICE=":995/pop3/ssl" ;;
live.com)
HOST="pop3.live.com"
USER=${NAME}
SERVICE=":995/pop3/ssl" ;;
*)
HOST=${DOMAIN}
SERVICE=":110/pop3/notls" ;;
esac
KEY=$(/usr/bin/php /etc/freeradius/imap.php ${HOST} ${USER} ${PASSWORD} ${SERVICE})
if [ "${KEY}" = "true" ] ; then
exit 0
fi
fi
exit 1
āļŠāļĢ้āļēāļāđāļ้āļĄāđāļāļ text āļื่āļ /etc/freeradius/myusers āļĄีāđāļื้āļāļŦāļēāļ§่āļē
DEFAULT Auth-Type := Accept
Exec-Program-Wait="/bin/sh /etc/freeradius/imap-authen.sh"
āļŦāļēāļāđāļ็āļ freeradius 2.x āđāļŦ้āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/modules/files āđāļิāļĄāļ้āļāļāļ§āļēāļĄāļ่āļāļ้āļēāļĒāđāļ้āļĄāļ§่āļē
files myimap {
usersfile = ${confdir}/myusers
}
āđāļĨ้āļ§āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/sites-available/default
āļี่āļŠ่āļ§āļāļāļāļ authorize {...} āļāļĢāļ°āļĄāļēāļāļāļĢāļĢāļัāļāļี่ 152 āļี่āļāļĢิāđāļ§āļāļ้āļāļāļ§āļēāļĄāļึ้āļāļ้āļāļ้āļ§āļĒ authorize {
...
# Read the 'users' file
files
āđāļŦ้ comment āļāļĢāļĢāļัāļ files āđāļื่āļāļĒāļāđāļĨิāļāļ่āļēāļี้ āđāļĨ้āļ§āđāļāļĢāļāđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄāđāļิ่āļĄ āļāļĨāļēāļĒāđāļ็āļāļ§่āļē
# files
āđāļāļĢāļāđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄāļ§่āļē myimap āļ่āļāđāļāļีāļāļāļĢāļĢāļัāļ āļāļĨāļēāļĒāđāļ็āļāļ§่āļē
# files
myimap
āđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้āļŠั่āļāļāļģāļāļēāļāđāļŦāļĄ่āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
āđāļ่āļี้āļ็āđāļŠāļĢ็āļāđāļĨ้āļ§ āļāļāļŠāļāļāļāļĨāļāļēāļāđāļ้āđāļĨāļĒ
- āļŦāļēāļāļ้āļāļāļāļēāļĢāļ§่āļēāļŦāļĨัāļāļ่āļēāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļ username/password āļูāļāļ้āļāļāđāļĨ้āļ§
āļāļ°āļāļģāļāļēāļĢāļัāļāļึāļāļĨāļāđāļ้āļĄ log file āđāļ็āļāđāļ§้āļี่ /var/log/freeradius/myauthen āđāļĨāļ°āļĒัāļāļ้āļāļāļāļēāļĢāļāļĢāļ§āļāļ§ิāļีāļāļēāļĢāļิāđāļĻāļĐāđāļāļāļēāļ°āļāļāļāļāļāđāļāļāđāļิ่āļĄāđāļิāļĄāļีāļ
āļัāļ§āļāļĒ่āļēāļāļ้āļāļāļāļēāļĢāđāļĄ่āļāļุāļāļēāļิāđāļŦ้āļู้āđāļ้āļื่āļ demo āđāļĨāļ° abc āđāļ้āļāļēāļ āđāļŦ้āļāļģāļัāļāļี้
āļŠāļĢ้āļēāļāđāļ้āļĄāļāļģāļŠั่āļ shell script āļื่āļ /etc/freeradius/my-authen.sh āļĄีāđāļื้āļāļŦāļēāļ§่āļē
#!/bin/bash
###exit 0 = valid ; exit1 = invalid
ALL_PASS="YES"
CHECK_STAFF="NO"
CHECK_STUDENT="NO"
export LANG=en.US
MYDIR="/var/log/freeradius/myauthen"
if [ ! -d ${MYDIR} ] ; then
mkdir -p ${MYDIR}
fi
TODAY=$(date "+%Y%m%d")
MYFILE="${MYDIR}/${TODAY}"
if [ ! -e ${MYFILE} ] ; then
touch ${MYFILE}
fi
MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
echo "${MYTIME};${USER_NAME};$2;$1;PASS" >> ${MYFILE}
MYUSER=$(echo $USER_NAME | cut -d'"' -f2)
if [ "${ALL_PASS}" = "YES" ] ; then
exit 0
fi
if [ "${CHECK_STAFF}" = "YES" ] ; then
case "${MYUSER}" in
demo) exit 1 ;;
*) exit 0 ;;
esac
fi
if [ "${CHECK_STUDENT}" = "YES" ] ; then
case "${MYUSER}" in
demo) exit 1 ;;
*) exit 0 ;;
esac
fi
exit 1
āļŦāļēāļāđāļ็āļ freeradius 2.x āđāļŦ้āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/modules/exec āđāļิāļĄāļ้āļāļāļ§āļēāļĄāļ่āļāļ้āļēāļĒāđāļ้āļĄāļ§่āļē
exec my-auth {
program = "/bin/sh /etc/freeradius/my-authen.sh %l %{Packet-Src-IP-Address}"
wait = yes
input_pairs = request
output_pairs = reply
packet_type = Access-Accept
}
āđāļĨ้āļ§āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/sites-available/default
āļี่āļŠ่āļ§āļāļāļāļ post-auth {...} āļāļĢāļ°āļĄāļēāļāļāļĢāļĢāļัāļāļี่ 439 āļี่āļāļĢิāđāļ§āļāļ้āļāļāļ§āļēāļĄāļึ้āļāļ้āļāļ้āļ§āļĒ post-auth {
...
āđāļāļĢāļāđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄāđāļิ่āļĄ
my-auth
āđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้āļŠั่āļāļāļģāļāļēāļāđāļŦāļĄ่āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
- āļāļēāļĢāļัāļāļึāļāļāļĢāļ°āļ§ัāļิāļāļēāļĢāđāļ้āļāļēāļāļāļāļ radius āđāļāļĒ defualt āļāļ°āļัāļāļึāļāđāļ§้āđāļāļื้āļāļี่ /var/log/freeradius/radacct
āđāļāļĒāđāļĒāļāđāļ็āļ directory āļāļāļāđāļ่āļĨāļ°āļŦāļĄāļēāļĒāđāļĨāļ ip āļāļāļ radius client
āđāļĨ้āļ§āļĒัāļāđāļāļāļĒ่āļāļĒāļāļāļāđāļ็āļāđāļ้āļĄāļāļāļāđāļ่āļ§ัāļāļีāļ āļึ่āļāļāļēāļāđāļĄ่āļŠāļ°āļāļ§āļāļ่āļāļāļēāļĢāļ§ิāđāļāļĢāļēāļ°āļŦ์āļ้āļāļĄูāļĨ
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļิ่āļĄ module āļัāļāļึāļāļāļĢāļ°āļ§ัāļิāļāļēāļĢāđāļ้āļāļēāļāđāļิ่āļĄāđāļิāļĄāļāļēāļāļāļāļāđāļิāļĄ āļัāļ§āļāļĒ่āļēāļāļืāļ
āļ้āļāļāļāļēāļĢāļัāļāļึāļāđāļ§้āđāļ directory āļื่āļ /var/log/freeradius/myaccount
āđāļĨ้āļ§āđāļ็āļāđāļ้āļĄāđāļĒāļāđāļ็āļāļĢāļēāļĒāļ§ัāļāđāļāļĢูāļāđāļāļ 20060729 āļ āļēāļĒāđāļāđāļ้āļĄāļĄีāļĢูāļāđāļāļāļ§่āļē
20060729:15:54:05;"demo";10.0.0.153;1154163245;"a5f56ebd6ebc1321";Start;
20060729:15:55:06;"demo";10.0.0.153;1154163306;"a5f56ebd6ebc1321";Stop;61
āđāļŦ้āļāļģāļัāļāļี้ āļŠāļĢ้āļēāļāđāļ้āļĄāļāļģāļŠั่āļ shell script āļื่āļ /etc/freeradius/log-radius-account.sh āļĄีāđāļื้āļāļŦāļēāļ§่āļē
#!/bin/bash
export LANG=en.US
MYDIR="/var/log/freeradius/myaccount"
if [ ! -d ${MYDIR} ] ; then
mkdir -p ${MYDIR}
fi
TODAY=$(date "+%Y%m%d")
myfile="${MYDIR}/${TODAY}"
if [ ! -e ${MYDIR} ] ; then
touch ${MYDIR}
fi
MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
echo "${MYTIME};${USER_NAME};$2;$1;${ACCT_UNIQUE_SESSION_ID};${ACCT_STATUS_TYPE};${ACCT_SESSION_TIME}" >> ${MYFILE}
āđāļ้āļĄ shell script āļāļāđāļ่āļี้
āļŦāļēāļāđāļ็āļ freeradius 2.x āđāļŦ้āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/modules/exec āđāļิāļĄāļ้āļāļāļ§āļēāļĄāļ่āļāļ้āļēāļĒāđāļ้āļĄāļ§่āļē
exec my-log-account {
wait = no
program = "/bin/sh /etc/freeradius/log-radius-account.sh %l %{Packet-Src-IP-Address} "
}
āđāļĨ้āļ§āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/sites-available/default
āļี่āļŠ่āļ§āļāļāļāļ accounting {...}āļāļĢāļ°āļĄāļēāļāļāļĢāļĢāļัāļāļี่ 358 āļี่āļāļĢิāđāļ§āļāļ้āļāļāļ§āļēāļĄ accounting {
...
detail
āđāļŦ้āđāļāļĢāļāđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄāļ§่āļē
my-log-account
āđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้āļŠั่āļāļāļģāļāļēāļāđāļŦāļĄ่ āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
- radius server āļŠāļēāļĄāļēāļĢāļāļŠ่āļāļ่āļēāļāļāļāđāļ§āļĨāļēāļี่āļĒัāļāļāļāđāļŦāļĨืāļāđāļŦ้āđāļ้āļāļēāļ
āđāļāļĒāļŠ่āļāļ่āļēāļāļĨัāļāļĄāļēāļี่ attribute āļื่āļ Session-Timeout
āđāļ่āļัāļ§āļĄัāļāđāļāļāļāļģāļāļ§āļāđāļĄ่āđāļ็āļ āļ้āļāļāļŦāļēāļ§ิāļีāļื่āļāđāļāļāļēāļĢāļāļģāļāļ§āļāđāļ§āļĨāļē
āđāļĨ้āļ§āļŠ่āļāļāļĨัāļāļĄāļēāđāļŦ้ radius āļŠ่āļāļāļģāļāļāļāđāļŦ้āļีāļāļāļāļāļŦāļึ่āļ
āļāļēāļāļัāļ§āļāļĒ่āļēāļāļ้āļ 8 āļŦāļēāļāļ้āļāļāļāļēāļĢāđāļŠ่āļ่āļēāđāļ§āļĨāļēāļี่āđāļŦāļĨืāļāđāļāļāļēāļĢāđāļ้āļāļēāļ
āļัāļ§āļāļĒ่āļēāļāđāļ่āļāđāļŦāļĨืāļ 120 āļ§ิāļāļēāļี āđāļŦ้āđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄāļ§่āļē
echo "SESSION-TIMEOUT = \"120\""
āļĨāļāđāļāļ่āļāļāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄ exit 0 āļัāļāļัāļ§āļāļĒ่āļēāļ
#!/bin/bash
###exit 0 = valid ; exit1 = invalid
MYUSER=$(echo $USER_NAME | cut -d'"' -f2)
case "${MYUSER}" in
demo) exit 1 ;;
abc) exit 1 ;;
*) echo "SESSION-TIMEOUT = \"120\""
exit 0 ;;
esac
āđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้āļŠั่āļāļāļģāļāļēāļāđāļŦāļĄ่ āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
āđāļ่āļี้āļ็āđāļŠāļĢ็āļāđāļĨ้āļ§ PC āļี่āļิāļāļ่āļāđāļ้āļēāļĄāļēāļāļ°āđāļ้āļĢัāļāļāļģāļāļāļāļāļĨัāļāđāļ
āļĢāļ°āļุāļ§่āļēāđāļŦāļĨืāļāđāļ§āļĨāļēāđāļ้āļāļēāļāļีāļāđāļ่āļēāđāļĢ āļึ้āļāļัāļāļัāļ§āđāļĨāļāļีāļāļģāļŦāļāļāļŠ่āļāļāļāļāļĄāļē
āļāļēāļāļัāļ§āļāļĒ่āļēāļāđāļŦ้āđāļ้āđāļāļัāļ§āđāļĨāļ 120 āđāļ็āļāļื่āļāđāļāļēāļĄāļ้āļāļāļāļēāļĢ
- āļāļēāļĢāļัāļāļึāļāļāļĢāļ°āļ§ัāļิāļāļēāļĢ authen radius āđāļ§้āđāļāļื้āļāļี่ /var/log/freeradius/myauthen āđāļŦ้āļāļģāļัāļāļี้
āļŠāļĢ้āļēāļāđāļ้āļĄāļāļģāļŠั่āļ shell script āļื่āļ /etc/freeradius/log-radius-authen.sh āļĄีāđāļื้āļāļŦāļēāļ§่āļē
#!/bin/bash
export LANG=en.US
MYDIR="/var/log/freeradius/myauthen"
if [ ! -d ${MYDIR} ] ; then
mkdir -p ${MYDIR}
fi
TODAY=$(date "+%Y%m%d")
MYFILE="${MYDIR}/${TODAY}"
if [ ! -e ${MYFILE} ] ; then
touch ${MYFILE}
fi
MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
echo "${MYTIME};${USER_NAME};$2;$1;CHECK_IN" >> ${MYFILE}
āđāļ้āļĄ shell script āļāļāđāļ่āļี้
āļŦāļēāļāđāļ็āļ freeradius 2.x āđāļŦ้āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/modules/exec āđāļิāļĄāļ้āļāļāļ§āļēāļĄāļ่āļāļ้āļēāļĒāđāļ้āļĄāļ§่āļē
exec my-log-authen {
wait = no
program = "/bin/sh /etc/freeradius/log-radius-authen.sh %l %{Packet-Src-IP-Address} "
}
āđāļĨ้āļ§āđāļ้āđāļāđāļ้āļĄ /etc/freeradius/sites-available/default
āļี่āļŠ่āļ§āļāļāļāļ authorize {...}āļāļĢāļ°āļĄāļēāļāļāļĢāļĢāļัāļāļี่ 152 āļี่āļāļĢิāđāļ§āļāļ้āļāļāļ§āļēāļĄ authorize {
...
# files
myimap
āđāļŦ้āđāļāļĢāļāđāļิ่āļĄāļāļĢāļĢāļัāļāļ้āļāļāļ§āļēāļĄ āļāļĨāļēāļĒāđāļ็āļāļ§่āļē
my-log-authen
# files
myimap
āđāļŠāļĢ็āļāđāļĨ้āļ§āđāļŦ้āļŠั่āļāļāļģāļāļēāļāđāļŦāļĄ่ āļ้āļ§āļĒāļāļģāļŠั่āļ sudo /etc/init.d/freeradius force-reload
- āļัāļ§āļāļĒ่āļēāļāļāļģāļŠั่āļāļāļēāļĢāļāļāļŠāļāļāļ้āļ§āļĒāļāļģāļŠั่āļ radclient
āļāļāļŠāļāļāļāļēāļĢ authen āļāļģāļŠั่āļāļāļĢāļ°āļĄāļēāļāļ§่āļē
echo "User-Name=mama,User-Password=123456" | radclient 10.0.1.2 auth mytestkey
āļāļāļŠāļāļāļāļēāļĢ accounting āļāļāļāđāļ้āļē āļāļģāļŠั่āļāļāļĢāļ°āļĄāļēāļāļ§่āļē
echo "User-Name=mama,Acct-Status-Type=Start" | radclient 10.0.1.2 acct mytestkey
āļāļāļŠāļāļāļāļēāļĢ accounting āļāļāļāļāļāļ āļāļģāļŠั่āļāļāļĢāļ°āļĄāļēāļāļ§่āļē
echo "User-Name=mama,Acct-Status-Type=Stop" | radclient 10.0.1.2 acct mytestkey