วิธีติดตั้ง radius server ด้วยโปรแกรม freeradius
1.[root@fc11-64a certs]#yum 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
[root@fc11-64a certs]# ps -ef | grep radiusd
radiusd 1772 1 0 12:23 ? 00:00:00 /usr/sbin/radiusd
root 1783 1393 0 12:23 pts/0 00:00:00 grep radiusd
ใช้คำสั่ง netstat เพื่อตรวจสอบพอร์ตของ radiusd ที่ใช้
[root@fc11-64a raddb]# netstat -a | grep udp
...
udp 0 0 *:radius *:*
udp 0 0 *:radius-acct *:*
udp 0 0 *:tdp-suite *:*
โดยดีฟอลต์ของ FreeRADIUS จะใช้พอร์ต UDP 1812, 1813, 1814 ในการทำงาน
ดูการ map ชื่อพอร์ตและเลขหมายของพอร์ตในไฟล์ /etc/services
[root@fc11-64a ~]# cat /etc/services
...
radius 1812/udp # Radius
radius-acct 1813/udp radacct # Radius Accounting
tdp-suite 1814/udp # TDP Suite
ทดสอบด้วย radtest
จากการติดตั้ง freeradius-utils จะมีโปรแกรม radius client มาให้ด้วย คำสั่งหนึ่งที่ใช้ในการทดสอบอย่างง่ายๆ คือ radtest
[root@fc11-64a ~]# radtest
Usage: radtest user passwd radius-server[:port] nas-port-number secret [ppphint] [nasname]
พารามิเตอร์ที่ต้องระบุในการใช้คำสั่ง radtest คือ
- user ชื่อ username ที่ต้องการ authenticate
- passwd รหัสผ่าน password สำหรับ username
- radius-server เป็น IP Address ของเครื่องที่รัน radiusd ทำหน้าที่เป็น RADIUS Server
- nas-port-number ระบุหมายเลขพอร์ต สำหรับการทดสอบจะใช้เป็นตัวเลขอะไรก็ได้
- secret เป็น shared secret เพื่อต้องระบุใน RADIUS Server เพื่อเป็นการอนุญาตว่า เครื่อง RADIUS Client ใดสามารถมา authenticate ได้บ้าง
ทดสอบการส่ง user, password ไปยัง radius server ที่ติดตั้ง ในที่นนี้ทดสอบบนเครื่องเดียวกัน ระบุเป็น 127.0.0.1
[root@fc11-64a ~]# radtest user1 password1 127.0.0.1 1 secret1
Sending Access-Request of id 207 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password1"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=207, length=20
rad_verify: Received Access-Reject packet from client 127.0.0.1 port 1812 with invalid signature (err=2)! (Shared secret is incorrect.)
Sending Access-Request of id 207 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password1"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=207, length=20
rad_verify: Received Access-Reject packet from client 127.0.0.1 port 1812 with invalid signature (err=2)! (Shared secret is incorrect.)
Sending Access-Request of id 207 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password1"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=207, length=20
rad_verify: Received Access-Reject packet from client 127.0.0.1 port 1812 with invalid signature (err=2)! (Shared secret is incorrect.)
radclient: no response from server for ID 207 socket 3
ผลจากการรันคำสั่ง radtest จะฟ้อง “Access-Reject” เนื่องจาก “Shared secret is incorrect”
การแก้ไข คือต้องระบุ shared secret ให้ถูกต้อง
ในไฟล์ /etc/raddb/clients.conf จะมีคอนฟิกระบุ เครื่อง client ที่สามารถส่งข้อมูลมา authenticate ได้ แต่ต้องระบุ shared secret ให้ถูกต้อง
หากตัดส่วน comment “#” ออก ดีฟอลต์จากการติดตั้ง จะมีคอนฟิกสำหรับเครื่อง localhost ดังนี้
client localhost {
ipaddr = 127.0.0.1
secret = testing123
require_message_authenticator = no
nastype = other
}
จากคอนฟิก แปลว่าหากมีการส่ง request จากเครื่อง localhost หรือ 127.0.01 ต้องระบุ shared secret เป็น testing123 จึงจะใช้ server ได้
ทดสอบคำสั่ง radtest ด้วย shared secret ที่ถูกต้อง
[root@fc11-64a ~]# radtest user1 password1 127.0.0.1 1 testing123
Sending Access-Request of id 58 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password1"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=58, length=20
ผลการรันยังคงได้เป็น “Access-Reject” อยู่ เนื่องจาก ไม่มี username ที่ใช้ใน Server
ดีฟอลต์คอนฟิกเบื้องต้น จะเก็บไฟล์ username, password ไว้ในไฟล์ /etc/raddb/users โดยมีบรรทัดสุดท้ายอธิบายว่า ถ้าไม่ match หรือไม่มี username, password ที่คอนฟิกไว้ จะ denied การใช้งาน
# On no match, the user is denied access.
แก้ไขไฟล์ /etc/raddb/users โดยเพิ่ม username, password ที่ต้องการ
...
user1 Cleartext-Password := "password1"
Reply-Message = "Hello, %{User-Name}"
# On no match, the user is denied access.
ใช้คำสั่ง service เพื่อรีโหลดคอนฟิกของ radius ใหม่
[root@fc11-64a ~]# service radiusd reload
Reloading RADIUS server: [ OK ]
ทดสอบคำสั่ง radtest โดยระบุ user, password ที่ถูกต้องจากไฟล์ /etc/raddb/users จะได้รับ “Access-Accept”
[root@fc11-64a raddb]# radtest user1 password1 127.0.0.1 1 testing123
Sending Access-Request of id 49 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password1"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=49, length=34
Reply-Message = "Hello, user1"
ทดสอบด้วย user ที่มีอยู่ในไฟล์ /etc/raddb/users แต่ระบุ password ผิด จะได้รับ “Access-Reject” แต่จะได้ “Reply-Message” ของ username นั้น กลับมาด้วย
[root@fc11-64a raddb]# radtest user1 password2 127.0.0.1 1 testing123
Sending Access-Request of id 76 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "password2"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=76, length=34
Reply-Message = "Hello, user1"
ทดสอบด้วย user ที่ไม่มีอยู่ในไฟล์ /etc/raddb/users จะได้รับ “Access-Reject”
[root@fc11-64a raddb]# radtest user2 password2 127.0.0.1 1 testing123
Sending Access-Request of id 91 to 127.0.0.1 port 1812
User-Name = "user2"
User-Password = "password2"
NAS-IP-Address = 192.168.1.1
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=91, length=20
เคตดิต : ลิงค์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น