為了加強公司內部網絡及服務器的安全,規范服務器的使用,降低被外部黑客攻擊的風險,比較好的方法是搭建堡壘機,統一服務器的運維入口,并且可以審計所有的運維操作。
目前市面常見的開源堡壘機有Jumpserver、Teleport、GateOne、CrazyEye 等。這次我們選擇JumpServer來搭建自己的堡壘機。
首先來看看官方自己的宣傳:
JumpServer 是全球首款完全開源的堡壘機, 使用 GNU GPL v2.0 開源協議, 是符合 4A 的專業運維審計系統。
JumpServer 使用 Python / Django 進行開發, 遵循 Web 2.0 規范, 配備了業界領先的 Web Terminal 解決方案, 交互界面美觀、用戶體驗好。
JumpServer 采納分布式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無并發訪問限制。
JumpServer 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。
廣告看起來都很美好,我們來實際看看。
JumpServer分為開源版本和企業版,企業版在開源版的基礎上支持X-Pack 增強包和企業級支持服務。使用開源版基本就能滿足我們日常的安全需求了。
JumpServer有多種部署方式,使用容器部署方式無疑是其中最方便的一種。
環境搭建
JumpServer的all鏡像自帶了mysql和redis,秉承無狀態的理念,我毫不猶豫使用外置的mysql數據庫。redis只是起到緩存作用,就使用鏡像自帶的即可。
搭建mysql數據庫
首先你得有一個獨立的mysql服務器,然后執行以下腳本創建一個數據庫和用戶。
-- 創建數據庫
create database jumpserver default charset 'utf8' collate 'utf8_bin';
-- 創建用戶jumpserver并設置密碼
grant all on jumpserver.* to 'jumpserver'@'%' identified by '密碼';
生成密鑰和token
執行以下命令生成密鑰和token
mac環境
if [ ! "$SECRET_KEY" ]; then
SECRET_KEY=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 50`;
echo $SECRET_KEY;
else
echo $SECRET_KEY;
fi
if [ ! "$BOOTSTRAP_TOKEN" ]; then
BOOTSTRAP_TOKEN=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 16`;
echo $BOOTSTRAP_TOKEN;
else
echo $BOOTSTRAP_TOKEN;
fi
linux環境
if [ ! "$SECRET_KEY" ]; then
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
echo $SECRET_KEY;
else
echo $SECRET_KEY;
fi
if [ ! "$BOOTSTRAP_TOKEN" ]; then
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
echo $BOOTSTRAP_TOKEN;
else
echo $BOOTSTRAP_TOKEN;
fi
生成的密鑰和token如下
pZgaDVk4SPbbw19MbgWGKGKABolTlQJPitNJpDKEiVcbD5kiBS
PdDkFAJzKhhWL2in
啟動服務
我們將jumpserver數據目錄指定為/usr/jumpserver/media
,其余啟動的參數按需修改:
$ docker run --name jumpserver -d \
-v /usr/jumpserver/media:/opt/jumpserver/data/media \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=pZgaDVk4SPbbw19MbgWGKGKABolTlQJPitNJpDKEiVcbD5kiBS \
-e BOOTSTRAP_TOKEN=PdDkFAJzKhhWL2in \
-e DB_HOST=192.168.x.x \
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD="xxx" \
-e DB_NAME=jumpserver \
jumpserver/jms_all:2.0.1
查看啟動日志
$ docker logs -f --tail 100 jumpserver
進入容器命令
$ docker exec -it jumpserver /bin/bash
使用服務
瀏覽器訪問jumpserver的管理界面:http://192.168.x.x
默認賬號:admin/admin
