2010年7月19日星期一

企業網路如何防止非授權網路連接

防止使用者將非授權的網路設備,私自連接至企業內部網路,是企業網路安全中,重要的一個工作。像個人電腦, Hub, Switch 或者 wireless Access Point 等設備的私自連接,而造成網路出現因原始設計的網路架構被改變,而發生網路傳輸不穩定、或造成線路 loop 、或產生 security risk 等各種問題。談到如何防止之前,先介紹網路設計上的基本區隔,及應該作的工作內容,以方便了解為何在防止非授權設備接用,在實際實行上所會遇到的困難及解 決方法。

一般企業網路設計,大都將網路設備依不同的工作性質及容量來作區分。大體上可以區分為三個部份網路的基本架構。說明如下:

Core Layer:
為企業網路資料交換骨幹 (backbone),資料在骨幹網路之間快速的交換(或轉換)並傳遞。在骨幹網路唯一的要求是速度,所以如何快速的傳遞交換資料,是 core layer 的主要任務。 core 大都是使用中、大型的 multi-layer switch / router。 傳輸介面不會太多,但為求快速交換及快速傳輸資料,所以會使用較高速的傳輸介面,如 155 Mbps 或 625 Mbps 以上的 SDH / ATM 線路,或以光纖 Gigabit Ethernet 為主,不過最近也開始有 10 Gigabit Ethernet 開始安裝在 core 端,來加大資料的 pipe size。 因為要求快速,而使用高速的傳輸介面,所以很多的資料流會在 core 匯集(aggregate)後整批傳輸。所以在 core 上,並不建議使用封包內容檢查(access rule、pattern match 、packet filter),以免因為為了檢查內容而必須將資料封包拆開檢查,再重新寺包,造成 delay jitter 過高,並浪費 switch router 的 CPU 及資源。整個網路的 routing 會經由骨幹交換,並快速計算出傳輸路徑,以利資料快速到達目的地,並可以即時反應網路連線的狀況及品質,自動作相對應調整。網路傳輸品質的 QoS 也必須在 core layer 作一定程度處理,以免需要傳送的資料過多時,因為各介面的速度不一樣,而傳輸不順,減低了 core 的處理能力。一般在 core 上可以使用 layer 2 CoS 和 layer 3 IP ToS/IP Preference / DiffServ 及 MPLS 等方式作 QoS,但要並用或其中一種來作 QoS 的判斷基準階可。

Distribution Layer:
位於骨幹交換網路,和使用者終端之間的中介,在這一層中主要工作,是將資料區分出必須要和骨幹網路交換的資料,和可以在本地端直接交 換的資料,或者是要和處於相同 distribution layer 的設備交換資料。 distribution layer 一般會設定有大量的 layer 2 VLAN 及 layer 3 routing ,並有封包過濾、檢查等工作。 在使用上, distribution layer 以使用 layer 3 switch 為主, 不過近來也有使用 multi-layer switch, 主要是為了要使用 MPLS ,來和 core layer 配合。 而 distribution layer 的 switch 也會在 access switch 之間,及上層的 core switch 交換 layer 3 的 routing,不過為了網路的穩定及節省頻寬,所以不必交換整個網路的 routes, 因這部份可以直接交給 core layer 的 switch / router 來作。所以 distribution layer 的 route 大都會先經過 summary 簡化成 super-net 之後,再和 core 交換,可以節省頻寬,並減低因下層網路不穩定時,直接對上層網路造成因為路由改變,而需要重新計算 route table 及路由收斂 delay 等影響。Distribution layer 會有大量的 access rule 設定,並且對所經過的資料一一查核,若有不正常的資料,則依照所設定的方式處理(permit / deny / pass / drop)。 在查核資料的同時將 layer 2 和 layer 3 的 QoS mark mapping ,由下層的 access layer 來的 layer 2 CoS 標籤,轉成上層 core layer 所使用的 layer 3 IP ToS / IP Preference / DiffServ 標籤或 MPLS 標籤以利 QoS 設定延續來達到 end-to-end QoS 設定。

Access Layer:
連接企業網路和使用者終端(泛指個人電腦、或是主機 server等),是企業網路到使用者之間,最後一段線路,是企業網路中數量最多、散佈最廣、管理最困難的一部份,散佈在整個公司內各處。 Access Layer 使用 layer 2 或 layer 3 switch 功能較簡單。但近來在使用者端的非授權軟體--對企業網路影響最大,是可穿越防火牆的 SSL tunnel 、或是 local-host SOCKS proxies 、病毒、或 spyware 等問題,漸漸有將 access layer 力強用 access rule 管制,並由 layer 2 / layer 3 switch 提昇至 layer 4 甚至 layer 7 packet filter,才有辦法在這些不該傳輸的資料,傳出使用者的電腦時,就直接辦認出來並攔劫,防止這些資料傳至網路上其他電腦設備,或是公司外部,洩漏公司 機密。

所以對企業網路來說, access layer 在企業網路安全維護中,是最直接的第一線戰場。以前在 access layer 並不會設定或設定太多的 access rule ,也不太會作 QoS 的設定,這些工作都交給 distribution layer 或 core layer 來作。但以今日的網路環境,若是在 access layer 設定了一些簡單的 access rule ,則可以有預防的功能。像 DoS 型病毒發作時,帶有病毒的資料大量又快速散佈時, QoS 的設定,可以限制某些不必要的資料傳輸速度,減低整個網路的 response time,或只是因為少量的使用者,設備設定錯誤或不當使用,而占用大量的網路頻寬。而且應該在 access layer 上使用 VLAN 來作不同部門之間的區隔,就算是整部 switch 都是同個部門使用,設定了 VLAN 也可以在不同的 service level 中得到好處,因為在企業中不難保部門的區隔及限制會永遠不變,使用了 VLAN 在部門或辦公室重新 layout 時,會很方便而且可以及時配合 layout 改變。而若使用了 multi-layer access switch 更可以對使用者所傳送或接收的資料一一作確認、檢查,如使用了 SSL tunnel 、local-host SOCKS proxies 、或是 Instant messenger 、或是 P2P 檔案傳輸等,以便及早發現問題。若是等到在 distribution layer 或是 core layer 再作這些檢查,就太慢了,一部份的網路頻寬己經被占用,且可能因封包在經過 access layer switch 時被重寫 source MAC address 而無法分辦,是由那部電腦,或由那個 switch port 所傳出來的。

目前在防止非授權設備連接至網路的方法, 不外使用下列方式: ethernet MAC address limit 及 802.1X 認證。 以上兩種方法可以從網路實體連接上直接防止使用者私自接用不必要的網路設備。但必須在最接近使用者端的 access layer 的 LAN switch 上設定才有效。Ethernet LAN switch 的基本工作方式,當 switch port 有資料進來時,先檢查 MAC address table 是否有記錄 Destination MAC address 並,將 Source MAC address 和 switch port number 記錄至 MAC address table,並將資料送到目的位址的 switch port 送出去。若是在 MAC address table 中查不到 Destination MAC address 則發出 MAC address broadcast flood 查看是否有回應,若有則記回應的 switch port 並記錄至 MAC address table, 以備下次使用。不過每部 switch 的 MAC address table 及單一 switch port 的 MAC address table 都是有限制的,所以在 MAC address table 中還有設定 MAC address 記錄的時間叫作 aging time。若一直有新的資料進出這個 switch port,則 aging time 時間會同步更新,但若在時間內沒有資料傳送,則 aging time 時間到了就清除,一般的 MAC table aging time 設定為 300 秒。

原來的 MAC address table 可以同時記錄多筆的 MAC address 資料,一般單一 port 的 MAC address table 都可以記錄 128 或 256 個以上 MAC address。而使用 MAC address limit,簡單來說就是在 access layer switch 上設定限制每一個 switch port 可連接的 MAC 數量,並將 aging time 自動調整至比較高的數字,除非該 switch port 有plug-unplug 的動作,才會更新。當單一 port 學得的 MAC 超過限制時,就不會對後來加入的 MAC 所傳送的資料作上傳。建議對使用者連接的 switch port 可設定為一個 MAC per port,就是說這個 switch port 只可以接一個網路設備。不過設定 MAC 的數量只對 switch 或 hub 有效,如果是 router 並有 NAT 的話,就無效了,偏偏市面上的 IP 分享器及 Wireless AP 大都有 router mode 加 NAT 的功能。但如果將所要連接的 MAC address 直接指明的話呢?當然是可以的,不過在實作上比較困難。因為當網路大到某一程度,要將所有的 MAC 和所連接的 switch port 一一設定,要花費許多的時間,這還不算,當 topology 有改變或是遇到有在辦公室之間漫遊的使用者,那就要經常作相對應的調整,需要大量的人力來維持 MAC address 和 switch port 的對應,而且無法自動處理,全部需要人工作業。如果可以在每次使用者連接到網路時,就對於 switch port 的使用權限自動作一些基本的檢查,以確認使用者的身份,並對該使用者作相對的設定,視使用者的個人設定來開放使用的等級。認證通過則對網路 switch 作相對設定,不然則關閉 switch port 使其無法使用網路(等於斷線)就可以比較簡單的作管制了。

IEEE 802.1X 原來是針對 IEEE 802.11 無線網路使用認證所設計,不過也正好可以用在對單一 switch port 的使用權認證。 802.1X - Port-Based Network Access Control,從字面上看來,是專門針對單一網路 port 作連接存取控制。可有效用來即時控制網路設備的連接與否。簡單來說 802.1X 就是當網路設備要使用網路資源時(偵測 port states up/down)必須先經過認證。若認證通過,則可以使用全部的網路資源,反之則受限制。在尚未啟動 802.1X 認證時,所有封包都可以自由進出 switch port,但當 switch port 啟動了 802.1X 認證後,在尚未通過認證之前,只允許 認證用的 EAP 封包可以通過 switch port ,等到 switch 收到了認證許可, 802.1X 才會將 switch port 打開讓封包通過 switch port。若沒有通過認證,當然就所有封包還是不可以通過 switch port (只有 EAP packet可以通過)。 要使用 802.1X 的要求是,switch 必須要支援 802.1X ,並且要連線的 client 也要支援 802.1X 的認證才可以,目前的 Windows 2000 / Windows XP / Macintosh OS X / Linux 都有支援,而且 Windows OS 還設定為 default 就使用 802.1X。但若是client 支援並使用 802.1X 作認證,而 switch 卻不支援 802.1X 時,client 會自行認為己經通過認證而得到網路的使用權,這也說明了為何 Microsoft 會將 802.1X 作為網路卡設定中的 default 設定。

在使用了支援 802.1X 的 switch 並設定之後,一般會在網路上加裝支援 EAP 的 RADIUS 作為存放及認證使用者及密碼資料及儲存連線時的相關資料,如連線時間,使用權限,使用記錄等。使用 RADIUS 意思就是說 802.1X 的認證可以直接對到單一使用者,而和 MAC address limit 不同的是不對所連接硬體作設定,這樣在管理上又方便了不少。使用 MAC address limit 和 802.1X 兩者配合,並使用 RADIUS 來作認證及使用記錄,可以針對各別使用者私自加裝網路設備作有效的管理,但是若是因為使用軟體而改變了企業網路的連接呢?像是使用 Windows XP 的橋接器,將二個不同的 VLAN 作 bridge 或者是使用 local-host SOCKS Proxy 軟體將遠端的機器 bridge 進企業網路,又或者是使用 P2P 軟體而對於對外頻寬的無度要求,這些用軟體來改變企業網路連接形態, MAC address limit 及 802.1X 等比較面向硬體設定的方法就不適用了。

要對軟體的功能設限的主要用意,是在防止網路外部 的人員對企業內部的資料存取或者是管制存取權限。所以第一要先用 firewall 來將大部份不需要的 protocol 及不需要對外 service 的 host 作限制。只讓必要的 traffic 及 server 可以對外,建議所以開放的 port 及對外 service 的機器越少越好。而內部有需要連接至外部的盡量使用 RFC-1918 所建議的 private IP address 如 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 並使用 NAT 作位址轉換。再安裝一至二部 web proxy 作為代理,以減少內部網路和外部的接觸。再來就設定 web browsing 全部要 forward 至 web proxy, 這可以由使用者在 web browser 上自行設定,或是在 network gateway 上作 IP address 及 port forwarding 來達成。 以上是一般的內部對外部的設定,絕大部份的企業網路都是這樣設定。但是因為技術一日千里,這樣子的設定對於目前在網路安全來說是不夠的。

因為 Soft-Ether 和 Hopster 這類 user VPN 軟體的出現,令企業高價購買的 firewall 無力招架, Hopster 使用 local-host SOCKS proxy,也就是利用 SOCKS proxy 這個協定(TCP port 1080),將要送出去的資料先在自己的本機端作資料偽裝,並利用大部份網管人員都會直接或設定由 web proxy 連接而開放的 HTTP ( TCP port 80) HTTPS (TCP port 443) 穿越 firewall,並和外部的一部或一群同樣使用 Hopster 的電腦組成 bridge。 這樣企業內部和外部就用 bridge 連在一起了,再利用外部的 gateway 就可以連到 Internet 任何地方以及使用任何 service 了。而 soft-ether 和 Open VPN 使用 SSL tunnel,也是先在本機將資料用 SSL 包裝,再使用 web proxy 傳送出企業網路,來和遠端的主機連接而達成 VPN 的連接,大致上的工作原理和 Hopster 一樣,不過因為 soft-ether 和 Open-VPN 會在本機虛擬出一個網路卡,如些所有的 IP traffic 甚至不是 IP 的封包也可以送到遠端,比起 local-host SOCKS proxy 的破壞力更強。而和 Hopster 相同的程式還有 TOR / HTTP tunnel 等等非常的多,而且像 TOR 還會在企業網路及外部網路中串連以減低被追蹤的機會。不過也並不是沒有辦法可以防止這種程式的濫用,在防火牆或 web proxy 上使用正面表列允許連結的 URL,其他 URL 則不允許連結,如此應可有效防止這類型的連線,但是在管理上增加了網管人員許多壓力,及浪費時間在收集及設定這些 access rule。 要作正面表列之前最好先通告使用者將要修改 rule ,並在暗中先行收集平常在 web proxy 及 firewall 上經常會連結的網站,並作列表備用。而在使用 firewall access rule 正面表列之後,對於目前企業網路安全中的 P2P 及 Instant messenger 等也可以作管理,而不需要加其他像 layer 7 firewall 等高價設備。

對於企業網路 中使用 user VPN tunnel 或 Instant Messenger 如 MSN / Skype /GizmoProject / Soft-phone 等 VoIP 或是 Bit-Torrent / Kazaa / E-Donkey 等P2P 軟體,視使用的方式不同,就會有正反兩方完全不同的看法,這些軟體是比較新的溝通方式,可以節省電話費用也可以即時的連絡或是傳輸資料,也可以對客戶提供 24x7 的全天候服務。不過在企業資料安全方面來說,就也同樣會有公司內部機密外流的危險。但要全面使用或部份使用者可以使用,或全面禁止,全視企業網路的 policy 而定。若是開放使用,則需要在網路設備上針對這些服務作設定以免影響到網路上其他的服務正常運作。

這些 Instant Messenger 和 VoIP 或 P2P 及網路遊戲等等的 Internet 服務都有一個共同的特性,就是在一開始會先連結到 Internet 上的某些 URL 作註冊,以取得使用權並取得上線的使用者列表及更新線上使用者的狀態。而使用者之間的資料交換,就直接於註冊主機交換,或是直接於兩個使用者之間作點對點 傳輸,不再經過註冊服務主機。而且這些程式都會使用特定的 port number 來區分不同的服務,所以在正常的防火牆管理上並不會太困難但若是配合 SSL tunnel 或是 local-host SOCKS proxy 來作 user VPN tunnel 出去的話就完全不同了,因為原始封包先經過 SSL 或 SOCKS proxy 轉包成 HTTP/HTTPS 的封包,防火牆會簡單的認定該封包資料只是 HTTP 或 HTTPS 封包,而且若是 SSL 或 HTTPS 的封包,因為己經加密過,所以就算使用封包過瀘也無法檢查,這時就只有使用 pattern match 的方式來過濾封包才有可能可以阻擋。

使 用像 P2P 等的檔案傳輸軟體共享及傳輸大量資料,一般只要注意不要干擾到別的網路服務即可。一般說來可以用 layer 2 及 layer 3 的 traffic QoS 來作管理,以避免在傳輸大量資料時干擾到別的服務。

在沒有 QoS 設定的網路上,資料的傳輸都為 FIFO 及 Best Effort,若有 congestion 發生時則使用 tail drop。 但這種設定在單純的資料傳輸環境及有足夠可用頻寬的網路可以運作得很好,不用特別設定。但若是在一個資料量很大而且有各種不同的傳輸要求時,就可能會因為 congestion 而大量資料被 tail drop。而 Bit-Torrent / E-Donkey / Kazaa 等 P2P 檔案傳輸軟體,大部份都會直接在 peers 之間交換資料,並分工合作,所以在有使用 P2P 軟體的網路上,一定可以看到非常大量的 session 在對多個 URL 同時作資料傳輸,這類軟體,預設會用掉網路的可用頻寬,而造成排擠到其他的服務。這時若網路有 QoS 設定,則可以先針對這些服務設定優先等級,以及可以使用的頻寬,並在網路頻寬不足時,針對不同形態的資料作不同程度的處理,讓需要優先處理的資料可以得到 比較多的網路資源及頻寬,而 P2P 軟體等有大量頻寬需求的資料傳輸,也還是可以在被控制下有一定量的頻寬運作,只是比較受限而己。

QoS 可以有很多不同的作法,不過簡單來說就是要保證網路被使用頻寬的合理性,確保比較重要的資料可以優先被處理並傳送到目的。何謂重要資料,一般說來就是公司 用來賺錢的資料為優先。但是若以資料形態細分下來,大致可以分為即時資料,像是 VoIP 語音及串流影像(video stream),用於影像會議,網路電話等。以及高生產價值的資料,如公司內的資料庫資料存取,以及一般資料像是電子郵件,web access,網管軟體 IM 等,最後為大量資料的檔案傳輸,如 FTP 及 P2P 檔案共享及遠端檔案備份/同步等。何種優先,取決於公司對於這些資料定義的 policy 而定。

QoS 的處理,一致可以分為 Classifier / Marking / Policing / Shape。將上一級 switch / router 傳送進來的資料分門別類,並貼上標籤,而在要傳送出去時,就依照分類的標籤,區分為不同的服務等級。各等級再依照不同的優先權限傳送到下一級的 switch/router。並可以視網路頻寬的使用情形,依照所分類的標籤對資料作不同的處理。在標籤方面可以有很多不同的選擇,像 layer 2 時可以使用 VLAN tag 中的 802。1p CoS 來作標籤,在 layer 3 方面, IP 可以用 ToS byte, Precedence, 或是 DiffServ 等方法來作為標籤,而要在不同的傳輸介質中保有相同的標籤設定,這時若有支援 MPLS 就會方便許多。而 QoS 最好是可以作到 end-to-end 的設定,可以保證設定的一致,所以一個網路內最好使用相同的標籤設定,從 core 到 distribution 到 access layer 全都是一樣的設定。一般建議使用 IP Precedence 為佳,並將不同的 QoS 標籤設定作相對的 mapping 以保持一致,例如 Layer 2 CoS to Layer 3 Precedence 對應及 Layer 3 Precedence to MPLS 標籤對應等。

有了標籤,再來就是將有相同標籤的資料放到同一個 output queue 中,等待傳輸。 queue 的方式也有很多種,像 First In First Out / Weight Round Robin /Weight Fair Queue / Priority Queue 等對不同數量的 queue 作不同的操作。而在 congestion 發生時如何處理 queue內的資料也有 Random Early Detect / Tail Drop / Weight Random Early Detect 等對超過處理能力的資料,作選擇性的操作,以減少 congestion 的發生機會。 在作了 mark 並放到不同的 queue 之後,再來就要將資料傳輸出去,但資料傳輸時還可以根據不同的 traffic model 需求對不同的 marking 作管制,例如某個 queue 的資料可以傳送最大的資料量,或是資料封包個數等,也可以作 shape 將傳輸資料以比較平均的傳輸量傳輸出去。若只是想簡單的對某些資料作流量管制,也可以直接使用 access list 分類出來再設定 traffic rate limit 直接限制流量即可。

結論:
要防止在硬體方面非授權網路設備連接到企業網路,可以用 802.1X 及 MAC address limit 對連接的使用者作授權檢查,並設定該 switch port 只可以連接一個網路設備,或者只允許表列的 MAC address 可以使用網路, 可以減化安全考量,但會增加在管理人員在管理 MAC address 上的負擔,而且若遇到有可移動的需求時,並不方便。建議昇級 access layer switch 至 layer 3 以上並支援 VLAN 及 QoS,並詳細規劃設定設定 access rule。

要防止以 user VPN 軟體將資料穿越防火牆,並改變或影響企業網路的穩定及安全、或是使用 P2P 檔案傳輸,可以用 QoS 及 firewall 及 web proxy 互相配合,並且一定要在 web proxy 上使用正面表列允許連結的網站,即可去除不必要的網站 traffic 及 非授權的 user VPN tunnel 過 proxy server,而其他不在表列中的位址則禁止使用,可以有效防止 SSL tunnel 和 SOCKS proxy 的 VPN tunnel 及資料傳輸。或者是使用 layer 7 的 pattern match filter 在網路 gateway 之前過濾封包。並對各種封包樣式作資料流量分析,並作為設定 QoS 的根據。

企業網路如何防止非授權網路連接


沒有留言:

發佈留言