Ubuntu中的几种用户认证以及在Apache中的相应配置


这个文章说一说在Linux中的有关用户认证的几种方式,应该都是比较简单的几种认证方式,然后就是集合Apache进行网页浏览的认证方式,就是有些的配置比较偏门,然后我的文件结构和网上找的好多也都不一样,所以研究了好一阵,有些我也不是特别东,如果有错的话可以提出来然后我改正。

LDAP

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
在这里我需要在服务器上配置好LDAP,我的环境还是Ubuntu。

安装

直接就能安装
apt-get install slapd ldap-utils migrationtools
然后执行
dpkg-reconfigure slapd
之后按照提示一步一步走,可以按照参考链接的第一条做。
image-1
image-2
image-3
image-4
image-5
image-6
配置好了如下图所示
image-7
执行查看是否正确输出
ldapsearch -x -b dc=nodomain
image-8
如果没有检查是否没有开始服务
/etc/init.d/slapd start

操作

然后就可以进行相关操作了

添加

编写文件如下

//File:lpad_data.ldif

dn: ou=People,dc=nodomain
objectClass:organizationalUnit
ou: People

dn: ou=Groups,dc=nodomain
objectClass: organizationalUnit
ou: Groups

dn: cn=DEPARTMENT,ou=Groups,dc=nodomain
objectClass: posixGroup
cn: SUBGROUP
gidNumber: 5000

dn: uid=USER,ou=People,dc=nodomain
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: USER
sn: LASTNAME
givenName: FIRSTNAME
cn: FULLNAME
displayName: DISPLAYNAME
uidNumber: 10000
gidNumber: 5000
userPassword: USER
gecos: FULLNAME
loginShell: /bin/bash
homeDirectory: USERDIRECTORY

ldapadd -x -D cn=admin,dc=nodomain -W -f ldap_data.ldif
输入密码之后,就可以看到成功添加了一条数据
image-9

查询

执行如下命令可以查询出当前域的所有信息吧好像
ldapsearch -x -b dc=nodomain
image-15
执行如下命令进行数据的查询
ldapsearch -x -b dc=nodomain ‘uid=USER’
image-11
执行如下命令可以获取指定的数据
ldapsearch -x -LLL -b dc=nodomain ‘uid=USER’ cn gidNumber uidNumber
image-10

删除数据

我总算会删除了,删了一下午,里面的参数吧,-w后面接的是之前设好的密码,也可以不写,然后会提示输入密码的,这里’uid=USER,ou=People,dc=nodomain’的内容是上面的.ldif文件的第一行吧,这样的,必须得一样
ldapdelete -x -D “cn=admin,dc=nodomain” -w root ‘uid=USER,ou=People,dc=nodomain’
如果成功了应该不会有回显的,不成功的话,会提示报错,比如
ldap_bind: Invalid credentials (49)
这个问题有可能是密码错了,检查一下-w后面接的参数对不对。
之后在此查询一下
ldapsearch -x -b “dc=nodomain” -D “cn=admin.dc=nodomain” ‘uid=USER’ -w root
可以看到已经查找不出来数据了,说明删除了
image-12

修改

在修改前先查看一下信息
ldapsearch -x -b dc=nodomain ‘uid=USER’
image-19
在此准备将这个人的sn姓修改一下,修改同样需要一个LDIF文件,可以根据需求做修改

//File:ldap_modify.ldif
dn: uid=USER,ou=People,dc=nodomain
changetype: modify
replace: sn
sn: LASTNAME_Modified

执行
ldapmodify -a -D cn=admin,dc=nodomain -w root -f ldap_modify.ldif
image-21
千万不要这么使用:ldapmodify -a -D “uid=USER,ou=People,dc=nodomain” -w root -f ldap_modify.ldif,否则会一直报错ldap_bind: Invalid credentials (49)
执行ldapsearch -x -b dc=nodomain ‘uid=USER’
再次查看信息,通过对比可以看出sn已经做了修改
image-20
关于修改,可以查看参考链接里面的信息

编写

关于IDLF文件的编写,这是一个树结构,大致如下
image-13
一些关键字如下
image-14

Shell

在此可以先了解一下shell脚本,因为ldap的命令又长又难记,写一个脚本会方便很多的。
它是一个脚本,并不能作为正式的编程语言。因为是跑在linux的shell中,所以叫shell脚本。说白了,shell脚本就是一些命令的集合。举个例子,我想实现这样的操作:1)进入到/tmp/目录;2)列出当前目录中所有的文件名;3)把所有当前的文件拷贝到/root/目录下;4)删除当前目录下所有的文件。简单的4步在shell窗口中需要你敲4次命令,按4次回车。这样是不是很麻烦?当然这4步操作非常简单,如果是更加复杂的命令设置需要几十次操作呢?那样的话一次一次敲键盘会很麻烦。所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。
Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。test.sh中第一行一定是 “#! /bin/bash” 它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行,’#’表示注释。
运行的话直接sh xx.sh即可,也可以通过./ss.sh运行,但是好像需要什么权限。
下面是我写的一个在这里能用得到的一个脚本,他的功能就是执行这四条语句,删除域中的信息。

#! /bin/bash
date
ldapdelete -x -D "cn=admin,dc=nodomain" -w root 'ou=People,dc=nodomain'
ldapdelete -x -D "cn=admin,dc=nodomain" -w root 'uid=TomBlack,ou=People,dc=nodomain'
ldapdelete -x -D "cn=admin,dc=nodomain" -w root 'cn=DEPARTMENT,ou=GROUPS,dc=nodomain'
ldapdelete -x -D "cn=admin,dc=nodomain" -w root 'ou=GROUPS,dc=nodomain'
IDLF

编写测试ldif文件,具体怎么写可以百度一下或者在参考链接里面找找有没有能用的

//File:ldap_test.ldif
dn: ou=People,dc=nodomain
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=nodomain
objectClass: organizationalUnit
ou: Groups

dn: cn=DEPARTMENT,ou=Groups,dc=nodomain
objectClass: posixGroup
gidNumber: 5000

dn: uid=TomBlack,ou=People,dc=nodomain
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Tom Black
uid: TomBlack
sn: Black
givenName: Tom
uidNumber: 10000
gidNUmber: 5000
mail: TomBlack@126.com
telephoneNumber: 15809281414
UserPassword: TomBlack
displayName: DISPLAYNAME
loginShell: /bin/bash
homeDirectory: USERDIRECTORY

之后执行
ldapadd -x -D cn=admin,dc=nodomain -w root -f ldap_test.ldif
可以看到成功添加新条目
image-17
查看一下
ldapsearch -x -b dc=nodomain ‘uid=TomBlack’
可以看到
image-18
也可以通过在后面添加参数,查看具体的数据值。
强烈建议直接复制指令,因为我自己瞎折腾写命令因为记错了,所以错了好久

BASIC认证

在需要对服务器资源进行保护,通常的做法是在应用层通过鉴权来实现,如果你嫌自己去实现鉴权太麻烦,那就直接让Apache去帮你实现吧!
Apache常见的用户认证可以分为下面三种:

  • 基于IP,子网的访问控制(ACL)
  • 基本用户验证(Basic Authentication)
  • 消息摘要式身份验证(Digest Authentication)

如果一个文件使用basic authentication保护,那么当有想要访问这个文件的请求到来的时候,apache服务器会返回一个“401 Authentication Required Header”,当客户端比如浏览器收到返回的401 header之后,就会要求用户输入用户名和密码.
由于HTTP协议是无状态的(stateless),因此每个请求都会要求输入用户名和密码。幸运的是,你仅仅需要填写一次用户名和密码,之后浏览器会自动填充。这在你关闭浏览器之前都是有效的,重启浏览器你需要重新填写用户名和密码。(但是有的浏览器即使你重启也依旧会自动填写)

操作

创建密码,在/etc/apache2目录下新建一个password文件夹,切换到/etc/apache2目录,这是ubuntu阿帕奇默认安装的目录,然后执行如下命令创建密码文件,然后按照提示指定密码,我这里添加了用户Tom,密码为Tompassword
sudo htpasswd -c password/mypasswd Tom
安装了阿帕奇之后应该默认就有htpawd程序,这应该算是一个加密程序?直接使用命令就好了,如果没有的话大概需要安装apache-util类似名字的软件
这里我的密码文件名写错了,注意一下
同时查看一下密码文件如下
image-22
之后我们再添加一个用户Jim,密码为Jimpassword,因为刚才已经创建了密码文件,这里不需要-c参数了。
image-23
然后查看一下密码文件里面的内容,虽然这里显示的是加密后的密码,但是在登陆的时候还是要使用明文密码进行登陆。
image-24
之后需要修改一下配置文件
我的教程里面给的配置文件是httpd.conf,但是找不到,原因是apache2里面没有这个文件,只有apache2.conf
所以修改apache2.conf文件
网上几乎所有的配置都是按照apache,修改httpd.conf文件,但是现在都是apache2了,所以几乎都用不成,得照着改一改弄一弄试一试
修改/etc/apache2/apache2.conf文件内容,在目录部分添加如下

File:/etc/apache2/apache2.conf
<Directory "/var/www/html">
	Options Indexes FollowSymLinks
	Allowoverride authconfig
	Order allow,deny
	Allow from all

	AuthName "test"
	AuthType basic
	AuthUserFile /etc/apache2/password/mypasswd
	require valid-user
</Directory>

其中Allowoverride authconfig一行表示允许对/var/www/html目录下的内容进行用户认证,Directory就是指示我们的目录。
要注意,如果配置失败了就会一直500报错,天真的我以为这是登陆失败的提示,要注意的有配置文件中属性名的拼写是否正确,路径是否正确以及密码文件名是否正确等等
之后重启阿帕奇
sudo /etc/init.d/apache2 restart
image-25
然后输入网址localhost测试一下,可以看到现在要求我们进行验证
image-26
如果验证失败,会一直弹出对话框,如果取消则会显示未认证
image-29
验证成功的话就可以正常登陆网页了。

Apache配置LDAP

上面已经安装好了LDAP,下面可以进行相关配置,然后在Aapche中进行配置,使得可以使用LDAP中的数据进行登陆验证。
在进行编写配置文件前需要加载Apache的LDAP模块,在/etc/apache2/mods-available文件夹中存放着当前可用的所有模块,/etc/apache2/mods-enabled中存放着当前配置使用的模块,在mods-available文件夹中找有关的ldap文件添加到mods-enables
需要的添加的文件有

  • authnz_ldap.load
  • ldap.load
  • ldap.conf
由于配置文件中的的编写是默认将 /etc/apache2/mods-enabled中所有的 .load和.conf文件加载进来,因此将需要的模块文件复制到这个文件夹就好了。 这里有挺多的问题,由于阿帕奇好像有两种,一个是直接使用sudo apt-get install apache2,这个安装很方便,但是默认配置文件是apache2.conf,模块文件都是mods-*文件夹中的.load以及对应的.conf文件,配置文件中是默认加载全部可用的模块文件。这里他的文件是利用链接的方式的,但是我并没有连接成功,好像是软链接 第二个是通过编译源码进行安装,从阿帕奇官网下载源码,httpd其实就是阿帕奇,需要提前安装好apr、apr-util和pcre,同样是配置编译安装,下载apache之后配置、make、make install就好了,在配置的时候需要通过参数添加前三个程序的路径,在配置的时候通过--prefix=/path可以指定程序的安装路径,在想卸载的时候直接删除这个文件夹就好了,不会有任何问题。安装好之后可能会报错(有关ServerName的),修改code>conf/httpd.conf配置文件中添加参数ServerName localhost:80,重启就可以正常登陆localhost了。在modules文件夹中可以看到.so的模块文件,但是吧,这里并没有有关ldap的模块,原因是因为如果想要ldap的模块,需要在编译的时候使用参数指定ldap,或者下载ldap的源码文件自己编译,但是我指定参数没用,单独编译吧,好不容易找到一个源码,编译又提示源码里有问题,用不成。 在我后面安装apache2-dev的时候,看到了最后的提示信息,然后发现,其实是有.so文件的,只不过路径很不对,在/usr/lib/apache2里面,至于详细说明,我在下一步里面写一下。

好了,现在需要的三个模块文件已经添加好了,现在编写一下需要的配置文件etc/apache2/apache2.conf,修改Directory的参数

//File:/etc/apache2/apache2.conf
<Directory "/var/www/html">
	Options Indexes FollowSymLinks
	Allowoverride authconfig
	Order allow,deny
	Allow from all
	AuthName "test"
	AuthType basic
	AuthBasicProvider ldap
	#AuthLDAPAuthoritative on
	#AuthLDAPEnabled on
	AuthLDAPURL "ldap://localhost/ou=People,dc=nodomain"
	require valid-user
</Directory>

这里面注释的两个参数默认好像就是on,这里设置也没用,干脆直接注释了,不需要了。
之后重启阿帕奇sudo /etc/init.d/apache2 restart
如果OK无所谓,如果是failed的话,执行journalctl -xe查看详情,里面会有关于错误的信息。
然后登陆localhost,可以看到登陆界面,这里的登陆用户名和密码就是我们上步导入的ldap_test.ldif文件中的uidUserPassword
image-30
输入TomBlack和TomBlack,可以正常登陆了。

配置RADIUS

使用freeradius配置radius。
Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866定义,是目前应用最广泛的AAA协议。AAA是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用远程访问拨号用户服务(Remote Authentication Dial In User Service,RADIUS)来实现AAA。RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。
freeradius一般用来进行账户认证管理,记账管理,常见的电信运营商的宽带账户,上网账户管理,记账,都是使用的radius服务器进行鉴权记账的。
Freeradius包含一个radius服务器和radius-client,可以对支持radius协议的网络设备进行鉴权记账,常见的开源路由器操作系统:如Openwrt,DD-wrt等,都支持radius协议,对PPPOE,热点,VPN等服务器进行账户管理认证,记账。
freeradius功能十分强大,支持众多的数据库。

执行sudo apt-get install freeradius freeradius-ldap freeradius-mysql进行安装freeradius。
安装完成之后,他会自己启动,需要手动关闭,不然后面会报错,或者直接简单粗暴从任务管理器中kill相关进程也行
service freeradius stop
修改一下配置文件,这里我的路径是/etc/freeradius/3.0,但是此时似乎并没有权限,需要chmod 777 /etc/freeradius授权一下。将下列内容取消注释,作为测试数据。

//File:/etc/freeradius/3.0/users
steve	Cleartext-Password := "testing"
	Service-Type = Framed-User,
	Framed-Protocol = PPP,
	Framed-IP-Address = 172.16.3.33,
	Framed-IP-Netmask = 255.255.255.0,
	Framed-Routing = Broadcast-Listen,
	Framed-Filter-Id = "std.ppp",
	Framed-MTU = 1500,
	Framed-Compression = Van-Jacobsen-TCP-IP

重启freeradius,一定要用管理员权限,X是调试模式
sudo freeradius -X
过程中会出来一堆巴拉巴拉
image-31
image-32
这个终端就这样挂着了,然后再开一个终端,执行radtest steve testing localhost 1812 testing123进行测试,其中参数分
别为用户名、密码、IP和端口、key(key是/clients.conf中的secret)
回显内容分别为
image-33
image-34
image-35
可以看到,验证成功了,Access
除了通过编辑配置文件来读取认证信息,还可以链接mysql,从数据库中获取用户数据。
在此需要设置为使用unix账号进行登陆验证,首先随便登陆一下,可以看到如下信息
image-36
从这里面可以得到一些信息吧,首先上面是接收到了一个Request,然后radius进行验证,注意,他执行的文件是/etc/freeradius/3.0/sitrs-enabled/default,其中的authorize模块就是他读取认证配置信息的地方,可以看到这里都是FALSE,说明都失败了,然后他提示User-Name=notfound,说明没找到用户名,随后返回了一个认证拒绝的信息。
现在知道了是从default文件中读取的,我们就要修改这个文件里的参数让它支持unix账号登陆。
打开该文件,找到这一段

#  Pull crypt'd passwords from /etc/passwd or /etc/shadow,
#  using the system API's to get the password.  If you want
#  to read /etc/passwd or /etc/shadow directly, see the
#  mods-available/passwd module.
#
unix

image-37
能看到他说这个模块可以从/etc/passwd或者/etc/shadow获取加密的密码信息,而我们知道这文件正好就是保存linux账号的文件,可以判定这个模块就是unix登陆模块,把底下#unix的注释去掉,保存退出。
之后需要查看模块是否安装,和ldap一样,在mods-available中存放的有所有模块文件,mods-enabled中存放着当前配置可用的模块,我们需要的模块就是unix,他已经包含在内了,直接重启服务即可。
sudo freeradius -X
重新开一个终端,执行如下测试,此时我的用户名和密码使用的就是我的ubuntu的账号
radtest kang root localhost 1812 testing123
可以看到接收到了一个Access-Accept
image-38
image-39
此时已经完成了使用freeradius配置radius服务器,并完成基于unix账号进行认证。

Apache配置RADIUS

然后吧,要将RADIUS应用于Apache服务器,利用这个进行服务的验证,由于RADIUS是基于unix账号的,因此在配置完成之后就可以利用unix账号成功通过页面的验证了。
Apache配置RADIUS有两个模块,分别是mod_auth_radiusmod_auth_xradius,在此采用后者,支持多个RADIUS服务器,可以实现主备模式的配置。
之前我在看LDAP模块的时候,就看到了加载模块可以独立编译模块然后进行加载,需要使用apxs,这里其实也是采用这个方式,通过编译生成独立模块文件然后加载模块,而apxs是包含在apache2-dev里,因此需要先安装这个
sudo apt-get install apache2-dev
之后下载模块的源码

wget http://www.outoforder.cc/downloads/mod_auth_xradius/mod_auth_xradius-0.4.6.tar.bz2
tar -xjvf mod_auth_xradius-0.4.6.tar.bz2
cd mod_auth_xradius-0.4.6

修改src/xradius_cache.c,将unixd_config修改为ap_unixd_config
image-42
之后进行配置编译

./configure
sudo make
sudo make install
sudo cp /usr/lib/apache2/modules/mod_auth_xradius.so /etc/apache2/mods-available

这样就生成了对应模块,在这里就需要对这些进行说明了。
其实从apt-get安装的阿帕奇是有.so模块文件的,就在/usr/lib/apache2/modules,这里面有一堆模块文件,也可以看到我们刚生成的模块。
下面就说说mods文件夹,这个文件夹里面有.load.conf文件,后者似乎没什么用,前者,其实并不是真正的模块文件,其实是一个文本文件,查看其中的内容就会发现其实是类似于LoadModule xxx_module /etc/apache2/xxx,这样子,后面的路径对应的是模块.so文件所在的位置。
就是说它绕了一个弯子实现了一个很直接的东西,好了,继续。
编辑/etc/apache2/apache2.conf配置文件的内容,添加新的内容如下,可以将上面的Directory删除,没影响。
先加载模块,再定义Directory

//File:/etc/apache2/apache2.conf
# My Module
LoadModule auth_xradius_module /etc/apache2/mods-available/mod_auth_xradius.so
<Directory "/var/www/html">
	Options Indexes FollowSymLinks
	Allowoverride authconfig
	Order allow,deny
	Allow from all
	AuthName "test"
	AuthType basic
	AuthBasicProvider xradius
	AuthXRadiusAddServer "localhost:1812" "testing123"
	require valid-user
</Directory>

然后重启阿帕奇
sudo /etc/init.d/apache2 restart
启动freeradius
sudo freeradius -X
浏览器访问localhost,之后会出现熟悉的登陆界面,此时我们输入ubuntu的账号,用户名和密码,登陆失败的话回继续弹出对话框,如果成功后会进入正常页面,同时freeradius会输出相应信息,但是我不太懂为什么会请求三次
image-43
此时成功在Apache上配置好了基于unix的RADIUS了。

freeradius配置LDAP

使得RADIUS可以和LDAP进行互通,然后就可以使用ldap的数据库中的用户数据,进行验证登陆了。
先修改/etc/freeradius/3.0/sites-enabled/default的配置信息,找到如下内容,如果你的ldap是注释状态,你需要把注释去掉,保存退出。

//File:/etc/freeradius/3.0/sites-enabled/default
#  The ldap module reads passwords from the LDAP database.
	-ldap

随后修改文件/etc/freeradius/3.0/mods-available/ldap,需要修改一下其中的配置,在修改好以后,还需要把这个文件复制到mods-enabled文件夹,干脆直接先复制过去然后在那个文件夹中修改也行,大致的参数值有这些,IP和端口都是默认的,localhost:389

//File:/etc/freeradius/3.0/mods-available/ldap
identity = 'cn=admin,dc=nodomain'
password = root
base_dn = 'ou=People,dc=nodomain'

之后新建文件/etc/freeradius/3.0/sites-available/site_ldap,内容如下

//File:/etc/freeradius/3.0/sites-available/site_ldap
server site_ldap{
	listen{
		ipaddr=0.0.0.0
		port=1833
		type=auth
	}
	authorize{
		update{
			cotrol:Auth-Type :=ldap
		}
	}
	authenticate{
		Auth-Type ldap{
			ldap
		}
	}
	post-auth{
		Post-Auth-Type Reject{
		}
	}
}

之后进行软连接
sudo ln -s /etc/freeradius/3.0/sites-available/site_ldap /etc/freeradius/3.0/sites-enabled/
然后授权一下,再修改一下所有者

sudo chmod 640 ldap
sudo chown freerad:freerad ldap

并不是777权限一定就好,比如上面如果授权777的话,会如下报错
image-46
然后启动RADIUS服务,sudo freeradius X
执行radtest TomBlack TomBlack localhost 1812 testing123,此时的用户名和密码成了LDAP数据库中之前导入的测试数据,可以看到接收到了access-accept
image-44
freeradius的输出信息
image-45
至此已经完成了在freeradius中配置ldap认证。

Apache基于LDAP的RADIUS认证

感动,这是这个实验的最后一步了。
这一步大致是在保持RADIUS的配置下,使用LDAP进行用户认证。
这个其实我觉得没什么好配置的了,Apache的配置现在就是RADIUS,RADIUS的配置也是使用LDAP了,所以启动freeradius,直接访问localhost,可以看到对话框,输入LDAP中的用户名和密码数据,即可登陆
image-47
freeradius的输出信息
image-48

总结

到这里大概这个实验就搞定了,我大概做了三四天吧,几乎一直在弄,但是还真让我学了不少东西,还是有少收获的,嗯,就这样。

参考链接

【ubuntu - ldap安装配置】 – Rock.Jiang
【LDAP基础:7:使用ldapmodify和ldapdelete进行修改或删除】 – liumiaocn
【LDAP基础:6:使用ldapsearch进行数据查询】 – liumiaocn
【LDAP基础:5:使用ldapadd进行数据增加】 – liumiaocn
【LDAP概念和原理介绍】 – WilburXu
【Ldap ldif 文件 样例】 – iteye_7726
【使用ldapmodify修改条目】 – gogourl
【使用Apache配置需要用户名和密码认证才能访问的网站】 – wdz306ling
【HTTP基本认证(Basic Authentication)】 – 醇氧
【在ubtunu使用apt-get安装和配置freeradius】 – stationing
【ubuntu安装配置freeradius步骤】 – 莺声门径
【Freeradius服务器的搭建流程】 – 我是大笨蛋
【Ubuntu 12.04 Freeradius 安装实际过程】 – forgaoqiang
【Freeradius配置文件radiusd.conf详解】 – libinbin_1014
【基于Apache2配置Radius认证】 – 来自地球的我

OK,THANKS FOR READING.BYE BYE~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值