Firewalld入門使用

導讀

firewalld做爲iptables的前端控制器,底層使用內核的netfilter框架,用於實現持久的網絡流量規則。firewalld的較大區別在於:
1.firewalld使用區域和服務而不像iptables使用鏈式規則。
2.firewalld可動態管理規則集,不會破壞現有會話和鏈接。
3.firewalld默認拒絕流量,設置規則集後纔可放行。html

CentOS7和Fedora 20+默認包含了firewalld組件,可以使用systemd管理單元進行控制。前端

管理firewalld

  1. 啓動服務並加入開機啓動項
    sudo systemctl enable --now firewalld.service
  2. 查看服務
    sudo systemctl status firewalld.service
    sudo systemctl cat firewalld.service

區域

「區域」是針對給定位置或場景(例如家庭、公共、受信任等)可能具備的各類信任級別的預構建規則集。不一樣的區域容許不一樣的網絡服務和入站流量類型,而拒絕其餘任何流量。 首次啓用 FirewallD 後,public 將是默認區域。區域也能夠用於不一樣的網絡接口。例如,要分離內部網絡和互聯網的接口,你能夠在 internal 區域上容許 DHCP,但在 external區域僅容許 HTTP 和 SSH。未明確設置爲特定區域的任何接口將添加到默認區域。linux

1.查看默認區域web

sudo firewall-cmd --get-default-zone

2.修改默認區域shell

sudo firewall-cmd --set-default-zone=internal

3.查看網絡接口使用的區域服務器

sudo firewall-cmd --get-active-zones

4.查看特定區域的全部配置網絡

sudo firewall-cmd --zone=public --list-all
#查看全部區域的配置
sudo firewall-cmd  --list-all

5.初始化區域框架

阻塞區域(block):任何傳入的網絡數據包都將被阻止;
工做區域(work):相信網絡上的其餘計算機,不會損害你的計算機;
家庭區域(home):相信網絡上的其餘計算機,不會損害你的計算機;
公共區域(public):不相信網絡上的任何計算機,只有選擇接受傳入的網絡鏈接;
隔離區域(DMZ):也稱爲非軍事區域,內外網絡之間增長的一層網絡,起到緩衝做用。對於隔離區域,只有選擇接受傳入的網絡鏈接;
信任區域(trueted):全部網絡鏈接均可以接受;
丟棄區域(drop):任何傳入的網絡鏈接都被拒絕;
內部區域(internal):信任網絡上的其餘計算機,不會損害你的計算機。只選擇接受傳入的網絡鏈接;
外部區域(external):不相信網絡上的其餘計算機,不會損害你的計算機。只選擇接受傳入的網絡鏈接;
firewalld的默認區域是public。ssh

服務

1.查看默認的可用服務規則tcp

sudo firewall-cmd --get-services

2.啓用或禁用HTTP服務

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --remove-service=http --permanent

端口

1.查看默認的可用端口規則

sudo firewalld-cmd --zone-public --list-ports

2啓用或禁用8080端口的TCP流量

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

轉發

1.查看轉發狀態

sudo firewall-cmd --zone=public --query-masquerade

2.激活轉發狀態

sudo firewall-cmd --zone=public --add-masquerade

3.添加轉發規則

sudo firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9

規則集

例如,如下是如何使用 FirewallD 爲你的服務器配置基本規則(若是您正在運行 web 服務器)。

一、將 eth0的默認區域設置爲 dmz。 在所提供的默認區域中,dmz(非軍事區)是最適合於這個程序的,由於它只容許 SSH 和 ICMP。

sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0

二、把 HTTP 和 HTTPS 添加永久的服務規則到 dmz 區域中:

sudo firewall-cmd --zone=dmz --add-service=http --permanent
sudo firewall-cmd --zone=dmz --add-service=https --permanent

三、 從新加載 FirewallD 讓規則當即生效:

sudo firewall-cmd --reload

若是你運行 firewall-cmd --zone=dmz --list-all, 會有下面的輸出:

dmz (default)
  interfaces: eth0
  sources:
  services: http https ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

這告訴咱們, dmz區域是咱們的默認區域,它被用於 eth0 接口中全部網絡的源地址和端口。 容許傳入 HTTP(端口 80)、HTTPS(端口 443)和 SSH(端口 22)的流量,而且因爲沒有 IP 版本控制的限制,這些適用於 IPv4 和 IPv6。 不容許IP 假裝以及端口轉發。 咱們沒有 ICMP 塊,因此 ICMP 流量是徹底容許的。沒有豐富Rich規則,容許全部出站流量。

富規則

1.容許來自主機 192.168.0.14 的全部 IPv4 流量。

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept'

2.拒絕來自主機 192.168.1.10 到 22 端口的 IPv4 的 TCP 流量。

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'

3.容許來自主機 10.1.0.3 到 80 端口的 IPv4 的 TCP 流量,並將流量轉發到 6532 端口上。 

sudo firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532'

4.將主機 172.31.4.2 上 80 端口的 IPv4 流量轉發到 8080 端口(須要在區域上激活 masquerade)。

sudo firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=172.31.4.2'

5.列出你目前的豐富規則:

sudo firewall-cmd --list-rich-rules

6.刪除富規則

# 只需將--add-rich-rule替換爲--remove-rich-rule
sudo firewall-cmd --zone=public --remove-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=172.31.4.2'

部分引用:https://linux.cn/article-8098-1.html

相關文章
相關標籤/搜索