`

freeradius-server-2.1.12.tar.bz2+suse10 64+Oracle11配置

 
阅读更多
使用的环境
freeradius-server-2.1.12.tar.bz2
SUSE10 x86-64
Oracle11
配置关键:
freeradius-server和oracle服务器安装在一台机器上,
oracle已经安装好了。安装步骤可以参考网上的其他教程。
分开安装的没有成功。郁闷了,不搞了。

一、安装配置freeradius服务器步骤:
#bzip2 -dv freeradius-server-2.1.12.tar.bz2
#tar -xvf freeradius-server-2.1.12.tar
#cd freeradius-server-2.1.12
#./configure --prefix=/usr/local/freeradius
#make
#make install
#cd /usr/local/freeradius/sbin
#./radiusd -X
【Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/freeradius/var/run/radiusd/radiusd.sock
Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel
Listening on proxy address * port 1814】 ok

#cd /usr/local/freeradius/etc/raddb
在users文件第一行插入
test Cleartext-Password := "testing"
表示加入了一个用户,名字为test,密码为明文的testing。

本机客户端测试(client/server都在一台机器上):
保存文件后,重启服务器,
#./radiusd -X.

然后另开一个终端(作为client),
#cd /usr/local/freeradius/bin
发送验证请求
#./radtest test testing 127.0.0.1 0 testing123
返回的结果为
Sending Access-Request of id 163 to 127.0.0.1 port 1812
        User-Name = "test"
        User-Password = "testing"
        NAS-IP-Address = 10.18.57.161
        NAS-Port = 0
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=163, length=20

如果返回的结果的最后一行是 rad_recv: Access-Accept 那就说明本地测试成功了
如果最后一行是rad_recv: Access-Reject那就表示失败了

要其他IP地址的客户端访问radius服务器,就在文件clients.conf末尾添加
#cd /usr/local/freeradius/etc/raddb
#vi clients.conf
在末尾添加
client 10.18.20.155 {
        ipaddr = 10.18.20.155
        secret      = testing123
        shortname   = clienttestos
        nastype     = other
}

用Radius Test 2.6在客户机10.18.20.155上测试,
显示如下内容,表示认证成功,结果如下:
------------------------------------
Sending Access-Request of id 118 to 10.18.57.161 port 1812
User-Name = "test"
Password = "testing"
rad_recv: Access-Accept packet from host 10.18.57.161 port 1812, id=118, length=20

   Total approved auths:  1
     Total denied auths:  0
       Total lost auths:  0
       Total time(secs):  0
----------------------------------

二、配置与Oracle数据库的连接步骤:

配置oracle数据
#su - oracle
-- 创建用户
create user radius identified by radpass;
GRANT   CONNECT,RESOURCE,DBA to radius;

--创建表
#mkdir /home/oracle/sqls
将 /usr/local/etc/raddb/sql/oracle/schema.sql 拷贝到 /home/oracle/sql
--修改权限
#chown oracle:oinstall /home/oracle/sqls/schema.sql
#chmod 744 /home/oracle/sqls/schema.sql
切换到oracle
#su - oracle
$sqlplus radius/radpass@<yoursid>
SQL>start /home/oracle/sqls/schema.sql
SQL>alter table radacct modify groupname null; --非必须,如果报错,不用理会
SQL>CREATE TABLE nas (
id INT PRIMARY KEY,
nasname VARCHAR(128),
shortname VARCHAR(32),
type VARCHAR(30),
ports INT,
secret VARCHAR(60),
server VARCHAR(64),
community VARCHAR(50),
description VARCHAR(200)
);
SQL>CREATE SEQUENCE nas_seq START WITH 1 INCREMENT BY 1;
SQL>INSERT INTO radgroupreply VALUES (radgroupreply_seq.nextval, 'user','Service-Type','=','Framed-User');
SQL>INSERT INTO radgroupcheck VALUES (radgroupcheck_seq.nextval, 'user','Auth-Type','=','Local');
SQL>INSERT INTO radcheck VALUES (radcheck_seq.nextval, 'ora_usr','User-Password','==','ora_pwd');
SQL>INSERT INTO radusergroup VALUES (radusergroup_seq.nextval, 'ora_usr','user');
SQL>commit;
SQL>exit;


接下来对freeradius进行配置
编辑/usr/local/freeradius/etc/raddb/sql.conf

# vim /usr/local/freeradius/etc/raddb/sql.conf
修改配置文件中mysql的帐号及密码

  #database = "mysql"
  database = "oracle"

# Connection info:
server = “localhost”
port = 1521
login = "radius"    
password = "radpass"

#radius_db = "radius"
radius_db = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.57.161)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = portaldb)))"

编辑/usr/local/etc/raddb/sites-enabled/default
# vim /usr/local/freeradius/etc/raddb/sites-enabled/default
(行数仅供参考,版本不同行数也不同)
170行 files 前加 # 注释
177行 去掉 sql 前 # 注释
406行 去掉 sql 前 # 注释


编辑/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel
# vim /usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel
124行 files 前加 # 注释
131行 去掉 sql 前 # 注释

编辑/usr/local/freeradius/etc/raddb/radiusd.conf
# vim /usr/local/freeradius/etc/raddb/radiusd.conf
去掉700行 $INCLUDE sql.conf 前的#注释

配置完成,启动测试
# radius -X (X必须是大写)


Could not link driver rlm_sql_oracle: rlm_sql_oracle.so: cannot open shared object file: No such file or directory

出现上面的错误,先要看一下有没有rlm_sql_oracle.so这个文件
# find / -name rlm_sql_oracle.so

多半是没有了,那么需要编译一个出来

回到之前解压的freeradius-server-2.1.12目录里
# cd ~/freeradius-server-2.1.12/src/modules/rlm_sql/drivers/rlm_sql_oracle
# ./configure --with-oracle-include-dir=${ORACLE_HOME}/rdbms/public --with-oracle-lib-dir=${ORACLE_HOME}/lib

将当前目录下的Makefile改成如下内容
------------------------------------------------------------------------------------------------
include ../../../../../Make.inc

TARGET         = rlm_sql_oracle
SRCS           = sql_oracle.c
RLM_SQL_CFLAGS =  -I/opt/oracle/db/product/11.1.0/db_1/rdbms/public/ $(INCLTDL)
RLM_SQL_LIBS   = -L/opt/oracle/db/product/11.1.0/db_1/lib -lclntsh -lm

include ../rules.mak
----------------------------------------------------------------------------------------------

# make && make install

重启
# radius -X
然后另开一个终端(作为client),
#cd /usr/local/freeradius/bin
发送验证请求
#./radtest rad_usr rad_pwd 127.0.0.1 0 testing123

三、freeradius和oracle连接错误排查 -- 我没有遇到
freeradius与oracle的连接配置完成,启动测试
# radius -X (X必须是大写)
出现如下错误提示:

Could not link driver rlm_sql_oracle: libnnz11.so: cannot open shared object file: No such file or directory
Make sure it (and all its dependent libraries!) are in the search path of your system's ld.
/usr/local/freeradius/etc/raddb/sql.conf[22]: Instantiation failed for module "sql"
/usr/local/freeradius/etc/raddb/sites-enabled/default[177]: Failed to load module "sql".
/usr/local/freeradius/etc/raddb/sites-enabled/default[69]: Errors parsing authorize section.

解决方法如下:
# echo ${ORACLE_HOME}/lib >> /etc/ld.so.conf
# ldconfig

再次启动:
# ./radiusd -X (X必须是大写)
出现如下错误提示:
/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel[124]: Failed to load module "$files".
/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel[47]: Errors parsing authorize section.
#cd /usr/local/freeradius/etc/raddb/sites-enabled
#vim inner-tunnel
修改124行,添加注释
#  $files

若测试再出错,确认oracle用户名是否修改正确:
# vim /usr/local/freeradius/etc/raddb/sql.conf
修改配置文件中mysql的帐号及密码
# Connection info:
login = "radius"    
password = "radpass"

--------------------------------------------------
用java代码进行认证测试
jradius-client.jar
import net.sourceforge.jradiusclient.RadiusClient;
import net.sourceforge.jradiusclient.RadiusPacket;
import net.sourceforge.jradiusclient.packets.ChapAccessRequest;
import net.sourceforge.jradiusclient.packets.PapAccessRequest;

public class RadiusAuthService
{
    /**
     * 得到RadiusClient
     * @param authport 服务器端口
     * @param serverIp 服务器Ip
     * @param shareSecret 密钥
     * @return RadiusClient RadiusClient
     */
    private RadiusClient getRadiusClient(int authport, String serverIp,
            String shareSecret)
    {

        RadiusClient client = null;
        try
        {
            client = new RadiusClient(serverIp, authport, 1813, shareSecret);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return client;
    }

    /**
     * 认证
     * @param userName 用户名
     * @param userPassWord 密码
     * @param userAuthMode 认证模式(pap or chap)
     * @param authPort 端口
     * @param serverIP 服务器ip
     * @param shareSecret 密钥
     * @return 是否成功
     */
    public boolean auth(String userName, String userPassWord,
            String userAuthMode, int authPort, String serverIP,
            String shareSecret)

    {

        Boolean isSucces = Boolean.FALSE;
        RadiusPacket accessResponse = null;

        RadiusClient client = null;
        if (serverIP != null && !serverIP.equals(""))
        {
            client = getRadiusClient(authPort, serverIP, shareSecret);
        }
        RadiusPacket accessRequest = null;
        try
        {
            if (userAuthMode.equalsIgnoreCase("chap"))
            {
                accessRequest = new ChapAccessRequest(userName, userPassWord);
            }
            else
            {
                accessRequest = new PapAccessRequest(userName, userPassWord);
            }

            // 连接认证服务器
            accessResponse = client.authenticate(accessRequest);
            int accessResponseResult = 0;
            if (null != accessResponse)
            {
                accessResponseResult = accessResponse.getPacketType();
            }
            // 验证通过
            if (RadiusPacket.ACCESS_ACCEPT == accessResponseResult
                    || RadiusPacket.ACCESS_CHALLENGE == accessResponseResult)
            {
                isSucces = Boolean.TRUE;
            }

            // 验证不通过
            else if (accessResponseResult == RadiusPacket.ACCESS_REJECT)
            {
                //
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        return isSucces;

    }

    public static void main(String[] args)
    {
        Boolean authResult = Boolean.FALSE;
        String userName = "ora_usr";
        String userPassWord = "ora_pwd";
        String userAuthMode = "";
        int authPort = 1812;
        String serverIP = "10.18.57.161";
        String shareSecret = "testing123";
        RadiusAuthService radiusAuthService = new RadiusAuthService();
        authResult = radiusAuthService.auth(userName, userPassWord,
                userAuthMode, authPort, serverIP, shareSecret);
        System.out.println("-------------" + authResult);
    }
}
分享到:
评论

相关推荐

    freeradius-server-3.0.11.tar.gz_freeradius 源码

    在深入理解`freeradius-server-3.0.11.tar.gz`这个源码包之前,我们先来了解一下RADIUS协议。RADIUS是一种C/S架构的协议,主要用于网络设备(如路由器、交换机、无线接入点等)与认证服务器之间的通信。它允许网络...

    freeradius-server-2.2.0.tar.gz

    最新稳定版本freeradius-server-2.2.0.tar.gz。更多详细开发信息可参考网站http://freeradius.org/。网站作者很好,有开发问题可以给他发邮件,不过要英文的,一般都会恢复。不过发邮件前最好先查看他们的邮箱列表,...

    freeradius-server-2.1.11.tar.gz

    这个“freeradius-server-2.1.11.tar.gz”压缩包包含了FreeRadius服务器的源代码,版本为2.1.11,允许用户在自己的系统上编译和安装该服务。 RADIUS协议是一种广泛应用于网络认证、授权和计费(AAA)的协议。它最初...

    freeradius-1.1.7.tar.gz

    标题"freeradius-1.1.7.tar.gz"表明这是一个版本为1.1.7的FreeRADIUS软件包,它被压缩成tar.gz格式,这是Linux/Unix系统中常见的归档和压缩方式。 1. **FreeRADIUS基础知识** - **Radius协议**:Radius(Remote ...

    freeradius-server-3.0.19.tar.gz

    "freeradius-server-3.0.19.tar.gz" 是FreeRADIUS服务器的源代码包,版本为3.0.19。这个压缩包包含了构建、配置和运行FreeRADIUS所需的所有文件。通过解压此文件,用户可以获取源代码,然后在Linux环境下编译安装。...

    freeradius-server-3.0.8.tar.bz2

    freeradius是一个非常好用的radius服务器 Stable Release The "stable release" of FreeRADIUS is version 3. The goal of this version is stability. Version 3 introduces a number of major changes over ...

    freeradius-server-3.0.21.tar

    - FreeRADIUS 服务器的安装通常涉及编译源代码(如 `freeradius-server-3.0.21.tar` 文件所示)或使用包管理器(如 apt 或 yum)进行安装。 - 配置文件位于 `/etc/raddb/` 目录下,包括 `sites`、`users`、`...

    VNC-Server-6.7.1-Linux-x64-ANY.tar.gz

    在本场景中,"VNC-Server-6.7.1-Linux-x64-ANY.tar.gz" 是一个针对64位Linux系统的VNC服务器软件的压缩包。VNC Server是RealVNC公司提供的产品,它提供了跨平台的远程控制功能,让用户可以在不同的操作系统上远程...

    FreeRADIUS-server-2.2.0-x86 for windows

    总之,FreeRADIUS-server-2.2.0-x86为Windows用户提供了一个强大的认证解决方案,通过理解和配置这个服务器,你可以有效地管理网络访问权限,保障网络安全,同时满足各种复杂认证需求。在实际操作中,建议参照官方...

    FreeRadius客户端和服务器配置

    FreeRadius 客户端和服务器配置 FreeRadius 是一个开源的 RADIUS 服务器,广泛应用于网络认证、授权和记帐(AAA)领域。FreeRadius 客户端和服务器配置是实现网络认证和授权的关键步骤。本文将详细介绍 FreeRadius ...

    freeradius-server-2.2.7.tar.bz2

    The "previous stable" release of FreeRADIUS was version 2. The v2.2.x series is now End Of Life. Only security fixes will be applied to v2.2.x. Users of 2.2.x are encouraged to migrate to the latest ...

    freeradius-server-3.0.15.tar.gz_FreeRadius_NEW_git

    这个压缩包"freeradius-server-3.0.15.tar.gz"包含的是FreeRadius 3.0.15版本的源代码,它是FreeRadius项目的一个更新版本,引入了新的功能和改进,可能还修复了一些已知的问题。 在描述中提到的"All directories ...

    freeradius-mysql-3.0.13-15.el7.x86_64(1) (1).rpm

    离线安装包,测试可用

    freeradius-server-3.0.x_state_tree.source_code.zip

    freeradius-server-3.0.x_state_tree 源代码部分 来源于https://github.com/FreeRADIUS/freeradius-server/tree/v3.0.x_state_tree

    freeradius-3.0.13-15.el7.x86_64(1) (1).rpm

    离线安装包,测试可用

    freeradius-server-3.0.3.tar

    Freeradius-server-3.0.3

    FreeRADIUS-server-2.2.0-x86

    FreeRADIUS-server-2.2.0-x86是一个针对Windows平台的开源RADIUS服务器软件,主要用于网络身份验证、授权和计费。RADIUS(Remote Authentication Dial-In User Service)是一种广泛应用于无线网络、有线网络、远程...

    freeradius-devel-3.0.13-15.el7.x86_64(1) (1).rpm

    离线安装包,测试可用

    freeradius-3.0.20-9.module_el8.5.0+898+d2e49574.ppc64le.rpm

    离线安装包,亲测可用

    freeradius-1.0.2.tar.gz linux平台轻量级开源radius

    freeradius-1.0.2.tar.gz linux平台轻量级开源radius。

Global site tag (gtag.js) - Google Analytics