企業升級 IPv6 注意事項與 雲端 IPv6 實務演練 黃能富特聘教授 國立清華大學資訊工程系 E-mail: nfhuang@cs.nthu.edu.tw All rights reserved. No part of this publication and file may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without prior written permission of Professor Nen-Fu Huang (E-mail: nfhuang@cs.nthu.edu.tw).
大綱 企業升級 IPv6 安全建議 企業升級 IPv6 注意事項 雲端 IPv6 實務演練
IPv6 安全技術強化 IPv4 網路常見的攻擊已可藉由成熟的防禦機制過濾 IPv6則從設計上提供比IPv4更完整的網路安全機制,如: 更多的網址空間 (Larger address space): IPv4掃描一個Class C 網路僅需約四分鐘 IPv6一個子網包含 64 位元,整個掃描則需耗時數百億年 預設啟動IP安全性協定 (Internet Protocol Security, IPSec): IPv4也支援IPsec,但為選擇性使用 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6 安全技術強化 IPv6由RFC4301指定所有網路節點都須使用 IPsec。IPsec 包含Authentication Header(AH)和 Encapsulating Security Payload (ESP),以及Internet Key Exchange (IKE) 等技術 IPv6提供更佳設計,可以防止封包欺騙、偽造、修改、重播等攻擊 使用鄰居探索(Neighbor Discovery, ND)進行 IP MAC 轉換: IPv4 以 Layer 2 廣播封包 ARP-RARP 找出主機位址 IPv6 ND 以 layer 3 群播封包操作減少欺騙主機的可能 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv4/IPv6雙協定安全議題 雖 IPv6 已增強安全性,但仍有許多安全性挑戰 導入IPv4/IPv6雙協定後的安全性議題包含: 雙堆疊安全性問題:例如不適當的防火牆攔截、不穩定的DNS區域記錄等,因此在網路建立前就須審慎規劃 ICMPv6安全性問題:IPv6網路亦存在封包被攔截的可能,由於採用路由群播訊息 (Router Advertisement, RA),以讓主機自動獲取 IPv6 位址,可能發生入侵者假扮為路由設備並發出偽造的 RA 訊息 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv4/IPv6雙協定安全議題 標頭操作相關議題:多延伸性標頭 (Extension headers) 處理較複雜, 大封包可能被利用來癱瘓某些特定節點 (例如防火牆) 最好的方式是過濾掉不支援的服務流量 網路管理者可根據這些建議,對內部網域進行管控,觀察IPv6 流量,若有異常流量 (要求不存在之服務) 則設定規則過濾之 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv4/IPv6雙協定安全議題 Spoofing 議題:偽造網址仍然可能發生在IPv6網路中,但由於Neighbor Discovery,偽造網址範圍僅侷限在內部網域 Flooding 議題:IPv6 不使用廣播位址已大幅減少攻擊的可能性,但群播仍是問題。最主要的防範方式仍為過濾不存在服務之流量 Mobility 議題:移動性為IPv6的新特色,利用真實位址(real address)和移動位址(mobile address) 可提供無縫漫遊. 由於此種網路的特性加上暫時性的移動位址可能暴露而成為欺騙攻擊,網路管理者須全面了解設定。 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6網路安全防護建議 網路安全防護是矛與盾的戰爭,越厲害的矛會驅使發明更厲害的盾 因 IPv6 網路尚未成為主流,網路攻擊事件尚不多 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6網路安全防護建議 目前主流的網路安全設備大都已支援 IPv6,可參考以下建議,將IPv6網路納入安全防護系統中: 防火牆 (Firewall) 清查既有防火牆是否支援IPv6,如尚未支援,應經由升級或重新採購,取得支援IPv6的能力 如以韌體升級方式支援 IPv6,須注意檢查 CPU 負載及記憶體的消耗狀況,避免效能不足 防火牆支援IPv6後可參考IPv4 規則設定 IPv6 的過濾方式 (ACL),再依據觀測的IPv6流量資訊,逐步完善 IPv6 的防禦規則 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6網路安全防護建議 ICMPv6 在 IPv6網路扮演很重要的角色,在IPv4網路裡大部分的 ICMP都會被關掉,再選擇適當的項目開放。 IPv6 的操作則相反,以下是依據 RFC 4890整理的列表,建議詳讀 RFC 4890 再參考訂定: 必須開放的 ICMP:Types 1, 2, 3, 4, 128, 129, 130, 131, 132, 143, 148, 149, 151, 152, 153, 133, 134, 135, 136, 141, 142 通常開放的 ICMP:Types 3 -Code 1, Type 4 -Code 0 必須過濾丟棄的 ICMP:Types 138,144,145,146,147 視需要制定過濾丟棄的 ICMP:Types 137,139,140,5-99,102,126 ICMPv6列表:http://en.wikipedia.org/wiki/ICMPv6 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6網路安全防護建議 NetFlow 升級路由器的IOS至支援 NetFlow v9 以上,以提供IPv6的流量統計資料 Netflow 分析軟體 (如Netflow Analyzer)也要升級支援IPv6 建議先針對下列IPv6流量資訊進行蒐集觀察,並依據異常現象制定更精細的網路安全管理規範: 依服務類別統計流量: 每天統計流量資訊,例如 Inbound、Outbound、SSH連線、FTP連線、網路芳鄰、遠端桌面連線、遠端程序呼叫、Proxy、Mail、ICMP 等進行統計 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
IPv6網路安全防護建議 統計的項目包括連線流量、封包數目、封包大小等,並在位居排名前面(如前20名)的服務類別中,觀察送出該流量的IP位址、總流量數、總封包數、總封包大小等等 個人IPv6流量資訊查詢: 每天依據使用者IPv6位址統計網路流量,項目包含上述的各種服務,並以圖表呈現各類別流量一週的使用資訊。 DPI 封包內容檢測系統 DPI主要目的為觀察封包內容並比對出可疑流量 IPv6流量內容的比對方式與IPv4相同,但目前尚未累積足夠專屬的IPv6可疑流量特徵碼 (Signatures) 建議可配合Netflow的統計,針對異常流量進行內容的觀察,以蒐集建立異常流量的特徵資料庫。 資料來源:台灣網路資訊中心(TWNIC) http://ipv6up.tw/index.php
企業升級 IPv6 注意事項
伺服器作業系統/應用軟體導入 IPv6 Windows Web server (IIS) 各版本IIS伺服器對 IPv6 支援簡介 須至 Microsoft 網站下載 IPv6Kit 軟體 內建 IIS5 ,不支援 IPv6 Windows 2003 內建 IPv4/IPv6 Dual Stack ,可輕易啟用 內建 IIS6 ,支援 IPv6 ,圖形介面不支援 IPv6 設定 Windows 2008 支援 Native IPv6 功能,預設啟用 IPv6 內建 IIS7 ,支援 IPv6 ,圖形介面支援 IPv6 設定 Windows 2012 支援 Native IPv6功能,預設啟用 IPv6 內建 IIS8,支援IPv6,圖形介面支援 IPv6 設定 Linux Web server (Apache) Apache是Unix-like OS中最常見的 Web Server Apache 1.3 版就開始支援 IPv6 Apache 2.0 已經預設並啟動 IPv6/IPv4 Dual-Stack 運作 在CentOS 5.3 的 Apache 2.2.3-22 也是如此
網頁程式支援 IPv6 修改網頁程式支援IPv6最重要的就是避免使程式碼只支援IPv4,修改成可支援 IPv4/IPv6 雙協定的程式語法: 網頁連結處以 Domain Name 取代IP位址以增加彈性。 儲存IP位址的資料庫、提供用戶輸入位址的操作介面,都必須修改為支援 IPv6 位址的格式。 依程式語言分述如下: 網頁前端程式導入IPv6 HTML HTML 語言裡的超連結位址,如果以 IPv4 網址為連結,建議改為 Domain Name 的連結位址,以增加移轉彈性。
網頁程式支援 IPv6 ASP ASP 程式語言可使用下列語法取得客戶端IP位址(此函數同時支援IPv4及IPv6): <%=Request.ServerVariables("REMOTE_ADDR")%> ASP.net ASP.NET 程式語言可用類似下列語法取得客戶端IP位址(本函數同時支援IPv4及IPv6): Your IP Address : <% Response.Write (Request.UserHostAddress)%> JSP JSP 程式語言可使用下列語法取得客戶端IP位址(本函數同時支援IPv4及IPv6): RemoteAddr: <%=request.getRemoteAddr()%> <br> RemoteHost: <%=request.getRemoteHost()%>
網頁程式支援 IPv6 網頁後端程式導入IPv6 PHP 連結位址需將 IPv4 網址改成 Domain Name 的形式,在PHP程式設計中,網路存取獲得使用者 IP位址之函數語法為(此函數同時支援IPv4及IPv6): $_SERVER['REMOTE_ADDR'] 其他程式 C/C++ 位址轉換功能函數應可同時支援 IPv4/IPv6,例如C、C++語言可使用inet_ntop() 與 inet_pton()。 主機名稱和IP位址解析應使用getaddrinfo()及getnameinfo()函數,避免使用gethostbyname()、gethostbyaddr()、getservbyname()及getservbyport()。
網頁程式支援 IPv6 發展與IP版本無關的程式碼,所有資料結構及APIs都應和IP版本無關。例如使用Independent Structures時,應盡量避免使用structs_in_addr, in6_addr, sockaddr_in, sockaddr_in6。 可上網下載如 checkv4.exe 與 PortToIPv6 等程式 可檢查 IPv4 相關函數及參數,並提供相對應的 IPv6 函數以供參考。 但是此類檢查工具均有安裝平台與檢查之程式語言限制, 結果僅供參考,不一定能找出所有需修改之處
導入IPv6注意事項 網路伺服器使用的後台程式與Plug-in眾多,反映在系統務實上仍需注意幾個重點: ISP IPv6連線狀態 系統 routing table 狀態 後臺網路程式 IPv6 是否開啟 網頁前後台程式網址擷取問題
導入IPv6注意事項 ISP IPv6連線狀態 由於目前大部分系統都是Dual stack運行,系統又自動啟用,有可能發生IPv6啟用,管理者卻不知情的狀況 系統routing table狀態 所有應用程式到底是走IPv6或是IPv4出去,routing table上也要確認 後臺網路程式IPv6是否開啟 雖然目前大部分的網路程式都支援IPv6,在導入時使用到程式是否有將IPv6開啟,需要做額外的檢查 網頁前後台程式網址擷取問題 以網頁為例, 若有擷取到觀察使用者IP網址的程式碼時,需注意語法及位址轉換的問題
雲端 IPv6 實務演練
雲端 IPv6 實務演練 雲端虛擬機器租賃使用 IPv6 基本設定與操作 雲端 DNSv6 服務 雲端 Iptables 設定 雲端IPv6 網路流量監控工具 (Cacti) 雲端演示 video
雲端 IPv6 實務演練 ISP (如中華電信等等) 已提供IPv6位址申請服務 市售路由器大都已支援 IPv6 連價格台幣699的無線網路 AP 都支援 IPv6 硬體與系統不是使用 IPv6 的門檻 家用或自用可自行向電信商申請 IPv6 啟用 企業升級顧慮安全與服務穩定性需妥善規劃依照步驟升級 Google, Yahoo等網站都有已經支援IPv6,因此也不用擔心服務中斷 建議先使用雲端服務進行 IPv6 實務演練
雲端 IPv6 實務演練 IPv6的實體聯通設定程序與網路環境較複雜一點 可使用雲端虛擬機器來練習,利於系統建構訓練 幾乎所有雲端服務平台租賃虛擬機器 (Virtual Machine) 都有提供IPv6服務 學生可以申請 GitHub 的 Student pack,裡面包含免費的VM、SMTP、DNS等服務,但需注意有額度限制,而且大部分的服務都需要註冊一張信用卡 https://education.github.com/pack 業界人士可以直接上網租用虛擬機器或是使用自己的實體機器做練習
雲端 IPv6 虛擬機器租用範例 https://www.digitalocean.com
雲端 IPv6 虛擬機器租用範例 建立DigitalOcean IPv6 VM
雲端 IPv6 虛擬機器租用範例 建立 DigitalOcean IPv6 VM
虛擬機器 IPv6基本設定與操作 Ifconfig and ping6 Ifconfig 確認取得IPv6 位址
虛擬機器 IPv6基本設定與操作 Ping6 Google service 確認已連上IPv6網路
虛擬機器 IPv6基本設定與操作 Routing table 可看到已有 IPv4與IPv6的routing tables 否則可能出現安全問題
雲端虛擬機器 DNSv6 設定 DNS雲端服務普及 非大型組織管理者可不須自行架設 DNS server,以免造成網路安全風險 大部分雲端服務供應商都支援 AAAA 域名服務
雲端虛擬機器 Iptables 設定 Linux系統會有iptables與ip6tables IPv6支援無問題, 但須注意人為疏失 例如已啟動 http server 並在IPv4與IPv6網域都可正常訪問
雲端虛擬機器 IPtables 如因系統需求擬設定防火牆阻擋 port 80 的訪問 Iptables 成功設定 Ip6tables 未設定
雲端虛擬機器 IPtables 因忘記IPv6的阻擋設定,結果 IPv6 網頁還可訪問
雲端 IPv6 流量觀測工具 – Cacti (仙人掌) Cacti is a complete network graphing solution designed to harness the power of RRDTool's data storage and graphing functionality. Cacti provides a fast poller, advanced graph templating, multiple data acquisition methods, and user management features out of the box. All of this is wrapped in an intuitive, easy to use interface that makes sense for LAN-sized installations up to complex networks with hundreds of devices. http://www.cacti.net/
雲端 IPv6 流量觀測工具 -- Cacti http://www.cacti.net/
雲端 IPv6 流量觀測工具 -- Cacti http://www.cacti.net/
安裝 Cacti sudo apt-get install snmpd cacti cacti-spine 若尚未安裝MySQL需要輸入MySQL密碼
安裝 Cacti 使用編輯器修改 /etc/snmp/snmpd.conf 修改內容以支援IPv4 and IPv6 # Listen for connections from the local system only # agentAddress udp:127.0.0.1:161 # Listen for connections on all interfaces (both IPv4 *and* IPv6) agentAddress udp:161,udp6:[::1]:161 找到ACCESS CONTROL rocommunity secret SERVER_IP 重啟snmpd sudo service snmpd restart
安裝Cacti 進入網頁安裝介面 http://yourIP/cacti 確認設定沒問題後按下Finish 接下來用以下帳密登入 UN: admin PW: admin
安裝Cacti 進入頁面後點入 Settings 依右方畫面進行設定
安裝Cacti 設定完後須清除cache 否則會存有舊資料 顯示可能不正確
安裝Cacti 再到Devices刪除localhost裝置 因為剛剛已將secret以及讀取權限設定至特定IP
安裝Cacti 刪除後按右上角add 新增裝置 Description and Hostname就依照先前設定 HOST template SNMP version SNMP community 須按右圖做修改
安裝Cacti 新增完裝置後,就已跟裝置做連接 接下來要設定欲觀看圖表 點進Devices後,選擇欲觀察之裝置 拉到最下面後,新增圖表內容 增加完成後在右上角點擊創造圖表
安裝Cacti
觀看 IPv6 相關流量統計資料 接下來按左上角 graphs 後就可觀看所有設定圖表
觀看 IPv6 相關流量統計資料範例
雲端 IPv6 實務演練 Video