zoukankan      html  css  js  c++  java
  • salt-添加默认的防火墙规则(第二课)

    防火墙添加,分为三种类型

    1,允许指定ip访问服务器所有端口

    2,允许指定端口被所有人访问,比如80

    3,允许指定ip+端口访问服务器

    然后拒绝所有的未定义ip和端口的访问

     这次配合pillar一起给iptable做规则定制

    文件路径:

    /srv/pillar/top.sls   pillar的入口文件

    /srv/pillar/iptable/init.sls    iptable的信息文件

    /srv/salt/base/init/iptable.sls   iptables规则文件

    top.sls内容

    base:
      '*':
        - iptable

    init.sls内容:

    firewall:
    # 针对ip的iptables规则
      ip-firewall:
        allow:
          - 140.207.90.162
          - 183.131.194.189
        deny:
          - 0.0.0.0
    
    # 针对port的iptables规则
      port-firewall:
        ports:
          - 80
    
    # 针对ip+port的iptables规则
      ip+port-firewall:
        port:
          - 8080
        port-allow:
          - 192.168.1.1

    iptable.sls内容:

    {% for name, ipinfo in pillar['firewall'].iteritems() %}
    {% if 'allow' in ipinfo %}
    {% for ip in ipinfo['allow'] %}
    {{ name }}_allow_{{ip}}:
      iptables.insert:
        - table: filter
        - chain: INPUT
        - position: 1
        - source: {{ ip }}
        - jump: ACCEPT
        - save: True
    {% endfor %}
    {% elif 'ports' in ipinfo %}
    {% for ports in ipinfo['ports'] %}
    {{ name }}_ports_{{ ports }}:
      iptables.insert:
        - table: filter
        - chain: INPUT
        - position: 1
        - proto: tcp
        - dport: {{ ports }}
        - jump: ACCEPT
        - save: True
    {% endfor %}
    {% elif 'port' in ipinfo %}
    {% for port in ipinfo['port'] %}
    {% for portip in ipinfo['port-allow'] %}
    {{ port }}_{{ portip }}_port_allow:
      iptables.insert:
        - table: filter
        - chain: INPUT
        - position: 1
        - proto: tcp
        - source: {{ portip }}
        - dport: {{ port }}
        - jump: ACCEPT
        - save: True
    {% endfor %}
    {% endfor %}
    {{ name }}_deny:
      iptables.append:
        - table: filter
        - chain: INPUT
        - jump: DROP
        - save: True
    {% elif 'deny' in ipinfo %}
    {% for ip in ipinfo['deny'] %}
    {{ name }}_deny_{{ip}}:
      iptables.insert:
        - table: filter
        - chain: INPUT
        - position: 1
        - source: {{ ip }}
        - jump: DROP
        - save: True
    {% endfor %}
    {% endif %}
    {% endfor %}

    简单说下

    init.sls就是把要添加的ip端口都放在文件中,然后用salt的模板会吧sls文件生成字典,然后iptable.sls里面的东西就是把字典内容循环读出来然后判断把不同的ip添加成对应的规则就可以了

     下面是终极效果图:

  • 相关阅读:
    ModbusRTU模式和结束符(转)
    modbus字符串的结束符介绍
    IAR平台移植TI OSAL到STC8A8K64S4A12单片机中
    实时系统概念
    单片机的存储区范例
    如何实现返回上一个页面,就像点击浏览器的返回按钮一般
    spring项目中的定时任务实现和问题解决
    context-param与init-param的区别与作用
    Chapter 1 First Sight——16
    一个好用简单的布局空间EasyUI
  • 原文地址:https://www.cnblogs.com/xianyin/p/9676639.html
Copyright © 2011-2022 走看看