jumpserver簡介
跳板機概述:
跳板機就是一臺服務器,開發或運維人員在維護過程中首先要統一登錄到這臺服務器,然後再登錄到目標設備進行維護和操作。
跳板機缺點:沒有實現對運維人員操作行爲的控制和審計,使用跳板機的過程中還是會出現誤操作、違規操作導致的事故,一旦出現操作事故很難快速定位到原因和責任人;
jumpserver概述
Jumpserver 是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協議,是符合 4A 的專業運維審計系統。
Jumpserver 使用 Python / Django 進行開發,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal 解決方案,交互界面美觀、用戶體驗好。
Jumpserver 採納分佈式架構,支持多機房跨區域部署,中心節點提供 API,各機房部署登錄節點,可橫向擴展、無併發限制。
爲互聯網企業提供了認證,授權,審計,自動化運維等功能。
官方網站
http://www.jumpserver.org
部署Jumpserver
配置本地jumpserver yum源
vim /etc/yum.repos.d/jumpserver.repo
[jumpserver]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0
上傳壓縮包,解壓
tar -zxvf jumpserver-packs.tar.gz
tar -zxvf pip-packs.tar.gz
tar -zxvf Python-3.6.8.tgz -C /usr/local/src/
安裝依賴包
yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
編譯安裝Python
cd /usr/local/src/Python-3.6.8/
./configure --prefix=/usr/local/python
make -j 4 && make install
給Python做軟鏈接
ln -s /usr/local/python/bin/* /usr/local/bin/
查看版本號
python3 -V
pip3 -V
配置Python虛擬環境
Cd
python3.6 -m venv /opt/py3
source /opt/py3/bin/activate
後面有個py3就算好了
把Python虛擬環境設爲開機自啓
echo "source /opt/py3/bin/activate" >> /root/.bashrc
安裝jumpserver
解壓
unzip jumpserver-master.zip -d /opt/
cd /opt/
mv jumpserver-master/ jumpserver
cd /opt/jumpserver/requirements/
安裝rpm依賴
yum -y install $(cat rpm_requirements.txt)
安裝Python庫依賴
pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner
cd /opt/jumpserver/requirements/
pip install --no-index --find-links=/root/pip-packs/ -r requirements.txt
拓展知識(可以不用做)
pip list #查看安裝的包
pip freeze > requirements.txt #將已經通過pip安裝的包的名稱記錄到 requirements.txt文件中
pip download -d /root/pip-packs/ -r
requirements.txt 緩存pip下載包
安裝redis
yum -y install redis
systemctl start redis
systemctl enable redis
安裝mysql
yum -y install mariadb mariadb-devel mariadb-server
systemctl start mariadb
systemctl enable mariadb
創建jumpserver數據庫授權
Mysql
create database jumpserver default charset 'utf8';
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver';
生成祕鑰
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
iAPQpPIiAM6TLlZi0DA0Lktqt5WMjFhS6PhsqM4Ky4LvS7cHd
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
kSFIIMm634zOc2Y2
配置jumpserver配置文件
寫好生成的祕鑰和mysql授權的名
生成數據庫表結構和初始化數據
cd /opt/jumpserver/utils/
sh make_migrations.sh
運行jumpserver
cd /opt/jumpserver/
./jms start all
設置service腳本
vim /usr/lib/systemd/system/jms.service
[Unit]
Description=jms
After=network.target mariadb.service redis.service docker.service
Wants=mariadb.service redis.service docker.service
[Service]
Type=forking
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/jumpserver/jms start all -d
ExecRestart=/opt/jumpserver/jms restart all -d
ExecStop=/opt/jumpserver/jms stop
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart jms
systemctl enable jms `設置開機自啓`
登錄
192.168.100.10:8080
輸入管理員賬號和密碼
訪問Web Terminal(web linux終端)會報錯。
要安裝koko組件
tar -zxvf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/
chown -R root:root /opt/kokodir/
cd /opt/kokodir/
cp config_example.yml config.yml
vim config.yml `祕鑰和jumpserver一樣`
BOOTSTRAP_TOKEN: h8X7RRmkczrV3Dts
SECRET_KEY: cUBbafUeVjpsO9txGxKbYQhagezAzYaPfVNGQnI2AGYZIaNFL
./koko & ##啓動koko
netstat -antup | grep 2222 ##查看一下端口
把koko加入開機自啓
echo " cd /opt/kokodir && ./koko & " >> /etc/rc.local
chmod +x /etc/rc.local
在web後臺查看終端
使用ssh測試
ssh [email protected] -p 2222
有了Web Terminal以後,我們可以遠程堡壘機,然後通過堡壘機進行登錄管理服務器。
部署Luna組件
解壓
tar -zxvf luna.tar.gz -C /opt/
chown -R root:root /opt/luna/
設置nginx整合各各組件
安裝nginx
yum install -y nginx
修改配置文件
vim /etc/nginx/nginx.conf #把80端口修改爲808
server {
listen 808 default_server;
listen [::]:808 default_server;
創建jumpserver配置文件
所有的jumpserver的服務都使用nginx來進行反向代理,開啓nginx緩存
vim /etc/nginx/conf.d/jumpserver.conf
server {
listen 80;
client_max_body_size 100m; # 錄像及文件上傳大小限制
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路徑, 如果修改安裝目錄, 此處需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 錄像位置, 如果修改安裝目錄, 此處需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 靜態資源, 如果修改安裝目錄, 此處需要修改
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /coco/ {
proxy_pass http://localhost:5000/coco/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ {
proxy_pass http://localhost:8081/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
測試配置文件
Nginx -t
啓動nginx
systemctl start nginx
systemctl enable nginx
登錄jumpserver
192.168.100.10
Luna可以打開了
配置Jumpserver
改成自己本機ip
設置jumpserver郵箱(虛擬機需要聯網)
提交完新浪郵箱會發郵件
創建用戶
編寫畫圈部分
提交完會發送郵件
點擊重製密碼
登錄到創建的用戶
創建組
添加資產
開啓新的一臺虛擬機
創建管理用戶
添加資產
創建命令過濾器
系統用戶可以綁定一些命令過濾器,一個過濾器可以定義一些規則 當用戶使用這個系統用戶登錄資產,然後執行一個命令 這個命令需要被綁定過濾器的所有規則匹配,高優先級先被匹配, 當一個規則匹配到了,如果規則的動作是允許,這個命令會被放行,如果規則的動作是禁止,命令將會被禁止執行, 否則就匹配下一個規則,如果最後沒有匹配到規則,則允許執行
寫上rm -rf / 以免哪個沙雕刪庫跑路*
創建命令過濾器規則
提交就可以啦
創建系統用戶(創建第一次可能輸入密碼的行沒有,在編輯一次就可以啦)
創建資產授權
測試
會話管理打開web終端
安裝個nginx(沒有不安了),和httpd
使用xshell測試
登錄我自己的“嘿嘿嘿”賬號測試連接
ssh 嘿嘿嘿@192.168.100.10 -p 2222
登錄asd主機
啓動以下剛剛安裝的httpd
測試網頁
查看asd主機歷史命令記錄
測試完成(在歷史會話也可以看到回放視頻)
實驗做到這裏就結束了,做的不好請諒解,如果有什麼問題請小夥伴們留言~~