1. 程式人生 > >雲端計算之linux伺服器使用者管理

雲端計算之linux伺服器使用者管理

技術背景:

       工程師A:公司裡那麼多伺服器,每天伺服器上都會建立些新使用者,這樣不安全

       工程師B:不給他們建立使用者的許可權不就好了?

       工程師A:不放權,事事都自己管,那不累死了

      工程師B:那就寫指令碼監控,這樣就知道什麼時候,誰通過哪個終端建立了哪個使用者了

技術實現:

伺服器環境:centos7.4 1.執行pstree可以看到:程序樹上有一個auditd程序     auditd程序是審計監控,可以記錄誰在什麼時候對哪個檔案做了什麼操作,本指令碼主要使用這個技術 2.本次是監聽使用者的建立,新建立的使用者會寫入/etc/passwd檔案中,所以要通過audit審計監控這個檔案     auditctl -w /etc/passwd -p rwxa      auditctl -l ==>就可以看到自己建立的監聽規則     以上命令只是臨時建立,伺服器重啟後就沒了,不適用,所以要寫入配置檔案中     vim /etc/audit/rules.d/audit.rules         -w /etc/passwd -p rwxa 3.建立新使用者,檢視審計資訊     useradd li1     echo 123 | passwd --stdin li1     ausearch -f /etc/passwd | grep useradd | tail -1          ==>就可以看到剛剛操作的詳細資訊     timer=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $2}' | awk -F'[(.)]' '{print $2}'`        但是,並不能看到在哪個終端,建立了誰 4.通過上面的結果可以獲取到時間,使用者id,與父程序          獲取到操作的時間,不過是秒數,需要轉換為標準時間     timer=`date -d @$timer +%F-%Hh`     這樣就可以得到年-月-日-時h的時間格式了     uid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $15}' | awk -F'=' '{print $2}'`     這樣可以取出使用者ID,然後在通過/etc/passwd將使用者id轉換為使用者名稱     uname=`awk -F: '$3=='$uid'{print $1}' /etc/passwd`     取出ppid父程序,通過這個父程序可以得到操作者的終端ip地址     ppid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $12}' | awk -F'=' '{print $2}'`     addr=`cat /var/log/audit/audit.log |grep "$ppid"| grep hostname | tail -1 | awk '{print $12}'|awk -F'=' '{print $2}'`     然後可以檢視/etc/passwd得到該操作者建立了誰     WhoIsCreated=`tail -1 /etc/passwd | awk -F: '{print $1}'` 5.建立一個檔案,將剛剛得到的結果追加寫入這個檔案中     vim /root/users.txt         時間    使用者    地點    建立了誰?     echo $timer $uname $addr $WhoIsCreated >> /root/users.txt  6.可以將該結果通過郵件的方式傳送給管理員     echo $timer $uname $addr $WhoIsCreated | mail -S "通知"

[email protected]

7.總結:以上操作可以寫入指令碼配合週期性計劃任務自動執行 vim audit_useradd.sh #!/bin/bash #comment=`ausearch -f /etc/passwd | grep useradd | tail -1` timer=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $2}' | awk -F'[(.)]' '{print $2}'` timer=`date -d @$timer +%F-%Hh` uid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $15}' | awk -F'=' '{print $2}'` uname=`awk -F: '$3=='$uid'{print $1}' /etc/passwd` ppid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $12}' | awk -F'=' '{print $2}'` addr=`cat /var/log/audit/audit.log |grep "$ppid"| grep hostname | tail -1 | awk '{print $12}'|awk -F'=' '{print $2}'` WhoIsCreated=`tail -1 /etc/passwd | awk -F: '{print $1}'`

echo $timer $uname $addr $WhoIsCreated >> /root/a.txt