Debian9.5 系統配置持久化iptables規則



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 服務是開機自啟動的。











免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM