zoukankan      html  css  js  c++  java
  • 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 服务是开机自启动的。










  • 相关阅读:
    Lining.js
    stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
    任正非:美国通信产业失败,不要归罪于华为的崛起(创业过程:前端替客户考虑,后端及时回款建立信誉)
    草根站长赚不到钱的六大原因(失败的理由却只有一个,那就是你不够努力)
    记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)
    Qt源码分析之QObject
    Mongodb索引用B树,而Mysql用B+树
    开源工作流elsa-core
    ExpressionTree实现JSON解析器
    分析Ajax爬取
  • 原文地址:https://www.cnblogs.com/pipci/p/9714533.html
Copyright © 2011-2022 走看看