Hosting/1.-Hosting-a-server/1.3.-Nastavení-a-zabezpečení-sítě.md

5.4 KiB

Síťová rozhraní

Primární síťové rozhraní je ens3 s IP adresami 159.69.247.130 a 2a01:4f8:c010:1385::1, taktéž vypsanými v informacích o serveru. IPv4 je přidělována dynamicky pomocí DHCP protokolu z DHCP serveru ve správě společnosti Hetzner. IPv6 je nastavena staticky, ale alokace je taktéž spravována společností Hetzner. Přidělené IP jsou vypsány ve webovém rozhraní pro správu serverhostingu.

Dále je na serveru nastaveno rozhraní síťového mostu lxcbr0 sdílené mezi hostitelem a LXC kontejnery. Na hostiteli má toto rozhraní staticky přiřazenou IPv4 10.0.3.1/24

LXC kontejnery mají staticky přidělené IPv4 v konfiguraci kontejneru následovně:

  • 10.0.3.2 onlyoffice
  • 10.0.3.3 gitlab
  • 10.0.3.4 seeddms
  • 10.0.3.5 seeddms-postgres
  • 10.0.3.6 dhis2
  • 10.0.3.7 dhis2-postgres
  • 10.0.3.8 odoo
  • 10.0.3.9 odoo-postgres
  • 10.0.3.10 decidim
  • 10.0.3.11 decidim-postgres
  • 10.0.3.12 sahana
  • 10.0.3.13 sahana-postgres

Na serveru je zapnut IPv4 forwarding (konfigurace v souboru /etc/sysctl.d/50-ip-forward.conf) a obě síťová rozhraní jsou spravována pomocí systemd-networkd.

Firewall

Na serveru je nastaven firewall pomocí iptables a pomocného skriptu firewall s konfigurací v adresáři /etc/firewall/. Následující pravidla jsou nastavena staticky:

IPv4, tabulka filter, chain INPUT

  • Zahoď fragmentované pakety, u kterých nikdy nepřišel první fragment
  • Přijmi ICMP pakety (ping, informace o fragmentaci, nedostupnosti sítě atd.)
  • Zahoď TCP pakety s neplatnými příznaky (např. christmas tree packet - jednoduchá základní ochrana proti DoS, fingerprintingu a tichému scanování portů)
  • Přijmi pakety z předchozích korektně navázaných spojení
  • Přijmi příchozí nová TCP spojení na portu 21 (FTP)
  • Přijmi příchozí nová TCP spojení na portech 40000-49999 (FTP passive)
  • Přijmi příchozí nová TCP spojení na portech 80 a 443 (HTTP a HTTPS)
  • Přijmi příchozí nová TCP spojení na portech 25, 465 a 587 (SMTP, SMTPS a Submission)
  • Přijmi příchozí nová TCP spojení na portech 110 a 995 (POP3 a POP3S)
  • Přijmi příchozí nová TCP spojení na portech 143 a 993 (IMAP a IMAPS)
  • Přijmi příchozí nová TCP spojení na portu 22 (SSH) z adres dasm.dasm.cz a infra.dasm.cz (@Disassembler)
  • Přijmi příchozí nová UDP i TCP spojení na portu 53 (DNS) z adres v subnetu 10.0.3.0/24 (LXC kontejnery)
  • Přijmi příchozí nová spojení z localhostu
  • Zahoď všechna ostatní spojení

IPv4, tabulka nat, chain PREROUTING

  • Příchozí nová TCP spojení na portu 2222 pocházející z IP rozsahů českých ISP přesměruj na 10.0.3.2 (GitLab LXC kontejner), port 22 (SSH). Zdrojem pro rozsahy IP je služba IPdeny.

IPv4, tabulka nat, chain POSTROUTING

  • Aplikuj maškarádu na spojení ze subnetu 10.0.3.0/24, která jsou směrována mimo subnet 10.0.3.0/24

IPv6, tabulka filter, chain INPUT

  • Přijmi ICMP pakety (ping, informace o nedostupnosti sítě atd.)
  • Zahoď TCP pakety s neplatnými příznaky (např. christmas tree packet - jednoduchá základní ochrana proti DoS, fingerprintingu a tichému scanování portů)
  • Přijmi pakety z předchozích korektně navázaných spojení
  • Přijmi příchozí nová TCP spojení na portu 21 (FTP)
  • Přijmi příchozí nová TCP spojení na portech 40000-49999 (FTP passive)
  • Přijmi příchozí nová TCP spojení na portech 80 a 443 (HTTP a HTTPS)
  • Přijmi příchozí nová TCP spojení na portech 25, 465 a 587 (SMTP, SMTPS a Submission)
  • Přijmi příchozí nová TCP spojení na portech 110 a 995 (POP3 a POP3S)
  • Přijmi příchozí nová TCP spojení na portech 143 a 993 (IMAP a IMAPS)
  • Přijmi příchozí nová TCP spojení na portu 22 (SSH) z adres nas.dasm.cz a infra.dasm.cz (@Disassembler)
  • Přijmi příchozí nová spojení z localhostu
  • Zahoď všechna ostatní spojení

Systém detekce narušení

Na serveru je nainstalován systém detekce narušení Fail2ban. Ten principiálně funguje tak, že monitoruje logy jednotlivých služeb a vyhodnocuje neúspěšné pokusy o přihlášení nebo interakci se službou. Pokud stejná IP adresa dosáhne určitého nakonfigurovaného množství neúspěšných pokusů, dostane krátkodobý ban ke službě, ke které se pokouší přihlásit (řád minut až desítek minut). Pokud nasbírá několik těchto krátkodobých banů, je zabanována plošně na celém serveru dlouhodobě (řád dnů až týdnů).

Monitorovány jsou následující služby:

  • SSH
    • Soubor: /var/log/auth.log a tentýž soubor i v LXC kontejneru GitLab
    • Počet pokusů: 5
  • HTTP(S)
    • Soubor: /var/log/apache2/*error.log a log webového rozhraní pro maily RoundCube /usr/share/roundcube/logs/errors
    • Počet pokusů: 10
  • PHP (zneužití funkce fopen())
    • Soubor: /var/log/apache2/*access.log
    • Počet pokusů: 10
  • FTP
    • Soubor: /var/log/pure-ftpd/auth.log
    • Počet pokusů: 10
  • SMTP(S)/POP3(S)/IMAP(S)
    • Soubor: /var/log/mail.log
    • Počet pokusů: 10
  • Fail2ban (recidiva)
    • Soubor: /var/log/fail2ban.log
    • Počet pokusů: 8, u GitLabu 3

Interní zabezpečovací mechanismy jednotlivých služeb, nastavení TLS, omezení funkcí atd. je rozepsáno u příslušných služeb.