23.1 什麼是堡壘機
23.2 搭建簡易堡壘機
23.3 安裝jailkit實現chroot
23.4 日誌審計
23.1 什麼是堡壘機
1.在一個特定網絡環境下,爲了保障網絡和數據不受外界入侵和破壞,而運用各種技術手段實時收集和監控網絡環境中每一個組成部分的系統狀態、安全事件、網絡活動,以便集中報警、及時處理及審計定責。
#堡壘機最大的功能是保證安全
2.我們又把堡壘機叫做跳板機,簡易的跳板機功能簡單,主要核心功能是遠程登錄服務器和日誌審計。
#還可以記錄機器的信息,通常叫做cmdb(資產管理)、監控、網絡、用戶授權等等
#針對一些用戶組去做全下的規定,比如一個用戶組有對這些機器,另外一個用戶組又對另外一些機器有權限,想登陸普通用戶擁有超級用戶的權限
3.比較優秀的開源軟件jumpserver,認證、授權、審計、自動化(批量的命令執行)、資產管理(比如機器在哪個機房等等類似的)。
#甚至可以把你對這臺機器的操作都記錄下來,就像錄屏一樣。不僅僅記錄命令,結果也會記錄下來
4.商業堡壘機:齊治, Citrix XenApp (思傑)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.2 搭建簡易堡壘機
1.具備堡壘機的條件是,該機器有公司和私網,其中私網和機房其他機器互通
#說白了也就是跳板機。跳板機上要有公網,跳板機通過內網與其他機器通信、連接
2.設計堡壘機思路
跳板機安全設置(iptables端口限制、登錄限制sshd_config)
#比如ssh(22端口)開放,其他關閉。或者80端口以及其他用到的端口。爲的是安全
#比如只允許某些IP去登錄他,比如公司的、家裏的。或出差的時候可以搞一個vpn。撥到公司,然後去登錄他
用戶、命令權限限制(jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html
jailkit(也就是chroot),之前講rsync的時候用到過。限制權限,限制登入的用戶只能用哪些命令
3.客戶機器日誌審計 (到客戶機去做,不能在跳板機做)
#比如用戶執行的每一條命令都記錄下來。大作業的時候也做過一個簡單的命令審計
http://www.68idc.cn/help/server/linux/2014042190951.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.3 安裝jailkit實現chroot
用jailkit軟件實現chroot。我們要登錄普通用戶把這個普通用戶限定在虛擬的系統裏面,讓他使用有限的命令和有限的環境。以此來保證系統的安全性,他因此不能使用更多的命令來更改跳板機的設置
1.wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
2.tar jxvf jailkit-2.19.tar.bz2
3.cd jailkit-2.19
4../configure && make && make install
5.mkdir /home/jail #這個目錄作爲虛擬系統的根目錄,也就是說chroot到這個目錄下
6.jk_init -v -j /home/jail/ basicshell #把shell相關的庫文件或命令搞過去
jk_init -v -j /home/jail/ editors #編輯器vi、vim
jk_init -v -j /home/jail/ netutils #網絡相關的
jk_init -v -j /home/jail/ ssh #遠程登錄的時候用到的
#執行這幾條命令的作用簡單講就是,把一些常用的命令像ssh、ls、等等,把它搞到虛擬系統根目錄(home/jail)下去
7.mkdir /home/jail/usr/sbin #創建他的目的是爲了要拷貝jk_sh(第8 步驟)
8.cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh
#/usr/sbin/jk_lsh是一個虛擬系統的shell,把它複製到這個目錄下
9.useradd zhangsan !!如果需要多個用戶,就從這一步繼續做。上面的不用在執行了
10.passwd zhangsan
11.jk_jailuser -m -j /home/jail zhangsan
#虛擬的系統裏面創建zhangsan用戶
12.vim /home/jail/etc/passwd //把zhangsan那一行的/usr/sbin/jk_lsh改爲/bin/bash
13.限制來源IP
/etc/hosts.alow
/etc/hosts.deny
實例:
[root@axinlinux-01 ~]# cd /usr/local/src/
[root@axinlinux-01 src]# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
[root@axinlinux-01 src]# tar -jxvf jailkit-2.19.tar.bz2
[root@axinlinux-01 src]# cd jailkit-2.19/
[root@axinlinux-01 jailkit-2.19]# ./configure
[root@axinlinux-01 jailkit-2.19]# make && make install
[root@axinlinux-01 jail]# mkdir /home/jail
[root@axinlinux-01 jail]# cd /home/jail
[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ basicshell
[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ editors
[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ netutils
[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ ssh
[root@axinlinux-01 jail]# useradd zhangsan
[root@axinlinux-01 jail]# passwd zhangsan
更改用戶 zhangsan 的密碼 。
新的 密碼: wangxin789
[root@axinlinux-01 jail]# mkdir /home/jail/usr/sbin
[root@axinlinux-01 jail]# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh
[root@axinlinux-01 jail]# jk_jailuser -m -j /home/jail zhangsan
[root@axinlinux-01 jail]# vim etc/passwd
zhangsan:x:1011:1011::/home/zhangsan:/bin/bash #末尾改爲/bin/bash
然後我們就可以用張三這個用戶去登錄了(在xshell上新建會話,登錄)
會提示/usr/bin/id沒有,是因爲他要去執行一個/etc/profile,裏面就有這個命令。不必關心
如果要使用祕鑰登錄:
[root@axinlinux-01 jail]# vim /etc/ssh/sshd_config
PasswordAuthentication yes #這裏改爲no。也就只能祕鑰登錄了
[root@axinlinux-01 jail]# ssh-keygen #ssh-keygen生成密鑰對
[root@axinlinux-01 jail]# vim /root/.ssh/authorized_keys #將公鑰(pub)放到這個文件裏
還要改一下iptables,不用的服務限制掉
[root@axinlinux-01 jail]# vim /etc/hosts.allow #還要設置一下信任的登錄的ip
sshd: 192.168.208.0/24 1.1.1.1 2.2.2.2 #信任哪些網段、IP
[root@axinlinux-01 jail]# vim /etc/hosts.deny #除了allow的,其他的全部deny掉
sshd: ALL
也就是除了信任的網段、IP,其他的都不能遠程登錄了。大大的增加跳板機的安全係數
13.下面的步驟就是到各個客戶機上做限制,其中有一項就是限制來源的IP。你想想我們的客戶機只能用跳板機登錄,其他的機器全不能登錄:
[root@axinlinux-02 ~]# vim /etc/hosts.allow #比如02機器是我們的客戶機。首先要限制一下allow
sshd: 192.168.208.128 #我們的跳板機是128。也及時只有這個ip能等128機器(其他的都登不進來)
[root@axinlinux-02 ~]# vim /etc/hosts.deny #其他的全部deny掉
sshd: ALL
這個時候我們再登錄02機器,就登不進來了。但是我們可以用128機器(跳板機)登
這樣我們就做成了一個跳板機。但是最好在登錄的時候,用張三用戶去登錄,那麼對方機器(客戶機)也要創建一個張三的用戶。如果想讓張三能有root的命令,可以讓他擁有su的權限,跳到root下
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23.4 日誌審計
非常關鍵,某個人登錄了我們的機器,都做了哪些操作,我們需要去做一下記錄
以下操作是需要在所有被登錄機器上做的
1.mkdir /usr/local/records
2.chmod 777 !$
3.chmod +t !$ #-t防刪除
4.vi /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@axinlinux-02 ~]# mkdir /usr/local/records
[root@axinlinux-02 ~]# chmod 777 /usr/local/records
[root@axinlinux-02 ~]# chmod +t /usr/local/records
if [ ! -d /usr/local/records/${LOGNAME} ] #logname指的是你登錄哪個用戶就是哪個用戶的用戶名,比如張三。在/usr/local/recoreds這個目錄下生成一個zhangsan的目錄
then
mkdir -p /usr/local/records/${LOGNAME} #創建這個目錄之後
chmod 300 /usr/local/records/${LOGNAME} #設置權限300。也就是隻有這個用戶能執行和寫。不能讀
fi
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" #指定記錄命令歷史的文件。也就是張三用戶下的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@axinlinux-02 ~]# cd /usr/local/records/
[root@axinlinux-02 records]# ls #就會有一個root目錄了。因爲我們是root登錄的
root
[root@axinlinux-02 records]# cd root/ #進入到root
[root@axinlinux-02 root]# ls
bash_history
[root@axinlinux-02 root]# cat bash_history #查看這個文件。以下,就是我們敲過的命令
2018-11-28 22:53:59 ##### root pts/0 (192.168.208.1) #### vim /etc/hosts.allow
用戶是誰 來源IP 敲過的命令
2018-11-28 22:54:14 ##### root pts/0 (192.168.208.1) #### ls /usr/local/records/
2018-11-28 22:54:41 ##### root pts/0 (192.168.208.1) #### cd /usr/local/records/
2018-11-28 22:54:42 ##### root pts/0 (192.168.208.1) #### ls
2018-11-28 22:54:45 ##### root pts/0 (192.168.208.1) #### cd root/
2018-11-28 22:54:46 ##### root pts/0 (192.168.208.1) #### ls
這個記錄的不像我們系統裏的history,他只記錄正常退出的命令。而我們做的這個就可以
以上這兩節操作其實並不完善,容易被破解。還需要藉助一些開源的軟件來做,比如接下來的jumpserver