允许远程机器连接 update user set host='%' where user='root';

架设FreeRadius+Mysql 的Radius服务器

架设FreeRadius+Mysql 的Radius服务器

(原作者和出处不详,请原谅!)

  有人居然说设置radius要卖钱,本人花了几天的功夫,看了些资料,终于成功设置radius服务器,现在贴出来和大家分享。

  笔者用的平台是RedHat Linux 7.2



  1. 安装mysql

  本人用的是光盘上的RPM包
  rpm -ivh mysql-3.23.41.1.i386.rpm
  rpm -ivh mysql-devel-3.23.41.1.i386.rpm
  rpm -ivh mysql-server-3.23.41.1.i386.rpm
  rpm -ivh mysqlclient9-3.23.22-6.i386.rpm

  启动mysql服务
  service mysqld start

  更改mysql的root密码(注意:mysql的root 和系统的root是2个不用的概念)
  mysql -uroot -p

  创建radius数据库
  creat database radius;
  use mysql;
  update user set password=password('你的密码') where user='root';

  允许远程机器连接
  update user set host='%' where user='root';

  退出及重新启动mysql
  quit
  service mysqld restart

  2. 安装openSSL

  本人也是用的光盘上的RPM包
  rpm -ivh openssl095a-0.9.5a-11.i386.rpm
  rpm -ivh openssl096-0.9.6-6.i386.rpm

  3. 安装freeradius

  从www.freeradius.org上下载freeraidus,本文版本是0.8.1
  编译和安装
  tar xvfz freeradius.tar.gz
  cd xvfz freeradius-0.8.1

注: 如果mysql不是安装在/usr/local/目录下需要做个连接:
ln -s /PATH/mysql/ /usr/local/mysql

  ./configure
  make
  make install

  建立mysql的数据库radius的表
  cd src/modules/rlm_sql/drivers/rlm_sql_mysql
  mysql -uroot -p密码 radius < db_mysql.sql

  更改freeradius的设置
  cd /usr/local/etc/raddb
  更改radiusd.conf,让其支持sql (如下面所说)

  authorize {
  preprocess
  chap
  mschap
  suffix
  sql
  }
  accouting {
  ….
  sql
  …
  }

  更改sql.conf
  server="localhost"
  login="root"
  password="mysql的root的密码"
  radius_db="radius"

  更改 client.conf支持所用的NAS具体可以看该文档,要注意的是secret是NAS和radius服务器的共享密码
数据库加入测试账号

  加入组

  mysql -uroot -p密码 radius

insert into radgroupreply (GroupName,Attribute,op,Value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Service-Type',':=','Framed-User');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.254');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

  加入测试账号
insert into radcheck (UserName,Attribute,op,Value) values ('test','User-Password',':=','test');

  测试账号加入组
insert into usergroup (UserName,GroupName) values ('test','user');

  4. 启动radius服务、测试账号

  启动到debug模式

  radiusd -X

  有时候会报找不到文件rlm_sql_mysql这个时候只要把库文件加入系统搜索的目录里

  比如:

  cp /usr/local/lib/* /usr/lib

  测试账号

  radtest test teset localhost 0 testing123
修改 MySQL 用户表中的 `host` 权限需要谨慎操作,因为直接更新系统表可能会导致不可预知的后果。MySQL 的 `mysql.user` 表存储了用户的权限信息,包括用户名、主机名以及密码等。以下是对用户提出命令的分析与正确操作建议。 用户提供的命令: ```sql UPDATE mysql.user SET host = '%' WHERE user = 'root'; ``` 该命令旨在将 `root` 用户的 `host` 字段修改为 `%`,表示允许从任何主机连接MySQL 数据库。然而,直接使用 `UPDATE` 语句操作 `mysql.user` 表存在以下注意事项: 1. **权限问题**:执行该操作的用户必须具有足够的权限,通常需要 `SUPER` 或 `UPDATE` 权限。 2. **刷新权限**:修改完成后,必须执行 `FLUSH PRIVILEGES;` 命令以确保更改生效[^3]。 3. **潜在风险**:直接修改系统表可能导致权限管理混乱,特别是在生产环境中。 ### 推荐做法 建议使用 `ALTER USER` 语句来修改用户的主机权限,这种方式更加安全且符合 MySQL 的最佳实践。以下是推荐的修改命令: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; RENAME USER 'root'@'localhost' TO 'root'@'%'; FLUSH PRIVILEGES; ``` 上述命令分为三个步骤: 1. **修改密码**:首先使用 `ALTER USER` 修改 `root` 用户的密码,确保安全性。 2. **重命名用户**:通过 `RENAME USER` 将 `root@localhost` 重命名为 `root@%`,从而允许从任意主机连接。 3. **刷新权限**:执行 `FLUSH PRIVILEGES;` 使更改立即生效。 ### 安全性考虑 1. **最小权限原则**:允许 `root` 用户从任意主机连接可能带来安全风险。建议仅在必要时启用此权限,并限制 IP 范围(例如 `'root'@'192.168.1.%'`)。 2. **加密连接**:确保使用 SSL 加密连接,以防止密码在传输过程中被窃取。 3. **定期审计**:定期检查用户权限,确保没有不必要的权限分配。 ### 示例代码 以下是一个完整的示例,展示如何安全地修改 `root` 用户的主机权限: ```sql -- 修改 root 用户的密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'SecurePass!2023'; -- 重命名 root 用户,允许从任意主机连接 RENAME USER 'root'@'localhost' TO 'root'@'%'; -- 刷新权限,使更改生效 FLUSH PRIVILEGES; ``` ### 总结 直接使用 `UPDATE` 语句修改 `mysql.user` 表虽然可以实现目标,但存在一定的风险。推荐使用 `ALTER USER` 和 `RENAME USER` 命令,这样可以确保操作的安全性和稳定性。同时,务必注意权限管理和安全性设置,避免潜在的安全隐患。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值