CentOS7 開源跳板機(堡壘機) Jumpserver

丶小炒肉發表於2016-05-31

開源跳板機(堡壘機)Jumpserver

 

環境 CentOS 7   x64       關閉 selinux  firewalld

 

jumpserver: 172.24.0.14

testserver: 172.24.0.15

 

一. 部署ldapserver

 

1.1 安裝ldapserver

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

 

1.2 準備配置檔案      (centos7 slapd.conf.obsolete 並不存在,所以我從centos6 裡拷貝了一個過來)

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=jicki,dc=com"

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

  rootpw          jicki123

  ...

  

 

#說明:

loglevel:設定日誌級別  

suffix:其實就是BaseDN

rootdn: 超級管理員的dn

rootpw: 超級管理員的密碼

 

 

1.4 修改系統日誌配置檔案

vim /etc/rsyslog.conf

 

搜尋  local7.*          在下面新增一行

 

 

local4.*                                                /var/log/ldap.log

 

儲存以後重啟服務

systemctl restart  rsyslog.service

 

 

1.5 啟動slapd, 檢視啟動情況

systemctl start  slapd.service

 

刪除ladp 原來配置

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/

 

重啟服務

systemctl restart  slapd.service

 

 

1.6 匯入ldif資料庫框架和測試使用者,base.ldif,group.ldif,passwd.ldif 修改檔案其中的dc=yolu,dc=com替換成你的baseDN,然後匯入,密碼是rootpw設定的密碼

上傳  base.ldif,group.ldif,passwd.ldif 檔案至/tmp 目錄下

 

cd /tmp

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

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

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

 

 

 

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

 

 

 

 

二. testserver部署ldapclient

 

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=172.24.0.14 --ldapbasedn="dc=jicki,dc=com" --update

 

 

2.4 CentOS7 系統 必須註釋掉這裡才能從 ladp 驗證通過.  ( 否則 提示  登入失敗: password refused )

vi /etc/pam.d/password-auth-ac

#auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success

 

2.5 啟動nslcd 否則報 ( pam_ldap(sshd:auth): error opening connection to nslcd: No such file or directory )

 

service nslcd start

 

 

2.6 從jumpserver連線testuser測試

ssh testuser@172.24.0.15

 

 

密碼是testuser123 如果連線成功則繼續 ( Creating directory '/home/testuser'. )

 

 

 

 

三. 在jumpserver 中配置 LDAP負責sudo   

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

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

 

 

3.2 修改檔案匯入schema

vim /etc/openldap/slapd.conf

 

新增 如下一行:

include         /etc/openldap/schema/sudo.schema

 

 

3.3 重新生成配置檔案,重啟slapd

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/* 

 

systemctl restart  slapd.service

 

 

3.4 匯入sudo.ldif到ldapserver

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

 

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

 

 

 

四 testserver設定sudo使用ldap

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

sudo -V | grep 'ldap.conf'

 

 

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

 

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

 

 

4.1 測試sudo

 

ssh testuser@172.24.0.15

sudo su 

 

whoami

 

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

 

 

 

 

五. 部署jumpserver

 

5.1 安裝mysql資料庫,建立庫  ( yum 安裝 只用於儲存資訊  CentOS7 mysql 已替換為 mariadb)

 

yum -y install mariadb mariadb-server mariadb-devel

 

service mariadb start

 

mysqladmin -u root password '12345678'

 

mysql -uroot -p

 

執行如下命令

create database jumpserver charset='utf8';

 

grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'mysql123';

 

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

 

 

 

5.2 下載最新Jumpserver專案

yum -y install git

cd /opt

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

 

 

5.3 安裝setuptools 和 pip

yum -y install python-setuptools gcc python-devel ncurses ncurses-devel

 

easy_install pip

 

5.4 安裝依賴庫

cd /opt/jumpserver/docs

 

pip install -r requirements.txt -i http://pypi.douban.com/simple

 

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

Successfully installed readline

Cleaning up...

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

表示安裝完成

 

 

5.5 修改Jumpserver配置檔案 

 

cd /opt/jumpserver

vim jumpserver.conf

 

#coding: utf8

 

[base]

ip = 172.24.0.14

port = 80

key = 88aaaf7ffe3c6c04

 

 

[db]

host = 127.0.0.1

port = 3306

user = jumpserver

password = mysql234

database = jumpserver

 

 

[ldap]

ldap_enable = 1

host_url = ldap://127.0.0.1:389

base_dn = dc=jicki, dc=com

root_dn = cn=admin,dc=jicki,dc=com

root_pw = jicki123

 

 

[websocket]

web_socket_host = 172.24.0.14:3000

 

 

[mail]

email_host = smtp.exmail.qq.com

email_port = 25

email_host_user = jicki@qq.com

email_host_password = jicki123

email_use_tls = False

 

# 說明:

# 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是預設埠

# [mail] 配置mail伺服器,用來傳送郵件,本版本新增使用者會自動發郵件給使用者的email

 

5.6 修改logs目錄許可權

cd /opt/jumpserver

 

mkdir logs

 

chmod 777 logs

 

5.7 django sync db 到資料庫

 

cd /opt/jumpserver/

 

python manage.py syncdb

 

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

  

5.8 測試執行

 

python manage.py runserver 0.0.0.0:80

 

python log_handler.py

 

#說明:兩個視窗分別開啟

 

5.9 初始化jumpserver瀏覽器開啟 

http://172.24.0.14/install

 

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

成功:安裝成功

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

 

 

 

 

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

 

6.1 下載node.js

 

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

 

wget http://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz

 

 

6.2 編譯安裝

yum -y install gcc-c++ bzip2*

 

tar zxvf node-v0.12.0.tar.gz

cd node-v0.12.0

./configure --prefix=/opt/node/ 

make && make install

 

 

6.3 設定path

vim /etc/profile.d/node.sh

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

 

 

source /etc/profile.d/node.sh

 

 

6.4 安裝專案依賴module,或使用下載好的

cd /opt/jumpserver/websocket

 

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

 

6.5 測試啟動websocket 

node index.js

 

說明:新視窗執行

 

 

6.6 訪問頁面

http://172.24.0.14

 

測試所有功能

 

 

 

七. 收尾工作

 

7.1 修改sshd配置,禁止密碼登入# 

 

vim /etc/sshd/sshd_config

 

PasswordAuthentication no

 

 

service sshd restart

 

 

7.2 讓使用者登入jumpserver自動執行系統

cd /opt/jumpserver/docs

 

vim jumpserver.sh

  ...

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

  ...

  

cp jumpserver.sh /etc/profile.d/

 

 

7.3 正常執行jumpserver系統

 

cd /opt/jumpserver/

 

chmod +x service.sh

 

./service.sh start                       #啟動 

 

./service.sh stop                        #關閉

 

 

http://172.24.0.14/                    使用者名稱 admin    密碼  admin

相關文章