−25%

за Windows при годишно плащане, до 31.10. Към плановете

EQVPS

Как да създадете sudo потребител на VPS и да спрете да ползвате root

Създайте sudo потребител без root права на Ubuntu или Debian, дайте му своя SSH ключ, тествайте и едва тогава изключете входа за root — в ред, който не ви заключва отвън.

Почти всеки нов 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.

Какво следва

Опциите за достъп на всеки план са в документацията за достъп. Дори Nano за $3 заслужава потребител без root — това е най-евтиното подобрение на сигурността, което съществува.

Въпроси

Защо просто да не продължа с root?

Всичко, което пускате като root, може да счупи цялата система, включително правописна грешка. Ботовете пробват първо потребителското име 'root', така че изключването на входа за root маха най-често отгатваната цел. Потребител с име плюс sudo ви дава пауза преди всяка привилегирована команда и запис на изпълненото.

Ами ако се заключа отвън?

Използвайте уеб конзолата в клиентския панел. Тя работи дори когато SSH е счупен или защитната стена ви блокира, така че можете да влезете и да оправите sshd_config. Затова и тествате новия потребител, преди да затворите root сесията.

Да разреша ли sudo без парола?

За личен акаунт запазете въпроса за парола — това е последната линия на защита, ако SSH ключът ви изтече. Sudo без парола е разумно за отделен deploy потребител, ползван от автоматизация, ограничен до командите, които наистина му трябват.

Командата sudo липсва на моя Debian сървър. Защо?

Минималните Debian image-и не винаги я включват. Инсталирайте я като root с 'apt install -y sudo', след това добавете потребителя си в групата sudo.

Кой SSH порт да използвам?

Този, който е показан в клиентския панел. Плановете с dedicated IP ползват порт 22 на вашия IP; NAT плановете ползват личния ви SSH порт.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.