geerlingguy.firewall
Rola Ansible: Zapora (iptables)
Instaluje zaporę opartą na iptables dla systemu Linux. Obsługuje zarówno IPv4 (iptables
), jak i IPv6 (ip6tables
).
Celem tej zapory jest prostota, a nie złożoność, i otwiera tylko kilka konkretnych portów dla ruchu przychodzącego (konfigurowalnych za pomocą zmiennych Ansible). Jeśli masz podstawową wiedzę na temat iptables
i/lub zapór w ogóle, ta rola powinna być dobrym punktem wyjścia do stworzenia bezpiecznej zapory systemowej.
Po uruchomieniu roli, usługa firewall
będzie dostępna na serwerze. Możesz używać service firewall [start|stop|restart|status]
, aby kontrolować zaporę.
Wymagania
Brak.
Zmienne Roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml
):
firewall_state: started
firewall_enabled_at_boot: true
Kontroluje stan usługi zapory; czy powinna działać (firewall_state
) i/lub być włączona przy uruchomieniu systemu (firewall_enabled_at_boot
).
firewall_flush_rules_and_chains: true
Czy należy usunąć wszystkie reguły i łańcuchy za każdym razem, gdy zapora jest uruchamiana ponownie. Ustaw na false
, jeśli inne procesy zarządzają iptables (np. Docker).
firewall_template: firewall.bash.j2
Szablon do użycia podczas generowania reguł zapory.
firewall_allowed_tcp_ports:
- "22"
- "80"
...
firewall_allowed_udp_ports: []
Lista portów TCP lub UDP (odpowiednio) do otwarcia dla ruchu przychodzącego.
firewall_forwarded_tcp_ports:
- { src: "22", dest: "2222" }
- { src: "80", dest: "8080" }
firewall_forwarded_udp_ports: []
Przekierowuje port src
na port dest
, zarówno TCP, jak i UDP (odpowiednio).
firewall_additional_rules: []
firewall_ip6_additional_rules: []
Jakiekolwiek dodatkowe (niestandardowe) reguły do dodania do zapory (w tym samym formacie, w jakim dodałbyś je za pomocą linii poleceń, np. iptables [reguła]
/ip6tables [reguła]
). Oto kilka przykładów, jak to można wykorzystać:
# Zezwól tylko na dostęp IP 167.89.89.18 do portu 4949 (Munin).
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 4949 -s 167.89.89.18 -j ACCEPT"
# Zezwól tylko na dostęp IP 214.192.48.21 do portu 3306 (MySQL).
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 3306 -s 214.192.48.21 -j ACCEPT"
Zobacz Podstawy iptables: Popularne Reguły i Polecenia Zapory dla więcej przykładów.
firewall_log_dropped_packets: true
Czy rejestrować odrzucone pakiety do syslog (wiadomości będą poprzedzone "Odrzucone przez zaporę: ").
firewall_disable_firewalld: false
firewall_disable_ufw: false
Ustaw na true
, aby wyłączyć firewalld (domyślnie zainstalowany w RHEL/CentOS) lub ufw (domyślnie zainstalowany w Ubuntu), odpowiednio.
firewall_enable_ipv6: true
Ustaw na false
, aby wyłączyć konfigurację ip6tables (na przykład, jeśli twoje GRUB_CMDLINE_LINUX
zawiera ipv6.disable=1
).
Zależności
Brak.
Przykład Playbooka
- hosts: serwer
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.firewall }
W pliku vars/main.yml
:
firewall_allowed_tcp_ports:
- "22"
- "25"
- "80"
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2014 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
Simple iptables firewall for most Unix-like systems.
ansible-galaxy install geerlingguy.firewall