65 lines
4.7 KiB
Markdown
65 lines
4.7 KiB
Markdown
# Nastavení a zabezpečení sítě
|
|
|
|
## 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](1.2.-Informace-o-serveru.md). 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 `cni-podman0` sdílené mezi hostitelem a Podman kontejnery. Na hostiteli má toto rozhraní staticky přiřazenou IPv4 **10.88.0.1/16**. Podman kontejnery mají IPv4 přidělované dynamicky z rozsahu **10.88.0.0/16**
|
|
|
|
Na serveru je zapnut IPv4 forwarding (konfigurace v souboru `/etc/sysctl.d/50-ip-forward.conf`). Fyzická 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 i IPv6, 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](https://en.wikipedia.org/wiki/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.88.0.0/16 (z kontejnerů)
|
|
- Přijmi příchozí nová TCP spojení na portu 5432 (PostgreSQL) z adres v subnetu 10.88.0.0/16 (z kontejnerů)
|
|
- Přijmi příchozí nová spojení z localhostu
|
|
- Zahoď všechna ostatní spojení
|
|
|
|
**Podman NAT**
|
|
- Příchozí nová TCP spojení na portu 8801 pocházející z localhostu (127.0.0.1) přesměruj do OnlyOffice kontejneru na port 80 (HTTP)
|
|
- Příchozí nová TCP spojení na portu 8802 pocházející z localhostu (127.0.0.1) přesměruj do Gitea kontejneru na port 8080 (HTTP)
|
|
- Příchozí nová TCP spojení na portu 8803 pocházející z localhostu (127.0.0.1) přesměruj do SeedDMS kontejneru na port 8080 (HTTP)
|
|
- Příchozí nová TCP spojení na portu 8804 pocházející z localhostu (127.0.0.1) přesměruj do Odoo kontejneru na port 8080 (HTTP)
|
|
- Příchozí nová TCP spojení na portu 8805 pocházející z localhostu (127.0.0.1) přesměruj do Decidim kontejneru na port 8080 (HTTP)
|
|
- Příchozí nová TCP spojení na portu 2222 pocházející odkudkoliv přesměruj do Gitea kontejneru na port 22 (SSH).
|
|
|
|
## 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 log Gitea `/srv/gitea/data/data/log/gitea.log`
|
|
- Počet pokusů: 5
|
|
- **HTTP(S)**
|
|
- Soubor: `/var/log/apache2/*error.log`, log webového rozhraní pro maily RoundCube `/usr/share/roundcube/logs/errors` a log Gitea `/srv/gitea/data/data/log/gitea.log`
|
|
- 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.
|