一,檢視linux當前的所有zone
[root@blog ~]$ firewall-cmd --get-zones
block dmz drop external home internal nm-shared public trusted work
二,各個zone的區別
1, 一個網路區域(zone)定義了網路連線的信任級別,
trusted 區 受信任區。
接受所有網路連線。該區繫結的規則(如:網路卡、源網段、服務等)不受防火牆阻擋,所有流量均可透過。
internal 區 用於內部網路。
home 區 用於家庭區域。
work 區 用於工作區域。
internal、home、work 這 3 個區你基本上相信網路上的其他計算機不會損害你的計算機。只接受選定的傳入連線。
dmz 區 用於在非軍事區內可公開訪問但對內部網路有限制訪問的計算機。只接受選定的傳入連線。
external 區 用於啟用偽裝的外部網路,特別是路由器。你不相信網路上的其他計算機不會損害你的計算機。只接受選定的傳入連線。
public 區 在公共場所使用。你不相信網路上的其他計算機不會損害你的計算機。只接受選定的傳入連線。
block 區 任何傳入的網路連線將被拒絕,IPv4和IPv6將分別傳送icmp-host- forbid訊息和icmp6-adm- forbid訊息。只有在這個系統內發起的網路連線是可能的。
drop 區 任何傳入的網路資料包被丟棄,沒有應答。只可能傳出網路連線。
2, 檢視各個區預設的規則:每個zone就是一組規則的集合,如何檢視它們預設的規則有哪些?
預設規則的儲存路徑:
/usr/lib/firewalld/zones/
上面的這個路徑可以用rpm查詢firewalld安裝包得到
[root@blog zones]# rpm -ql firewalld | grep zones
/etc/firewalld/zones
/usr/lib/firewalld/zones/block.xml
/usr/lib/firewalld/zones/dmz.xml
/usr/lib/firewalld/zones/drop.xml
/usr/lib/firewalld/zones/external.xml
/usr/lib/firewalld/zones/home.xml
/usr/lib/firewalld/zones/internal.xml
/usr/lib/firewalld/zones/public.xml
/usr/lib/firewalld/zones/trusted.xml
/usr/lib/firewalld/zones/work.xml
/usr/share/man/man5/firewalld.zones.5.gz
進入目錄後可以看到預設zone的xml配置檔案:
[root@blog zones]# cd /usr/lib/firewalld/zones/
[root@blog zones]# ls
block.xml dmz.xml drop.xml external.xml home.xml internal.xml nm-shared.xml public.xml trusted.xml work.xml
3,檢視各個zone規則的不同:
drop.xml
[root@blog zones]# more drop.xml
<?xml version="1.0" encoding="utf-8"?>
<zone target="DROP">
<short>Drop</short>
<description>Unsolicited incoming network packets are dropped. Incoming packets that are related
to outgoing network connections are accepted. Outgoing network connections are
allowed.</description>
<forward/>
</zone>
block
[root@blog zones]# more block.xml
<?xml version="1.0" encoding="utf-8"?>
<zone target="%%REJECT%%">
<short>Block</short>
<description>Unsolicited incoming network packets are rejected. Incoming packets that are related to outgoing
network connections are accepted. Outgoing network connections are
allowed.</description>
<forward/>
</zone>
public
[root@blog zones]# more public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer.
Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<forward/>
</zone>
trusted
[root@blog zones]# more trusted.xml
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
<short>Trusted</short>
<description>All network connections are accepted.</description>
<forward/>
</zone>
work
[root@blog zones]# more work.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Work</short>
<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer.
Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<forward/>
</zone>
home
[root@blog zones]# more home.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Home</short>
<description>For use in home areas. You mostly trust the other computers on networks to not harm your computer.
Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="mdns"/>
<service name="samba-client"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<forward/>
</zone>
dmz
[root@blog zones]# more dmz.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>DMZ</short>
<description>For computers in your demilitarized zone that are publicly-accessible with limited access to your
internal network. Only selected incoming connections are accepted
.</description>
<service name="ssh"/>
<forward/>
</zone>
external
[root@blog zones]# more external.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>External</short>
<description>For use on external networks. You do not trust the other computers on networks to not harm your
computer. Only selected incoming connections are accepted.</descrip
tion>
<service name="ssh"/>
<masquerade/>
<forward/>
</zone>
internal
[root@blog zones]# more internal.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Internal</short>
<description>For use on internal networks. You mostly trust the other computers on the networks to not harm
your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="mdns"/>
<service name="samba-client"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<forward/>
</zone>
三,檢視九個內建zone的預設target
1, 分別查詢:
說明:可以看到:多數zone的target就是default,
但有三個不同的zone:
trusted: target為ACCEPT
drop: target為DROP
block: target為REJECT
所以在生產環境中,不會對這三個zone新增複雜的規則,只是把它們作為白名單、黑名單使用
[root@blog ~]# firewall-cmd --zone=trusted --permanent --get-target
ACCEPT
[root@blog ~]# firewall-cmd --zone=public --permanent --get-target
default
[root@blog ~]# firewall-cmd --zone=drop --permanent --get-target
DROP
[root@blog ~]# firewall-cmd --zone=block --permanent --get-target
REJECT
[root@blog ~]# firewall-cmd --zone=external --permanent --get-target
default
[root@blog ~]# firewall-cmd --zone=internal --permanent --get-target
default
[root@blog ~]# firewall-cmd --zone=dmz --permanent --get-target
default
[root@blog ~]# firewall-cmd --zone=work --permanent --get-target
default
[root@blog ~]# firewall-cmd --zone=home --permanent --get-target
default
2,列出所有zone的規則:
[root@blog ~]# firewall-cmd --list-all-zones
四,比較public/home/external/internal/work/dmz這六個zone的區別
這六個zone的target同為default,它們的區別在哪裡?
它們的不同之處在於預設規則的不同
1,work/public
work和public兩個zone相同,都允許ssh/dhcpv6-client/cockpit三種服務的訪問
ssh不用說了,
dhcpv6-client是dhcpv6的客戶端,所用的埠是:546
如果不是動態的ip,建議關閉此服務
cockpit: 紅帽開發的網頁版影像化服務管理工具,優點是無需中間層,且可以管理多種服務
它所用的埠是:9090
如果不需要從圖形介面對伺服器管理,建議關閉此服務
2,home/internal
home和internal兩個zone相同,都允許 ssh/mdns/samba-client/dhcpv6-client/cockpit五種服務的訪問
ssh/dhcpv6-client/cockpit 上面已講到
samba-client:提供samba服務的客戶端服務
它的埠是:udp協議138
mdns:mDNS是一種基於多播的服務發現協議,透過它可以使裝置在區域網內自動發現彼此的服務,
它的埠是:udp協議5353
3,dmz/external
dmz只提供ssh服務,
external則額外開啟了<masquerade/>:它用來開啟埠轉發或代理上網