zoukankan      html  css  js  c++  java
  • Debian下配置防火墙iptables

    debian下iptables输入命令后即时生效,但重启之后配置就会消失,可用iptables-save快速保存配置,因为Debian上iptables是不会保存规则的,然后在开机自动的时候让iptables自动加载刚刚导出的配置文件,方法如下:
    若要停止iptables,iptables -F清空所有配置效果等同于停止。
    whereis iptables           查找iptables 所在的路径。


    1、将iptables配置保存到/etc/iptables,这个文件名可以自己定义,与下面的配置一致即可
    iptables-save > /etc/iptables


    2、创建自启动配置文件,并授于可执行权限
    iptables-save > /etc/iptables


    3、编辑该自启动配置文件,内容为启动网络时恢复iptables配置
    vi /etc/network/if-pre-up.d/iptables
    内容为:

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables

    保存并退出。这样重启之后iptables就自动加载规则了。


    ##注意:在下次修改iptables规则之后要重新导出配置文件。
    #清空配置
    iptables -F
    iptables -X
    iptables -Z
    #配置,禁止进,允许出,允许回环网卡
    iptables -P INPUT DROP
    iptables -A OUTPUT -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    #允许ping
    iptables -A INPUT -p icmp -j ACCEPT
    #允许ssh
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    #允许ftp
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    #允许ftp被动接口范围,在ftp配置文件里可以设置
    iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT
    #学习felix,把smtp设成本地
    iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT -s 127.0.0.1
    iptables -A INPUT -p tcp -m tcp --dport 25 -j REJECT
    #允许DNS
    iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
    iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
    #允许http和https
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    # 允许已建立的或相关连的通行
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    #禁止其他未允许的规则访问
    iptables -A INPUT -j REJECT  #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
    iptables -A FORWARD -j REJECT


    #保存配置
    iptables-save > /etc/iptables


    由于Debian安装iptables后默认不是服务,service iptables会提示unrecognized service,需要添加脚本到/etc/init.d/,脚本如下
    建议将其保存为/etc/init.d/iptables,然后chmod +x /etc/init.d/iptables 添加运行权限。

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides: iptables
    # Required-Start:
    # Required-Stop:
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: start and stop iptables firewall
    # Description: Start, stop and save iptables firewall
    ### END INIT INFO 
    PATH=”/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin” 
    IPTABLES=/sbin/iptables
    IPTABLES_SAVE=/sbin/iptables-save
    IPTABLES_RESTORE=/sbin/iptables-restore
    IPTABLES_CONFIG=/etc/iptables.conf
    [ -x $IPTABLES ] || exit 0
     . /lib/lsb/init-functions
     case "$1" in
     start)
        log_action_begin_msg "Starting firewall"
             type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
        if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
             type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
        ;;
     stop)
        log_action_begin_msg "Saving current firewall configuration"
        if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        log_action_begin_msg "Flushing ALL firewall rules from chains!"
        if $IPTABLES -F ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
        if $IPTABLES -X ; then
            $IPTABLES -P INPUT ACCEPT
            $IPTABLES -P FORWARD ACCEPT
            $IPTABLES -P OUTPUT ACCEPT
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;
     save)
        log_action_begin_msg "Saving current firewall configuration"
        if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;
     force-reload|restart)
        log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
        $IPTABLES -F
        $IPTABLES -X
        if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;
     *)
        echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
        exit 1
        ;;
     esac
     exit 0 

    原文出处:https://my.oschina.net/u/2404183/blog/509676?p=1

  • 相关阅读:
    linux三剑客之grep
    MySQL练习(1)
    appium获取toast方法
    Could not parse UiSelector argument: 'XXX' is not a string 错误解决办法
    基于python的几种排序算法的实现
    生成allure测试报告之后,服务器端口无法访问查看生成的report,可能是这样引起的。
    通过源码看原理之 selenium
    如何查看浏览器记住的密码
    传智播客JavaWeb day09-mysql入门、数据库操作、数据库表操作、数据行操作
    SQLServer数据库表架构和数据保存成sql文件
  • 原文地址:https://www.cnblogs.com/dannylinux/p/10275339.html
Copyright © 2011-2022 走看看