geerlingguy.firewall
Ansible Role: Firewall (iptables)
Linux用のiptablesベースのファイアウォールをインストールします。IPv4(iptables
)とIPv6(ip6tables
)の両方をサポートします。
このファイアウォールはシンプルさを重視しており、特定のポートだけを受信トラフィックのために開放します(Ansibleの変数を通じて設定可能)。iptables
やファイアウォールに関する基本的な知識があれば、このロールは安全なシステムファイアウォールの良い出発点になるでしょう。
ロールを実行した後、サーバー上でfirewall
の初期サービスが利用可能になります。ファイアウォールを制御するには、service firewall [start|stop|restart|status]
を使用できます。
要件
特になし。
ロール変数
使用可能な変数は以下に示します。デフォルト値も含まれています(defaults/main.yml
を参照):
firewall_state: started
firewall_enabled_at_boot: true
ファイアウォールサービスの状態を制御します。サービスが実行中であるべきか(firewall_state
)、システム起動時に有効であるべきか(firewall_enabled_at_boot
)を設定します。
firewall_flush_rules_and_chains: true
ファイアウォールが再起動するたびに、すべてのルールとチェーンをフラッシュするかどうかを設定します。他のプロセスがiptablesを管理している場合(例:Docker)には、false
に設定してください。
firewall_template: firewall.bash.j2
ファイアウォールルールを生成する際に使用するテンプレート。
firewall_allowed_tcp_ports:
- "22"
- "80"
...
firewall_allowed_udp_ports: []
受信トラフィックのために開放するTCPまたはUDPポートのリストです。
firewall_forwarded_tcp_ports:
- { src: "22", dest: "2222" }
- { src: "80", dest: "8080" }
firewall_forwarded_udp_ports: []
ソースポート(src
)をデスティネーションポート(dest
)に転送します。TCPまたはUDPにそれぞれ対応します。
firewall_additional_rules: []
firewall_ip6_additional_rules: []
ファイアウォールに追加するカスタムルールです(コマンドラインから追加する形式と同じです、例:iptables [rule]
/ip6tables [rule]
)。以下は使用例です:
# IP 167.89.89.18 のみがポート4949(Munin)にアクセスできるようにします。
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 4949 -s 167.89.89.18 -j ACCEPT"
# IP 214.192.48.21 のみがポート3306(MySQL)にアクセスできるようにします。
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 3306 -s 214.192.48.21 -j ACCEPT"
その他の例については、Iptables Essentials: Common Firewall Rules and Commandsを参照してください。
firewall_log_dropped_packets: true
ドロップされたパケットをsyslogにログするかどうかを設定します(メッセージは「Dropped by firewall: 」というプレフィックスが付きます)。
firewall_disable_firewalld: false
firewall_disable_ufw: false
true
に設定すると、firewalld(RHEL/CentOSにデフォルトでインストールされる)またはufw(Ubuntuにデフォルトでインストールされる)を無効にします。
firewall_enable_ipv6: true
false
に設定するとip6tablesの設定を無効にします(例:GRUB_CMDLINE_LINUX
にipv6.disable=1
が含まれている場合)。
依存関係
特になし。
例のプレイブック
- hosts: server
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.firewall }
vars/main.yml
内:
firewall_allowed_tcp_ports:
- "22"
- "25"
- "80"
ライセンス
MIT / BSD
著者情報
このロールは2014年にJeff Geerlingによって作成されました。彼はAnsible for DevOpsの著者です。
Simple iptables firewall for most Unix-like systems.
ansible-galaxy install geerlingguy.firewall