firewalld防火牆的基本使用
firewalld和iptables的區別:
在Centos7裡有幾種防火牆共存:firewalld、iptables、ebtables,預設是使用firewalld來管理netfilter子系統,不過底層呼叫的命令仍然是iptables等。
firewalld跟iptables比起來優點:
1、firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則後必須得全部重新整理才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。
缺點:
firewalld跟iptables比起來,不好的地方是每個服務都需要去設定才能放行,因為預設是拒絕。
而iptables裡預設是每個服務是允許,需要拒絕的才去限制。
區別可如圖大概看出:
注意:
iptables與firewalld都不是真正的防火牆,它們都只是用來定義防火牆策略的防火牆管理工具而已,或者說,它們只是一種服務。
iptables服務會把配置好的防火牆策略交由核心層面的netfilter網路過濾器來處理,而firewalld服務則是把配置好的防火牆策略交由核心層面的nftables包過濾框架來處理。
換句話說,當前在Linux系統中其實存在多個防火牆管理工具,旨在方便運維人員管理Linux系統中的防火牆策略,我們只需要配置妥當其中的一個就足夠了。
雖然這些工具各有優劣,但它們在防火牆策略的配置思路上是保持一致的。
firewall的一個重要的概念:區域管理
通過將網路劃分成不同的區域,制定出不同區域之間的訪問控制策略來控制不同程式區域間傳送的資料流。
例如,網際網路是不可信任的區域,而內部網路是高度信任的區域。網路安全模型可以在安裝,初次啟動和首次建立網路連線時選擇初始化。
該模型描述了主機所連線的整個網路環境的可信級別,並定義了新連線的處理方式。有如下幾種不同的初始化區域:
阻塞區域(block):任何傳入的網路資料包都將被阻止。
工作區域(work):相信網路上的其他計算機,不會損害你的計算機。
家庭區域(home):相信網路上的其他計算機,不會損害你的計算機。
公共區域(public):不相信網路上的任何計算機,只有選擇接受傳入的網路連線。
隔離區域(DMZ):隔離區域也稱為非軍事區域,內外網路之間增加的一層網路,起到緩衝作用。對於隔離區域,只有選擇接受傳入的網路連線。
信任區域(trusted):所有的網路連線都可以接受。
丟棄區域(drop):任何傳入的網路連線都被拒絕。
內部區域(internal):信任網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線。
外部區域(external):不相信網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線。
注:FirewallD的預設區域是public,也是常用的一個區域。
firewalld預設提供了九個zone配置檔案:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,
他們都儲存在“/usr/lib /firewalld/zones/”目錄下。
配置方法
firewalld的配置方法主要有三種:
firewall-config、firewall-cmd和直接編輯xml檔案,其中 firewall-config是圖形化工具,firewall-cmd是命令列工具。
而對於linux來說大家應該更習慣使用命令列方式(firewall-cmd)的操作。
1、安裝firewalld
yum install firewalld firewall-config2、firewalld的基本使用 啟動: systemctl start firewalld 關閉: systemctl stop firewalld 檢視狀態: systemctl status firewalld或者firewall-cmd --state 開機禁用 : systemctl disable firewalld 開機啟用 :systemctl enable firewalld
3.配置firewalld-cmd
檢視版本: firewall-cmd --version 檢視幫助: firewall-cmd --help 顯示狀態: firewall-cmd --state 檢視所有開啟的埠: firewall-cmd --zone=public--list-ports 更新防火牆規則: firewall-cmd --reload 檢視區域資訊: firewall-cmd --get-active-zones 檢視指定介面所屬區域: firewall-cmd --get-zone-of-interface=eth0 拒絕所有包:firewall-cmd --panic-on 取消拒絕狀態: firewall-cmd --panic-off 檢視是否拒絕: firewall-cmd --query-panic將介面新增到區域,預設介面都在public
firewall-cmd --zone=public --add-interface=eth0
永久生效再加上--permanent然後reload防火牆
設定預設介面區域
firewall-cmd --set-default-zone=public
立即生效無需重啟
檢視所有開啟的埠:
firewall-cmd --zone=dmz --list-ports開啟埠(實用) 新增
firewall-cmd --zone=public --add-port=80/tcp --permanent #(--permanent永久生效,沒有此引數重啟後失效)
重新載入(使規則生效)
firewall-cmd --reload檢視
firewall-cmd --zone= public --query-port=80/tcp
刪除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
管理服務
新增 smtp 服務至 work zone
firewall-cmd --zone=work --add-service=smtp
移除 work zone 中的 smtp 服務
firewall-cmd --zone=work --remove-service=smtp
配置 public zone 的埠轉發
要開啟埠轉發,則需要先
firewall-cmd --zone=public --add-masquerade
然後轉發 tcp 22 埠至 3753
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753
轉發 22 埠資料至另一個 ip 的相同埠上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
轉發 22 埠資料至另一 ip 的 2055 埠上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
IP 封禁
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
補充:
關於Centos7的systemctl,systemctl是服務管理工具中主要的工具,它融合之前service和chkconfig的功能於一體。啟動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啟一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl status firewalld.service
在開機時啟用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
檢視服務是否開機啟動:systemctl is-enabled firewalld.service
檢視已啟動的服務列表:systemctl list-unit-files|grep enabled
檢視啟動失敗的服務列表:systemctl --failed