運維堡壘機(跳板機)系統Jumpserver v0.1.0 部署篇

更新:新版已發見 http://laoguang.blog.51cto.com/6013350/1576729php

----------------------------------------------------------node

更新:有疑問qq羣  399218702python

更新:建議你們第一遍作的時候,全部的都與文檔一致,因爲筆者懶把全部的密碼設置成redhat了,因此致使好多小夥伴部署的時候遇到問題,抱歉,筆者正在努力碼代碼,修改一下bug,更新一些功能,另若是有小夥伴對該項目有興趣,能夠一塊兒作作,筆者水平確實有限。mysql


環境:系統CentOS6.4 iptables, selinux已關閉linux

jumpserver ldapserver : 192.168.2.130git

測試服務器: 192.168.2.132github

mysql數據庫: 192.168.2.130web

1、安裝ldapserversql

1. yum安裝openldap servershell

1 yum install -y openldap openldap-servers openldap-clients   

 

2. 準備配置文件

1 cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf    
2 cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG    

 

3. 修改配置文件 注意:rootpw後面的密碼前面最好有3個tab,配置文件嚴格,每行後面不能有空格

1 vim /etc/openldap/slapd.conf    
2    
3 1) 設置目錄樹的後綴    
4 suffix    "dc=dianping,dc=com"    
5 2) 設置管理員DN    
6 rootdn    "cn=admin,dc=dianping,dc=com"    
7 3) 設置管理員密碼    
8 rootpw            redhat
9 或機密格式, 加密格式可經過 slappasswd命令來生成    
10 rootpw         {SSHA}j6OO++o76F2yhww2Cg/+Hy8oDPixx6C3    
11 4) 設置ldap日誌,在argsfile下面添加    
12 loglevel 1    
13 修改系統日誌配置文件    
14 vim /etc/rsyslog.conf      # centos5版應該是syslog.conf    
15 local4.* /var/log/ldap.log    
16 service rsyslog restart    
17 5) 修改完配置文件後用如下命令生成新的配置文件,之後再也不特殊說明    
18 service slapd start # 第一次須要啓動一下    
19 rm -rf /etc/openldap/slapd.d/*    
20 slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d    
21 chown -R ldap:ldap /etc/openldap/slapd.d/    
22 service slapd restart    


4. 查看啓動狀況

1 [root@localhost openldap]# netstat -tulnp | grep slapd    
2 tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 48776/slapd    
3 tcp 0 0 :::389 :::* LISTEN 48776/slapd   

 

5. 安裝migrationtools,遷移本地帳戶密碼到ldap

爲了測試,咱們先在服務器上創建一個測試帳號,這個帳號是爲了測試ldap是否成功的

1 useradd guanghongwei    
2 echo 'redhat' | passwd --stdin guanghongwei    

1). 安裝並修改配置文件

1 yum -y install migrationtools    
2 cd /usr/share/migrationtools/    
3 vim migrate_common.ph # 71行左右    
4 $DEFAULT_MAIL_DOMAIN = "dianping.com";    
5 $DEFAULT_BASE = "dc=dianping,dc=com";

2). 使用腳本導出ldif文件

1 ./migrate_base.pl > /tmp/base.ldif    
2 ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif    
3 ./migrate_group.pl /etc/group > /tmp/group.ldif    

3). 導入到ldap中,會提示輸入密碼,密碼slapd.conf配置文件中設置的那個rootpw 

1 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/base.ldif    
2 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/passwd.ldif    
3 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f /tmp/group.ldif


2、測試服務器安裝ldap客戶端

1. 安裝LDAP客戶端及依賴組件

1 yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap #centos6    
2 yum -y install openldap openldap-clients nss_ldap #centos5    

2. 增長BIND策略,避免LDAP沒法鏈接時沒法開機

1 echo "bind_policy soft" >> /etc/openldap/ldap.conf    

3. 自動建立目錄設置

1 echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth    

4. 設置LDAP啓用,後面的ldapserver改成實際中的

1 #centos6    
2 authconfig --savebackup=auth.bak    
3 authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=192.168.2.130 --ldapbasedn="dc=dianping,dc=com" --update    
4    
5 #centos5    
6 authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=192.168.2.130 --ldapbasedn="dc=dianping,dc=com" –-update    

5. 從主上測試鏈接服務器,該用戶是剛纔添加的那個

1 ssh guanghongwei@192.168.2.132 #132上沒有useradd該用戶哦,若是能鏈接上證實ldap使用ok


3、 讓ldap server負責sudo管理

1. 拷貝sudo schema,centos版本不同,可能sudo的版本不是1.8.6,其餘的也能夠

1 cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema ## 拷貝schema    

2. 配置文件導入schema,切記 配置文件比較敏感,行尾不要有多餘空格

1 vim /etc/openldap/slapd.conf # 增長一項一項    
2 include /etc/openldap/schema/sudo.schema    
3 rm -rf /etc/openldap/slapd.d/*    
4 slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d    
5 chown -R ldap:ldap /etc/openldap/slapd.d/*    
6 service slapd restart    

3. 將sudo base導入到ldap

1) 創建數據庫ldif文件,切記該數據文件每行最後也不容許有空格,並刪掉註釋,能夠用羣共享裏那個

1 vim sudo.ldif    
2    
3 dn: ou=Sudoers,dc=dianping,dc=com    
4 objectClass: top    
5 objectClass: organizationalUnit    
6 ou: Sudoers    
7    
8 dn: cn=defaults,ou=Sudoers,dc=dianping,dc=com    
9 objectClass: top    
10 objectClass: sudoRole    
11 cn: defaults    
12 sudoOption: !visiblepw    
13 sudoOption: always_set_home    
14 sudoOption: env_reset    
15 sudoOption: requiretty    
16    
17 dn: cn=guanghongwei,ou=Sudoers,dc=dianping,dc=com ## dn, 使用時 請刪除註釋,並不能有空格    
18 objectClass: top    
19 objectClass: sudoRole    
20 cn: guanghongwei ## 對應的是用戶名或者組    
21 sudoCommand: ALL ## 能夠執行的命令    
22 sudoHost: ALL ## 能夠登陸的Host    
23 sudoOption: !authenticate ## 是否須要輸入密碼    
24 sudoRunAsUser: ALL ## 以哪一個用戶執行    
25 sudoUser: guanghongwei ## 用戶或者組


2) 導入到ldap中,若是報錯頗有多是空格的緣由

1 ldapadd -x -W -D "cn=admin,dc=dianping,dc=com" -f sudo.ldif    


測試服務器:

4. 測試服務器設置,讓ldap代理sudo,行尾不能有空格

1 vi /etc/sudo-ldap.conf    
2 uri ldap://192.168.2.130 
3 Sudoers_base ou=Sudoers,dc=dianping,dc=com    
4 vi /etc/nsswitch.conf 增長    
5 Sudoers: ldap files    

5. 測試,用戶並沒在服務器的sudoer file中,若是sudo成功,證實已使用ldap的sudo

1 [root@localhost tmp]# ssh guanghongwei@192.168.2.132    
2 guanghongwei@192.168.2.132's password:    
3 Last login: Mon Mar 10 02:27:50 2014 from 192.168.2.130    
4 [guanghongwei@2namenode ~]$ sudo su    
5 [root@2namenode guanghongwei]#    


上面這部分實際上是ldap配置的過程,若是用過的朋友應該很熟悉,再部署個phpldapadmin纔算完整,不過咱們先不用,下面進入主題,講講如何部署跳板機  http://laoguang.blog.51cto.com/6013350/1540793

 

4、 部署jumpserver

1). 下載代碼

cd /opt/

git clone https://github.com/ibuler/jumpserver

若是克隆不下來去https://github.com/ibuler/jumpserver 下載代碼

2. 若是是下載的,須要重命名

1 mv jumpserver-master jumpserver    ## 切記最終是 /opt/jumpserver/哦

3. 下載創建數據庫, 並受權

1 yum -y install mysql-server    
2 serivce mysqld start    
3 mysql    
4 mysql> create database jumpserver charset='utf8'; # 不然中文可能亂碼    
5 mysql> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'redhat';

mysql> grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'redhat';

4. 編輯配置文件

1) 修改jumpserver的配置文件, 主要是修改一下db和key,下面的不動

1 vim jumpserver.conf    
2 #coding:utf-8    
3    
4 [db]    
5 host = 127.0.0.1    
6 port = 3306               
7 user = jumpserver         # 受權的用戶  
8 password = redhat         # 受權密碼
9 db = jumpserver           # 數據庫
10    
11 [jumpserver]    
12 log_dir = /opt/jumpserver/logs/    
13 user_table = UserManage_user    
14 assets_table = Assets_assets    
15 assets_user_table = Assets_assetsuser    
16 key = 88aaaf7ffe3c6c04   #可修改此key須要是16位    
17 useradd_shell = /opt/jumpserver/useradd.sh    
18 userdel_shell = /opt/jumpserver/userdel.sh    
19 sudoadd_shell = /opt/jumpserver/sudoadd.sh    
20 sudodel_shell = /opt/jumpserver/sudodel.sh    
21 keygen_shell = /opt/jumpserver/genkey.sh    
22 chgpass_shell = /opt/jumpserver/chgpass_shell.sh

2) 修改bash調用的配置文件 shell.conf

1 vim shell.conf    
2    
3 #!/bin/bash    
4    
5 host=127.0.0.1    
6 ldapassword=redhat    
7 domain=dianping    
8 suffix=com    
9 #host2=172.16.2.74    
10 #host2_port=2001    

3) 添加一個admin用戶

1 useradd admin    
2 echo 'redhat' | passwd --stdin admin    

4) 安裝依賴的python庫,若是有epel源能夠 yum -y installl python-pip,也能夠源碼安裝參考:    http://my.oschina.net/zhangxu0512/blog/175208

1 yum -y install python-devel python-crypto mysql-devel # MySQLdb也就是mysql-python依賴   
2 pip install django==1.6 paramiko pam mysql-python pexpect pycrypto-on-pypi -i http://pypi.douban.com/simple    
3

5) 初始化庫

1 cd webroot/AutoSa/    
2 python manage.py syncdb    
3 no    

6) 測試運行

1 chmod +x manage.py    
2 chmod +x runserver    
3 chmod +x ../../*.sh      
4 chmod 777 ../../logs    
5 ./runserver      #默認監聽80,能夠修改    
6    
7 瀏覽器查看,密碼是 第3步 admin的帳號和密碼    

   

image_thumb[2]    


5、 測試添加用戶主機登陸

1) 登陸

帳號是admin,密碼是 第3部添加的那個密碼

2) 添加用戶, 提示添加成功,纔算成功,若是不成功,請看./runserver那裏的提示 

密碼:是指登陸web和跳板機的密碼(若是禁用密碼登陸就不能登陸了),key密碼是登陸跳板機密鑰的密碼,個人想法是不容許跳板機使用密碼登陸,只容許使用密鑰,須要修改sshd_config,另外查看用戶裏面的Key目前不容許admin下載

image_thumb[3]

3) 添加主機

image_thumb[5]

4) 受權

添加權限-添加權限

image_thumb[7]

5) 退出admin,登陸jery帳號,能夠更改各類密碼,而後下載密鑰

image_thumb[11]

6) 將下載的密鑰導入xshell或者其餘shell中,輸入密碼

image_thumb[13]

7) 使用密鑰登陸跳板機

image_thumb[18]

8) 登陸測試

1 cd /opt/jumpserver    
2 python jumpserver.py    
3 試試各類功能    

image_thumb[22]

9) 查看日誌 /opt/jumpserver/logs中

image_thumb[24]

10) 最終沒確認沒問題將目錄下面的jumpserver.sh移動到 /etc/profile.d/中,來讓登陸時運行堡壘機腳本

1 mv jumpserver.sh /etc/profile.d/    

QQ截圖20140815184255_thumb[1]


11) 目前web版本沒有管理sudo的功能,因此須要安裝phpldapadmin來管理sudo,能夠控制該用戶再哪些服務器上有sudo權限,能夠執行哪些命令 ,phpldapadmin安裝參考 http://zhumeng8337797.blog.163.com/blog/static/100768914201010994913503/

wKioL1P110_iehfXAAGeBWXKXBw292.jpg


題後:目前版本有些bug, 不建議生產中使用,雖然筆者已經在生產中使用了,由於須要考慮ldap的主備,jumpserver的主備,若是能理解原理,能夠對代碼進行改進,並應用到生產中,

其實部署ldap佔用了太多時間,有興趣的朋友能夠試試,未來打算寫個一鍵腳本,有問題能夠聯繫我 ibuler@qq.com  有疑問能夠加羣,見最前面! 

相關文章
相關標籤/搜索