1. 程式人生 > >第十四章 LINUX新安全FIREWALLD-CENTOS7.5知識

第十四章 LINUX新安全FIREWALLD-CENTOS7.5知識

一、FIRWALLD
Filewalld(動態防火牆)作為redhat7系統中變更對於netfilter核心模組的管理工具;
iptables service 管理防火牆規則的模式(靜態):使用者將新的防火牆規則新增進 /etc/sysconfig/iptables 配置檔案當中,再執行命令 /etc/init.d/iptables reload 使變更的規則生效。在這整個過程的背後,iptables service 首先對舊的防火牆規則進行了清空,然後重新完整地載入所有新的防火牆規則,如果載入了防火牆的模組,需要在重新載入後進行手動載入防火牆的模組;
firewalld 管理防火牆規則的模式(動態):任何規則的變更都不需要對整個防火牆規則列表進行重新載入,只需要將變更部分儲存並更新到執行中的 iptables 即可。
還有命令列和圖形介面配置工具,它僅僅是替代了 iptables service 部分,其底層還是使用 iptables 作為防火牆規則管理入口。
firewalld 使用 python 語言開發,在新版本中已經計劃使用 c++ 重寫 daemon 部分。
第十四章 LINUX新安全FIREWALLD-CENTOS7.5知識


firewalld中常見的區域名稱(預設為public);
區域:
firewalld將網絡卡對應到不同的區域(zone),zone 預設共有9個:block(拒絕)
block(拒絕) dmz(非軍事化) drop(丟棄) external(外部) home(家庭) internal(內部) public(公開) trusted(信任) work(工作區).
不同的區域之間的差異是其對待資料包的預設行為不同,firewalld的預設區域為public;

區域 預設規則策略
trusted 允許所有的資料包。
home 拒絕流入的資料包,除非與輸出流量資料包相關或是ssh,mdns,ipp-client,samba-client與dhcpv6-client服務則允許。
internal 等同於home區域
work 拒絕流入的資料包,除非與輸出流量資料包相關或是ssh,ipp-client與dhcpv6-client服務則允許。
public 拒絕流入的資料包,除非與輸出流量資料包相關或是ssh,dhcpv6-client服務則允許。
external 拒絕流入的資料包,除非與輸出流量資料包相關或是ssh服務則允許。
dmz 拒絕流入的資料包,除非與輸出流量資料包相關或是ssh服務則允許。
block 拒絕流入的資料包,除非與輸出流量資料包相關。
drop 拒絕流入的資料包,除非與輸出流量資料包相關。
配置方法
使用影象化的firewall-config 工具或用命令firewall-cmd:
firewall-config 工具裡有一個標記為 Configuration 的下拉選單,可以在運 行時間(即臨時模式 runtime)和永久(permanent) 兩種模式之間進行選擇。要注意,如果您選擇了 Permanent,在左上角會出現一排附加的圖示。因為不能在執行模式下改變一個服務引數,所以這些圖示僅在永久配置模式中出現。

第十四章 LINUX新安全FIREWALLD-CENTOS7.5知識
由 firewalld 提供的是動態的防火牆服務,而非靜態的。因為配置的改變可以隨時隨地立刻執行,不再需要儲存或者執行這些改變。現行網路連線的意外中斷不會發生,正如防火牆的所有部分都不需要重新下載。
firewall-cmd 是 firewalld的字元介面管理工具,firewalld是centos7的一大特性,最大的好處有兩個:支援動態更新,不用重啟服務;第二個就是加入了防火牆的“zone”概念。
firewalld跟iptables比起來至少有兩大好處:
firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則後必須得全部重新整理才可以生效。 
firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。 
firewalld自身並不具備防火牆的功能,而是和iptables一樣需要通過核心的netfilter來實現,也就是說firewalld和 iptables一樣,他們的作用都是用於維護規則,而真正使用規則幹活的是核心的netfilter,只不過firewalld和iptables的結 構以及使用方法不一樣罷了。

概念理解:
相較於傳統的防火牆管理配置工具,firewalld支援動態更新技術並加入了區域(zone)的概念。
簡單來說,區域就是firewalld預先準備了幾套防火牆策略集合(策略模板),使用者可以根據生產場景的不同而選擇合適的策略集合,
從而實現防火牆策略之間的快速切換。例如,我們有一臺膝上型電腦,每天都要在辦公室、咖啡廳和家裡使用。
按常理來講,這三者的安全性按照由高到低的順序來排列,應該是家庭、公司辦公室、咖啡廳。
當前,我們希望為這檯筆記本電腦指定如下防火牆策略規則:在家中允許訪問所有服務;
在辦公室內僅允許訪問檔案共享服務;在咖啡廳僅允許上網瀏覽。
在以往,我們需要頻繁地手動設定防火牆策略規則,而現在只需要預設好區域集合,
然後只需輕點滑鼠就可以自動切換了,從而極大地提升了防火牆策略的應用效率。

1、執行、停止、禁用firewalld
啟動:[local~]# systemctl start firewalld
禁用:[local~]# systemctl disable firewalld
停止:[local~]#systemctl stop firewalld
重啟:[local~]# systemctl restart firewalld
開機啟動:[local~]# systemctl enable firewalld
檢視狀態:[local~]# systemctl status firewalld 或者 firewall-cmd --state
2、配置firewalld
檢視版本:[local~]# firewall-cmd --version
檢視幫助:[local~]# firewall-cmd --help
檢視區域資訊: [local~]# firewall-cmd --get-active-zones
檢視指定介面所屬區域:[local~]# firewall-cmd --get-zone-of-interface=eth0
拒絕所有包:[local~]# firewall-cmd --panic-on
取消拒絕狀態:[local~]# firewall-cmd --panic-off
檢視是否拒絕:[local~]# firewall-cmd --query-panic
更新防火牆規則:[local~]# firewall-cmd --reload
        [local~]# firewall-cmd --complete-reload
兩者的區別是第一個無需斷開連線,就是firewalld特性之一動態新增規則,第二個需要斷開連線,類似重啟服務, 將介面新增到區域,預設介面都在public。
[local~]# firewall-cmd --zone=public --add-interface=eth0 --permanent
之後需要重新載入firewalld,以更新規則:[local~]# firewall-cmd --reload
設定預設介面區域
[local~]# firewall-cmd --set-default-zone=public
立即生效無需重啟
3、開啟埠、移除埠
檢視所有開啟的埠:
[local~]# firewall-cmd --zone=dmz --list-ports
加入一個埠到區域:
[local~]# firewall-cmd --zone=dmz --add-port=8080/tcp --permanent

開啟一個服務,類似於將埠視覺化,服務需要在配置檔案中新增,/etc/firewalld 目錄下有services資料夾
[local~]# firewall-cmd --zone=work --add-service=smtp
移除服務
[local~]# firewall-cmd --zone=work --remove-service=smtp
那怎麼開啟一個埠呢
新增
[local~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[local~]# firewall-cmd --reload
檢視
[local~]# firewall-cmd --zone= public --query-port=80/tcp
刪除
[local~]# firewall-cmd --zone= public --remove-port=80/tcp --permanent