1. 程式人生 > >Linux日常維護(firewalld的9個zone和service)

Linux日常維護(firewalld的9個zone和service)

firewalld zone service

一、iptables規則備份和恢復


iptables如果不使用service iptables save命令,則重啟之後規則會全部消失。

services save命令默認把規則保存在/etc/sysconfig/iptables文件裏。

可以用ipables-save > ipt.txt 這個命令把現在的規則保存在文本文件裏。然後在恢復默認配置

等到想用的時候再用iptables-restore < ipt.txt這個命令恢復保存的配置。

如果想啟動服務就讓有規則,就把iptables保存在/etc/sysconfig/iptables


舉例:

技術分享圖片

技術分享圖片


二、firewalld防火墻的9個zone以及他們的用法



firewalld默認有9個zone(zone是firewalld的單位)

默認zone為public

drop(丟棄):任何接受的網絡數據包都被丟棄,沒有任何恢復,僅能有發送出去的網絡連接(數據包不能進來,但是可以出去)

block(限制):任何接受的網絡連接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒絕。(和drop相比,比較寬松一些,主要是為了針對icmp)

piblic(公共):在公共區域內使用,不能相信網絡內其他計算機不會對你造成危害,只能接受經過選取的連接。

external(外部):特別是為路由器啟用了偽裝功能的外部網,你不能信任來自網絡的其他計算,不能相信他們不會對你造成傷害,只能接受經過選擇的連接。

dmz(非軍事區):用於你的非軍事區內的電腦,此區域可公開訪問,可以有限的進入你的內部網絡,僅僅接受經過選擇的連接。

work(工作):用於工作區,你可以基本信任網絡內的其他電腦不會對你造成危害,僅僅接收經過選擇的連接。

home(家庭):用於內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。

internal(內部):用於內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。

trusted(信任):可接受所有的網絡連接。


[root@litongyao ~]# firewall-cmd --get-zones (查看所有zone的命令,一共有9個zone)

work drop internal external trusted home dmz public block

[root@litongyao ~]# firewall-cmd --get-default-zone (查看默認的zone的命令)

public

我們知道每個zone就是一套規則集,但是有那麽多zone,對於一個具體的請求來說應該使用哪個zone(哪套規則)來處理呢?這個問題至關重要,如果這點不弄明白其他的都是空中樓閣,即使規則設置的再好,不知道怎樣用、在哪裏用也不行,在/usr/lib/iptables/zone,保存著zone的配置文件

對於一個接受到的請求具體使用哪個zone,firewalld是通過三種方法來判斷的:

1、source,也就是源地址

2、interface,接收請求的網卡

3、firewalld.conf中配置的默認zone

這三個的優先級按順序依次降低,也就是說如果按照source可以找到就不會再按interface去查找,如果前兩個都找不到才會使用第三個。

[root@litongyao ~]# firewall-cmd --get-active-zones (查看素有網卡所擁有的zone)

public

interfaces: ens33 ens37

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens33 (查看指定網卡的zone)

public


[root@litongyao ~]# firewall-cmd --zone=public --add-interface=lo (給指定網卡設置zone)

success

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo

public


[root@litongyao ~]# firewall-cmd --zone=dmz --change-interface=lo (給指定網卡更改zone)

success

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo

dmz


[root@litongyao ~]# firewall-cmd --zone=dmz --remove-interface=lo (指定網卡刪除zone,會恢復到默認網卡zone)

success

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo

no zone


沒有辦法刪除網卡的默認zone,如果要更改,可以使用以下命令更改默認zone:

[root@litongyao ~]# firewall-cmd --set-default-zone=work

success

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens33

work

[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens37

work



三、service

  • 在/usr/lib/firewalld/services/目錄中,還保存了另外一類配置文件,每個文件對應一項具體的網絡服務,如ssh服務等。

  • 與之對應的配置文件中記錄了各項服務所使用的tcp/udp端口,在最新版的firewalld中默認已經定義了70多種服務供我們使用。

  • zone就是調用了不同的service而實現了不同的效果。


[root@litongyao ~]# firewall-cmd --get-service (把系統文件內所有的service列出來)

[root@litongyao ~]# firewall-cmd --get-default-zone (查看系統當前的默認zone)

[root@litongyao ~]# firewall-cmd --list-service (把默認zone下的service列出來)

[root@litongyao ~]# firewall-cmd --zone=(zone名) --list-service (把指定的zone下的service列出來)

[root@litongyao ~]# firewall-cmd --zone=(zone名) --add-service=(service名)(把service加入到指定zone下)(只是暫時寫入內存中)

[root@litongyao ~]# firewall-cmd --zone=(zone名) --add-service=(service名) --permanent (修改配置文件,把service永久的加入到指定Zone下面)

配置文件在/etc/firewalld/zones/下,每次修改完配置文件,他都會把舊的配置文件後綴名加上.old也保存在目錄下

[root@litongyao zones]# ls /etc/firewalld/zones/

public.xml public.xml.ol


修改zone和service有兩種方法,一種是剛才我們寫的命令行,一種是直接修改配置文件


在/usr/lib/firewalld/services下保存的是services的模板

在/usr/lib/firewalld/zone下保存的是zone的模板

舉例:(使用配置文件的方法修改zone和service)

1.需求:把ftp服務自定義端口1121,需要在work zone下面方形ftp

[root@litongyao zones]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services (復制模板到service下)

[root@litongyao zones]# vim /etc/firewalld/services/ftp.xml (修改ftp的配置文件,修改端口1121)

[root@litongyao zones]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ (復制模板到zones下)

[root@litongyao zones]# vim /etc/firewalld/zones/work.xml (修改work.xml的配置文件,把ftp加到裏面)

<service name="ftp"/>

[root@litongyao zones]# firewall-cmd --reload (重新加載配置,配置文件生效)


Linux日常維護(firewalld的9個zone和service)