UFW
Ansible
ファイアウォールルールを処理するためのufw
モジュールがあります。でroles/common/tasks/main.yml
すべての私のサーバーに含まれて、私は(特に)があります。
- name: Install ufw
apt: name=ufw
- name: Allow ssh through firewall
ufw: proto=tcp port=22 rule=allow
- name: Set ufw policy
ufw: state=enabled direction=incoming policy=deny
編集:デフォルトポリシーを「拒否」に設定する前にsshを許可する必要があります(元は上記の反対でした)。
次に、各ロールに、そのロール用の追加のファイアウォールルールがあります。たとえば、でroles/nginx/tasks/main.yml
、私は(とりわけ)これを持っています:
- name: Allow nginx firewall
ufw: proto=tcp port=80 rule=allow
- name: Allow nginx ssl firewall
ufw: proto=tcp port=443 rule=allow
したがって、すべてのnginxサーバーのポート80と443が開いています。
このようにして、必要な一般的な構成を構築し、より具体的なロールにルールを追加できます。
フェルム
ufw
処理できないルールがある場合、うまくいくと思う解決策は次のとおりですferm
。それはほとんど何もすることができ、そして次のようなディレクトリからルールを読み取るために、それを構成することができ/etc/ferm/input.d/
、/etc/ferm/output.d/
、/etc/ferm/forward.d/
あなたが作ることができるなど、common
役割が不可欠準備ferm
設定をして、他の役割は、これらのディレクトリ内のファイルをドロップしています。
プレーンなiptables
ansible
別の方法で指定された規則に加えて規則を指定するというあなたの要件は珍しくて、どうやらを使用するためのポイントのほとんどを無視しansible
ます。残念ながら、plain以外の方法はありませんがiptables
、これは非常にugいものです。次に、ポート80を開くroles/nginx/tasks/main.yml
(未テスト)例を示します。
- name: Check if port 80 is allowed
shell: iptables -L | grep -q "Allow http" && echo -n yes || echo -n no
register: check_allow_http
changed_when: no
always_run: yes
- name: Allow port 80
command: >
iptables -A INPUT -p tcp -m tcp --dport 80
-m comment --comment "Allow http" -j ACCEPT
when: check_allow_http.stdout == "no"
notify:
- Save iptables
どこSave iptables
実行するハンドラがありますiptables-save
。上記のすべてを書くのは非常に退屈ですが、特にを使用して管理するルールが少数しかない場合は適切ですansible
。