OpenSSH Server & FreeRadius Server Authenticate via Lightweight Directory Access Protocol

安装并配置LDAP Server

apt-get update && apt-get -y install slapd ldap-utils

输入LDAP Server的管理员密码(共两次):


 

重新配置LDAP:

dpkg-reconfigure slapd

 

Omit OpenLDAP server configuration? : no

DNS domain name: domain.com


 

NOTE:此处输入的DNS domain将会作为你的基础搜索区分名称(Base DN)。以”.”为分割符,每个”.”都是一个dc。

举个例子:你输入了domain.com,那么你的Base DN就是dc=domain,dc=com,如果输入了hello.world.com,那么你的Base DN就是dc=hello,dc=world,dc=com。

 

Organization name: domain.com

Administrator password:

NOTE:此处输入的管理员密码将会覆盖安装时输入的密码。

Database backend to use: HDB

Do you want the database to be removed when slapd is purged?: No

Move old database?: Yes

Allow LDAPv2 protocol?: No

安装并配置完毕后,会自动创建管理员账号(Bind DN),默认为cn=admin,你的Base DN。

添加Organizational Units(下文简称OU)

此处以分别使用CLI模式添加名称分别为users与groups的OU。

 

保存以下内容到一个文件,例如usersandgroups.ldif:

 

 

NOTE:dn为此Organizational Units的区分名,简单理解成路径,只不过这个路径是从你要找的文件名开始。例如这里的dn: ou=groups,dc=domain,dc=com,则代表groups这个在dc=domain,dc=com这个Base DN的中。再举一个例子:dn: ou=second,ou=first,dc=domain,dc=com,代表second这个OU位于dc=domain,dc=com这个Base DN的first OU中。

 

使用ldapadd添加:

ldapadd -D “cn=admin,dc=domain,dc=com” -xw管理员密码 -f文件名

 

NOTE:-D后面接的是你的管理员账号。

 

看到类似提示:

adding new entry “ou=groups,dc=domain,dc=com”

 

adding new entry “ou=users,dc=domain,dc=com”

则代表添加成功。

可以使用ldapsearch查看:

ldapsearch -x -b “你的Base DN”

 

添加用户与用户组的记录

此处分别使用CLI添加类型为posixGroup的用户组与posixAccount的用户。

保存以下内容到文件,例如newuserandgroup.ldif(请自行修改dn)

 

 

NOTE:有关dn的,前文已做解释,此处不说。cn是该记录在LDAP中的名称,gidNumber是用户组id,memberUid是用户组的名称,givenName是名字,sn是姓,gidNumber是用户要加入的用户组的id,homeDirectory是用户的家目录,loginShell是用户登录入系统时使用的Shell,uidNumber是用户的uid,uid是用户的用户名,userPassword是用户的密码。

 

同样的,使用ldapadd添加记录:

ldapadd -D “你的Base DN” -xw管理员密码 -f文件名

 

Linux使用LDAP作登录验证

安装验证使用的PAM模块,nss模块,以及nscd:

apt-get -y install libnss-ldap libpam-ldap nscd

 

LDAP server Uniform Resource Identifier: ldap://localhost/

NOTE: 一定要把ldapi:///改成ldap://,再输入LDAP Server的IP。

 


 

Distinguished name of the search base: dc=domain,dc=com

NOTE:此处输入你的Base DN。

 

 

LDAP version to use: 3

Make local root Database admin: Yes

Does the LDAP database require login?: No

LDAP account for root: cn=admin,dc=domain,dc=com

NOTE:此处输入你的Bind DN。

LDAP root account password:

 

修改/etc/nsswitch.conf文件,在passwd,group,shadow开头的三行末尾的compat前加入ldap,并以空格与compat分开:


 

修改/etc/pam.d/common-session文件,在末尾加入此行:

 


 

重启nscd:

service nscd restart

 

最后使用已在LDAP Server添加的账号记录登录此系统:

ssh newuser@localhost

 


 

 

 

Freeradius使用LDAP作验证

此处将会启用Freeradius的LDAP模块。

 

NOTE:开始下面步骤前,建议你使用http://soft.yzs.me/freeradius.sh安装FreeRadius Server

 

首先安装freeradius-ldap:

apt-get -y install freeradius-ldap

编辑/etc/freeradius/modules/ldap文件,把server等于号后面的内容改为你的LDAP Server IP,去掉identity前面的”#”,把等于号后面的内容改为你的Bind DN,去掉password前面的”#”,把等于号后面的内容改为你的LDAP Server的管理员密码,把basedn等于号后面的内容更改为你的Base DN,最后去掉password_attribute开头的”#”。

 

修改完毕后的内容应该如下(已去除被注释的行)

 

修改/etc/freeradius/sites-available/default文件。


authorize {

此处内容省略

}

的”{“与”}”之间加入一行:ldap。


authenticate {

此处内容省略

}

的”{“与”}”之间加入下面内容:

Auth-Type LDAP {

ldap

}

 

如果使用http://soft.yzs.me/freeradius.sh安装FreeRadius Server,则修改完毕后/etc/freeradius/sites-available/default文件的内容一般如下:

 

 

重启Freeradius:

service freeradius restart

 

最后使用radtest,对已在LDAP Server添加的用户记录进行测试:

radtest newuser newuser localhost 0 testing123

 

如果返回的内容有Access-Accept,则代表验证成功:

Sending Access-Request of id 27 to 127.0.0.1 port 1812

User-Name = “newuser”

User-Password = “newuser”

NAS-IP-Address = 208.51.63.112

NAS-Port = 0

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=27, length=20

 

教程到此完毕,感谢阅读。

云雾互联以及微宇宙的管理员——Extreme制作。

 

QQ:865475185

Email:e@yzs.me

 

除非另有声明,本文档内容采用知识共享署名-非商业性使用-相同方式共享授权。

Freeradius Server & Freeradius Client with Poptop Server and L2TP Over IPSec(可统计流量)

本文于2014年3月22日发布,2014年9月8日更新。

此Shell Script可选择安装Freeradius Server,Freeradius Client,Poptop Server(PPTP),L2TP Over IPSec。

其中Freeradius Server是提供验证服务,Freeradius Client与Freeradius Server通讯,至于Poptop Server和L2TP嘛,你懂的。

目前支持的Linux发行版本有:CentOS 6,Debian 6/7/8,Ubuntu 12/13/14。

要安装Freeradius Server,要求有一个可用的MySQL Server。


 

安装前服务器的配置:

先确定服务器的hostname为正确的FQDN格式。不带“.”的hostname是错误的。

执行:

输出的内容应该是你服务器的IP(使用NAT网络,输出的是内网IP),否则请执行:

 

1. 安装各种相关程序:

CentOS 6:

安装并启动MySQL Server:

设置MySQL root用户密码:

安装wget:

Ubuntu/Debian:

安装并启动MySQL Server:

安装wget:

2. 开始安装

填写的相关信息:

安装信息

选项2会额外要求输入Freeradius Server的IP以及通讯密钥。

看到“Enjoy it now.”,即表示已成功安装。


添加用户:

在radcheck中添加响应的记录即可,例如添加一个用户名为username,密码为password的用户,密码以明文保存,可执行:

 

流量统计&限制:

使用本Shell Script安装的Freeradius Server,可使用三种不同周期的流量统计&限制方式,分别为一小时(Hourly-Traffic),一天(Daily-Traffic)和一个月(Monthly-Traffic)。

例如要限制用户名为username的用户一个月流量为1GB,即1024 MB,则在表radcheck中插入响应的记录,执行:

其中流量的单位为Mbytes。

至于更多的功能,我就不在此作文章了,各位可自行查看Freeradius的WIKI。


 

关于OpenVZ的问题:

可能有人会问支不支持OpenVZ。

如果准确来说的话,各位不应该问我的Shell Script支不支持OpenVZ,而应该问你的OpenVZ VPS支不支持我的Shell Script。

OpenVZ须具备下述条件方可使用PPTP,L2TP以及IPSec:

1. OpenVZ VPS拥有以下设备文件以及对其操作的权限:

2. 物理服务器已开启以下模块:

3. OpenVZ VPS拥有IPTABLES NAT模块的权限。

可通过执行此命令进行检查:

不出现

则表示拥有IPTABLES NAT模块的权限。


 

PPTP,L2TP的使用方法:http://www.ipfog.com/knowledgebase.php?action=displaycat&catid=5

WHMCS模块——Freeradius MySQL(可实时查看流量使用情况)

上周完成了个Freeradius Server & Freeradius Client with Poptop Server and L2TP Over IPSec的安装程序,考虑到可能有需要与WHMCS对接的,因此特意弄了个WHMCS的模块。

下载地址:http://soft.yzs.me/freeradius.tar.bz2

使用方法:

解压下载的文件,把freeradius目录上传至WHMCS的modules/servers/目录中。

登录Freeradius Server的MySQL Server,添加允许远程连接MySQL的用户,且对Freeradius Server的数据库拥有所有权限。另外,my.cnf中如果有bind 127.0.0.1,需要注释掉。

登录WHMCS管理员区域,添加服务器,用户名是MySQL的用户名,密码是该MySQL用户的密码。

添加产品,到“Module Settings”标签页设置参数:

“Freeradius Database Name”为Freeradius Server使用的数据库名;“Password Type”为MySQL中密码的保存方式,可选MD5加密或明文保存(用MD5方式保存,虽然radtest是回应Accept,但PPTP仍然提示密码错误,所以用PPTP的还是用明文保存吧);“User Group Name”为新建的用户加入的组名称,留空则不加入任何组。

“Radcheck”为添加用户时往radcheck表中额外加入的记录,不需要输入id和用户名,不同字段以“|”隔开,不同记录以“,”隔开。例如“Hourly-Traffic|:=|1024”,Hourly-Traffic属于attribute,:=属于op,1024属于value,id与用户名会自动填写。

“Radreply”为添加用户时往radreply表中额外加入的记录。id与用户名自动填写,不同字段以“|”隔开,不同记录以“,”隔开。例如“Framed-IP-Netmask|:=|255.255.255.0”,Framed-IP-Netmask属于attribute,:=属于op,255.255.255.0属于value。

例如图中的设置:

settings

则添加用户后radcheck表该用户的记录为:radcheck

radreply表该用户的记录为:

radreply

 

 

切换到“Custom Fields”标签页,添加一个名为“Traffic Usage”的Custom Fields,“Field Type”为“Text Area”,并勾选“Admin Only”:Custom Fields

 

如果设置无误,即可正常使用:

Freeradius MySQL

 

NOTE:有任何的问题或建议,欢迎提出。