背景:openstack在h版之前的時候,租戶可以租用虛擬機器發動dos攻擊,很多攻擊的方式是偽造源位址。還有別的攻擊,如arp攻擊等等,都是通過偽造源mac或ip位址實現的。本文簡單介紹一下openstack中抵禦虛假源位址的攻擊。
這種攻擊的特點是攻擊者從虛擬化系統內部發起,攻擊目標可能是公網主機,或者是內網的主機。對於前者的防禦比較容易,只需要在物理網路邊界就可以部署安全設施進行檢測和清洗;但是後者的攻擊流量大部分是存在於虛擬網路和虛擬網路裝置中,物理的安全裝置是無法觀測或理解物理網路中的流量,無法進行有效的防護,所以對於始於內部的dos攻擊,應該在虛擬化環境中將檢測並抵禦。
在openstack的架構下,預計一種檢測dos攻擊的方式是依靠檢測模組ceilometer,等它成熟之後,就可及時通知管理員或系統,通過ceilometer與neutron協作堵住這種攻擊。
不過現在ceilometer還在初級階段,所以還是需要依靠網路虛擬化模組neutron進行防護,好在iaas系統知道vm的真實ip和mac,所以可以直接在l2防火牆上對資料報進行過濾,h版已經引入了這部分特性。
下面以一台vm為例:
# neutron port-list|grep 100.0.0.16
| 368d35e1-4db7-405f-af26-1f2b6f224bd8 | | fa:16:3e:34:c8:f8 | |
2013.2.1引入了基於iptables的過濾方案
iptables -l -nvx 可以看到:
chain neutron-openvswi-s368d35e1-4 (1 references)
pkts bytes target prot opt in out source destination
212 29180 return all — * * 100.0.0.16 0.0.0.0/0 mac fa:16:3e:34:c8:f8
0 0 drop all — * * 0.0.0.0/0 0.0.0.0/0
此處允許真實ip和mac的資料報經過,對其他資料報拋棄
2013.2.2 引入了基於ebtables的過濾方案
ebtables -t nat -l 可以發現下面項
bridge chain: libvirt-i-tap368d35e1-4d, entries: 6, policy: accept
-j i-tap368d35e1-4d-mac
-p ipv4 -j i-tap368d35e1-4d-ipv4-ip
-p ipv4 -j i-tap368d35e1-4d-ipv4
-p arp -j i-tap368d35e1-4d-arp-mac
-p arp -j i-tap368d35e1-4d-arp-ip
bridge chain: i-tap368d35e1-4d-mac, entries: 2, policy: accept
-s fa:16:3e:34:c8:f8 -j return
-j drop
bridge chain: i-tap368d35e1-4d-ipv4-ip, entries: 3, policy: accept
-p ipv4 –ip-src 0.0.0.0 –ip-proto udp -j return
-p ipv4 –ip-src 100.0.0.16 -j return
-j drop
bridge chain: i-tap368d35e1-4d-arp-mac, entries: 2, policy: accept
-p arp –arp-mac-src fa:16:3e:34:c8:f8 -j return
-j drop
bridge chain: i-tap368d35e1-4d-arp-ip, entries: 2, policy: accept
-p arp –arp-ip-src 100.0.0.16 -j return
-j drop
可見確實將vm的mac和ip進行了過濾,防止其他ip和mac的資料報經過
雖然這種防護可以抵禦偽造源位址的攻擊,但是無法抵禦使用真實源位址的dos攻擊,遇到這種情況,還是採用ceilometer或是sdn的流檢測的方式較好。
p.s.1 為什麼我會知道這些openstack版本的防護特性,我會告訴你這些特性讓我不能測試ddos攻擊嗎…
p.s.2 除了iptables和ebtables之外,還有沒有其他方法?當然有,設想一下這個場景,vm啟動之後,neutron在建立port之後向sdn網路控制器傳送通知,網路控制器向ovs傳送流指令,允許ip、mac繫結資料流通過vm所在的交換機埠,然後禁止其他資料流從該埠通過。那為什麼不這麼做呢,原因1:需要sdn控制器,原因2:資料流先經過linux bridge,所以不如直接在linux bridge上應用iptables和ebtables。
p.s.4 在sdn+openstack環境下,租戶發起的dos的第乙個受害者將是網路控制器,所以floodlight在流量控制中做了一些工作,可參見這篇文章。
git 新增源位址和檢視源位址
git remote set url add origin就是往當前git專案的config檔案裡增加一行記錄 config檔案開啟方式有兩種 使用命令git config e在當前git專案的根目錄下,檔案位於 git config git目錄為隱藏檔案 你每執行一次git remote set ...
各種資源位址
1 ios學習資源整合 2 唐巧的技術部落格 3 adobe cs6 cs5系列軟體序列號破解教程 4 5 慕課分享 盤點2014年熱門免費開發課程 6 ios storyboards by daniel h steinberg 寫storyboard的書暫時找不到 8 ios部落格 10 繪圖框架...
共享開源位址
網易開源映象站 阿里 北京理工大學 ipv4 only ipv6 only 北京交通大學 ipv4 only ipv6 only ipv4 ipv6 蘭州大學 廈門大學 清華大學 ipv4 ipv6 ipv6 only ipv4 only 天津大學 中國科學技術大學 ipv4 ipv6 東北大學 i...