幾乎沒有公司網站、商業網站、購物網站或個人網站會公開他們機房的 "網路系統架構圖",不過先進與時尚的 BNW 當然要與眾不同一下囉~不但公開 "網路系統架構圖" 甚至還有 "BNW 網站機櫃現場實況寫真" 照片!雖然使用的網路與主機,對千萬級的公司機房來說,還有非常大的一段距離,但是使用的網路技術並不會比他們落後!
自從使用 Windows 2000 Server 架設網站開始,就一直研究與思考要如何架設更安全穩定的專業網站?不過由於過去手上只有簡單的 "IP 分享器" 也因此面對 Cross-Site Scripting 跨網站描述程式的攻擊,顯得毫無防護能力!
雖然後來加裝了更好的 ZyWALL 5 UTM 防火牆,但是對於 "跨網站攻擊" 依舊束手無策,畢竟 ZyWALL 全系列並不是 Layer 7 層級的防火牆旗艦,因此對於 Web Server 網站使用的 80 TCP port 只有開放與封鎖、拒絕,這三種狀態,無法檢視或管控駭客在 Web Server 所下的惡意 GET 與 POST 指令!
雖然我已經把網站伺服器從 Windows 2000 Server 升級到 Windows Server 2003,後來則是直接改用更好的 Mac OS X Server,但是低階的防火牆對於 "跨網站攻擊" 根本是完全無能為力!只能透過後端的 Apache Server 來應付這類的攻擊行動。至於 DDoS 分散式阻斷攻擊、IDS / IDP 等入侵偵測,只能看防火牆本身的防護能力了。
相關的話題請參考這些討論主題:
BNW 網站系統架構圖 2006 年版
這張 "雙層防火牆網路系統" 是 100% 絕對真實的 BNW 網站系統架構現況!請點選底下的畫面就可以放大圖片,然後花點時間研究與暸解一下,為什麼我要這麼做?
其實整張圖面只有一個地方,到現在還沒有完成,那就是完全獨立的 "SQL Server 資料庫伺服器"!在系統架構圖中是使用 4 台 Mac OS X Server 伺服器,但是目前只有三台伺服器 24hr 全天候運作中,因為預算的因素,只好暫時把 Mail Server 與 SQL Server 架在同一台伺服器上。我想等到支援 Intel Core 2 Duo 的 Mac mini 上市之後,再把目前的 Intel Core Duo 的 Mac mini 1.66GHz 挪為 SQL Server 使用。
我簡單的解釋一下這張 "BNW 網站系統架構圖",細節說明請參考 "時尚の蘋果集錦 III" 這本書。
更安全的防火牆 ACL 與防護設定
ACL 是 Access Control List 存取控制列表的縮寫,並非網路產品才有 ACL,其實 Windows 或 Mac OS X 的檔案共享清單上也有 ACL 列表,用來設定哪些人、哪些群組可以有哪些讀寫權限。
通常剛買回來的防火牆,原廠的預設值都不會適合你的環境,因此需要花不少時間來調校設定你的防火牆,一部 NT$10 幾萬隨意設定的 Cisco PIX 515 防火牆,很可能網路安全性與一台只有 NT$2000 元的 "IP 分享器" 相當!
要如何正確的設定你的防火牆?其實得靠 "專業網管人員的經驗",並沒有一定的標準設定方式。
在 Firewall 列表上你可以看到多達 5x5 = 25 種封包流向,可以隨意設定!幾乎所有不合乎規則的封包都被我 Drop 扔掉!只有 LAN to LAN 與 LAN to WAN 這兩個封包流向,不受防火牆管控。其實這種設定方式比較接近 Cisco 防火牆的出廠預設值,也就是說凡是沒有設定 ACL 規則的封包,一律 Drop 掉不予回應!
在 "第一道防火牆" 的 "DMZ to WAN" 這個封包流向,你可以看到我特別開放幾個 IP 位址的網站,例如 http://www.apple.com、clamav.com、phpBB 等原廠網站,其他網站則是一律 Reject 回絕掉!也就是說,我禁止 DMZ 區域的伺服器上網!除了限定的幾個網站,其他任何網站一律封鎖!
DMZ 伺服器對外只能使用幾個 80 TCP Port 的網站、DNS、POP3、SMTP 與 NTP (這是系統偏好設定裡面的 "自動設定日期與時間" 所需要的時間校正功能)。
從前面推薦閱讀的幾個話題中,就會知道所謂的 Cross-Site Scripting 跨網站攻擊,其實就是 "到你的網站卻開啟別人的網頁"!因此想要完全封鎖別人無法對付的 Cross-Site Scripting 攻擊,只要不准 DMZ 伺服器上網就能全面封鎖跨網站攻擊了!
由於 DMZ 伺服器無法開啟任何網頁 (只有限定的幾個 apple.com、phpbb.com 等原廠網站除外),所以駭客想要到 BNW 網站卻下 "GEThttp://www.apple.com" 之類的指令,企圖透過 BNW 開啟別人的網頁,只會得到 Reject 拒絕的回應!無法達到把 BNW 網站當成駭客跳板的目的!
雖然 Drop 與 Reject 都是拒絕回應,不過兩者還是有很大的差別,Drop 是直接扔掉封包,而 Reject 則是送出回絕。對 Request 需求端來說 (通常是使用者開啟指定的別人網頁),設定 Drop 會因為沒有任何回應,導致 Browser 瀏覽器認為網站可能過於忙碌,就會自動重試!因此反而會重複送出 GET 別人網站的指令!
如果是使用 Reject 則是直接傳回拒絕訊號,這時候 Browser 就會立即收到網路中斷連線的訊號,也不會自動繼續重試了!所以在這裡使用 Reject 會比 Drop 要好很多!
在 "WAN to DMZ" 的封包流向,你可以看到我封鎖了很多 IP 網段,例如:211.99.x.x 全部網段,這些網段大多是大陸 IP,由於駭客多半來自大陸,所以只好一一封鎖!大陸的使用者無法開啟 BNW 網站,也只能怪他們自己囉~
除了在 "DMZ to WAN" 限定只准開啟的網站,我還特別在 CONTENT FILTER 網站內容過濾器,設定了 DMZ 伺服器只准開啟哪些網頁!
信任的網站只有 apple.com、clamav.net、ftp.cs.pu.edu.tw 等網站,除了 apple.com,後面的網站其實都是 Mail Server 需要開啟的基本服務,以便更新 email 的 Anti-Virus 掃毒病毒碼、Anti-Spam 防止垃圾信件的辨識碼等。
除了信任的網站以外,其他網站全部一律封鎖!由於 CONTENT FILTER 只能過濾 LAN to WAN 與 DMZ to WAN、VPN to WAN 這幾個封包流向,無法過濾 "WAN to DMZ",使得 Cross-site Scripting 攻擊,無法從防火牆端就全部封鎖阻隔!
雖然我已經關閉了 DMZ to WAN 的上網能力,但 Cross-site Scripting 攻擊終究還是能到達 Apache Server 上,只不過因為 DMZ 伺服器無法上網,讓駭客的陰謀無法得逞而已,最好的防火牆應該能在防火牆端,就封鎖了無理的 GET 指令,盡量讓合理的 GET 指令傳給 Web Server。不過,支援 Layer 7 的防火牆也不見得能分析與過濾 GET 開啟網頁指令,所以我透過封鎖 "DMZ to WAN" 上網與透過 Content Filter 封鎖網站,至少能達到我想要的部份效果了!
底下是 "第二道防火牆" 的管理網頁畫面,這是由 Vigor 2900G 高級 IP 分享器負責擔任。這台 2900G 內部其實是一個嵌入式 Linux 系統,穩定性相當高,還可以封鎖 IM,包括 MSN、ICQ、AOL 等,以及 P2P 的 BT、eMule 等。這部份的能力彌補了 ZyWALL 5 防火牆的不足!
在 "第二道防火牆" 的 NAT 設定已經被我全部關閉,也就是說 WAN to LAN 或 WAN to DMZ 將會完全不通!由於低階的 "IP 分享器" 沒有向 ZyWALL 5 可以提供 25 種封包流向的 ACL 管控能力,因此除了能管控 IM 與 P2P 以外,LAN to WAN 等於完全開放,因此想要管制 LAN to WAN 端的上網封包,只能由 "第一道防火牆" 來負責。不過因為第一道防火牆已經看不見 "第二道防火牆的 LAN 端",所以一但管制 LAN to WAN,受影響的將會是全部的 LAN 端電腦,包括了使用無線網路的主機!
以上是 "雙層硬體防火牆",但其實在 Mac OS X Server 上還有一道 Software Firewall 軟體防火牆!也就是說對於 Web Server、Mail Server 來說,等於再加上了 "第三道防火牆" 的保護!
Mac OS X Server 的 Firewall 防火牆預設分為 any、10-net、192.168-net,這三個網段。其中 192.168.x.x 是專為 Ethernet 網路而設計的,而 10.x.x.x 則是針對 1394 的 Firewire 網路而設計的。除此之外,來自網際網路的封包都屬於 any 部份來控管。
你可以看到在 10-net 網段,我只有開放 AFP 與 MySQL 需要的 3306 TCP Port,其他網路埠則是全部封鎖,別想 ping 與 traceroute!
當 SQL Server 架設在獨立的伺服器上,又只有透過 Firewire 與其他伺服器連接,並且在 10-net 防火牆只開放 AFP 與 MySQL 網路埠,這台 SQL Server 等於是一部架設在 "密室中完全封閉的伺服器"!
事實上 DMZ 所有伺服器都沒有開啟 SSH 與 Telnet,對駭客來說想要透過 SSH 或 Telnet 入侵,根本是不可能的任務!
由於 Mac OS X Server 10.4 的 Proxy Server 有一個令人頭痛的 Bug,請參考底下這篇:
“查看誰在線上” 通通都是網站伺服器本身的 IP!
那就是一但開啟 Proxy Server,也就是 Performance Cache 之後,傳送給 PHP 的 IP 位址將會是 Web Server 本身的 IP 位址!而不再是外部使用者的 IP 位址!
所以我只好把 Proxy Server 關閉!其實如果沒有這個令人頭痛的大 Bug,開啟 Proxy Server 還能當成一道 Proxy Firewall 代理防火牆使用!對於 Cross-site scripting 攻擊,Proxy Server 會認為這是一個錯誤的 GET 指令而完全不予回應,再加上硬體防火牆的兩道保護 (DMZ to WAN 與 Content Filter),這樣就能把跨網站攻擊的行動擋在 Apache Server 之前!
到底「雙層防火牆」對於公司、住家真正的內部電腦網路安全性如何?能防止駭客企圖攻擊、入侵內部電腦主機嗎?請看底下這篇的說明。
企圖攻擊、入侵BNW內部LAN網路的駭客
答案當然是肯定的!
這篇文章雖然是在「作成: 11/04/06」已經是6年前的文章,網站的設備也隨著網路速度的提升,而漸漸的改善,從最早期使用單一的「一台IP分享器」到「兩台IP分享器」,再升級為「一台防火牆+一台IP分享器」,再次升級為使用ZyWALL 70 + ZyWALL 5組成的「兩台防火牆」。
最近則是因應「光纖100M/100M」寬頻網路,再次升級為「FortiGate 110C + ZyWALL 70」的架構。
BNW網路正式升級為ZyWALL 70與ZyWALL 5雙層防火牆
SonicWALL防火牆可控管40Gbps流量售價285萬~1,263萬元
AETs先進規避技術能躲避防火牆、入侵偵測、IPS系統而侵入網路
ZyXEL的VDSL數據機與ZyWALL 5、ZyWALL 70雙層防火牆
「雙層防火牆」當然也不是我個人的異想天開的奇怪發明,在Google搜尋「Two layer firewall」之類的關鍵字就會找到類似「Two layer firewall architecture」這樣的文章,底下這兩個網頁都是「電腦書」的網頁版本,由於著作權的關係,就只貼出網址,請花點時間瞭解,為什麼會需要「多層防火牆」來徹底封鎖駭客入侵真正的企業內部網路?