เป็นคำแนะนำติดตั้งจัดการปรับแต่ง radius server
ต้นแบบทดสอบด้วย linux fedora core 3,2,1 ใช้งานภายในมหาวิทยาลัยสงขลานครินทร์
วิธีติดตั้ง radius server ด้วยโปรแกรม freeradius
*** แหล่งข้อมูลต้นฉบับ freeradius คือ http://www.freeradius.org/
- ติดตั้งโปรแกรม freeradius ด้วยคำสั่ง
apt-get install freeradius - แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig radiusd on - สั่งให้ทำงานด้วยคำสั่งว่า
/etc/init.d/radiusd start
Starting RADIUS server: [ OK ] - ตรวจสอบว่าโปรแกรมทำงานแล้วด้วยคำสั่ง
/etc/init.d/radiusd status
ได้ผลออกมาดังตัวอย่าง
radiusd (pid 19180) is running… - แฟ้มที่เกี่ยวข้อง
- /var/log/radius/radius.log
- /etc/raddb/radiusd.conf
- /etc/raddb/clients.conf
- เมื่อให้ radiusd ทำงานแล้ว เริ่มขั้นตอนทดสอบระบบโดยป้อนตัวอย่างคำสั่งดังนี้radtest root password-root localhost 0 testing123
*** จากตัวอย่าง password-root คือรหัสผ่านของ root
ได้ผลข้อความตอบกลับดังตัวอย่าง
Sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = “root”
User-Password = “password-root”
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
Re-sending Access-Request of id 43 to 127.0.0.1:1812
User-Name = “root”
User-Password = “{\277\033\t\217\224\n\021\036\271$\301\026\234\353\225”
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=43, length=20แสดงว่าระบบใช้งานได้แล้ว ถึงแม้ว่าจะมีการแจ้งว่า Access-Reject
เป็นสาเหตุเนื่องจากไม่มีสิทธิในการอ่านแฟ้ม /etc/shadow ของระบบ - หากต้องการให้ใช้กับบัญชีผู้ใช้ระบบ UNIX
ต้องตั้งค่าให้อ่านแฟ้ม /etc/shadow ได้
โดยแก้ไขแฟ้ม /etc/raddb/radiusd.conf
ทำการ comment ยกเลิกบรรทัดข้อความจากเดิม
user = radiusd
group = radiusd
ให้เป็น
#user = radiusd
#group = radiusd
เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง /etc/init.d/radiusd restart
ต่อไปลองป้อนตัวอย่างคำสั่งเดิมเพื่อทดสอบดังนี้
radtest root password-root localhost 0 testing123
คราวนี้จะได้ผลข้อความว่า
Sending Access-Request of id 82 to 127.0.0.1:1812
User-Name = “root”
User-Password = “password-root”
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=82, length=20
โดยมีผลการแจ้งว่า Access-Accept ถูกต้องตามต้องการ - หากต้องการให้ radius client เข้ามาติดต่อใช้งานระบบ radiusd นี้ได้
ให้แก้ไขแฟ้ม /etc/raddb/clients.conf ให้มีค่าดังตัวอย่างนี้
client 10.0.1.0/24 {
secret = mytestkey
shortname = private-network
}
ตัวอย่างคือให้ radius client ที่มีหมายเลข ip 10.0.1.x
สามารถเข้ามาใช้ด้วย secret key ว่า mytestkey
เมื่อแก้ไขเสร็จแล้วให้ reload ใหม่ด้วยคำสั่ง /etc/init.d/radiusd reload
ลองทดสอบด้วยคำสั่งตัวอย่าง
radtest root passwordroot 10.0.1.1 0 mytestkey
*** ค่า passwordroot คือ รหัสผ่านของ root และ 10.0.1.1 คือหมายเลข ip ของ radius server
ได้ผลแสดงข้อความดังตัวอย่าง
Sending Access-Request of id 246 to 10.0.1.1:1812
User-Name = “root”
User-Password = “passwordroot”
NAS-IP-Address = 10.0.1.2
NAS-Port = 0
rad_recv: Access-Accept packet from host 10.0.1.1:1812, id=246, length=20ถึงขั้นตอนนี้เป็นอันเปิดใช้ระบบ radiusd ได้แล้ว - หากต้องการให้ใช้ได้ดับ LDAP ด้วยให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
เพื่อให้รองรับและเชื่อมต่อกับ LDAP server ดังนี้ต้องแก้ไขส่วนของ modules โดยค้นเข้าไปที่บริเวณพื้นที่ขึ้นต้นด้วยข้อความว่า
modules {
…
ldap {
**** ให้แก้ไขค่าของ server , basedn ดังตัวอย่าง
server = “myldap.net”
basedn = “dc=my, dc=net”
**** ให้ comment บรรทัด access_attr เพื่อยกเลิกค่า เนื่องจากไม่ได้ใช้รูปแบบนี้
# access_attr = “dialupAccess”*** ในส่วนของ modules แก้ไขเพียงแค่นี้
ต่อไปแก้ไขส่วนของ authorize โดยค้นเข้าไปที่บริเวณพื้นที่ขึ้นต้นด้วยข้อความว่า
authorize {
…
# Read the ‘users’ file
files
*** ให้แก้ไขโดยแทรกเพิ่มบรรทัดข้อความว่า ldap ก่อนบรรทัดคำว่า files
เพื่อให้ระบบทำการลำดับ authorize ด้วยแบบ ldap ก่อน
หากไม่พบก็จะต่อด้วยแบบ files (แฟ้ม /etc/shadow)
ถ้ากลับลำดับการ authorize อาจพบปัญหาผิดพลาดได้
ดังตัวอย่างหลังการแทรกเพิ่มข้อความ
# Read the ‘users’ file
ldap
files
*** ในส่วนของ authorize แก้ไขเพียงแค่นี้
ต่อไปแก้ไขส่วนของ authenticate โดยค้นเข้าไปที่บริเวณพื้นที่ขึ้นต้นด้วยข้อความว่า
authenticate {
…
# Auth-Type LDAP {
# ldap
# }
*** ให้แก้ไขด้วยการ uncomment บรรทัดข้อความเพื่อให้ระบบกำหนดวิธี LDAP
Auth-Type LDAP {
ldap
}
*** ในส่วนของ authenticate แก้ไขเพียงแค่นี้เสร็จแล้วให้ reload ใหม่ด้วยคำสั่ง /etc/init.d/radiusd reload
ทดสอบใช้งานได้เลย - แนะนำให้ยกเลิกการกำหนดค่าการทำงานบางตัวที่ไม่ได้ใช้งาน
โดยการ comment บรรทัดข้อความในแฟ้ม /etc/raddb/radiusd.confถ้าไม่ได้ใช้เป็น proxy radius ควรยกเลิก
โดยเปลี่ยนจากเดิม proxy_requests = yes
ให้เป็น proxy_requests = noควรยกเลิกบาง authorize ที่ไม่ได้ใช้เช่น
authorize {
# preprocess
# chap
# mschap
# suffix
# ldap —> ระบบ ldap
# files –> ระบบ UNIX หรือแฟ้ม /etc/shadow - การแสดงผลรายงานจำเป็นต้องหาโปรแกรมมาต่างหาก
ขอแนะนำตัวอย่างโปรแกรมแสดงผลรายงาน- ต้นแหล่งข้อมูลคือ http://www.tummy.com/radiusContext/
สามารถได้ดาวน์โหลดโปรแกรมได้ที่
ftp://ftp.psu.ac.th/pub/freeradius/radiusContext-1.93.tar.gz - ให้ดาวน์โหลดมาแล้วขยายแฟ้มเก็บไว้ที่ /root ด้วยตัวอย่างคำสั่ง
tar -C /root -zxvf radiusContext-1.93.tar.gz - สร้าง directory สำหรับแสดงผลบนเวบ ดังตัวอย่างคือ
mkdir /var/www/html/radiusreport
จะแสดงผลบนโฮมพจ http://x.x.x.x/radius-report - ตัวอย่าง ขั้นตอนที่ใช้สำหรับประมวลผลรวมข้อมูลจาก
/var/log/radius/radacct ไปเก็บไว้เพื่อแสดงผลที่ /var/www/html/radius-report
*** ภายใน /var/log/radius/radacct จะแยกเก็บข้อมูลเป็น directory ของ
แต่ละหมายเลข ip ทำให้อาจยุ่งยากต่อการรวบรวมข้อมูล/root/radiusContext-1.93/raddetail /var/log/radius/radacct/*/*
/root/radiusContext-1.93/stdreport -D /var/www/html/radius-report*** ต้องใช้คำสั่งเหล่านี้ทุกครั้งเพื่อปรับปรุงผลรายงาน
- ทดสอบผลรายงานได้เลยที่ http://x.x.x.x/radius-report
- ต้นแหล่งข้อมูลคือ http://www.tummy.com/radiusContext/
ที่มา: http://zeous21.exteen.com/20050919/radius-server-freeradius