RedHat和SUSE系列下有比較好用的iptables管理工具,可以像控制服務進程一樣來對防火牆進行管理及控制,Debian系發行版默認不開啟iptables,
當然也沒有與之相關的能直接管理的工具了。
正常情況下,我們寫入的iptables規則將會在系統重啟時消失。即使我們使用iptables-save命令將iptables規則存儲到文件,
在系統重啟后也需要執行iptables-restore操作來恢復原有規則。Debian有兩種方法可以讓系統重啟時規則不消失也就是實現持久化iptables規則。
一、首先我們把我們需要設置的規則寫到一個文本文件中,這樣的好處是寫完所有的規則便於查找排錯,不要上來就通過命令添加規則。
在/etc/目錄下新建local/目錄,我喜歡把自定義的配置放到/etc/local/目錄中便於以后管理,在新建iptables/目錄存放規則文件。
新建ipv4規則rules.v4文件
root@debian:~# vim.tiny rules.v4
#清除已有iptables規則
iptables -F
iptables -X
iptables -Z
#自定義默認策略
root@debian:~# iptables -P INPUT DROP
root@debian:~# iptables -P OUTPUT ACCEPT
root@debian:~# iptables -P FORWARD DROP
#定制各項規則
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
可以根據實際的情況增減.主要是檢查規則的先后順序和命令的格式,沒有問題就可以在命令行下逐條執行了,如果需要可以保存下來
二、方法一實現持久化iptables規則,通過腳本文件。
1、通過上面的方法已經配置好了iptables,下面我們用iptables-save命令將配置好的iptables的規則保存到/etc/local/iptables/rules.v4.1.save文件
root@debian:~# iptables-save > /etc/local/iptables/rules.v4.save
2、查看/etc/local/iptables/rules.v4.save文件的內容
=====================================================================
root@debian:~# cat /etc/local/iptables/rules.v4.save
# Generated by iptables-save v1.6.0 on Thu Sep 27 09:13:42 2018
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT
# Completed on Thu Sep 27 09:13:42 2018
root@debian:~#
======================================================================
通過上面的顯示可以看到filter表中三個鏈的默認規則設置和定制的各項規則,可以把這個文件當作模板,根據實際情況進行配置。
這樣就可以不用在通過iptables命令把需要設置的每一項都敲一遍,可以用iptables-resotre 命令直接從/etc/local/iptables/rules.v4.save文件
恢復所有規則,命令如下:
root@debian:~# iptables-resotre < /etc/local/iptables/rules.v4.save
3、設置開機啟動
在/etc/network/if-pre-up.d/目錄下新建個iptables文件(文件名可以自定義)並添加腳本
命令如下:
===================================================================
root@debian:~# vim.tiny /etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/local/iptables/rules.v4.save
===================================================================
上面添加的這個腳本文件的意思是在網絡接口啟動之前執行iptables-restore < /etc/local/iptables/rules.v4.1.save 命令
啟動防火牆規則。
給這個新添加的文件/etc/network/if-pre-up.d/iptables執行權限
root@debian:~# chmod +x /etc/network/if-pre-up.d/iptables
4、重啟查看是否開機加載
root@debian:~# shutdown -r now
root@debian:~# iptables -L -n
三、方法二實現持久化iptables規則,使用iptables-persistent工具
1、安裝iptables-persistent
root@debian:~# apt install iptables-persistent
安裝的過程中安裝軟件會詢問您是否要保存當前IPv4規則。如下圖:
如果您已經定義了規則,則選擇[是]保存即可。
接下來會提示是否要保存當前IPv6規則。如下圖:
我這里沒有用到IPv6選擇[否]即可。
通上面的操作會在/etc目錄下生成/iptables目錄,並生成rules.v4文件用於存放IPv4規則,如果保存IPv6規則也會生產一個rules.v6文件
可以通過dpkg-reconfigure iptables-persistent命令從新啟動剛才的選項進行配置即可。
2、iptables-persistent程序的命令是netfilter-persistent 使用的語法如下
netfilter-persistent 選項(start|stop|restart|reload|flush|save)
start:啟動目錄/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則
stop:啟動目錄/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則,暫時不可用,被flush選項取代
restart:從新啟動目錄/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則
reload:從新加載動目錄/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則
flush:清楚防火牆的規則,但是不會清空/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則
save:保持防火牆的規則,會清空/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的規則,並從新寫入防火牆現有的規則
3、通過netfilter-persistent save命令就可以保持防火牆當前的配置規則,系統重啟后也不會丟失。
其實這個程序的作用就是將防火牆現有的規則保存下來,開機以后在從新加載,和第一種方法類似的,只是不用自己配置腳本,
我們可以查看/etc/iptables/下rules.v4文件的內容,如下:
=====================================================================
root@debian:~# cat /etc/iptables/rules.v4
# Generated by iptables-save v1.6.0 on Thu Sep 27 16:39:54 2018
*filter
:INPUT ACCEPT [186:19951]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [71:11164]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 23 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 24 -j ACCEPT
COMMIT
# Completed on Thu Sep 27 16:39:54 2018
===================================================================
可以看到和通過命令iptables-save保存的格式一樣,以后我們也可以直接配置這個文件,在里面添加我們需要的規則,並通過命令從新加載即可。
可以通過systemctl查看到netfilter-persistent 服務是開機自啟動的。