zoukankan      html  css  js  c++  java
  • OpenWrt防火墙配置(极路由)

    说明:

    1、极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已。

    2、Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防火墙机制同样也是,最上层采用了自己基于UCI标准的配置方法管理防火墙firewall,最终写入到iptables。

    3、UCI是OpenWrt统一配置文件的标准,真心不太喜欢这种语法,没iptables来的清晰。

    4、OpenWrt基于firewall的配置,由于涉及到多个网口,有Wan和Lan这些,最终会转换成很多自定义的链,看来来很吃力,我的建议是直接在firewall层全部开启,然后自己使用iptables做限制。不建议停掉之后再自己写配置,不然你无法知道哪些网口是走向什么地方的。

    5、firewall不能单独关闭,不然会无法上网。

    简单教程:

    OpenWrt下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”进行控制管理的。此文件可以使用UCI进行控制,也可以使用vi编辑器直接修改。

    该文件最后会在/etc/init.d/firewall启动的时候由UCI进行解码并且生成iptables规则生效。因此使用者不需要了解iptables即可通过配置文件实现防火墙规则。

    防火墙的修改生效,需要重启防火墙执行一下命令:

    /etc/init.d/firewall reload  

    /etc/init.d/firewall restart  

    查看当前iptables的已启用策略语法为:

    iptables -L  

    防火墙的基本设置

    • config defaults防火墙默认参数表
      键                         值                                是否必须设置   说明                                          
      input ACCEPT 设置 INPUT 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝  
      output ACCEPT 设置 OUTPUT 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝
      forward REJECT 设置 FORWARD 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝
      syn_flood 1 是否启用防洪水攻击。可选值:0关闭,1启用。
      synflood_rate 字符串 设置 SYN 包传输洪水攻击检测比率值,默认为:25 单位(包/秒)
      synflood_burst       字符串 设置 SYN 包传输比率值识别洪水攻击,默认为:50 单位(包/秒)
      disable_ipv6 1 设置关闭掉 IPv6 的防火墙策略, 可选值:0忽略,1关闭。

    这部分参考值使用系统默认值即可,无需修改:

    config defaults  
            option syn_flood        1  
            option input            ACCEPT  
            option output           ACCEPT  
            option forward          REJECT  
    # Uncomment this line to disable ipv6 rules  
    #       option disable_ipv6     1  
    • config zone用于WAN/LAN域(zone)的参数表
      键                             值                                 是否必须设置    说明                                                                                                                               
      name 字符串 域,必须是唯一值,可选值:wan,lan  
      network 列表值 哪些接口被捆绑到这个域中,可选接口的名称,比如:lan,wan,wan6 
      input ACCEPT 设置INPUT链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝
      output ACCEPT 设置OUTPUT链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝
      forward ACCEPT 设置FORWARD链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝
      masq 1 设置传输伪装,如果是WAN口必须为1
      mtu_fix 1 设置MTU的MSS钳制,如果是WAN口请为1

    这部分配置也不需要做修改,参考:  

    config zone  
            option name             lan  
            list   network          'lan'  
            option input            ACCEPT  
            option output           ACCEPT  
            option forward          ACCEPT  
      
    config zone  
            option name             wan  
            list   network          'wan'  
            list   network          'wan6'  
            option input            REJECT  
            option output           ACCEPT  
            option forward          REJECT  
            option masq             1  
            option mtu_fix          1
    • config forwarding路由转发参数表
      键             值            是否必须设置  说明
      src lan 设置转发来源                                               
      dest wan 设置转发目标

    这部分也需要修改,参考:

    config forwarding  
            option src              lan  
            option dest             wan  

    防火墙的规则

    如果在路由产品中需要开发 “允许 WAN 口访问设备的特定端口”,可以设置本规则(比如开放 WAN 口允许 SSH 登入,或允许 WAN 口访问设备的 FTP),一般情况下无需设置。

    防火墙规则在 /etc/config/firewall 中可以有任意数量的规则,这些规则定义了数据传输的动作和行为是被允许还是拒绝。

    规则配置文件结构
    config rule  
    option name '规则名称'  
    .....  
    config rule可选参数表
    是否必须设置      说明
    name  字符串            设置当前这个 rule 的名称
    target 字符串 设置防火墙的动作,可选值:ACCEPT 许可, REJECT 拒绝, DROP 抛弃
    src 字符串 数据源的zone域是哪个。可选值: wan / lan
    src_ip  字符串 数据源的IP地址是哪个。
    src_mac  字符串 数据源的 MAC 地址是哪个。
    src_port  字符串 数据源的端口,可以是一个端口,或一个端口范围,但是必须同时指定了协议类型 
    proto 字符串 数据源的协议类型,可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部      
    dest 字符串 数据目标的 zone 域是哪个,可选值:wan / lan
    dest_ip 字符串 数据目标的IP地址。
    dest_port    字符串 数据目标的端口,可以是一个端口,或一个端口范围,但是必须同时指定了协议类型
    family 字符串 数据的协议族,可选值: ipv4, ipv6, any

    rule规则可以灵活设置,比如允许WAN口可以ssh到系统,举例:

    config rule  
    option name wan-ssh  
    option src wan  
    option dest_port 22  
    option proto tcp  
    option target ACCEPT  

    端口转发和 DMZ(demilitarized zone 隔离区)

    端口转发是路由产品中常见的配置,它允许使用者通过WAN口访问特定的端口转发给局域网的一台电脑设备(比如WAN口访问80端口(HTTP)将转发给局域网某台网站服务器)。

    端口转发也是在防火墙配置/etc/config/firewall中定义redirect段策略实现的。所有匹配的来源数据将根据目标设置转发到目标主机上。

    firewall配置中可以有多个redirect转发策略,默认是没有开放任何转发的,如果需要转发请使用vi或UCI进行配置。

    规则配置文件结构

    config redirect  
    option name '名称'  
    ....  

    config redirect可选参数表

    键     值     是否必须设置     说明   
    name     字符串       是                           设置当前这个 redirect 的名称   
    src 字符串 转发源的 zone 域,一般转发都是转发从 wan 过来的访问  
    src_ip  字符串 转发源的 IP 地址指定
    src_mac      字符串 转发源的 MAC 地址指定
    src_port 字符串 转发源的端口指定
    proto 字符串 转发源的协议类型,可选值:tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部   
    dest 字符串 转发目标的 zone 域
    dest_ip 字符串 转发目标的IP地址指定
    dest_mac  字符串 转发目标的MAC地址指定
    dest_port 字符串 转发目标的端口指定

    端口转发的可配置性十分灵活,比如我们将 9020 这个端口转发给内网一台服务器的 80,举例:

    config redirect  
    option name '9020-80'  
    option proto 'tcp'  
    option src 'wan'  
    option src_dport '9020'  
    option dest 'lan'  
    option dest_ip '192.168.1.100'  
    option dest_port '80'  

     将电脑192.168.1.2设置DMZ隔离区,举例:

    config redirect  
    option src wan  
    option proto all  
    option dest_ip 192.168.1.2  
     

    参考:

    http://wiki.openwrt.org/zh-cn/doc/uci(UCI)

    http://wiki.openwrt.org/zh-cn/doc/uci/firewall(防火墙配置)

    https://www.haiyun.me/archives/openwrt-iptables.html(自定义iptables替换firewall)

    http://blog.csdn.net/u011641885/article/details/49303699(以上内容部分转自此篇文章)

  • 相关阅读:
    第二阶段Sprint冲刺会议8
    第二阶段Sprint冲刺会议7
    第二阶段Sprint冲刺会议6
    问题账户需求分析
    2016年秋季个人阅读计划
    应该怎么做需求分析--读后感
    个人总结
    人月神话第三篇阅读笔记
    第十六周学习进度
    人月神话第二篇阅读笔记
  • 原文地址:https://www.cnblogs.com/EasonJim/p/8425669.html
Copyright © 2011-2022 走看看