 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  VPS — pierwsze kroki

# 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 "twoj@email.pl"
# 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 "admin@twojadomena.pl";
# 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.

Contabo

VPS z dużym RAM i dyskiem NVMe — stosunek ceny do możliwości bez konkurencji

Najlepszy stosunek ceny

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Najtańszy VPS w Polsce — idealny do nauki administracji Linux

Nauka Linux

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

Hostido

VPS z polskim supportem i panelem zarządzania

Polski support

[Aktywuj rabat →](/out/hostido)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/hostido)

## Powiązane strony

-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Nginx — hardening i konfiguracja bezpieczeństwa](/baza-wiedzy/nginx-security-hardening)
-   [Webmin — panel administracyjny dla serwera Linux](/baza-wiedzy/webmin-panel-administracyjny)
-   [Wszystkie artykuły](/baza-wiedzy/)