運維堡壘機開發

1、權限管理

  當你公司的服務器變的愈來愈多後,須要操做這些服務器的人就確定不僅是一個運維人員,同時也可能包括多個開發人員,那麼這麼多的人操做業務系統,若是權限分配不當就會存在很大的安全風險,舉幾個場景例子:python

  1. 設想大家公司有300臺Linux服務器,A開發人員須要登陸其中5臺WEB服務器查看日誌或進行問題追蹤等事務,同時對另外10臺hadoop服務器有root權限,在有300臺服務器規模的網絡中,按常理來說你是已經使用了ldap權限統一認證的,你如何使這個開發人員只能以普通用戶的身份登陸5臺web服務器,而且同時容許他以管理員的身份登陸另外10臺hadoop服務器呢?而且同時他對其它剩下的200多臺服務器沒有訪問權限mysql

  2. 目前據我瞭解,不少公司的運維團隊爲了方面,整個運維團隊的運維人員仍是共享同一套root密碼,這樣內部信任機制雖然使你們的工做方便了,但同時存在着極大的安全隱患,不少狀況下,一個運維人員只須要管理固定數量的服務器,畢竟公司分爲不一樣的業務線,不一樣的運維人員管理的業務線也不一樣,但若是共享一套root密碼,其實就等於無限放大了每一個運維人員的權限,也就是說,若是某個運維人員想幹壞事的話,他能夠在幾分鐘內把整個公司的業務停轉,甚至數據都給刪除掉。爲了下降風險,因而有人想到,把不一樣業務線的root密碼改掉就ok了麼,也就是每一個業務線的運維人員只知道本身的密碼,這固然是最簡單有效的方式,但問題是若是你同時用了ldap,這樣作又比較麻煩,即便你設置了root不經過ldap認證,那新問題就是,每次有運維人員離職,他所在的業務線的密碼都須要從新改一次。linux

  其實上面的問題,我以爲能夠很簡單的經過堡壘機來實現,收回全部人員的直接登陸服務器的權限,全部的登陸動做都經過堡壘機受權,運維人員或開發人員不知道遠程服務器的密碼,這些遠程機器的用戶信息都綁定在了堡壘機上,堡壘機用戶只能看到他能用什麼權限訪問哪些遠程服務器。git

  在回收了運維或開發人員直接登陸遠程服務器的權限後,其實就等於大家公司生產系統的全部認證過程都經過堡壘機來完成了,堡壘機等於成了大家生產系統的SSO(single sign on)模塊了。你只須要在堡壘機上添加幾條規則就能實現如下權限控制了:github

  1. 容許A開發人員經過普通用戶登陸5臺web服務器,經過root權限登陸10臺hadoop服務器,但對其他的服務器無任務訪問權限web

  2. 多個運維人員能夠共享一個root帳戶,可是依然能分辨出分別是誰在哪些服務器上操做了哪些命令,由於堡壘機帳戶是每一個人獨有的,也就是說雖然全部運維人員共享了一同一個遠程root帳戶,但因爲他們用的堡壘帳戶都是本身獨有的,所以依然能夠經過堡壘機控制每一個運維人員訪問不一樣的機器。sql

2、審計管理

  審計管理其實很簡單,就是把用戶的全部操做都紀錄下來,以備往後的審計或者事故後的追責。在紀錄用戶操做的過程當中有一個問題要注意,就是這個紀錄對於操做用戶來說是不可見的,什麼意思?就是指,不管用戶願不肯意,他的操做都會被紀錄下來,而且,他本身若是不想操做被紀錄下來,或想刪除已紀錄的內容,這些都是他作不到的,這就要求操做日誌對用戶來說是不可見和不可訪問的,經過堡壘機就能夠很好的實現。shell

3、堡壘機架構 

  堡壘機的主要做用權限控制和用戶行爲審計,堡壘機就像一個城堡的大門,城堡裏的全部建築就是你不一樣的業務系統 , 每一個想進入城堡的人都必須通過城堡大門並通過大門守衛的受權,每一個進入城堡的人必須且只能嚴格按守衛的分配進入指定的建築,且每一個建築物還有本身的權限訪問控制,不一樣級別的人能夠到建築物裏不一樣樓層的訪問級別也是不同的。還有就是,每一個進入城堡的人的全部行爲和足跡都會被嚴格的監控和紀錄下來,一旦發生犯罪事件,城堡管理人員就能夠經過這些監控紀錄來追蹤責任人。 數據庫

  堡壘要想成功徹底記到他的做用,只靠堡壘機自己是不夠的, 還須要一系列安全上對用戶進行限制的配合,堡壘機部署上後,同時要確保你的網絡達到如下條件:ubuntu

    • 全部人包括運維、開發等任何須要訪問業務系統的人員,只能經過堡壘機訪問業務系統
      • 回收全部對業務系統的訪問權限,作到除了堡壘機管理人員,沒有人知道業務系統任何機器的登陸密碼
      • 網絡上限制全部人員只能經過堡壘機的跳轉才能訪問業務系統 
    • 確保除了堡壘機管理員以外,全部其它人對堡壘機自己無任何操做權限,只有一個登陸跳轉功能
    • 確保用戶的操做紀錄不能被用戶本身以任何方式獲取到並篡改

4、堡壘機功能實現需求

業務需求:

  1. 兼顧業務安全目標與用戶體驗,堡壘機部署後,不該使用戶訪問業務系統的訪問變的複雜,不然工做將很難推動,由於沒人喜歡改變現狀,尤爲是改變後生活變得更艱難
  2. 保證堡壘機穩定安全運行, 沒有100%的把握,不要上線任何新系統,即便有100%把握,也要作好最壞的打算,想好故障預案

功能需求:

  1. 全部的用戶操做日誌要保留在數據庫中
  2. 每一個用戶登陸堡壘機後,只須要選擇具體要訪問的設置,就鏈接上了,不須要再輸入目標機器的訪問密碼
  3. 容許用戶對不一樣的目標設備有不一樣的訪問權限,例:
    1. 對10.0.2.34 有mysql 用戶的權限
    2. 對192.168.3.22 有root用戶的權限
    3. 對172.33.24.55 沒任何權限
  4. 分組管理,便可以對設置進行分組,容許用戶訪問某組機器,但對組裏的不一樣機器依然有不一樣的訪問權限  

5、設計表結構:

一、直接經過linux用戶和密碼登陸

二、經過ssh公鑰登陸

祕鑰生成命令
1.ssh-keygen
    .ssh/.id_rsa 私鑰
    .ssh/.id_rsa.pub 公鑰
2. 把公鑰copy到要登陸的目標機器上
    scp -rp id_rsa alex@192.168.10.35:/home/alex/ #把本地文件copy到遠程
    scp -rp alex@192.168.10.35:/home/alex/id_rsa /tmp/ #把遠程文件copy到本地

    查看當前用戶id, whoami
    su - alex 切換用戶
    cat id_rsa.pub >authorized_keys 讀出id_rsa.pub的內容並寫入到>後的文件,(覆蓋)
    cat id_rsa.pub >>authorized_keys 讀出id_rsa.pub的內容並寫入到>後的文件,(追加)

3. 在目標機器上,把id_rsa.pub裏的key取出寫入.ssh/authorized_keys

ubuntu系統:

#安裝paramiko

sudo pip3 install -i http://pypi.douban.com/simple/ paramiko --trusted-host pypi.douban.com

#搜索全部可用的安裝包
sudo apt-cache search openssl

#安裝 libssl-dev
sudo apt-get install libssl-dev

開機自動加載保壘機程序方法:

在普通用戶家目錄下面:

vim home/taram/.bashrc 

把這段代碼加到文件結尾:

python3 s3CrazyEye/crazyeye_manager.py run
logout

6、安裝shellinabox-master

插件介紹:經過web頁面管理linux主機(電腦版)

軟件安裝:

#安裝依賴包

yum install git openssl-devel pam-devel zlib-devel autoconf automake libtool -y

mkdir -p /home/nulige/tools

cd /home/nulige/tools

#下載軟件包
git clone https://github.com/shellinabox/shellinabox.git && cd shellinabox


#安裝軟件須要的組件
autoreconf -i


#編譯安裝軟件
 ./configure --prefix=/usr/local/shellinabox

make && makeinstall

#進入軟件目錄
cd /usr/local/shellinabox/bin

#啓動軟件
./shellinaboxd -t -b

#檢查4200端口是否啓動

[root@paramiko-server ~]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp 0      0 0.0.0.0:4200                0.0.0.0:* LISTEN  
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN    

#訪問網站

#查看本機ip地址,而後ip+4200端口,就能夠訪問啦!

http://192.168.30.130:4200/

#在linux保壘機上面新建一個普通用戶

#建立普通用戶
useradd jojo #設置密碼 passwd jojo 輸入兩遍密碼:
123456

#登陸shellinabox

 

名稱:WebShell

插件介紹:經過web頁面管理linux主機(手機版)

yum install openssl python pyOpenSSL

./make_certificate.sh

./webshell.py

 運行效果:

相關文章
相關標籤/搜索