五、安全保障 物理安全的保護(hù) 供電:該服務(wù)器放在我校網(wǎng)絡(luò)中心主機(jī)房,有雙路供電。UPS可以保證在沒(méi)有市電供應(yīng)下5小時(shí)不中斷服務(wù)。 物理隔離:網(wǎng)絡(luò)中心24小時(shí)有專人值班,進(jìn)入主機(jī)房需要登記。 服務(wù)器軟件安全保護(hù) 操作系統(tǒng)選用了FreeBSD。Freebsd本身幾乎沒(méi)有任何安全漏洞。根據(jù)服務(wù)最少化原則,出國(guó)代理上目前使用的服務(wù)有ssh ntp socks5 squid幾種。其中ssh沒(méi)有使用freebsd自帶的openssh,而是使用了ssh.com出的非商業(yè)版的ssh服務(wù)器軟件。這個(gè)版本的ssh服務(wù)器軟件相對(duì)openssh有更安全效率更高的優(yōu)勢(shì)。而且對(duì)于非商業(yè)應(yīng)用是免費(fèi)的。 服務(wù)器通過(guò)ntp服務(wù)與某網(wǎng)絡(luò)時(shí)間服務(wù)器進(jìn)行時(shí)間同步,這是為了保證日志文件記錄事件發(fā)生時(shí)間的準(zhǔn)確性。另2個(gè)為必須提供的代理服務(wù)。其余服務(wù)沒(méi)有打開(kāi)。執(zhí)行ps命令確認(rèn)沒(méi)有任何多余進(jìn)程。 對(duì)SYN-Flood及掃描的防護(hù) SYN Flood是當(dāng)前最流行的DoS(拒絕服務(wù)攻擊)與DdoS(分布式拒絕服務(wù)攻擊)的方式之一,這是一種利用TCP協(xié)議缺陷,發(fā)送大量偽造的TCP連接請(qǐng)求,從而使得被攻擊方資源耗盡(CPU滿負(fù)荷或內(nèi)存不足)的攻擊方式。 [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/tcpconnection.gif[/img:01091db545] TCP協(xié)議的三次握手過(guò)程是這樣的: 首先,請(qǐng)求端(客戶端)發(fā)送一個(gè)包含SYN標(biāo)志的TCP報(bào)文,SYN即同步(Synchronize),同步報(bào)文會(huì)指明客戶端使用的端口以及TCP連接的初始序號(hào); 在freebsd的可以調(diào)整的內(nèi)核參數(shù)中有下面2項(xiàng):net.inet.tcp.blackhole和net.inet.udp.blackhole。相應(yīng)的描述如下:The blackhole sysctl(8) MIB is used to control system behaviour when connection requests are received on TCP or UDP ports where there is no socket listening. Normal behaviour, when a TCP SYN segment is received on a port where there is no socket accepting connections, is for the system to return a RST segment, and drop the connection. The connecting system will see this as a `Connection reset by peer`. By setting the TCP blackhole MIB to a numeric value of one, the incoming SYN segment is merely dropped, and no RST is sent, making the system appear as a blackhole. By setting the MIB value to two, any segment arriving on a closed port is dropped without returning a RST. This provides some degree of protection against stealth port scans.In the UDP instance, enabling blackhole behaviour turns off the sending of an ICMP port unreachable message in response to a UDP datagram which arrives on a port where there is no socket listening. It must be noted that this behaviour will prevent remote systems from running traceroute(8) to a system. The blackhole behaviour is useful to slow down anyone who is port scanning a system, attempting to detect vulnerable services on a system. It could potentially also slow down someone who is attempting a denial of service attack. 根據(jù)上面描述可以將net.inet.tcp.blackhole和net.inet.udp.blackhole設(shè)置為2和1,這樣將防止半開(kāi)式的端口掃描,并且能對(duì)syn-flood有初步的防護(hù)。 在內(nèi)核的配置文件中有options TCP_DROP_SYNFIN這個(gè)選項(xiàng)。通過(guò)加入這個(gè)參數(shù),可以防止通過(guò)TCP/IP堆棧對(duì)操作系統(tǒng)進(jìn)行識(shí)別。可以將安全問(wèn)題中的”information gathering”解決 。 內(nèi)核的優(yōu)化 FreeBSD有很豐富的可以自定義的內(nèi)核的參數(shù)。默認(rèn)的內(nèi)核為了保證通用性和穩(wěn)定性,有大量?jī)?yōu)化性能的參數(shù)沒(méi)有加入。 我校Chinanet代理服務(wù)器操作系統(tǒng)內(nèi)核部分優(yōu)化參數(shù)如下: options MAXDSIZ=`(1024*1024*1024)` 前三行是對(duì)freebsd下運(yùn)行的應(yīng)用程序可以使用的最大的內(nèi)存資源作限制,默認(rèn)為128M。由于出國(guó)代理服務(wù)器軟件squid占用內(nèi)存巨大,默認(rèn)的配置顯然不能滿足要求,所以要使用自定義的配置。這個(gè)配置允許單一進(jìn)程占用1G的內(nèi)存資源。 第四行是打開(kāi)對(duì)SSE/MMX2指令集的支持。通過(guò)加入這一參數(shù),出國(guó)代理的性能提高了約1%。即單位時(shí)間內(nèi)吞吐量增加了1%。 第5行是在內(nèi)核發(fā)生嚴(yán)重錯(cuò)誤的時(shí)候自動(dòng)重新啟動(dòng)的時(shí)間。這個(gè)參數(shù)保證了服務(wù)器出現(xiàn)嚴(yán)重的軟件錯(cuò)誤后能自動(dòng)恢復(fù)。 Cache policy cache_replacement_policy heap LFUDA cache替換策略 HP公司曾經(jīng)對(duì)squid作過(guò)詳細(xì)的測(cè)試。 參考該文檔,對(duì)我校出國(guó)代理作了相應(yīng)的調(diào)整。默認(rèn)的cache_replacement_policy 和memory_replacement_policy都是LRU。這個(gè)算法用在cache上效率相對(duì)較低。經(jīng)過(guò)實(shí)際測(cè)試,使用LFUDA(Least Frequently Used with Dynamic Aging)作為cache replacement policy,cache的命中率最高。使用heap LRU作為memory replacement policy,memory cache命中率最高。使用工具測(cè)得加入出國(guó)代理后,對(duì)使用代理的用戶來(lái)說(shuō),Chinanet的出口帶寬達(dá)到了5-7M,已經(jīng)遠(yuǎn)遠(yuǎn)高于4M的實(shí)際帶寬。確實(shí)起到了cache的作用。 對(duì)于磁盤(pán)IO的優(yōu)化 前文提到freebsd的磁盤(pán)性能不佳。除使用raid技術(shù)之外,squid本身有unlinkd 和diskd兩個(gè)子進(jìn)程來(lái)專門(mén)負(fù)責(zé)對(duì)磁盤(pán)作操作。配置文件中的cache_dir ufs /usr/local/squid/cache 25000 16 256 這行指定了squid可以使用25G的硬盤(pán)空間來(lái)作為緩存。Ufs指定了使用unlinkd作為對(duì)磁盤(pán)做操作的進(jìn)程。Unlinkd只負(fù)責(zé)刪除文件的操作,diskd負(fù)責(zé)所有的操作。Squid的相應(yīng)文檔上建議使用diskd。但是經(jīng)過(guò)測(cè)試,使用diskd雖然能提高系統(tǒng)的性能,但是會(huì)使squid進(jìn)程變得不穩(wěn)定。基于保證穩(wěn)定性的考慮,選擇使用unlinkd作為對(duì)磁盤(pán)操作的進(jìn)程。 Cache peer Squid支持多臺(tái)服務(wù)器進(jìn)行協(xié)同工作,組成cache peer。美國(guó)的National Laboratory for Applied Network Research、UCSD、The National Science Foundation建立了相應(yīng)的cache peer組織(http://www.ircache.net)。我校Chinanet代理服務(wù)器將該組織中的2臺(tái)服務(wù)器設(shè)置為slibing模式來(lái)調(diào)用,將我校另外一臺(tái)cernet線路上的服務(wù)器設(shè)置為域名以.edu.cn結(jié)尾的parent模式。訪問(wèn)過(guò)程是這樣的:如果客戶端提交來(lái)的請(qǐng)求是以.edu.cn結(jié)尾的,首先查詢cache中是否有,如果沒(méi)有則請(qǐng)求cernet線路上的服務(wù)器去讀取相應(yīng)資源。 對(duì)于其他的域名,則首先查詢本身的cache,如果沒(méi)有則查詢slibing的cache,如果還沒(méi)有,則自己主動(dòng)去獲取該資源。與ircache的協(xié)調(diào)使用ICP(Internet Cache Protoclol),與cernet線路服務(wù)器協(xié)調(diào)使用HTCP(Hypertext Caching Protocol)。對(duì)ICP的描述在RFC2186、RFC2187,對(duì)HTCP的描述在http://icp.ircache.net/htcp.txt。HTCP更有利于提高cache的性能,但是對(duì)系統(tǒng)的配置有要求,ICP相對(duì)簡(jiǎn)單。所以,選擇使用ICP與ircache的服務(wù)器協(xié)同工作,使用HTCP與學(xué)校cernet服務(wù)器協(xié)同工作。 |