jj

Raduis Server

Remote Authentication Dial-In User Service (RADIUS) Server เป็นอีก 1 Server ที่ต้องมีในองค์กรใหญ่่ๆ ,บริษัททั่วไป ,ร้าน Internet Cafe ,ร้านกาแฟ ,ISP ผู้ให้บริการ Internet หรือแม้แต่ในหอพัก ที่ต้องการมีระบบ Username และ password ในการ login เข้าสู่ Network หรือ Intrnet ในปัจจุบัน ปกติแล้ว Radius Server จะต้องติดต่อกับอีกอย่างน้อย 2 ส่วนคือ 1) RAS (Remote Access Services) อาจจะเป็น Router,Firewall หรือ Linux Server ก็ได้ และ 2) Database เช่น MySQL, MariaDB, PostgreSQL, SQLite, Microsoft SQL Server, Oracle เป็นต้น คล้ายตามรูปภาพที่แสดงด้านล่าง 

ในที่นี้จะสอนการติดตั้ง Radius Server ใน Linux นะครับ โดยเลือกใช้ตัว FreeRADIUS ติดตั้งบน Linux CentOS 6 โดยให้ radius ใช้ database เป็น mysql และใช้ตัวLinux CentOS 6 เป็น RAS ด้วย ครับ

เริ่มต้นติดตั้งกันเลยครับ ใช้ yum ช่วยเพื่อความง่าย ยังไงตรวจสอบก่อนว่า Linux Server สามารถติดต่อกับ Internet ได้จริง

[root@jodoi-gateway ~]# yum install freeradius freeradius-mysql freeradius-utils mysql-server -y

ทำการ Start mysql

[root@jodoi-gateway ~]# service mysqld start
Starting mysqld: [ OK ]
หรือ

[root@jodoi-gateway ~]# /etc/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
ถ้าไม่ติดปัญหาอะไรต้องสามารถ Start mysql ได้นะครับ ถ้าผ่านก็ไปขั้นตอนต่อไป

ต่อไปเป็นการสร้าง DATABASE ที่ชื่อ radius ให้ทำการเข้าสู่ mode ของ mysql โดยการพิมพ์ mysql หรือถ้าตั้ง password ของ mysql ไว้ ให้พิมพ์ mysql - p ดังนี้

[root@jodoi-gateway ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

ทำการสร้าง database radius ด้วย command create

mysql> create database radius ;
Query OK, 1 row affected (0.00 sec)
ตรวจสอบว่ามี database radius ขึ้นมาหรือยัง

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | 
| mysql |
| radius |
| test |
+--------------------+
4 rows in set (0.00 sec)

mysql>

ทำการกำหนดสิทธิให้กับ user radius

mysql> GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "radpass";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

ขั้นตอนต่อไปนำตารางใส่ใน database radius

mysql> use radius;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SOURCE /etc/raddb/sql/mysql/schema.sql

mysql> exit
Bye
[root@jodoi-gateway ~]#

ขั้นต่อไปตรวจสอบและแก้ไข file sql.conf ดังนี้

[root@jodoi-gateway ~]# vi /etc/raddb/sql.conf

################################################

sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = "mysql"

#
# Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"

# Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "radpass"

# Database table configuration for everything except Oracle
radius_db = "radius"

:wq!
################################################

ขั้นต่อไปตรวจสอบและแก้ไข file radiusd.conf ดังนี้

[root@jodoi-gateway ~]# vi /etc/raddb/radiusd.conf

################################################

#
$INCLUDE sql.conf

#
:wq!

#################################################

ขั้นต่อไปเข้าไปแก้ไข /etc/raddb/sites-available/default

[root@jodoi-gateway ~]# vi /etc/raddb/sites-available/default

ให้เอา comment ที่อยู่หน้าคำว่า sql ที่อยู่ในส่วนของ authorize{} , accounting {} และ session {} ออก

เช่น

# See "Authorization Queries" in sql.conf
# sql

เปลี่ยนเป็น

# See "Authorization Queries" in sql.conf
sql

:wq!

##################################################

ขั้นต่อไปให้แก้ไข file /etc/raddb/sites-available/inner-tunnel

[root@jodoi-gateway ~]# vi /etc/raddb/sites-available/inner-tunnel

ให้เอา comment ที่อยู่หน้าคำว่า sql ที่อยู่ในส่วนของ authorize {} และ session {} ออก

เช่น

# See "Authorization Queries" in sql.conf
sql

:wq!

###################################################

ขั้นต่อไปให้ไปเปลี่ยนค่า secret ของ file /etc/raddb/clients.conf

[root@jodoi-gateway ~]# vi /etc/raddb/clients.conf

# secret = testing123

เป็น

secret = jodoi12

:wq!

######################################################

ทำการสั่ง start radius

[root@jodoi-gateway ~]# service radiusd start
Starting radiusd: [ OK ]
หรือ[root@jodoi-gateway ~]# /etc/init.d/radiusd restart
Stopping radiusd: [ OK ]
Starting radiusd: [ OK ]


[root@jodoi-gateway ~]# netstat -anp|grep radius 
udp 0 0 0.0.0.0:1812 0.0.0.0:* 5166/radiusd 
udp 0 0 0.0.0.0:1813 0.0.0.0:* 5166/radiusd 
udp 0 0 0.0.0.0:1814 0.0.0.0:* 5166/radiusd 
udp 0 0 0.0.0.0:48692 0.0.0.0:* 5166/radiusd 
udp 0 0 127.0.0.1:18120 0.0.0.0:* 5166/radiusd 
unix 2 [ ACC ] STREAM LISTENING 43169 5166/radiusd /var/run/radiusd/radiusd.sock
unix 3 [ ] STREAM CONNECTED 43164 5166/radiusd 
unix 3 [ ] STREAM CONNECTED 43162 5166/radiusd 
unix 3 [ ] STREAM CONNECTED 43160 5166/radiusd 
unix 3 [ ] STREAM CONNECTED 43158 5166/radiusd 
unix 3 [ ] STREAM CONNECTED 43156 5166/radiusd

ถ้า start ไม่ได้ ให้ตรวจสอบด้วย radiusd -X ว่าปัญหาเกิดจากอะไร แก้ปัญหาจนกว่าจะทำการ Start ได้

ขั้นต่อไปทำการทดสอบเพิ่ม user jodoi password 123456 ลงใน database radius เพื่อทดสอบ

[root@jodoi-gateway ~]# mysql -p
mysql > use radius;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`) VALUES (1,'jodoi','User-Password',':=','123456');

Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
[root@jodoi-gateway ~]#

 

ต่อไปเป็นการทดสอบว่า radius สามารถคุยกับ User ที่มีอยู่ใน database radius ของ mysql ได้หรือไม่ ด้วยการใช้ command radtest ถ้าถูกต้องผลที่ได้ต้องขึ้นAccess-Accept ดังด้านล่าง

[root@jodoi-gateway ~]# radtest jodoi 123456 127.0.0.1 0 jodoi12
Sending Access-Request of id 133 to 127.0.0.1 port 1812
User-Name = "jodoi"
User-Password = "123456"
NAS-IP-Address = 54.183.52.48
NAS-Port = 0
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=133, length=20

 

ถ้าทำได้ดังนี้ถือว่าประสบความสำเร็จแล้ว radius server สามารถใช้ไงานได้แล้วครับ

 

หวังว่าบทความนี้คงจะเป็นประโยชน์ไม่มากก็น้อย ขอบคุณครับ

Mr.Jodoi ( อาจารย์เกรียงศักดิ์ นามโคตร ( อ.ดอย) )

 

More About us

"Jodoi The Best IT in Thailand" ศูนย์ฝึกอบรม Network และ IT เป็นบริษัทที่เป็นศูนย์อบรม และจัดจำหน่ายคอมพิวเตอร์ ระบบ Network และไอทีครบวงจร อันดับ 1 ของเมืองไทย

 

Facebook

นายเกรียงศักดิ์ นามโคตร (อาจารย์ดอย) ผู้ก่อตั้งบริษัท โจดอย ไอทีแอนด์เซอร์วิส จำกัด เจ้าของแบนด์โจดอย (JODOI) และเจ้าของสโลแกน " โจดอยทำได้ คุณก็ต้องทำได้ " รูัจัก อาจารย์ดอยมากขึ้น more

 

Contact Us

Mr. Kriangsak namkot
Mobile:081-9165773
E-mail:joodi@jodoi.com