dubzland.shorewall

Dubzland: Shorewall

Gitlab pipeline status (self-hosted)

Shorewallファイアウォールビルダーをインストールして構成します。

必要条件

Ansibleのバージョンは2.0以上が必要です。netaddr Pythonパッケージが必要です。

役割変数

利用可能な変数は以下にリストされており、デフォルト値が示されています(詳細はdefaults/main.ymlを参照してください):

dubzland_shorewall_conf

dubzland_shorewall_conf:
  startup_enabled: "Yes"
  verbosity: 1
  log_level: '"info"'
  log_martians: "Yes"
  log_verbosity: 2
  log_zone: Both
  logfile: /var/log/shorewall
  logformat: '"%s(%d) %s "'

/etc/shorewall/shorewall.confに設定されるオプションです。オプション名は大文字または小文字で指定できます(ファイルには全て大文字で書き込まれます)。詳細はshorewall.conf マニュアルページを参照してください。

dubzland_shorewall_params

dubzland_shorewall_params: []

/etc/shorewall/paramsに書き込むキーバリューペアのリストです。paramsの使用に関する詳細はparams マニュアルページを参照してください。

dubzland_shorewall_zones

dubzland_shorewall_zones:
  - name: fw
    type: firewall
  - name: net
    type: ipv4
  - name: lan
    type: ipv4

/etc/shorewall/zonesに宣言するゾーンです。詳細はzones マニュアルページを参照してください。

dubzland_shorewall_interfaces

dubzland_shorewall_interfaces:
  - name: eth0
    zone: net
    options:
      - tcpflags
      - nosmurfs
      - routefilter
      - "sourceroute=0"
  - name: eth1
    zone: lan
    options:
      - tcpflags
      - nosmurfs
      - routefilter

/etc/shorewall/interfacesに設定するインターフェースのリストです。詳細はinterfaces マニュアルページを参照してください。

dubzland_shorewall_hosts

dubzland_shorewall_hosts: []

ファイアウォールマシンによってルーティング可能であるが、直接アクセスできないホストを指定します。

dubzland_shorewall_policies

dubzland_shorewall_policies:
  - source: "$FW"
    dest: all
    policy: ACCEPT
  - source: net
    dest: all
    policy: REJECT
  - source: all
    dest: all
    policy: REJECT
    log_level: info

Shorewallがパケットに対してデフォルトの行動を決定するために使用するポリシーです。詳細はpolicy マニュアルページを参照してください。

dubzland_shorewall_snat

dubzland_shorewall_snat:
  - action: MASQUERADE
    dest: eth0

iptablesのためのSNAT/Masqueradingを構成します。アウトバウンドトラフィックにネットワークアドレス変換(NAT)を行う必要がある場合に必要です。詳細はsnat マニュアルページを参照してください。

dubzland_shorewall_rules

dubzland_shorewall_rules:
  - section: NEW
    rulesets:
      - comment: PINGS
        rules:
          - action: Ping(ACCEPT)
            source: all
            dest: all
      - comment: Web traffic
        rules:
          - action: Web(ACCEPT)
            source: $FW,lan
            dest: net

このロールの核心部分です。Shorewallが監視するインターフェースを通過するパケットを処理する方法を決定するために使用するルールを構成します。詳細はrules マニュアルページを参照してください。

依存関係

なし。

例プレイブック

2つのNIC(eth0がインターネット用、eth1がLAN用)を持つマシンの例:

- hosts: firewall
  become: yes
  roles:
    - role: dubzland-shorewall
      vars:
        dubzland_shorewall_zones:
          - name: fw
            type: firewall
          - name: net
            type: ipv4
          - name: lan
            type: ipv4
        dubzland_shorewall_interfaces:
          - name: eth0
            zone: net
            options:
              - tcpflags
              - nosmurfs
              - routefilter
              - "sourceroute=0"
          - name: eth1
            zone: lan
            options:
              - tcpflags
              - nosmurfs
              - routefilter
        dubzland_shorewall_policies:
          - source: "$FW"
            dest: all
            policy: ACCEPT
          - source: net
            dest: all
            policy: REJECT
          - source: all
            dest: all
            policy: REJECT
            log_level: info
        dubzland_shorewall_snat:
          - action: MASQUERADE
            dest: eth0
        dubzland_shorewall_rules:
          - section: NEW
            rulesets:
              - comment: Pings
                rules:
                  - action: Ping(ACCEPT)
                    source: all
                    dest: all
              - comment: Web Surfing
                rules:
                  - action: Web(ACCEPT)
                    source: lan
                    dest: net
                  - action: ACCEPT
                    source: lan
                    dest: net
                    proto: udp
                    dest_ports:
                      - 80
                      - 443

これにより、すべての人がファイアウォールマシンをpingでき、LANクライアントがインターネット上のホストにpingできるようになります。また、すべてのLANクライアントがウェブを閲覧することもできます。

ライセンス

MIT

著者

プロジェクトについて

Shorewall for Debian

インストール
ansible-galaxy install dubzland.shorewall
ライセンス
mit
ダウンロード
74
所有者
A lone greybeard