Cyber-Security:IPv6 & Security
IPv6
IPv6(Internet Protocol version 6)是互聯網協議的最新版本,用於分組交換互聯網路的網路層協議,旨在解決IPv4地址枯竭問題。IPv6二進位制下為128位長度,以16位為一組,每組以冒號「:」隔開,可以分為8組,每組以4位十六進位方式表示。例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344 是一個合法的IPv6地址。
IPv6 報文包格式
定義:RFC 1883中定義的原始版本,RFC 2460中描述的現在提議的標準版本。
IPv6地址分類
- 單播地址(unicast):單播地址標示一個網路介面,協議會把送往地址的數據包送往給其介面。單播地址包括可聚類的全球單播地址、鏈路本地地址等。
- 多播地址(multicast):多播地址也稱組播地址。多播地址也被指定到一群不同的介面,送到多播地址的數據包會被發送到所有的地址。
- 任播地址(anycast):Anycast 是 IPv6 特有的數據發送方式,它像是IPv4的Unicast(單點傳播)與Broadcast(多點廣播)的綜合。
Anycast像 IPv4 多點廣播(Broadcast)一樣,會有一組接收節點的地址欄表,但指定為Anycast的數據包,只會發送給距離最近或發送成本最低(根據路由表來判斷)的其中一個接收地址,當該接收地址收到數據包並進行回應,且加入後續的傳輸。該接收列表的其他節點,會知道某個節點地址已經回應了,它們就不再加入後續的傳輸作業。以目前的應用為例,Anycast地址只能分配給路由器,不能分配給電腦使用,而且不能作為發送端的地址。
IPv6 & Cyber-Security
對我們網路的攻擊來自各種各樣的來源:社會工程(Social Engineering)、粗心、垃圾郵件、網路釣魚、操作系統漏洞、應用程序漏洞、廣告網路、跟蹤和數據收集、服務提供商窺探等。作為一個新興的網路協議,安全問題同樣無法避免。
IPsec/TLS/SSL/SSH
IPsec(網際網路安全協議,Internet Protocol Security,RFC 4301、RFC 4309 ),旨在在網路層為IP分組提供安全服務,包括訪問控制、數據完整性、身份驗證、防止重放和數據機密性。IPsec原本是為IPv6開發,但是在IPv4中已被大量部署。最初,IPsec是IPv6協議組中不可少的一部分,但現在是可選的。
在傳輸模式下,IPsec在IP報頭和高層協議之間插入一個報頭,IP報頭與原始IP報頭相同,只是IP協議欄位被改為ESP或者AH,並重新計算IP報頭的校驗和。IPsec假定IP端點是可達的,源端頭不會修改IP報頭中的目標IP地址。IPsec 工作在網路層。其它加密協議如 TLS/SSL 和 SSH,工作在傳輸層之上,是針對具體應用的。
NAT = Security ?
NAT is not and never has been about security.
NAT(Network Address Translation) 是一種在IP數據包通過路由器或防火牆時重寫來源IP地址或目的IP地址的技術.NAT 延長了 IPv4的壽命。它的本意是通過地址偽裝,阻止外部網路主機的惡意活動,阻止網路蠕蟲病毒來提高本地系統的可靠性,阻擋惡意瀏覽來提高本地系統的私密性。另外,它也為UDP的跨區域網的傳輸提供了方便。很多防火牆都NAT功能,它使防火牆變成有狀態的,檢查所有的流量、跟蹤哪些數據包進入您的內部主機,並將多個私有內部地址重寫到一個外部地址。它在外部網關上創建一個單點故障源,並為拒絕服務(DoS)攻擊提供了一個簡單的目標。NAT有它的優點,但安全不是其中之一。
Source routing
Source routing 允許發送方控制轉發,而不是將其留給任何一個包通過的路由器,通常是OSPF(Open Shortest Path First,開放最短路徑優先)。Source routing 有時用於負載平衡,和管理VPN(Virtual Private Network,虛擬專用網路),所以,Source routing 並不是 IPv6 帶來的特性,但是提出了許多安全問題。你可以用它來探測網路,獲取信息,繞過安全設備。路由報頭0型(RH0)是使源路由的IPv6擴展報頭,它一直受到抨擊,因為它使一中非常聰明的DoS攻擊被放大,在兩個路由器之間的反彈包直到它們超載及帶寬耗盡。
大就是強 ?
有些人認為IPv6地址空間如此之大,為網路掃描提供了一種防禦。這是一種錯誤的觀念。我們確實有潛在的龐大地址資源可供應用,但是我們傾向於在可預見的範圍組織我們的網路。硬體在變得廉價的和強大,雲計算資源的快速發展在惠及企業的同時,也降低了攻擊方的門檻和成本(黑客、黑產)。計算機網路的複雜性決定了挫敗惡意網路掃描的困難很大,包括在IPv6網路中進行監測辨別哪些屬於本地訪問、哪些不是,IPv6 控制訪問的問題在於,它的管理能力要求超過了其它任何協議。傳統的防禦工具和方法論都有待更新。
IPv6 & Linux Security
iptables & ip6tables
ip6tables命令和iptables一樣,都是Linux中防火牆軟體
# Block All IPv6n$vi /etc/sysctl.conf:nnet.ipv6.conf.all.disable_ipv6 = 1nnet.ipv6.conf.default.disable_ipv6 = 1n# load your changes:n$ sudo sysctl -pnnet.ipv6.conf.all.disable_ipv6 = 1nnet.ipv6.conf.default.disable_ipv6 = 1n# Testn$ ping6 -c3 -I eth0 fe80::f07:3c7a:6d69:8d11nPING fe80::f07:3c7a:6d69:8d11(fe80::f07:3c7a:6d69:8d11)nfrom fe80::2eef:d5cc:acac:67c wlan0 56 data bytesn--- fe80::2eef:d5cc:acac:67c ping statistics ---n3 packets transmitted, 0 received, 100% packet loss, time 2999sn# Listingn$ sudo ip6tables -Ln# Flushingn$ sudo ip6tables -Fn
Example Rules
#!/bin/bashnn# ip6tables single-host firewall scriptnn# Define your command variablesnipt6="/sbin/ip6tables"nn# Flush all rules and delete all chainsn# for a clean startupn$ipt6 -Fn$ipt6 -Xnn# Zero out all countersn$ipt6 -Znn# Default policies: deny all incomingn# Unrestricted outgoingnn$ipt6 -P INPUT DROPn$ipt6 -P FORWARD DROPn$ipt6 -P OUTPUT ACCEPTnn# Must allow loopback interfacen$ipt6 -A INPUT -i lo -j ACCEPTnn# Reject connection attempts not initiated from the hostn$ipt6 -A INPUT -p tcp --syn -j DROPnn# Allow return connections initiated from the hostn$ipt6 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTnn# Accept all ICMP v6 packetsn$ipt6 -A INPUT -p ipv6-icmp -j ACCEPTnn# Optional rules to allow other LAN hosts accessn# to services. Delete $ipt6 -A INPUT -p tcp --syn -j DROPnn# Allow DHCPv6 from LAN onlyn$ipt6 -A INPUT -m state --state NEW -m udp -p udp n-s fe80::/10 --dport 546 -j ACCEPTnn# Allow connections from SSH clientsn$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPTnn# Allow HTTP and HTTPS trafficn$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPTn$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPTnn# Allow access to SMTP, POP3, and IMAPn$ipt -A INPUT -m state --state NEW -p tcp -m multiport n--dport 25,110,143 -j ACCEPTn
SSH and SCP
我們熟悉的文件拷貝工具:SSH, SCP, 和 Rsync 都支持 IPv6,壞消息是他們的語法怪異。
所有 Linux 管理員都知道使用 SSH 和 SCP。 它們在 IPv6 網路中有一些怪異,特別是關於遠程地址,一旦你弄明白這個問題就能像過去一樣熟練使用 SSH 和 SCP 。默認情況下,sshd 守護進程同時監聽 IPv4 和 IPv6 協議,你可以通過 netstat 查看:
$ sudo netstat -pant|grep sshdntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1228/sshd ntcp6 0 0 :::22 :::* LISTEN 1228/sshdn## 通過 sshd_config 中的 AddressFamily 選項禁用任何一種協議。禁用 IPv6:n## 默認選項為 any ,只允許IPv6 inet6nAddressFamily inetnn## 在客戶端方面,通過 IPv6 網路登陸和 IPv4一樣登陸、運行命令行以及退出。n$ ssh carla@2001:db8::2n$ ssh carla@2001:db8::2 backupnn## 您可以使用鏈路本地地址訪問本地區域網上的主機。n## 這有一個無正式文檔說明的怪癖,會讓你抓狂,但現在你知道它是什麼:你必須把你的網路介面名稱與遠程地址用符號 「%」 連接。n$ ssh carla@fe80::ea9a:8fff:fe67:190d%eth0n
你也可以簡化遠程root登錄。聰明的管理員禁用root登錄ssh,所以你必須登錄為一個普通用戶,然後換為root用戶登錄。這不是那麼費力,但我們可以用一個命令來完成這一切,系統將在倒數120分鐘後停止!這個shutdown將持續打開直到完成運行,所以中途你能改變注意並且用尋常的方式取消shutdown,通過 Ctrl+c。
$ ssh -t carla@2001:db8::2 "sudo su - root -c shutdown -h 120"ncarla@2001:db8::2s password:n[sudo] password for carla:nBroadcast message from carla@remote-servern (/dev/pts/2) at 9:54 ...n## 技巧:強制使用 IPv4 或者 IPv6n$ ssh -6 2001:db8::2n
SCP是怪異的。你必須在鏈路本地地址的後面使用符號「%」來指定網路介面,並且將地址用方括弧括起來,並避開括弧;如果使用全球單播地址則不需要指定網路介面,但是依然需要方括弧。
$ scp filename [fe80::ea9a:8fff:fe67:190d%eth0]:ncarla@fe80::ea9a:8fff:fe67:190ds password:nfilenamenn$ scp filename [2001:db8::2]:ncarla@2001:db8::2s password:nfilenamenn## 示例:登錄到遠程主機上的不同用戶帳戶,指定將文件複製到的遠程目錄,並更改文件名:nscp filename userfoo@[fe80::ea9a:8fff:fe67:190d%eth0]:/home/userfoo/files/filename_2n
Rsync
rsync 要求使用各種標點符號封閉遠程的 IPv6 地址。與以往一樣,請記住源目錄中的尾隨斜杠,例如 /home/carla/files/ ,表示只複製目錄的內容。省略尾隨斜杠將複製目錄及其內容。尾隨斜線並不重要,關鍵是你的目標目錄。
## 全球單播地址不需要指定網路介面:n$ rsync -av /home/carla/files/ carla@[2001:db8::2]:/home/carla/stuffncarla@f2001:db8::2s password:nsending incremental file listnsent 100 bytes received 12 bytes 13.18 bytes/secntotal size is 6,704 speedup is 59.86n## 使用鏈路本地地址時必須包含網路介面。n$ rsync -av /home/carla/files/ carla@[fe80::ea9a:8fff:fe67:190d%eth0]:/home/carla/stuffn
推薦閱讀:
※Odinaff:一個專門針對銀行業的木馬
※匿名者(Anonymous)組織羅馬尼亞分部的前領導人的自述
※為什麼電子郵件允許冒充發件人?
※直播預告 · Extension & Machine Learning Security - Week 15
※objection - 基於 Frida 的 iOS APP Runtime 探測工具