安全運維之:Linux系統賬戶和登入安全
一、合理使用Shell歷史命令記錄功能
在Linux下可通過history命令檢視使用者所有的歷史操作記錄,同時shell命令操作記錄預設儲存在使用者目錄下 的.bash_history檔案中,通過這個檔案可以查詢shell命令的執行歷史,有助於運維人員進行系統審計和問題排查,同時,在伺服器遭受黑客攻 擊後,也可以通過這個命令或檔案查詢黑客登入伺服器所執行的歷史命令操作,但是有時候黑客在入侵伺服器後為了毀滅痕跡,可能會刪 除.bash_history檔案,這就需要合理的保護或備份.bash_history檔案。下面介紹下history日誌檔案的安全配置方法。
預設的history命令只能檢視使用者歷史操作記錄,並不能區分每個使用者操作命令的時間,這點對於排查問題十分不便,不過可以通過下面的方法(加入四行內容)讓history命令自動記錄所有shell命令的執行時間,編輯/etc/bashrc檔案:
- HISTFILESIZE=4000
- HISTSIZE=4000
- HISTTIMEFORMAT=`%F %T`
- export HISTTIMEFORMAT
其中,HISTFILESIZE定義了在.bash_history檔案中儲存命令的記錄總數,預設值是1000,這裡設定為 4000;HISTSIZE定義了history命令輸出的記錄總數;HISTTIMEFORMAT定義時間顯示格式,這裡的格式與date命令後的 “+”%F %T””是一致的;HISTTIMEFORMAT作為history的時間變數將值傳遞給history命令。
通過這樣的設定後,執行history命令,就會顯示每個歷史命令的詳細執行時間,例如:
- [root@server ~]# history
- 247 2013-10-05 17:16:28 vi /etc/bashrc
- 248 2013-10-05 17:16:28 top
- 249 2013-10-05 17:04:18 vmstat
- 250 2013-10-05 17:04:24 ps -ef
- 251 2013-10-05 17:16:29 ls -al
- 252 2013-10-05 17:16:32 lsattr
- 253 2013-10-05 17:17:16 vi /etc/profile
- 254 2013-10-05 17:19:32 date +“%F %T”
- 255 2013-10-05 17:21:06 lsof
- 256 2013-10-05 17:21:21 history
為了確保伺服器的安全,保留shell命令的執行歷史是非常有用的一條技巧。shell雖然有歷史功能,但是這個功能並非針對審計目的而設計,因此 很容易被黑客篡改或是丟失。下面再介紹一種方法,可以實現詳細記錄登入過系統的使用者、IP地址、shell命令以及詳細操作時間等,並將這些資訊以檔案的 形式儲存在一個安全的地方,以供系統審計和故障排查。
將下面這段程式碼新增到/etc/profile檔案中,即可實現上述功能。
-
- #history
- USER_IP=`who -u am i 2>/dev/null| awk `{print $NF}`|sed -e `s/[()]//g“
- HISTDIR=/usr/share/.history
- if [ -z $USER_IP ]
- then
- USER_IP=`hostname`
- fi
- if [ ! -d $HISTDIR ]
- then
- mkdir -p $HISTDIR
- chmod 777 $HISTDIR
- fi
- if [ ! -d $HISTDIR/${LOGNAME} ]
- then
- mkdir -p $HISTDIR/${LOGNAME}
- chmod 300 $HISTDIR/${LOGNAME}
- fi
- export HISTSIZE=4000
- DT=`date +%Y%m%d_%H%M%S`
- export HISTFILE=“$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT”
- export HISTTIMEFORMAT=“[%Y.%m.%d %H:%M:%S]”
- chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null
儲存歷史命令的資料夾目錄要儘量隱蔽,避免被黑客發現後刪除。
二、合理使用su、sudo命令
su命令是一個切換使用者的工具,經常用於將普通使用者切換到超級使用者下,當然也可以從超級使用者切換到普通使用者。為了保證伺服器的安全,幾乎所有伺服器 都禁止了超級使用者直接登入系統,而是通過普通使用者登入系統,然後再通過su命令切換到超級使用者下,執行一些需要超級許可權的工作。通過su命令能夠給系統管 理帶來一定的方便,但是也存在不安全的因素,例如系統有10個普通使用者,每個使用者都需要執行一些有超級許可權的操作,就必須把超級使用者的密碼交給這10個普 通使用者,如果這10個使用者都有超級許可權,通過超級許可權可以做任何事,那麼會在一定程度上對系統的安全造成了威協。因此su命令在很多人都需要參與的系統管 理中,並不是最好的選擇,超級使用者密碼應該掌握在少數人手中,此時sudo命令就派上用場了。
sudo命令允許系統管理員分配給普通使用者一些合理的“權利”,並且不需要普通使用者知道超級使用者密碼,就能讓他們執行一些只有超級使用者或其他特許用 戶才能完成的任務,比如系統服務重啟、編輯系統配置檔案等,通過這種方式不但能減少超級使用者登入次數和管理時間,也提高了系統安全性。因此,sudo命令 相對於許可權無限制性的su來說,還是比較安全的,所以sudo也被稱為受限制的su,另外sudo也是需要事先進行授權認證的,所以也被稱為授權認證的 su。
sudo執行命令的流程是:將當前使用者切換到超級使用者下,或切換到指定的使用者下,然後以超級使用者或其指定切換到的使用者身份執行命令,執行完成後,直接退回到當前使用者,而這一切的完成要通過sudo的配置檔案/etc/sudoers來進行授權。
例如,/etc/shadow檔案普通使用者是無法訪問的:
- [user01@unknown ~]$ more /etc/shadow
- /etc/shadow: Permission denied
如果要讓普通使用者user01可訪問這個檔案,可以在/etc/sudoers新增如下內容:
- user01 ALL = /bin/more /etc/shadow
- 這樣,通過如下方式user01使用者就可訪問/etc/shadow檔案:
- [user01@unknown ~]$ sudo more /etc/shadow
- [sudo] password for user01:
執行這個命令後,需要輸入user01使用者的密碼,然後就可訪問檔案內容了。在這裡sudo使用時間戳檔案來完成類似“檢票”的系統,當使用者輸入密 碼後就獲得了一張預設存活期為5分鐘的“入場券”(預設值可以在編譯的時候改變)。超時以後,使用者必須重新輸入密碼才能檢視檔案內容。
如果每次都需要輸入密碼,那麼某些自動呼叫超級許可權的程式就會出現問題,此時可以通過下面的設定,讓普通使用者無需輸入密碼即可執行具有超級許可權的程 序。例如,要讓普通使用者centreon具有/etc/init.d/nagios指令碼重啟的許可權,可以在/etc/sudoers新增如下設定:
- CENTREON ALL = NOPASSWD: /etc/init.d/nagios restart
這樣,普通使用者centreon就可以執行nagios重啟的指令碼而無需輸入密碼了。如果要讓一個普通使用者user02具有超級使用者的所有許可權,而又不想輸入超級使用者的密碼,只需在/etc/sudoers新增如下內容即可:
- user02 ALL=(ALL) NOPASSWD: ALL
這樣user02使用者登入系統後,就可以通過執行如下命令切換到超級使用者下:
- [user02@unknown ~]$ sudo su –
- [root@unknown ~]# pwd
- /root
sudo設計的宗旨是:賦予使用者儘可能少的許可權但仍允許它們完成自己的工作,這種設計兼顧了安全性和易用性,因此,強烈推薦通過sudo來管理系統 賬號的安全,只允許普通使用者登入系統,如果這些使用者需要特殊的許可權,就通過配置/etc/sudoers來完成,這也是多使用者系統下賬號安全管理的基本方 式。
三、刪減系統登入歡迎資訊
系統的一些歡迎資訊或版本資訊,雖然能給系統管理者帶來一定的方便,但是這些資訊有時候可能被黑客利用,成為攻擊伺服器的幫凶,為了保證系統的安 全,可以修改或刪除某些系統檔案,需要修改或刪除的檔案有4個,分別是/etc/issue、/etc/issue.net、/etc/redhat- release和/etc/motd。
/etc/issue和/etc/issue.net檔案都記錄了作業系統的名稱和版本號,當使用者通過本地終端或本地虛擬控制檯等登入系統時, /etc/issue的檔案內容就會顯示,當使用者通過ssh或telnet等遠端登入系統時,/etc/issue.net檔案內容就會在登入後顯示。在 預設情況下/etc/issue.net檔案的內容是不會在ssh登入後顯示的,要顯示這個資訊可以修改/etc/ssh/sshd_config檔案, 在此檔案中新增如下內容即可:
- Banner /etc/issue.net
其實這些登入提示很明顯洩漏了系統資訊,為了安全起見,建議將此檔案中的內容刪除或修改。
/etc/redhat-release檔案也記錄了作業系統的名稱和版本號,為了安全起見,可以將此檔案中的內容刪除。
/etc/motd檔案是系統的公告資訊。每次使用者登入後,/etc/motd檔案的內容就會顯示在使用者的終端。通過這個檔案系統管理員可以釋出一 些軟體或硬體的升級、系統維護等通告資訊,但是此檔案的最大作用就、是可以釋出一些警告資訊,當黑客登入系統後,會發現這些警告資訊,進而產生一些震懾作 用。看過國外的一個報導,黑客入侵了一個伺服器,而這個伺服器卻給出了歡迎登入的資訊,因此法院不做任何裁決。
相關文章
- 安全運維之:Linux系統賬戶和登入安全(轉)運維Linux
- Linux運維安全經驗-賬戶和登入安全Linux運維
- Linux系統的安全設定有什麼?Linux運維Linux運維
- 運維自動化之賬單系統運維
- win10系統登入Microsoft賬戶的方法Win10ROS
- Linux系統安全最小原則是什麼意思?Linux運維Linux運維
- 資訊系統安全運維整改參考運維
- 立足信創國產化運維,打造安全可控IT運維管理系統運維
- win10系統登入管理員賬戶的方法Win10
- win10系統microsoft賬戶登入取消登入密碼操作步驟Win10ROS密碼
- 伺服器安全運維規範-安全運維伺服器運維
- 綠盟運維安全管理系統(OSMS)榮登2021年智慧運維星耀榜運維
- Win10系統安全模式下建立新賬戶的方法Win10模式
- Linux系統安全工具之:Sxid和SkeyLinux
- 網上賭博被黑平臺系統維護稽核賬戶登入異常怎麼辦?
- 【IT運維】如何有效保障伺服器賬號密碼安全?運維伺服器密碼
- win10系統無法使用Microsoft Account賬戶登入系統怎麼辦Win10ROS
- Linux系統安全工具之:Sxid和Skey(轉)Linux
- win10如何取消賬戶登入_win10怎麼刪除登入賬戶Win10
- win10怎麼登出賬戶登入_怎麼登出windows10賬戶登入Win10Windows
- 雲安全與運維運維
- 安全運維小技巧運維
- win10系統登入微軟賬戶出錯無法登入怎麼辦Win10微軟
- Win10系統怎麼隱藏登入介面小號賬戶Win10
- win10系統微軟賬戶登入介面空白該怎麼辦Win10微軟
- 運維安全之NFS安全運維NFS
- 如何保障手機錢包賬戶安全?iCard App整合系統完整性檢測功能,從登入環節防範風險APP
- Linux賬號安全——使用者登陸許可權Linux
- Linux賬戶密碼過期安全策略設定Linux密碼
- 復旦大學:郵件系統安全運維實用建議運維
- win10怎麼退出登入賬戶_win10電腦退出賬戶登入的方法Win10
- Win10系統賬戶選項沒有斷開連線和本地賬戶登陸如何解決Win10
- 讓Linux系統允許使用root賬號遠端登入Linux
- 熟悉Linux系統的安全和優化Linux優化
- 賬戶 登入 被組織管理 解除
- MySQL安全登入策略MySql
- 伺服器安全運維規範—安全運維的事前、事中、事後伺服器運維
- 使用組策略進行賬戶安全配置