本文首先介紹Solaris的基本安全設(shè)置。
1.物理安全
首先要進(jìn)行Solaris的OpenBoot安全設(shè)置。
通過OpenBoot,幾乎可以從任何連接SCSI設(shè)備上引導(dǎo)。也可以修改OpenBoot變量,而這些影響到整個Unix的引導(dǎo)。
OpenBoot的三種安全級別如下:
(1)None:可以執(zhí)行任何命令。
(2)Command:除boot和go之外的命令執(zhí)行需要口令,可以從默認(rèn)設(shè)備上引導(dǎo)。
(3)Full:除go之外的命令執(zhí)行需要口令。
注意在full模式下,如果遺忘了OpenBoot口令,只有用root登錄后用eeprom才能修改口令。
如果root口令也遺忘了,只能更換EPROM了。
推薦至少將OpenBoot設(shè)為Command模式。在嚴(yán)格限制安全條件時規(guī)定Full模式,但在這時需要牢記OpenBoot口令,否則會造成很大的麻煩。
2.文件系統(tǒng)安全
(1)文件和目錄的權(quán)限。
UNIX系統(tǒng)中的文件權(quán)限,是指對文件(或者目錄)的訪問權(quán)限,包括對文件和目錄的讀、寫和執(zhí)行。我們要注意這三種權(quán)限在文件與目錄上的不同作用。
請檢查自己的Solads服務(wù)器的下列文件權(quán)限是否正確:
●/etc下的所有文件:/etc中的文件不需要可寫,應(yīng)設(shè)為只讀,chmodg-w/etc/*。
●/etc/inetd.conf:所有者為root,訪問權(quán)限是可讀寫。其他用戶無任何權(quán)限。
●/etc/services:確保文件所有者是root,可讀寫。其他人可讀。
對于root用戶新創(chuàng)建的文件與目錄,注意在沒有必要的情況下,一定要使任何一個用戶沒有訪問的權(quán)限。超級用戶的權(quán)限最好設(shè)置為077。如果某些文件或者目錄需要被別人訪問,生成后再修改權(quán)限就行了。麻煩一點(diǎn)總比被攻擊好。
(2)SetUID與SetGID權(quán)限。
在Solaris中,文件除了讀、寫和執(zhí)行權(quán)限外,還有一些特殊權(quán)限,SetUID和SetGID是其中的一類。它與Solaris系統(tǒng)的安全關(guān)系緊密。SetUID是指設(shè)置程序的有效的執(zhí)行用戶身份(UID)為該文件的主人,而不是調(diào)用該程序的進(jìn)程的uid。SetGID與之類似。SetUID和 SetGID存在于主人和屬組的執(zhí)行權(quán)限的位置上。
這種權(quán)限怎么用?舉個例子來說,假如某一命令(程序)的主人是root用戶,并且該文件有SetUID屬性,但是該文件的讀、寫、執(zhí)行權(quán)限的屬性表明普通用戶userl可以執(zhí)行該命令,那么就表示:當(dāng)userl執(zhí)行該命令時,他具有root的執(zhí)行身份,并獲得相應(yīng)的權(quán)限。一旦該命令執(zhí)行完成,root身份也隨之消失。
有些文件是不能有SetUID權(quán)限的,比如cat、mole、vi、tail等可以起顯示和編輯作用的命令。如果有的話會產(chǎn)生什么效果?就會讓普通用戶看到他本不應(yīng)該看到的文件,如/etc/shadow,這里存放著所有用戶加密后的口令,一旦黑客得到root的口令加密串,然后利用一臺性能好的計(jì)算機(jī)可以在幾天時間內(nèi)就把root口令算出來,從而非法提升權(quán)限。
如果/Bin/ksh這樣的外殼程序有SetUID權(quán)限就更不得了,普通用戶執(zhí)行后就馬上成為超級用戶了。
(3)查找特定權(quán)限的文件。
在黑客攻擊了系統(tǒng)之后,往往會修改一些文件與目錄的屬性,來達(dá)到留后門和其他的目的,我們可以通過下列的手段來找出這些文件,消除隱患。
在當(dāng)前目錄及其子目錄查找所有的SetUID文件:
#find/ -perm -4000 -prin
在當(dāng)前目錄及其子目錄查找SetGID的文件:
#find/ -perm -2000 -print
在當(dāng)前目錄及其子目錄查找所有用戶都可寫的文件:
#find/ -perm -O+W -print
查找屬于某個用戶的文件,這在確定一個賬戶被非法使用后是很有用的:
#find/ -user xyd -print
使用這個命令可以列出系統(tǒng)中所有屬主是用戶xyd的文件。
(4)賬號與密碼。
黑客要非法地訪問一臺計(jì)算機(jī),最簡單的辦法是盜取一個合法的賬號,這樣就可以令人不易察覺地使用系統(tǒng)。在Solaris系統(tǒng)中默認(rèn)有不少賬號安裝,也會建立新的個人用戶賬號,系統(tǒng)管理員應(yīng)對所有的賬號進(jìn)行安全保護(hù),而不能只防護(hù)那些重要的賬號,如root。
無用和長期不用的賬號對系統(tǒng)來說是一種負(fù)擔(dān),也容易為黑客提供入侵的途徑。為了整體的安全,應(yīng)關(guān)閉這些賬號,直接在/etc/passwd和/etc/group中把相應(yīng)的行注釋掉就可以了。在默認(rèn)設(shè)置下,系統(tǒng)中有這些用戶與組需要關(guān)閉:
需要關(guān)閉的用戶:
daemon、bin、sys、adm、lp、uucp、nuucp、listen、nobody、nobody4、noaccess。
需要關(guān)閉的組:
sysadmin(14)、sys(3)。
在Solaris中可以使用/etc/default/passwd文件來保護(hù)賬號的安全,下面給出了一些推薦值:
●MINWEEKS=1 #最短改變口令時間為1周之后;
●MAXWEEKS=4 #最長改變口令時間為4周之內(nèi);
●WARNWEEKS=3 #3周的時間給出密碼過時警告:
●PASSLENGTH=6 #最短口令長度為6。
密碼的設(shè)置應(yīng)按照一定的規(guī)則。在Solaris系統(tǒng)中,為了強(qiáng)制用戶使用合格的口令,用戶修改口令時默認(rèn)要求必須最少有6個字符,而且至少包括一個數(shù)字或者特殊字符。不過要注意在以root的身份進(jìn)行密碼修改時是不受這個限制的。
下面是在進(jìn)行密碼設(shè)置時推薦的一些注意事項(xiàng):
●密碼至少應(yīng)有6個字符(在/etc/default/passwd中定義);
●密碼至少應(yīng)該包含2個英文字母及一個數(shù)字或特殊符號;
●密碼應(yīng)與用戶名完全不同,且不能使用原有名稱的變化(如反序、位移等,因?yàn)橄到y(tǒng)在做比較時忽略大小寫);
●新舊密碼至少有3個字符不相同(因?yàn)橄到y(tǒng)在做比較時忽略大小寫)。
(5)用passwd命令設(shè)置賬號。
利用passwd命令,除了可以修改口令外,還可以進(jìn)行一些口令方面的參數(shù)設(shè)置:
●-s:列出口令的參數(shù);
●-1:root鎖定一個用戶;
●-d:root刪除一個用戶的口令;
●-n:root設(shè)置一個用戶的最短修改密碼時間;
●-x:root設(shè)置一個用戶的最長修改密碼時間;
●-w:root設(shè)置一個用戶的修改密碼警告時間。
(6)設(shè)置賬號組信息。
在Solaris中,用戶在/etc,passwd文件中規(guī)定的組是主組,他還可以同時屬于其他組。這個屬性在/etc/group中可以查到。下面是有關(guān)用戶組的一些命令:
●newgrp:切換成新的用戶組;
●groups:顯示所屬的用戶組;
●id:顯示用戶的身份,包括UID、GID、用戶組等信息。
(7)su命令。
切換用戶的命令su可以使一個用戶切換為另一個用戶而不必退出。在使用時,系統(tǒng)會提示輸入將要切換為的用戶密碼。按“Ctrl”+D或exit返回。
可以使用/etc/default/su文件管理su的參數(shù):
●SULOG=/var/adm/sulog#10g文件記錄:
●PATH=/usr/bin:#新用戶默認(rèn)PATH:
●SUPATH=/usr/sbin:/usr/bin;
●SYSLOG=YES#記錄log。
如果可能的話,使用sudo代替su命令,這樣可以減少特權(quán)命令被濫用的情況。
3.root賬號的安全
root賬號是黑客攻擊的最終目標(biāo),有了root賬號,黑客可以不受限制地訪問系統(tǒng)中的所有文件和資源,也可以成為任何一個用戶。
在/etc/default/login中添加Console=/dev/console即可限制root只能在控制臺上直接登錄。
4.cron安全
系統(tǒng)中,在很多時候都需要不斷重復(fù)一些命令,例如某公司每周一自動向員工報告上一周公司的活動情況,這時就需要使用cron命令來完成任務(wù)。cron常有的安全問題有:
(1)沒有充分屏蔽cron運(yùn)行的程序。root用戶的cron中運(yùn)行的腳本和程序不應(yīng)被其他用戶讀到,更不能被修改。
(2)cron的PATH不安全。存在不安全和不確定的PATH。在/etc/default/cron中和程序本身的PATH都不應(yīng)該有不安全的PATH,這會導(dǎo)致黑客在這些PATH中添加自己的程序,與cron所要執(zhí)行的命令名稱相同;同樣地,如果cron的PATH中存在著”~”、“.”等不確定的PATH,也可以為類似的攻擊手段留下可能。要檢查crontab,不使其中留下這樣的路徑。
(3)用戶的crontab放在其他用戶可以看到的目錄。這會使其他用戶查看并分析這些 cron的條目,進(jìn)行對相應(yīng)漏洞的攻擊。
(4)cron.a(chǎn)llow與cron.deny。在進(jìn)行cron設(shè)置的時候,應(yīng)該使用root權(quán)限對/etc/cr- on.d/cron.a(chǎn)llow/etc/cron.d/cron.deny進(jìn)行限制,允許和禁止相應(yīng)的用戶使用crontab命令。
5.文件與進(jìn)程檢查工具fuser與lsof
fuser是系統(tǒng)中自帶的命令,它可以查找出哪個進(jìn)程在使用文件。它可以用來在刪除或者重命名文件之前檢查是否有某個進(jìn)程打開了這個文件,并且在不能卸載一個文件系統(tǒng)的時候,作為查找故障的工具查看是哪些進(jìn)程打開了這個文件。
fuser的模式:
進(jìn)程的當(dāng)前工作目錄;
進(jìn)程的根目錄(裝入點(diǎn)目錄);
打開的普通文件;
內(nèi)存映射文件;
程序的代碼;
程序的控制終端;
lsof列出系統(tǒng)中所有打開的文件及其被哪些進(jìn)程所打開,由此查出被可疑進(jìn)程打開的文件。
lsof可以列出UNIX系統(tǒng)中的所有打開的文件,并且顯示它們是被哪些進(jìn)程打開的。這個工具可以用來幫助確定黑客或者他們的進(jìn)程是否在讀寫他們本不應(yīng)該訪問的文件。使用“l(fā)sof”命令管理員可以查看進(jìn)程、進(jìn)程UID(包括sniffer、IRC、login shell)、網(wǎng)絡(luò)連接和所有當(dāng)前被打開的文件(如顯示sniffer的log文件、工作目錄等信息)。
6.安全檢查工具COPS
COPS是一個安全性的軟件包,它可以在系統(tǒng)上檢查一些已知的缺陷,并且向系統(tǒng)管理員報告這些缺陷。COPS包含如下這樣一些在系統(tǒng)中檢查已知缺陷的工具包:
●dir.chk、file.chk:掃描所有用戶可寫的系統(tǒng)文件和目錄;
●dev.chk:掃描系統(tǒng)設(shè)備目錄;
●home.chk、user.chk:檢查所有用戶可寫的用戶主目錄;
●root.chk:掃描所有用戶可寫的root的登錄文件、路徑、umask和hosts.equiv;
●suid.chk:掃描系統(tǒng)中的新的SetUID程序;
在使用COPS時,最好是定期運(yùn)行它。至少一周運(yùn)行一次,在重要的服務(wù)器和經(jīng)常改變配置的服務(wù)器上最好每天都運(yùn)行它,甚至每天運(yùn)行兩次。COPS可以檢查到兩次運(yùn)行之間文件和目錄權(quán)限發(fā)生的變化。了解到這些變化以后,系統(tǒng)管理員就可以有的放矢地找出漏洞。
7.安全檢查工具,Tiger
類似于COPS,Tiger也是一個系統(tǒng)安全性的檢查工具。它可以檢查系統(tǒng)內(nèi)一些已經(jīng)存在的漏洞并向系統(tǒng)管理員報告。它使用時比較簡單,只要解壓縮包后運(yùn)行就可以了。
下面介紹Solaris的網(wǎng)絡(luò)安全設(shè)置。
UNIX系統(tǒng)的網(wǎng)絡(luò)服務(wù)和網(wǎng)絡(luò)接口是用來與其他計(jì)算機(jī)進(jìn)行通信,訪問網(wǎng)絡(luò)的途徑。如果對網(wǎng)絡(luò)服務(wù)與接口的配置不當(dāng),會造成系統(tǒng)的安全性受到損害。
UNIX系統(tǒng)在安裝時會激活所有的網(wǎng)絡(luò)服務(wù)(如Telnet、FTP、rlogin等),并處在隨時可以運(yùn)行的狀態(tài)。每一個開放的網(wǎng)絡(luò)服務(wù)就像一扇開著的門,為黑客提供了攻擊的可能。在進(jìn)行網(wǎng)絡(luò)安全設(shè)置的時候,有一個原則就是禁用不需要的服務(wù)。在系統(tǒng)不需要Telnet時(可以用ssh來進(jìn)行遠(yuǎn)程管理)禁止它,如果不需要其他rlogin或rsh等服務(wù),也禁止它。
8.停止/etc中不必要的服務(wù)
系統(tǒng)在啟動時會在/etc/rc2.d和/etc/rc3.d目錄下尋找以“S”開頭的文件并執(zhí)行,在關(guān)閉時會查找“K”開頭的文件關(guān)閉相應(yīng)進(jìn)程。如果需要停止某些程序在啟動時運(yùn)行,只要把開頭的“S”改為其他字母即可,如“s”,也要把相應(yīng)的“K”改為“k”。下面推薦關(guān)閉的一些程序和它們所對應(yīng)的啟動文件。
(1)使電源管理無效:/etc/rc2.d/S85power。
(2)停止DMI Service./etc/rc2.d/K77dmi:/etc/rc3.d/S77dmi;
(3)使Asynchronous PPP無效:/etc/rc2.d/S47asppp。
(4)停止BD Stream配置:/etc/rc2.d/S89bdconfig。
(5)使UUCP臨時文件清除無效:/etc/rc2.d/S70uucp。
(6)停止AutoFS/MountD:/etc/rc2.d/S74autofs。
(7)停止系統(tǒng)重配置:/etc/rc2.d/S30sysid。Net及/etc/rc2.d/S71sysid。Sys。
8)停止JumpStart/AutInstaU。/etc/rc2.d/S72autoinstall。
(9)使Cache File System無效:/etc/rc2.d/S93cacheos。Finish及/etc/rc2.d/S73cachefs。 Daemon。
(10)使Preserve Service無效:/etc/rc2.d/S80PRESERVE。
(11)使Network Time Protocol無效:/etc/rc2.d/S74xntpd。
(12)使CDE程序無效(除非要使用圖形控制臺):/etc/rc2.d/S99dtlogin。(恢復(fù)時使用命令“/usr/dt/bin/dtconfig-e”)
(13)停止名字服務(wù)緩沖守護(hù)程序服務(wù):/etc/rc2.d/S76nscd。
(14)使打印服務(wù)無效(除非有本地打印機(jī)):/etc/rc2.d/S80lp及/etc/rc2.d/S80spc。
(15)使SNMP無效(不使用網(wǎng)管時):/etc/rc2.d/K76snmpdx及/etc/rc3.d/S76snmodx。
(16)停止NFS服務(wù):/etc/rc2.d/S73nfs,Client:/etc/rc2.d/K60nfs,server;/etc/rc3.d/S15nfs, server。
(17)使Sendmail守護(hù)程序無效(非E-mail服務(wù)器):/etc/rc2.d/S88sendmail。
(18)停止其他不必要的服務(wù):在root的crontab中加入,用以處理系統(tǒng)郵件隊(duì)列:
0****/usr/lib/sendmail-q
只保留/etc/inetd.conf中需要服務(wù),只須把不需要的服務(wù)前加“#”號注釋即可。
9.網(wǎng)絡(luò)監(jiān)聽與snoop
網(wǎng)絡(luò)監(jiān)聽是黑客們常用的一種方法。當(dāng)成功地登錄進(jìn)一臺網(wǎng)絡(luò)上的主機(jī),并取得了這臺主機(jī)的超級用戶的權(quán)限之后,往往要擴(kuò)大戰(zhàn)果,嘗試登錄或者奪取網(wǎng)絡(luò)中其他主機(jī)的控制權(quán)。而網(wǎng)絡(luò)監(jiān)聽則是一種最簡單,而且最有效的方法,它常常能輕易地獲得用其他方法很難獲得的信息。
在網(wǎng)絡(luò)上,監(jiān)聽效果最好的地方是在網(wǎng)關(guān)、路由器、防火墻一類的設(shè)備處,通常由網(wǎng)管員來操作。使用最方便的是在一個以太網(wǎng)中的任何一臺上網(wǎng)的主機(jī)上,這是大多數(shù)黑客的做法。snoop是Solaris中特有的程序,可以實(shí)現(xiàn)監(jiān)聽的功能。它是一個很有用的診斷工具,只有root才能使用它。下面是snoop使用時的一些參數(shù):
*snoop直接監(jiān)聽所有的數(shù)據(jù)包;
#snoop host bjserver捕獲所有與bjserver計(jì)算機(jī)有關(guān)的數(shù)據(jù)包;
#snoop-v host bjserver port 23捕獲所有與bjserver有關(guān)的Telnet包。
r*命令存在一些安全問題。我們常說的r水命令包括rlogin,rsh,rcp和rdist,以r開頭表示遠(yuǎn)程。這幾個命令都必須在遠(yuǎn)程系統(tǒng)上運(yùn)行shell。r命令是為了方便運(yùn)行和使用遠(yuǎn)程系統(tǒng)而創(chuàng)建的。通過使用rhost文件,用戶就可以在遠(yuǎn)程系統(tǒng)上登錄或者運(yùn)行命令,而不用提供口令。
r*命令的弱點(diǎn)如下:
(1)使用.rhosts文件易造成對不合適計(jì)算機(jī)的錯誤信任,導(dǎo)致被黑客利用。
(2)在沒有.rhosts文件的情況下,用戶通過r*命令來訪問遠(yuǎn)程系統(tǒng)時會需要輸入口令,整個過程沒有加密,在網(wǎng)絡(luò)上會被監(jiān)聽而泄露密碼。
3)所有的r*命令的全部會話過程都是加密的,同樣面臨被監(jiān)聽的問題。
強(qiáng)烈建議不使用r*命令,它們的功能可以由ssh等程序替代。
10.Telnet命令的安全問題
Telnet雖然不像r*命令采用信任模式,但是它傳遞信息采用明文方式容易造成信息泄漏。同樣建議采用ssh來替代Telnet。
11.Ndd
ndd系列命令是Solaris系統(tǒng)中獨(dú)有的,可以檢測或者設(shè)置網(wǎng)絡(luò)設(shè)備驅(qū)動程序的特性。在這些可以更改的設(shè)置中有不少是與安全性有關(guān)的,管理員可以通過ndd設(shè)置IP和TCP,以及其他網(wǎng)絡(luò)設(shè)備的特性來提高系統(tǒng)安全性和性能。
(1)ndd:禁止IP轉(zhuǎn)發(fā)。#ndd-set/dev/ip ip_forwarding 0。
對于多宿主主機(jī),存在可能的安全問題是,攻擊者可能通過II)轉(zhuǎn)發(fā)的方式訪問到私有網(wǎng)絡(luò)。在Solaisr系統(tǒng)中,也可以簡單地生成一個文件/etc/notrouter,就能在下次啟動的時候關(guān)閉IP轉(zhuǎn)發(fā)。
(2)ndd:不轉(zhuǎn)發(fā)定向廣播。#ndd -set/dev/ip ip_forward_directed_broadcasts 0。
由于在轉(zhuǎn)發(fā)狀態(tài)下默認(rèn)是允許的,為了防止被用來實(shí)施smurf攻擊,關(guān)閉這一特性。一個簡單的smurf攻擊通過使用將回復(fù)地址設(shè)置成受害網(wǎng)絡(luò)的廣播地址的ICMP應(yīng)答請求(ping)數(shù)據(jù)包來淹沒受害主機(jī)的方式進(jìn)行,最終導(dǎo)致該網(wǎng)絡(luò)的所有主機(jī)都對此ICMP應(yīng)答請求做出答復(fù),導(dǎo)致網(wǎng)絡(luò)阻塞,比ping of death洪水的流量高出一或兩個數(shù)量級。更加復(fù)雜的smurf將源地址改為第三方的受害者,最終導(dǎo)致第三方雪崩。防御方法:為了防止黑客利用用戶的網(wǎng)絡(luò)攻擊他人,關(guān)閉外部路由器或防火墻的廣播地址特性。為防止被攻擊,在防火墻上設(shè)置規(guī)則,丟棄掉ICMP包。
(3)ndd:限定多宿主機(jī)。#ndd-set/dev/ip ip_strict_dst_multihoming 1。
如果是多宿主主機(jī),為了防止IP spoof的攻擊,關(guān)閉這一特性。
(4)ndd:忽略重定向包。#ndd -set/dev/ip ip_ignore_redirect 1。
一個攻擊者能偽造重定向錯誤的報文從而給目標(biāo)主機(jī)裝載一個新的路由,而這個路由也許根本就是錯誤的,這樣主機(jī)就不會和一些特定的主機(jī)或網(wǎng)絡(luò)通信,這是一種DDoS攻擊(Solairs默認(rèn)是不忽略的)。雖然重定向報文本身有一些校驗(yàn)規(guī)則,但是這些規(guī)則能很容易地被欺騙,而且目前存在大量的工具來達(dá)到這個目的。大多數(shù)只有一條默認(rèn)路由的主機(jī)系統(tǒng)是不需要理會這種報文的。
(5)ndd:不發(fā)送重定向包。#ndd -set/dev/ip ip_send_redirects 0。
只有路由器才需要重定向錯誤,任何主機(jī)即使是多宿主主機(jī)也不需要發(fā)送這種報文。
(6)ndd.關(guān)閉時間戳響應(yīng)。#ndd -set/dev/ip ip_respond to_timestamp 0。
時間戳廣播報文在大多數(shù)環(huán)境下是不需要的。關(guān)閉這個特性以后,有些使用rdate系統(tǒng)命令的UNIX主機(jī)將不能再同步時鐘。但是Solaris 2.6和7使用更好的時鐘同步方式:NTP(網(wǎng)絡(luò)時間協(xié)議)。
(7)ndd:不響應(yīng)Echo廣播。#ndd -set/dev/ip ip_respond_to_echo_boadcast 0。
echo廣播通常用來診斷網(wǎng)絡(luò)主機(jī)的存活情況,一旦主機(jī)收到一個對廣播地址的echo請求,默認(rèn)情況下所有系統(tǒng)會回復(fù)這個廣播要求。當(dāng)有人惡意定制過量的echo包,系統(tǒng)中的流量將大為增加。
(8)ndd:不響應(yīng)地址掩碼廣播。#ndd -set/dev/ip ip_respond_to_address_mask_br- oadcast 0。
地址掩碼請求被用來確定本地掩碼,通常是網(wǎng)絡(luò)中無盤工作站在啟動的時候發(fā)送。
(9)ndd:不轉(zhuǎn)發(fā)設(shè)置源路由包。#ndd -set/dev/ipip_forward src routed 0。
源路由包中包含了指定數(shù)據(jù)如何路由的信息。因此攻擊者可能使用源路由包繞過某些特定的路由器和防火墻設(shè)備,也可能用來避開一個已知的IDS系統(tǒng)的監(jiān)控范圍。Solairs在打開IP轉(zhuǎn)發(fā)以后默認(rèn)支持源路由轉(zhuǎn)發(fā),在大多數(shù)Solairs的應(yīng)用系統(tǒng)上,是不需要這個特性的。
(10)ndd:加快ARP表過期時間。#ndd -set/dev/ip_ip_ire_flush_interval 60000;#n-ddset/dev/arp arp_cleanup_interval 60000。
加快過期時間,并不能避免攻擊,但是使得攻擊更加困難,帶來的影響是在網(wǎng)絡(luò)中會大量出現(xiàn)ARP請求和回復(fù),請不要在繁忙的網(wǎng)絡(luò)上使用。或者使用靜態(tài)ARP表,禁止ARP。
(11)ndd:提高未連接隊(duì)列的大小。#ndd -set/dev/tcp tcp_conn_req_max_q0 4096。
TCP-SYN flood又稱半開式連接攻擊,提高這個隊(duì)列的大小可以減輕TCP-SYN flood的攻擊。
對于繁忙的服務(wù)器也應(yīng)該提高這個隊(duì)列。
(12)ndd:提高已連接隊(duì)列的大小。#ndd -set/dev/tcp tcp_conn_req_max_q 1024。
提高隊(duì)列的大小和減短連接時間可以減緩連接耗盡攻擊。連接耗盡攻擊和SYN flood攻擊不同,連接耗盡攻擊不太常見。因?yàn)檫@種攻擊必須使用真實(shí)IP,攻擊的目標(biāo)是已連接隊(duì)列。許多系統(tǒng)有一個同時連接的上限,取決于核心參數(shù)和系統(tǒng)內(nèi)存情況。
我們可以通過優(yōu)化系統(tǒng)核心和增加內(nèi)存來緩解,但這些不是根本的方法。因?yàn)楣粽呖赡芡瑫r調(diào)動多臺機(jī)器發(fā)起攻擊。當(dāng)然,我們可以在發(fā)現(xiàn)攻擊后,在防火墻或路由器上拒絕這些IP來源的連接。
如果不通過網(wǎng)絡(luò)設(shè)備,僅僅通過調(diào)節(jié)系統(tǒng)參數(shù)來緩解攻擊,一方面,可以調(diào)節(jié)Web
Server,如apache的timeout參數(shù),減短連接保持時間,另一方面,我們可以將核心以連接隊(duì)列參數(shù)增大(默認(rèn)是128)。作為通常的Web服務(wù)器,這個上限值很難達(dá)到,因?yàn)閔ttp的連接是典型的短時連接。但是一個攻擊者可能快速發(fā)送大量的連接請求,同時保持連接,這樣正常訪問者的連接就可能被服務(wù)器拒絕。
以上的方法能阻止大多數(shù)連接耗盡的攻擊企圖,除非攻擊者調(diào)動更多的資源,發(fā)動大規(guī)模的DDoS,但這樣會使攻擊者更容易暴露。


