用LIDS增強Linux系統安全(轉)
用LIDS增強Linux系統安全(轉)[@more@] LIDS( Linux入侵偵察系統)是Linux核心補丁和系統管理員工具(lidsadm),它加強了Linus核心。 它在核心中實現了一種安全模式 -- 參考模式以及核心中的Mandatory Access Contro l(命令進入控制)模式。本文將闡述LIDS的功能和如何使用它來建立一個安全的Linux系統。
1. 為什麼選擇LIDS
隨著互連網上Linux越來越受歡迎 ,越來越多現有GNU/LINUX系統上的應用軟體中的安全漏洞被發現。很多程式利用了程式設計師的粗心,例如快取溢位、格式化程式碼攻擊。當系統安全受到程式的危及,駭客獲得ROOT許可權以後,整個系統將被入侵者控制。
由於程式碼的開放性,我們可以獲得很多所希望Linux應用程式的原始碼,並且根據我們的需要來修改。所以bug能很容易地被找到,並很快修補。但是當漏洞被揭示後,而系統管理員疏於給漏洞打補丁,從而造成很容易地就被入侵,更糟的是駭客能獲得ROOT SHELL。利用現有的GNU/Linux系統,他為所欲為。這正是LIDS想要解決的問題。
首先看看現有的GNU/Linux系統存在哪些問題。
檔案系統未受到保護
系統中的很多重要的檔案,例如 /bin/login,一旦駭客入侵後,他可以上傳修改過的l
ogin檔案來代替/bin/login ,然後他就可以不需要任何登陸名和密碼就登陸系統。這常被稱
為Trojan house。
程式未受到保護
系統上執行的程式是為某些系統功能所服務的,例如HTTPD是一個web伺服器來滿足遠端客戶端對於web的需求。作為web伺服器系統,保護其程式不被非法終止是很重要的。但是當入侵者獲得了ROOT許可權後,我們卻無能為力。
系統管理未受保護
很多系統管理,例如,模組的裝載/解除安裝,路由的設定,防火牆的規則,能很容易就被修改,如果使用者的ID是0。所以當入侵者獲得ROOT許可權後,就變得很不安全。
超級使用者(root)作為ROOT可能濫用許可權
他可以為所欲為。作為ROOT他甚至可以對現有的許可權進行修改。
綜上所述,我們發現在現有的Linux系統中的進入控制模式是不足以建立一個安全的Linux系統。我們必須在系統中新增新的模式來解決這些問題。這就是LIDS所要做的。
2. LIDS的特色
Linux入侵偵察系統是Linux核心補丁和系統管理員工具,它加強了核心的安全性。它在核心中實現了參考監聽模式以及Mandatory Access Control(命令進入控制)模式。當它起作用後,選擇檔案進入,每一個系統/網路的管理操作,任何使用許可權, raw device, mem和 I/O 進入將可以禁止甚至對於ROOT也一樣。它使用和擴充套件了系統的功能,在整個系統上繫結控制設定,在核心中新增網路和檔案系統的安全特性,從而加強了安全性。你可以線上調整安全保護,隱藏敏感程式,透過網路接受安全警告等等。
簡而言之,LIDS提供了保護、偵察、響應的功能,從而是LINUX系統核心中的安全模式得以實現。
2.1 保護
LIDS提供以下的保護 :
保護硬碟上任何型別的重要檔案和目錄,任何人包括ROOT都無法改變。能保護重要程式不被終止能防止非法程式的RAW IO 操作。保護硬碟,包括MBR保護,等等。能保護系統中的敏感檔案,防止未被授權者(包括ROOT)和未被授權的程式進入。
2.2 偵察
當有人掃描你的主機, LIDS能偵察到並報告系統管理員。 LIDS也可以檢測到系統上任何違法規則的程式。
2.3 響應
當有人違反規則, LIDS會將非法的運作細節記錄到受LIDS保護的系統log檔案中。 LIDS還可以將log資訊傳到你的信箱中。LIDS也可以馬上關閉與使用者的對話。
3. 建立安全的Linux系統
看完了LIDS特性,讓我們來看看怎麼樣一步步地用LIDS建立安全的系統。
3.1 下載LIDS補丁和相關正式的Linux核心
可以從LIDS Home,LIDS Ftp Home或最近的LIDS Mirror獲得LIDS補丁和系統管理工具。
補丁名稱是lids-x.xx-y.y.y.tar.gz, x.xx代表lids的版本, y.y.y代表Linux核心版本
.例如, lids-0.9.9-2.2.17.tar.gz代表lids 版本是0.9.9 以及相關的核心版本是2.2.17.
。
必須下載相關的核心版本。例如,你下載了lids-0.9.9-2.2.17.tar.gz,那你就應該下
載Linux核心2.2.17的原始碼。可以從Kernel FTP Site或其他鏡象獲得核心原碼。
然後,將核心原碼和LIDS tar解壓.例如,從 得到lids-0.9.9-2.2.17.ta
r.gz,從ftp.us.kernel.org得到linux-2.2.17.tar.bz2後:
-----------------------------------------------------------
1. uncompress the Linux kernel source code tree.
# cd linux_install_path/
# bzip2 -cd linux-2.2.17.tar.bz2 | tar -xvf -
2. uncompress the lids source code and install the lidsadm tool.
# cd lids_install_path
# tar -zxvf lids-0.9.8-2.2.17.tar.gz
-----------------------------------------------------------
3.2 在正式的linux核心上打LIDS補丁
Linux核心原碼打LIDS補丁
-----------------------------------------------------------
# cd linux_install_path/linux
# patch -p1
/* link the default source path to lids patched version
# rm -rf /usr/src/linux
# ln -s linux_install_patch/linux /usr/src/linux
3.3 配置Linux核心
-----------------------------------------------------------
configure the Linux kernel
# cd linux
# make menuconfig or make xconfig
-----------------------------------------------------------
現在,配置Linux核心,按照以下步驟實施:
Prompt for development and/or incomplete code/drivers
Sysctl support
After that, you will find that a new item appear in the bottom of the configura
tion menu name "Linux Intrusion Detection System". Entering this menu, turn the
Linux Intrusion Detection System support (EXPERIMENTAL) (NEW).
配置LIDS核心以後.退出配置介面,編譯核心。
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
3.4 在Linux系統上安裝LIDS和系統管理工具
複製 bzImage 到 /boot/ ,編輯 /etc/lilo.conf
-----------------------------------------------------------
# cp arch/i386/boot/bzImage /boot/bzImage-lids-0.9.9-2.2.17
/* build admin tools */
# cd lids-0.9.8-2.2.17/lidsadm-0.9.8/
# make
# make install
# less /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.16-3
label=linux
read-only
root=/dev/hda2
image=/boot/bzImage-lids-0.9.9-2.2.17
label=dev
read-only
root=/dev/hda2
-----------------------------------------------------------
執行/sbin/lilo 來安裝新核心
# /sbin/lilo
3.5 配置LIDS系統
在重新啟動以前,必須配置lids系統,使其符合你的安全需要.你可以定義受保護的檔案,受保護的程式等等。
預設情況下,lidsadm將把預設配置檔案安裝到 /etc/lids/。你必須根據自己的需要重
新配置。首先,可以更新預設lids.conf的inode/dev值。
# /sbin/lidsadm -U
3.6 重新啟動系統
配置完Linux系統後,重新啟動.當lilo出現時,選擇裝載the lids enable kernel。然
後,你就將進入美妙的LIDS世界。
3.7 封裝核心
系統啟動後,不要忘記用lidsadm封裝核心,在最後/etc/rc.local加入以下命令# /sbin/lidsadm -I
3.8 線上管理
封裝完核心後,你的系統就處於LIDS的保護下。可以做一些測試來驗證,如果想改變某些配置,例如修改許可權,可以透過輸入密碼方式線上改變lids的安全等級。
# /sbin/lidsadm -S -- -LIDS
改變lids配置屬性後,例如lids.conf,lids.cap,你可以透過以下命令在核心中重新裝
載配置檔案
# /sbin/lidsadm -S -- +RELOAD_CONF
4. 配置LIDS系統
4.1 LIDS配置目錄 -- “/etc/lids/”
安裝 lidsadm以後,在/etc/lids/下會產生一個 lids配置目錄,當核心啟動時,配置信
息將被讀入核心中來初始化 LIDS系統。lids.conf 這是用來儲存 LIDS ACLs資訊的檔案。它包括定義事件進入型別的ACLs.其專案可以用lidsadm來新增或刪除。lids.cap 這個檔案包括了系統中所有的許可權,可以透過編輯它來配置系統中啟動或禁止的許可權。在想要啟動的名稱前設定 "+"或設定 "-"來禁止。安裝系統時, lids.cap 以預設值存在,應該按照自己的需要改變它。lids.net 這個檔案是用來配置透過網路傳送警告信件的。可以定義 SMTP伺服器、埠、資訊題目等等。
這一檔案需要在配置核心時選擇:
Send security alerts through network (NEW)
lids.pw 這是用來儲存由"lidsadm -P"產生的密碼的檔案,需要在配置核心時選擇:
Allow switching LIDS protections (NEW)
注意: 如果要改變lids保護等級,你必須在重新啟動核心前執行"lidsadm -P"l.
4.2 保護檔案和目錄
首先,要決定哪些檔案需要受保護。建議你應該保護系統二進位制檔案和系統配置檔案,例如/usr/,/sbin/,/etc/,/var/log/。
其次,要決定保護檔案的方式. LIDS提供四種保護型別:
DENY access to any body(禁止任何人進入)。
這種方式意味著沒有人能夠看見或修改檔案或目錄. 最敏感的檔案應該配置為DENY。 例如,可以將 /etc/shadow設定為 DENY access to anybody,
-------------------------------------------------------
Usage
lidsadm -A -o file_to_protected -j DENY
# lidsadm -A -o /etc/shadow -j DENY
After reboot or RELOAD the configurate files. you can see,
# ls /etc/shadow
ls: /etc/shadow: No such file or directory
-------------------------------------------------------
然後,你要設定一些可以進入檔案的程式,例如,登陸系統時,/bin/login檔案需要從
受保護的檔案/etc/shadow裡讀取密碼 ,但/etc/shadow不允許任何人進入,所以你應該:
-------------------------------------------------------
Usage
lidsadm -A -s SUBJECT_PROGRAM -o OBJECT_PROGRAM -j READ/WRITE/APPEND
# lidsadm -A -s /bin/login -o /etc/shadow -j READ
-------------------------------------------------------
配置生效後,你可以登陸到系統上但無法進入/etc/shadow。這是MAC (mandatory acce
ss control命令進入控制)的一個例項。
Read Only Files(只讀檔案)
這種方式意味著沒有人可以改變檔案,建議/etc/passwd,/bin/passwd等類似檔案可以
採取這種方式。
-------------------------------------------------------
lidsadm -A -o file_to_protect -j READ
example,
1. to protect the whole /sbin/ as read-only.
# /sbin/lidsadm -A -o /sbin/ -j READ
2. to protect /etc/passwd as read-only
# /sbin/lidsadm -A -o /etc/passwd -j READ
-------------------------------------------------------
Append Only Files(只能新增檔案)
大多此類檔案是指系統的log檔案,例如 /var/log/message ,/var/log/secure。 檔案
只能新增而不能刪除或修改以前的內容。
------------------------------------------------------
USAGE:
lidsadm -A -o filename_to_protect -j APPEND
example,
1. to protect the system log files
# /sbin/lidsadm -A -o /var/log/message -j APPEND
# /sbin/lidsadm -A -o /var/log/secure -j APPEND
2. to protect the apache httpd log files
# /sbin/lidsadm -A -o /etc/httpd/logs/ -j APPEND
-----------------------------------------------------
WRITE(可寫)
此型別用於定義可以改寫的檔案。
Mandatory Access Control in file protection(檔案保護中的命令進入控制)
定義哪個專案(程式)可以以哪種方式(READ,APPEND,WRITE)進入哪個目標(檔案)。
例如,定義/home/httpd/為DENY to anybody然後讓/usr/sbin/httpd能從目錄中READ。
這樣一來, Web伺服器可以正常地作為公用WEB伺服器,但在/home/httpd/下的內容和程式是不可見的,也不能被修改。如果入侵者透過httpd的bug獲得了root shell,他即使在root
shell下也不能看到檔案,即使他可以透過改寫堆疊在httpd伺服器中插入危險的程式碼,他也
只能讀到/home/httpd下的檔案,而不能修改。
----------------------------------------------------
# lidsadm -A -o /home/httpd -j DENY
# lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ
---------------------------------------------------
例項
下面是LIDS HOWTO中的一個例項
---------------------------------------------------
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
---------------------------------------------------
安裝lidsadm後,在lidsadm包中會有一個樣例lids.conf 存放於/etc/lids/下,你必須
執行 "lidsadm -U"更新 inode/dev值,根據需要重新配置它。
4.3 保護程式
UN-killable process(不可殺程式)
LIDS 可以保護程式當其父程式初始化時(pid=1)[ the process whose parent is init
(pid=1)]必須配置許可權 (/etc/lids/lids.cap),如下:
-29:CAP_INIT_KILL
hidden process(隱藏程式)
由於程式被隱藏, 所以當程式啟動時,任何人用 "ps"命令或在"/proc"下都無法找到
.
--------------------------------------------------
example,
lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT
--------------------------------------------------
4.4 許可權保護
Capabilities類似於賦予程式的許可權, root方式擁有所有許可權,但存在許可權繫結設定。
在普通的核心中,當你從繫結設定中刪除一個許可權,再也沒有人可以使用它了,直到下次重
新啟動。 (關於普通使用可以參考 spoon/lcap)。
LIDS修改這一屬性,使你可以任意轉換。進入/proc/sys/kernel/cap_bset被捕獲後引發
安全警報,lidsadm承擔所有這些工作。
可以透過執行lidsadm列出所有的LIDS許可權,和每一許可權確切的含義。
系統許可權配置
系統許可權屬性存放於/etc/lids/lids.cap,必須編輯此檔案來適應你的需要。
這裡,我們討論其中的兩個屬性:
CAP_SYS_RAWIO 啟用這一許可權,我們可以
allow ioperm/iopl and /dev/port access,
allow /dev/mem and /dev/kmem access and
allow raw block devices (/dev/[sh]d??) access
當禁止了這項功能以後,可以使得系統上所有程式失去對於raw device的許可權,例如執行lilo。
但是一些程式需要此許可權來開啟,例如XF86_SVGA, 所以在編譯核心的時候, 使一些程式處於例外狀態。
CAP_NET_ADMIN 這個專案可以得到以下許可權
interface configuration
administration of IP firewall, masquerading and accounting
setting debug option on sockets
modification of routing tables
setting arbitrary process / process group ownership on sockets
binding to any address for transparent proxying
setting TOS (type of service)
setting promiscuous mode
clearing driver statistics
multicasting
read/write of device-specific registers
出於安全因素,應該禁止此專案來禁止改變網路配置。當其被禁止後,防火牆規則將不允許被改變。
配置lids.cap
可以在capability name前加 "+"或"-"來啟動或禁止許可權。
--------------------------------------------------
### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overri
des the restriction
### 0: of changing file ownership and group ownership.
#
-0:CAP_CHOWN
### 1: Override all DAC access, including ACL execute access if _POSIX_ACL is d
efined. Excluding
### 1: DAC access covered by CAP_LINUX_IMMUTABLE.
#
+1:CAP_DAC_OVERRIDE
---------------------------------------------------
以上例子演示了禁止CAP_CHOWN (-),啟動CAP_DAC_OVERRIDE(+),應該仔細檢查lids.c ap檔案來決定哪些需要啟動哪些需要禁止。
用capabilities為獨立程式分類
你可以使用capability為獨立程式分類,從而使得程式可以做到一些系統所禁止的事情
。
例如,你可以在/etc/lids/lids.cap下禁止CAP_SYS_RAWIO(-),但你仍然需要使用X服務 ,所以你可以:
# lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT
使得XF86_SVGA擁有CA_SYS_RAWIO的許可權,而其他程式不能獲得CAP_SYS_RAWIO。
封裝核心
啟動核心以後,系統許可權要在封裝核心以後才會起作用。你必須將以下命令加入RefHat 系統的/etc/rc.d/rc.local下,或其他系統的啟動初始檔案中
#/sbin/lidsadm -I
4.5 網路安全
LIDS提供了加強網路安全的功能。
基於capability的網路安全
透過capability,可以加強網路安全性。比如anti snifferring,不能繫結低於1024的
埠,不能改變防火牆和路由器規則。所以,建議仔細閱讀每一項capability.
核心中的掃描檢測器
LIDS提供了一個核心掃描檢測器,用來偵察是否有人在掃描你的系統。這個掃描器可以偵察到half-open scan, SYN stealth port scan, Stealth FIN, Xmas,或是Null scan
等等, 象nmap,satan等工具都能被檢測到。
當raw socket被禁止時,它會起作用。這樣一來,一些基於監聽上的user space detec
tor不起作用。並且這一檢測器不使用任何socket,比任何user space detector要安全。
如果想要啟用這項功能,可以在編譯核心的時候選擇。
4.6 入侵響應系統
當LIDS檢測到違反已定義規則時,它可以用以下方式回應。
記錄資訊
當有人違反規則, lids_security_log將把資訊記錄下來, 記錄也具有anti_logging_
flood的能力,可以在編譯核心時設定。
透過mail伺服器記錄資訊
LIDS的新功能可以把資訊傳輸到你的信箱。你可以在/etc/lids/lids.net下定義郵件服
務器IP,外來郵件地址等等。
樣例
-----------------------------------------------------
MAIL_SWITCH=1
# MAIL_RELAY=hex IP:port
# IP11.1 of the machine that will be directly connected by LIDS
# for relaying its mails. Port is usually 25, but who knows...
MAIL_RELAY=210.73.88.149:25
# MAIL_SOURCE=source machine :
# Name of the source machine, used for the ehlo identification.
# Note that a bad name here could make the mail relay refuse your
# mails.
MAIL_SOURCE=lids.chinacluster.com
-----------------------------------------------------
此例中,SMTP伺服器是210.73.88.149,埠25.郵件資源用於EHLO identification。
控制檯的掛起
當使用者違反規則,控制檯將關閉使用者的控制檯。
1. 為什麼選擇LIDS
隨著互連網上Linux越來越受歡迎 ,越來越多現有GNU/LINUX系統上的應用軟體中的安全漏洞被發現。很多程式利用了程式設計師的粗心,例如快取溢位、格式化程式碼攻擊。當系統安全受到程式的危及,駭客獲得ROOT許可權以後,整個系統將被入侵者控制。
由於程式碼的開放性,我們可以獲得很多所希望Linux應用程式的原始碼,並且根據我們的需要來修改。所以bug能很容易地被找到,並很快修補。但是當漏洞被揭示後,而系統管理員疏於給漏洞打補丁,從而造成很容易地就被入侵,更糟的是駭客能獲得ROOT SHELL。利用現有的GNU/Linux系統,他為所欲為。這正是LIDS想要解決的問題。
首先看看現有的GNU/Linux系統存在哪些問題。
檔案系統未受到保護
系統中的很多重要的檔案,例如 /bin/login,一旦駭客入侵後,他可以上傳修改過的l
ogin檔案來代替/bin/login ,然後他就可以不需要任何登陸名和密碼就登陸系統。這常被稱
為Trojan house。
程式未受到保護
系統上執行的程式是為某些系統功能所服務的,例如HTTPD是一個web伺服器來滿足遠端客戶端對於web的需求。作為web伺服器系統,保護其程式不被非法終止是很重要的。但是當入侵者獲得了ROOT許可權後,我們卻無能為力。
系統管理未受保護
很多系統管理,例如,模組的裝載/解除安裝,路由的設定,防火牆的規則,能很容易就被修改,如果使用者的ID是0。所以當入侵者獲得ROOT許可權後,就變得很不安全。
超級使用者(root)作為ROOT可能濫用許可權
他可以為所欲為。作為ROOT他甚至可以對現有的許可權進行修改。
綜上所述,我們發現在現有的Linux系統中的進入控制模式是不足以建立一個安全的Linux系統。我們必須在系統中新增新的模式來解決這些問題。這就是LIDS所要做的。
2. LIDS的特色
Linux入侵偵察系統是Linux核心補丁和系統管理員工具,它加強了核心的安全性。它在核心中實現了參考監聽模式以及Mandatory Access Control(命令進入控制)模式。當它起作用後,選擇檔案進入,每一個系統/網路的管理操作,任何使用許可權, raw device, mem和 I/O 進入將可以禁止甚至對於ROOT也一樣。它使用和擴充套件了系統的功能,在整個系統上繫結控制設定,在核心中新增網路和檔案系統的安全特性,從而加強了安全性。你可以線上調整安全保護,隱藏敏感程式,透過網路接受安全警告等等。
簡而言之,LIDS提供了保護、偵察、響應的功能,從而是LINUX系統核心中的安全模式得以實現。
2.1 保護
LIDS提供以下的保護 :
保護硬碟上任何型別的重要檔案和目錄,任何人包括ROOT都無法改變。能保護重要程式不被終止能防止非法程式的RAW IO 操作。保護硬碟,包括MBR保護,等等。能保護系統中的敏感檔案,防止未被授權者(包括ROOT)和未被授權的程式進入。
2.2 偵察
當有人掃描你的主機, LIDS能偵察到並報告系統管理員。 LIDS也可以檢測到系統上任何違法規則的程式。
2.3 響應
當有人違反規則, LIDS會將非法的運作細節記錄到受LIDS保護的系統log檔案中。 LIDS還可以將log資訊傳到你的信箱中。LIDS也可以馬上關閉與使用者的對話。
3. 建立安全的Linux系統
看完了LIDS特性,讓我們來看看怎麼樣一步步地用LIDS建立安全的系統。
3.1 下載LIDS補丁和相關正式的Linux核心
可以從LIDS Home,LIDS Ftp Home或最近的LIDS Mirror獲得LIDS補丁和系統管理工具。
補丁名稱是lids-x.xx-y.y.y.tar.gz, x.xx代表lids的版本, y.y.y代表Linux核心版本
.例如, lids-0.9.9-2.2.17.tar.gz代表lids 版本是0.9.9 以及相關的核心版本是2.2.17.
。
必須下載相關的核心版本。例如,你下載了lids-0.9.9-2.2.17.tar.gz,那你就應該下
載Linux核心2.2.17的原始碼。可以從Kernel FTP Site或其他鏡象獲得核心原碼。
然後,將核心原碼和LIDS tar解壓.例如,從 得到lids-0.9.9-2.2.17.ta
r.gz,從ftp.us.kernel.org得到linux-2.2.17.tar.bz2後:
-----------------------------------------------------------
1. uncompress the Linux kernel source code tree.
# cd linux_install_path/
# bzip2 -cd linux-2.2.17.tar.bz2 | tar -xvf -
2. uncompress the lids source code and install the lidsadm tool.
# cd lids_install_path
# tar -zxvf lids-0.9.8-2.2.17.tar.gz
-----------------------------------------------------------
3.2 在正式的linux核心上打LIDS補丁
Linux核心原碼打LIDS補丁
-----------------------------------------------------------
# cd linux_install_path/linux
# patch -p1
/* link the default source path to lids patched version
# rm -rf /usr/src/linux
# ln -s linux_install_patch/linux /usr/src/linux
3.3 配置Linux核心
-----------------------------------------------------------
configure the Linux kernel
# cd linux
# make menuconfig or make xconfig
-----------------------------------------------------------
現在,配置Linux核心,按照以下步驟實施:
After that, you will find that a new item appear in the bottom of the configura
tion menu name "Linux Intrusion Detection System". Entering this menu, turn the
配置LIDS核心以後.退出配置介面,編譯核心。
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
3.4 在Linux系統上安裝LIDS和系統管理工具
複製 bzImage 到 /boot/ ,編輯 /etc/lilo.conf
-----------------------------------------------------------
# cp arch/i386/boot/bzImage /boot/bzImage-lids-0.9.9-2.2.17
/* build admin tools */
# cd lids-0.9.8-2.2.17/lidsadm-0.9.8/
# make
# make install
# less /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.16-3
label=linux
read-only
root=/dev/hda2
image=/boot/bzImage-lids-0.9.9-2.2.17
label=dev
read-only
root=/dev/hda2
-----------------------------------------------------------
執行/sbin/lilo 來安裝新核心
# /sbin/lilo
3.5 配置LIDS系統
在重新啟動以前,必須配置lids系統,使其符合你的安全需要.你可以定義受保護的檔案,受保護的程式等等。
預設情況下,lidsadm將把預設配置檔案安裝到 /etc/lids/。你必須根據自己的需要重
新配置。首先,可以更新預設lids.conf的inode/dev值。
# /sbin/lidsadm -U
3.6 重新啟動系統
配置完Linux系統後,重新啟動.當lilo出現時,選擇裝載the lids enable kernel。然
後,你就將進入美妙的LIDS世界。
3.7 封裝核心
系統啟動後,不要忘記用lidsadm封裝核心,在最後/etc/rc.local加入以下命令# /sbin/lidsadm -I
3.8 線上管理
封裝完核心後,你的系統就處於LIDS的保護下。可以做一些測試來驗證,如果想改變某些配置,例如修改許可權,可以透過輸入密碼方式線上改變lids的安全等級。
# /sbin/lidsadm -S -- -LIDS
改變lids配置屬性後,例如lids.conf,lids.cap,你可以透過以下命令在核心中重新裝
載配置檔案
# /sbin/lidsadm -S -- +RELOAD_CONF
4. 配置LIDS系統
4.1 LIDS配置目錄 -- “/etc/lids/”
安裝 lidsadm以後,在/etc/lids/下會產生一個 lids配置目錄,當核心啟動時,配置信
息將被讀入核心中來初始化 LIDS系統。lids.conf 這是用來儲存 LIDS ACLs資訊的檔案。它包括定義事件進入型別的ACLs.其專案可以用lidsadm來新增或刪除。lids.cap 這個檔案包括了系統中所有的許可權,可以透過編輯它來配置系統中啟動或禁止的許可權。在想要啟動的名稱前設定 "+"或設定 "-"來禁止。安裝系統時, lids.cap 以預設值存在,應該按照自己的需要改變它。lids.net 這個檔案是用來配置透過網路傳送警告信件的。可以定義 SMTP伺服器、埠、資訊題目等等。
這一檔案需要在配置核心時選擇:
lids.pw 這是用來儲存由"lidsadm -P"產生的密碼的檔案,需要在配置核心時選擇:
注意: 如果要改變lids保護等級,你必須在重新啟動核心前執行"lidsadm -P"l.
4.2 保護檔案和目錄
首先,要決定哪些檔案需要受保護。建議你應該保護系統二進位制檔案和系統配置檔案,例如/usr/,/sbin/,/etc/,/var/log/。
其次,要決定保護檔案的方式. LIDS提供四種保護型別:
DENY access to any body(禁止任何人進入)。
這種方式意味著沒有人能夠看見或修改檔案或目錄. 最敏感的檔案應該配置為DENY。 例如,可以將 /etc/shadow設定為 DENY access to anybody,
-------------------------------------------------------
Usage
lidsadm -A -o file_to_protected -j DENY
# lidsadm -A -o /etc/shadow -j DENY
After reboot or RELOAD the configurate files. you can see,
# ls /etc/shadow
ls: /etc/shadow: No such file or directory
-------------------------------------------------------
然後,你要設定一些可以進入檔案的程式,例如,登陸系統時,/bin/login檔案需要從
受保護的檔案/etc/shadow裡讀取密碼 ,但/etc/shadow不允許任何人進入,所以你應該:
-------------------------------------------------------
Usage
lidsadm -A -s SUBJECT_PROGRAM -o OBJECT_PROGRAM -j READ/WRITE/APPEND
# lidsadm -A -s /bin/login -o /etc/shadow -j READ
-------------------------------------------------------
配置生效後,你可以登陸到系統上但無法進入/etc/shadow。這是MAC (mandatory acce
ss control命令進入控制)的一個例項。
Read Only Files(只讀檔案)
這種方式意味著沒有人可以改變檔案,建議/etc/passwd,/bin/passwd等類似檔案可以
採取這種方式。
-------------------------------------------------------
lidsadm -A -o file_to_protect -j READ
example,
1. to protect the whole /sbin/ as read-only.
# /sbin/lidsadm -A -o /sbin/ -j READ
2. to protect /etc/passwd as read-only
# /sbin/lidsadm -A -o /etc/passwd -j READ
-------------------------------------------------------
Append Only Files(只能新增檔案)
大多此類檔案是指系統的log檔案,例如 /var/log/message ,/var/log/secure。 檔案
只能新增而不能刪除或修改以前的內容。
------------------------------------------------------
USAGE:
lidsadm -A -o filename_to_protect -j APPEND
example,
1. to protect the system log files
# /sbin/lidsadm -A -o /var/log/message -j APPEND
# /sbin/lidsadm -A -o /var/log/secure -j APPEND
2. to protect the apache httpd log files
# /sbin/lidsadm -A -o /etc/httpd/logs/ -j APPEND
-----------------------------------------------------
WRITE(可寫)
此型別用於定義可以改寫的檔案。
Mandatory Access Control in file protection(檔案保護中的命令進入控制)
定義哪個專案(程式)可以以哪種方式(READ,APPEND,WRITE)進入哪個目標(檔案)。
例如,定義/home/httpd/為DENY to anybody然後讓/usr/sbin/httpd能從目錄中READ。
這樣一來, Web伺服器可以正常地作為公用WEB伺服器,但在/home/httpd/下的內容和程式是不可見的,也不能被修改。如果入侵者透過httpd的bug獲得了root shell,他即使在root
shell下也不能看到檔案,即使他可以透過改寫堆疊在httpd伺服器中插入危險的程式碼,他也
只能讀到/home/httpd下的檔案,而不能修改。
----------------------------------------------------
# lidsadm -A -o /home/httpd -j DENY
# lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ
---------------------------------------------------
例項
下面是LIDS HOWTO中的一個例項
---------------------------------------------------
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
---------------------------------------------------
安裝lidsadm後,在lidsadm包中會有一個樣例lids.conf 存放於/etc/lids/下,你必須
執行 "lidsadm -U"更新 inode/dev值,根據需要重新配置它。
4.3 保護程式
UN-killable process(不可殺程式)
LIDS 可以保護程式當其父程式初始化時(pid=1)[ the process whose parent is init
(pid=1)]必須配置許可權 (/etc/lids/lids.cap),如下:
-29:CAP_INIT_KILL
hidden process(隱藏程式)
由於程式被隱藏, 所以當程式啟動時,任何人用 "ps"命令或在"/proc"下都無法找到
.
--------------------------------------------------
example,
lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j INHERIT
--------------------------------------------------
4.4 許可權保護
Capabilities類似於賦予程式的許可權, root方式擁有所有許可權,但存在許可權繫結設定。
在普通的核心中,當你從繫結設定中刪除一個許可權,再也沒有人可以使用它了,直到下次重
新啟動。 (關於普通使用可以參考 spoon/lcap)。
LIDS修改這一屬性,使你可以任意轉換。進入/proc/sys/kernel/cap_bset被捕獲後引發
安全警報,lidsadm承擔所有這些工作。
可以透過執行lidsadm列出所有的LIDS許可權,和每一許可權確切的含義。
系統許可權配置
系統許可權屬性存放於/etc/lids/lids.cap,必須編輯此檔案來適應你的需要。
這裡,我們討論其中的兩個屬性:
CAP_SYS_RAWIO 啟用這一許可權,我們可以
allow ioperm/iopl and /dev/port access,
allow /dev/mem and /dev/kmem access and
allow raw block devices (/dev/[sh]d??) access
當禁止了這項功能以後,可以使得系統上所有程式失去對於raw device的許可權,例如執行lilo。
但是一些程式需要此許可權來開啟,例如XF86_SVGA, 所以在編譯核心的時候, 使一些程式處於例外狀態。
CAP_NET_ADMIN 這個專案可以得到以下許可權
interface configuration
administration of IP firewall, masquerading and accounting
setting debug option on sockets
modification of routing tables
setting arbitrary process / process group ownership on sockets
binding to any address for transparent proxying
setting TOS (type of service)
setting promiscuous mode
clearing driver statistics
multicasting
read/write of device-specific registers
出於安全因素,應該禁止此專案來禁止改變網路配置。當其被禁止後,防火牆規則將不允許被改變。
配置lids.cap
可以在capability name前加 "+"或"-"來啟動或禁止許可權。
--------------------------------------------------
### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overri
des the restriction
### 0: of changing file ownership and group ownership.
#
-0:CAP_CHOWN
### 1: Override all DAC access, including ACL execute access if _POSIX_ACL is d
efined. Excluding
### 1: DAC access covered by CAP_LINUX_IMMUTABLE.
#
+1:CAP_DAC_OVERRIDE
---------------------------------------------------
以上例子演示了禁止CAP_CHOWN (-),啟動CAP_DAC_OVERRIDE(+),應該仔細檢查lids.c ap檔案來決定哪些需要啟動哪些需要禁止。
用capabilities為獨立程式分類
你可以使用capability為獨立程式分類,從而使得程式可以做到一些系統所禁止的事情
。
例如,你可以在/etc/lids/lids.cap下禁止CAP_SYS_RAWIO(-),但你仍然需要使用X服務 ,所以你可以:
# lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j INHERIT
使得XF86_SVGA擁有CA_SYS_RAWIO的許可權,而其他程式不能獲得CAP_SYS_RAWIO。
封裝核心
啟動核心以後,系統許可權要在封裝核心以後才會起作用。你必須將以下命令加入RefHat 系統的/etc/rc.d/rc.local下,或其他系統的啟動初始檔案中
#/sbin/lidsadm -I
4.5 網路安全
LIDS提供了加強網路安全的功能。
基於capability的網路安全
透過capability,可以加強網路安全性。比如anti snifferring,不能繫結低於1024的
埠,不能改變防火牆和路由器規則。所以,建議仔細閱讀每一項capability.
核心中的掃描檢測器
LIDS提供了一個核心掃描檢測器,用來偵察是否有人在掃描你的系統。這個掃描器可以偵察到half-open scan, SYN stealth port scan, Stealth FIN, Xmas,或是Null scan
等等, 象nmap,satan等工具都能被檢測到。
當raw socket被禁止時,它會起作用。這樣一來,一些基於監聽上的user space detec
tor不起作用。並且這一檢測器不使用任何socket,比任何user space detector要安全。
如果想要啟用這項功能,可以在編譯核心的時候選擇。
4.6 入侵響應系統
當LIDS檢測到違反已定義規則時,它可以用以下方式回應。
記錄資訊
當有人違反規則, lids_security_log將把資訊記錄下來, 記錄也具有anti_logging_
flood的能力,可以在編譯核心時設定。
透過mail伺服器記錄資訊
LIDS的新功能可以把資訊傳輸到你的信箱。你可以在/etc/lids/lids.net下定義郵件服
務器IP,外來郵件地址等等。
樣例
-----------------------------------------------------
MAIL_SWITCH=1
# MAIL_RELAY=hex IP:port
# IP11.1 of the machine that will be directly connected by LIDS
# for relaying its mails. Port is usually 25, but who knows...
MAIL_RELAY=210.73.88.149:25
# MAIL_SOURCE=source machine :
# Name of the source machine, used for the ehlo identification.
# Note that a bad name here could make the mail relay refuse your
# mails.
MAIL_SOURCE=lids.chinacluster.com
-----------------------------------------------------
此例中,SMTP伺服器是210.73.88.149,埠25.郵件資源用於EHLO identification。
控制檯的掛起
當使用者違反規則,控制檯將關閉使用者的控制檯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux入侵監測系統LIDS原理(轉)Linux
- 用capability 特徵加強Linux系統安全(轉)特徵Linux
- 在ORACLE中利用角色增強應用系統安全性(轉)Oracle
- 加強redhat linux系統安全的方法(轉)RedhatLinux
- 使用capability加強Linux系統的安全(轉)Linux
- Linux核心即時入侵檢測安全增強-系統呼叫執行步驟(轉)Linux
- Linux核心入侵檢測安全增強實現(下)(轉)Linux
- Linux核心入侵檢測安全增強實現(上)(轉)Linux
- 用PAM來增強LINUX伺服器的安全(一)Linux伺服器
- 安裝和配置Tripwire,加強你的Linux系統安全 (轉)Linux
- Linux核心即時入侵檢測安全增強-介紹(轉)Linux
- Linux核心即時入侵檢測安全增強-後語(轉)Linux
- linux 核心安全增強 — stack canaryLinux
- 安全使用RedHat Linux系統(轉)RedhatLinux
- linux 核心安全增強(一)— stack canaryLinux
- Linux增強系統安全性:防止單使用者模式(single)修改密碼Linux模式密碼
- 配置安全的Linux作業系統(轉)Linux作業系統
- 增強字串 (轉)字串
- 用日誌系統保護Linux安全Linux
- 如何增強 Linux 核心中的訪問控制安全Linux
- Windows系統增強最佳化工具Windows
- Linux系統與安全學習筆記(轉)Linux筆記
- 構建安全Linux系統十二守則(轉)Linux
- 深入分析Linux系統深度安全加固(轉)Linux
- Win10 1903系統如何啟用增強搜尋功能Win10
- UNIX系統安全(轉)
- 阿里安全在國際頂會分享蘋果系統核心防禦增強機制 保護使用者系統安全阿里蘋果
- Windows7安全增強功能Windows
- 安全運維之:Linux系統賬戶和登入安全(轉)運維Linux
- 從啟動開始保障LINUX系統安全(轉)Linux
- 全球整合系統(HCIS)市場增長強勁
- Linux作業系統檔案系統的桌面應用(轉)Linux作業系統
- 提高Linux系統安全性的十招<4>(轉)Linux
- 提高Linux系統安全性的十招<3>(轉)Linux
- 提高Linux系統安全性的十招<1>(轉)Linux
- Linux系統安全工具之:Sxid和Skey(轉)Linux
- Linux系統安全保護Linux
- 系統安全及應用