OpenStack:建立虛擬的滲透測試實驗環境 – 網路篇
0x00 概述
對一個沙箱環境而言,其中最重要的一點就是網路的隔離,OpenStack網路支援Flat、VLAN、VXLAN等模式,配合路由器和防火牆可輕鬆虛擬一個簡單的企業網路。
0x01 網路環境
1.1 網路拓樸
不同網路區域首先得進行網路劃分,主要包含三個區域:
- 外網伺服器區:為網際網路提供服務,能訪問網際網路、內外伺服器區,不能訪問工作區域;
- 內網伺服器區:為外網伺服器、工作區提供服務,不能訪問網際網路、外網伺服器區、工作區;
- 工作區:辦公區域,各個部門間網路互通,可訪問網際網路、內網伺服器區、外網伺服器區。
這裡使用172.16.x.0/24
作為伺服器區的IP段,10.0.x.0/24
為工作區各部門的IP段,網路拓撲圖如下:
注:這裡網路、例項、路由器等名稱統一使用小寫。
1.2 公共網路
使用管理員登入Horizon,【管理員】-【網路】,這裡會看見一個為public
的網路,其IP段為172.24.4.225/28
(有強迫的可以刪掉),建立一個名為network_public
的外部網路和一個IP地址池為192.168.20.100-200
的子網。
有時外部網路和子網有在Web介面會建立失敗,使用SSH登入到伺服器使用命令建立:
因為只有一張網絡卡,為了減少去配IP的麻煩,這裡將浮動IP地址池(192.168.20.100-200
)配到與伺服器IP同一個段。
1.3 建立網路
【專案】-【網路】-【網路】,點選【建立網路】,會有三個選項:
- 網路:配置網路名稱;
- 子網:配置子網IP、掩碼、閘道器等資訊;
- 網路詳情:配置IP地支援、DHCP、DNS等資訊。
這裡伺服器區和辦公區的網段都使用DHCP進行IP分配,分別建立以下網路:
1.4 建立路由器
【專案】-【網路】-【路由器】,點選【建立路由器】,建立2個路由router_internal
和router_isp
,其中router_isp
選擇外部網路network_public
:
router_isp
點選router_isp
進入該路由器,切換到【介面】項,分別新增2個介面172.16.0.1
和192.168.0.5
:
再切換到【靜態路由表】項,分別新增辦公區和內網伺服器區的靜態路由:
router_internal
點選router_internal
進入該路由器,切換到【介面】項,分別新增以下連線介面:
再切換到【靜態路由表】項,新增一條預設路由:
0x02 建立例項
現在網路已經配置完,回到【專案】-【計算】-【例項】,點選右上角【啟動例項】,按照拓樸選擇對應網路分別建立以下例項:
這裡全部使用CentOS7
的映像,建立完後,【專案】-【網路】-【網路拓樸】大概是這樣:
這時你會發現,所有例項之間都是能ping
得通的,並沒有想要之前設定的結果,這時就需要防火牆。
0x03 FwaaS
FwaaS(FireWall-as-a-Service),即防火牆服務,防火牆可以在路由器上做策略。
3.1 安裝FwaaS
通過yum
安裝FwaaS:
# yum -y install openstack-neutron-fwaas
載入防火牆
在service_plugins
後面加上firewall
:
新增所需驅動程式:
Horizonz中啟用防火牆,修改enable_firewall
為True
:
將修改更新到資料庫:
重啟Neutron服務:
# systemctl restart neutron-server
3.2 配置防火牆
重新登入Horizonz,在【專案】-【網路】下的選單會新增【防火牆】這一項,切換到【防火牆規則】新增以下規則:
切換到【防火牆策略】,新增一條策略,並加入剛才配置的2條規則:
切換到【防火牆】,新增一條記錄,選擇剛才建立的策略,並關聯router_internal
路由器:
3.3 測試防火牆
在外網伺服器區使用server_www(172.16.0.5)
分別ping網際網路、辦公區、內網伺服器區:
在辦公區使用it_pc1(10.0.10.3)
分別ping網際網路、外網伺服器區、內網伺服器區、人力資源部:
在內網伺服器區使用server_db(172.16.10.4)
分別ping網際網路、外網伺服器區、辦公區:
網路隔離效果已經達到了設定要求。
0x04 網路對映
在www_server(172.16.0.5)
上啟動httpd服務,監聽80埠,現在要將該伺服器的HTTP服務對映到“網際網路”(192.168.20.100-200)。
4.1 關聯浮動IP
【專案】-【計算】-【例項】,選擇例項【操作】下拉選單,選擇管理浮動IP:
這時在例項列表【IP 地址】列會多出一個浮動IP192.168.20.101
:
4.2 安全組
這時從外部還不能訪問該伺服器,需要在安全組新增入口規則放行,【專案】-【計算】-【訪問 & 安全】新新增一條記錄sg_public
,然後新增一條規則:
現在訪問http://192.168.20.101:
至此,一個簡單的虛擬網路環境已經建立起來,其中還存在很多安全上的問題,比如通過例項可以訪問192.168.20.7上的服務,一個合適的滲透測試環境還需要逐漸去完善。
0x05 參考
- https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html/networking_guide/sec-fwaas
- https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux_OpenStack_Platform/6/html/Administration_Guide/Networking-ExternalConnectivity.html