Centos 7 freeradius 搭建企业wifi认证服务

tech2024-04-12  8

Centos 7 搭建Wpa认证服务

关键字 :freeradius wpa eap 参考: http://www.racksam.com/2017/03/02/centos7-install-freeradius

路由器设置为WPA/WPA2企业版模式之后,热点的security=SECURITY_EAP,设备再连接该wifi

1、 准备工作:

一台支持WPA/WPA2企业版的路由器
一台安装了centos7的电脑或者虚拟机

要保证电脑或虚拟机与路由器同一个网段。 注意:若使用虚拟机,网络不要使用共享网络模式,要用桥架wifi模式(保证同一网段,使路由器能够访问到freeradius)

2、安装数据库

2.1安装mariadb服务器

# yum -y update # yum install -y mariadb-server mariadb

2.2开启mariadb服务

# systemctl start mariadb # systemctl enable mariadb

2.3查看数据库状态

# systemctl status mariadb # systemctl is-enabled mariadb.service enabled

2.4初始化数据库安全设置

设置数据库密码,要记住,后面要用到。推荐选项:
Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y

3、创建FreeRadius数据库

创建radius数据库,并设置用户名及密码: -u 用户名 。由于我们没有为数据库创建新用户,所以只能使用root账号登录, 密码就是上面设置的数据库密码

# mysql -u root -p

创建一个名为radiusdb的数据库

MariaDB [(none)]> CREATE DATABASE radiusdb; MariaDB [(none)]> GRANT ALL ON radiusdb.* TO dbuser@localhost IDENTIFIED BY "mypass"; GRANT ALL ON radiusdb.* TO dbuser@'%' IDENTIFIED BY "mypass"; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> \q Bye

4、安装FreeRadius

4.1 yum安装freeradius

yum -y install freeradius freeradius-utils freeradius-mysql

4.2导入数据库schema schema.sql 里是创建数据表的sql语句

# mysql -u root -p radiusdb < /etc/raddb/mods-config/sql/main/mysql/schema.sql

4.3 配置FreeRadius使用mysql 启用sql模块

# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/ # chgrp -h radiusd /etc/raddb/mods-enabled/sql

4.4配置mysql数据库连接信息

vim /etc/raddb/mods-available/sql

主要修改内容

sql { (...省略...) driver = "rlm_sql_mysql" dialect = "mysql" # Connection info: # server = "localhost" port = 3306 login = "dbuser" password = "mypass" radius_db = "radiusdb" (...省略...) }

5、调整FreeRadius与MariaDB的启动顺序

5.1添加FreeRadius启动服务

# systemctl enable radiusd.service

FreeRadius服务必须在数据库正常启动后才能正常启动,否则会出错。为了确保这一点,按照以下方法强制指定radius服务启动的顺序

# vi /etc/systemd/system/multi-user.target.wants/radiusd.service [Unit] Description=FreeRADIUS high performance RADIUS server. After=syslog.target network.target After=mariadb.service

5.2添加客户端连接设置 编辑/etc/raddb/clients.conf文件,为允许连接的客户端设置相应的共享秘钥 允许所有客户端连接, secret 是在访问freeradius时要使用的秘钥,设置路由器时要使用

client all_client { ipaddr = 0.0.0.0/0 secret = testing123 require_message_authenticator = no }

5.3启动服务

# systemctl start radiusd.service # systemctl status radiusd.service

5.4调试radius 若要看在终端看日志 如果radius启动出现问题,可以将radius进程停止,然后以参数-X的方式临时启动调试模式, 就可以在终端实时看日志

# pkill radius # radiusd -X

6、测试radius

连接mysql命令行mysql -p radiusdb,使用sql添加一条测试记录: 这条记录是使用手机、电脑等终端登录路由器的账号和密码

MariaDB [radiusdb]> INSERT INTO radcheck (id, username, attribute, op, value) VALUES (1,'testuser','Cleartext-Password',':=','mypass');

使用radtest命令测试:radtest [用户名] [密码] [radius服务器host/ip] 0 [对客户端设置的共享秘钥],例如

# radtest testuser mypass localhost 0 testing123

认证成功的输出如下

Sending Access-Request Id 143 from 0.0.0.0:51053 to 127.0.0.1:1812 User-Name = 'testuser' User-Password = 'mypass' NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Message-Authenticator = 0x00 Received Access-Accept Id 143 from 127.0.0.1:1812 to 127.0.0.1:51053 length 26 Acct-Interim-Interval = 60

删除用户的指令:

MariaDB [radiusdb]> delete from radcheck where username = 'testuser';

7、防火墙配置radius相关规则

7.1配置防火墙,打开radius服务端口 如果已经打开firewalld的话,可以跳过该步骤, 若仅作为测试使用,可以关闭防火墙

systemctl enable firewalld 启用防火墙 systemctl start firewalld 打开防火墙 systemctl status firewalld 查看防火墙状态

7.2添加radius服务

cat /usr/lib/firewalld/services/radius.xml firewall-cmd --add-service=radius --permanent firewall-cmd --reload firewall-cmd --list-services

8、路由器配置

最新回复(0)