Quản lý nhóm người dùng FreeRADIUS với MySQL

FreeRADIUS là Máy chủ RADIUS hiệu suất cao. Một số thiết bị mạng có thể được sử dụng với máy chủ RADIUS miễn phí dưới dạng Máy khách RADIUS bao gồm Bộ định tuyến MikroTik. Là một bộ RADIUS mô-đun, freeRADIUS chấp nhận mô-đun MySQL để truy vấn xác thực và ủy quyền người dùng cũng như lưu trữ dữ liệu kế toán. 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 mô-đun FreeRADIUS MySQL . Tôi cũng đã thảo luận về cách xác thực Đăng nhập MikroTik với người dùng MySQL freeRADIUS. Trong bài viết này, chúng ta sẽ nói về cách định cấu hình nhóm người dùng trong mô-đun MySQL để phân loại các thuộc tính trả lời của người dùng freeRADIUS.

Nhóm người dùng FreeRADIUS

Nhóm được sử dụng để phân loại một số thuộc tính sẽ được áp dụng cho một số người dùng. Trong freeRADIUS, các thuộc tính này được gọi là AVP. Vì vậy, trước khi đi cấu hình nhóm người dùng, chúng ta nên có khái niệm rõ ràng về freeRADIUS AVP.

Cặp giá trị thuộc tính (AVP)

AVP là con ngựa của Giao thức RADIUS. Giao tiếp giữa Máy chủ RADIUS và Máy khách RADIUS được thực hiện dựa trên AVP. AVP có thể được phân loại thuộc tính kiểm tra hoặc trả lời. Kiểm tra các thuộc tính được gửi từ máy khách đến máy chủ. Thuộc tính trả lời được gửi từ máy chủ đến máy khách.

Các thuộc tính đóng vai trò là phương tiện mang thông tin giữa Máy khách và Máy chủ RADIUS. RADIUS Client cung cấp thông tin về chính nó cũng như người dùng kết nối qua nó bằng AVP. Máy chủ RADIUS cũng sử dụng AVP để trả lời máy khách. Sau đó, Máy khách có thể sử dụng phản hồi này để kiểm soát kết nối của người dùng dựa trên các AVP nhận được trong phản hồi của máy chủ.

Mỗi thiết bị máy khách RADIUS (NAS) chẳng hạn như Bộ định tuyến MikroTik có các thuộc tính riêng được gọi là Thuộc tính dành riêng cho nhà cung cấp (VSA) được sử dụng trong các gói Yêu cầu truy cập và Chấp nhận truy cập. Ví dụ: khi Bộ định tuyến MikroTik muốn xác thực người dùng từ Máy chủ freeRADIUS, nó sẽ gửi các gói Yêu cầu truy cập với AVP Tên người dùng và Mật khẩu người dùng . Nếu freeRADIUS có thể xác thực người dùng này, nó sẽ trả lời bằng các thuộc tính trả lời đã xác định (chẳng hạn như MikroTik-Group ) cho người dùng này. Ánh xạ giữa giao tiếp thuộc tính Máy chủ và Máy khách được thực hiện bởi Từ điển. Từ điển cho các nhà cung cấp khác nhau được tải từ thư mục / usr/share/freeradius khi freeRADIUS khởi động.

Máy chủ freeRADIUS cũng có các thuộc tính riêng được gọi là Từ điển nội bộ freeRADIUS. Các thuộc tính này được sử dụng để thực hiện quy trình nội bộ của máy chủ RADIUS miễn phí và máy khách RADIUS không thể sử dụng được. Ví dụ, Cleartext-Password AVP được sử dụng để gán mật khẩu người dùng và User-Profile được sử dụng để tạo hồ sơ người dùng trong freeRADIUS và cả hai thuộc tính này đều là thuộc tính nội bộ của freeRADIUS.

Quản lý nhóm FreeRADIUS với cơ sở dữ liệu MySQL

Cơ sở dữ liệu SQL cho phép định nghĩa các thuộc tính kiểm tra và trả lời cho các nhóm. Các thuộc tính kiểm tra được lưu trữ trong bảng radgroupcheck và các thuộc tính trả lời được lưu trữ trong bảng radgroupreply.

Người dùng Radius có thể được gán cho 0 hoặc nhiều nhóm. Các nhóm được chỉ định thông qua bảng radusergroup. Một mục trong bảng này chỉ định mức độ ưu tiên của một nhóm nhất định cho người dùng. Điều này cho phép các giá trị mục nhất định trong nhóm có mức độ ưu tiên cao hơn (giá trị nhỏ hơn) ghi đè giá trị mục trong nhóm có mức độ ưu tiên thấp hơn (giá trị lớn hơn).

Với suy nghĩ này, chúng tôi sẽ thực hiện một ví dụ thực tế đơn giản cho Bộ định tuyến MikroTik. Chúng tôi sẽ tạo các nhóm cho người dùng đăng nhập của Bộ định tuyến MikroTik. Chúng tôi biết rằng có các mức cấp phép (đầy đủ, viết và đọc) cho người dùng đăng nhập MikroTik. Vì vậy, chúng tôi sẽ tạo các nhóm (fullaccess, writeaccess và readaccess) trong cơ sở dữ liệu SQL của chúng tôi và chỉ định người dùng cho các nhóm này. Khi người dùng được xác thực để đăng nhập Bộ định tuyến MikroTik, họ sẽ nhận được sự cho phép của mình từ bảng radgroupreply.

Cách định cấu hình cơ sở dữ liệu MySQL (MariaDB) với freeRADIUS đã được thảo luận trong bài viết trước. Nếu bạn chưa quen với freeRADIUS với cơ sở dữ liệu MySQL, hãy dành thời gian để định cấu hình freeRADIUS với MySQL và sau đó làm theo phần bên dưới để định cấu hình nhóm người dùng freeRADIUS.

Chèn AVP trả lời nhóm trong bảng radgroupreply

AVP trả lời nhóm được lưu trữ trong bảng radgroupreply. Chúng tôi sẽ chèn MikroTik-Group AVP kiểm soát nhóm người dùng Đăng nhập MikroTik trong bảng này. Chúng tôi biết rằng Bộ định tuyến MikroTik có ba cấp quyền cho người dùng đăng nhập. Vì vậy, chúng ta sẽ tạo ba nhóm trong bảng radgroupreply và gán quyền cho nhóm với MikroTik-Group AVP. Các bước sau đây sẽ chỉ ra cách chèn AVP trả lời nhóm trong bảng radgroupreply.

  • Đăng nhập vào máy chủ freeRADIUS của bạn với người dùng root.
  • Bây giờ hãy đăng nhập vào máy chủ MariaDB của bạn và chọn cơ sở dữ liệu bán kính.

[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 24

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]>

  • Để hiển thị các cột có sẵn trong bảng radgroupreply, hãy thực hiện lệnh sau.

MariaDB [radius]> show columns from radgroupreply;
+———–+——————+——+—–+———+—————-+

| Field     | Type             | Null | Key | Default | Extra          |

+———–+——————+——+—–+———+—————-+

| id        | int(11) unsigned | NO   | PRI | NULL    | auto_increment |

| groupname | varchar(64)      | NO   | MUL |         |                |

| attribute | varchar(64)      | NO   |     |         |                |

| op        | char(2)          | NO   |     | =       |                |

| value     | varchar(253)     | NO   |     |         |                |

+———–+——————+——+—–+———+—————-+

  • Để tạo nhóm quyền đầy đủ, hãy đưa ra lệnh bên dưới.

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“fullaccess”,”Mikrotik-Group”,”:=”,”full”);

  • Để tạo nhóm quyền ghi, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“writeaccess”,”Mikrotik-Group”,”:=”,”write”);

  • Để tạo nhóm quyền đọc, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values (“readaccess”,”Mikrotik-Group”,”:=”,”read”);

  • Để hiển thị tất cả các mục trong bảng radgroupreply, hãy đưa ra lệnh sau.

MariaDB [radius]> select * from radgroupreply;
+—-+————-+—————-+—-+——-+

| id | groupname   | attribute      | op | value |

+—-+————-+—————-+—-+——-+

|  2 | fullaccess  | Mikrotik-Group | := | full  |

|  3 | writeaccess | Mikrotik-Group | := | write |

|  4 | readaccess  | Mikrotik-Group | := | read  |

+—-+————-+—————-+—-+——-+

Ba nhóm có thuộc tính trả lời đã được tạo thành công. Bây giờ chúng ta sẽ tạo ba người dùng trong cơ sở dữ liệu MySQL freeRADIUS.

Chèn Người dùng freeRADIUS vào Bảng radcheck

Thông tin đăng nhập của người dùng FreeRADIUS được lưu trữ trong bảng radcheck. Vì vậy, bây giờ chúng tôi sẽ chèn ba mục nhập người dùng (bob, alice và tom), những người sẽ đăng nhập vào Bộ định tuyến MikroTik trong bảng này. Các bước sau đây sẽ chỉ ra cách chèn thông tin người dùng vào bảng radcheck.

  • Để hiển thị các cột có sẵn trong bảng radcheck, hãy thực hiện lệnh sau.

MariaDB [radius]> show columns from radcheck;
+———–+——————+——+—–+———+—————-+

| Field     | Type             | Null | Key | Default | Extra          |

+———–+——————+——+—–+———+—————-+

| id        | int(11) unsigned | NO   | PRI | NULL    | auto_increment |

| username  | varchar(64)      | NO   | MUL |         |                |

| attribute | varchar(64)      | NO   |     |         |                |

| op        | char(2)          | NO   |     | ==      |                |

| value     | varchar(253)     | NO   |     |         |                |

+———–+——————+——+—–+———+—————-+

  • Để chèn người dùng bob, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“bob”,”Cleartext-Password”,”:=”,”passme”);

  • Để chèn người dùng alice, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“alice”,”Cleartext-Password”,”:=”,”passme”);

  • Để chèn người dùng tom, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radcheck (username,attribute,op,value) values (“tom”,”Cleartext-Password”,”:=”,”passme”);

  • Để hiển thị tất cả các mục trong bảng radcheck, hãy thực hiện lệnh sau.

MariaDB [radius]> select * from radcheck;
+—-+———-+——————–+—-+——–+

| id | username | attribute          | op | value  |

+—-+———-+——————–+—-+——–+

|  2 | bob      | Cleartext-Password | := | passme |

|  3 | alice    | Cleartext-Password | := | passme |

|  4 | tom      | Cleartext-Password | := | passme |

+—-+———-+——————–+—-+——–+

Việc tạo người dùng FreeRADIUS trong bảng cơ sở dữ liệu đã hoàn tất. Bây giờ chúng tôi sẽ chỉ định những người dùng này vào nhóm.

Chỉ định người dùng cho nhóm

Ánh xạ người dùng và nhóm được lưu trữ trong bảng radusergroup. Vì vậy, để gán người dùng cho một nhóm, chúng ta phải đặt mục nhập trong bảng này. Các bước sau đây sẽ chỉ ra cách ánh xạ người dùng vào nhóm bằng bảng radusergroup.

  • Để hiển thị các cột có sẵn trong bảng radusergroup, hãy thực hiện lệnh sau.

MariaDB [radius]> show columns from radusergroup;
+———–+————-+——+—–+———+——-+

| Field     | Type        | Null | Key | Default | Extra |

+———–+————-+——+—–+———+——-+

| username  | varchar(64) | NO   | MUL |         |       |

| groupname | varchar(64) | NO   |     |         |       |

| priority  | int(11)     | NO   |     | 1       |       |

+———–+————-+——+—–+———+——-+

  • Để ánh xạ người dùng bob vào nhóm truy cập đầy đủ, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“bob”,”fullaccess”,10);

  • Để ánh xạ người dùng alice vào nhóm writeaccess, hãy đưa ra nhóm sau.

MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“alice”,”writeaccess”,10);

  • Để ánh xạ người dùng tom vào nhóm đọc, hãy đưa ra lệnh sau.

MariaDB [radius]> insert into radusergroup (username,groupname,priority) values (“tom”,”readaccess”,10);

  • Để xem tất cả các mục nhập, hãy đưa ra lệnh sau.

MariaDB [radius]> select * from radusergroup;
+———-+————-+———-+

| username | groupname   | priority |

+———-+————-+———-+

| bob      | fullaccess  |       10 |

| alice    | writeaccess |       10 |

| tom      | readaccess  |       10 |

+———-+————-+———-+

Việc chỉ định người dùng cho nhóm đã hoàn tất. Bây giờ, trước tiên chúng tôi sẽ kiểm tra trả lời nhóm người dùng bằng chương trình radtest và sau đó là người dùng đăng nhập MikroTik bằng Winbox.

Nhóm người dùng thử nghiệm với chương trình radtest

Sau khi cấu hình nhóm người dùng trong cơ sở dữ liệu MySQL của freeRADIUS, bây giờ chúng ta sẽ kiểm tra phản hồi của nhóm người dùng bằng chương trình radtest. Vì vậy, hãy đưa ra lệnh sau để kiểm tra thông tin đăng nhập của người dùng bob với AVP trả lời.

[root@freeradius ~]# radtest bob  passme 127.0.0.1 100 testing123
Sent Access-Request Id 74 from 0.0.0.0:47585 to 127.0.0.1:1812 length 73

User-Name = “bob”

User-Password = “passme”

NAS-IP-Address = 192.168.40.10

NAS-Port = 100

Message-Authenticator = 0x00

Cleartext-Password = “passme”

Received Access-Accept Id 74 from 127.0.0.1:1812 to 0.0.0.0:0 length 32

Mikrotik-Group = “full”

Nếu mọi thứ đều ổn, chương trình radtest sẽ hiển thị đầu ra ở trên. Điều đó có nghĩa là, người dùng bob có thể đăng nhập bằng tên người dùng và mật khẩu và sau khi đăng nhập thành công, anh ta sẽ có toàn quyền trong Bộ định tuyến MikroTik.

Thử nghiệm nhóm người dùng với MikroTik Router

Bây giờ chúng tôi sẽ kiểm tra nhóm người dùng freeRADIUS với Bộ định tuyến MikroTik mong muốn của chúng tôi. Cách định cấu hình MikroTik Radius để kết nối với freeRADIUS đã được thảo luận trong bài viết trước của tôi. Nếu bạn chưa quen với MikroTik Radius với máy chủ freeRADIUS, hãy làm theo bài viết đó để định cấu hình Bộ định tuyến MikroTik của bạn với máy chủ freeRADIUS và sau đó thực hiện các bước sau để kiểm tra nhóm người dùng freeRADIUS với Bộ định tuyến MikroTik.

  • Open Winbox software and put your MikroTik Router IP in Connect To input field and put bob username in Login input filed and then put bob password (passme) in Password input field. Now click on Connect button and if everything is OK, you will be able to login to MikroTik Router.

  • Go to System > Users menu and click on Active Users tab. You will find bob is a RADIUS user and his permission level is full.

Tương tự, bạn có thể đăng nhập bằng alice và tom và tìm mức cấp phép của họ được cung cấp trong cấu hình nhóm freeRADIUS.

Nếu bạn gặp phải 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 dưới đây về quản lý nhóm 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 nhóm người dùng freeRADIUS đã đượ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 nhóm freeRADIUS theo yêu cầu mong muốn của mình. 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ệ .