實(shí)踐環(huán)境
CentOS-7-x86_64-DVD-2009
簡(jiǎn)介
Firewalld是一種簡(jiǎn)單的、有狀態(tài)的、基于區(qū)域(zone-based)的防火墻。策略和區(qū)域用于組織防火墻規(guī)則。網(wǎng)絡(luò)在邏輯上被劃分為多個(gè)區(qū)域,它們之間的流量可以通過策略進(jìn)行管理。
查看防火墻狀態(tài)
# service firewalld status
或者
# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
說明:如果輸出顯示Active: inactive (dead),則表示未開啟防火墻。如果現(xiàn)實(shí)Active: active (running)則表示開啟了防火墻。
或者
# firewall-cmd --state not running
開啟防火墻
# service firewalld start
或者
# systemctl start firewalld
重啟防火墻
# service firewalld restart
或者
# systemctl restart firewalld
設(shè)置防火墻開機(jī)自啟
# systemctl enable firewalld Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
禁用防火墻開機(jī)自啟
# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
查看預(yù)定義區(qū)域
# firewall-cmd --get-zones block dmz drop external home internal public trusted work # #查看每個(gè)區(qū)域的詳細(xì)信息 # firewall-cmd --list-all-zones
區(qū)域簡(jiǎn)介:
區(qū)域 | 默認(rèn)規(guī)則 |
---|---|
block | 拒絕流入的流量,除非與流出的流量相關(guān) |
dmz | 拒絕流入的流量,除非與流出的流量相關(guān);如果流量與ssh服務(wù)相關(guān),則允許流量 |
drop | 拒絕流入的流量,除非與流出的流量相關(guān) |
external | 拒絕流入的流量;除非與流出的流量相關(guān);如果流量與ssh服務(wù)相關(guān),則允許流量 |
home | 拒絕流入的流量;除非與流出的流量相關(guān);如果流量與ssh,mdns,ipp-client,amba-client,dhcpv6-client服務(wù)相關(guān),則允許流量 |
internal | 等同于home區(qū)域 |
public | 拒絕流入的流量;除非與流出的流量相關(guān);如果流量與ssh,dhcpv6-client服務(wù)相關(guān),則允許流量 |
trusted | 允許所有的數(shù)據(jù)包流入與流出 |
work | 拒絕流入的流量;除非與流出的流量相關(guān);如果流量與ssh,ipp-client,dhcpv6-client服務(wù)相關(guān),則允許流量 |
創(chuàng)建自定義區(qū)域
# firewall-cmd --permanent --new-zone=testing success
注意:--permanent選項(xiàng)不能少
查看默認(rèn)區(qū)域
# firewall-cmd --get-default-zone public
查看網(wǎng)卡關(guān)聯(lián)的區(qū)域
# ip addr 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 000000:00 brd 000000:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 002986:da brd ffffff:ff inet 192.168.206.102/24 brd 192.168.206.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80:29ff86da/64 scope link valid_lft forever preferred_lft forever # firewall-cmd --get-zone-of-interface=ens33 public
注意:一張網(wǎng)卡只能關(guān)聯(lián)一個(gè)區(qū)域
修改默認(rèn)區(qū)域
例子:
# #修改默認(rèn)區(qū)域?yàn)閌trusted` # firewall-cmd --set-default-zone=trusted success # firewall-cmd --get-default-zone trusted # firewall-cmd --get-zone-of-interface=ens33 trusted # #還原 # firewall-cmd --set-default-zone=public success # firewall-cmd --get-default-zone public # firewall-cmd --get-zone-of-interface=ens33 public
修改網(wǎng)卡關(guān)聯(lián)的區(qū)域
方法1:先刪除現(xiàn)有關(guān)聯(lián)區(qū)域,再添加目標(biāo)關(guān)聯(lián)區(qū)域(因?yàn)橥粫r(shí)間,一張網(wǎng)卡只能關(guān)聯(lián)一個(gè)區(qū)域,所以要先添加再刪除)
# firewall-cmd --remove-interface=ens33 --zone=public success # firewall-cmd --get-zone-of-interface=ens33 no zone ## 設(shè)置ens33關(guān)聯(lián)區(qū)域?yàn)閠rusted # firewall-cmd --add-interface=ens33 --zone=trusted success # firewall-cmd --get-zone-of-interface=ens33 trusted
方法2:
## 設(shè)置ens33關(guān)聯(lián)區(qū)域?yàn)閜ublic # firewall-cmd --change-interface=ens33 --zone=public success # firewall-cmd --get-zone-of-interface=ens33 public
打印當(dāng)前活動(dòng)區(qū)域及綁定的接口和源
firewall-cmd --get-active-zones
打印當(dāng)前活動(dòng)區(qū)域以及這些區(qū)域中使用的接口和源。活動(dòng)區(qū)域是與接口或源綁定的區(qū)域。輸出格式為:
zone1 interfaces: interface1 interface2 .. sources: source1 .. zone2 interfaces: interface3 .. zone3 sources: source2 .. 如果沒有接口和源綁定到區(qū)域,則忽略該對(duì)應(yīng)區(qū)域行
例子:
# firewall-cmd --get-active-zones public interfaces: ens33
端口訪問限制
查看已開放端口
firewall-cmd [--permanent] [--zone=zone] --list-ports
以空格分隔的列表形式列出為區(qū)域添加的端口。端口的形式為portid[-portid]/protocol,它可以是端口和協(xié)議對(duì),也可以是具有協(xié)議的端口范圍。如果忽略--zone選項(xiàng)配置,將使用默認(rèn)區(qū)域。
添加開放端口
firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=timeval]
為zone(區(qū)域)添加端口。如果省略了--zone選項(xiàng)配置,將使用默認(rèn)區(qū)域。此選項(xiàng)可以多次指定。如果提供了--timeout,則該規(guī)則將在指定的超時(shí)時(shí)間內(nèi)處于活動(dòng)狀態(tài),超時(shí)之后將自動(dòng)刪除。timeval是一個(gè)數(shù)字(秒)或數(shù)字后跟一個(gè)字符s(秒)、m(分鐘)、h(小時(shí)),例如20m或1h。
端口可以是單個(gè)端口號(hào),也可以是端口范圍portid-portid。協(xié)議可以是tcp、udp、sctp或dccp。
--timeout選項(xiàng)不能與--permanent選項(xiàng)組合使用。
取消開放端口
firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol
從區(qū)域中刪除端口。如果省略了--zone選項(xiàng)配置,將使用默認(rèn)區(qū)域。此選項(xiàng)可以多次指定。
--permanent可用于持久設(shè)置選項(xiàng)。這些更改不會(huì)立即生效,只有在重新啟動(dòng)/重新加載服務(wù)或系統(tǒng)重新啟動(dòng)后才會(huì)生效。如果未使用--permanent,則更改將僅是運(yùn)行時(shí)配置的一部分(所做的變更在重啟服務(wù)、重新加載服務(wù)后失效),下同,不再贅述。
例子
例子:為public區(qū)域持久開放 tcp協(xié)議端口 15672
# firewall-cmd --permanent --add-port=15672/tcp # firewall-cmd --list-ports # 查不到端口 # #讓配置生效 # firewall-cmd --reload success # firewall-cmd --list-ports 15672/tcp
說明:
firewall-cmd --reload
重新加載防火墻規(guī)則并保留狀態(tài)信息。當(dāng)前的持久配置將成為新的運(yùn)行時(shí)配置,也就說執(zhí)行的所有僅運(yùn)行時(shí)變更在重新加載規(guī)則后丟失。類似的,有以下命令
firewall-cmd --complete-reload
完全重新加載防火墻,甚至netfilter內(nèi)核模塊。這很可能會(huì)終止活動(dòng)連接,因?yàn)闋顟B(tài)信息會(huì)丟失。此選項(xiàng)僅用于嚴(yán)重的防火墻問題。例如,防火墻規(guī)則正確的情況下,無(wú)法建立連接的狀態(tài)信息問題
例子:為public區(qū)域持久開放 tcp協(xié)議端口范圍 1000-2000(包括1000及2000)
# firewall-cmd --permanent --add-port=1000-2000/tcp success # firewall-cmd --reload success # firewall-cmd --list-ports 15672/tcp 1000-2000/tcp
例子:為public區(qū)域持久取消開放 tcp協(xié)議端口 15672
# firewall-cmd --permanent --remove-port=15672/tcp success # firewall-cmd --reload success # firewall-cmd --list-ports 1000-2000/tcp
例子:為public區(qū)域持久取消開放tcp協(xié)議端口范圍 1000-2000(包括1000及2000)
]# firewall-cmd --permanent --remove-port=1000-2000/tcp success # firewall-cmd --reload success # firewall-cmd --list-ports #
IP、網(wǎng)絡(luò)訪問限制
添加開放源
firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]|MAC|ipset:ipset
綁定源(source,IP、網(wǎng)絡(luò)、MAC、IP集)到區(qū)域zone。如果省略了--zone選項(xiàng)配置,將使用默認(rèn)區(qū)域。
取消開放源
firewall-cmd [--permanent] --remove-source=source[/mask]|MAC|ipset:ipset
從區(qū)域zone刪除之前添加綁定的源
例子
例子:允許IP 192.168.50.182持久訪問為public區(qū)域
# firewall-cmd --permanent --add-source=192.168.50.182 success # firewall-cmd --reload success
說明:添加IP白名單后,即使未添加開放端口,針對(duì)當(dāng)前IP,也可以正常訪問。
例子:允許子網(wǎng)192.168.50.0/24持久訪問為public區(qū)域
# firewall-cmd --permanent --add-source=192.168.50.0/24 success # firewall-cmd --reload success
例子:取消IP 192.168.50.182對(duì)public區(qū)域的持久訪問許可
# firewall-cmd --permanent --remove-source=192.168.50.182 success # firewall-cmd --reload success
富語(yǔ)言規(guī)則
列出富語(yǔ)言規(guī)則
firewall-cmd [--permanent] [--zone=zone] --list-rich-rules
以換行符分隔的列表形式列出為區(qū)域添加的富語(yǔ)言規(guī)則。如果省略了--zone選項(xiàng),將使用默認(rèn)區(qū)域。
添加富語(yǔ)言規(guī)則
firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=timeval]
為區(qū)域添加富語(yǔ)言規(guī)則'rule'。此選項(xiàng)可以多次指定。如果省略了區(qū)域,將使用默認(rèn)區(qū)域。如果提供了--timeout,則該規(guī)則將在指定的超時(shí)時(shí)間內(nèi)處于活動(dòng)狀態(tài),超時(shí)之后將自動(dòng)刪除。timeval是一個(gè)數(shù)字(秒)或數(shù)字后跟一個(gè)字符s(秒)、m(分鐘)、h(小時(shí)),例如20m或1h。
--timeout選項(xiàng)不能與--permanent選項(xiàng)組合使用。
刪除富語(yǔ)言規(guī)則
firewall-cmd [--permanent] [--zone=zone] --remove-rich-rule='rule'
從區(qū)域中刪除富語(yǔ)言規(guī)則'rule'。此選項(xiàng)可以多次指定。如果省略了區(qū)域,將使用默認(rèn)區(qū)域。
查詢富語(yǔ)言規(guī)則
firewall-cmd [--permanent] [--zone=zone] --query-rich-rule='rule'
返回是否為區(qū)域添加了富語(yǔ)言規(guī)則'rule'。如果省略了--zone,將使用默認(rèn)區(qū)域。如果為真,則返回0,否則返回1。
例子
例子:允許 IP 192.168.50.182 持久訪問public區(qū)域tcp協(xié)議端口15672
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept' # firewall-cmd --reload
例子:取消 IP 192.168.50.182 持久訪問public區(qū)域tcp協(xié)議端口15672的許可
# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept' success # firewall-cmd --reload
例子:禁止 IP 192.168.50.182 持久訪問public區(qū)域
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" reject' # firewall-cmd --reload
注意:添加訪問限制前,建議先移除之前的訪問許可配置,否則可能導(dǎo)致當(dāng)前規(guī)則不起作用。此外,這里的reject也可以替換為drop,即直接丟棄來訪請(qǐng)求數(shù)據(jù)包。
例子:取消禁止 IP 192.168.50.182 持久訪問public區(qū)域限制
# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" reject' # firewall-cmd --reload
例子:查看當(dāng)前配置的富語(yǔ)言規(guī)則
# firewall-cmd --list-rich-rules rule family="ipv4" source address="192.168.50.182" reject
列出為區(qū)域啟用或添加的所有內(nèi)容
firewall-cmd[--permanent] [--zone=zone] --list-all
列出為區(qū)域添加或啟用的所有內(nèi)容。如果省略了--zone選項(xiàng)配置,則將使用默認(rèn)區(qū)域。
例子:
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: 15672/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
保存當(dāng)前運(yùn)行時(shí)配置為持久配置
# firewall-cmd --runtime-to-permanent
保存活動(dòng)運(yùn)行時(shí)配置并用它覆蓋持久配置。
鏈接:https://www.cnblogs.com/shouke/p/18366534
-
Linux
+關(guān)注
關(guān)注
87文章
11326瀏覽量
209961 -
防火墻
+關(guān)注
關(guān)注
0文章
419瀏覽量
35645
原文標(biāo)題:10分鐘精通Linux Firewalld:從入門到企業(yè)級(jí)安全防護(hù),新手必看!
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論