geerlingguy.firewall

Ansible 角色:防火墙 (iptables)

CI

安装一个基于 iptables 的 Linux 防火墙。支持 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_LINUX 包含 ipv6.disable=1)。

依赖

无。

示例 Playbook

- hosts: server
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.firewall }

vars/main.yml

firewall_allowed_tcp_ports:
  - "22"
  - "25"
  - "80"

许可证

MIT / BSD

作者信息

这个角色由 Jeff Geerling 于 2014 年创建,他是 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