Linux系統安全保護

技術小胖子發表於2017-11-04
無論你是Linux的普通桌面使用者還是管理多個伺服器的系統管理員,你都面臨著同樣的問題:日益增加的各種威脅。Linux是一個開放式系統,可以在網路上找到許多現成的程式和工具,這既方便了使用者,也方便了黑客,因為他們也能很容易地找到程式和工具來潛入Linux系統,或者盜取Linux系統上的重要資訊。
“知己知彼,百戰不殆”。作為一個好的系統管理者,要保障整個系統的安全執行.最好的方法是瞭解攻擊的工作原理和機制,瞭解攻擊中使用了哪些工具,如何操作入侵等等。並知道如何從部署linux來降低風險。




一、蛛絲馬跡:從日誌著手

日誌記錄了系統每天發生的事情,可以通過他來檢查錯誤發生的原因或者攻擊者留下的痕跡,還可以實時的監測系統狀態,監測和追蹤侵入者等等。所以對於Linux系統而言,日誌非常重要,最好單獨建立一個日誌伺服器來存放日誌。



TIPS:在Linux系統中,有三個主要的日誌子系統:

(1)連線時間日誌。由多個程式執行,把紀錄寫入到“/var/log/wtmp”和/“var/run/utmp”,Login等程式更新Wtmp和Utmp檔案,使系統管理員能夠跟蹤誰在何時登入到系統。


(2)由系統核心執行的程式統計。當一個程式終止時,往統計檔案中寫一個紀錄。程式統計的目的是為系統中的基本服務提供命令使用統計。


(3)錯誤日誌。由Syslogd(8)執行,各種系統守護程式、使用者程式和核心向檔案“/var/log/messages”報告值得注意的事件。另外有許多UNIX程式建立日誌。像HTTP和FTP這樣提供網路服務的伺服器也保持詳細的日誌。




從攻擊角度而言,伺服器上的安全檔案十分重要,若你關閉外部網路對你的伺服器的訪問,攻擊者總是試圖連線伺服器上的若干個埠,但是由於伺服器關閉了Inetd啟動的所有服務,所以LOG系統記錄下了這些訪問拒絕。常用的日誌檔案如下:

access-log 紀錄HTTP/web的傳輸

acct/pacct 紀錄使用者命令

aculog 紀錄MODEM的活動

btmp 紀錄失敗的紀錄

lastlog 最近幾次成功登入和最後一次不成功的登入

messages 從syslog中記錄資訊

sudolog 紀錄使用sudo發出的命令

sulog 紀錄使用su命令的使用

syslog 從syslog中記錄資訊

utmp 紀錄當前登入的每個使用者

wtmp 使用者每次登入進入和退出時間的永久紀錄

xferlog 紀錄FTP會話





二、亡羊補牢:加強防衛


一方面要積極尋找本作業系統的常見漏洞並及時升級廠商所公佈的補丁。比如,可以修改Inetd.conf檔案以關閉某些服務,重新啟動後再用NMAP掃描,在攻擊者發現其以前更早的發現自己的系統的漏洞,並加以彌補。

另一方面要加強密碼保護。攻擊密碼的手段主要有:字典攻擊(Dictionaryattack)、混合攻擊(Hybridattack)、蠻力攻擊(Bruteforceattack)。最好的防衛方法便是嚴格控制進入特權,即使用有效的密碼。主要包括密碼應當遵循字母、數字、大小寫(因為Linux對大小寫是有區分)混合使用的規則,如加入“#”或“%”或“$”這樣的特殊字元以新增複雜性。


1.保持最新的系統核心


由於Linux流通渠道很多,而且經常有更新的程式和系統補丁出現,因此,為了加強系統安全,一定要經常更新系統核心。


Kernel是Linux作業系統的核心,它常駐記憶體,用於載入作業系統的其他部分,並實現作業系統的基本功能。由於Kernel控制計算機和網路的各種功能,因此,它的安全性對整個系統安全至關重要。


早期的Kernel版本存在許多眾所周知的安全漏洞,而且也不太穩定,只有2.0.x以上的版本才比較穩定和安全,新版本的執行效率也有很大改觀。在設定Kernel的功能時,只選擇必要的功能,千萬不要所有功能照單全收,否則會使Kernel變得很大,既佔用系統資源,也給黑客留下可乘之機。


在Internet上常常有最新的安全修補程式,Linux系統管理員應該訊息靈通,經常光顧安全新聞組,查閱新的修補程式。


2.增強安全防護工具

SSH是安全套接層的簡稱,它是可以安全地用來取代rlogin、rsh和rcp等公用程式的一套程式組。SSH採用公開金鑰技術對網路上兩臺主機之間的通訊資訊加密,並且用其金鑰充當身份驗證的工具。


由於SSH將網路上的資訊加密,因此它可以用來安全地登入到遠端主機上,並且在兩臺主機之間安全地傳送資訊。實際上,SSH不僅可以保障Linux主機之間的安全通訊,Windows使用者也可以通過SSH安全地連線到Linux伺服器上。


很多Linux發行版都包含一些非常使用的小工具,lsof就是其中一個。Lsof能列出當前系統開啟的所有檔案。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。通過lsof工具能夠檢視哪些程式正在使用哪些埠,它的程式ID以及是誰在執行它。如果你從中發現了一些異常,那麼你肯定值得仔細檢查一番。


 

3.限制超級使用者的權力

我們在前面提到,root是Linux保護的重點,由於它權力無限,因此最好不要輕易將超級使用者授權出去。但是,有些程式的安裝和維護工作必須要求有超級使用者的許可權,在這種情況下,可以利用其他工具讓這類使用者有部分超級使用者的許可權。Sudo就是這樣的工具。


Sudo程式允許一般使用者經過組態設定後,以使用者自己的密碼再登入一次,取得超級使用者的許可權,但只能執行有限的幾個指令。



4.設定使用者賬號的安全等級

除密碼之外,使用者賬號也有安全等級,這是因為在Linux上每個賬號可以被賦予不同的許可權,因此在建立一個新使用者ID時,系統管理員應該根據需要賦予該賬號不同的許可權,並且歸併到不同的使用者組中。


在Linux系統上的tcpd中,可以設定允許上機和不允許上機人員的名單。其中,允許上機人員名單在/etc/hosts.allow中設定,不允許上機人員名單在/etc/hosts.deny中設定。設定完成之後,需要重新啟動inetd程式才會生效。此外,Linux將自動把允許進入或不允許進入的結果記錄到/rar/log/secure檔案中,系統管理員可以據此查出可疑的進入記錄。


每個賬號ID應該有專人負責。在企業中,如果負責某個ID的職員離職,管理員應立即從系統中刪除該賬號。很多入侵事件都是借用了那些很久不用的賬號。


在使用者賬號之中,黑客最喜歡具有root許可權的賬號,這種超級使用者有權修改或刪除各種系統設定,可以在系統中暢行無阻。因此,在給任何賬號賦予root許可權之前,都必須仔細考慮。


Linux系統中的/etc/securetty檔案包含了一組能夠以root賬號登入的終端機名稱。例如,在RedHatLinux系統中,該檔案的初始值僅允許本地虛擬控制檯(rtys)以root許可權登入,而不允許遠端使用者以root許可權登入。最好不要修改該檔案,如果一定要從遠端登入為root許可權,最好是先以普通賬號登入,然後利用su命令升級為超級使用者。


使用口令老化。口令老化一種增強的系統口令生命期認證機制,雖然它會一定程式的削弱使用者使用的便利性,但是它能夠確保使用者的口令定期更換,這是一種非常好的安全措施。因此,如果一個帳戶受到了黑客的攻擊並且沒有被發現,但是在下一個密碼更改週期,他就不能再訪問該帳號了。

 

 

 


5.物理防護

雖然大多數的攻擊是依靠網路實施的,而黑客取得物理訪問你的計算機的機會也非常渺茫,但這並不意味你無需設防。
給載入程式加上密碼保護,確保在你離開電腦時它總是處於鎖定狀態。並且你應該完全肯定沒有人可以從外部裝置啟動你的伺服器。



6.部署防火牆
  這聽起來像一條最“明顯”的建議(就像使用健壯密碼一樣),但令人驚奇地是,很少有人真正去設定防火牆。即使你使用的路由器可能內建了防火牆,但是在Linux系統中部署一個軟體防火牆是一件非常輕鬆的事情,你能夠從中受益匪淺。

圖形防火牆,例如最近比較流行的Firestarter,非常適合定義口轉發和監測活動規則。




三、反擊:從系統開始

攻擊者具有對Linux伺服器的全部控制權,可以在任何時刻都能夠完全關閉甚至毀滅此網路。可以採取的反擊措施有:備份重要的關鍵資料;改變系統中所有口令,通知使用者更新口令;隔離該網段,使攻擊行為僅出現在一個小範圍內;允許行為繼續進行。如有可能,不要急於把攻擊者趕出系統,爭取收集證據;進行各種嘗試,識別出攻擊源


     本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1283317,如需轉載請自行聯絡原作者

 


相關文章