RedHat linux AS 4+apm+freeradius-1.1.3+mac地址绑定

    技术2022-05-11  7

    RedHat linux AS 4+apm+freeradius-1.1.3+mac地址绑定   RedHat linux AS 4+Apache2.2.3+MYSQL5.0.27+PHP5.1.4+freeradius-1.1.3+mac地址绑定。 adminjun qq:279872 网络技术研究会群:8070045 中国linux公社论坛群:4478487 网络分析专家群:21091992 欢迎一起研究radius群:8054325 以下内容是我以配置笔记的形式发布,每一步都是成功后记录下来的,之前配置时查了n多资料,辛苦呢,呵呵,希望版主能加精。很多东西只是步骤上的,需要自己去在网上搜寻相关内容进行学习。我将尽量做到了详细说明每一步的操作。如果你linux上只需要安装mysql和radius的话,请跳过其它模块安装内容。 转载请注明是偶哦嘿嘿。。adminjun / hackjun 就是我了。。 安装MYSQL # groupadd mysql # useradd -g mysql -d /usr/local/mysql/data -M mysql # tar -zxvf mysql-5.0.27.tar.gz # cd mysql-5.0.27 ./configure --prefix=/usr/local/mysql / 指定安装目录 > --sysconfdir=/etc / 配置文件的路径 > --localstatedir=/usr/local/mysql/data / 数据库存放的路径 > --enable-assembler / 使用一些字符函数的汇编版本 > --with-mysqld-ldflags=-all-static / 以纯静态方式编译服务端 > --with-charset=utf8 / 添加utf8字符支持 > --with-extra-charsets=all 添加所有字符支持 # make # make install # /usr/local/mysql/bin/mysql_install_db # chown -R mysql:mysql /usr/local/mysql/data # cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf 安装Mysql共享库文件 # rpm -ivh MySQL-shared-standard-5.0.27-0.rhel4.i386.rpm (更改sql用户密码:mysqladmin -u用户名 -p password 新密码 删除用户 use 数据库 mysql>delete   from   user   where   user=username;) 安装Apache # tar -zvxf httpd-2.2.3.tar.gz # cd httpd-2.2.3 # ./configure --prefix=/usr/local/apache --enable-so # make # make install 先安装支持包(注意安装顺序) 先列出配置gd2需要的网址 gd-2.0.33.tar.gz www.boutell.com/gd jpegsrc.v6b.tar.gz ftp.uu.net/graphics/jpeg http://www.ijg.org/ libpng-1.2.14.tar.tar www.libpng.org/pub/png/libpng.html libpng.sourceforge.net sourceforge.net/projects/libpng zlib-1.2.3.tar.gz http://www.zlib.net/ sourceforge.net/projects/zlib freetype-2.2.1.tar.gz http://www.freetype.org/ freetype.sourceforge.net/index2.html sourceforge.net/projects/freetype 建立初始目录: mkdir /usr/local/modules jpeg目录 # mkdir /usr/local/modules/jpeg6 # mkdir /usr/local/modules/jpeg6/bin # mkdir /usr/local/modules/jpeg6/lib # mkdir /usr/local/modules/jpeg6/include # mkdir /usr/local/modules/jpeg6/man # mkdir /usr/local/modules/jpeg6/man/man1 安装zlib # tar xzvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 不要用--prefix自定义安装目录,影响gd的安装 # ./configure # make # make install 安装freetype # tar xzvf freetype-2.2.1.tar.gz # cd freetype-2.1.5 # ./configure --prefix=/usr/local/modules/freetype # make # make install 安装libpng # tar xzvf libpng-1.2.14.tar.tar 不要用--prefix自定义安装目录,影响gd的安装 # cd libpng-1.2.5 # cp scripts/makefile.std makefile # make # make install 安装jpeg # tar xzvf jpegsrc.v6b.tar.gz # ./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static # make # make install 安装GD # tar xzvf gd-2.0.33.tar.gz # ./configure --prefix=/usr/local/modules/gd --with-jpeg=/usr/local/modules/jpeg6 --with-png -- with-zlib --with-freetype=/usr/local/modules/freetype # make # make install 安装php # mkdir /usr/local/php5 # tar -zxvf PHP-5.1.4.tar.gz # cd php-5.1.4 # ./configure --prefix=/usr/local/php5 / >--with-mysql=/usr/local/mysql / >--with-mysqli=/usr/local/mysql/bin/mysql_config / >--with-apxs2=/usr/local/apache/bin/apxs / >--with-gd=/usr/local/modules/gd / >--with-jpeg-dir=/usr/local/modules/jpeg6 / >--with-zlib / >--with-png / >--with-freetype-dir=/usr/local/modules/freetype / >--with-xmlrpc / >--with-config-file-path=/usr/local/php5/etc # make # make install # cp ./php.ini-dist /usr/local/php5/etc/php.ini 修改httpd.conf #vi /usr/local/apache/conf/httpd.conf 加载php模块,去掉注释“#”,如没有此行,请加上。 LoadModule php5_module modules/libphp5.so 加上此两行 AddType application/x-httpd-php .php .php3 AddType application/x-httpd-php-source .phps 到这里全部的安装过程已完成。 在这里我遇到一个问题,我的as4安装时没有选择安装apache服务器,没想到启动后,仍然给我装了。。我晕。 所以我刚刚上面安装的apache2.2.3版本的不能启动,提示端口已被默认安装的apache占用了,所以我们这里还 需要修改 Apache的启动脚本(以源码方式编译安装的Apache是没有启动脚本的,但这里由于我的系统默认给我装了低版 本的apache,同时也就有了启动脚本,所以我这里只需要修改就行了) 修改启动脚本 # vi /etc/rc.d/init.d/httpd 启动脚本(如果你的系统没有这个脚本,就把下面内容复制到httpd文件中去): #!/bin/bash # Startup script for the Apache2.0.X Web Server # Fixed by Comsenz - Nanu ( nanu@discuz.com) # chkconfig: - 85 15 # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then        . /etc/sysconfig/httpd fi INITLOG_ARGS="" apachectl=/usr/local/apache2/bin/apachectl httpd=${HTTPD-/usr/local/apache2/bin/httpd} prog=httpd RETVAL=0 start() {        echo -n $"Starting $prog: "        daemon $httpd $OPTIONS        RETVAL=$?        echo        [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd        return $RETVAL } stop() {        echo -n $"Stopping $prog: "        killproc $httpd        RETVAL=$?        echo        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid } reload() {        echo -n $"Reloading $prog: "        killproc $httpd -HUP        RETVAL=$?        echo } case "$1" in start)        start        ;; stop)        stop        ;; status)        status $httpd        RETVAL=$?        ;; restart)        stop        start        ;; condrestart)        if [ -f /var/run/httpd.pid ] ; then                stop                start        fi        ;; reload)        reload        ;; graceful|help|configtest|fullstatus)        $apachectl $@        RETVAL=$?        ;; *)        echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"        exit 1 esac exit $RETVAL 我这里只需要找到文件中的: apachectl=/usr/local/apache2/bin/apachectl httpd=${HTTPD-/usr/local/apache2/bin/httpd} 根据我们自己的安装情况更改以上两行中Apache的路径 授予httpd运行权限 # chmod 755 /etc/rc.d/init.d/httpd 将httpd加入系统SysV服务并设置其开机自启动 # chkconfig --add httpd # chkconfig --level 3 httpd on 这样,今后如需启动、停止、重启Apache就可以用以下方式了: # service httpd start # service httpd stop # service httpd restart                                                              radius的安装及配置 从 http://www.freeradius.org/下回来最新的freeradius-1.1.3.tar.gz # tar -zxvf freeradius-1.1.3.tar # cd freeradius-1.1.3 # ./configure --prefix=/usr/local/FreeRadius  / > --with-experimental-modules / > --with-rlm-sql-lib=/usr/local/mysql/lib/mysql/ / > --with-rlm-sql-include-dir=/usr/local/mysql/include/mysql/ # make # make install WITH_MYSQL=yes (最后在/etc/rc.conf里加上 radiusd_enable="YES" 好让radius 服务器在开机时候自动启动. [?这里有点问题,待研究--adminjun]) 网上很多资料中,在安装freeradius里,并没有加上面这么多参数,经过我多次验实,如果不加的话,90%会出 现rlm_sql_mysql找不到的情况。 我们现在把freeradius的库文件路径/usr/local/freeradius/lib 加到/etc/ld.so.conf文件中 下面我们将freeradius数据库导入进mysql,这里我要提醒一下,我们下的freeradius-1.1.3版本里没有像网上 很 多贴子里说的在/usr/local/src/freeradius-1.1.3/src/modules/rlm_sql/drivers/rlm_sql_mysql中有 db_mysql.sql的文件。这个文件已被改名为mysql.sql,存放在/usr/local/src/freeradius- 1.1.3/doc/examples里,请大家注意 # /usr/local/mysql/bin/mysql -uroot -p密码(-u和-p后面都不要空格直接加用户名和密码) mysql> create database radius   --创建radius库 mysql> /q                        --退出 # /usr/local/mysql/bin/mysql -uroot -p密码 radius < /usr/local/src/freeradius- 1.1.3/doc/examples/mysql.sql     --导入数据表结构 没有示表示已经执行了,我们来检查一下 # /usr/local/mysql/bin/mysql -uroot -p密码 mysql> use radius        --打开radius库 mysql> show tables; 看到8个表表示正确。 好,mysql的工作做完了。我们开始配置。 编辑/usr/local/freeradius/etc/raddb/radiusd.conf 在1844行找到# sql,去掉前面的#号。(在authorize{}中,如果1844号没有#sql,可能是由于版本的关系,直接 搜索authorize,在这个里面可以找到) 在2001行找到# sql,去掉前面的#号。(在accounting{}中,直接搜索也可。) 编辑/usr/local/freeradius/etc/raddb/sql.conf 修改这三行参数,这里的password是我们mysql的密码 server="localhost" login="root"          建议用root用户,免去不必要的麻烦 password="pass" 编辑/usr/local/freeradius/etc/raddb/client.conf client 172.16.1.123 {   nas设备的地址        secret         =radius  通讯用密码        shortname      =routeros 为这个连接使用的别名        nastype        =other    } 好了,保存。 我们先加一个测试账号。     insert into radcheck (username,attribute,op,value) values (‘test’,’User-Password’,’:=’, ’test’) 启动radius调试模式 # /usr/local/radius/sbin/radiusd -X (ros已经配置好pppoe) 这时linux下环境基本配好,现在做web管理,freeradius自带了一个web管理程序dialup_admin. 我按“routeros pppoe+freeradius认证傻瓜专教程”上的资料配置apach上Alias始终没有成功,可能是权限上 的问题,我对linux不是太熟,所以测试了很久也没办法。最好只得直接将/usr/local/src/freeradius- 1.1.3/dialup_admin/文件夹全部拷贝到apach网页目录下/usr/local/apach/htdocs下。 修改dialup_admin/conf/下的admin.conf文件中的如下参数: sql_type:mysql sql_server:localhost(sql地址) sql_port:3306  (默认端口) sql_username:root sql_password:root123(密码) sql_database:radius(数据库名) 重新加载apach配置文件:直接打开linux的“服务配置”工具,找到httpd,选择重新启动 访问: http://localhost/dialup_admin/htdocs/index.html 能正常打开各页面就ok了。呵呵。默认是打开的sql调试模式,所以页面上看上去会有些乱。可以在admin.conf 中找到sql_debug.把true改为false即可关闭。 怎么样,页面整洁干净多了吧。嘿嘿。(ADMINJUN) 接笔记本测试。。。通过。 几点注意:mysql 安装后,默认只能本地访问,如果你想用其它工作站上进行管理的话,需要如下操作: Host "xxx.xxx.xxx.xxx" is not allowed to connect to this mysql server. 如何解决客户端与服务器端的连接(mysql) :"xxx.xxx.xxx.xxx" is not allowed to connect to this mysql server.   1、进入mysql,创建一个新用户user: 格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码"; grant select,update,insert,delete on *.* to user@10.10.10.10 identified by "user";    查看结果,执行:    use mysql;    select host,user,password from user;    可以看到在user表中已有刚才创建的user用户。host字段表示登录的主机,其值可以用IP,也可用主机名,    将host字段的值改为%就表示在任何客户端机器上能以user用户登录到mysql服务器,建议在开发时设为%。         grant all on *.* to root@'%' identified by "密码" ;        all表示所有权限    update user set host = '%' where user = 'user';    2、 ./mysqladmin -uroot -p密码 reload   ./mysqladmin -uroot -p密码 shutdown   3、./mysqld_safe --user-root &   记住:对授权表的任何修改都需要重新reload,即执行第3步。   如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:    use mysql;    insert into db values    ('192.168.88.234','%','user','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');    update db set host = '%' where user = 'user';(如果要赋于全部权限,5.0版本应该是34个Y) 重复执行上面的第2、3步。 下面进行mac地址绑定操作。 为mysql的数据库radius中的表radcheck增加一个mac字段,varchar(20)类型 在上面的radiusd.conf中加多一个步骤 post-auth {        #  See "suthentication Logging Queries" in sql.conf      sql #去掉原来的注释语句             } 修改sql.conf中的authorize_check_query为 #这里修改验证方式,加上mac验证(我是使用了大小写不敏感的那条sql语句改写)         authorize_check_query = "SELECT id,UserName,Attribute,Value,op FROM ${au thcheck_table} WHERE Username = '%{SQL-User-Name}' and (mac='%{Calling-Station-I d}' or isnull(mac) or mac='') ORDER BY id" #如果需要对大小写敏感的话使用下面的语句 #       authorize_check_query = "SELECT id,UserName,Attribute,Value,op FROM ${au thcheck_table} WHERE STRCMP(Username, '%{SQL-User-Name}') = 0 and (mac='%{Calling-Station-I d}' or isnull(mac) or mac='')  ORDER BY id"       修改postauth_query语句 #change here 把postauth_query改为记录mac地址的过程了         postauth_query = "UPDATE ${authcheck_table} set mac='%{Calling-Station-I d}'  WHERE Username = '%{SQL-User-Name}' and (mac='' or isnull(mac))"  

    最新回复(0)