VPS — pierwsze kroki po zakupie serwera
Opublikowano: 9 kwietnia 2026 · Kategoria: VPS
Nowy VPS to niezabezpieczony serwer z kontem root i hasłem w emailu potwierdzającym zakup. Zanim zainstalujesz cokolwiek użytecznego, wykonaj 8 kroków hardleningowych które chronią przed botami, brute force i przypadkowymi awariami. Zajmie to około 20 minut.
Krok 1: Pierwsze logowanie i podstawowe informacje
# Zaloguj się jako root (dane dostępowe z emaila od dostawcy) ssh root@IP_TWOJEGO_VPS # Sprawdź podstawowe parametry serwera uname -a # Kernel, architektura lsb_release -a # Dystrybucja (Ubuntu, Debian, etc.) nproc # Liczba CPU/vCPU free -h # RAM i swap df -h # Miejsce na dysku ip addr # Adresy IP i interfejsy sieciowe # Sprawdź usługi z błędami systemctl list-units --failed
Krok 2: Aktualizacja systemu
# Ubuntu/Debian apt update && apt upgrade -y # Zainstaluj podstawowe narzędzia apt install -y curl wget git vim htop net-tools ufw fail2ban unattended-upgrades # Opcjonalnie: sprawdź czy potrzebny jest restart (po aktualizacji kernela) ls /var/run/reboot-required 2>/dev/null && echo "RESTART WYMAGANY" || echo "Brak potrzeby restartu"
Krok 3: Tworzenie użytkownika sudo
Praca na koncie root to zły nawyk — jeden błąd i możesz usunąć system. Stwórz dedykowanego użytkownika z uprawnieniami sudo:
# Utwórz nowego użytkownika adduser twoja_nazwa # Dodaj do grupy sudo usermod -aG sudo twoja_nazwa # Sprawdź że użytkownik ma uprawnienia sudo su - twoja_nazwa sudo whoami # Powinno zwrócić: root exit
Krok 4: Konfiguracja kluczy SSH
Klucze SSH eliminują potrzebę hasła i są odporne na brute force. Na swoim lokalnym komputerze:
# Na LOKALNYM komputerze — wygeneruj parę kluczy (jeśli nie masz) ssh-keygen -t ed25519 -C "[email protected]" # Klucz prywatny: ~/.ssh/id_ed25519 (NIE udostępniaj!) # Klucz publiczny: ~/.ssh/id_ed25519.pub (możesz udostępniać) # Skopiuj klucz publiczny na VPS (jako nowy użytkownik) ssh-copy-id twoja_nazwa@IP_TWOJEGO_VPS # Alternatywnie ręcznie: # Na VPS jako twoja_nazwa: mkdir -p ~/.ssh chmod 700 ~/.ssh # Wklej zawartość ~/.ssh/id_ed25519.pub do: nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # Test — zaloguj się bez hasła ssh twoja_nazwa@IP_TWOJEGO_VPS
Krok 5: Hardening SSH — wyłącz logowanie root
# Edytuj konfigurację SSH (jako root lub sudo) nano /etc/ssh/sshd_config # Zmień lub dodaj poniższe linie: # PermitRootLogin no # PasswordAuthentication no # PubkeyAuthentication yes # AuthorizedKeysFile .ssh/authorized_keys # X11Forwarding no # MaxAuthTries 3 # Przeładuj SSH (NIE restartuj — zostaniesz rozłączony) systemctl reload sshd # PRZETESTUJ logowanie w NOWEJ sesji terminala zanim zamkniesz obecną! # ssh twoja_nazwa@IP_TWOJEGO_VPS
Krok 6: UFW Firewall
UFW (Uncomplicated Firewall) to nakładka na iptables z przyjazną składnią:
# Domyślna polityka: blokuj wszystkie połączenia przychodzące ufw default deny incoming ufw default allow outgoing # Zezwól na SSH (OBOWIĄZKOWO przed włączeniem UFW!) ufw allow 22/tcp # Lub jeśli zmieniłeś port SSH: # ufw allow 2222/tcp # Zezwól na HTTP i HTTPS ufw allow 80/tcp ufw allow 443/tcp # Dla panelu administracyjnego (np. phpMyAdmin na innym porcie) # ufw allow from 1.2.3.4 to any port 8080 # Włącz firewall ufw enable # Sprawdź status ufw status verbose
Krok 7: Fail2ban — ochrona przed brute force
# Utwórz lokalny plik konfiguracyjny (nie edytuj jail.conf — nadpisuje go update) cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local nano /etc/fail2ban/jail.local # W sekcji [DEFAULT] ustaw: # bantime = 1h # findtime = 10m # maxretry = 5 # banaction = ufw # Sekcja [sshd] powinna być enabled = true # Uruchom fail2ban systemctl enable --now fail2ban # Sprawdź status i zablokowane IP fail2ban-client status fail2ban-client status sshd # Odblokuj IP (jeśli przypadkowo zablokowałeś siebie) fail2ban-client set sshd unbanip 1.2.3.4
Krok 8: Swap dla małych VPS
Bez swapu na VPS z 1-2 GB RAM ryzykujesz OOM killer — Linux zabije losowy proces (często MySQL lub PHP-FPM) gdy skończy się pamięć:
# Sprawdź czy swap już istnieje swapon --show free -h # Utwórz plik swap (2 GB) fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # Dodaj do /etc/fstab (trwałe po restarcie) echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab # Optymalizacja dla SSD — rzadziej używaj swapu echo 'vm.swappiness=10' | tee -a /etc/sysctl.conf sysctl -p # Sprawdź free -h
Krok 9: Automatyczne aktualizacje bezpieczeństwa
# Skonfiguruj unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades
# Lub ręcznie edytuj konfigurację
nano /etc/apt/apt.conf.d/50unattended-upgrades
# Upewnij się że są aktywne:
# Unattended-Upgrade::Allowed-Origins {
# "${distro_id}:${distro_codename}-security";
# };
# Unattended-Upgrade::Mail "[email protected]";
# Unattended-Upgrade::Remove-Unused-Packages "true";
# Sprawdź czy działa
unattended-upgrade --dry-run --debug Krok 10: Hostname i timezone
# Ustaw nazwę hosta hostnamectl set-hostname twoj-serwer # Ustaw strefę czasową (Polska) timedatectl set-timezone Europe/Warsaw # Sprawdź timedatectl status hostname