วันอังคารที่ 10 มกราคม พ.ศ. 2560

ติดตั้งและทดสอบ FreeRADIUS บน CentOS

วิธีติดตั้ง 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


ใช้คำสั่ง ps เพื่อ ตรวจสอบ process ของ radiusd

 
[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

เคตดิต : ลิงค์
 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น