前面我們學習了安全組,今天學習另一個與安全相關的服務 -- FWaaS。
理解概念
Firewall as a Service(FWaaS)是 Neutron 的一個高級服務。
用戶可以用它來創建和管理防火牆,在 subnet 的邊界上對 layer 3 和 layer 4 的流量進行過濾。
傳統網絡中的防火牆一般放在網關上,用來控制子網之間的訪問。 FWaaS 的原理也一樣,是在 Neutron 虛擬 router 上應用防火牆規則,控制進出租戶網絡的數據。
FWaaS 有三個重要概念: Firewall、Policy 和 Rule。
Firewall
租戶能夠創建和管理的邏輯防火牆資源。 Firewall 必須關聯某個 Policy,因此必須先創建 Policy。
Firewall Policy
Policy 是 Rule 的集合,Firewall 會按順序應用 Policy 中的每一條 Rule。
Firewall Rule
Rule 是訪問控制的規則,由源與目的子網 IP、源與目的端口、協議、allow 或 deny 動作組成。
例如,我們可以創建一條 Rule,允許外部網絡通過 ssh 訪問租戶網絡中的 instance,端口為 22。
與 FWaaS 容易混淆的概念是安全組(Security Group)。
安全組的應用對象是虛擬網卡,由 L2 Agent 實現,比如 neutron_openvswitch_agent 和 neutron_linuxbridge_agent。
安全組會在計算節點上通過 iptables 規則來控制進出 instance 虛擬網卡的流量。
也就是說:安全組保護的是 instance。
FWaaS 的應用對象是 router,可以在安全組之前控制外部過來的流量,但是對於同一個 subnet 內的流量不作限制。
也就是說:FWaaS 保護的是 subnet。
所以,可以同時部署 FWaaS 和安全組實現雙重防護。
啟用 FWaaS
因為 FWaaS 是在 router 中實現的,所以 FWaaS 沒有單獨的 agent。 已有的 L3 agent 負責提供所有 FWaaS 功能。
要啟用 FWaaS,必須在 Neutron 的相關配置文件中做些設置。
配置 firewall driver
Neutron 在 /etc/neutron/fwaas_driver.ini 文件中設置 FWaaS 使用的 driver。 如下圖所示:
這里 driver 為 iptables。如果以后支持更多的 driver,可以在這里替換。
配置 Neutron
在 Neutron 配置文件 /etc/neutron/neutron.conf 中啟用 FWaaS plugin。
配置完畢!下節我們開始創建 Firewall。