FreeRADIUS là một ứng dụng RADIUS hiệu suất cao, chấp nhận một số lượng lớn thiết bị mạng dưới dạng Máy khách RADIUS bao gồm Bộ định tuyến MikroTik. Mô-đun FreeRADIUS MySQL giúp lấy thông tin xác thực và ủy quyền người dùng từ máy chủ cơ sở dữ liệu và lưu trữ thông tin kế toán người dùng trong máy chủ cơ sở dữ liệu. Định cấu hình đúng cấu hình và nhóm người dùng MySQL, hạn chế người dùng freeRADIUS có thể dễ dàng được duy trì. Cách định cấu hình nhóm người dùng để áp dụng giới hạn người dùng đã được thảo luận trong bài viết trước của tôi. Trong bài viết này, tôi sẽ thảo luận cách định cấu hình hồ sơ người dùng freeRADIUS để áp dụng giới hạn người dùng hiệu quả hơn.
Cấu hình hồ sơ người dùng FreeRADIUS
Hồ sơ người dùng không là gì ngoài người dùng không có mục nào trong bảng radcheck và radreply nhưng là thành viên của một hoặc nhiều nhóm để giữ các thuộc tính trả lời. Việc gán nhóm cho một cấu hình được thực hiện với bảng radusergroup. AVP nội bộ Hồ sơ người dùng được sử dụng để gán hồ sơ cho người dùng với bảng radcheck. Vì vậy, một cấu hình hồ sơ hoàn chỉnh được thực hiện theo các bước sau.
- Tạo giới hạn người dùng với quản lý nhóm
- Chỉ định nhóm cho người dùng có hồ sơ
- Gán hồ sơ đã tạo cho người dùng
Trong bài viết này, chúng tôi sẽ tạo ba cấu hình sau cho người dùng MikroTik PPPoE theo các bước trên.
Profile Name | Properties |
512k_Profile | Bandwidth 512kbps and IP Pool will be 512k_pool |
1M_Profile | Bandwidth 1Mbps and IP Pool will be 1M_pool |
2M_Profile | Bandwidth 2Mbps and IP Pool will be 2M_pool |
Tạo giới hạn người dùng với quản lý nhóm
Trong freeRADIUS, nhóm được sử dụng để phân loại các thuộc tính kiểm tra và trả lời của người dùng thực sự áp dụng các giới hạn của người dùng. Bảng radgroupcheck chứa các AVP kiểm tra và bảng radgroupreply chứa các AVP trả lời. Vì chúng tôi sẽ tạo ba hồ sơ người dùng, chúng tôi cũng phải tạo ba nhóm. Tên nhóm được đề xuất của chúng tôi và các thuộc tính kiểm tra và trả lời của nó được tóm tắt bằng các bảng sau.
Group Name | Check AVPs | Reply AVPs |
512k | Framed-Protocol to check PPP | MikroTik-Rate-Limit to apply 512kbps bandwidth and Framed-Pool to assign IP to the requested client. |
1M | Framed-Protocol to check PPP | MikroTik-Rate-Limit to apply 1Mbps bandwidth and Framed-Pool to assign IP to the requested client. |
2M | Framed-Protocol to check PPP | MikroTik-Rate-Limit to apply 2Mbps bandwidth and Framed-Pool to assign IP to the requested client. |
Bảng radgroupcheck chứa các AVP kiểm tra nhóm. Vì vậy, chúng ta phải chèn kiểm tra nhóm AVP Framed-Protocol trong bảng radgroupcheck. Các bước sau đây sẽ chỉ ra cách chèn kiểm tra AVP trong bảng radgroupcheck.
- Login to your freeRADIUS Server (I have installed freeRADIUS server on CentOS 7 with MariaDB Database Server) with root user.
- Now login to your Database Server and select your RADIUS database (radius). You should replace your database username and password in the following command.
[root@freeradius ~]# mysql -uroot -pPasskey85 radius
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 243
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.
MariaDB [radius]>
- Issue the following command to insert Framed-Protocol check AVP for 512k group. As we are creating profile for MikroTik PPPoE user, the value of Framed-Protocol attribute should be PPP. MariaDB [radius]> insert into radgroupcheck (groupname,attribute,op,value) values (“512k”,”Framed-Protocol”,”==”,”PPP”);
- Now issue the following command to insert Framed-Protocol AVP for 1M group. MariaDB [radius]> insert into radgroupcheck (groupname,attribute,op,value) values (“1M”,”Framed-Protocol”,”==”,”PPP”);
- Similarly issue the following command to insert Framed-Protocol for 2M group. MariaDB [radius]> insert into radgroupcheck (groupname,attribute,op,value) values (“2M”,”Framed-Protocol”,”==”,”PPP”);
- To show entry in the radgroupreply table, issue the following command.
MariaDB [radius]> select * from radgroupcheck;
+—-+———–+—————–+—-+——-+
| id | groupname | attribute | op | value |
+—-+———–+—————–+—-+——-+
| 1 | 512k | Framed-Protocol | == | PPP |
| 2 | 1M | Framed-Protocol | == | PPP |
| 3 | 2M | Framed-Protocol | == | PPP |
+—-+———–+—————–+—-+——-+
Các mục này đảm bảo rằng trả lời nhóm chỉ áp dụng cho yêu cầu PPP. Sau khi chèn kiểm tra nhóm, bây giờ chúng ta sẽ chèn AVP trả lời nhóm vào bảng radgroupreply. Các bước sau đây sẽ chỉ ra cách chèn AVP trả lời vào bảng radgroupreply.
- Issue the following command to set IP Pool for 512k group user. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“512k”,”Framed-Pool”,”=”,”512k_pool”);
- Similarly, issue the following command to set IP Pool for 1M group user. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“1M”,”Framed-Pool”,”=”,”1M_pool”);
- Again, issue the following command to set IP Pool for 2M group user. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“2M”,”Framed-Pool”,”=”,”2M_pool”);
- Issue the following command to apply bandwidth limit for 512k group. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“512k”,”Mikrotik-Rate-Limit”,”=”,”512k/512k 1M/1M 512k/512k 40/40″);
Tại đây, Mikrotik-Rate-Limit AVP chỉ ra rằng người dùng nhóm 512k sẽ nhận được tốc độ tải lên 512k và tải xuống 512k, tải lên liên tục 1M và tải xuống liên tục 1M, ngưỡng tải lên liên tục 512k và tải xuống 512k và thời gian liên tục là 40 giây cho cả tải lên và tải xuống.
- Similarly, issue the following command to apply bandwidth limit for 1M group user. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“1M”,”Mikrotik-Rate-Limit”,”=”,”1M/1M 2M/2M 1M/1M 40/40″);
- Again, issue the following command to apply bandwidth limit for 1M group user. MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“2M”,”Mikrotik-Rate-Limit”,”=”,”2M/2M 4M/4M 2M/2M 40/40″);
- To show radgroupreply entries, issue the following command.
MariaDB [radius]> select * from radgroupreply;
+—-+———–+———————+—-+———————————+
| id | groupname | attribute | op | value |
+—-+———–+———————+—-+———————————+
| 12 | 512k | Framed-Pool | = | 512k_pool |
| 13 | 1M | Framed-Pool | = | 1M_pool |
| 14 | 2M | Framed-Pool | = | 2M_pool |
| 15 | 512k | Mikrotik-Rate-Limit | = | 512k/512k 1M/1M 512k/512k 40/40 |
| 16 | 1M | Mikrotik-Rate-Limit | = | 1M/1M 2M/2M 1M/1M 40/40 |
| 17 | 2M | Mikrotik-Rate-Limit | = | 2M/2M 4M/4M 2M/2M 40/40 |
+—-+———–+———————+—-+———————————+
Thuộc tính trả lời nhóm được chèn thành công. Bây giờ chúng tôi sẽ chỉ định hồ sơ người dùng mong muốn của chúng tôi cho nhóm.
Gán nhóm cho người dùng giữ hồ sơ
Sau khi tạo nhóm, đã đến lúc gán nhóm cho người dùng. Như đã thảo luận sớm, hồ sơ freeRADIUS là một người dùng nhưng nó không có mục nào trong bảng radcheck và radreply. Vì vậy, ba hồ sơ được đề xuất của chúng tôi (512k_Profile, 1M_Profile và 2M_Profile) là những người dùng hợp lý và chúng tôi sẽ chỉ định những người dùng này vào nhóm theo bảng sau.
Profile Name | Group Name |
512k_Profile | 512k |
1M_Profile | 1M |
2M_Profile | 2M |
Bảng radusergroup chứa ánh xạ người dùng tới nhóm. Vì vậy, chúng tôi cần chèn mục nhập vào bảng radusergroup để ánh xạ hồ sơ và nhóm của chúng tôi. Các bước sau đây sẽ chỉ ra cách ánh xạ biên dạng và nhóm trong bảng radusergroup.
- Issue the following command to map 512k_Profile to 512k group. MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“512k_Profile”,”512k”,10);
- Similarly, issue the following command to map 1M_Profile to 1M group. MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“1M_Profile”,”1M”,10);
- Again, issue the following command to map 2M_Profile to 2M group. MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“2M_Profile”,”2M”,10);
- To show radusergroup table entry, issue the following command.
MariaDB [radius]> select * from radusergroup;
+————–+———–+———-+
| username | groupname | priority |
+————–+———–+———-+
| 512k_Profile | 512k | 10 |
| 1M_Profile | 1M | 10 |
| 2M_Profile | 2M | 10 |
+————–+———–+———-+
Hồ sơ để ánh xạ nhóm đã được hoàn thành. Bây giờ chúng ta sẽ tạo người dùng và gán hồ sơ cho người dùng.
Gán hồ sơ đã tạo cho người dùng
Sau khi tạo hồ sơ người dùng, chúng tôi có thể tạo bao nhiêu người dùng tùy thích và gán hồ sơ của họ với thuộc tính kiểm soát Hồ sơ người dùng để áp dụng giới hạn người dùng. Bảng radcheck chứa thuộc tính kiểm tra người dùng. Vì vậy, để tạo người dùng, chúng ta phải chèn tên người dùng và mật khẩu cũng như thuộc tính kiểm tra người dùng khác trong bảng radcheck. Trong bài viết này, chúng tôi sẽ tạo ba người dùng (bob, alice và tom) và gán hồ sơ của họ với bảng radcheck. Các bước sau đây sẽ chỉ ra cách chèn thuộc tính kiểm tra người dùng trong bảng radcheck.
- To create bob user whose password will be passme, issue the following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“bob”,”Cleartext-Password”,”:=”,”passme”);
- Similarly, to create alice user, issue the following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“alice”,”Cleartext-Password”,”:=”,”passme”);
- Again, to create tom user, issue the following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“tom”,”Cleartext-Password”,”:=”,”passme”);
- Now to assign 512k_Profile to bob user, issue the following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“bob”,”User-Profile”,”:=”,”512k_Profile”);
- Similarly, to assign 1M_Profile to alice user, issue the following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“alice”,”User-Profile”,”:=”,”1M_Profile”);
- Again, to assign 2M_Profile to tom user, issue to following command. MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“tom”,”User-Profile”,”:=”,”2M_Profile”);
- To show radcheck entry, issue the following command.
MariaDB [radius]> select * from radcheck;
+—-+———-+——————–+—-+————–+
| id | username | attribute | op | value |
+—-+———-+——————–+—-+————–+
| 17 | bob | Cleartext-Password | := | passme |
| 18 | alice | Cleartext-Password | := | passme |
| 19 | tom | Cleartext-Password | := | passme |
| 20 | bob | User-Profile | := | 512k_Profile |
| 21 | alice | User-Profile | := | 1M_Profile |
| 22 | tom | User-Profile | := | 2M_Profile |
+—-+———-+——————–+—-+————–+
- To logout from database, issue the quit command.
Chúng tôi đã tạo thành công ba người dùng RADIUS và chỉ định hồ sơ của họ. Bây giờ chúng ta sẽ kiểm tra các thuộc tính đăng nhập và trả lời của những người dùng này bằng chương trình radtest.
FreeRADIUS Kiểm tra Hồ sơ Người dùng với Chương trình radtest
Bây giờ chúng ta sẽ kiểm tra cấu hình hồ sơ người dùng bằng chương trình radtest. Vì vậy, hãy đưa ra lệnh sau để đăng nhập với người dùng bob và kiểm tra thuộc tính trả lời của anh ấy.
[root@freeradius ~]# radtest bob passme 127.0.0.1 100 testing123 1
Sent Access-Request Id 14 from 0.0.0.0:41714 to 127.0.0.1:1812 length 79
User-Name = “bob”
User-Password = “passme”
NAS-IP-Address = 192.168.40.10
NAS-Port = 100
Message-Authenticator = 0x00
Framed-Protocol = PPP
Cleartext-Password = “passme”
Received Access-Accept Id 14 from 127.0.0.1:1812 to 0.0.0.0:0 length 152
Framed-Protocol = PPP
Framed-Compression = Van-Jacobson-TCP-IP
Framed-Pool = “512k_pool”
Mikrotik-Rate-Limit = “512k/512k 1M/1M 512k/512k 40/40”
Nếu mọi thứ đều ổn, chương trình radtest sẽ hiển thị đầu ra abobe. Điều đó có nghĩa là, người dùng bob giờ đây sẽ có thể đăng nhập vào các thiết bị khách freeRADIUS bằng mật khẩu của mình và sau khi đăng nhập thành công, anh ta sẽ nhận được một IP từ 512k_pool và băng thông của anh ta sẽ theo Mikrotik-Rate-Limit AVP.
Tương tự, bạn có thể kiểm tra người dùng alice và tom bằng chương trình radtest và có thể kiểm tra các thuộc tính trả lời của người dùng. Trong bài viết tiếp theo, chúng tôi sẽ kiểm tra hồ sơ người dùng freeRADIUS từ Bộ định tuyến MikroTik nơi Dịch vụ MikroTik PPPoE sẽ có thể truy cập được với những người dùng này.
Nếu bạn gặp bất kỳ sự nhầm lẫn nào để thực hiện đúng các bước trên, hãy xem video bên dưới về MikroTik với Cấu hình hồ sơ người dùng 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ách định cấu hình hồ sơ người dùng freeRADIUS với cơ sở dữ liệu MySQL đã được thảo luận trong bài viết này. Tôi hy vọng bây giờ bạn có thể định cấu hình hồ sơ người dùng freeRADIUS theo yêu cầu tổ chức của bạn. 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ệ .