天天看點

開源跳闆機(堡壘機)Jumpserver v0.1.1部署篇

-----  更新 --------------------------------------------

新版本見 :http://laoguang.blog.51cto.com/6013350/1636273

下面的文檔已經不适合新版本,請忽略

------- end -------------------------------------------

更新說明:http://laoguang.blog.51cto.com/6013350/1576502

軟體包:http://pan.baidu.com/s/1i3kne6p

有疑問加群:399218702

論壇: http://bbs.jumpserver.org

項目位址:https://github.com/ibuler/jumpserver

示範視訊:http://v.youku.com/v_show/id_XODI3Mjg1ODk2.html

部落格位址: http://laoguang.blog.51cto.com/

如果您對該項目感興趣,熟悉Django或前端程式設計,加入我們吧! [email protected]

部署步驟

環境: centos6.5 mini安裝 iptables selinux已經關閉

jumpserver: 192.168.1.209

testserver: 192.168.1.210

一. 部署ldapserver

1.1 安裝ldapserver

# yum install -y openldap openldap-servers openldap-clients openldap-devel

1.2 準備配置檔案

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf   

 ## 該檔案是slapd的配置檔案 

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG      

 ## 資料庫的配置檔案

1.3 修改配置檔案# vim /etc/openldap/slapd.conf

 ...

 loglevel        1

 ...

 suffix          "dc=yolu,dc=com"

 rootdn          "cn=admin,dc=yolu,dc=com"

 rootpw          secret234

 #說明:

 loglevel:設定日志級别  suffix:其實就是BaseDN

 rootdn: 超級管理者的dn

 rootpw: 超級管理者的密碼

1.4 修改系統日志配置檔案

# vim /etc/rsyslog.conf

 local4.*          /var/log/ldap.log   # local7.*下添加一行

# service rsyslog restart

1.5 啟動slapd, 檢視啟動情況

# service slapd start

# rm -rf /etc/openldap/slapd.d/*

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d 

# chown -R ldap:ldap /etc/openldap/slapd.d/

# service slapd restart# netstat -tulnp | grep slapd

 #說明:第一次啟動生會初始化ldap資料庫,在/var/lib/ldap中,如果想删除ldap資料庫就删除該目錄,保留DB_CONFIG配置檔案。新版的ldap使用的是/etc/openldap/slapd.d 下的配置檔案,删除原來的配置檔案,slaptest是重新生成新的配置檔案

1.6 導入ldif資料庫架構和測試使用者,可以使用migrationtools導出架構,也可以用我導出好的. base.ldif,group.ldif,passwd.ldif 将其中的dc=yolu,dc=com替換成你的baseDN,然後導入,密碼是rootpw設定的密碼

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f base.ldif

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f group.ldif

# ldapadd -x -W -D "cn=admin,dc=yolu,dc=com" -f passwd.ldif

 #說明:測試使用者是testuser 密碼是testuser123

二. testserver部署ldapclient

--- CentOS6設定 ---

2.1 安裝LDAP用戶端

# yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap

2.2 設定自動建立目錄

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

2.3 備份原來authconfig,然後設定使用LDAP認證

# authconfig --savebackup=auth.bak

# authconfig --enableldap --enableldapauth --enablemkhomedir --enableforcelegacy --disablesssd --disablesssdauth --ldapserver=192.168.1.209 --ldapbasedn="dc=yolu,dc=com" --update

--- CentOS5設定 ---

# yum -y install openldap openldap-clients nss_ldap

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

2.3 設定使用LDAP認證

# authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=192.168.1.209 --ldapbasedn="dc=yolu,dc=com" --update

2.4 從jumpserver連接配接testuser測試

# ssh [email protected]

 # 密碼是testuser123 如果連接配接成功則繼續

三. LDAP負責sudo

3.1 拷貝sudo schema,centos版本不一樣,可能sudo的版本不是1.8.6,其他的也可以

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

3.2 修改檔案導入schema

# vim /etc/openldap/slapd.conf 

 include         /etc/openldap/schema/sudo.schema

3.3 重新生成配置檔案,重新開機slapd

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

# chown -R ldap:ldap /etc/openldap/slapd.d/* 

# service slapd restart

3.4 導入sudo.ldif到ldapserver

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

 #說明:将sudo.ldif中的dc=yolu,dc=com換作你的baseDN

3.5 testserver設定sudo使用ldap

說明: centos6上sudo-1.7.4p5的使用的ldap配置檔案是 /etc/sudo-ldap.conf,sudo版本不同使用的配置檔案可能也有所不同,sudo -V | grep 'ldap.conf' 檢視

# sudo -V | grep 'ldap.conf'  

...

ldap.conf path: /etc/sudo-ldap.conf  # 已知有的版本是 /etc/nslcd.conf,下面應該做出對應改變

--- CentOS6 ---

# echo -e "uri ldap://192.168.1.209\nSudoers_base ou=Sudoers,dc=yolu,dc=com" > /etc/sudo-ldap.conf

# echo "Sudoers: files ldap" >>  /etc/nsswitch.conf

--- CentOS5 ---

# echo "Sudoers_base ou=Sudoers,dc=yolu,dc=com" >> /etc/ldap.conf

# echo "Sudoers: files ldap" >> /etc/nsswitch.conf

3.6 測試sudo

# ssh [email protected]

# sudo su

 #說明:密碼是testuser123,sudo su如果不提示輸入密碼,則成功

四. 部署jumpserver

4.1 安裝mysql資料庫,建立庫

# yum -y install mysql mysql-server mysql-devel

# service mysqld start

# mysql

mysql> create database jumpserver charset='utf8';

mysql> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'mysql234';

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

4.2 下載下傳最新Jumpserver項目

# yum -y install git# cd /opt

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

# cd jumpserver

4.3 安裝Python2.7.6

# yum -y install xz gcc automake autoconf ncurses-devel patch

# tar xvf Python-2.7.6.tar.xz && cd Python-2.7.6 

# ./configure && make && make install

# mv /usr/bin/python /usr/bin/python.bak

# ln -s /usr/local/bin/python /usr/bin/python

# vim /usr/bin/yum

 #!/usr/bin/python2.6

 #說明:yum使用python2.6,否則報錯

4.4 安裝setuptools 和 pip

#  tar xvf pypa-setuptools-8e8c50925f18.tar.gz  && cd pypa-setuptools-8e8c50925f18 && python setup.py install

# tar xvf pip-1.5.6.tar.gz && cd pip-1.5.6 && python setup.py install

4.5 安裝依賴庫

# cd /opt/jumpserver/scripts

# pip2.7 install -r requirements.txt -i http://pypi.douban.com/simple

 #說明:如果報錯請手動安裝每個子產品

4.6 修改Jumpserver配置檔案

# cd ..

# vim jumpserver.conf

   [db]

   host = 127.0.0.1

   port = 3306

   user = jumpserver

   password = mysql234

   db = jumpserver

   [jumpserver]

   key = 88aaaf7ffe3c6c04

   ldap_host = ldap://127.0.0.1:389

   ldap_base_dn = dc=yolu,dc=com

   admin_cn = cn=admin,dc=yolu,dc=com

   admin_pass = secret234

   web_socket_host = 192.168.1.209:3000

   # 說明:

   # db裡是資料庫的設定,相信你看一眼就知道了

   # jumpserver中

   # key是加密時需要的字元,可以更改但需要是16位

   # ldap_host,ldap_base_dn,admin_cn,admin_pass都是與上面ldapserver設定的一緻

   # admin_cn 對應ldap中的rootdn,必須一緻

   # admin_pass是ldap的密碼,對應ldap.conf中的 rootpw ,必須使用明文

   # web_socket_host是websocket的url,把ip改為jumpserver的IP位址,需要修改,3000是預設端口

4.7 修改logs目錄權限

# chmod 777 logs

4.8 django sync db 到資料庫

# cd /opt/jumpserver/webroot/AutoSa

# python manage.py syncdb

 Would you like to create one now? (yes/no): no

4.9 測試運作

# python manage.py runserver 0.0.0.0:80 

# python log_handler.py

 #說明:兩個視窗分别打開

4.10 初始化jumpserver浏覽器打開 

http://192.168.1.209/install

顯示安裝成功測繼續

部落格位址:http://laoguang.blog.51cto.com/

五. 安裝node.js為了實作實時監控,使用了node.js來完成websocket

5.1 下載下傳node.js

  官方位址:http://www.nodejs.org/download/

  或

  使用我提供的源碼

  使用我編譯好的rpm,适用于centos6 x86_64,跳過編譯安裝和設定path

5.2 編譯安裝

# ./configure --prefix=/opt/node/ && make && make install

5.3 設定path

# vim /etc/profile.d/node.sh

 export PATH=$PATH:/opt/node/bin

# source /etc/profile.d/node.sh

5.4 安裝項目依賴module,或使用下載下傳好的

# cd /opt/jumpserver/webroot/AutoSa/websocket

# npm install        # 可能下載下傳需要幾分鐘,可以更省時

 #說明:使用已經下載下傳好的,将node_modules.tar.bz2 移動到/opt/jumpserver/webroot/AutoSa/websocket

 # tar xvf node_modules.tar.bz2

5.5 測試啟動websocket 

# node index.js

 #說明:新視窗運作,如果開啟了iptables確定放行3000端口

------------------------------編譯nodejs報錯-----------------------------

/src/node-v0.10.33/out/Release/openssl-cli] error 69

make[1]: Leaving directory `/home/wenba/software/src/node-v0.10.33/out'

make: *** [node] error 2

解決方案:

在安裝Python2.7之前:

    yum install gcc-c++

    yum install bzip2*

編譯安裝python

編譯安裝後編譯安裝 zlib子產品

    cd Python-2.7.3/Modules/zlib  

    ./configure ;  

    make;  

    make install 

------------------------------------------------------------------------

六. 測試jumpserver

截圖見:http://laoguang.blog.51cto.com/6013350/1576502

6.1  登入

賬号密碼都是admin

6.2 添加屬組

6.3 添加使用者

6.4 添加IDC

6.5 添加主機

6.6 添權重限

6.7 檢視權限

6.8 測試登入

6.9 下載下傳key

6.10 導入key并登入xshell導入  Tools --> User Key Manager --> import --> 輸入密碼

6.11 登入

6.12 測試登入測試主機

# python /opt/jumpserver/jumpserver.py

 #說明:p/P顯示有權限主機ip E/e多主機執行指令 Q/q退出 輸入ip或部分ip登入

6.13 顯示有權限主機

6.14 多主機執行指令,逗号分隔     # 這裡就一台主機

6.15 登入

6.16 檢視sudo

6.17 修改sudo

6.18 測試sudo

6.19 測試監控

 重新整理,

6.20 結束session

6.21 檢視統計日志

6.22 使用者測試上傳下載下傳

6.23 修改登入密碼

七. 收尾 如果一切沒問題後,開始收尾

7.1 修改sshd配置,禁止密碼登入# vim /etc/sshd/sshd_config

 PasswordAuthentication no

# service sshd restart

7.2 讓使用者登入jumpserver自動運作系統

# vim jumpserver.sh

 if [ $USER == 'guanghongwei' ];then   # 修改特殊使用者,結束後不退出

# cp jumpserver.sh /etc/profile.d/