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

 

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

WHMCS LDAP Modules

最近有人向我谈起一个与一账户信息在多个OpenSSH Server上同步的问题。

这两三天我抽时间测试了pam_mysql,pam_radius,以及OpenLDAP这三个东西。其中pam_mysql,pam_radius虽然可以用某个服务器验证登录信息,但是都需要在各个服务器上使用useradd添加该用户。

OpenLDAP最完美,仅需在LDAP上添加一个记录,就可使用已添加的用户的信息登录到各个服务器。

考虑到谈起这个问题的人是想使用WHMCS开通SSH账户的,于是我弄了个WHMCS的LDAP模块。

这模块需要PHP的LDAP扩展,你们可以通过phpinfo()函数查看是否有ldap扩展,如果没有,就到php.net下载你正在使用的版本的PHP源码,用phpize编译吧。

WHMCS LDAP模块下载地址:http://soft.yzs.me/ldapposixaccount.tar.bz2

使用方法:

首先得配置好你的LDAP Server与其他要使用LDAP验证的服务器,这些我就不多说啦,LDAP发展这么久,肯定不少人发过教程,发一个已经可以谷歌到答案的东西,那就没意义啦。

接下来要在WHMCS的服务器设置处添加服务器,模块当然是选择Ldapposixaccount了,你可以把各个服务器的IP填入到Assigned IP Addresses中,那样用户在服务信息处就可以看到各个服务器的IP了。用户名填写你的登陆DN(Login DN),例如cn=admin,dc=domain,dc=com,至于密码,你自己知道。接着创建服务器组。

进入产品设置页面,添加产品,Module Settings中选择Ldapposixaccount。

这里解释一下各项的设置。

Base Distinguished Name:最基础的dn,例如dc=domain,dc=com。

Initial uid&gid Number:填入一个数字,新添加的用户的uid和gid将会从这个数字开始递增,为了不要与/etc/passwd与/etc/group中的重复,建议设置到10000以上。

Users’s Home Directory Base:填入一个文件夹的路径,新建的用户的home目录将会以其用户名命名创建至此目录中,例如我设置为/home/,那么新建的用户的home目录将会是/home/用户名。

Login Shell:新建的用户的shell,例如/bin/bash,更多的shell可以查看/etc/shells。

Group Organisational Unit:在你LDAP Server中储存用户组的Organisational Unit。

User Organisational Unit:在你LDAP Server中储存用户的Organisational Unit。

Module Settings

 

如果你设置的信息无误的话,那么接下来就可以通过WHMCS创建用户了。

 

LDAP

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:有任何的问题或建议,欢迎提出。

XEN VPS上使用ISO安装Windows Server 2012(解决提示:缺少计算机所需的介质驱动程序)

今天在给一个XEN的VPS用ISO安装系统(你没看错,我也没打错,的确是XEN)。

因为是XEN,虚拟机,无DVD驱动器,也不给你从面板挂载ISO,因此只能从硬盘安装。

大概的步骤是这样的:

下载ISO到另一个分区——EasyBCD添加ISO启动项——重启——登录VNC,选择ISO的那一项……

上面这几步都很顺利,但是到安装那就出问题了:Failed

 

提示:缺少计算机所需的介质驱动程序。这可能是 DVD、U 盘或硬盘驱动程序。如果你有包含该驱动程序的 CD、DVD 或 U 盘,请立即插入。注意:如果Windows 安装介质在 DVD 驱动器或 U 盘中,你可以在这个步骤中放心地将其取出。

XEN的硬盘应该是不需要额外的驱动的,不过我记得这个问题在一次的重装系统时遇到过,貌似需要运行sourcess里面的setup.exe。

尝试着运行ISO挂载出来的X盘的sourcess里面的setup.exe,仍旧那种提示。

于是重启,进入原来的系统,把ISO解压到了D盘。再次进入Windows Server 2012的安装面界。

然后按Shift+F10召唤出CMD,切换到D盘,执行解压出来的sources/setup.exe。

SETUP

 

不过Windows Server 2012安装要KEY呢:KEY

 

没KEY还不给安装……

Google了个对应版本的KEY:

KEY Finish

成功进入下一步:

Success

 

操作分区,把原来C盘删掉,重新创建(D盘放着ISO,最好别删吧)

分区

 

开始安装:开始安装

 

整个过程十分钟不到,是VPS性能太好了?还是Windows Server 2012优化过?

设置密码(就算原来打了“●”我也要把密码位数掩盖掉)

设置密码

 

搞定:

登录面界

 

 

到此为止,这下我真的看不出KVM有什么优点了……

 

解决硬盘安装Ubuntu 12.04.1 Server提示“无法挂载你的安装光盘”或“找不到ISO”

最近入手了个KVM的VPS,SolusVM面板,提供VNC。

虽然VPS提供了模板安装系统,但是默认是把30GB都给了/,太不尽人意了。况且我也喜欢原版的系统。于是打算动手安装上去。

我使用的是硬盘安装的方法,但是安装的时候,却提示“无法挂载你的安装光盘”,经过我的一个晚上的折腾,终于找到解决办法了!

首先,到模板处安装个Windows Server 2008,然后安装个WinPE,用DiskGenius调整C盘的大小,释放1GB空间出来,放Ubuntu的ISO用,并且格式化为FAT32格式,注意一定要FAT32格式,不然会提示找不到ISO!

回到Win2008,下载好Ubuntu的ISO,还有这三个文件:

boot.img.gz

initrd.gz

vmlinuz

把这三个文件和Ubuntu的ISO一起放在那个新分区的根目录上。
安装运行EasyBCD,点击添加新条目,切换到NeoGrub标签,点安装,然后点击编辑:

EasyBCD

输入以下内容

 注意:hd0,0,第一个逗号前面的0表示硬盘号,0就是第一个硬盘,在逗号后面的那个0是分区号,0就是第一个分区,不知道分区号的可以打开磁盘管理,看看你的分区排在第几,如果是第三格的,那就是hd0,2。第二格的,那就是hd0,1,以此类推!我放那四个文件的硬盘是第一个硬盘,第三个分区,那就是hd0,2    。也不要忘记把ubuntu-12.04.1-server-i386.iso改成你的ISO的名字!

如图:

TXT

 

保存后,重启,开机启动那选开头为NeoGrub的那一项:

BCD

 

 

进去后,选择好语言,会弹出来,提示“寻找安装程序的ISO”,搜索ISO时,会出现几个设备让你选择,你刚刚在就是你刚刚输入的hd0,0的逗号后面那为数+1,例如我的是hd0,0,那选择的搜索设备就是/dev/vda3(不一定是vda,有些是sda,xvda等,都一样的。):

ScanISO

Choose

ChooseDISK

FindISO

成功后,直接按回车键,按提示开始安装就行了,途中会提示你安装一些软件,根据需要来搞就行了,例如OpenSSH!

安装过程也挺快,看到这个画面,按回车重启吧,你的Ubuntu就安装好了!

Finish