1. 程式人生 > >搭建簡易堡壘機

搭建簡易堡壘機

同時 cor 經濟 proc 普通用戶 hist 還需 ges 安全局

筆記內容:搭建簡易堡壘機
筆記日期:2018-01-18

  • 23.1 什麽是堡壘機
  • 23.2 搭建簡易堡壘機
  • 23.3 安裝jailkit實現chroot
  • 23.4 日誌審計

23.1 什麽是堡壘機

堡壘機,是在一個特定的網絡環境下,為了保障網絡和數據不受來自外部和內部用戶的入侵和破壞,而運用各種技術手段實時收集和監控網絡環境中每一個組成部分的系統狀態、安全事件、網絡活動,以便集中報警、及時處理及審計定責。

我們又把堡壘機叫做跳板機,簡易的跳板機功能簡單,主要核心功能是遠程登錄服務器和日誌審計。運維堡壘機的理念起源於跳板機。2000年左右,高端行業用戶為了對運維人員的遠程登錄進行集中管理,會在機房裏部署跳板機。跳板機就是一臺服務器,維護人員在維護過程中,首先要統一登錄到這臺服務器上,然後從這臺服務器再登錄到目標設備進行維護。

堡壘機從功能上講,它綜合了核心系統運維和安全審計管控兩大主幹功能,從技術實現上講,通過切斷終端計算機對網絡和服務器資源的直接訪問,而采用協議代理的方式,接管了終端計算機對網絡和服務器的訪問。形象地說,終端計算機對目標的訪問,均需要經過運維安全審計的翻譯。打一個比方,運維安全審計扮演著看門者的工作,所有對網絡設備和服務器的請求都要從這扇大門經過。因此運維安全審計能夠攔截非法訪問,和惡意攻擊,對不合法命令進行命令阻斷,過濾掉所有對目標設備的非法訪問行為,並對內部人員誤操作和非法操作進行審計監控,以便事後責任追蹤。

安全審計作為企業信息安全建設不可缺少的組成部分,逐漸受到用戶的關註,是企業安全體系中的重要環節。同時,安全審計是事前預防、事中預警的有效風險控制手段,也是事後追溯的可靠證據來源。

為什麽企業需要堡壘機?

近年來數據安全事故頻發,包括斯諾登事件、希拉裏郵件醜聞以及攜程宕機事件等,數據安全與防止泄露成為政府和企業都非常關心的議題,因此雲堡壘機也應運而生。

案例一:

讓我們共同回顧最具代表性的數據泄露引發的安全事故,美國著名的斯諾登事件。2013年6月,美國《華盛頓郵報》報道,美國國家安全局和聯邦調查局於2007年啟動了一個代號為“棱鏡”的秘密監控項目,直接進入美國網際網路公司的中心服務器裏挖掘數據、收集情報。洩露這些絕密文件的並非國家安全局的內部員工,而是國家安全局的外聘人員愛德華·斯諾登。

斯諾登事件若放在今天,將不可能發生,因為我們有了雲堡壘機!其中的管理員角色可以設置敏感操作的事前攔截、事中斷開、事後審計,並且可以做到全程無代理實時監控。類似斯諾登這樣的外聘人員將無法接觸到這些敏感信息,更不用說泄露出來了。並且某些雲堡壘機支持錄屏功能也可以幫助用戶進行審計和追責。

案例二:

2015年5月28日上午11點至晚上8點,在某旅遊出行平臺官網及APP上登錄、下單或交易時,跳轉均出現問題,導致操作無法順利完成。造成直接經濟損失巨大,按照其上一季度的財報公布的數據,宕機的損失為平均每小時106.48萬美元。

最終,平臺回應此事稱系由於員工誤操作刪除了服務器上的執行代碼導致。不論是因為黑客攻擊還是員工誤操作,真金白銀800萬美元的經驗教訓告誡我們對於數據的安全和備份必須要引起重視!雲堡壘機能解決這2個問題,一是攻擊面小,二是可定制雙機備份。

以上事實說明,雲堡壘機對安全的重要程度不言而喻。

比較優秀的用於搭建堡壘機的開源軟件:jumpserver。主要功能有:認證、授權、審計、自動化、資產管理等。

商業堡壘機的功能比開源的要強大,比較出名的有:齊治,Citrix XenApp等。


23.2 搭建簡易堡壘機思路

堡壘機需要具有公網IP以及內網IP,其中內網IP用於和機房其他機器通信。公網IP是用於在外部登錄,通過公網IP登錄到堡壘機後,才能訪問內網的機器,這一點和跳板機一樣。

搭建堡壘機,首先需要限制端口,留出可以遠程登錄的端口,其他的端口都封閉掉。然後還需要配置白名單IP,規定只有哪些IP可以登錄,以及禁止密碼登錄,只允許密鑰登錄等,做這些事情的目的是為了增加堡壘機的安全性。

除此之外,還需要限制登錄的用戶,限制為普通用戶登錄,和限制用戶可以執行的命令等。

還需要在客戶機器上做日誌審計。


23.3 安裝jailkit實現chroot

安裝jailkit實現chroot的目的是為了限制登錄的用戶能夠執行的命令,因為要防止登錄的用戶對堡壘機進行其他的操作。jailkit可以把用戶限制在一個虛擬的系統中,這個虛擬系統的環境是chroot的,讓用戶無法直接操作真實系統。

編譯安裝jailkit:

[root@localhost ~]# cd /usr/local/src/
[root@localhost /usr/local/src]# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
[root@localhost /usr/local/src]# tar jxvf jailkit-2.19.tar.bz2
[root@localhost /usr/local/src]# cd jailkit-2.19
[root@localhost /usr/local/src/jailkit-2.19]# ./configure && make && make install
[root@localhost /usr/local/src/jailkit-2.19]# echo $?
0
[root@localhost /usr/local/src/jailkit-2.19]#

創建一個目錄作為虛擬系統的根目錄:

[root@localhost ~]# mkdir /home/jail

給虛擬系統初始化一些命令,讓這個系統具有基本的文件結構、網絡相關的以及常用命令等:

[root@localhost ~]# jk_init -v -j /home/jail/ basicshell
[root@localhost ~]# jk_init -v -j /home/jail/ editors
[root@localhost ~]# jk_init -v -j /home/jail/ netutils
[root@localhost ~]# jk_init -v -j /home/jail/ ssh

初始化完成後/home/jail/下會生成以下幾個目錄:

[root@localhost ~]# ls /home/jail/
bin  dev  etc  home  lib64  usr
[root@localhost ~]#

創建真實系統的用戶:

[root@localhost ~]# useradd jailUser
[root@localhost ~]# passwd jailUser
更改用戶 jailUser 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost ~]#

創建虛擬系統的sbin目錄,並拷貝虛擬系統的shell文件:

[root@localhost ~]# mkdir /home/jail/usr/sbin
[root@localhost ~]# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

創建虛擬系統的用戶:

[root@localhost ~]# jk_jailuser -m -j /home/jail jailUser

編輯虛擬系統用戶的密碼文件內容如下:

[root@localhost ~]# vim /home/jail/etc/passwd
root:x:0:0:root:/root:/bin/bash
jailUser:x:1011:1011::/home/jailUser:/bin/bash  # 改成/bin/bash後才能被遠程登錄

完成以上操作後,遠程登錄一下jailUser這個賬戶:
技術分享圖片

登錄成功:
技術分享圖片

如圖可以看到,這個系統可以執行的命令只有118條。

能夠成功登錄後就可以生成密鑰,添加密鑰認證了,配置完密鑰後,還需要在真實系統上編輯sshd_config文件把PasswordAuthentication的值改為no,這樣就能禁止遠程密碼登錄了。

真實系統上,還需要開啟防火墻規則,除了遠程登錄端口外其他端口都需要封閉掉,這個很簡單這裏就不演示了。除此之外還需要配置白名單IP,這個在hosts.allow文件裏配置,hosts.deny裏也需要進行相應的配置,如下示例:

[root@localhost ~]# vim /etc/hosts.allow
sshd: 192.168.77.0/24 1.1.1.1 2.2.2.2  # 白名單ip配置在這裏
[root@localhost ~]# vim /etc/hosts.deny
sshd: ALL  # 設置除了白名單ip外的ip都拒絕連接

23.4 日誌審計

我們還需要在客戶機上做一個簡單的日誌審計,記錄在該機器執行過的命令,以下操作是需要在所有被登錄機器上做的:
1.首先配置hosts.allow以及hosts.deny文件,設置僅允許堡壘機的IP登錄,其他的一律拒絕登錄:

[root@localhost ~]# vim /etc/hosts.allow
sshd: 192.168.77.130  # 堡壘機的IP
[root@localhost ~]# vim /etc/hosts.deny
sshd: ALL  # 拒絕堡壘機以外的IP登錄

然後在堡壘機上看看能否進行登錄:
技術分享圖片

如圖,能夠成功登錄,代表沒問題。

2.配置日誌審計:

[root@localhost ~]# mkdir /usr/local/records # 創建日誌文件存放的目錄
[root@localhost ~]# chmod 777 !$
chmod 777 /usr/local/records
[root@localhost ~]# chmod +t !$
chmod +t /usr/local/records
[root@localhost ~]# vim /etc/profile  # 文件末尾增加以下內容
if [ ! -d  /usr/local/records/${LOGNAME} ]
then
    mkdir -p /usr/local/records/${LOGNAME}
    chmod 300 /usr/local/records/${LOGNAME}
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‘
[root@localhost ~]# source /etc/profile  # 讓profile的配置生效

配置完成後,查看是否有生成相應的記錄文件:

[root@localhost ~]# ls /usr/local/records/
root
[root@localhost ~]# ls /usr/local/records/root/
bash_history
[root@localhost ~]# cat /usr/local/records/root/bash_history 
2018-01-18 21:09:56 ##### root pts/0 (192.168.77.1) #### source /etc/profile
2018-01-18 21:10:41 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/
2018-01-18 21:10:44 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/root/
2018-01-18 21:10:46 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/root/
[root@localhost ~]# 

如上,可以看到,生成的bash_history 文件中已經記錄了我剛剛敲過的命令,這樣就能夠記錄哪個用戶在哪個時間點上在這臺機器上敲過的命令。

到此,一個簡易的堡壘機就搭建完成了,也算不上真正意義的堡壘機吧,只能算是個跳板機。因為我們還沒有使用專業的工具去搭建,所以還不太符合堡壘機的概念,但是如果機器不是那麽多,只有幾臺,而且要求也沒那麽高的話,這種跳板機也就夠用了。

搭建簡易堡壘機