geerlingguy.firewall

Ansible Role: Firewall (iptables)

CI

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_LINUXipv6.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
ライセンス
mit
ダウンロード
1.2M
所有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns