Poradnik

Pierwsze 30 minut: lista kontrolna hartowania VPS

Świeży VPS dostaje pierwszy skan SSH w ciągu kilku minut od otrzymania IP. Oto dokładna sekwencja, którą uruchamiam na każdej nowej maszynie — gotowa do skopiowania dla Debiana 13, z tabelą kontrolną na końcu.

Założenia: świeży obraz Debian 13 z Twojego wdrożenia VPSRento, jesteś zalogowany jako root przez SSH, a przykładowy adres IP to 185.220.101.14 — podstaw swój. Całkowity czas: około pół godziny. Wykonuj kroki po kolei; krok 2 może Cię zablokować, jeśli się pospieszysz.

1. Utwórz użytkownika sudo

Praca jako root to sposób, w jaki literówki stają się incydentami. Utwórz prawdziwego użytkownika, daj mu sudo i rób wszystko z jego poziomu:

# create the user (you'll set a password — still useful for sudo)
adduser ops

# grant sudo
usermod -aG sudo ops

Wszystko poniżej tego punktu działa jako ops , chyba że zaznaczono inaczej.

2. Tylko klucze SSH — bez haseł, bez logowania root

Uwierzytelnianie hasłem to największa dziura w maszynie wystawionej na internet. Boty bombardują port 22 listami poświadczeń cały dzień, każdego dnia. Klucze eliminują całą tę klasę ataków. Na Twojej lokalnej maszynie:

# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"

# push the public key to the server
ssh-copy-id [email protected]

Zweryfikuj, że możesz zalogować się kluczem w nowym terminal — ssh [email protected] — przed dotknięciem konfiguracji. Trzymaj istniejącą sesję root otwartą jako awaryjne wyjście. Następnie edytuj /etc/ssh/sshd_config:

# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh

prohibit-password zamiast płaskiego no dla roota celowo: root nadal może uwierzytelnić się kluczem z Twojej stacji roboczej, co bywa przydatne przy odzyskiwaniu przez konsolę dostawcy — ale żadne hasło nigdy nie zadziała, dla nikogo, skądkolwiek. Potwierdź za pomocą sshd -T | grep -E 'passwordauthentication|permitrootlogin'.

3. Zapora: domyślnie odmawiaj, zezwalaj tylko na to, co uruchamiasz

ufw w Debianie to cienka, sensowna warstwa nad nftables. Polityka to bezpieczeństwo; reguły to tylko wyjątki od niej:

apt update && apt install -y ufw

ufw default deny incoming
ufw default allow outgoing

# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'

# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'

ufw enable
ufw status verbose

Każdy otwarty port powinien mieć nazwę i powód. Jeśli nie potrafisz nazwać, do czego służy port, nie dostaje reguły.

4. fail2ban: spowolnij boty do pełzania

Przy wyłączonym uwierzytelnianiu hasłem brute force już nie działa — ale fail2ban utrzymuje czytelne logi i banuje skanery, które szturchają wszystko inne:

apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h
systemctl enable --now fail2ban

# watch it work
fail2ban-client status sshd

5. Automatyczne aktualizacje bezpieczeństwa

Niezałatana luka CVE to większe ryzyko niż restart. unattended-upgrades w Debianie instaluje aktualizacje bezpieczeństwa samodzielnie:

apt install -y unattended-upgrades

# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades

Domyślna konfiguracja w /etc/apt/apt.conf.d/50unattended-upgrades pobiera tylko z repozytorium security — czyli dokładnie to, czego chcesz na serwerze: poprawki bezpieczeństwa automatycznie, wszystko inne, kiedy wybierzesz.

6. Wyłącz to, czego nie uruchamiasz

Każda działająca usługa to powierzchnia ataku, którą musisz łatać. Zobacz, co faktycznie nasłuchuje:

# who is listening, on what, as which process
ss -tulpn

# everything enabled at boot
systemctl list-unit-files --state=enabled

# example: you don't run a print server — nobody does
systemctl disable --now cups

Zasada: jeśli nie potrafisz powiedzieć, co robi nasłuch, dowiedz się, zanim pozwolisz mu żyć. Na minimalnym obrazie VPSRento powinno być bardzo niewiele poza sshd i Twoją własną aplikacją.

7. Opcjonalnie, ale zalecane: płaszczyzna zarządzania WireGuard

Najmocniejsza wersja bezpieczeństwa SSH to SSH, które w ogóle nie wystawia się na internet. Uruchom WireGuard na maszynie, zezwól na SSH tylko w tunelu, a port 22 zniknie z każdego skanera na ziemi:

apt install -y wireguard

# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820

# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp

systemctl enable --now wg-quick@wg0

Po tym ssh [email protected] przez tunel, a publiczny adres IP odpowiada na dokładnie jednym porcie UDP. Pełny przewodnik po WireGuard — klucze, peerzy, konfiguracje klientów, kody QR na telefon — znajduje się w przewodniku towarzyszącym.

Lista kontrolna 10 punktów

Przejdź przez tę tabelę po każdym nowym wdrożeniu i ponownie po każdej dodanej usłudze:

#ElementGdzie się znajdujeZweryfikuj przez
1Użytkownik sudo bez roota/etc/passwdid ops
2Uwierzytelnianie SSH tylko kluczemsshd_configsshd -T | grep passwordauth
3Logowanie roota hasłem wyłączonesshd_configsshd -T | grep permitrootlogin
4Zapora sieciowa domyślnie odrzuca przychodząceufwufw status verbose
5Tylko nazwane porty otwarteufwufw status numbered
6fail2ban sshd jail aktywnyjail.localfail2ban-client status sshd
7Automatyczne aktualizacje bezpieczeństwaaptsystemctl status unattended-upgrades
8Brak niewyjaśnionych nasłuchówss -tulpn
9Zarządzanie przez WireGuard (opcjonalnie)wg0.confwg show
10Snapshot po utwardzeniuDodatek w panelu klienta, $1.99/mies.Usługi → Twój VPS → snapshoty

Punkt 10 zasługuje na jedno zdanie: najpierw utwardź, potem snapshot, w tej kolejności — snapshot czystej, utwardzonej maszyny to Twój rollback na każdy przyszły błąd. Codzienne offsite snapshoty to dodatek za $1.99/mies. w panelu klienta. Trzydzieści minut prewencji, jeden klik ubezpieczenia.

Wdróż czystą maszynę i utwardź ją sam.

Obraz Debian 13, pełny root w 55 sekund, czysty adres IP sprawdzony na ponad 40 listach blokujących. Od $5.99/mies..

Polski