Ansible – iptables設定 – ansible-playbook

Server

iptables 用の roleを作成してタスクは以下のように
ポイントは INPUT DROPを最後にしているところです。
SSHの設定より前にあると切断されてしまいます。接続できなくなりました。

$ vim iptables/tasks/main.yml

---
# tasks file for iptables
- name: Drop all forward
  iptables:
      chain: FORWARD
      policy: DROP
- name: Accept all output
  iptables:
      chain: OUTPUT
      policy: ACCEPT
- name: Accept INPUT from local
  iptables:
      in_interface: lo
      chain: INPUT
      jump: ACCEPT
- name: Allow related and established connections
  iptables:
      chain: INPUT
      ctstate: ESTABLISHED,RELATED
      jump: ACCEPT
- name: Allow new incoming SYN packets on TCP port 20222 (SSH).
  iptables:
      chain: INPUT
      protocol: tcp
      destination_port: '20222'
      ctstate: NEW
      syn: match
      jump: ACCEPT
      comment: Accept new SSH connections.
- name: Set open service ports for the INPUT to ACCESS
  iptables:
      chain: INPUT
      protocol: tcp
      destination_port: '{{ item }}'
      jump: ACCEPT
  with_items: [ '80', '443' ]
- name: Set the policy for the INPUT chain to DROP
  iptables:
      chain: INPUT
      policy: DROP

結果はこんな感じです。
ローカルでは25に接続できましたが、外からはssh,http,httpsだけ接続できます。またデータベースサーバーなどバックエンドサーバーへの接続が必要な場合は別途タスクを追加します。自分の持っているサーバーIPからポートの範囲を指定して許可する形です。

# iptables -L -v
Chain INPUT (policy DROP 29 packets, 8620 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 5094 2899K ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    4   252 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ipulse-ics flags:FIN,SYN,RST,ACK/SYN /* Accept new SSH connections. */ ctstate NEW
    2   120 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 171 packets, 15932 bytes)
 pkts bytes target     prot opt in     out     source               destination  

無事設定完了です!

コメント

タイトルとURLをコピーしました