国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

代理服務器的架設與維護(二)
2007-01-24   


五、安全保障

  物理安全的保護

  供電:該服務器放在我校網絡中心主機房,有雙路供電。UPS可以保證在沒有市電供應下5小時不中斷服務。

  物理隔離:網絡中心24小時有專人值班,進入主機房需要登記。

  服務器軟件安全保護

  操作系統選用了FreeBSD。Freebsd本身幾乎沒有任何安全漏洞。根據服務最少化原則,出國代理上目前使用的服務有ssh ntp socks5 squid幾種。其中ssh沒有使用freebsd自帶的openssh,而是使用了ssh.com出的非商業版的ssh服務器軟件。這個版本的ssh服務器軟件相對openssh有更安全效率更高的優勢。而且對于非商業應用是免費的。 服務器通過ntp服務與某網絡時間服務器進行時間同步,這是為了保證日志文件記錄事件發生時間的準確性。另2個為必須提供的代理服務。其余服務沒有打開。執行ps命令確認沒有任何多余進程。

  對SYN-Flood及掃描的防護

  SYN Flood是當前最流行的DoS(拒絕服務攻擊)與DdoS(分布式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,發送大量偽造的TCP連接請求,從而使得被攻擊方資源耗盡(CPU滿負荷或內存不足)的攻擊方式。

  [img:01091db545]http://www.frontfree.net/articles/pages/0000000597/tcpconnection.gif[/img:01091db545]

  TCP協議的三次握手過程是這樣的:

  首先,請求端(客戶端)發送一個包含SYN標志的TCP報文,SYN即同步(Synchronize),同步報文會指明客戶端使用的端口以及TCP連接的初始序號;
  第二步,服務器在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時TCP序號被加一,ACK即確認(Acknowledgement)。
  第三步,客戶端也返回一個確認報文ACK給服務器端,同樣TCP序列號被加一,到此一個TCP連接完成。假設一個用戶向服務器發送了SYN報文后突然死機或掉線,那么服務器在發出SYN+ACK應答報文后是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下服務器端一般會重試(再次發送SYN+ACK給客戶端)并等待一段時間后丟棄這個未完成的連接,這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分鐘);一個用戶出現異常導致服務器的一個線程等待1分鐘并不是什么很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況,服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源----數以萬計的半連接,即使是簡單的保存并遍歷也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。
  實際上如果服務器的TCP/IP棧不夠強大,最后的結果往往是堆棧溢出崩潰。即使服務器端的系統足夠強大,服務器端也將忙于處理攻擊者偽造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),從而造成DoS。

  在freebsd的可以調整的內核參數中有下面2項:net.inet.tcp.blackhole和net.inet.udp.blackhole。相應的描述如下: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.

  根據上面描述可以將net.inet.tcp.blackhole和net.inet.udp.blackhole設置為2和1,這樣將防止半開式的端口掃描,并且能對syn-flood有初步的防護。

  在內核的配置文件中有options TCP_DROP_SYNFIN這個選項。通過加入這個參數,可以防止通過TCP/IP堆棧對操作系統進行識別。可以將安全問題中的”information gathering”解決 。
六、優化

  內核的優化

  FreeBSD有很豐富的可以自定義的內核的參數。默認的內核為了保證通用性和穩定性,有大量優化性能的參數沒有加入。

  我校Chinanet代理服務器操作系統內核部分優化參數如下:

  options MAXDSIZ=`(1024*1024*1024)`
  options MAXSSIZ=`(1024*1024*1024)`
  options DFLDSIZ=`(1024*1024*1024)`
  options CPU_ENABLE_SSE
  options PANIC_REBOOT_WAIT_TIME=16

  前三行是對freebsd下運行的應用程序可以使用的最大的內存資源作限制,默認為128M。由于出國代理服務器軟件squid占用內存巨大,默認的配置顯然不能滿足要求,所以要使用自定義的配置。這個配置允許單一進程占用1G的內存資源。

  第四行是打開對SSE/MMX2指令集的支持。通過加入這一參數,出國代理的性能提高了約1%。即單位時間內吞吐量增加了1%。

  第5行是在內核發生嚴重錯誤的時候自動重新啟動的時間。這個參數保證了服務器出現嚴重的軟件錯誤后能自動恢復。

  Cache policy
  在本文的第三部分中提到了出國代理使用的cache policy。

  cache_replacement_policy heap LFUDA cache替換策略
  memory_replacement_policy heap LRU 內存替換策略

  HP公司曾經對squid作過詳細的測試。

  參考該文檔,對我校出國代理作了相應的調整。默認的cache_replacement_policy 和memory_replacement_policy都是LRU。這個算法用在cache上效率相對較低。經過實際測試,使用LFUDA(Least Frequently Used with Dynamic Aging)作為cache replacement policy,cache的命中率最高。使用heap LRU作為memory replacement policy,memory cache命中率最高。使用工具測得加入出國代理后,對使用代理的用戶來說,Chinanet的出口帶寬達到了5-7M,已經遠遠高于4M的實際帶寬。確實起到了cache的作用。

  對于磁盤IO的優化

  前文提到freebsd的磁盤性能不佳。除使用raid技術之外,squid本身有unlinkd 和diskd兩個子進程來專門負責對磁盤作操作。配置文件中的cache_dir ufs /usr/local/squid/cache 25000 16 256 這行指定了squid可以使用25G的硬盤空間來作為緩存。Ufs指定了使用unlinkd作為對磁盤做操作的進程。Unlinkd只負責刪除文件的操作,diskd負責所有的操作。Squid的相應文檔上建議使用diskd。但是經過測試,使用diskd雖然能提高系統的性能,但是會使squid進程變得不穩定。基于保證穩定性的考慮,選擇使用unlinkd作為對磁盤操作的進程。

  Cache peer

  Squid支持多臺服務器進行協同工作,組成cache peer。美國的National Laboratory for Applied Network Research、UCSD、The National Science Foundation建立了相應的cache peer組織(http://www.ircache.net)。我校Chinanet代理服務器將該組織中的2臺服務器設置為slibing模式來調用,將我校另外一臺cernet線路上的服務器設置為域名以.edu.cn結尾的parent模式。訪問過程是這樣的:如果客戶端提交來的請求是以.edu.cn結尾的,首先查詢cache中是否有,如果沒有則請求cernet線路上的服務器去讀取相應資源。

  對于其他的域名,則首先查詢本身的cache,如果沒有則查詢slibing的cache,如果還沒有,則自己主動去獲取該資源。與ircache的協調使用ICP(Internet Cache Protoclol),與cernet線路服務器協調使用HTCP(Hypertext Caching Protocol)。對ICP的描述在RFC2186、RFC2187,對HTCP的描述在http://icp.ircache.net/htcp.txt。HTCP更有利于提高cache的性能,但是對系統的配置有要求,ICP相對簡單。所以,選擇使用ICP與ircache的服務器協同工作,使用HTCP與學校cernet服務器協同工作。

熱詞搜索:

上一篇:代理服務器的架設與維護(一)
下一篇:簡單、輕松的HP ProLiant刀片服務器管理

分享到: 收藏
主站蜘蛛池模板: 土默特右旗| 清远市| 卢氏县| 彝良县| 土默特左旗| 土默特右旗| 化德县| 开鲁县| 江源县| 湖口县| 灵寿县| 洪洞县| 关岭| 彝良县| 永平县| 青岛市| 云霄县| 洱源县| 柳河县| 察雅县| 修武县| 贡觉县| 仙居县| 皋兰县| 台中县| 仁化县| 资兴市| 桃园县| 天祝| 蒙城县| 林芝县| 友谊县| 迁安市| 黑水县| 鄂伦春自治旗| 龙口市| 泗阳县| 临泉县| 柳州市| 华亭县| 聂拉木县|