Prawie każdy nowy VPS zaczyna się tak samo: logujesz się jako root, instalujesz kilka rzeczy i miesiąc później wciąż jesteś rootem. Działa, dopóki wklejony skrypt nie skasuje złego katalogu. Konfiguracja zwykłego użytkownika z sudo zajmuje pięć minut, a kolejność jest ważniejsza niż same polecenia — pomylisz ją i zablokujesz się na zewnątrz.
Oto bezpieczna kolejność dla Ubuntu 22.04/24.04 i Debiana 12.
1. Utwórz użytkownika
Jako root:
adduser deploy
usermod -aG sudo deploy
adduser pyta o hasło i kilka opcjonalnych danych (wystarczy wciskać Enter). Wybierz prawdziwe hasło: będziesz je wpisywać przy sudo. Na minimalnym obrazie Debiana najpierw uruchom apt install -y sudo, jeśli polecenia brakuje.
2. Daj mu swój klucz SSH
Najprościej skopiować autoryzowane klucze roota, zachowując właściwego właściciela:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
Jeśli wolisz ręcznie:
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
Złe uprawnienia to klasyczny powód, dla którego logowanie kluczem po cichu nie działa. SSH ignoruje authorized_keys, do którego mogą pisać inni użytkownicy.
3. Przetestuj, zanim cokolwiek zmienisz
Nie zamykaj sesji roota. W nowym terminalu:
ssh -p 22 deploy@203.0.113.10
sudo whoami
Użyj swojego IP i portu — w planie NAT to osobisty port SSH z panelu. Jeśli sudo whoami wypisze root, wszystko gra. Jeśli logowanie się nie uda, wciąż masz okno roota, żeby to naprawić.
4. Wyłącz logowanie roota
Teraz zamknij drzwi. Zamiast edytować główną konfigurację, utwórz mały plik drop-in:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
sshd -t najpierw sprawdza składnię. Zepsuta konfiguracja plus reload to sposób, w jaki ludzie lądują w konsoli. PasswordAuthentication no ma sens dopiero wtedy, gdy logowanie kluczem działa dla nowego użytkownika — co właśnie sprawdziłeś.
Otwórz jeszcze jeden terminal i potwierdź, że root jest odrzucany, a deploy wciąż wchodzi. Potem zamknij starą sesję roota.
5. Opcjonalnie: sudo bez hasła dla automatyzacji
Jeśli skrypt wdrożeniowy potrzebuje sudo bez pytania o hasło, daj mu dokładnie to i nic szerszego:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
Szczerze: NOPASSWD: ALL kusi, ale oznacza, że skradziony klucz równa się root. Ogranicz to do poleceń, które wykonuje automatyzacja.
Jeśli coś pójdzie nie tak
Konsola webowa w panelu nie zależy od SSH ani od firewalla. Zaloguj się przez nią, popraw plik w /etc/ssh/sshd_config.d/, przeładuj i gotowe. Cały proces odzyskiwania opisaliśmy w tekście jak wrócić do zablokowanego VPS.
Co dalej
- Przejdź porządnie na logowanie wyłącznie kluczem: uwierzytelnianie kluczem SSH.
- Przytnij hałas ataków brute force: fail2ban.
- Przejdź resztę podstaw z listą kontrolną bezpieczeństwa nowego VPS.
Opcje dostępu dla każdego planu są w dokumentacji dostępu. Nawet Nano za $3 zasługuje na użytkownika bez roota — to najtańsze ulepszenie bezpieczeństwa, jakie istnieje.
Komentarze
Brak komentarzy. Bądź pierwszy.