1、堡壘機介紹html
在一個特定網絡環境下,爲了保障網絡和數據不受外界入侵和破壞,而運用各類技術手段實時收集和監控網絡環境中每個組成部分的系統狀態、安全事件、網絡活動,以便集中報警、及時處理及審計定責。 咱們又把堡壘機叫作跳板機,簡易的跳板機功能簡單,主要核心功能是遠程登陸服務器和日誌審計。 比較優秀的開源軟件jumpserver,認證、受權、審計、自動化、資產管理。 商業堡壘機:齊治, Citrix XenApp
2、搭建簡易堡壘機linux
具有堡壘機的條件是,該機器有公司和私網,其中私網和機房其餘機器互通 設計堡壘機思路: 跳板機安全設置(iptables端口限制、登陸限制sshd_config) 用戶、命令權限限制(第三方軟件:jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html 客戶機器日誌審計 http://www.68idc.cn/help/server/linux/2014042190951.html
3、搭建簡易堡壘機 – 安裝jailkit實現chrootnginx
cd /usr/local/src/ wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2 tar jxvf jailkit-2.19.tar.bz2 cd jailkit-2.19 ./configure make && make install mkdir /home/jail chmod 755 /home/jail 若是執行下面的報錯在給權限便可 把經常使用命令放到虛擬系統的目錄下/home/jail jk_init -v -j /home/jail/ basicshell shell相關的 jk_init -v -j /home/jail/ editors 編輯器vim jk_init -v -j /home/jail/ netutils 網絡相關的 jk_init -v -j /home/jail/ ssh 遠程登錄的ssh mkdir /home/jail/usr/sbin cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh 至關於虛擬系統的shell,放到/usr/sbin下 建立多個用戶,重複執行如下操做便可,沒建立一個用戶執行一次 useradd baoleiji passwd baoleiji jk_jailuser -m -j /home/jail baoleiji 建立虛擬系統的用戶
vim /home/jail/etc/passwd //把baoleiji那一行的/usr/sbin/jk_lsh改成/bin/bash
登陸baoleiji用戶測試web
vim /etc/ssh/sshd_config 改爲no只能用祕鑰登錄shell
登錄的源ip:vim /etc/hosts.allow 能夠限制ip登錄,除了allow中限制的ip以外,其餘的都不能登錄數據庫
限制來源ip,客戶機只能用跳板機登錄,其餘機器不能登陸vim
vim /etc/hosts.allow瀏覽器
vim /etc/hosts.deny安全
此時在鏈接002機器已沒法正常鏈接,須要經過登陸的跳板機鏈接,若是須要使用baoleiji帳號登錄,須要在對方機器建立baoleiji這個用戶bash
4、搭建簡易堡壘機 – 日誌審計
如下操做是須要在全部被登陸機器上作的:
mkdir /usr/local/records chmod 777 /usr/local/records/ chmod +t /usr/local/records/ t權限,防刪除
vim /etc/profile //添加
if [ ! -d /usr/local/records/${LOGNAME} ] #LOGNAME指的是登錄的用戶名是哪一個 then mkdir -p /usr/local/records/${LOGNAME} #建立這個用戶的目錄 chmod 300 /usr/local/records/${LOGNAME} #給這個用戶300權限,只能執行和寫 fi export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" #指定記錄歷史記錄的文件 export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE' #執行的最後一條命令記錄進去
從新登錄客戶端
建立用戶,經過跳板機登錄,作一些操做
回到002機器上,能夠看到生成了zhangsan目錄,和操做的記錄
5、開源堡壘機jumpserver介紹
官網www.jumpserver.org Jumpserver是一款使用Python, Django開發的開源跳板機系統, 助力互聯網企業高效 用戶、資產、權限、審計 管理 Auth 統一認證 CMDB 資產管理 統一受權 日誌審計 自動化運維(ansible)
6、安裝jumpserver
具體安裝步驟參考:https://blog.51cto.com/roben/2159929 和官方文檔https://docs.jumpserver.org/zh/docs/step_by_step.html,兩個文檔能夠互相參考,官方文檔有的步驟沒有,須要參考第一個連接
如下是文檔中操做須要注意的地方: 注意連接中的配置文件名稱和官方文檔的配置文件名稱不一樣,不能直接使用
防火牆:selinux 關閉:setenforce 0 systemctl stop firewalld.service
運行Jumpserver
cd /opt/jumpserver ./jms start all -d # 後臺運行使用 -d
運行coco:
cd /opt/coco ./cocod start -d # 後臺運行使用 -d
vim config.yml 修改配置文件,SECRET_KEY可使用文件中的命令生成,並修改數據庫配置信息 7js5bFUI3l3Ad7EDji0VEcdoMRpm13tCrygy4PBQDvDej5j1U
cd /opt/jumpserver/ ./jms start all -d 在後臺運行,瀏覽器訪問IP地址:8080 默認帳號:admin 密碼:admin 下面表明運行成功,瀏覽器正常訪問,線上環境須要把8080端口加入到白名單
vim /etc/rc.local 加入以下內容
source /opt/py3/bin/activate ; cd /opt/jumpserver; ./jms start all -d &>/dev/null 重啓時 jumpserver自動啓動
部署coco時,使用官方文檔中的:正常部署 coco 組件
修改coco配置文件
cd /opt/coco cp config_example.yml config.yml vim config.yml
BOOTSTRAP_TOKEN 須要從 jumpserver/config.yml 裏面獲取, 保證一致
配置完成後,啓動coco:./cocod start -d -d在後臺運行
啓動成功後,在頁面上選擇:會話管理->終端管理 能夠看到
啓動成功能夠看到5000端口和2222端口
若是報以下錯誤,說明第一次啓動時已經註冊了,下次就不能再用這個名字,重啓能夠解決,或者在官方配置文件中使用官方文檔中的:正常部署 coco 組件
測試:
本機訪問: ssh -p2222 admin@localhost 密碼是admin
使用Nginx作反向代理:
vim nginx.conf 把include下的內容全刪除,留一個 } 而後到conf.d目錄下,建立一個jumpserver.conf 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 -s reload
啓動nginx,並開機啓動
systemctl start nginx systemctl enable nginx
此時能夠在瀏覽器使用80端口訪問
服務所有啓動後, 訪問 jumpserver 服務器 nginx 代理的 80 端口, 不要經過8080端口訪問
使用xshell鏈接
端口2222
使用密鑰登錄:
在我的信息中選擇更改SSH密鑰:
使用putty或者xshell生成密鑰,並存放到authorized_keys,把公鑰複製到頁面上
在頁面我的信息中選擇更改SSh密鑰,把公鑰複製進來
提交後,使用admin用戶登陸,使用2222端口
jumpserver用戶用來登陸jumpserver(web界面、ssh登陸) 管理用戶用來自動建立客戶機上的系統用戶、批量執行命令等操做 客戶機上的系統用戶,用來經過jumpserver去登陸每一臺客戶機的用戶,最好和用戶管理->用戶列表中的一致
管理用戶使用ssh私鑰:
在192.168.183.133上手動生成: ssh-keygen -f jumpserver -f指定祕鑰的名字
而後把jumpserver(私鑰)可使用xshell中的sz下載到本機,而後把文件放到頁面中去
建立新的資產,選擇管理用戶,管理用戶須要到192.168.183.3這臺機器上去建立,這個管理用戶的意義我的理解就是訪問服務器的帳號
由於建立管理用戶時設置了私鑰,因此須要在此處增長公鑰,經過祕鑰去鏈接jumpserver用戶
步驟:
su - jumpserver mkdir .ssh chmod 700 .ssh cd .ssh 建立公鑰 vim authorized_keys ,把生成的公鑰放到此文件中 chmod 600 .ssh/authorized_keys 退出jumpserver用戶,回到root下:visudo進行設置 測試鏈接: ssh -i jump user1@127.0.0.1 不提示輸入密碼即成功
在192.168.183.3上切換到jumpserver用戶 : su - jumpserver 把剛剛在192.168.183.133機器上手動生成的公鑰複製過來: (sudo) vi .ssh/authorized_keys
ssh -i jumpserver jumpserver@192.168.183.3 -i指定私鑰,與183.3機器的公鑰匹配便可,無需輸入密碼,上方提示輸入密碼說明配置有問題
若是須要輸入密碼,要查看對應用戶的目錄下/home/user1/.ssh/authorized_keys 該文件是否有足夠的權限,還有生成的密鑰對的權限 chmod 600 jump jump是私鑰
管理用戶要有root的權限
使用root用戶,在192.168.183.3機器上修改: visudo 給予用戶sudo權限
jumpserver ALL=(ALL) NOPASSWD: ALL
登錄jumpserver用戶
使用sudo命令
使用祕鑰配對成功鏈接後,回到頁面,更新硬件信息,會把鏈接的主機配置信息更新出來,任務進程能夠在做業中心中查看
在權限管理->資產受權中添加規則
資產管理 -> 系統用戶詳情:
自動推送須要打開,此時會在受權規則的機器中自動推送此用戶 登陸模式選自動登陸
建立資產受權前沒有此用戶,建立完成後,用戶已下發
此時登錄這個用戶,輸入對應主機的id進行鏈接,此處是經過密碼登錄的,若是修改了密碼,會致使沒法自動登陸