SUSE由于其出色的性能和對(duì)安全較好的控制,吸引了很多級(jí)用戶,目前在國(guó)內(nèi)開(kāi)始有大量的關(guān)鍵應(yīng)用。但這并不代表SUSE在使用中就是安全的,SUSE里還有很多安全細(xì)節(jié)要注意。本文就SUSE中的這些安全細(xì)節(jié)進(jìn)行逐一介紹,為大家揭開(kāi)每一個(gè)需要注意的地方。
一、補(bǔ)丁、及其他
1、補(bǔ)丁
每個(gè)補(bǔ)丁的更新都意味著這是一個(gè)安全漏洞,或是有其他嚴(yán)重的功能問(wèn)題,但如果更新補(bǔ)丁則又可能導(dǎo)致系統(tǒng)的一些異常,甚至引起一些服務(wù)的癱瘓。所以對(duì)于補(bǔ)丁的更新要慎重處理。從實(shí)際的角度來(lái)說(shuō),有4種做法:
1)是在剛裝完系統(tǒng)之后立刻更新補(bǔ)丁,然后再上應(yīng)用。
2)是通過(guò)外圍防護(hù)手段來(lái)保護(hù),可以用、之類的手段。
3)是在測(cè)試機(jī)上更新補(bǔ)丁。不過(guò)值得注意的是,有些補(bǔ)丁帶來(lái)的問(wèn)題是隱性的,可能今天明天沒(méi)問(wèn)題,但后天出了問(wèn)題,所以,觀察的時(shí)間需要久一些。
4)、如果你的SUSE服務(wù)器比較多,也可以通過(guò)共享或者內(nèi)部的、HTTP服務(wù)來(lái)完成。但FTP、HTTP又會(huì)帶來(lái)另外的安全風(fēng)險(xiǎn)。
SUSE 的補(bǔ)丁升級(jí),需要去下載Novell的新RPM。RPM包的安裝會(huì)有先有后,不過(guò)多數(shù)情況下,RPM會(huì)根據(jù)其依賴關(guān)系來(lái)處理。另外,Novell也有一些在特殊情況下的提示,比如內(nèi)核更新、C運(yùn)行庫(kù)等。Novell公司提供了一個(gè)強(qiáng)大的工具YaST,不過(guò)遺憾的是,YaST自身也不安全,有在線升級(jí)不安全臨時(shí)文件建立漏洞。
加固方法:輸入yast,在software中選擇online update。
2、SSH
SUSE上默認(rèn)安裝了OpenSSH,OpenSSH是目前比較流行并且免費(fèi)的加密連接工具,但OpenSSH的低版本也存在不少安全漏洞,所以最好還是去http://www.openssh.org下載最新版本的。在升級(jí)到最新版本之后,SSH仍有很多需要安全加固工作要做。比如限制那些賬戶的登錄、更改默認(rèn)端口、指定可訪問(wèn)的網(wǎng)絡(luò)等等,限于篇幅本文對(duì)此不做更詳細(xì)的介紹。但至少有一點(diǎn),是你必須要做的:將協(xié)議版本修改為2。因?yàn)榘姹?的安全問(wèn)題實(shí)在太嚴(yán)重了,甚至可以截獲密碼。
加固方法:
vi /etc/ssh/ssh_config
修改protocol的值為2。
3、系統(tǒng)性能審計(jì)
對(duì)于運(yùn)維人員來(lái)說(shuō),需要經(jīng)常監(jiān)控系統(tǒng)的性能情況,SUSE提供的sysstat就是一個(gè)檢測(cè)系統(tǒng)狀態(tài)的工具,比如比如CPU利用率、I/O等。 sysstat默認(rèn)每10分鐘收集一次系統(tǒng)數(shù)據(jù),可以用sar命令查看。sysstat首先會(huì)建立一個(gè)正常的性能曲線,當(dāng)這個(gè)基線建立完畢以后,任何超出基線的活動(dòng)都會(huì)給出提示。例如密碼猜測(cè)、或者在業(yè)務(wù)高峰期以外的事件會(huì)導(dǎo)致CPU利用率過(guò)高,從而偏離正常的基線。注意sysstat收集的數(shù)據(jù)默認(rèn)是在系統(tǒng)上存放一周,一周之后會(huì)被cron任務(wù)自動(dòng)移除,可在/var/log/sa/目錄下來(lái)維護(hù)收集的數(shù)據(jù)。但是默認(rèn)安裝的服務(wù)器版本是不包括 sysstat包的,除非安裝的時(shí)候選擇了完全安裝。
加固方法:安裝sysstat,并使用sar命令。
4、防火墻
SuSEfirewall2是SUSE下面的包過(guò)濾防火墻,可以允許、拒絕數(shù)據(jù)的進(jìn)出。默認(rèn)是安裝并且激活的,而且默認(rèn)不允許任何服務(wù),要開(kāi)放服務(wù)就必須明確的啟用(比如上面提到的SSH)。
加固方法:
在YAST里,Center--#Security and Users--#Firewall進(jìn)行防火墻策略調(diào)整。
更細(xì)粒度的策略配置,可以在YAST Center--#System#--/etc/sysconfig editor-Network/Firewall/SuSEfirewall2,也可直接編輯/etc/sysconfig/SuSEfirewall2文件。
5、系統(tǒng)安全定期檢查腳本seccheck
seccheck是一個(gè)系統(tǒng)安全檢查腳本,可以每天、每周、每月的定期生成報(bào)告,并且郵件發(fā)送。不過(guò)他在定期運(yùn)行的時(shí)候比較占用資源,所以要選擇在非業(yè)務(wù)高峰期來(lái)做。
加固方法:YAST Center-System-#/etc/sysconfig-System/Security/Seccheck selection
6、SUSE的安全應(yīng)用框架AppArmor
AppArmor和SuSEfirewall2相比,他的特點(diǎn)在于對(duì)應(yīng)用級(jí)的保護(hù),可以管理應(yīng)用的文件和目錄訪問(wèn)等更細(xì)顆粒的操作,是一個(gè)白名單的機(jī)制,即指定哪些行為才是允許的,其他的拒絕,這樣可以更好的隱藏內(nèi)部系統(tǒng)。比如你的系統(tǒng)存在一個(gè)漏洞,但由于對(duì)其的操作沒(méi)有受到白名單允許,所以操作會(huì)被拒絕。
加固方法:YAST Center-Novell AppArmor可以調(diào)整細(xì)節(jié)策略、查看報(bào)告。如果不熟悉的話,AppArmor還內(nèi)設(shè)了一個(gè)向?qū)Чδ堋?/P>
二、最小化xinetd
1、關(guān)閉標(biāo)準(zhǔn)服務(wù)
SUSE使用xinetd,他比inetd更優(yōu)秀也更方便使用。SUSE默認(rèn)情況下是關(guān)閉所有服務(wù)的,在啟用之后,就可以配置xinetd的服務(wù)了。安全的做法也應(yīng)該如此,先關(guān)閉所有服務(wù),然后只啟用必須的服務(wù)。
加固方法:運(yùn)行chkconfig查看所有服務(wù)的開(kāi)啟狀態(tài),對(duì)不需要的服務(wù)進(jìn)行關(guān)閉。
2、可信網(wǎng)絡(luò)接入
對(duì)的訪問(wèn)應(yīng)該受到控制,所以需要用SuSEfirewall2或者其他的措施來(lái)控制,只允許那些可信的網(wǎng)絡(luò)接入。
加固方法:
vi /etc/sysconfig/SuSEfirewall2中的第10項(xiàng)配置。也可以在yast Center#System#/etc/sysconfig editor進(jìn)行配置。
3、telnet
如果不是有特別的理由,不要使用telnet,telnet使用的是不加密的網(wǎng)絡(luò)協(xié)議,這就意味著從你的賬號(hào)到你傳輸?shù)臄?shù)據(jù),都可以被人竊聽(tīng),嚴(yán)重的可以通過(guò)會(huì)話劫持控制你的系統(tǒng)。所以這里還是強(qiáng)烈建議使用SSH,雖然SSH也不是那么的安全。
加固方法:
打開(kāi)的命令是chkconfig telnet on。
關(guān)閉的命令是chkconfig telnet off。
4、FTP
同樣,在沒(méi)有充分理由的情況下,不要使用,尤其是匿名FTP。和telnet一樣,F(xiàn)TP也不加密,也可以被人竊聽(tīng)或者會(huì)話劫持。SSH則提供了SCP和SFTP,可以取代FTP。要注意的是,有時(shí)候FTP可能是因?yàn)槟承?yīng)用綁定的,比如我多次見(jiàn)到的WEB上傳通道,所以你必須要用這種匿名 FTP。如果必須要用FTP,那還是要做一些控制,要注意的一點(diǎn)是,F(xiàn)TP的目錄應(yīng)該受到控制,最好能有自己的分區(qū)。在SUSE上,vsftpd默認(rèn)是不安裝的。
加固方法:
打開(kāi)的命令是chkconfig vsftpd。
關(guān)閉命令是chkconfig vsftpd off。
5、rlogin/rsh/rcp
所有r系列的命令都應(yīng)該被關(guān)閉。他們除了可以被竊聽(tīng)之外,在驗(yàn)證機(jī)制上也存在問(wèn)題,并且還有其他的安全漏洞,比如緩沖區(qū)溢出、任意命令執(zhí)行等。建議還是用SSH來(lái)取代。
加固方法:
打開(kāi)命令是
chkconfig rexec on
chkconfig rlogin on
chkconfig rsh on
關(guān)閉他們:
chkconfig rexec off
chkconfig rlogin off
chkconfig rsh off
6、TFTP
TFTP一般用在無(wú)盤工作站, X-terminals等情況下。或者其他網(wǎng)絡(luò)設(shè)備的配置數(shù)據(jù)可以利用它復(fù)制,實(shí)現(xiàn)備份功能。當(dāng)然,在這里,沒(méi)有特殊原因,我們?nèi)匀唤ㄗh你禁用。TFTP在SUSE上也不是默認(rèn)安裝的。
關(guān)閉命令chkconfig tftp off
7、IMAP
只有郵件服務(wù)器才會(huì)用到IMAP,一些郵件客戶端(比如Eudora、Netscape Mail和Kmail)需要使用IMAP來(lái)檢索遠(yuǎn)程郵件。
加固方法:關(guān)閉服務(wù)的命令
chkconfig cyrus off或chkconfig imap off。
8、POP
這是一個(gè)收郵件的服務(wù),作為服務(wù)器有收取郵件的需要嗎?如果沒(méi)有,同樣也應(yīng)關(guān)閉。
加固方法:chkconfig qpopper off或chkconfig cyrus off。
七、系統(tǒng)的管理、授權(quán)、認(rèn)證
1、在PAM配置文件里移除.rhosts支持
.rhosts定義了哪些計(jì)算機(jī)和用戶可以不用提供口令就在本地計(jì)算機(jī)上執(zhí)行遠(yuǎn)程命令,很容易被攻擊者利用。使用.rhosts是對(duì)用戶訪問(wèn)控制規(guī)則的破壞,盡量關(guān)閉。如果有特殊原因,必須要使用,那就需要一些預(yù)防措施。永遠(yuǎn)不要在.rhosts里使用+通配符。.rhosts必須指定特定的可信任用戶名,比如trustedhost DB1,而不是trustedhost。這種在配置HA的時(shí)候常見(jiàn)。要避免信任關(guān)系之外的主機(jī),而且或者其他安全設(shè)備應(yīng)該阻止外部的 rlogin/rsh/rcp訪問(wèn)。最后,還要確保.rhost文件只有所有者可讀。例如文件權(quán)限600。
2、/etc/ftpusers
/etc/ftpusers的列表里定義了哪些用戶不允許使用系統(tǒng)的,一般來(lái)說(shuō),應(yīng)該只有普通用戶可以使用FTP,而不是system這種類型的賬戶。當(dāng)然,root用戶永遠(yuǎn)都不應(yīng)該使用FTP方式直接傳輸文件。
SUSE提供了一個(gè)netcfg的包,預(yù)填充了不該使用FTP的賬戶。
3、 防止X Server在tcp6000上監(jiān)聽(tīng)
X Server在TCP6000上監(jiān)聽(tīng),接受來(lái)自其他客戶端的請(qǐng)求。但是,X Server使用了一個(gè)相對(duì)不安全的身份驗(yàn)證協(xié)議,攻擊者可以未授權(quán)訪問(wèn)到本地X Server上。使用"-nolisten tcp" 方式可以取消X Server在TCP6000上默認(rèn)監(jiān)聽(tīng)。
4、限制用戶使用at/cron
cron.allow、 at.allow定義了誰(shuí)可以使用crontab、at命令在預(yù)定的時(shí)間運(yùn)行作業(yè)。在很多系統(tǒng)上,只有系統(tǒng)管理員有這種能力。即使某個(gè)用戶不在 cron.allow里面,用戶仍然可以運(yùn)行cron作業(yè)。cron.allow控制的是:crontab命令調(diào)度的權(quán)限、修改cron作業(yè)的權(quán)限。注意:不要修改/etc/at.deny和/etc/cron.deny文件,除非你的確了解他們,這兩個(gè)文件里都有合理的默認(rèn)內(nèi)容。如果對(duì)at和cron 必須加以控制,創(chuàng)建/etc/at.allow和/etc/cron.allow文件,增加適當(dāng)?shù)挠脩簟?/P>
5、限制crontab文件的權(quán)限
系統(tǒng)的crontab文件只能由cron守護(hù)進(jìn)程(運(yùn)行超級(jí)用戶權(quán)限)和crontab命令(set-UID為root)訪問(wèn)。允許未授權(quán)的用戶讀取修改crontab,可以讓用戶獲得權(quán)限提升。
6、配置xinetd的訪問(wèn)控制
可使用簡(jiǎn)單的基于IP的訪問(wèn)控制,限制對(duì)xinted的非法連接?,F(xiàn)在比較流行的工具是PortSentry,可以用于監(jiān)視那些試圖訪問(wèn)未使用端口的行為。然后再使用系統(tǒng)防火墻SuSEfirewall2來(lái)控制。
7、限制root登錄到系統(tǒng)控制臺(tái)
root直接登錄到系統(tǒng)控制臺(tái)是不允許的,除非特別情況。在其他時(shí)候,管理員應(yīng)該通過(guò)無(wú)特權(quán)的賬戶并使用授權(quán)機(jī)制,比如su、sudo來(lái)獲取額外的特權(quán)。這些機(jī)制至少提供了審計(jì)的線索。/etc/securtty讓你可以規(guī)定root可從哪個(gè)tty登錄。 /etc/securtty列出來(lái)的都是可以登錄的,注釋、不存在的都是不允許root登錄的。
8、設(shè)置LILO/GRUB密碼
大多數(shù)的系統(tǒng),默認(rèn)在引導(dǎo)時(shí),有裝載提示,這讓攻擊者破壞正常的引導(dǎo)變得很容易。對(duì)他設(shè)置密碼,這樣在試圖修改LILO或GRUB的時(shí)候,就需要驗(yàn)證,當(dāng)然,密碼要夠強(qiáng)壯。
方法
A、如果你有/etc/lilo.conf 文件
在/etc/lilo.conf前面添加:
password=
以root執(zhí)行命令:
chown root:root /etc/lilo.conf
chmod 600 /etc/lilo.conf
B、如果是/etc/grub.conf文件
在/etc/grub.conf取消password 的注釋。
以root執(zhí)行命令:
chown root:root /etc/grub.conf
chmod 600 /etc/grub.conf
9、對(duì)單用戶模式驗(yàn)證
在一些Linux上你可以在LILO模式下鍵入linux single進(jìn)入單用戶模式,或者在GRUB的引導(dǎo)編輯菜單。這就帶來(lái)風(fēng)險(xiǎn),進(jìn)入系統(tǒng)的認(rèn)證應(yīng)該始終需要root級(jí)別的訪問(wèn),防止攻擊者物理訪問(wèn)系統(tǒng)。 SUSE默認(rèn)禁止這種進(jìn)入方式,但是作為檢查來(lái)說(shuō),還是需要檢查一下。如果被改動(dòng)的話,要搞清楚原因并恢復(fù)。8和9這兩個(gè)項(xiàng)目都為了解決物理/啟動(dòng)的安全問(wèn)題,也可以考慮設(shè)置只從主硬盤啟動(dòng),或者設(shè)置BIOS密碼。
10、限制客戶端請(qǐng)求特權(quán)端口
設(shè)置:NFS忽略來(lái)自客戶端的低于1024的源端口訪問(wèn),這不會(huì)妨礙到正常的NFS操作,但可以阻止一些使用工具軟件攻擊的人。其配置文件在/etc/exports里。
11、syslog的消息接收
你的服務(wù)器是日志服務(wù)器嗎?需要從網(wǎng)絡(luò)上、其他主機(jī)上接收日志嗎?如果是肯定的,啟用日志系統(tǒng)的遠(yuǎn)程消息接受。默認(rèn)情況下的系統(tǒng)日志的守護(hù)進(jìn)程是 syslogd,不在udp514上監(jiān)聽(tīng)來(lái)自其他系統(tǒng)的日志消息(Solaris相反,默認(rèn)是接受的。)成立一個(gè)獨(dú)立的日志服務(wù)器來(lái)記錄一個(gè)或多個(gè)日志,是比較推薦的安全做法。但是,如果你不是日志服務(wù)器的話,就不應(yīng)該打開(kāi)udp514的監(jiān)聽(tīng),因?yàn)檫@些信息的傳遞沒(méi)有任何認(rèn)證機(jī)制。攻擊者也可以利用此端口發(fā)起攻擊,或者不停的發(fā)送日志消息填滿你的日志系統(tǒng),這樣以后的攻擊就不會(huì)被記錄到了。
在syslog-ng.conf.in里,把下面這行加上#注釋掉
#udp(ip("0.0.0.0") port(514))
九、殺毒
在有些系統(tǒng)上,比如郵件、文件服務(wù)器,主要是給windows用戶使用的,應(yīng)該有來(lái)保護(hù)。平臺(tái)下的殺毒軟件有:
Sophos http://www.sophos.com/ 商業(yè)軟件
NAI Virus Scan 商業(yè)軟件
McAfee http://www.mcafee.com/ 商業(yè)軟件
ClamAV http://www.clamav.net/ 開(kāi)源軟件
f-prot Antivirus 商業(yè)軟件
f-prot Antivirus http://www.f-prot.com 商業(yè)軟件
Trend Micro 商業(yè)軟件
Computer Associates InoculateIT http://www.cai.com/ 商業(yè)軟件
十、其他
1、對(duì)于危險(xiǎn)文件創(chuàng)建符號(hào)鏈接
/root/.rhosts, /root/.shosts, /etc/hosts.equiv等文件的訪問(wèn)控制很薄弱,我們?cè)诘谄哒吕镆呀?jīng)討論過(guò)了,攻擊者會(huì)經(jīng)常針對(duì)這些漏洞進(jìn)行攻擊,把他們鏈接到/dev/null,意味著任何數(shù)據(jù)都會(huì)被簡(jiǎn)單的拋棄。
可以使用這個(gè)腳本:
for FILE in /root/.rhosts /root/.shosts /etc/hosts.equiv \
/etc/shosts.equiv; do
rm -f $FILE
ln -s /dev/null $FILE
done
2、打開(kāi)TCP SYN Cookie的保護(hù)
SYN攻擊是一種拒絕服務(wù)攻擊,目的在于消耗系統(tǒng)資源。這個(gè)攻擊是由于TCP連接握手協(xié)議的漏洞,對(duì)方發(fā)送SYN信息,然后不再回應(yīng)。這樣的攻擊就使得系統(tǒng)與數(shù)百或者上千的連接保持半開(kāi)狀態(tài)。是一個(gè)非常簡(jiǎn)單的攻擊方法。
3、LILO/GRUB安全
給LILO和GRUB加上一個(gè)i的屬性,這樣他既不能刪除也不能修改,可以有效地防止配置文件發(fā)生任何變化(不管是意外或者其他原因)。如果想要修改,必須用chattr -i命令。
chattr +i /etc/lilo.conf
chattr +i /boot/grub/menu.lst
4、配置sudo
sudo的是一個(gè)文件包,它允許管理員授權(quán)給用戶做一些特權(quán),這些特權(quán)超出了用戶的權(quán)限,比如重啟web服務(wù)。我們舉個(gè)例子,因?yàn)槟愕膚eb服務(wù)有 bug或者不斷的出現(xiàn)故障,那你可能需要不斷地修改web的配置文件來(lái)讓找出問(wèn)題原因。這時(shí)候如果你要用su - root的話就會(huì)非常繁瑣,因?yàn)槟阒皇窃诟耐昱渲梦募?,重啟一下web服務(wù)而已。這時(shí)候sudo就派上用場(chǎng)了,它允許管理員授權(quán)給該用戶權(quán)利來(lái)重啟 web服務(wù)。sudo安裝之后,使用visudo來(lái)配置而不是vi配置文件,因?yàn)関isudo有錯(cuò)誤檢查功能。
5、刪除所有的編譯器和匯編程序
在安全上,C編譯器會(huì)構(gòu)成對(duì)系統(tǒng)可信的威脅。編譯器應(yīng)該安裝在開(kāi)發(fā)系統(tǒng)的機(jī)器上,而不是一個(gè)生產(chǎn)應(yīng)用系統(tǒng)上。這里只是提醒注意檢查。檢查這些:gcc、gcc3、gcc3-c++、 gcc3-g77、gcc3-java、gcc3-objc、gcc-c++、gcc-chill、 gcc-g77、gcc-java、gcc-objc、bin86、dev86、nasm。