◆劉仁維 李 杜 翟 琛
Linux系統安全與加固
◆劉仁維 李 杜 翟 琛
(蘭州職業技術學院 甘肅 730070)
本文從系統架構的視角出發對Linux的安全體系進行分析,以高效、夠用和安全的標準探討了Linux安全配置的原則,從不同層面提出了對Linux系統進行安全加固的具體方法。
信息安全技術;系統安全;Linux;安全配置
Linux操作系統開源、免費、自由使用開發,穩定可靠。中央國家機關政府采購中心正版軟件采購網推薦的桌面操作系統中80%以上是Linux內核的,Windows只有win7一家入選[1],據中國國家互聯網信息辦公室發布的《2017年我國互聯網網絡安全態勢綜述》統計,國家信息安全漏洞共享平臺(CNVD)2017年所收錄的安全漏洞共15955個,較2016年增長了47.4%,操作系統漏洞占所有收錄漏洞的12.9%,Linux全年收錄漏洞228個,占所有收錄漏洞的1.4%,環比增長4.6%[2]。可見Linux安全可靠,在國內使用日趨廣泛。本文探討如何在高效、夠用和安全的原則下選擇和配置Linux安全工具,加固Linux系統安全。
Linux是類UNIX系統,其安全模型及實現本質與UNIX相同。Linux是完全多用戶操作系統,核心區域與用戶區域嚴格區分,在架構中采用了“最少特權”概念,具有以角色為基礎的接近權控制,用戶只能使用系統中他們需要的那部分資源。Windows用戶程序和操作系統的核心集成在一起,某些第三方應用軟件需要管理員權限才能正確運行,通過應用軟件發起的攻擊很可能直接取得管理員權限;Linux嚴格區分root和其它用戶,應用軟件無需特權權限即可正常運行,通過應用軟件攻擊系統直接獲得管理員權限的可能性很小。微軟每個月的第二個星期二發布Windows操作系統和其他應用軟件的補丁程序;由于開源,Linux系統無休止地接受各方面的研究和改進,使安全漏洞更容易暴露,發現的漏洞能及時得到透徹的研究和修補,并把補丁程序發布給用戶,基本上達到實時解決。比起Windows“以隱匿求安全”,Linux“以透明求安全”更為安全。
Linux的核心安全機制是身份認證、授權與訪問控制、安全審計三部分。一個新的安全機制,最先以第三方軟件或補丁的形式進入Linux系統,經過廣泛深入地測試,如果確認很優秀,就會被收集到某個發行版甚至內核之中,這種遴選機制使Linux安全之樹常青。Linux不缺安全工具,難題是在眾多的安全工具中做選擇和正確配置。
Linux安全體系的結構性變革是在2.6及以后版本的內核集成Linux安全框架(Linux security module,LSM),為授權與訪問控制提供統一管理的方法。LSM本身不提供任何安全策略,只為各種安全策略提供通用框架,用戶根據自己的需求選擇安全策略以安全模塊的形式加載到內核上實現。LSM的安全域設計使第一個安全模塊以主模塊身份加載到LSM,起管理和綜合作用,其余安全模塊作為從屬通過主安全模塊加載到LSM。LSM不具有任何的決策綜合能力,當有多個安全機制共同協調工作時,多個安全模塊的決策結果由主模塊綜合后實施。
Linux系統安全大幅度提升的另一個因素是SELinux安全機制。SELinux是內核級的模塊,基于域和類型增強(DTE)實現基于角色的訪問控制,通過LSM框架合并到內核中。SELinux使用Linux本身文件系統來管理可執行程序,只有當標準Linux訪問檢查成功后SELinux才會生效。正確配置SELinux可使Linux的安全級別從自主訪問控制(DAC)提高到強制訪問控制(MAC)的B1級[3]。
應用需求的多樣性,決定配置的復雜性,Linux安全配置應遵循以下原則:
(1)使用最新的穩定版內核。
(2)關閉所有不需要的服務和程序。
(3)及時修補系統和服務漏洞。
(4)使用安全的服務器。可以使用現代虛擬技術,做到一機一服務。
(5)盡量少用root登錄。.
以下從12個方面討論Linux系統安全配置。
(1)防止物理接觸攻擊,設置BIOS密碼和屏幕保護口令,禁止U盤和光盤啟動。
(2)確認啟用棧上數據不可執行:sysctl -w kernel.exec-shield=1;地址空間隨機化:sysctl -w kernel.randomize_va_space=2等內存保護,防緩沖區溢出攻擊。
(3)系統和應用安裝配置完成后,從黑客視角做一次強力的滲透測試并修補。對黑客的目標目錄和文件建立數字指紋,生成文件完整性數據庫,定期進行文件完整性檢查。常用工具有md5sum、tripwire、AIDE、MD5DEEP等,后者能對整個文件系統遞歸驗證。
(4)禁用或刪除無用賬號、空口令賬號和非root但UID為零的賬號,用密碼策略強制密碼達到要求強度,配置PAM限定登錄次數預防無休止的登錄攻擊,嘗試登錄連續失敗次數超過預定次數時賬戶將被鎖定。配置root只能從控制臺登錄,如果確實需要從網絡登錄,用ssh+認證密鑰文件登錄。
(5)定期檢查有SUID、SGID特性的程序和SBIT特性的目錄,消除本地提權攻擊入口。精心設置i,s等特殊權限。使用Wheel組,限制su范圍。謹慎配置/etc/sudoers文件,限制sudo用戶。
(6)環境變量越少越安全,環境變量中不要使用通配符,PATH路徑要精心設計。
(7)各項服務盡量使用chroot機制安裝,使用證書驗證身份。
(8)Linux訪問控制粒度太粗,只有所有者、組和其他人三個層,安裝訪問控制列表程序包(Access Control List,ACL),在/etc/fstab文件中配置磁盤分區支持ACL,為重點目標設置ACL權限細化。
(9)用命令setsebool精確設置SELinux,如果一定要關閉SELinux,在/etc/selinux/config中設置SELINUX=permissive,使SELinux在通過不符合策略的行為時,能繼續發出警告,并保持變動的文件標簽標志正確。
(10)配置Netfilter防火墻只允許需要的IP地址和端口通過。使用防火墻結合端口碰撞技術隱藏重要服務器[4]。安裝使用Linux入侵檢測系統(LIDS)或Linux惡意軟件檢測工具(Linux Malware Detect,LMD)可以檢測和阻止已經穿透了防火墻的大部分攻擊。
(11)Linux盡管穩定可靠,但高危漏洞時有發現,美國國家漏洞庫(NVD)于2018年1月16日發布的CVE-2018-5703,是內核中IPV6堆棧組件漏洞,危險指數高達10分,攻擊復雜度低,無需身份認證,無需內網或本地訪問權,能導致完全的信息泄露、系統完整性完全破壞和特權提升。安裝nessus并及時更新,可以查補最新漏洞,應對此類威脅。
(12)Linux使用日志系統和auditd程序組進行審計,設置日志文件對所有用戶不能讀寫,不能刪除,只能追加。注意防止日志因拒絕服務攻擊填滿,不能記錄隨之而來的真正攻擊。使用aureport生成簡要報告,使用ausearch查看審計報告,盡早發現系統異常。
配置的便利性和安全性不可同時滿足。Linux訪問控制粒度太粗,root用戶權限太大,在配置方便的同時也留下了眾多隱患,為消除這些隱患又開發了眾多的安全機制,重復安裝功能重疊的組件不但降低效率,而且會引入漏洞。如何將安全組件本身精簡到夠用并正確配置是本文的目標。
[1]http://www.zycg.gov.cn/rjcg/software_product_more_basics/2741.
[2]http://www.cac.gov.cn/2018-05/30/c_1122910613.htm.
[3]管華,崔家源.基于SELinux的強制訪問控制機制分析與研究[J].數字技術與應用,2016.
[4]Chris.Binnie著,田洪譯.服務器安全攻防[M].清華大學出版社,2017.