服务器一多,就需要制定相应的策略来统一管理这些服务器账号。
主要考虑到账号安全、人事调动、人员权限的管理和控制。
转载本站文章请注明出处:黄海兵haibing.org

主要有以下几种方法:
1、跳转机
其它服务器只允许通过跳转机登录,通过控制跳转机的权限来进行控制。
比如跳转机的账号密码定期更新,发送到相关人员邮箱中。
2、堡垒机
升级版的跳转机。
有软件,也有硬件的。一般审计功能都很完善了。
3、LDAP管理
可以给不同人员分配不同账号进行管理,需要有人专门管理分配账号,人事变动后即时更改密码等。
4、一次性密码
有下面三种方法参考:
a.利用脚本定时生成密码并更改用户密码,发送新密码到相关管理员邮箱
b.用户原密码不变,利用otpw工具定期生成一次性密码列表,发送给相关管理员使用
c.使用Google身份验证器或洋葱令牌生成一次性密码使用
5、固定密码+动态码
安全性高,但需要安装插件和使用UKEY来发送动态码,可能需要找第三方开发
6、利用批量分发软件进行管理,如puppet

各公司可根据自己的环境来选择不同的策略,可互相结合,灵活使用。
转载本站文章请注明出处:黄海兵haibing.org

详细介绍:

1、跳转机
可能通过在跳转机上安装Lshell工具来达到限制用户使用目录,限制使用命令等功能。
还能记录历史命令达到审计的功能。
不过这种没办法用RDP、VNC转到WINDOWS,也没有详细的报表记录,只一个相对简单的跳转机功能。

2、堡垒机
升级版的跳转机。
有分软件和硬件。
软件类的有国外的Shell Control Box,国内的碉堡堡垒机
硬件类的就很多了,华为、华三、天融信等都有这类的产品,也叫运维审计系统。

有一款开源的跳板机(堡垒机):Jumpserver。没用过,不知道好不好用。
3、LDAP管理
可用LINUX下的openLDAP,或者直接用WIN的AD域。
我个人是推荐使用WIN的AD域来统一管理win服务器和其它各种linux/unix服务器账号。
详细设置见我另一篇文章:http://haibing.org/?p=199

 

我这里主要讲第四种方法(一次性密码)里的a、b两种的配置和使用。
觉得这两种可能会使用的比较多。

3:a 定时生成密码发送邮箱

可以共用一份邮箱列表,各服务器通过这份列表获取邮箱地址,根据不同的权限、职责,用脚本定期生成随机密码发送给不同的管理员邮箱。
有人员变动,只要维护这份邮箱列表即可。
设置一个管理用户,只有这个用户能su/sudo。
这个方法应该算是最简单的。

参考脚本范例:
#cat chpasswd.sh
#!/bin/bash
email=$mail //自己通过各自的方法去获取邮箱地址
password=$(openssl rand -base64 8|tr -d “=”)
echo $password | passwd admin –stdin > /dev/null
echo $password|mail -s “admin password” $email

crontab 设置,每天下班前修改一次密码:
# crontab -l
0 18 * * * /sh/chpasswd.sh

3:b otpw的配置和使用
otpw主要有以下几个优点:

1、前缀密码+一次性随机码,相当于双重加密。就算随机码列表泄露,没有前缀密码也是无用
2、如果一次没登录成功,会启用三重随机码,要破解那是非常困难
3、用户目录下保存密码的文件可通用,适合批量部署

step1:安装otpw
环境:Oracle Linux Server release 6.4
2.6.39-400.17.1.el6uek.x86_64

# yum git gcc pam-devel
# git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw
或者
# wget –no-check-certificate https://www.cl.cam.ac.uk/~mgk25/download/otpw-1.5.tar.gz
# cd otpw

打开 Makefile 文件,编辑以“PAMLIB=”开头的那行配置:

PAMLIB=/lib64/security

如果不确定要放在哪个目录,可以打开/etc/pam.d/sshd,用find查找一下里面的so文件在哪个目录,上面就填哪个目录

#make
#make install

安装后会自动重启ssh服务,会断开连接。

step2: 启用otpw

我们这里只限制SSH登录,并不限制本地登录。
只编辑/etc/pam.d/sshd
在最上面添加两行:

auth sufficient pam_otpw.so
session optional pam_otpw.so

添加这两句,原密码还是可以登录的。
原密码可以设一个复杂的,只有管理员自己有。

如果只想让otpw一次性密码登录,第一句需改成:

auth required pam_otpw.so

如果是要限制root用户,最好是保留原密码也可以登录。
如果是限制其它普通用户,则可以设置只让otpw一次性密码登录。

step3: 配置sshd_config

编辑/etc/ssh/sshd_config

UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
UsePAM yes

如果需要设置原密码不能登录,还需要设置:

PasswordAuthentication no

#service sshd restart

step4: 生成一次性密码

#/root/otpw/otpw-gen >passwd_list
生成一次性密码并保存到passwd_list文件中

会提示你两次输入密码前缀(方便自己记忆的),以后登录输密码的时候,一次性密码前都需要加上这个前缀作为完整密码登录。

这样做是怕这份一次性密码泄露了,没有前缀密码,是不能登录的。

#cat passwd_list
111

产生了 280 个一次性密码,每个密码(默认是 8 个字符)由一个 3 位十进制数索引。

再用户主目录下,会有一份根据根一次性密码对应的HASH值密码文件。用来登录时进行匹配,并且登录过的密码会进行删除,保证密码的一次性。
转载本站文章请注明出处:黄海兵haibing.org

#cat ~/.otpw
222

————虚线处即表示原先这个密码已经被使用丢弃。

step5:用一次性密码登录
在别的电脑上用ssh远程登录
#ssh 172.31.1.132
Password 175/197/122:

如果“Password”后带有数字,即表示otpw起效了。如果没带数字,就要检查一下配置了

输入密码:
password后跟的数字,即一次性密码的排列序号数,找到对应的密码,再结合前缀密码,组成完整密码。
假如前缀密码是bing
ssh远程时出现: Password 001:
完整密码即:bingAIoJ o/xF (中间的空格可有可无)
AIoJ o/xF即前面生成的一次性密码表中的第二个值

如果密码输入错误,就会显示三组数字,密码就需要输入三组数字对应 的密码,加上前缀密码,组合成完整的密码输入。

可以定期生成密码列表,然后发送给各相关管理员即可。

otpw主页:https://www.cl.cam.ac.uk/~mgk25/otpw.html



1 对 “批量服务器账号管理策略”的想法;

发表评论