


DIY的Linux安全平臺(tái)
如何保證安全的最大化呢?量體裁衣,有的放矢,取舍得當(dāng)是關(guān)鍵。現(xiàn)從以下幾個(gè)方面加以詳述。
控制文件的屬性和權(quán)限
密切關(guān)注文件的屬性和權(quán)限設(shè)置是保證主機(jī)文件系統(tǒng)完整性的至關(guān)緊要的操作。
兩種特殊的文件訪問權(quán)限分別是SUID(八進(jìn)制為4000)和SGID(八進(jìn)制為2000)。設(shè)置這兩種權(quán)限的文件,將使其它用戶在執(zhí)行它們時(shí)擁有所有者的權(quán)限。也就是說,如果一個(gè)設(shè)置為SUID的程序,即使是普通用戶使用也是作為root來運(yùn)行的。因此,SUID/SGID文件是安全的隱患。
SUID和SGID攻擊方式的預(yù)防:
1.嚴(yán)格審查系統(tǒng)內(nèi)的文件權(quán)限。可以找出系統(tǒng)內(nèi)使用SUID/SGID的文件,列出清單保存,做到心中有數(shù)。命令如下:
[root#] find / -type f -perm +6000 -ls | less
[root#] find / -type f -perm +6000 > Suid-Sgid.txt
2.對(duì)于一部分程序必須設(shè)置為SUID的,可以讓它們自成一組,集中管理。但是絕對(duì)不允許在用戶的家目錄下有SUID程序存在。
3.確保重要的SUID腳本不可寫。命令如下:
[root#] find / -perm -2 ! -type l -ls
4.對(duì)于并非絕對(duì)需要被設(shè)置成SUID的程序,改變它們的訪問權(quán)限或者卸載程序。如:
[root#] chmod -s [program]
5.查找系統(tǒng)內(nèi)所有不屬于任何用戶和組的文件。因?yàn)檫@些文件很容易被利用來獲得入侵主機(jī)的權(quán)限,造成潛在的威脅。命令如下:
[root#] find / -nouser -o -nogroup
6.善于使用lsattr和chattr這兩個(gè)ext2/3的屬性命令。本文將主要討論a屬性和i屬性,因?yàn)檫@兩個(gè)屬性對(duì)于提高文件系統(tǒng)的安全性和保障文件系統(tǒng)的完整性有很大的好處。a屬性(Append-only),系統(tǒng)只允許在這個(gè)文件之后追加數(shù)據(jù),不允許任何進(jìn)程覆蓋或截?cái)噙@個(gè)文件。如果目錄具有這個(gè)屬性,系統(tǒng)將只允許在這個(gè)目錄下建立和修改文件,而不允許刪除任何文件。i屬性(Immutable),系統(tǒng)不允許對(duì)這個(gè)文件進(jìn)行任何的修改。如果目錄具有這個(gè)屬性,那么任何進(jìn)程只能修改目錄之下的文件,不允許建立和刪除文件。
如果主機(jī)直接暴露在因特網(wǎng)或者位于其它危險(xiǎn)(如其它非管理員亦可接觸服務(wù)器)環(huán)境,有很多Shell賬戶或提供HTTP和FTP等網(wǎng)絡(luò)服務(wù),一般應(yīng)該在安裝配置完成后使用如下命令,便于保護(hù)這些重要目錄:
[root#] chattr -R +i /bin /boot /etc /lib /sbin
[root#] chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin
[root#] chattr +a /var/log/messages /var/log/secure......
如果很少對(duì)賬戶進(jìn)行添加、變更或刪除操作,把/home本身設(shè)置為Immutable屬性也不會(huì)造成什么問題。
在很多情況下,整個(gè)/usr目錄樹也應(yīng)該具有不可改變屬性。實(shí)際上,除了對(duì)/usr目錄使用chattr -R +i /usr/命令外,還可以在/etc/fstab文件中使用ro選項(xiàng),使/usr目錄所在的分區(qū)以只讀的方式加載。
另外,把系統(tǒng)日志文件設(shè)置為只能添加屬性(Append-only),將使入侵者無法擦除自己的蹤跡,以便于執(zhí)法人員取證、分析。文件系統(tǒng)的完整性檢查
完整性是安全系統(tǒng)的核心屬性。管理員需要知道是否有文件被惡意改動(dòng)過。攻擊者可以用很多方法破壞文件系統(tǒng),例如,可以利用錯(cuò)誤配置獲得權(quán)限,也可以修改文件植入特洛伊木馬和病毒。Linux中常用如下工具進(jìn)行校驗(yàn)檢查。
1.md5sum
md5sum 命令可以用來創(chuàng)建長度為128位的文件指紋信息。通過md5sum -c命令可以反向檢查文件是否被修改過。黑客進(jìn)入到系統(tǒng)后,會(huì)用修改后的文件來取代系統(tǒng)上某些特定的文件,如netstat命令等。于是當(dāng)使用 netstat -a命令查看系統(tǒng)狀態(tài)時(shí),不會(huì)顯示系統(tǒng)攻擊者存在的信息。攻擊者還可能會(huì)替代所有可能泄露其存在的文件,一般來說包括:/bin/ps、/bin/netstat、/bin/login、/bin/ls、
/usr/bin/top、/usr/bin/passwd、/usr/bin/top、
/sbin/portmap、/etc/xinetd.conf、/etc/services。
這些文件都是替代的對(duì)象。由于這些文件已經(jīng)被取代,那么簡(jiǎn)單地利用ls命令是查看不出這些文件有什么破綻的。因此你需要用md5sum工具在系統(tǒng)安裝前期為這些文件做好指紋認(rèn)證并保存,以備日后檢測(cè)所用。
2.RPM安裝包
如果使用的是基于RPM的安裝包(Red Hat公司開發(fā)并包含在其Linux產(chǎn)品之中的多功能軟件安裝管理器,現(xiàn)有多種版本的Linux使用此管理器,如Red Hat、 TurboLinux),它可以用來建立、安裝、查詢、檢驗(yàn)、升級(jí)和卸載獨(dú)立的軟件包。一個(gè)完整的RPM包包括壓縮文件和包信息。當(dāng)使用RPM安裝軟件時(shí),RPM為每個(gè)被安裝的文件向數(shù)據(jù)庫中添加信息,包括MD5校驗(yàn)和、文件大小、文件類型、擁有者、組和權(quán)限模式。當(dāng)RPM以-verify標(biāo)志運(yùn)行時(shí),將把初始文件的值與當(dāng)前安裝的文件進(jìn)行比較并報(bào)告差異。例如,下面是對(duì)一個(gè)被黑站點(diǎn)的運(yùn)行結(jié)果:
# rpm -qf /bin/ps(或# rpm -qf /usr/bin/top 查看命令隸屬哪個(gè)RPM包)
procps.2.0.2-2
# rpm -V procps(-V MD5檢驗(yàn))
SM5..UGT /bin/ps
SM5..UGT /usr/bin/top(有消息表示此文件已被修改)
由上可以看出,攻擊者已經(jīng)入侵到系統(tǒng)中,并且用自己的ps及top命令替代了原來系統(tǒng)中的命令,從而使管理員看不到其運(yùn)行的進(jìn)程。RPM的使用方法很多,具體操作方法參見man rpm文檔。
3.Tripwire
Tripwire是一個(gè)用來檢測(cè)整個(gè)系統(tǒng)是否存在惡意代碼和檢驗(yàn)文件完整性的有用工具。它采用MD5算法生成128位的“指紋”,通過命令自動(dòng)保存系統(tǒng)快照,再產(chǎn)生相應(yīng)的MD5數(shù)值以供日后比較判斷。
使用Tripwire可以定義哪些文件/目錄需要被檢驗(yàn)。一般默認(rèn)設(shè)置能滿足大多數(shù)的要求。該工具運(yùn)行在四種模式下:數(shù)據(jù)庫生成模式、數(shù)據(jù)庫更新模式、文件完整性檢查模式、互動(dòng)式數(shù)據(jù)庫更新模式。當(dāng)初始化數(shù)據(jù)庫生成的時(shí)候,它生成對(duì)現(xiàn)有文件各種信息的數(shù)據(jù)庫文件。為預(yù)防以后系統(tǒng)文件或者配置文件被意外地改變、替換或刪除,它將每天基于原始數(shù)據(jù)庫對(duì)現(xiàn)有文件進(jìn)行比較,以發(fā)現(xiàn)哪些文件被更改、是否有系統(tǒng)入侵等意外事件發(fā)生。當(dāng)然,如果系統(tǒng)中的配置文件或程序被更改,則需要再次生成數(shù)據(jù)庫文件,保持最新的系統(tǒng)快照。此軟件功能強(qiáng)大,使用方便。具體的安裝和使用,可以通過Google搜索獲得。有效控制服務(wù)器運(yùn)行的后臺(tái)進(jìn)程
服務(wù)進(jìn)程(Daemon)是Linux操作系統(tǒng)的核心程序,是外界與主機(jī)互相交互的主要途徑,同時(shí)也是連接因特網(wǎng)的大門。正因?yàn)檫\(yùn)行了不同的服務(wù)進(jìn)程,Linux系統(tǒng)才能夠提供不同的服務(wù),網(wǎng)絡(luò)才變得豐富多彩。一個(gè)稱職的管理員必須掌握以下幾個(gè)要領(lǐng):
1. 要對(duì)自己的服務(wù)器有足夠的了解,清楚每臺(tái)服務(wù)器的所有后臺(tái)進(jìn)程,了解哪臺(tái)主機(jī)運(yùn)行了哪些服務(wù),開放了哪些端口。我們可以用以下方法得到服務(wù)器的配置:# ntsysv (或 setup) (列出所有的服務(wù)清單,可以選擇安裝/卸載)
# less /etc/services (列出所有服務(wù)運(yùn)行的端口)
# ps -auxf > daemons.txt(推薦使用,把所有后臺(tái)打印列表)
# cd /var/run/|ls -al(查看啟動(dòng)服務(wù)的進(jìn)程號(hào)文件)
2. 對(duì)每個(gè)服務(wù)都要做好軟件版本號(hào)的登記歸檔,密切注意各服務(wù)軟件的漏洞,盡快升級(jí)或打補(bǔ)丁。如bind軟件在8.X存在安全漏洞,應(yīng)該盡快升級(jí)到9.X。
3.尤其要注意的是,新手們總是認(rèn)為把服務(wù)運(yùn)行起來工作就已經(jīng)做完了,其實(shí)這是不對(duì)的。當(dāng)服務(wù)進(jìn)程運(yùn)行起來后,配置文件的優(yōu)化處理相當(dāng)重要。比如, Apache的配置文件中,KeepAlive、MaxKeepAliveRequests、KeepAliveTimeout、 StarServers、MinSpareServers、MaxSpareServers、MaxClients、 MaxRequestsPerChild對(duì)機(jī)器性能的影響都非常重要。所以,需要常去網(wǎng)上論壇了解最新信息和發(fā)展動(dòng)態(tài),從而更好地守住每個(gè)進(jìn)出的要口。
同時(shí)還要特別注意以下幾方面:
配置獨(dú)立的專用服務(wù)器,增加負(fù)荷能力,降低風(fēng)險(xiǎn)
Linux 作為優(yōu)秀的網(wǎng)絡(luò)操作平臺(tái),完全有能力勝任運(yùn)行多個(gè)服務(wù)器。比如,它可以作為Web服務(wù)器,同時(shí)也可以充當(dāng)FTP服務(wù)器和Mail服務(wù)器。這樣做的好處在于能夠降低投資成本,但是不安全因素也會(huì)隨之相應(yīng)增加。因此,需要在投資成本與安全最大化之間權(quán)衡。假如電腦連接因特網(wǎng),提供多種服務(wù),且每天都要提供大量訪問量時(shí),建議一“不要把所有的雞蛋放在同一個(gè)籃子里”。把各個(gè)服務(wù)進(jìn)程運(yùn)行在不同的主機(jī)上,成為專用的Web服務(wù)器,F(xiàn)TP服務(wù)器或Mail服務(wù)器,共同分擔(dān)風(fēng)險(xiǎn)。建議二把各種服務(wù)分類管理。在FTP服務(wù)器和Mail服務(wù)器訪問量不大時(shí),也可以把它們統(tǒng)一管理。
取消所有非必要的服務(wù),盡量做到干凈,減少后門
把Linux作為專用服務(wù)器是個(gè)明智的舉措。例如,希望Linux成為強(qiáng)大的Web服務(wù)器,可以取消系統(tǒng)內(nèi)所有非必要的服務(wù),只開啟必要服務(wù)。這樣做可以盡量減少后門,降低隱患,而且可以合理分配系統(tǒng)資源,提高整機(jī)性能。以下是幾個(gè)不常用的服務(wù):
1. fingerd(finger服務(wù)器)報(bào)告指定用戶的個(gè)人信息,包括用戶名、真實(shí)姓名、shell、目錄和聯(lián)系方式,它將使系統(tǒng)暴露在不受歡迎的情報(bào)收集活動(dòng)下,應(yīng)避免啟動(dòng)此服務(wù)。
2. R服務(wù)(rshd、rlogin、rwhod、rexec)提供各種級(jí)別的命令,它們可以在遠(yuǎn)程主機(jī)上運(yùn)行或與遠(yuǎn)程主機(jī)交互,在封閉的網(wǎng)絡(luò)環(huán)境中登錄而不再要求輸入用戶名和口令,相當(dāng)方便。然而在公共服務(wù)器上就會(huì)暴露問題,導(dǎo)致安全威脅。
3. X-Window從嚴(yán)格的意義上說,是Linux窗口管理器的擴(kuò)展,而不是重要組成部分。從目前的GNOME、KDE這兩種主流圖形服務(wù)器來看,體積越來越臃腫,耗存越來越大,一些基于圖形界面的軟件在使用上也存在不少問題。雖然開發(fā)人員不會(huì)放棄對(duì)它的完善,但對(duì)于服務(wù)器來說,它的存在價(jià)值幾乎沒有。因此,在安裝服務(wù)器時(shí),務(wù)必考慮是否真的需要圖形管理界面。
4. 其它服務(wù),如amd、arpwatch、atd、dhcpd、innd、nntpd、talkd、lpd、named、routed、snmpd、 xfs、wuftpd、tftpd、telnet、ypbind、yppasswd、ypserv,既然是Web服務(wù)器,都可以取消或卸載掉。
同理,如果是作為FTP服務(wù)器運(yùn)行,只需FTP進(jìn)程和必要的程序。
安全系數(shù)高的服務(wù)替代正在運(yùn)行的服務(wù)進(jìn)程
對(duì)于一些必要的服務(wù)器,如前所說的Web服務(wù)器,理論上只需要Apache的進(jìn)程就可以工作了。但是如果管理員需要遠(yuǎn)程控制放在運(yùn)營中心的主機(jī)呢?或者用戶需要通過FTP上傳更新資料呢?Telnet、wu-ftp這些服務(wù)的安全性太低,這時(shí),就需要啟用安全級(jí)別高的服務(wù)來替代這些服務(wù)程序。以下為幾個(gè)需要替代的進(jìn)程:
1.用OpenSSH替代Telnet
推薦使用開放軟件OpenSSH(Secure Shell),這是一個(gè)安全的登錄系統(tǒng),且不受加密方法的出口限制,適用于替代Telnet、rlogin、rsh、rcp、rdist。另外, OpenSSH也可以用來在兩臺(tái)計(jì)算機(jī)間建立一條加密信道供其它不安全軟件使用。OpenSSH支持多種算法,包括BlowFish、Triple DES、IDEA、RSA。目前支持SSH的客戶端軟件不少,推薦使用Putty和Filezilla。關(guān)于服務(wù)器和軟件的安裝使用,請(qǐng)參見相關(guān)文章,在此不再詳述。
2.用Vsftpd替代wu-ftpd、tftpd(基本的FTP服務(wù))、ncftpd(匿名服務(wù))
如果想要一個(gè)優(yōu)秀的FTP軟件,建議使用Vsftpd。Vsftpd(Very Secure)是一個(gè)非常值得信賴的FTP軟件。除了與生俱來的高安全性外,在ASCⅡ傳輸模式下的速度是wu-ftpd的兩倍,在千兆以太網(wǎng)的下載速度可達(dá)86Mb/s;在穩(wěn)定性方面,Vsftpd可以在單機(jī)(非集群)上支持4000~15000個(gè)以上的并發(fā)用戶同時(shí)連接。除此以外,還可以建立虛擬 FTP服務(wù)器,支持非系統(tǒng)用戶的登錄下載,同時(shí)也可以給不同的用戶分配不同的權(quán)限,保證服務(wù)的安全最大化。現(xiàn)在世界上很多著名的公司都在使用 Vsftpd,如Red Hat、GNU、GNOME、SUSE、KDE、OpenBSD等。具體安裝和配置請(qǐng)見參考資料。
3.用Qmail替代Sendmail
Sendmail 將來仍然是主要的SMTP服務(wù)器,網(wǎng)絡(luò)上有關(guān)Sendmail服務(wù)器的配置資料隨處可見。但事實(shí)上由于Sendmail代碼的復(fù)雜性,使得很多人對(duì)其配置一知半解。多數(shù)情況下,新手們往往只要能夠讓Sendmail啟動(dòng)起來、能收發(fā)郵件就覺得萬事大吉了。這樣的配置其實(shí)漏洞太多,難以保證安全性。所以, Qmail是個(gè)更好的選擇。當(dāng)然,要想真正建立一個(gè)功能強(qiáng)大、運(yùn)行穩(wěn)定的郵件服務(wù)器,掌握其靈活的配置,認(rèn)真閱讀How-to手冊(cè)和FAQ是很有必要的。
使用tcpwrappers控制文件
在沒有設(shè)置防火墻之前,可以通過一種簡(jiǎn)單而可靠的機(jī)制——tcpwrappers來加強(qiáng)網(wǎng)絡(luò)訪問控制。tcpwrappers從兩個(gè)文件中讀取網(wǎng)絡(luò)訪問控制規(guī)則:
/etc/hosts.allow 指定授權(quán)主機(jī)
/etc/hosts.deny 指定非授權(quán)主機(jī)
配置文件的編寫規(guī)則非常簡(jiǎn)單,一般是:
services_list : client_list [ : shell_command ]
1. 如果client及services滿足hosts.allow里面的條目,那么訪問將被允許。
2. 如果client及services滿足hosts.deny里面的條目,那么訪問將被禁止。
3. 如果以上兩條都不滿足,訪問將被允許。
4. 如果訪問控制文件不存在,將被當(dāng)作空規(guī)則文件處理。所以可以通過刪除訪問控制文件來關(guān)閉訪問限制。
其中services_list可以列出一個(gè)或幾個(gè)服務(wù)進(jìn)程名,也可以使用通配符;client_list可以是IP地址、主機(jī)名或者網(wǎng)絡(luò)號(hào),也可以使用通配符。
services_list有兩個(gè)特殊用法的符號(hào):ALL和EXCEPT。ALL表示所有的進(jìn)程,而EXCEPT表示排除某個(gè)進(jìn)程。比如,ALL EXCEPT in.fingerd表示除了in.fingerd外所有的進(jìn)程。
client_list可以使用如下通配符:
1. “.”號(hào)在字符串前匹配所有后面部分和所提供字符串一樣的主機(jī)名。比如:.linuxidc.net可以匹配idc.net">www.linuxidc.net或mail.linuxidc.net。
2. “.”號(hào)在字符串后匹配以所提供字符串開頭的地址,比如,10.44.可以匹配所有10.44.xxx.xxx的地址。
3. 可以使用n.n.n.n/m.m.m.m的格式來表示net/mask,比如,10.44.72.0/255.255.254.0匹配從10.44.72.0到10.44.73.255的地址。
4. 以“/”號(hào)開頭的字符串將被看作一個(gè)文件處理,它匹配所有在這個(gè)文件中列出的主機(jī)名或者地址。
5. “@”開頭的串將被當(dāng)作一個(gè)NIS組的名字。
6. ALL表示所有的主機(jī),LOCAL匹配所有機(jī)器名中不帶“.”號(hào)的主機(jī),EXCEPT表示排除某些主機(jī)。
比如,hosts.allow中有一行,ALL: .edu.cn EXCEPT example.edu.cn表示允許除了主機(jī)名叫example.edu.cn 以外的所有.edu.cn域內(nèi)的機(jī)器訪問所有的服務(wù)。而在hosts.deny中,ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0則表示禁止192.168.0.1到192.168.0.254的機(jī)器訪問除了in.fingerd以外的服務(wù)。防火墻的選用和配置
前面介紹了tcpwrappers的詳細(xì)應(yīng)用,但是對(duì)管理員而言,只有經(jīng)過Internet的考驗(yàn)才能真正得到直接有效的磨煉和提高。如何分辨和抵擋 Internet上形形色色的信息呢??jī)H僅 tcpwrappers是不夠的,關(guān)鍵是防火墻的選用和配置。配置高效的防火墻是管理員要掌握的十分重要而且非常有效的必修課。在此,防火墻的功能和類型就不介紹了。最主要的是防火墻的構(gòu)建要量身定制,應(yīng)從企業(yè)自身狀況和需求特點(diǎn)來考慮所需要的防火墻解決方案。不同規(guī)模、不同類型的企業(yè),其網(wǎng)絡(luò)保護(hù)的要求也存在明顯的差異。防火墻是個(gè)重要的話題,在這里限于篇幅不可能詳細(xì)分析每一種配置。入侵檢測(cè)系統(tǒng)
對(duì)攻擊者來說,端口掃描是入侵主機(jī)的必備工作,可以用端口掃描程序掃描服務(wù)器的所有端口來收集有用的信息,如哪些端口打開、哪些端口關(guān)閉、提供服務(wù)的程序版本、操作系統(tǒng)的版本等。下面介紹幾種對(duì)付端口掃描的工具。
1. PortSentry
PortSentry是一個(gè)被設(shè)計(jì)成實(shí)時(shí)地發(fā)現(xiàn)端口掃描并對(duì)端口掃描快速作出反應(yīng)的檢測(cè)工具。一旦發(fā)現(xiàn)端口掃描,PortSentry做出的反應(yīng)有:
(1)通過syslog()函數(shù)給出一個(gè)日志消息;
(2)自動(dòng)地把對(duì)服務(wù)器進(jìn)行端口掃描的主機(jī)加到tcp wrappers的/etc/hosts.deny文件中;
(3)本地主機(jī)會(huì)自動(dòng)把所有的信息流都重定向到一個(gè)不存在的主機(jī);
(4)本地主機(jī)用包過濾程序把所有的數(shù)據(jù)包(來自對(duì)其進(jìn)行端口掃描的主機(jī))都過濾掉。
簡(jiǎn)單地介紹一下配置和啟動(dòng)步驟:
(1)配置/usr/psionic/portsentry/portsentry.conf文件
/usr/psionic/portsentry/portsentry.conf是PortSentry的主要配置文件�?梢栽O(shè)置需要監(jiān)聽的端口、需要禁止和監(jiān)控的IP地址等。可以參看PortSentry的README.install文件以獲取更多的信息。
(2)配置portsentry.ignore文件
在portsentry.ignore文件中設(shè)置希望PortSentry忽略的主機(jī)。這個(gè)文件至少要包括localhost(127.0.0.1)和本地界面(lo)的IP。
(3)最好改變文件默認(rèn)的權(quán)限:
#chmod 600 /usr/psionic/portsentry/portsentry.conf
#chmod 600 /usr/psionic/portsentry/portsentry.ignore
(4)啟動(dòng)PortSentry
PortSentry程序可以配置在6個(gè)不同的模式下運(yùn)行,但每次啟動(dòng)時(shí)只能在一種模式下運(yùn)行。這些模式是:
◆ portsentry -tcp(基本的端口綁定TCP模式)
◆ portsentry -udp 基本的端口綁定UDP 模式)
◆ portsentry -stcp(秘密的TCP掃描檢測(cè))
◆ portsentry -atcp(高級(jí)TCP秘密掃描檢測(cè))
◆ portsentry -sudp(秘密的UDP掃描檢測(cè))
◆ portsentry -audp(高級(jí)的秘密UDP掃描檢測(cè))
推薦使用最后兩種模式檢測(cè)。建立啟動(dòng)腳本:
# vi /etc/init.d/portsentry
/usr/local/portsentry/portsentry sudp
/usr/local/portsentry/portsentry audp
# chmod a+x ./portsentry(建立啟動(dòng)腳本)
# cd /etc/rc.d/rc3.d/ ; ln -s ../init.d/portsentry S60portsentry(建立軟鏈接啟動(dòng))
2. chkrootkit
另一個(gè)有用的工具是chkrootkit。chkrootkit是設(shè)計(jì)用來檢查許多廣為人知的rootkit(一組包括常用木馬程序的套件,以方便 cracker攻入主機(jī)時(shí), 在受害主機(jī)上順利地編譯和安裝特洛伊木馬程序)。在chkrootkit的網(wǎng)站上會(huì)公布最新的rootkit列表。
配置chkrookit非常簡(jiǎn)單:先從http://www.chkrootkit.com下載源代碼,解開軟件包,在文件被解開的路徑里敲入make。完成后,chkrootkit就隨時(shí)侯命了。下面是在機(jī)器上chkrootkit的一個(gè)輸出的例子:
# ./chkrootkit
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not tested
Checking `inetdconf'... not found
Checking `identd'... not infected
Checking `init'... not infected
Checking `killall'... not infected
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not infected
Checking `mail'... not infected
Checking `mingetty'... not infected
Checking `netstat'... not infected
Checking `named'... not infected
Checking `passwd'... not infected
[...]
由上可以看到,系統(tǒng)中重要的一些命令并沒有被改變。chkrootkit是一個(gè)很不錯(cuò)的實(shí)用工具,它可以進(jìn)一步讓我們放心:機(jī)器目前是安全的。
3.secheck
個(gè)人推薦一個(gè)比較好的檢測(cè)工具secheck,這個(gè)軟件安裝簡(jiǎn)單,檢測(cè)范圍廣,記錄文件條目簡(jiǎn)明,資料詳細(xì)。它可以檢測(cè)開放端口列表、登錄用戶、磁盤空間情況;檢查UID和GID為0的非root用戶、弱口令用戶、正在運(yùn)行的系統(tǒng)進(jìn)程、su root的用戶;檢測(cè)有SUID和SGID標(biāo)識(shí)的命令,以及相關(guān)password、shadow、xinetd.conf、.rhosts文件的變化等。建議配合crontab做定時(shí)檢查,命令如下(每隔一小時(shí)做一次檢查):
00 * * * * /usr/local/etc/secheck/secheck
可以從http://twtelecom.dl.sourceforge.net/secheck/secheck-0.03.tgz下載感受一下。災(zāi)難恢復(fù)
盡管已經(jīng)采用了許多的安全措施來保護(hù)主機(jī)穩(wěn)定運(yùn)行,但是遇到一些意外情況,如停電、硬件故障或地震等仍有可能發(fā)生系統(tǒng)崩潰事件。要想在最短時(shí)間內(nèi)恢復(fù)系統(tǒng),必須事先做好備份工作。
在進(jìn)行備份之前,首先要選擇合適的備份策略,包括何時(shí)需要備份,以及出現(xiàn)故障時(shí)進(jìn)行恢復(fù)的方式。通常使用的備份方式有三種:1.完全備份
每隔一定時(shí)間就對(duì)系統(tǒng)進(jìn)行一次全面的備份,這樣在備份間隔期間出現(xiàn)數(shù)據(jù)丟失等問題,可以使用上一次的備份數(shù)據(jù)恢復(fù)到前次備份時(shí)的數(shù)據(jù)狀況。
2.增量備份
首先進(jìn)行一次完全備份,然后每隔一個(gè)較短時(shí)間進(jìn)行一次備份,但僅備份在這個(gè)期間更改的內(nèi)容。這樣一旦發(fā)生數(shù)據(jù)丟失,首先恢復(fù)到前一個(gè)完全備份,然后按日期逐個(gè)恢復(fù)每天的備份,就能恢復(fù)到前一天的情況。這種備份方法比較經(jīng)濟(jì)。
3.累計(jì)備份
這種備份方法與增量備份相似,首先每月進(jìn)行一次完全備份,然后備份從上次進(jìn)行完全備份后更改的全部數(shù)據(jù)文件。一旦發(fā)生數(shù)據(jù)丟失,使用一個(gè)完全備份和一個(gè)累計(jì)備份就可以恢復(fù)故障以前的狀態(tài)。累計(jì)備份只需兩次恢復(fù),因此它的恢復(fù)工作相對(duì)簡(jiǎn)單。
備份內(nèi)容 工作量 恢復(fù)步驟 恢復(fù)速度 優(yōu)缺點(diǎn)
完全備份 全部?jī)?nèi)容 大,慢 一次操作 很快 占用空間大,恢復(fù)快
增量備份 每次修改后的單個(gè)內(nèi)容 小,很快 多次操作 中 空間小,恢復(fù)麻煩
累計(jì)備份 每次修改后的所有內(nèi)容 中,快 二次操作 快 空間較小,恢復(fù)快
增量備份和累計(jì)備份都能以比較經(jīng)濟(jì)的方式對(duì)系統(tǒng)進(jìn)行備份。如果系統(tǒng)數(shù)據(jù)更新不是太頻繁的話,可以選用累計(jì)備份。如果系統(tǒng)數(shù)據(jù)更新太快,使每個(gè)備份周期后的幾次累計(jì)備份的數(shù)據(jù)量相當(dāng)大,這時(shí)候可以考慮增量備份或混用累計(jì)備份和增量備份的方式,或者縮短備份周期。下面是一個(gè)有效的備份方式供參考。
假設(shè)備份介質(zhì)為支持熱插拔的硬盤,掛接在/backup目錄下:
# tar zcvf /backup/bp_full.tar.gz /*(先做一個(gè)完全備份)
# find / -mtime -7 -print > /tmp/filelist(找出7天內(nèi)修改過的文件)
# tar -c -T /tmp/filelist -f /backup/bp_add.tar.gz(每隔7天做增量備份)
其它建議和技巧
1.用密碼保護(hù)單用戶模式。
# vi /etc/lilo.conf
restricted
password="I am admin"
2.修改/etc/inittab文件。
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#表示取消Alt+Ctrl+Delete重啟機(jī)器
3.刪除登錄信息(不顯示內(nèi)核版本,主機(jī)名,發(fā)行版本號(hào)及一些后臺(tái)進(jìn)程的版本號(hào)),這樣可以從一定程度上防止別有用心的探測(cè)。
# cat /dev/null > /etc/issue
# cat /dev/null > /etc/issue.net
# cat /dev/null > /etc/motd
4.設(shè)置密碼屬性,包括有效時(shí)間(-e)、失效時(shí)間、警告時(shí)間(-w)等。修改缺省的密碼長度。
# vi /etc/login.defs
PASS_MAX_DAYS 99999(設(shè)置密碼有效期限)
PASS_MIN_DAYS 0(設(shè)置修改密碼的最少時(shí)間段)
PASS_MIN_LEN 5(修改密碼設(shè)置的長度)
PASS_WARN_AGE 7(修改改變密碼的告警時(shí)間)
修改為:
PASS_MAX_DAYS 30 �。�30天后必須重新設(shè)置)
PASS_MIN_LEN 8 (密碼長度不得少于8位)
5.默認(rèn)賬號(hào)的管理。查看/etc/passwd 文件,刪除多余的賬號(hào),檢查有沒有除root外UID、GID為0的其它非法用戶。
6.如果正在接手的是一個(gè)新的服務(wù)器,那么對(duì)原先的配置必須有深刻的了解。要?jiǎng)h除一些舊的系統(tǒng)賬戶應(yīng)注意以下問題:
(1) 刪除用戶與其home目錄
# userdel -r good
(2) 刪除用戶未接收的郵件
# rm /var/spool/mail/good
(3) 刪除由此用戶在后臺(tái)執(zhí)行的程序
# ps -aux|grep "good"
# kill PID
(4) 刪除crontab 任務(wù)
# crontab -l good
# crontab -d good
7.應(yīng)該取消普通用戶的控制臺(tái)訪問權(quán)限,比如shutdown、reboot、halt等命令。
# rm -f /etc/security/console.apps/*
*表示要注銷的程序名,如halt、shutdown
8.修改/etc/profile文件中的“HISTFILESIZE”和“HISTSIZE”行,確定所有用戶的.bash_history文件中可以保存的舊命令條數(shù)。編輯profile文件(vi /etc/profile),把下面這行改為:
HISTFILESIZE=30
HISTSIZE=30
表示每個(gè)用戶的.bash_history文件只可以保存30條舊命令。
9.編輯.bash_logout文件。
# vi /etc/skel/.bash_logou(添加下面這行)
# rm -f $HOME/.bash_history
這樣,當(dāng)用戶每次注銷時(shí),.bash_history文件自動(dòng)被刪除。
關(guān)健詞:Linux
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解