Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

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

Najczęstsze pytania

Czy mogę całkowicie zablokować logowanie przez hasło na VPS? +
Tak — i powinieneś to zrobić po skonfigurowaniu kluczy SSH. W /etc/ssh/sshd_config ustaw: PasswordAuthentication no, PubkeyAuthentication yes, PermitRootLogin no. Po zapisaniu: systemctl reload sshd. UWAGA: Upewnij się że klucz SSH działa zanim wylogujesz się z obecnej sesji — zamknięcie dostępu bez klucza oznacza konieczność użycia konsoli VNC z panelu dostawcy VPS.
Kiedy swap jest potrzebny na VPS? +
Swap jest kluczowy na małych VPS (1-2 GB RAM). Gdy RAM jest pełny, Linux używa swapu na dysku zamiast zabijać procesy (OOM killer). Bez swapu MySQL lub PHP-FPM mogą zostać zabite przy spike obciążenia. Zalecana wielkość: 2x RAM dla małych VPS (np. 2 GB RAM → 4 GB swap), 1x RAM dla większych. Na SSD ustaw vm.swappiness=10 — Linux sięgnie po swap tylko przy bardzo niskim RAM.
Co to jest fail2ban i czy jest obowiązkowy? +
Fail2ban monitoruje logi systemowe i automatycznie blokuje IP, które wielokrotnie nie zdały autoryzacji (brute force). Na VPS z otwartym portem SSH obserwujesz setki prób logowania dziennie — fail2ban blokuje atakujące IP przez iptables/nftables po np. 5 nieudanych próbach w 10 minut. Nie jest "obowiązkowy" gdy używasz tylko kluczy SSH (brak hasła = brute force nieskuteczny), ale warto go mieć jako dodatkową warstwę ochrony.
Jak sprawdzić podstawowe parametry nowego VPS przez SSH? +
Po pierwszym logowaniu uruchom: uname -a (kernel i architektura), lsb_release -a (dystrybucja i wersja), nproc (liczba CPU), free -h (RAM i swap), df -h (dysk), ip addr (adresy IP i interfejsy), systemctl list-units --failed (usługi z błędami). Te dane przydają się przy kontakcie z supportem i planowaniu konfiguracji.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.