一、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)
[root@litongyao ~]# firewall-cmd --zone=public --add-interface=lo (給指定網卡設定zone)
success
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo
[root@litongyao ~]# firewall-cmd --zone=dmz --change-interface=lo (給指定網卡更改zone)
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=lo
dmz
[root@litongyao ~]# firewall-cmd --zone=dmz --remove-interface=lo (指定網卡删除zone,會恢複到預設網卡zone)
no zone
沒有辦法删除網卡的預設zone,如果要更改,可以使用以下指令更改預設zone:
[root@litongyao ~]# firewall-cmd --set-default-zone=work
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens33
work
[root@litongyao ~]# firewall-cmd --get-zone-of-interface=ens37
三、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 (重新加載配置,配置檔案生效)
本文轉自 小新銳 51CTO部落格,原文連結:http://blog.51cto.com/13407306/2046941,如需轉載請自行聯系原作者