现在的位置: 首页 > 综合 > 正文

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

2013年06月17日 ⁄ 综合 ⁄ 共 9300字 ⁄ 字号 评论关闭
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))"

 

【上篇】
【下篇】

抱歉!评论已关闭.