ติดตั้ง Radius Server แบบใช้ฐานข้อมูล MySql
- freeradius 2.x, MySQL-Server, Apache2, PHP5, phpMyAdmin
1. ติดตั้งด้วยคำสั่ง sudo apt-get install freeradius freeradius-utils freeradius-mysql
2. ทดสอบการทำงานของ radius สามารถทำงานได้หรือไม่ โดยแก้ไขไฟล์ /etc/freeradius/users และเพิ่มท้ายไฟล์ดังนี้
"testradius" Cleartext-Password := "hello"
Reply-Message = "Hello, %{User-Name}"
3. สั่งให้ freeradius ทำงานใหม่ด้วยคำสั่ง service freeradius restart
4. ทดสอบการทำงานด้วยคำสั่ง radtest testradius hello 127.0.0.1 0 testing123 จะได้ข้อความประมาณนี้
Sending Access-Request of id 31 to 127.0.0.1 port 1812
User-Name = "testradius"
User-Password = "hello"
NAS-IP-Address = 192.168.0.12
NAS-Port = 0
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=31, length=39
Reply-Message = "Hello, testradius"
5. ขั้นตอนการทำงานของ 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 {...}
6. ติดตั้ง MySQL Server สำหรับเป็นฐานข้อมูล ด้วยคำสั่ง sudo apt-get install mysql-server
- ขณะติดตั้งระบบจจะถามข้อมูลเกี่ยวกับรหัสผ่านของ Mysql แนะนำให้ใส่เหมือนกันทุกครั้ง
7. ติดตั้ง phpMyAdmin สำหรับเป็นเครื่องมือเข้าจัดการฐานข้อมูล จำเป็นต้องติดตั้ง Apache2 และ PHP5
- ติดตั้งด้วยคำสั่ง sudo apt-get install apache2 php5 php5-common php5-gd php-pear php-db libapache2-mod-php5 php5-mysql
- แก้ปัญหาการแสดง error เตือน ServerName ดูบทความ ติดตั้ง Apache2 บน Ubuntu14.04 LTS
8. ติดตั้ง phpMyAdmin ด้วยคำสั่ง sudo apt-get install phpmyadmin
- เลือกสนับสนุนการทำงานบน apache2 โดยกด space bar ให้ขึ้นเครื่องหมาย * และเลือก OK
- ขณะติดตั้งระบบจะถามข้อมูลเกี่ยวกับรหัสผ่านของการใช้งานโปรแกรมและ MySql แนะนำให้ป้อนเหมือนกับรหัสผ่านของ Mysql Server
- ทดสอบเข้าใช้งาน phpMyAdmin ได้โดยเข้าไปที่ http://ip address/phpmyadmin
9. เพิ่มฐานข้อมูล radius เข้าไปยัง MySql Server
- ใช้คำสั่ง mysql -u root -p ระบบจะถามรหัสผ่าน Mysql ให้ใส่ลงไปตามที่ตั้งค่าไว้
- สร้างฐานข้อมูลโดยใช้คำสั่ง CREATE DATABASE radius;
- ใช้คำสั่ง quit; เพื่อออกจากฐานข้อมูล
10. เพิ่มตารางลงในฐานข้อมูล radius โดยใช้คำสั่ง
- mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql -p
- mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql
11. ปรับแต่ง freeradius เพื่อใช้เชื่อมต่อฐานข้อมูล Mysql แก้ไขไฟล์ /etc/freeradius/sql.conf
(แนะนำให้สร้าง user จัดการฐานข้อมูล radius โดยเฉพาะ)
server = "localhost"
login = "radius"
password = "xxxxxxxx"
radius_db = "radius"
และเอา # หน้า readclients = yes ออก
12. แก้ไขไฟล์ /etc/freeradius/radiusd.conf หาข้อความตามบรรทัดด้านล่าง และเอาเครื่องหมาย # ด้านหน้าออก
modules {
...
...
$INCLUDE sql.conf
$INCLUDE sql/mysql/counter.conf
...
}
13. แก้ไชไฟล์ /etc/freeradius/sites-available/default หาข้อความตามบรรทัดด้านล่าง และเอาเครื่องหมาย # ด้านหน้า sql ออก
authorize {
#files
sql
dailycounter
monthlycounter
noresetcounter
}
accounting {
sql
}
session {
#radutmp ปิดการเช็ค session จากระบบ ให้เช็คจาก sql เท่านั้น
sql
}
แก้ไขไฟล์ /etc/freeradius/sql/mysql/dialup.conf โดยเปิดการทำงานของ simultaneous ดังนี้
#######################################################################
# Simultaneous Use Checking Queries
#######################################################################
simul_count_query = "SELECT COUNT(*) \
FROM ${acct_table1} \
WHERE username = '%{SQL-User-Name}' \
AND acctstoptime IS NULL"
14. สั่ง freeradius ให้เริ่มทำงานใหม่ด้วยคำสั่ง service freeradius restart
15. ทดสอบสร้าง user ผ่านทาง phpMyAdmin ดังตัวอย่าง
16. ทดสอบการทำงานของ radius บนฐานข้อมูล MySql ด้วยคำสั่ง
- radtest user1 password 127.0.0.1 0 testing123
Sending Access-Request of id 142 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password"
NAS-IP-Address = 192.168.0.12
NAS-Port = 0
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=142, length=20
ความคิดเห็น