• freeradius编译安装+mysql配置


    参考文档:

    freeradius 官网的wiki
    http://wiki.freeradius.org/Home

    ubuntu freeradius搭建教程

    http://yustanto.com/freeradius.pdf
    http://blog.csdn.net/u013686990/article/details/38079653

    gcc安装编译(freeradius需要gcc支持)
    http://blog.csdn.net/u012822903/article/details/68934793 

    freeradius+mysql配置

    http://blog.chinaunix.net/uid-9967220-id-1995615.html

    官方文档--详细介绍配置文件及属性

    http://networkradius.com/doc/current/introduction/RADIUS.html

    梳理一下流程:

    最好是参考官方文档去操作,官方文档搞不定在去搜。

    官方文档的几个步骤:

    主要就是这几步。

    安装环境:ubuntu14.0

    官方根据不同系统给了不同的wiki:

    这里按照ubuntu的流程操作:

    注意下面是从github下载源码,编译安装的步骤,嫌步骤繁琐的直接用apt-get方式安装吧:

    apt-cache search freeradius  //找一下相关软件
    apt-get install freeradius  //装freeradius
    apt-get install freeradius-mysql mysql-server //需要mysql数据的,顺便再装个mysql和freeradius的mysql插件
    装好的freeradius在 /etc/freeradius路径下。

    一、Building and installing

    1.下载二进制包

    wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.15.zip
    unzip v3.0.15.zip
    cd freeradius-server-3.0.15/

    2.编译安装

    //这里需要安装其他模块的需要将模块名称加入到   src/modules/stable文件中,比如:$ echo rlm_jradius>>src/modules/stable。具体参考第四步: Radius Clients

    tar -zxvf freeradius-server-3.0.15.tar.gz 
    ./configure
    make
    sudo make install

    如果不指定  ./configure --prefix=路径

    • 默认的配置文件在/usr/local/etc路径下。
    • 可执行文件默认放在/usr /local/bin
    • 库文件默认放在/usr/local/lib
    • 记账(计费)的默认路径  /usr/local/var/log/radius/radacct

    ./configure  执行时,根据提示,缺什么去安装什么,一步一步慢慢来,比如说你可能会却少gcc环境,见下:

    由于freeradius安装依赖gcc,如果gcc没安装,编译安装就不通过。官网给的gcc对应ubuntu版本说明:

    Older versions of Debian and Ubuntu use GCC < 4.8, which lacks support for the C11 features needed to build FreeRADIUS >= v3.1.x.

    我安装时是网上单独找的教程,参考第三个链接。

    apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo

    官方给的gcc安装依赖:

    sudo apt-get install libssl-dev libtalloc-dev libkqueue-dev

    安装gcc:

    1. 下载&解压源码
    $ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
    $ tar xvjf gcc-4.1.2.tar.bz2
    2. 安装依赖库, 以及软件 $ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
    3. 为头文件以及所需库添加链接 添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu $ cd /usr/include $ sudo ln -s i386-linux-gnu/bits bits $ sudo ln -s i386-linux-gnu/gnu gnu $ sudo ln -s i386-linux-gnu/sys sys $ sudo ln -s i386-linux-gnu/asm asm $ cd /usr/lib $ sudo ln -s i386-linux-gnu/crt1.o crt1.o $ sudo ln -s i386-linux-gnu/crti.o crti.o $ sudo ln -s i386-linux-gnu/crtn.o crtn.o
    4. 编译gcc $ cd gcc-4.1.2 $ mkdir build $ cd build
    $ ../configure --prefix=/usr/local/ --program-prefix=sse- --libexecdir=/usr/local/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --enable-languages=c,c++

    $ make bootstrap
    $ make install
    5.进入bin目录下,查看gcc是否安装好
    $ cd /usr/local/bin
    $ ll *gcc*
    会有下面四个文件说明安装成功了:
    sse-gcc*
    sse-gccbug*
    x86_64-unknown-linux-gnu-gcc-4.1.2*
    x86_64-unknown-linux-gnu-sse-gcc*

    官方给的三个 Hard dependencies

    具体参考官网。注意安装的freeradius版本和gcc版本。

    二、Configuration

    1.这里如果不用mysql,用本地文件file的方式存放radius用户信息的话,不需要做mysql的配置。

    这里就可以调试了,

    freeradius的启动/关闭/重启
    radiusd start/stop/restart //编译安装的freeradius用的是这个命令,默认不会开机自启动
    service freeradius start/stop/restart   //直接apt安装,使用这个命令启动,默认开机自启动

    radiusd -X  (或freeradius -X   ---apt方式安装的用这个命令)这个命令是进入调试模式,会把后台各个log日志打印到shell窗口,以便分析(可以不用)

    进入安装目录,编辑users文件,将下面图片内容的注释去掉

    cd /usr/local/etc/raddb   //  或cd  /etc/freeradius 
    vim users

    再打开另一个终端做客户端,输入命名 

    radtest steve testing localhost 1812 testing123

    回复   rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=66, length=20  说明装成功了。

    2.这里按照mysql的方式做配置。

    所以首先安装一下mysql和freeradius的sql插件

    编译源码方式:
    编译源码时,其实已经装好freeradius的sql插件了,可以看下freeradius路径下 src/modules/stable,里边有个rlm_sql就是sql模块,默认是安装的。mysql自己装,网上好多教程。

    //apt安装方式
    //apt-get install freeradius-mysql //apt-get install mysql-server

     官方给的主要配置文件:

    Main configuration files

    radius.conf    将$INCLUDE sql.con反注释,我们需要使用sql模块

    radius.conf 中有各个目录的配置路径,其中  libdir: Where to find the rlm_* modules.这个目录是模块的安装目录,可以在这个目录下查看都安装了那些模块,都是以.so结尾的文件。

    .....
    prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log/freeradius raddbdir = /etc/freeradius radacctdir = ${logdir}/radacct # # name of the running server. See also the "-n" command-line option. name = freeradius # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd db_dir = ${raddbdir} # name of the running server. See also the "-n" command-line option. name = freeradius # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd db_dir = ${raddbdir} # libdir: Where to find the rlm_* modules. libdir = /usr/lib/freeradius ......

     clients.conf   需要改localhost,如果知道ip段,可以写ip段,比如:192.168.6.0/24  支持ipv4和ipv6和域名的方式。

        (文件注释中介绍尽量用ip,不要用域名,域名依赖dns解析,dns挂了,radius服务就挂了)

        secret 为服务器和客户端的共享密码,默认testing123。

    client localhost { 
                 ipaddr = 127.0.0.1
                 secret          = testing123
                 require_message_authenticator = no
                 nastype     = other
    }

    这个client可以配置多个,维基百科里有段话:

    UDP与TCP不同,无法识别伪装送信者和数据篡改。因此仅靠通信对方的IP地址是不足以信任通信内容的。
    为了防止伪装和篡改,RADIUS客户端和服务器之间共享一个叫“共享密码” (Shared secret)的密钥字符串,将数据包的内容和共享密码得到的摘要信息配给验证符号和属性值。
    应该为每对 RADIUS客户端和服务器准备一个共享密码。针对一个RADIUS服务器只用一个密码而与所有RADIUS客户端都共用会造成安全上的重大隐患。另外,从安全的角度来说,共享密码的内容若被第三方泄露也是一大问题。

    modules configuration   这个模块我们用到mysql,需要进入/etc/freeradius/sql/mysql目录下

    有个schema.sql (V3.0也叫  db_mysql.sql),执行一下

    mysql -uroot -prootpass radius < schema.sql 

    表就建好了。

    其他表可以参考上面第四个链接,适用不同的场景。这里就搭建一个简单可用的freeradius。admin.sql是给freeradius创建个mysql的账户,我直接给了root用户,就没执行(这一步在后面)。

    sites configuration   官方介绍 The sites-availablesites-enabled convention has been borrowed from Apache, Nginx, and other similar projects. 

    • sites-available/default
    • sites-available/inner-tunnel  
    - 数据库功能性定义文件: /etc/raddb/sites-available/default 
    实现相关模块对数据库的支持
    authorize(认证),accounting(审计),session(会话,用于监测同时连接),post_auth(记录) 子段加入sql关键字,如:
    authorize {
              preprocess
              chap
              mschap
              suffix
              eap
              sql
              pap
    }

    将上面2个文件中sql部分的注释都去掉,没有的就添加sql。

    sql.conf     数据库设置sql.conf,和数据库定义相符(数据库服务器、用户密码、表名称等等):

    sql {
            #
            #  Set the database to one of:
            #
            #       mysql, mssql, oracle, postgresql
            #
            database = "mysql"
    
            #
            #  Which FreeRADIUS driver to use.
            #
            driver = "rlm_sql_${database}"
    
            # Connection info:
            server = "localhost"
            port = 3306
            login = "root"
            password = "pwd123123"
    
            # Database table configuration for everything except Oracle
            radius_db = "radius"  
    ....

    修改以上几个值。执行admin.sql创建的mysql账户是在这里配置的。

    配置部分结束,可以测试一下了:

    在之前执行schema.sql文件的时候,已经创建了这个表

    CREATE TABLE radcheck (
      id int(11) unsigned NOT NULL auto_increment,
      username varchar(64) NOT NULL default '',   //这是账号
      attribute varchar(64)  NOT NULL default '',
      op char(2) NOT NULL DEFAULT '==',
      value varchar(253) NOT NULL default '',   //这是密码
      PRIMARY KEY  (id),
      KEY username (username(32))
    ) ;

    登录数据库,在这个表中随便插入几条信息。

    insert into radcheck (username,attribute,value,op) values ('user007','Cleartext-Password','password123',':=')

    通过命令 radiusd  restart 或 radiusd -X  启动服务, radiusd -X这个命令是进入调试模式(方便观察debug日志)

     如果是apt方式安装成功的通过这个命令  service freeradius  restart 或freeradius -X 

    另起一个客户端,输入

    radtest user007 password123 localhost 1812 testing123

    Access-Accept!

    完美。安装成功。

    三、Base Modules

    freeradius支持安装的模块:

    https://freeradius.org/modules/

    四、Radius Clients

    本文以java为例,安装jradius。

    需要在编译freeradius前,将编译模块名称加入到src/modules/stable文件中,模块名称可以参考 Base Modules 这步的链接,这里是

    echo rlm_jradius >> src/modules/stable

    然后编译安装。

    ./configure 
    make 
    make install

     之后到github下载jradius的源码编译安装。具体参考另一篇文章。

    freeradius client 和jradius安装编译

    异常处理

    ./configure时 的报错处理,比如:

    No rule to make target `@abs_top_builddir@/main.mk  

    没有安装依赖包,缺少编译的插件,apt-cache search xxxx 搜一下,安装即可。

    报错一般都是缺少依赖,根据提示,将缺少的依赖逐个安装即可。

    openssl拒绝:
    Refusing to start with libssl version OpenSSL 1.0.1f 6 Jan 2014
    修改etc/raddb下的radiusd.conf文件
    找到allow_vulnerable_openssl = no,修改成allow_vulnerable_openssl = yes


    rlm_eap: Failed to initialize type tls

    这个错误,执行一下,换个窗口再执行就好了

    other 

    FreeRADIUS Beginner's Guide

    https://freeradius.akagi201.org/

    FreeRadius : 模块开发

    http://blog.csdn.net/huntinux/article/details/52881504  

    http://blog.csdn.net/huntinux/article/details/52892221 

     

  • 相关阅读:
    Linux安装.net core
    在IIS中如何配置SSL(https)
    Lambda的前世今生
    Java建造者模式
    leetcode 83 Remove Duplicates from Sorted List
    【设计】Office
    【设计】简书品牌重构
    【设计总结】
    【交互设计】
    【设计总结】
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/7597788.html
Copyright © 2020-2023  润新知