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ルールが適用されていることを確認します
情報
注意: このロールの機能はほとんどオプトインまたはオプトアウト可能です。
利用可能なすべてのオプションについては、メインデフォルトファイルにあるデフォルト設定を参照してください!
注意: 現在このロールはDebianベースのシステムのみをサポートしています。
警告: 提供したすべての設定/変数が有効性をチェックされるわけではありません。誤った設定がロールを壊す可能性があります!
使用方法
シンプルな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
インストール
ansible-galaxy install ansibleguy.linux_ufw
ライセンス
gpl-3.0
ダウンロード
2.5k
所有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg