FreeRADIUS là một bộ RADIUS mô-đun. Rất nhiều mô-đun như Perl, python, MySQL, v.v. có thể được tích hợp với freeRADIUS để làm phong phú thêm các tính năng của freeRADIUS. MySQL là một trong những nguồn người dùng và máy khách tốt nhất trong máy chủ freeRADIUS. Một trong những lợi thế quan trọng của MySQL với máy chủ freeRADIUS là MySQL có thể dễ dàng được kiểm soát bằng nhiều ngôn ngữ lập trình bao gồm cả PHP. Vì vậy, người dùng freeRADIUS và xác thực, ủy quyền và kế toán của họ có thể dễ dàng được kiểm soát bằng đồ họa bằng cách sử dụng cơ sở dữ liệu MySQL và ngôn ngữ PHP. Trong bài viết trước của tôi, tôi đã thảo luận về cách cài đặt và định cấu hình freeRADIUS trên bản phân phối CentOS 7 Linux và cách định cấu hình MikroTik Radius để sử dụng freeRADIUS làm máy chủ MikroTik RADIUS. Trong bài viết này, tôi sẽ thảo luận cách định cấu hình mô-đun freeRADIUS MySQL (gói freeradius-mysql) với cơ sở dữ liệu MariaDB.
FreeRADIUS với cơ sở dữ liệu MySQL (MariaDB)
Để làm việc với cơ sở dữ liệu MySQL, freeRADIUS cung cấp gói freeradius-mysql chứa tệp cấu hình cần thiết và truy vấn SQL. Vì vậy, chúng tôi phải cài đặt gói freeradius-mysql với gói máy chủ freeradius của chúng tôi. Để kiểm tra xem gói freeradius-mysql đã được cài đặt hay chưa, hãy đăng nhập vào máy chủ CentOS của bạn với người dùng root và đưa ra lệnh sau từ dấu nhắc lệnh của bạn.
[root@freeradius ~]# rpm -qa | grep freeradius
freeradius-utils-3.0.13-9.el7_5.x86_64
freeradius-perl-3.0.13-9.el7_5.x86_64
freeradius-3.0.13-9.el7_5.x86_64
freeradius-mysql-3.0.13-9.el7_5.x86_64
Danh sách trên cho thấy gói freeradius-mysql được cài đặt với máy chủ freeradius. Nếu bạn không tìm thấy gói freeradius-mysql trong danh sách này, hãy thực hiện lệnh sau để cài đặt gói freeradius-mysql.
[root@freeradius ~]# yum install freeradius-mysql -y
Gói freeradius-mysql hiện đã có trong hệ thống của bạn. Trong phần tiếp theo, chúng tôi sẽ cài đặt và định cấu hình cơ sở dữ liệu MariaDB trong bản phân phối Linux CentOS 7 của chúng tôi.
Cài đặt và cấu hình cơ sở dữ liệu MariaDB
MariaDB là một máy chủ cơ sở dữ liệu nguồn mở và phổ biến nhất được tạo bởi các nhà phát triển ban đầu của MySQL, đặc biệt là các nhà phát triển Wikipedia, WordPress và Google. Để cài đặt máy chủ cơ sở dữ liệu MariaDB trong CentOS Linux của bạn, hãy nhập lệnh sau từ thiết bị đầu cuối CentOS 7 của bạn.
[root@freeradius ~]# yum install mariadb mariadb-server –y
Gói MariaDB sẽ được cài đặt trong vòng vài giây. Để đảm bảo nó được cài đặt thành công, hãy đưa ra lệnh sau từ dấu nhắc lệnh.
root@freeradius ~]# rpm -qa | grep mariadb
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64
Đó là mong muốn rằng bạn sẽ tìm thấy danh sách trên. Nếu vậy, hãy khởi động dịch vụ MariaDB và cho phép tự động khởi động dịch vụ MariaDB trong mỗi lần khởi động lại bằng lệnh sau.
[root@freeradius ~]# systemctl start mariadb
[root@freeradius ~]# systemctl enable mariadb
Bạn có thể kiểm tra trạng thái MariaDB của mình bất kỳ lúc nào bằng lệnh sau.
[root@freeradius ~]# systemctl status mariadb
- mariadb.service – MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor et: disabled)
Active: active (running) since Thu 2018-12-13 18:11:15 EST; 1 day 8h ago
Process: 21380 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 21348 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exite d, status=0/SUCCESS)
Main PID: 21379 (mysqld_safe)
Tasks: 20
CGroup: /system.slice/mariadb.service
├─21379 /bin/sh /usr/bin/mysqld_safe –basedir=/usr
└─21542 /usr/libexec/mysqld –basedir=/usr –datadir=/var/lib/mysq…
Để cho phép truy cập từ xa vào máy chủ mysql (mariadb) của bạn bằng ứng dụng của bên thứ ba, bạn nên cho phép dịch vụ mysql (để mở cổng 3306) từ tường lửa của mình bằng lệnh sau. Hãy nhớ rằng điều này sẽ mở cổng 3306 cho tất cả các IP.
root@freeradius ~]# firewall-cmd –zone=public –add-service=mysql
[root@freeradius ~]# firewall-cmd –zone=public –permanent –add-service=mysql
Thiết lập mật khẩu root MySQL
Theo mặc định, MariaDB không đặt mật khẩu người dùng gốc. Nhưng để bảo mật mariadb, chúng ta phải thiết lập mật khẩu người dùng root. Để đặt mật khẩu người dùng root, hãy chạy lệnh sau từ thiết bị đầu cuối của bạn và làm theo hướng dẫn
[root@webserver~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): ## Press Enter ##
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] ## Press Enter ##
New password: ## Enter new password ##
Re-enter new password: ## Re-enter new password ##
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] ## Press Enter ##
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] ## Press Enter ##
… Success!
By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] ## Press Enter ##
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] ## Press Enter ##
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Mật khẩu người dùng gốc đã được đặt và cơ sở dữ liệu MariaDB của bạn hiện được bảo mật. Nếu bạn muốn cho phép đăng nhập root từ xa, hãy cung cấp không tại Không cho phép đăng nhập root từ xa? [Y/n] tùy chọn.
Đăng nhập vào máy chủ MariaDB bằng mật khẩu người dùng root bằng lệnh sau.
[root@freeradius ~]# mysql -uroot -pPasskey85
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
Sau khi đăng nhập, bạn có thể xem cơ sở dữ liệu có sẵn bằng lệnh sau.
MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
+——————–+
3 rows in set (0.00 sec)
Bạn sẽ tìm thấy cơ sở dữ liệu và lược đồ mặc định. Bây giờ chúng ta sẽ tạo một cơ sở dữ liệu mới sẽ được máy chủ freeRADIUS sử dụng để lấy thông tin người dùng và lưu giữ thông tin kế toán. Đưa ra lệnh sau để tạo cơ sở dữ liệu mới có tên là bán kính trong cơ sở dữ liệu MariaDB.
MariaDB [(none)]> create database radius;
Query OK, 1 row affected (0.00 sec)
Bây giờ bạn sẽ tìm thấy cơ sở dữ liệu đã tạo trong máy chủ cơ sở dữ liệu của mình.
MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| radius |
+——————–+
4 rows in set (0.00 sec)
Để đăng xuất khỏi cơ sở dữ liệu của bạn, chỉ cần đưa ra lệnh thoát.
MariaDB [(none)]> quit
Bye
Sau khi tạo cơ sở dữ liệu, chúng ta cần tạo các bảng cơ sở dữ liệu sẽ được máy chủ freeRADIUS sử dụng để tìm người dùng và máy khách RADIUS cũng như để lưu trữ dữ liệu kế toán. May mắn thay, gói MySQL freeRADIUS cung cấp truy vấn cần thiết để tạo các bảng cần thiết trong tệp schema.sql. Tệp schema.sql sẽ được tìm thấy tại thư mục mods-config/sql/main/mysql. Vì vậy, hãy thực hiện lệnh sau để tạo các bảng cần thiết trong cơ sở dữ liệu bán kính.
Sau khi tạo các bảng, chúng ta cần tạo một người dùng cơ sở dữ liệu có thể đọc dữ liệu xác thực và ủy quyền cũng như có thể ghi dữ liệu kế toán. Gói FreeRADIUS MySQL cũng cung cấp truy vấn cần thiết để tạo người dùng cơ sở dữ liệu và quyền của nó trong setup.sql. Tệp này cũng sẽ được tìm thấy tại thư mục mods-config/sql/main/mysql. Vì vậy, hãy đưa ra lệnh sau để tạo người dùng cơ sở dữ liệu và cung cấp quyền cần thiết.
Tên người dùng và mật khẩu mặc định được xác định trong setup.sql lần lượt là bán kính và radpass. Nếu muốn, bạn có thể thay đổi tên người dùng và mật khẩu này bằng cách chỉnh sửa tệp này.
Nếu bạn muốn xem các bảng đã tạo trong cơ sở dữ liệu của mình, hãy đăng nhập vào Máy chủ MariaDB và chọn cơ sở dữ liệu bán kính, sau đó đưa ra lệnh sau.
[root@freeradius ~]# mysql -uroot -pPasskey85 radius
MariaDB [radius]> show tables;
+——————+
| Tables_in_radius |
+——————+
| nas |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radpostauth |
| radreply |
| radusergroup |
+——————+
8 rows in set (0.00 sec)
Bạn cũng có thể xem các cột được xác định trong bảng bằng lệnh sau.
MariaDB [radius]> show columns from nas;
+————-+————–+——+—–+—————+—————-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+—————+—————-+
| id | int(10) | NO | PRI | NULL | auto_increment |
| nasname | varchar(128) | NO | MUL | NULL | |
| shortname | varchar(32) | YES | | NULL | |
| type | varchar(30) | YES | | other | |
| ports | int(5) | YES | | NULL | |
| secret | varchar(60) | NO | | secret | |
| server | varchar(64) | YES | | NULL | |
| community | varchar(50) | YES | | NULL | |
| description | varchar(200) | YES | | RADIUS Client | |
+————-+————–+——+—–+—————+—————-+
9 rows in set (0.00 sec)
Sau khi tạo cơ sở dữ liệu, người dùng cơ sở dữ liệu và các bảng, bây giờ chúng ta sẽ tạo một người dùng RADIUS sẽ được xác thực và ủy quyền. Bảng radchek giữ tên người dùng và mật khẩu của người dùng. Vì vậy, hãy đưa ra lệnh sau để tạo người dùng bán kính.
Bảng raradreply giữ thông tin ủy quyền của người dùng. Vì người dùng bob đã tạo của chúng tôi sẽ được sử dụng để đăng nhập vào Bộ định tuyến MikroTik, chúng tôi sẽ chỉ định quyền cho nhóm của anh ấy sau khi đăng nhập thành công bằng lệnh sau.
Bây giờ hãy ra lệnh thoát để đăng xuất khỏi cơ sở dữ liệu.
MariaDB [(none)]> quit
Bye
Vì vậy, cho đến bây giờ chúng tôi đã cài đặt máy chủ cơ sở dữ liệu MariaDB, tạo cơ sở dữ liệu và các bảng cần thiết, sau đó tạo người dùng thử nghiệm. Bây giờ chúng ta sẽ định cấu hình máy chủ freeRADIUS để freeRADIUS có thể truy vấn thông tin người dùng và máy khách của nó từ máy chủ cơ sở dữ liệu.
Định cấu hình FreeRADIUS để sử dụng MySQL
Sau khi cấu hình cơ sở dữ liệu, đã đến lúc cấu hình máy chủ freeRADIUS để nó có thể sử dụng máy chủ cơ sở dữ liệu. Cấu hình cơ sở dữ liệu MySQL được định nghĩa trong tệp sql nằm trong thư mục mods-available. Vì vậy, hãy mở tệp sql và chỉnh sửa các tùy chọn sau trong tệp này.
[root@freeradius raddb]# vim mods-available/sql
driver = “rlm_sql_mysql”
dialect = “mysql”
server = “localhost”
port = 3306
login = “radius”
password = “radpass”
read_clients = yes
Nếu bạn thay đổi tên người dùng (đăng nhập) và mật khẩu trong tệp setup.sql, đừng quên thay đổi cả ở đây. Bây giờ tạo liên kết mềm cho các mô-đun sql trong thư mục kích hoạt mod để freeRADIUS coi mysql là một mô-đun đã bật bằng các lệnh sau.
[root@freeradius raddb]# cd mods-enabled/
[root@freeradius mods-enabled]# ln -s ../mods-available/sql sql
Mô-đun MySQL hiện đã được bật. Bây giờ chúng ta sẽ định cấu hình trang đang hoạt động để sử dụng MySQL.
Cấu hình trang web đang hoạt động để hỗ trợ sql
Sau khi bật mô-đun MySQL, đã đến lúc định cấu hình trang đang hoạt động để sử dụng MySQL. Vì vậy, hãy mở tệp trang web có sẵn/mặc định (Tôi đang sử dụng trang mặc định. Nếu bạn sử dụng trang tùy chỉnh, hãy bật sql trên trang tùy chỉnh của bạn ở các phần sau) và bật sql ở các phần sau.
- Uncomment the line containing sql in the authorize{} section.
- Uncomment the line saying ‘sql’ in the accounting{} section to tell FreeRADIUS to store accounting records in SQL as well.
- Add or uncomment ‘sql’ to the session{} section if you want to do Simultaneous-Use detection.
- Add or uncomment ‘sql’ to the post-auth{} section if you want to log all Authentication attempts to SQL.
- Add or uncomment ‘sql’ to the Post-Auth-Type REJECT{} section.
Ngoài ra, hãy chỉnh sửa các trang web có sẵn/đường hầm bên trong và bỏ ghi chú dòng chứa ‘sql’ trong phần “ủy quyền {}”.
Cấu hình FreeRADIUS để sử dụng MySQL đã hoàn tất. Bây giờ hãy khởi động lại máy chủ freeRADIUS của bạn để tải mô-đun MySQL và kiểm tra cấu hình freeRADIUS và MySQL của bạn.
FreeRADIUS với Thử nghiệm MySQL
Localhost (127.0.0.1) là máy khách bán kính mặc định cho Máy chủ RADIUS miễn phí. Vì vậy, chúng ta có thể kiểm tra cấu hình freeRADIUS bằng chương trình radtest từ localhost. Đưa ra lệnh sau để kiểm tra người dùng bob.
[root@freeradius raddb]# radtest bob password 127.0.0.1 100 testing123
Sent Access-Request Id 229 from 0.0.0.0:42190 to 127.0.0.1:1812 length 76
User-Name = “bob”
User-Password = “password”
NAS-IP-Address = 192.168.40.10
NAS-Port = 100
Message-Authenticator = 0x00
Cleartext-Password = “password”
Received Access-Accept Id 229 from 127.0.0.1:1812 to 0.0.0.0:0 length 32
Mikrotik-Group = “full”
Nếu mọi thứ đều ổn, bạn sẽ tìm thấy phản hồi ở trên từ chương trình radtest của mình. Điều đó có nghĩa là mô-đun freeRADIUS và MySQL đang hoạt động tốt. Bây giờ chúng tôi sẽ kiểm tra người dùng này từ Bộ định tuyến MikroTik.
Bộ định tuyến MikroTik với máy chủ FreeRADIUS và MySQL
Bây giờ, chúng tôi sẽ thêm Bộ định tuyến MikroTik (IP: 192.168.40.8) làm thiết bị NAS và sau đó xác minh người dùng thử nghiệm của chúng tôi từ thông tin đăng nhập MikroTik. Bảng nas giữ thông tin cần thiết cho máy khách RADIUS. Vì vậy, hãy đăng nhập vào máy chủ MariaDB và chọn cơ sở dữ liệu bán kính, sau đó đưa ra lệnh sau để thêm Bộ định tuyến MikroTik làm máy khách RADIUS.
[root@freeradius ~]# mysql -uroot -pPasskey85 radius
MariaDB [radius]> insert into nas (nasname,shortname,type,ports,secret,server,community,description) values(‘192.168.40.8’, ‘mikrotik-client’, ‘other’, NULL,’Passkey@85′,NULL,NULL,’MikroTik Client Router’);
MariaDB [(none)]> quit
Bye
Sau khi lắp thiết bị nas, đảm bảo khởi động lại máy chủ freeRADIUS. Nếu không, thông tin máy khách RADIUS sẽ không được cập nhật.
Cách định cấu hình Bán kính MikroTik để kết nối với Máy chủ freeRADIUS và cách định cấu hình đăng nhập MikroTik với người dùng freeRADIUS đã được thảo luận trong bài viết trước của tôi. Nếu bạn là người mới sử dụng MikroTik với FreeRADIUS Server, hãy đọc kỹ bài viết đó và kiểm tra người dùng bob từ Đăng nhập MikroTik của bạn. Nếu mọi thứ đều ổn, bạn sẽ có thể đăng nhập bằng người dùng cơ sở dữ liệu từ dấu nhắc đăng nhập của mình.
Trong bài này tôi chỉ trình bày cách cài đặt và cấu hình freeRADIUS với cơ sở dữ liệu MySQL(MariaDB). Trong phần tiếp theo, tôi sẽ trình bày cách tạo nhóm người dùng trong MySQL và áp dụng giới hạn người dùng theo nhóm .
Nếu bạn gặp phải bất kỳ sự nhầm lẫn nào để thực hiện đúng quy trình trên, hãy xem video bên dưới về cấu hình mô-đun MySQL của freeRADIUS . Tôi hy vọng nó sẽ làm giảm bất kỳ sự nhầm lẫn của bạn.
Cấu hình MikroTik Radius với freeRADIUS và MySQL (MariaDB) đã được thảo luận trong bài viết này. Tôi hy vọng bây giờ bạn sẽ có thể định cấu hình freeRADIUS với Máy chủ MySQL và có thể kết nối Bộ định tuyến MikroTik với freeRADIUS và Máy chủ MySQL. Tuy nhiên, nếu bạn gặp phải bất kỳ sự nhầm lẫn nào, vui lòng thảo luận trong nhận xét hoặc liên hệ với tôi từ trang Liên hệ .