geerlingguy.firewall

Rola Ansible: Zapora (iptables)

CI

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.

O projekcie

Simple iptables firewall for most Unix-like systems.

Zainstaluj
ansible-galaxy install geerlingguy.firewall
Licencja
mit
Pobrania
1.2M
Właściciel
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns