ansibleguy.linux_ufw

非推奨

自動化の中でミドルウェアとしてUFWを使用することは、実際には意味がありません。

単一のルール変更に対して不必要な複雑さを生み出します!

私の意見では、これは自動化のために設計されているツールではありません。

実際、NFTablesの使用をお勧めします: ansibleguy.infra_nftables

Ansibleロール - 簡単なファイアウォール(UFW)

DebianベースのLinuxサーバーにソフトウェアファイアウォール「UFW」をデプロイ/設定するためのAnsibleロールです。

コーヒーを買ってください

テスト済み:

  • Debian 11

インストール

# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw

# Galaxyから
ansible-galaxy install ansibleguy.linux_ufw

# またはカスタムロールパスに
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles

# 依存関係をインストール
ansible-galaxy install -r requirements.yml

機能

このAnsibleロールは以下を行います:

  • パッケージインストール

    • UFW
  • 設定

    • 二つのモードのいずれかを使用してルールを設定します

      • ステートフルな方法(_デフォルト_)
        • 既存のルールを保持し、ルールの状態を使用して追加/削除します
      • ステートレスな方法
        • 毎回UFWの状態とルールをリセットします
        • その後で新しいルールが適用されます
    • SSHルールが適用されていることを確認します

情報

使用方法

シンプルなAnsibleのGUIが必要ですか?私のAnsible WebUIをご覧ください。

設定

必要に応じて「ufw_rules」辞書を定義します:

ufw_rules:
  ruleShortName:
    rule: 'allow'  # 空の場合はデフォルト
    port: 80
    proto: 'tcp'
    log: 'no'  # 空の場合はデフォルト
    from_ip: 'any'  # 空の場合はデフォルト
    to_ip: 'any'  # 空の場合はデフォルト
    direction: 'in'  # 空の場合はデフォルト
    present: true  # 空の場合はデフォルト => ステートフルルールチェックに使用(エイリアス = ステート: present)
    position: 2  # ルールセット内のルールの位置を定義できます(エイリアス = insert)
    comment: 'デフォルトのコメントを上書きできます'

または、コンパクトな方法:

ufw_rules: {
    ruleShortName: {rule: 'allow',  port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'デフォルトのコメントを上書きできます'}
}

実行

プレイブックを実行します:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml

UFWタスク自体は'community.general.ufw'です。

状態前:

guy@ansible:~$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 7424/tcp                   ALLOW IN    Anywhere                   # Ansible 管理 - confusedService
[ 2] 7429/tcp                   ALLOW IN    Anywhere                   (log) # Ansible 管理 - nothingImportant

設定

ufw_rules:
  # 着信トラフィックの制限
  SecShöl:
    port: 22
    proto: 'tcp'
    log: true
    rule: 'limit'
  RandomWebServer:
    port: 8482
    proto: 'tcp'
  SecureLink:
    port: 54038:54085
    proto: 'udp'
    log: true
    from_ip: '192.168.194.0/28'
  ipsecESP:
    proto: 'esp'
    from_ip: '10.10.10.1'
    to_ip: '10.10.20.254'
  ipsecIKE:
    port: 500,4500
    proto: 'udp'
    from_ip: '10.10.10.1'
    to_ip: '10.10.20.254'
  
  # 発信トラフィックの制限
  denyNtpOutgoing:
    port: 123
    proto: 'udp'
    rule: 'deny'
    direction: 'out'

  # これらのルールを削除します:
  confusedService:
    port: 7424
    proto: 'tcp'
    state: 'absent'
  nothingImportant:
    port: 7429
    proto: 'tcp'
    log: true
    present: false

結果:

guy@ansible:~$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                   (log) # Ansible 管理 - SecShöl
[ 2] 8482/tcp                   ALLOW IN    Anywhere                   # Ansible 管理 - RandomWebServer
[ 3] 54038:54085/udp            ALLOW IN    192.168.194.0/28           (log) # Ansible 管理 - SecureLink
[ 4] 10.10.20.254/esp           ALLOW IN    10.10.10.1/esp             # Ansible 管理 - ipsecESP
[ 5] 10.10.20.254 500,4500/udp  ALLOW IN    10.10.10.1                 # Ansible 管理 - ipsecIKE
[ 6] 123/udp                    DENY OUT    Anywhere                   (out) # Ansible 管理 - denyNtpOutgoing
プロジェクトについて

Role to install and configure ufw firewall-rules on a linux machine

インストール
ansible-galaxy install ansibleguy.linux_ufw
ライセンス
gpl-3.0
ダウンロード
2.5k
所有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg