CentOS7防火墻設(shè)置

一、FirewallD簡(jiǎn)介

FirewallD 提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理工具。它支持 IPv4, IPv6 防火墻設(shè)置以及以太網(wǎng)橋接,并且擁有運(yùn)行時(shí)配置和永久配置選項(xiàng)。它也支持允許服務(wù)或者應(yīng)用程序直接添加防火墻規(guī)則的接口。 以前的 system-config-firewall/lokkit 防火墻模型是靜態(tài)的,每次修改都要求防火墻完全重啟。這個(gè)過程包括內(nèi)核 netfilter 防火墻模塊的卸載和新配置所需模塊的裝載等。而模塊的卸載將會(huì)破壞狀態(tài)防火墻和確立的連接。
相反,firewall daemon 動(dòng)態(tài)管理防火墻,不需要重啟整個(gè)防火墻便可應(yīng)用更改。因而也就沒有必要重載所有內(nèi)核防火墻模塊了。不過,要使用 firewall daemon 就要求防火墻的所有變更都要通過該守護(hù)進(jìn)程來實(shí)現(xiàn),以確保守護(hù)進(jìn)程中的狀態(tài)和內(nèi)核里的防火墻是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令行工具添加的防火墻規(guī)則。
守護(hù)進(jìn)程通過 D-BUS 提供當(dāng)前激活的防火墻設(shè)置信息,也通過 D-BUS 接受使用 PolicyKit 認(rèn)證方式做的更改。

二、FirewallD特性

  • 守護(hù)進(jìn)程
    應(yīng)用程序、守護(hù)進(jìn)程和用戶可以通過 D-BUS 請(qǐng)求啟用一個(gè)防火墻特性。特性可以是預(yù)定義的防火墻功能,如:服務(wù)、端口和協(xié)議的組合、端口/數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)、偽裝、ICMP 攔截或自定義規(guī)則等。該功能可以啟用確定的一段時(shí)間也可以再次停用。
    通過所謂的直接接口,其他的服務(wù)(例如 libvirt )能夠通過 iptables 變?cè)?arguments)和參數(shù)(parameters)增加自己的規(guī)則。
    amanda 、ftp 、samba 和 tftp 服務(wù)的 netfilter 防火墻助手也被“守護(hù)進(jìn)程”解決了,只要它們還作為預(yù)定義服務(wù)的一部分。附加助手的裝載不作為當(dāng)前接口的一部分。由于一些助手只有在由模塊控制的所有連接都關(guān)閉后才可裝載。因而,跟蹤連接信息很重要,需要列入考慮范圍。

  • 靜態(tài)防火墻(system-config-firewall/lokkit)
    使用 system-config-firewall 和 lokkit 的靜態(tài)防火墻模型實(shí)際上仍然可用并將繼續(xù)提供,但卻不能與“守護(hù)進(jìn)程”同時(shí)使用。用戶或者管理員可以決定使用哪一種方案。
    在軟件安裝,初次啟動(dòng)或者是首次聯(lián)網(wǎng)時(shí),將會(huì)出現(xiàn)一個(gè)選擇器。通過它你可以選擇要使用的防火墻方案。其他的解決方案將保持完整,可以通過更換模式啟用。
    firewall daemon 獨(dú)立于 system-config-firewall,但二者不能同時(shí)使用。

  • 區(qū)域
    網(wǎng)絡(luò)區(qū)域定義了網(wǎng)絡(luò)連接的可信等級(jí)。這是一個(gè)一對(duì)多的關(guān)系,這意味著一次連接可以僅僅是一個(gè)區(qū)域的一部分,而一個(gè)區(qū)域可以用于很多連接。

  • 預(yù)定義服務(wù)
    服務(wù)是端口和/或協(xié)議入口的組合。備選內(nèi)容包括 netfilter 助手模塊以及 IPv4、IPv6地址。

  • 端口和協(xié)議
    定義了 tcp 或 udp 端口,端口可以是一個(gè)端口或者端口范圍。

  • ICMP阻塞
    可以選擇 Internet 控制報(bào)文協(xié)議的報(bào)文。這些報(bào)文可以是信息請(qǐng)求亦可是對(duì)信息請(qǐng)求或錯(cuò)誤條件創(chuàng)建的響應(yīng)。

  • 偽裝
    私有網(wǎng)絡(luò)地址可以被映射到公開的IP地址。這是一次正規(guī)的地址轉(zhuǎn)換。

  • 端口轉(zhuǎn)發(fā)
    端口可以映射到另一個(gè)端口以及/或者其他主機(jī)。

  • 哪個(gè)區(qū)域可用?
    由firewalld 提供的區(qū)域按照從不信任到信任的順序排序。

  • 丟棄
    任何流入網(wǎng)絡(luò)的包都被丟棄,不作出任何響應(yīng)。只允許流出的網(wǎng)絡(luò)連接。

  • 阻塞
    任何進(jìn)入的網(wǎng)絡(luò)連接都被拒絕,并返回 IPv4 的 icmp-host-prohibited 報(bào)文或者 IPv6 的 icmp6-adm-prohibited 報(bào)文。只允許由該系統(tǒng)初始化的網(wǎng)絡(luò)連接。

  • 公開
    用以可以公開的部分。你認(rèn)為網(wǎng)絡(luò)中其他的計(jì)算機(jī)不可信并且可能傷害你的計(jì)算機(jī)。只允許選中的連接接入。

  • 外部
    用在路由器等啟用偽裝的外部網(wǎng)絡(luò)。你認(rèn)為網(wǎng)絡(luò)中其他的計(jì)算機(jī)不可信并且可能傷害你的計(jì)算機(jī),只允許選中的連接接入。

  • 隔離區(qū)(dmz)
    用以允許隔離區(qū)(dmz)中的電腦有限地被外界網(wǎng)絡(luò)訪問。只接受被選中的連接。

  • 工作
    用在工作網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

  • 家庭
    用在家庭網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

  • 內(nèi)部
    用在內(nèi)部網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

  • 受信任的
    允許所有網(wǎng)絡(luò)連接。

  • 我應(yīng)該選用哪個(gè)區(qū)域?
    例如,公共的 WIFI 連接應(yīng)該主要為不受信任的,家庭的有線網(wǎng)絡(luò)應(yīng)該是相當(dāng)可信任的。根據(jù)與你使用的網(wǎng)絡(luò)最符合的區(qū)域進(jìn)行選擇。

  • 由NetworkManager控制的網(wǎng)絡(luò)連接
    防火墻不能夠通過 NetworkManager 顯示的名稱來配置網(wǎng)絡(luò)連接,只能配置網(wǎng)絡(luò)接口。因此在網(wǎng)絡(luò)連接之前 NetworkManager 將配置文件所述連接對(duì)應(yīng)的網(wǎng)絡(luò)接口告訴 firewalld 。如果在配置文件中沒有配置區(qū)域,接口將配置到 firewalld 的默認(rèn)區(qū)域。如果網(wǎng)絡(luò)連接使用了不止一個(gè)接口,所有的接口都會(huì)應(yīng)用到 fiwewalld。接口名稱的改變也將由 NetworkManager 控制并應(yīng)用到firewalld。

  • 由腳本控制的網(wǎng)絡(luò)
    對(duì)于由網(wǎng)絡(luò)腳本控制的連接有一條限制:沒有守護(hù)進(jìn)程通知 firewalld 將連接增加到區(qū)域。這項(xiàng)工作僅在 ifcfg-post 腳本進(jìn)行。因此,此后對(duì)網(wǎng)絡(luò)連接的重命名將不能被應(yīng)用到firewalld。同樣,在連接活動(dòng)時(shí)重啟 firewalld 將導(dǎo)致與其失去關(guān)聯(lián)?,F(xiàn)在有意修復(fù)此情況。最簡(jiǎn)單的是將全部未配置連接加入默認(rèn)區(qū)域。

  • 使用firewalld
    圖形界面工具:firewall-config
    firewall-cmd命令行工具:firewall-cmd

三、FirewallD配置

  • Firewalld命令:
#進(jìn)程與狀態(tài)相關(guān)
systemctl start firewalld.service            #啟動(dòng)防火墻  
systemctl stop firewalld.service             #停止防火墻  
firewall-cmd --state                         #查看防火墻狀態(tài)  
firewall-cmd --reload                        #更新防火墻規(guī)則  
firewall-cmd --state                         #查看防火墻狀態(tài)  
firewall-cmd --reload                        #重載防火墻規(guī)則  
firewall-cmd --list-ports                    #查看所有打開的端口  
firewall-cmd --list-services                 #查看所有允許的服務(wù)  
firewall-cmd --get-services                  #獲取所有支持的服務(wù)  

#區(qū)域相關(guān)
firewall-cmd --list-all-zones                    #查看所有區(qū)域信息  
firewall-cmd --get-active-zones                  #查看活動(dòng)區(qū)域信息  
firewall-cmd --set-default-zone=public           #設(shè)置public為默認(rèn)區(qū)域  
firewall-cmd --get-default-zone                  #查看默認(rèn)區(qū)域信息  
firewall-cmd --zone=public --add-interface=eth0  #將接口eth0加入?yún)^(qū)域public

#接口相關(guān)
firewall-cmd --zone=public --remove-interface=eth0       #從區(qū)域public中刪除接口eth0  
firewall-cmd --zone=default --change-interface=eth0      #修改接口eth0所屬區(qū)域?yàn)閐efault  
firewall-cmd --get-zone-of-interface=eth0                #查看接口eth0所屬區(qū)域  

#端口控制
firewall-cmd --add-port=80/tcp --permanent               #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent            #永久刪除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent      #永久增加65001-65010例外(全局)  

firewall-cmd  --zone=public --add-port=80/tcp --permanent            #永久添加80端口例外(區(qū)域public)
firewall-cmd  --zone=public --remove-port=80/tcp --permanent         #永久刪除80端口例外(區(qū)域public)
firewall-cmd  --zone=public --add-port=65001-65010/tcp --permanent   #永久增加65001-65010例外(區(qū)域public) 

注:如果某個(gè)接口不屬于任何Zone,那么這個(gè)接口的所有數(shù)據(jù)包使用默認(rèn)的Zone的規(guī)則。

  • 命令含義:
    --zone #作用域
    --add-port=80/tcp #添加端口,格式為:端口/通訊協(xié)議
    --permanent #永久生效,沒有此參數(shù)重啟后失效

  • Systemctl命令:

systemctl start firewalld.service               #啟動(dòng)服務(wù)
systemctl stop firewalld.service                #關(guān)閉服務(wù)
systemctl reloadt firewalld.service             #重載配置
systemctl restart firewalld.service             #重啟服務(wù)
systemctl status firewalld.service              #顯示服務(wù)的狀態(tài)
systemctl enable firewalld.service              #在開機(jī)時(shí)啟用服務(wù)
systemctl disable firewalld.service             #在開機(jī)時(shí)禁用服務(wù)
systemctl is-enabled firewalld.service          #查看服務(wù)是否開機(jī)啟動(dòng)
systemctl list-unit-files|grep enabled          #查看已啟動(dòng)的服務(wù)列表
systemctl --failed                              #查看啟動(dòng)失敗的服務(wù)列表
  • 關(guān)閉CentOS7自帶Firewall啟用iptables:
yum install iptables-services           #安裝iptables  
systemctl stop firewalld.service        #停止firewalld  
systemctl mask firewalld.service        #禁止自動(dòng)和手動(dòng)啟動(dòng)firewalld  
systemctl start iptables.service        #啟動(dòng)iptables
systemctl start ip6tables.service       #啟動(dòng)ip6tables  
systemctl enable iptables.service       #設(shè)置iptables自啟動(dòng)  
systemctl enable ip6tables.service      #設(shè)置ip6tables自啟動(dòng)  
注:靜態(tài)防火墻規(guī)則配置文件是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • CentOS7下Firewall防火墻配置用法詳解 centos 7中防火墻是一個(gè)非常的強(qiáng)大的功能了,但對(duì)于cen...
    很少更新了閱讀 5,764評(píng)論 0 9
  • 1、firewalld的基本使用 啟動(dòng): systemctl start firewalld 關(guān)閉: system...
    Yang0503閱讀 197評(píng)論 0 1
  • CentOS7 與之前版本在防火墻配置上不同,防火墻從iptables變成了firewalld Centos7默認(rèn)...
    John_Phil閱讀 1,336評(píng)論 0 0
  • 一、FirewallD簡(jiǎn)介 FirewallD 提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)...
    風(fēng)吹我已散博客閱讀 407評(píng)論 0 1
  • #玩卡不卡·每日一抽#每一位都可以通過這張卡片覺察自己: 1、直覺他叫什么名字?珍妮 2、他幾歲了?27 3、他現(xiàn)...
    我心安住閱讀 92評(píng)論 0 0

友情鏈接更多精彩內(nèi)容