Почти всеки нов VPS започва еднакво: влизате като root, инсталирате няколко неща и месец по-късно още сте root. Работи, докато някой поставен скрипт не изтрие грешната директория. Настройката на обикновен потребител със sudo отнема пет минути, а редът е по-важен от командите — объркате ли го, заключвате се отвън.
Ето безопасната последователност за Ubuntu 22.04/24.04 и Debian 12.
1. Създайте потребителя
Като root:
adduser deploy
usermod -aG sudo deploy
adduser пита за парола и няколко незадължителни данни (просто натискайте Enter). Изберете истинска парола: ще я въвеждате за sudo. На минимален Debian image първо изпълнете apt install -y sudo, ако командата липсва.
2. Дайте му своя SSH ключ
Най-лесно е да копирате разрешените ключове на root, като запазите правилния собственик:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
Ако предпочитате ръчно:
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
Грешните права са класическата причина входът с ключ да не работи без никаква грешка. SSH игнорира authorized_keys, в който други потребители могат да пишат.
3. Тествайте, преди да промените каквото и да е
Оставете root сесията отворена. В нов терминал:
ssh -p 22 deploy@203.0.113.10
sudo whoami
Използвайте своя IP и порт — при NAT план това е личният SSH порт от панела. Ако sudo whoami изведе root, всичко е наред. Ако входът не успее, още имате прозореца с root, за да оправите нещата.
4. Изключете входа за root
Сега затворете вратата. Създайте малък drop-in файл, вместо да редактирате основната конфигурация:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
sshd -t първо проверява синтаксиса. Счупена конфигурация плюс reload е начинът, по който хората стигат до конзолата. PasswordAuthentication no има смисъл само когато входът с ключ работи за новия потребител — което току-що проверихте.
Отворете още един терминал и потвърдете, че root е отказан, а deploy още влиза. След това затворете старата root сесия.
5. По желание: sudo без парола за автоматизация
Ако deploy скрипт има нужда от sudo без въпрос, дайте му точно това и нищо повече:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
Честно казано, NOPASSWD: ALL е изкушаващо, но това означава, че откраднат ключ е равен на root. Ограничете го до командите, които автоматизацията изпълнява.
Ако нещо се обърка
Уеб конзолата в панела не зависи нито от SSH, нито от защитната стена. Влезте оттам, оправете файла в /etc/ssh/sshd_config.d/, направете reload и готово. Целия процес по възстановяване описахме в как да влезете отново в заключен VPS.
Какво следва
- Преминете истински към вход само с ключ: удостоверяване със SSH ключ.
- Намалете шума от brute force опити: fail2ban.
- Минете през останалите основи с чеклиста за сигурност на нов VPS.
Опциите за достъп на всеки план са в документацията за достъп. Дори Nano за $3 заслужава потребител без root — това е най-евтиното подобрение на сигурността, което съществува.
Коментари
Още няма коментари. Бъди първият.