運維工程師必備Linux常見安全策略與實踐
作業系統的安全問題是資訊保安領域最重要和最基本的問題之一。隨著近幾年國內網際網路技術和行業的迅猛發展,採用Linux網路作業系統作為伺服器的使用者也越來越多。Linux面臨著前所未有的發展機遇,同時Linux也面臨著越來越多的安全隱患。作為一個開放式系統,網際網路上有大量的Linux版本的開源軟體產品和工具。這既方便於滿足使用者使用需求,也給黑客提供了更多的途徑來攻擊伺服器,甚至盜取伺服器上的機密資訊。因此,詳細分析Linux系統的安全機制,找出它可能存在的安全隱患,給出相應的安全策略和保護措施是十分必要的。
Linux作業系統提供了基本的安全機制。本文以Red Hat Enterprise Linux Server release 6.7為例介紹這些安全機制的基本原理及實施方法,主要包括以下內容:
1、 系統帳號和密碼管理
2、Linux網路安全
3、 檔案系統的安全
4、 系統日誌的儲存
5、 核心更新及安全補丁安裝
1系統帳號和密碼管理
賬戶和密碼可以說是作業系統安全的第一道防線。其中賬戶用來確認系統訪問者的身份,密碼可以驗證系統訪問者是否有權使用此賬戶。密碼洩露就像是房門鑰匙被人竊取一樣危險。系統一旦被入侵,不只對使用者賬戶本身有影響,系統內的所有資料和文件都有被竊取和損壞的風險,從而造成巨大的損失。所以,管理員應該採取必要的技術手段強制使用者使用強密碼並定期更改,定期驗證系統中賬號合法性,及時刪除不必要的賬戶、防止超級使用者被篡改等,保證系統使用者賬號和密碼的安全。
1.1. 及時刪除或禁用無用賬戶
Linux系統中所有的賬戶都存放在/etc/passwd檔案中。系統管理員可以定期監控/etc/passwd檔案,驗證系統中活動賬戶的合法性,及時刪除或禁用系統中不必要或不再使用的賬戶。此類賬戶主要分為以下兩種情況。
1) 某些服務安裝時預設建立的執行賬戶,比如ftp、news、postfix、apache、squid等。
2) 無人使用或者無業務需求的賬戶。
此類賬戶最好做刪除處理。如下示例所示:
如果因為特殊原因需保留賬戶,可以鎖定賬戶或者修改賬戶登入shell為/sbin/nologin。如下示例所示:
1.2. 設定密碼複雜度策略
現在的計算機的計算能力越來越強,弱密碼很容易被破解。Linux有自定義密碼複雜度策略的機制,可以從以下幾個方面加強管理。
1) 最短密碼長度為8。
2) 包含一個字元或非字元(數字、標點或特殊字元)。
3) 密碼中不允許包含賬戶。
4) 每隔90天修改一次密碼。
5) 密碼最短生命週期設定為1,防止惡意更改密碼。
6) 8次修改密碼不可以重複並且加密儲存。
7) 連續5次輸入錯誤密碼,鎖定賬戶。
8) 初次登入強制修改密碼。
具體實現方式,如以下示例所示:
1.3. 保護shadow密碼檔案
Linux中賬戶密碼叫做影子檔案,存放在/etc/shadow裡面。如果在/etc/pam.d/system-auth中設定了加密儲存,那在/etc/shadow中看到的將是加密後的密碼資訊。雖然經過了加密處理,但這些加密資訊仍然可以藉助一些密碼破解程式進行強制破解。John the Ripper就是這樣的一個密碼破解程式,該程式的原始碼可以從http://www.openwall.com/john/網站上下載。經過實驗,通過John程式可以輕易的破解shadow中的加密密碼。所以系統管理員應保護好shadow檔案,正常情況下應只有root使用者擁有該檔案的訪問許可權。此外,管理員不該在有其他人員在場的情況下隨便開啟shadow檔案,以免其中的內容被人竊取。
1.4. 防止root賬戶被篡改
在Linux系統中root賬戶是超級管理員賬戶。它可以執行所有的系統的命令,也具有系統中最高的許可權。而且Linux系統中只有一個root超級賬戶。但是在Linux系統中,使用者是由UID來區分,而不是賬戶名。如果把一個普通賬戶的UID修改為0,即root賬戶的UID,則這個普通賬戶也將獲得root相同的超級管理員許可權。如果這種賬戶,沒有經過正常的審批流程,或者不是系統管理員設定,這種賬戶很有可能是非法入侵者更改的。所謂管理員,應及時發現這種非法賬戶,並作相應的處理。
2Linux網路安全
相比於其它的作業系統,Linux作業系統更加安全和穩定,所以經常被用作網路應用伺服器。但是由於程式程式碼的缺陷的難以避免,這些安裝在Linux系統上的網路應用程式往往會存在著各種漏洞,而入侵者則是利用這些漏洞進行網路攻擊,進入系統竊取資料、破壞系統或者使系統無法提供正常服務等等。針對入侵者進行網路攻擊的常用手段,及早發現系統中的網路安全漏洞並執行相應的防範措施非常重要。
2.1. ping入侵
ping是入侵者確認伺服器是否開機的最快、最常用的方法。ping命令會發出一個ICMP echo請求,伺服器接收到請求後會返回一個ICMP應答。Linux伺服器管理員可限制伺服器禁止其它使用者Ping。同時又保證Linux伺服器又可以Ping其它伺服器。
2.2. 埠安全
TCP/IP的各種Linux應用服務基本上都是採用伺服器/客戶端的工作模式,這些服務在伺服器端會監聽一些固定的服務埠,接受來自客戶端的請求。而入侵者往往會利用各種埠掃描工具對目標主機的埠進行探測和掃描。獲得目標主機上的服務和埠列表以後,入侵者就可以針對不同服務的漏洞進行相應的攻擊。為了阻止入侵者對主機埠的掃描。管理員可以採取以下措施:
1) 關閉不必要的應用服務;
2) 修改應用服務的預設埠。例如更改FTP服務的埠為31,那麼即使入侵者獲得該埠號,也無法確定該埠號對應的是什麼服務;
3) 開啟防火牆,限制使用者訪問相應的服務埠。這樣,即使應用服務的埠洩漏,非法訪問也會被擋在防火牆之外。
2.3. 拒絕攻擊
拒絕攻擊是一種消耗伺服器可用資源的攻擊方式,這些資源包括程式數、磁碟佔用、CPU時間或者網路頻寬等,被攻擊的伺服器將會出現資源被不斷消耗的情況,最終喪失應用服務的能力。在Linux系統中提供了一種限制使用者資源使用的技術手段,管理員可以通過設定/etc/security/limits.conf的配置引數,限制使用者對記憶體空間、CPU時間以及程式數等資源的使用。防止負荷過載造成伺服器當機。使用者可以執行命令ulimit -a檢視自己的的資源限制情況。
2.4. 加強Xinetd的安全
Xinetd是Linux系統一個傳統的網路服務守護程式,它可以同時監聽多個制定的埠,在接收到使用者請求時,根據使用者請求埠的不同,啟動相應的網路服務程式來處理這些使用者請求。因此,Xinetd也常被稱為“超級伺服器”。像Telnet、rlogin、rcp、rsh等不安全網路服務就是通過Xinetd進行啟動的。為了減少系統潛在漏洞,應該關閉Xinetd中無需使用的網路服務。
可在xinetd的配置檔案進行服務的禁用。
如果所有的Xinetd服務都已經禁用,那麼就沒有必要再執行Xinetd。要禁止Xinetd啟動執行,可執行:chkconfig –level 345 xinetd off。
3檔案系統的安全
Linux檔案系統中的檔案是資料的集合,檔案系統不僅包含著檔案中的資料而且還有檔案系統的結構,所有Linux 使用者和程式看到的檔案、目錄、軟連線及檔案保護資訊等都儲存在其中。Linux檔案系統的許可權必須進行嚴格的控制,一個配置檔案上的配置錯誤,比如不正確的檔案許可權,就可能會導致整個系統受到危害。
3.1. 全域性可讀/寫檔案
所謂全域性可讀寫檔案,是指所有使用者都有許可權檢視和修改的檔案。如果這些檔案中儲存有重要的機密資訊,如使用者口令,那麼將可能會為系統帶來嚴重的後果。因為入侵者在獲得本地使用者許可權之後,往往會去搜尋系統中包含有某些關鍵資訊的全球可讀檔案以擴大他們的訪問許可權。使用者用find命令可以搜尋全球可讀寫檔案#FormatImgID_20#。
管理員應定期使用find命令檢查系統中的全域性可讀/寫檔案。對於一些儲存有重要資訊的檔案是不應該設定全球可讀/寫的。
3.2. 無宿主的檔案管理
正常情況下,系統中的每一個檔案都會有自己的檔案所有者和屬組。如果系統中出現沒有所有者或屬組的檔案,那麼很可能是解除安裝程式後遺留或是由入侵者留下的。這些檔案對於系統來說,是一個潛在的風險,所以應該及時把這些檔案找出來,刪除或者更改訪問許可權。
Linux的裝置以檔案的形式存放在/dev/目錄下,所以這些檔案的許可權控制同樣非常重要。例如,IDE硬碟在Linux中對應的裝置檔案為/dev/hdx,如果這些檔案的許可權被設定為全球可讀,那麼所有使用者都可以通過一些命令讀取硬碟中所有的內容。使用者可以通過mount命令,查詢出所有與目前掛載的檔案系統相關的裝置檔案。此外,對於像/dev/console、/dev/dsp以及/dev/tty*等的裝置檔案也同樣需要重點關注,並定期檢查其許可權設定。
3.4. 硬碟分割槽
惡意佔用磁碟空間是造成拒絕攻擊的一種形式。由於Linux應用系統在執行過程中都會產生新的資料或檔案。如果磁碟空間不足,會造成這些新的資料或檔案無法儲存。最後導致服務掛起,達到拒絕服務的目的。磁碟分割槽的合理規劃,可以有效的防止這種惡意攻擊。
1) 利用Linux的磁碟配額管理,限制每個使用者的磁碟空間大小。
2) 重要的檔案系統掛載到單獨的磁碟分割槽上。例如:/; /boot/; /var/; /hone/; /tmp/。
3) 劃分單獨的系統分割槽儲存應用資料。
3.5. 設定grub密碼
如果能接觸到伺服器主機,就算不知道root密碼,攻擊者可以重啟機器通過單使用者模式重置root密碼。那麼伺服器中的資料就會完全暴露給攻擊者。為了防止這種情況,可以考慮在grub上設定密碼。Linux每次重啟引導或更改grub配置時都要求輸入正確的密碼。
首先要生成MD5加密的密碼資訊。
3.6. 限制su切換
通過su命令,普通使用者可以切換到其他使用者的環境包括超級管理員root賬戶的環境。可以通過限制su命令執行許可權的方式降低普通使用者獲得管理員許可權的風險。需要su許可權的使用者,可以單獨放到一個group裡,例如wheel。
4系統日誌的儲存
日誌對於安全來說非常重要。日誌裡面記錄了系統每天發生的各種各樣的事情。可以通過日誌來檢查系統發生錯誤的原因,或者系統遭受攻擊時留下的痕跡。日誌的功能主要有:審計和監測。日誌也可以實時的監測系統狀態,監測和追蹤入侵者。
4.1. 賬戶登入記錄
使用who命令可以檢視當前已經登入作業系統的使用者資訊,這些資訊包括使用者名稱、登陸時間、客戶端的IP地址等。管理員可以隨時檢視登入系統的使用者是否合法、客戶端的IP地址是否合法。
Linux系統的使用者登入歷史資訊被分別儲存在/var/log/wtmp和/var/log/btmp檔案中,其中/var/log/wtmp儲存了使用者成功登入的歷史資訊,而/var/log/btmp則儲存了使用者登入失敗的歷史資訊。這兩個檔案不是ASCII檔案,所以必須分別要通過last和lastb命令來檢視。
4.2. secure日誌中的安全資訊
該日誌檔案記錄與安全相關的資訊。使用者驗證、su切換以及與使用者管理相關的日誌資訊都會寫到/var/log/secure檔案中。開啟/etc/syslog.conf配置檔案可以看到此日誌檔案的設定,如“authpriv.* /var/log/secure”。如果系統有非法使用者登入,可以通過檢視此日誌檔案跟蹤非法使用者的資訊。
4.3. message日誌中的安全資訊
messages 日誌是核心系統日誌檔案。它包含了系統啟動時的引導訊息,以及系統執行時的其他狀態訊息。IO 錯誤、網路錯誤和其他系統錯誤都會記錄到這個檔案中。其他資訊,比如某個人的身份切換為 root,也在這裡列出。如果服務正在執行,比如 DHCP 伺服器,您可以在 messages 檔案中觀察它的活動。通常,/var/log/messages 是您在做故障診斷時首先要檢視的檔案。
4.4. cron日誌中的安全資訊
該日誌檔案記錄crontab守護程式crond所派生的子程式的動作,前面加上使用者、登入時間和PID,以及派生出的程式的動作。CMD的一個動作是cron派生出一個排程程式的常見情況。REPLACE(替換)動作記錄使用者對它的cron檔案的更新,該檔案列出了要週期性執行的任務排程。RELOAD動作在REPLACE動作後不久發生,這意味著cron注意到一個使用者的cron檔案被更新而cron需要把它重新裝入記憶體。該檔案可能會查到一些反常的情況。
4.5. history日誌中的安全資訊
預設情況下,在每個使用者的主目錄下都會生成一個.bash_history的日誌檔案,在該檔案中儲存了使用者輸入的所有命令,管理員可以通過該檔案檢視某個使用者登陸系統後進行了什麼操作。
4.6. 日誌檔案的儲存
日誌檔案是追蹤黑客行為和取證的重要線索,一個有經驗的黑客在入侵完系統後一般都會清除日誌檔案的內容,抹去自己的入侵痕跡。所以為了提供日誌的安全性,可以定期對系統中重要的日誌檔案進行備份,並通過FTP或其他網路手段把備份檔案上傳到其他的備份伺服器上儲存,以作為日後跟蹤和分析黑客行為的依據。
5核心更新及安全補丁安裝
系統補丁,就是通過安裝相應的補丁軟體,補充系統中的漏洞,把“漏水”的地方補上,杜絕同型別病毒的入侵。作為系統管理員,及時發現並安裝新的補丁對保證系統安全非常重要。對於redhat,使用者可以在RHN上進行註冊,註冊後可以獲得Red Hat最新的軟體包和補丁。如果有公司內部的補丁源伺服器,可以在目錄/etc/yum.repos.d/新增相應的補丁源配置檔案。使用者可以執行yum update 命令升級安裝補丁包。
6結語
要保證Linux系統的安全,系統管理員必須綜合利用它提供的各種安全工具和技術,制定合理有效的安全策略。有效的安全策略應在安全成本、安全效益和本單位實際的安全需求之間實現平衡,在實際應用中制定嚴格的安全管理措施,按照安全管理措施和安全策略進行系統和安全的管理,才能保證系統的高可用性。
Linux系統安全工作是防守和進攻的博弈,是保證資訊保安,工作順利開展的奠基石。及時,準確的審視自己資訊化工作的弱點,審視自己資訊平臺的漏洞和問題,才能在 這場資訊保安戰爭中,處於先機,立於不敗之地。只有做到自身的安全,才能立足本職,保證公司業務穩健的執行,這是資訊時代開展工作的第一步。
雲端計算免費課程火熱開講中,5天運維經典課程免費學,會雲端計算的運維人才到底需要掌握哪些技術,未來前景發展怎麼樣?跟隨行業大咖一起剖根究底,點選文末“閱讀原文”或長按下方二維碼即可報名免費課程!抓住免費學習的機會,逆襲2019~~
PS:記得查收小編送你的免費大禮包呦~
福利 | 一萬多套PPT模板等你免費來拿!無條件領取!
免費送 | 1000多套簡歷模板免費拿,附贈簡歷製作教程!
免費領 | 《Shell指令碼 100例》電子書免費拿,運維必備乾貨~
▼▼點選【閱讀原文】,5天運維免費課程,開講在即!
相關文章
- Linux運維工程師必備工具合集Linux運維工程師
- Linux運維工程師 50個常見面試題Linux運維工程師面試題
- Linux運維工程師必備的82個工具全集(上),速收!Linux運維工程師
- Linux運維工程師必備的82個工具全集(下),速收!Linux運維工程師
- Linux 運維工程師入門和學習必經之路!Linux運維工程師
- 從苦逼到牛逼!2019年最全最新Linux運維工程師必備技能圖譜……Linux運維工程師
- Linux運維工程師筆試題Linux運維工程師筆試
- 運維必備Linux學習day3(面試常問的linux指令)運維Linux面試
- 什麼是Linux運維?Linux運維工程師需要做什麼?Linux運維工程師
- 【乾貨】Linux運維人員必備的實用工具!Linux運維
- 高薪全棧工程師必備 Linux 基礎高薪全棧工程師Linux
- Linux運維工程師有錢途嗎?Linux運維工程師
- Linux運維工程師的操作規範Linux運維工程師
- 做好一名linux運維工程師Linux運維工程師
- Linux運維工程師可是很吃香的Linux運維工程師
- Linux 運維必備 150 個命令彙總Linux運維
- 架構師必備:多維度查詢的最佳實踐架構
- 為什麼Linux運維工程師必須學習Shell程式設計?Linux運維工程師程式設計
- Linux運維必備技術有哪些?運維要學開發Linux運維
- 運維工程師可以做哪些方面的工作?Linux運維運維工程師Linux
- 總結10個Linux安全運維必備的實用工具!Linux運維
- Linux發行版本常見的有哪些?Linux運維Linux運維
- Linux運維工程師面試題之一Linux運維工程師面試題
- Linux運維工程師常用的工具有哪些?Linux運維工程師
- Linux運維工程師有必要提升自己嗎?Linux運維工程師
- 34 個 常用 Linux Shell 指令碼,運維必備!Linux指令碼運維
- Linux 運維必備的 40 個命令總結Linux運維
- 怎樣才算合格的運維工程師?linux運維技術運維工程師Linux
- linux雲端計算運維發展如何?學習linux運維工程師技能Linux運維工程師
- Linux 運維工程師面試真題-5-常考題目彙總Linux運維工程師面試
- Linux運維常見筆試題(選擇題)Linux運維筆試
- 成為 Linux 運維高手必備的七種“武器”!Linux運維
- Linux運維工程師簡歷專案經驗Linux運維工程師
- Linux 運維工程師的六類好習慣Linux運維工程師
- web前端工程師必備技能Web前端工程師
- 前端工程師必備資源前端工程師
- 運維工程師打怪升級必經之路 V1.0.1運維工程師
- 高薪崗位雲端計算面試題,雲端計算運維工程師必備高薪面試題運維工程師