dubzland.shorewall
Dubzland: Shorewall
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