运维跳板机(堡垒机)–门神系统rdgod(部署)

  • A+
所属分类:自动化工具

互联网企业,往往都拥有大量服务器,安全高效的管理这些服务器是每个运维必要工作。生产环境服务器,研发(rd)、运维(op)同学必须通过跳板机进行登陆访问。比如商业产品齐治堡垒机,开源产品jumpserver,基于Python开发。这里分享基于Shell的门神系统(rdgod)。

目标

1、门神系统登陆要通过谷歌双因素验证机制(Google Authenticator);

2、门神系统到应用服务器要实现免密码登陆,应用服务器密码所有用户都不可见;

3、研发人员通过rd用户登陆门神系统,运维人员通过work用户登陆门神系统,不同用户拥有服务器不同的操作权限; 

4、所有服务器权限最小化,收回root权限,运维人员通过work用户可以提权root;

5、应用服务器所有应用都工作在work用户下;

6、结合rsyslog实现日志审计功能。

功能

1、支持ssh免认证,远程管理主机、主机组;

2、支持ssh免认证,批量执行命令;

3、支持scp免认证,批量文件分发;

4、支持md5文件完整性校验,防止文件分发传输过程中,数据不一致。

Google身份认证

博客之前文章,有详细介绍:

https://www.liuyalei.top/2017/11/03/google-authenticator/

部署文档

环境说明

192.168.1.3             门神系统(Door-god)

192.168.3.150         应用服务器Client(app)

创建用户

门神系统(Door-god)、Client分别创建rd和work用户

useradd rd
passwd rd
useradd work
passwd work

ssh免认证登陆

在门神系统(Door-god)操作

su – rd

生成密钥对,默认一路回车即可

ssh-keygen -t dsa

查看密钥,注意密钥对的权限

[root@Door-god bin]$ cd /home/rd/.ssh/
[root@Door-god bin]$ ll /home/rd/.ssh/id_dsa
-rw------- 1 rd rd 668 10月 20 15:43 id_dsa           注意私钥的权限
-rw-r--r-- 1 rd rd 606 10月 20 15:43 id_dsa.pub       注意公钥的权限

将公钥颁发给Client端

[root@Door-god .ssh]$ ssh-copy-id -i id_dsa.pub "-p 22 rd@192.168.3.150"
rd@192.168.3.150's password:
Now try logging into the machine, with "ssh '-p 22 rd@192.168.3.150'", and 
check in:
.ssh/authorized_keys      这个是分发过去的文件名
to make sure we haven't added extra keys that you weren't expecting.

免认证测试:

ssh -p22 rd@192.168.3.150 who

同理切换到work用户,重复上述操作。

1) 这个免密码登陆认证是单向的(如果要双向,把钥匙在分发过去,但是一般不做双向,不安全)。

2) 基于用户的,最好不要跨用户。

3) 批量分发1000台初始都需要输入一次秘密,并且第一次连接要有个确认。(expect)

Client端查看公钥

[root@rd ~]$ cat /rd/.ssh/authorized_keys
ssh-dss 
AAAAB3NzaC1kc3MAAACBANhaOJKpPyvA/gaBo2lKsneI3H8iMRSPOse8iLJKcXCaH0va8aBUb1Z0Te4AZlTC+Kks5FyDbtILA6fakpK96HeWqtZYAP9k4e0OVRgVrzy5SKei6iV4sR3Wj+/qmrFME1ZBR8j5AfT7VTmKAUjq5mcVFxhZqeMWt/1LcLgPRvAHAAAAFQDCqHlwGddpBm3r4lM5r5VYNgxHlwAAAIEAqwztcC8Qlg+bO3kzcqY6TS4gsel1OZ8XMjuuPHAKJQEECMuccnIbOFi6RiPB49oZXodPwqET/8RPiNVyxuq0rXL3RHQgpHTtMGsjnXthea2cSftQZ+qLyAvTV3nSoNTsYJVLCYY1ZSSV5HefS3AjQeyEoEIDTDkjjN3L0ziCpzcAAACBAJ5fKiF8s/KQhOif8lPN2Hdzlg41zyBzHcUeed4iCyPsviItlzof1aernlhjcoIoE7kbEDxkHT+B81Q/u419ELUH6V3mWCr62Vj/M+gWrmIB99OBOizdtRSXVqzB7gHzU3fo+KGhO4Rj0lkvNX5Mp5rm7Sq94chxWSIhSYOZtPF/ 
rd@Door-god
[root@work ~]$ cat /work/.ssh/authorized_keys
ssh-dss 
AAAAB3NzaC1kc3MAAACBAIooqsMH2dyZQPy+kpgtSNuwLwbaX/kbI0x1crkD4ZnaDb36S192aweCD2cofFR1VNTC95DRu1z0le1/Ou3iKne6xMpqECK8Gv/RPIezu9grN59ioSh4sgIAh7a4WX6UlzyxSOficKbnWbVk8N5n/ZC0i0//ssm5ojpFk7tya79fAAAAFQCGc9YirNonom7J/mJyjN2FA6hMrQAAAIB3ioz6OUaay6es17ixfS/3/hno2fnRj1Do/u7gSIbHyyDG8RyI5szcQ2ETOrl/fd801/1emiTaXEiZR936zhqT4W1CKfDsNS3Dbm9C5Sb17/khHLHAcMFVIrzj7XmqxnDYOncv7HzIhQAgoolVdAdwMryF3sJpvqu2Wyoe7wJPYAAAAIBXIJ/VVhBLLMPG/z1Ima1sOmLlvBWA2iJhbVrqNOFhZxE04fowe1VmLg4fxCAlAS+FfeaX89HggdFLEjIJKb844NtrRGCizsrUAgBsnscrAb3DX9UFblJQu6okatLXhjAA4qNI5dn3/t9eg2xYgAFDotcxOE68ghBqN55UWV5CRg== 
work@Door-god

sudo授权管理

客户端sudo授权管理,允许work用户免密码提权

[root@app ~]# ll /etc/sudoers
-r--r----- 1 root root 4039 Nov 3 09:59 /etc/sudoers

通过visudo在98行修改配置,有语法检查,不要直接修改sudoers文件。

要把自己的work账户提升成root,那么直接复制,把root改成work账号即可。下次work用户直接使用sudo su - root
就能切到root权限下

work ALL=(ALL) ALL

work既有了root权限还不知道root的密码,但是每次切到root,都要输入work普通用户密码,太繁琐了,可以在visudo中改成如下,这样就不用输入密码了,但是不安全。

work ALL=(ALL) NOPASSWD: ALL

测试提权命令:

[root@Repo3 ~]# su - work
[work@Repo3 ~]$ sudo su -
[root@Repo3 ~]#

安装iTools门神系统

su - work
mkdir -p /data/work/opbin/
cd /data/work/opbin/
unzip itools.zip && rm -rf itools.zip
chmod +x /data/work/opbin/itools/bin/*
sh /data/work/opbin/itools/bin/install.sh
chmod 777 /tmp/itools/
[root@Door-god bin]$ ll /tmp/itools/
drwxrwxr-x. 2 rd rd 21 8月 27 13:41 rd-34196
drwxrwxr-x. 2 work work 21 8月 27 13:42 work-34414

生产环境日志审计解决方案

1、通过环境变量syslog全部日志审计(信息量太大,不推荐)

2、sudo配合syslog服务,进行日志审计(信息较少,效果不错)

3、在bash解释器嵌入一个监视器,让所有用户使用修改过的bash

4、齐治的堡垒机(商业产品)

以下实验以centos6.x,如果是centos5.x对应服务是syslog

[root@eric6 ~]# uname -a
Linux eric6.4 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 
x86_64 x86_64 x86_64 GNU/Linux
[root@eric6 ~]# rpm -qa|grep rsys
rsyslog-5.8.10-6.el6.x86_64
[root@eric6 ~]# rpm -qa|grep sudo
sudo-1.8.6p3-7.el6.x86_64

配置syslog:

[root@eric6 ~]# echo "Defaults 
logfile=/var/log/sudo.log">>/etc/sudoers
[root@eric6 ~]# tail -1 /etc/sudoers
Defaults logfile=/var/log/sudo.log
[root@eric6 ~]# visudo -c
/etc/sudoers:解析正确
[root@eric6 ~]# echo "local2.debug 
/var/log/sudo.log">>/etc/rsyslog.conf
[root@eric6 ~]# tail -1 /etc/rsyslog.conf
local2.debug /var/log/sudo.log
[root@eric6 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@eric6 ~]# ll /var/log/sudo.log

检查日志记录信息:

[root@eric6 ~]# cat /var/log/sudo.log
Sep 14 20:13:38 : liuyalei : TTY=pts/0 ; PWD=/home/liuyalei ; USER=root ;
COMMAND=/bin/su -root
Sep 14 20:13:42 : liuyalei : TTY=pts/0 ; PWD=/home/liuyalei ; USER=root ;

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: