【 原文由 chzhuang 所發表 】 一. LIDS的一些基本概念 1.當前Linux系統的缺陷 文件系統沒有保護機制 進程沒有保護機制 系統管理沒有保護機制 root會濫用職權 系統認證是不可信的 存取控制模型(DAC)是不足的 2.什麼是LIDS 一個內核的補丁和管理工具,用於加強linux的內核安全性 一個內核中參考監視器的執行 內核中的強制存取控制(MAC)模型的實現 一些正派黑客的現行項目 3.LIDS的特性 文件保護。任何人,包括root,不能修改LIDS保護的文件。文件可以是隱藏的。 進程保護。任何人,包括root,不能修改LIDS保護的進程。進程可以是隱藏的。 細粒度的存取控制。 用來使用的擴充對整個系統的控制能力來自內核的安全警告內核實現的端口掃描探測器 4.為什麼使用LIDS 使系統更安全 保證系統的完整性 為系統安全策略提供一個易用,全面的配置方法 二. LIDS的配置 在這一節裡,我們介紹一下如何配置LIDS。 2.1 LIDS的配置目錄--“/etc/lids/” 安裝完lidsadm以後,你會發現會出現一個/etc/lids/目錄。當內核啟動後,lids的配種信息會被讀入內核來初始化LIDS系統。 lids.conf:這個文件存有LIDS的ACLs的信息,用於定義各對象的存取類型。可以使用哪俊? lids.cap:包含系統的所有功能描述,你可以修改這個文件來配置系統功能。在文件中中的功能名前面加上“+”就可以允許這項功能,加上“- ”就會禁止這項功能? lids.net:該文件用於配置網絡傳輸警告信息。你可以定義SMTP服務器,端口,信息標標題等等。當你配置內核時,選擇了Send security alerts through network (NEW)就需要配置該文件? lids.pw:該文件用於保存使用命令“lidsadm -P”生成的密碼。當你配置內核時,選選擇了Allow switching LIDS protections (NEW)就需要配置該文件? 注意:你如果想要切換LIDS的保護層次,必須在重啟之前運行“lidsadm -P”。 2.2 保護文件和目錄 首先,你要確定系統中哪些文件需要保護。一般是系統的一些重要的二進制文件和系統統配置文件,例如/usr/,/sbin/,/etc/,/v ar/log/? 其次,你要定義文件保護級別。LIDS提供了4級保護類型: 1.DENY Access to any body:任何人(包括root)不能查看或者修改該文件。這種級別用於於比較重要的文件,比如/etc/shado 用法:lidsadm -A -o file_to_protected -j DENY 例子:# lidsadm -A -o /etc/shadow -j DENY 重啟並重載啟動文件以後,你會看到 # ls /etc/shadow ls: /etc/shadow: No sUCh file or Directory 我們還可以讓某些程序可以訪問這個文件,比如/bin/login程序需要訪問/etc/shadow照個文件,我們可?使用如下方法。 用法:lidsadm -A -s SUBJECT_PROGRAM -o OBJECT_PROGRAM -j READ/WRITEE/APPEND # lidsadm -A -s /bin/login -o /etc/shadow -j READ 2.Read Only Files:該類型文件意味著沒有人可以改變這個文件。比如下列文件:/etc/paasswd,/bin/passwd等等。 用法:lidsadm -A -o file_to_protect -j READ 例子: a. 只讀保護/sbin/目錄 # /sbin/lidsadm -A -o /sbin/ -j READ b. 只讀保護/etc/passwd # /sbin/lidsadm -A -o /etc/passwd -j READ 3.Append Only Files:這種保護類型一般用於一些系統日志文件,比如:/var/log/messagge,/var/log/secure。這種文件只能使用添加方式打開,不可以修改和減少文件內容。 用法:lidsadm -A -o filename_to_protect -j APPEND 例子: a. 保護系統日志文件 # /sbin/lidsadm -A -o /var/log/message -j APPEND # /sbin/lidsadm -A -o /var/log/secure -j APPEND b.保護apache httpd日志文件 # /sbin/lidsadm -A -o /etc/httpd/logs/ -j APPEND 4.Write:該類型用於定義可以被寫的文件。 5.文件保護中的強制存取控制 你可以定義主體(程序)以什麼存取方式(READ,APPEND,WRITE)來訪問客體(文件)。 比如,你可以定義/home/httpd/不讓任何人訪問,使/usr/sbin/httpd可以被該目錄下檔文件讀。 # lidsadm -A -o /home/httpd -j DENY # lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ 這樣,Web服務器能照常提供服務,但是/home/httpd/下的程序就不會被查看或修改。即使澆攻者通過httpd的安全漏洞取得root權限,他也不能查看該目錄下的文件。甚至雖然他可以用改寫棧的方法在h ttpd服務器裡寫入惡意代碼,他也只能讀/home/httpd下的文件,而不能修改。 一些示例: lidsadm -Z lidsadm -A -o /boot -j READ lidsadm -A -o /vmlinuz -j READ lidsadm -A -o /lib -j READ lidsadm -A -o /root -j READ lidsadm -A -o /etc -j READ lidsadm -A -o /sbin -j READ lidsadm -A -o /usr/sbin -j READ lidsadm -A -o /bin -j READ lidsadm -A -o /usr/bin -j READ lidsadm -A -o /usr/lib -j READ lidsadm -A -o /var/log -j APPEND 你安裝完/etc/lids/以後,在/etc/lids/目錄下會有一個示例lids.conf文件。你必須運行 發idsadm -U”來更新節點/設備值,再按你的要求來重新配置它。 2.3 保護進程 LIDS可以保護1號進程的子進程,你必須在/etc/lids/lids.cap中配置如下性能:-29:CCAP_INIT_KILL 隱藏進程 可以給進程加上隱藏屬性,當進程執行時,其他人用“ps”或在/proc下查看都不能看檔礁進程。例如: lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT 2.4 用性能來保護 性能就像我們賦給進程的某些特權。一個根進程擁有所有性能。但是這時存在一個性能能限定集。在普通的內核裡,當你從性能限定集裡刪掉一個性能的話,在重啟之前沒人能再擁有這項性能了? LIDS修改了這項功能使你能夠自由地更換這些性能。例如可以指定對/proc/sys/kernell/cap_bset的訪問引起陷入並產生一個安全警告。 你可以運行lidsadm來列出LIDS中所有的性能來詳細看它們的確切意思。 系統性能配置 系統性能值被存在文件/etc/lids/lids.cap中,你可以修改它。我們討論兩個性能。 CAP_SYS_RAWIO:擁有這項性能,我們能夠訪問ioperm/iopl,/dev/port,/dev/mem,//dev/kmem,並允許原始塊設備訪問。 當我們禁止這項性能,系統上的進程就不能訪問原始設備,例如lilo。但某些程序可能能需要這項性能,如XF86_SVGA,我們可以在編譯內核時,把它列入例外集? CAP_NET_ADMIN:該性能包含以下能力: 界面配置 IP防火牆,偽裝,審計管理 設置sockets的調試信息 路由表的修改 設置sockets上的任意進程(進程組)的屬主 為透明代理綁定地址 設置TOS 設置混雜模式 清除驅動程序統計 多點傳送 設備寄存器的讀寫 考慮安全原因,我們應該禁止這項性能,使得不能修改網絡配置。比如防火牆的配置規則就就不會被修改? 配置lids.cap 簡單的在性能前加個“+”表示啟用該性能,加個“-”表示禁止該性能。 例如: -0:CAP_CHOWN +1:CAP_DAC_OVERRIDE 為個別進程設置性能 當某項系統性能已經被禁止時,我們還可以為個別進程設置允許。例如,我們可以在/eetc/lids/lids.cap中禁止CAP_SYS_RAWIO。但是X 服務器仍然需要這項性能,我們可以使用命令: # lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT 這使得XF86_SVGA單獨擁有CAP_SYS_RAWIO這項性能。 有內核加封 重啟內核後,要使系統性能產生作用,就要給內核加封。必須在啟動文件裡(若在RedHHat系統就是/etc/rc.d/rc.local)加入以下內容: #/sbin/lidsadm -I 2.5 網絡安全 LIDS提供了一些網絡安全增強工具。 使用性能加強網絡安全 使用性能,我們可以加強網絡安全。例如反嗅探,禁止綁定到1024以下的端口上,禁止止修改防火牆或者路由器的規則? 基於內核的掃描探測器 LIDS提供了一個基於內核的掃描探測器,可以探測出誰在掃描你的系統。這個探測器可可以探測出各種掃描方式,如半連接掃描,FI N掃描,Xmax掃描等等,也可以探測出nmap,satan等掃描工具? 當原始socket被禁止以後,這時用戶進程的探測器就不能工作。而基於內核的探測器並並沒使用socket,它會比用戶進程的探測器更安全。如果要包含這項功能,必須在編譯內核時選擇這個選項? LIDS提供了一個基於內核的掃描探測器,可以探測出誰在掃描你的系統。這個探測器可 當原始socket被禁止以後,這時用戶進程的探測器就不能工作。而基於內核的探測器並 2.6 侵入響應系統 當LIDS檢測到定義的規則被侵犯,它可以使用如下方式進行響應。 記錄信息:它有人侵犯規則,lids_security_log會記錄下該信息,並且系統具有anti_loggging_flood功能。在編譯內核時選擇。 通過郵件服務器記錄信息:現在,LIDS可以把信息寄給你的郵箱的能力。你可以在/etc/lidds/lids.net中定義郵件服務器的IP,