您好,登錄后才能下訂單哦!
小編給大家分享一下Linux中如何配置firewalld規(guī)則,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
防火墻對(duì)于控制進(jìn)出 Linux 服務(wù)器的網(wǎng)絡(luò)流量至關(guān)重要。它能夠定義一組防火墻規(guī)則來(lái)控制主機(jī)上的傳入流量。
“firewalld”是firewall daemon。它提供了一個(gè)動(dòng)態(tài)管理的防火墻,帶有一個(gè)非常強(qiáng)大的過(guò)濾系統(tǒng),稱為 Netfilter,由 Linux 內(nèi)核提供。
FirewallD 使用zones和services的概念,而 iptables 使用chain和rules。與 iptables 相比,“FirewallD”提供了一種非常靈活的方式來(lái)處理防火墻管理。
每個(gè)zones都可以按照指定的標(biāo)準(zhǔn)進(jìn)行配置,以根據(jù)你的要求接受或拒絕某些服務(wù)或端口,并且它可以與一個(gè)或多個(gè)網(wǎng)絡(luò)接口相關(guān)聯(lián)。默認(rèn)區(qū)域?yàn)閜ublic區(qū)域。 [yijiFirewalld zones[/yiji] 以下命令列出 FirewallD 提供的zones。運(yùn)行以下命令以列出zones:
[root@server1 ~]# firewall-cmd --get-zonesblock dmz drop external home internal public trusted work
Firewalld services
Firewalld 的service配置是預(yù)定義的服務(wù)。要列出可用的服務(wù)模塊,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --get-services
Firewalld 使用兩個(gè)獨(dú)立的配置,即臨時(shí)設(shè)置和永久設(shè)置:
Firewalld默認(rèn)安裝在Centos7/8中,下面命令時(shí)如何啟用或者停用firewalld:
# 啟用Firewalld[root@server1 ~]# systemctl start firewalld# 禁用Firewalld[root@server1 ~]# systemctl stop firewalld# 開機(jī)啟動(dòng)[root@server1 ~]# systemctl enable firewlald# 禁止開機(jī)啟動(dòng)[root@server1 ~]# systemctl disable firewalld
查看firewlald的狀態(tài):
[root@server1 ~]# systemctl status firewalld或者 [root@server1 ~]# firewall-cmd --staterunning
Firewalld 為每個(gè)區(qū)域提供不同級(jí)別的安全性,公共區(qū)域設(shè)置為默認(rèn)區(qū)域。下面命令查看默認(rèn)區(qū)域:
[root@server1 ~]# firewall-cmd --get-default-zonepublic
下面命令查看默認(rèn)區(qū)域的配置:
[root@server1 ~]# firewall-cmd --list-allpublic (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ntp ssh ports: 2222/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
通過(guò)使用選項(xiàng)”–zone”和“–change-interface”的組合,可以輕松更改zone中的接口。例如,要將“ens33”接口分配給“home”區(qū)域,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --zone=home --change-interface=ens33success [root@server1 ~]# firewall-cmd --zone=home --list-allhome (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
要查看所有活動(dòng)的zone,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --get-active-zoneshome interfaces: ens33 public interfaces: ens160
要更改默認(rèn)zone,請(qǐng)使用以下命令。例如,要將默認(rèn)區(qū)域更改為 home,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --set-default-zone=home
要找出與 ens160 接口關(guān)聯(lián)的區(qū)域,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --get-zone-of-interface=ens160public
要?jiǎng)?chuàng)建新zone,請(qǐng)使用以下命令。例如,要?jiǎng)?chuàng)建一個(gè)名為“test”的新區(qū)域,并永久生效,請(qǐng)運(yùn)行:
[root@server1 ~]# firewall-cmd --permanent --new-zone=testsuccess [root@server1 ~]# firewall-cmd --reloadsuccess
打開特定端口允許用戶從外部訪問(wèn)系統(tǒng),這代表了安全風(fēng)險(xiǎn)。因此,僅在必要時(shí)為某些服務(wù)打開所需的端口。
要獲取當(dāng)前區(qū)域中開放的端口列表,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --list-ports2222/tcp
下面實(shí)例將特定端口永久添加到列表中:
[root@server1 ~]# firewall-cmd --permanent --add-port=8080/tcpsuccess [root@server1 ~]# firewall-cmd --reloadsuccess
同樣,要?jiǎng)h除特定端口,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --remove-port=8080/tcpsuccess
可以使用以下命令每次確認(rèn)端口是否已添加或刪除:
[root@server1 ~]# firewall-cmd --list-ports
如果要為特定區(qū)域開放端口,例如,以下命令將為 home 區(qū)域打開端口 80:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-port=80/tcpsuccess [root@server1 ~]# firewall-cmd --reloadsuccess
同樣,要從開放的端口中刪除特定區(qū)域的特定端口,請(qǐng)運(yùn)行:
[root@server1 ~]# firewall-cmd --zone=home --remove-port=80/tcpsuccess
Firewalld 服務(wù)配置是預(yù)定義的服務(wù),如果啟用了服務(wù),則會(huì)自動(dòng)加載。使用預(yù)定義服務(wù)使用戶可以更輕松地啟用和禁用對(duì)服務(wù)的訪問(wèn)。
預(yù)定義的服務(wù)配置文件位于/usr/lib/firewalld/services
目錄中。
Firewalld的服務(wù),你不需要記住任何端口,并且可以一次性允許所有端口。
例如,執(zhí)行以下命令允許 samba 服務(wù)。samba 服務(wù)需要啟用以下一組端口:“139/tcp 和 445/tcp”以及“137/udp 和 138/udp”。
添加’samba’服務(wù)后,所有端口都會(huì)同時(shí)激活,因?yàn)樗卸丝谛畔⒍荚趕amba服務(wù)配置中。下面是Firewalld中預(yù)定義的samba的服務(wù)配置文件:
[root@server1 ~]# cat /usr/lib/firewalld/services/samba.xml
下面是在home區(qū)域放行samba服務(wù):
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service=sambasuccess [root@server1 ~]# firewall-cmd --reloadsuccess
要獲取有關(guān) samba 服務(wù)的更多信息,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --info-service=sambasamba ports: 137/udp 138/udp 139/tcp 445/tcp protocols: source-ports: modules: netbios-ns destination:
要一次添加多個(gè)服務(wù),請(qǐng)執(zhí)行以下命令。例如,要添加 http 和 https 服務(wù),請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service={http,https}success [root@server1 ~]# firewall-cmd --reloadsuccess
端口轉(zhuǎn)發(fā)是一種將任何傳入網(wǎng)絡(luò)流量從一個(gè)端口轉(zhuǎn)發(fā)到另一個(gè)內(nèi)部端口或另一臺(tái)機(jī)器上的外部端口的方法。
注意:端口轉(zhuǎn)發(fā)必須開啟IP偽裝。使用下面顯示的命令為external
區(qū)域啟用偽裝。
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-masquerade
要檢查是否為區(qū)域啟用了 IP 偽裝,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --zone=external --query-masqueradeyes
顯示yes,表示已經(jīng)開啟偽裝。
要將端口重定向到同一系統(tǒng)上的另一個(gè)端口,例如:將80端口的所有數(shù)據(jù)包重定向到8080端口:
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080success
如果要將流量轉(zhuǎn)發(fā)到另一臺(tái)服務(wù)器,例如:將所有 80 端口的數(shù)據(jù)包重定向到 IP 為 10.0.0.75 的服務(wù)器上的 8080 端口:
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.0.0.75success
例如,要允許來(lái)自特定源地址的流量,僅允許從特定子網(wǎng)連接到服務(wù)器,請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-source=192.168.1.0/24success
富規(guī)則允許使用易于理解的命令創(chuàng)建更復(fù)雜的防火墻規(guī)則,但豐富的規(guī)則很難記住,可以查看手冊(cè)man firewalld.richlanguage
并找到示例。
富規(guī)則的一般規(guī)則結(jié)構(gòu)如下: rule [source] [destination] service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port [log] [audit] [accept|reject|drop|mark]
要允許來(lái)自地址 192.168.0.0/24 的訪問(wèn),請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'success
要允許來(lái)自地址 192.168.0.0/24 的連接訪問(wèn) ssh 服務(wù),請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'success
要拒絕來(lái)自192.168.10.0/24的流量訪問(wèn)ssh服務(wù),請(qǐng)運(yùn)行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port=22 protocol=tcp reject'success
要?jiǎng)h除任何富規(guī)則,請(qǐng)使用--remove-rich-rule
選項(xiàng),下面使用--list-rich-rules
列出富規(guī)則,然后刪除掉富規(guī)則:
[root@server1 ~]# firewall-cmd --zone=public --list-rich-rulesrule family="ipv4" source address="192.168.0.0/24" accept rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject [root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'success [root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'success [root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject'success
Direct規(guī)則類似于 iptables 命令,對(duì)于熟悉 iptables 命令的用戶很有用?;蛘?,您可以編輯/etc/firewalld/direct.xml
文件中的規(guī)則并重新加載防火墻以激活這些規(guī)則。Direct規(guī)則主要由服務(wù)或應(yīng)用程序用來(lái)添加特定的防火墻規(guī)則。
以下Direct規(guī)則將在服務(wù)器上打開端口 8080:
[root@server1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPTsuccess [root@server1 ~]# firewall-cmd --reloadsuccess
要列出當(dāng)前區(qū)域中的Direct規(guī)則,請(qǐng)運(yùn)行:
[root@server1 ~]# firewall-cmd --direct --get-all-rulesipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
使用下面命令刪除Direct規(guī)則:
[root@server1 ~]# firewall-cmd --direct --get-all-rulesipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT [root@server1 ~]# firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPTsuccess [root@server1 ~]# firewall-cmd --reloadsuccess
如何清空一個(gè)表的鏈?下面是語(yǔ)法和實(shí)例:
firewall-cmd --direct --remove-rules ipv4 [table] [chain] [root@server1 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 filter INPUTsuccess [root@server1 ~]# firewall-cmd --reloadsuccess [root@server1 ~]# firewall-cmd --direct --get-all-rules
看完了這篇文章,相信你對(duì)“Linux中如何配置firewalld規(guī)則”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。