Poradnik PepperTools
Technika i serwery

Konfiguracja i zabezpieczenie serwera Debian vServer: krok po kroku dla początkujących (Część 1 z 3)

Część 1 serii „Własny serwer – od 0 do bezpieczeństwa": wynająłeś vServer – i co dalej? Ten poradnik dla początkujących doprowadza serwer Debian 12 do bezpiecznej podstawy: aktualizacja systemu, użytkownik sudo, zabezpieczenie SSH kluczem, zapora, Fail2ban i automatyczne aktualizacje bezpieczeństwa. Każdy krok do skopiowania.

Konfiguracja i zabezpieczenie serwera Debian vServer: krok po kroku dla początkujących (Część 1 z 3)

Konfiguracja i zabezpieczenie serwera Debian vServer: krok po kroku dla początkujących (Część 1 z 3)

Seria „Własny serwer – od 0 do bezpieczeństwa" · 3 części:

  1. Konfiguracja i zabezpieczenie serwera Debian vServerJesteś tutaj
  2. Instalacja i konfiguracja Froxlora
  3. Prawidłowa konfiguracja e-mail: SPF, DKIM i DMARC

To jest Część 1. Doprowadza świeżo wynajęty serwer do bezpiecznego stanu podstawowego. Na tym serwerze w Części 2 zainstalujemy panel zarządzania Froxlor, a w Części 3 skonfigurujemy wysyłkę e-maili.

Debian vServer einrichten & absichern

Spis treści


Właśnie wynająłeś serwer vServer (VPS) i zadajesz sobie pytanie: „I co teraz?" Właśnie tu zaczynamy. Ten poradnik napisano dla zupełnych początkujących. Prostymi słowami wyjaśniamy co robimy i dlaczego – a każde polecenie możesz po prostu skopiować i wkleić. Na końcu będziesz mieć aktualny serwer chroniony przed najczęstszymi atakami.

Używamy Debiana 12 (Bookworm), jednego z najpopularniejszych i najstabilniejszych systemów serwerowych. Jeśli korzystasz z Ubuntu, niemal wszystkie polecenia działają identycznie.

Ważne: We wszystkich poleceniach zastąp symbole zastępcze swoimi rzeczywistymi wartościami – SERVER-IP adresem IP swojego serwera (znajdziesz go w e-mailu z potwierdzeniem od dostawcy), a nazwa-uzytkownika dowolną nazwą.

Wymagania wstępne

  • Wynajęty vServer/VPS z Debianem 12. Nie masz jeszcze? Dostawcy to np. IONOS, Hetzner lub webtropia.
  • Adres IP i hasło root serwera (otrzymane e-mailem od dostawcy).
  • Terminal na własnym komputerze: w macOS i Linux jest preinstalowany („Terminal"), w Windows użyj PowerShell (preinstalowany) lub PuTTY.

Więcej nie potrzebujesz. Do dzieła.

Krok 1: Połączenie z serwerem przez SSH

„SSH" to szyfrowane połączenie zdalne z serwerem – wpisujesz polecenia na swoim komputerze, a wykonują się one na serwerze. Otwórz terminal i połącz się jako użytkownik root:

ssh root@SERVER-IP

Przy pierwszym połączeniu zostaniesz zapytany, czy ufasz serwerowi – wpisz yes i naciśnij Enter. Następnie podaj hasło root (wpisywanie jest niewidoczne, to normalne). Po połączeniu wiersz wygląda mniej więcej tak:

root@twoj-serwer:~#

Gratulacje – jesteś w środku. (Szczegółowe wprowadzenie do SSH znajdziesz w wiki Debiana.)

Krok 2: Aktualizacja systemu

Świeżo zainstalowany serwer często zawiera przestarzałe pakiety ze znanymi lukami bezpieczeństwa. Pierwszym krokiem jest zawsze: zaktualizować wszystko. Tym poleceniem serwer pobiera listę dostępnych aktualizacji, instaluje je, usuwa zbędne pakiety i porządkuje:

apt update && apt full-upgrade -y && apt autoremove -y && apt clean

Może to potrwać kilka minut. Jeśli pojawi się komunikat o konieczności ponownego uruchomienia, uruchom serwer ponownie:

reboot

Po restarcie połączenie zostanie na chwilę przerwane. Odczekaj ~30 sekund i połącz się ponownie przez ssh root@SERVER-IP.

Krok 3: Nazwa hosta, strefa czasowa i język

Aby logi miały poprawne znaczniki czasu, a serwer schludną nazwę, ustawiamy trzy drobiazgi.

Nazwa hosta (nazwa serwera, np. web01):

hostnamectl set-hostname web01

Ustawienie strefy czasowej (tu: Europa/Warszawa; dostosuj):

timedatectl set-timezone Europe/Warsaw

Instalacja pakietów językowych (locales) i wygenerowanie UTF-8:

apt install -y locales
sed -i 's/# pl_PL.UTF-8/pl_PL.UTF-8/' /etc/locale.gen
locale-gen

Sprawdź wynik:

timedatectl

Powinno tam być „Time zone: Europe/Warsaw".

Krok 4: Utworzenie użytkownika z uprawnieniami sudo

Stała praca jako root jest niebezpieczna – jedna literówka może uszkodzić cały system. Lepiej: zwykły użytkownik, który tylko w razie potrzeby uzyskuje uprawnienia administratora przez poprzedzające słowo sudo.

Utwórz użytkownika (zastąp nazwa-uzytkownika) i podaj silne hasło, gdy pojawi się prośba:

adduser nazwa-uzytkownika

Dalsze pytania (imię, telefon …) możesz pominąć Enterem. Teraz nadaj użytkownikowi uprawnienia sudo:

usermod -aG sudo nazwa-uzytkownika

Przetestuj to, zanim przejdziesz dalej. Otwórz drugie okno terminala i zaloguj się nowym użytkownikiem:

ssh nazwa-uzytkownika@SERVER-IP

Sprawdź, czy sudo działa:

sudo whoami

Jeśli po wpisaniu hasła pojawi się root, wszystko jest w porządku. Zostaw to drugie okno otwarte – będzie nam potrzebne w następnym kroku jako zabezpieczenie.

Krok 5: Zabezpieczenie SSH (wyłączenie logowania root, logowanie kluczem)

Teraz znacznie wzmocnimy dostęp zdalny. Dwa działania: logowanie kluczem SSH zamiast hasła oraz brak bezpośredniego logowania root.

Uwaga – ryzyko zablokowania dostępu: W tym kroku zmieniamy dostęp SSH. Koniecznie zostaw otwarte działające okno z Kroku 4. Dzięki temu wrócisz, jeśli coś pójdzie nie tak.

Wskazówka dla Windows – czy potrzebuję PuTTY i Pageant? Niekoniecznie. Windows 10/11 ma już OpenSSH, a poniższe polecenia (ssh-keygen, ssh) działają bezpośrednio w PowerShell – tak jak w macOS/Linux. Jeśli wolisz narzędzia PuTTY (lub masz starszy Windows), postępuj tak:

>

1. Wygeneruj klucz w PuTTYgen: ustaw „Type of key" na EdDSA → Ed25519, kliknij Generate, poruszaj myszą. Zapisz klucz prywatny jako .ppk; skopiuj pokazany klucz publiczny (pole „Public key for pasting…") do schowka. 2. Umieść klucz publiczny na serwerze w pliku ~/.ssh/authorized_keys swojego użytkownika (jedna linia). 3. Załaduj klucz prywatny w Pageant (agent kluczy PuTTY) – dzięki temu nie musisz go wybierać przy każdym połączeniu. 4. Połącz się przez PuTTY (host: nazwa-uzytkownika@SERVER-IP).

>

PuTTYgen i Pageant są w pakiecie PuTTY: putty.org. Funkcjonalnie obie drogi są równoważne – poniżej zostajemy przy wbudowanym OpenSSH, bo wymaga mniej kroków.

5.1 Wygeneruj klucz na własnym komputerze. Wykonaj to polecenie w terminalu na swoim komputerze (nie na serwerze) i potwierdź pytania Enterem:

ssh-keygen -t ed25519 -C "moj-serwer"

5.2 Skopiuj klucz publiczny na serwer (też z komputera):

ssh-copy-id nazwa-uzytkownika@SERVER-IP

W Windows bez ssh-copy-id użyj zamiast tego:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh nazwa-uzytkownika@SERVER-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

5.3 Test: Zaloguj się ponownie – teraz nie powinno już być pytania o hasło:

ssh nazwa-uzytkownika@SERVER-IP

5.4 Wyłącz logowanie hasłem i logowanie root. Edytuj na serwerze konfigurację SSH edytorem nano:

sudo nano /etc/ssh/sshd_config

Znajdź poniższe linie (lub dodaj je) i ustaw dokładnie tak:

PermitRootLogin no
PasswordAuthentication no

Zapisz Ctrl+O, Enter, zamknij Ctrl+X. Następnie przeładuj usługę SSH:

sudo systemctl restart ssh

Ważne: Nie zamykaj jeszcze bieżącego okna. Otwórz nowe i sprawdź, że logowanie jako nazwa-uzytkownika nadal działa – oraz że ssh root@SERVER-IP jest teraz odrzucane. Dopiero wtedy krok się powiódł. Tło w wiki Debiana o SSH.

Krok 6: Konfiguracja zapory (ufw)

Zapora blokuje wszystkie porty sieciowe poza tymi nielicznymi, które naprawdę są potrzebne. Używamy ufw („Uncomplicated Firewall") – prostej i przyjaznej początkującym.

Instalacja i ustawienie reguł podstawowych (blokuj cały ruch przychodzący, zezwalaj na wychodzący):

sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing

Zezwol na dostęp SSH przed aktywacją – inaczej zablokujesz sobie dostęp:

sudo ufw allow OpenSSH

Dla późniejszego serwera WWW (Froxlor w Części 2) otwieramy też porty WWW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Teraz włącz zaporę i sprawdź status:

sudo ufw enable
sudo ufw status verbose

Potwierdź pytanie przez y. Na liście statusu powinny pojawić się tylko SSH (22), 80 i 443 jako dozwolone. Szczegóły o ufw znajdziesz w Ubuntu Server Guide.

Krok 7: Ochrona przed atakami brute-force z Fail2ban

Atakujący automatycznie próbują tysięcy haseł. Fail2ban rozpoznaje zbyt wiele nieudanych prób i tymczasowo blokuje atakujący adres IP. Instalacja i aktywacja:

sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban

Tworzymy własną konfigurację, aby aktualizacje jej nie nadpisały:

sudo nano /etc/fail2ban/jail.local

Wklej poniższą treść (blokuje IP po 5 nieudanych próbach na 1 godzinę):

[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m

Zapisz (Ctrl+O, Enter, Ctrl+X) i uruchom usługę ponownie:

sudo systemctl restart fail2ban

Status możesz sprawdzić w każdej chwili:

sudo fail2ban-client status sshd

Krok 8: Automatyczne aktualizacje bezpieczeństwa

Luki bezpieczeństwa są odkrywane nieustannie. Aby serwer automatycznie instalował ważne poprawki, konfigurujemy unattended-upgrades:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

W pytaniu wybierz „Yes". To wszystko – od teraz serwer samodzielnie instaluje aktualizacje bezpieczeństwa. Więcej w wiki Debiana o UnattendedUpgrades.

Lista kontrolna: czy serwer jest bezpieczny?

Zanim pójdziesz dalej, przejrzyj krótko:

  • [ ] System jest aktualny (apt update && apt full-upgrade)
  • [ ] Nazwa hosta, strefa czasowa i locale ustawione
  • [ ] Własny użytkownik z uprawnieniami sudo działa
  • [ ] Logowanie kluczem SSH działa, logowanie hasłem wyłączone
  • [ ] ssh root@SERVER-IP jest odrzucane
  • [ ] Zapora (ufw) aktywna, otwarte tylko 22/80/443
  • [ ] Fail2ban działa
  • [ ] Automatyczne aktualizacje bezpieczeństwa aktywne

Najczęściej zadawane pytania (FAQ)

Zablokowałem sobie dostęp – co teraz? Niemal każdy dostawca oferuje w panelu klienta funkcję „VNC" lub „konsola", dzięki której zalogujesz się bezpośrednio bez SSH i cofniesz ustawienia.

Czy używać kluczy SSH, czy wystarczy hasło? Klucze są znacznie bezpieczniejsze i mocno zalecane. Jeśli koniecznie chcesz zostać przy haśle, zostaw PasswordAuthentication na yes – użyj jednak bardzo długiego hasła i koniecznie Fail2ban.

Czy działa to też na Ubuntu? Tak, niemal identycznie. Tylko w bardzo starych wersjach niektóre nazwy pakietów mogą się różnić.

Czy potrzebuję wiedzy o Linuksie? Nie. Jeśli kopiujesz polecenia i zastępujesz symbole zastępcze, dasz radę. Przy pierwszym razie przyda się trochę cierpliwości.

Co dalej?

Twój serwer jest teraz bezpieczny. W następnej części zainstalujemy Froxlor, darmowy panel zarządzania, którym łatwo przez interfejs zarządzasz domenami, stronami, certyfikatami SSL i bazami danych – zupełnie bez konsoli:

👉 Część 2: Instalacja i konfiguracja Froxlora

A w Części 3: Prawidłowa konfiguracja e-mail: SPF, DKIM i DMARC zadbamy o to, by Twoje e-maile były bezpiecznie dostarczane.

Przy okazji: jeśli wolisz zlecić tworzenie oprogramowania lub potrzebujesz indywidualnych rozwiązań serwerowych/webowych, chętnie pomoże Ci PepperTools.

Źródła

Stan: czerwiec 2026. Polecenia i nazwy pakietów mogą się zmieniać wraz z nowymi wersjami – wiążąca jest każdorazowo oficjalna dokumentacja.

Latwiejsze fakturowanie

Easy Invoice laczy oferty, faktury i zarzadzanie klientami w chmurze.

Wyprobuj Easy Invoice

Wersje jezykowe

EN Set up and secure a Debian vServer: a beginner's step-by-step guide (Part 1 of 3) FR Configurer et sécuriser un vServer Debian : guide pas à pas pour débutants (Partie 1 sur 3) ES Configurar y asegurar un vServer Debian: guía paso a paso para principiantes (Parte 1 de 3) IT Configurare e mettere in sicurezza un vServer Debian: guida passo passo per principianti (Parte 1 di 3) DE Debian-vServer einrichten und absichern: Schritt-für-Schritt für Einsteiger (Teil 1 von 3) TR Debian vServer kurulumu ve güvenli hale getirme: yeni başlayanlar için adım adım (3'ün 1. Bölümü) RU Настройка и защита vServer на Debian: пошагово для новичков (Часть 1 из 3) NL Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)