Linux下雙網(wǎng)卡Firewalld的配置流程(推薦)
實驗室擬態(tài)存儲的項目需要通過LVS-NAT模式通過LVS服務器來區(qū)隔內外網(wǎng)的服務,所以安全防護的重心則落在了LVS服務器之上。筆者最終選擇通過firewalld放行端口的方式來實現(xiàn)需求,由于firewall與傳統(tǒng)Linux使用的iptable工具有不小的區(qū)別,接下來通過博客來記錄一下firewalld的配置流程。
1.Firewall服務的簡介:
firewalld提供了一個 動態(tài)管理的防火墻,用以支持不同網(wǎng)絡區(qū)域的規(guī)則,分配對一個網(wǎng)絡及其相關鏈接和界面一定程度的信任。它具備對 IPv4 和 IPv6 防火墻設置的支持。它支持以太網(wǎng)橋,并有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火墻規(guī)則的接口。
上述內容是來自RetHat官方文檔的說明,看起來不知所云。所以筆者在這里簡單介紹一下firewalld的定位與傳統(tǒng)的iptable存在什么樣的不同:
- 動態(tài)防火墻
firewalld 提供的是動態(tài)的防火墻服務。配置的改變可以隨時隨地立刻執(zhí)行,不再需要保存或者執(zhí)行這些改變。而iptable的部分,每一個單獨更改意味著要清除所有舊有的規(guī)則和從 里讀取所有新的規(guī)則,相對來說firewalld的方式會更加靈活。
- 區(qū)域隔離
firewalld 提供了區(qū)域隔離的服務,也就是說類似于window之中的公共網(wǎng)絡與內部網(wǎng)絡的區(qū)別,可以通過不同的區(qū)域的配置對應的規(guī)則來實現(xiàn)不同的網(wǎng)絡規(guī)則服務。通過區(qū)域規(guī)則的方式,可以讓防火墻的工作更加的靈活。
如圖所示,firewalld的防火墻本質上是建立在原生的iptable防火墻之上的抽象層,通過定制規(guī)則的方式來利用iptable的功能,所以兩個防火墻是上下級并行工作的關系,最終都需要落地到內核之中的netfilter來實現(xiàn)網(wǎng)絡包的過濾,來簡化防火墻的工作流程。(傳統(tǒng)iptable的“四表五鏈”實在是有夠復雜~~囧rz)
2.系統(tǒng)環(huán)境:
如下圖所示,這里需要在LVS的服務器需要部署firewall的防火墻,這里筆者僅簡要梳理一下一臺LVS服務器的工作:
系統(tǒng)平臺:Centos 7
LVS服務器: 雙網(wǎng)卡
- 外網(wǎng)地址:219.223.199.154
- 內網(wǎng)地址:192.168.1.17
對外服務器:
- 服務器A:192.168.1.11
- 服務器B:192.168.1.14
在這里,外網(wǎng)地址之上需要開放的端口為10086端口,通過該端口進行轉發(fā)。而內網(wǎng)地址之上并不設置限制,我們認為是安全的網(wǎng)絡環(huán)境。
3.配置流程:
Firewalld的配置可通過三種方式:
- firewall-config
一個圖形化的用戶接口的配置工具
- firewall-cmd
一個命令行的用戶接口的配置工具
- 靜態(tài)xml文件配置
firewalld 的配置設定存儲在/etc/firewalld/ 目錄下的 xml 文件里??梢酝ㄟ^查看和編輯這些 xml 文件,來實現(xiàn)firewall的配置。
之后筆者的配置流程主要是基于firewall-cmd命令展開,首先啟動firewall服務:
systemctl start firewalld.service //啟動firewalld服務
接下來,開放外網(wǎng)網(wǎng)卡的對應的TCP端口,這里筆者選擇public區(qū)域,也就是雙網(wǎng)卡同時開放端口。
firewall-cmd --zone=public --add-port=10086/tcp --permanent
該命令的配置了public區(qū)域添加10086的端口,后續(xù)的參數(shù)--permannet則代表永久添加。也就是一次寫入,后續(xù)重啟之后依然生效。在firewall之中支持如下不同的區(qū)域區(qū)隔與過濾規(guī)則,之后不同的配置可以參考下面的內容:
區(qū)域
drop: 丟棄所有進入的包,而不給出任何響應 block: 拒絕所有外部發(fā)起的連接,允許內部發(fā)起的連接 public: 允許指定的進入連接 external: 同上,對偽裝的進入連接,一般用于路由轉發(fā) dmz: 允許受限制的進入連接 work: 允許受信任的計算機被限制的進入連接,類似 workgroup home: 同上,類似 homegroup internal: 同上,范圍針對所有互聯(lián)網(wǎng)用戶 trusted: 信任所有連接
過濾規(guī)則
source: 根據(jù)源地址過濾 interface: 根據(jù)網(wǎng)卡過濾 service: 根據(jù)服務名過濾 port: 根據(jù)端口過濾 icmp-block: icmp 報文過濾,按照 icmp 類型配置 masquerade: ip 地址偽裝 forward-port: 端口轉發(fā) rule: 自定義規(guī)則
之后通過LVS配置好下圖是通過ipvsadm配置好的轉發(fā)機制:
通過外網(wǎng)嘗試連接外網(wǎng)的ip地址,219.223.199.154:10086,發(fā)現(xiàn)并無法聯(lián)通后端服務器的服務,也就是運行在192.168.1.11與192.168.1.14的服務器。
調用ipvsadm -lcn命令之后,發(fā)現(xiàn)內網(wǎng)的轉發(fā)出現(xiàn)了問題:
通過抓包發(fā)現(xiàn)LVS服務器在內網(wǎng)網(wǎng)卡192.168.1.17上的通信包被攔截,于是繼續(xù)通過firewalld-cmd命令開發(fā)內網(wǎng)網(wǎng)卡的端口,將內網(wǎng)網(wǎng)卡加入trusted區(qū)域:
firewall-cmd --zone=trusted --add-interface=enp3s0
接下來可以看到開放了對應內網(wǎng)網(wǎng)卡到trusted,trusted區(qū)域允許所有通信包放行,因為內網(wǎng)是相對安全的環(huán)境,所以并不存在很大的影響,調用:
firewall-cmd --list-all-zones
命令展示firewall的配置結果,public與trusted區(qū)域都出于active狀態(tài),外網(wǎng)服務能夠正常連接內網(wǎng)的端口服務了。
可以看到上述public的設置之中涉及到了對應的ssh服務于dhcpv6-client的服務,在Firewalld之中是可以直接通過服務來放行對應的內容,也就是上文參數(shù)service,詳細的配置參數(shù)需要在目錄/usr/lib/firewalld/services之中進行配置,我們嘗試打開上文ssh服務的內容:
由上文的配置內容可見:所謂的服務配置防火墻,本身也是通過標注協(xié)議與端口的方式進行的,只不過是用服務的邏輯進行包裝了。至于使用哪種形式,各位見仁見智了。
小結
梳理了一下在LVS下雙網(wǎng)卡Firewalld的配置流程。Debian系列的發(fā)行版也是大同小異,只不過Firewalld工具需要自行使用apt-get進行安裝。上述內容若有疏漏,望各位指點斧正。
相關文章
Linux學習之CentOS(二十二)--進入單用戶模式下修改Root用戶的密碼
這篇文章主要介紹了Linux學習之CentOS(二十二)--進入單用戶模式下修改Root用戶的密碼,有需要的可以了解一下。2016-11-11apache tomcat 一個網(wǎng)站多域名的實現(xiàn)方法
因此處是進行多域名設置,所以 Apache 與 tomcat的結合沒有詳述,此處只是設置多域名的方法2009-02-02