← Wszystkie artykuły

Bezpieczny Proxmox — firewall, dostęp po kluczu i whitelist zarządzania

· 1 min czytania · Paweł Burzyński
ProxmoxBezpieczeństwoFirewall

Host Proxmox z publicznym IP jest skanowany przez boty w ciągu minut od wystawienia. Panel na porcie 8006 i SSH na 22 to główne cele. Dobra wiadomość: Proxmox ma wbudowany firewall, a kilka rozsądnych ustawień zamyka temat.

Zasada: domyślnie blokuj, wpuszczaj wyjątki

Firewall konfiguruje się na trzech poziomach: datacenter, host i maszyna. Ustaw domyślną politykę wejścia na DROP i dopuszczaj tylko to, co potrzebne. W /etc/pve/firewall/cluster.fw:

[OPTIONS]
enable: 1
policy_in: DROP

Od tej chwili nic nie wejdzie, dopóki jawnie nie zezwolisz — dlatego najpierw dodaj regułę na SSH i panel, żeby się nie odciąć.

Whitelist zarządzania przez IPSet

Zamiast wystawiać SSH i panel na cały świat, ogranicz je do zaufanych adresów (biuro, VPN). Zdefiniuj IPSet i wpuść na nim tylko porty zarządzania:

[IPSET mgmt]
203.0.113.10   # biuro
198.51.100.5   # VPN

[RULES]
IN SSH(ACCEPT) -source +mgmt
IN ACCEPT -source +mgmt -p tcp -dport 8006
IN ACCEPT -p icmp

Reszta ruchu do SSH i panelu jest odrzucana. Bot, który nawet nie jest na liście, dostaje ciszę.

SSH tylko po kluczu

Hasła to najsłabsze ogniwo. Wgraj swój klucz publiczny na konto root i wyłącz logowanie hasłem. W pliku /etc/ssh/sshd_config.d/99-hardening.conf:

PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
X11Forwarding no

Przed przeładowaniem zawsze waliduj konfigurację, żeby literówka nie odcięła dostępu:

sshd -t && systemctl reload ssh

Sprawdź z zewnątrz, że hasło jest odrzucane — próba logowania hasłem powinna zwrócić Permission denied (publickey).

fail2ban jako druga linia

Nawet z whitelistą warto mieć fail2ban — banuje adresy po serii nieudanych prób. Minimalny jail dla SSH w /etc/fail2ban/jail.d/ssh.local:

[sshd]
enabled = true
maxretry = 3
findtime = 600
bantime = 3600

[recidive]
enabled = true
bantime = 604800

Jail recidive łapie powracających i banuje ich na tydzień. Sprawdzenie stanu:

fail2ban-client status sshd

Co jeszcze warto zamknąć

Weryfikuj efekt z zewnątrz. „U mnie działa" na hoście nie znaczy, że port jest zamknięty dla świata — przetestuj z innej sieci, że tylko właściwe porty odpowiadają.