Создание основного рабочего пользователя с правами sudo
Создание основного рабочего пользователя с правами sudo: Защита вашего сервера от взлома
Вы только что арендовали VPS (виртуальный сервер) или выделили dedicated-сервер под свои проекты. Первое, что нужно сделать — избавиться от работы под пользователем root. Почему?
Аналогия:
Представьте, что root — это ключ от всех дверей в вашем доме, включая сейф, гараж и подвал. Если злоумышленник его украдёт, он получит полный контроль. А теперь представьте, что у вас есть отдельный ключ для каждой комнаты (пользователь с ограниченными правами) и запасной ключ от всех дверей (sudo), который вы достаёте только когда действительно нужно. Так безопаснее, правда?
В этом уроке вы научитесь:
✅ Создавать основного пользователя для повседневной работы.
✅ Наделять его правами sudo (возможностью временно становиться root).
✅ Защищать сервер от случайных ошибок и атак через уязвимости в ПО.
✅ Отключать вход по паролю для root (чтобы боты не подбирали пароль).
1. Почему работа под root опасна?
| Проблема | Последствия | Решение |
|---|---|---|
| Ошибка в команде | Удалите не ту папку (rm -rf /) — сервер умрёт. |
Ограниченные права пользователя. |
| Уязвимость в софте | Если хакер взломает ваш браузер/скрипт, он получит полный доступ к серверу. | sudo только по необходимости. |
| Брутфорс-атаки | Боты сканируют IP и подбирают пароль к root. |
Отключить вход по паролю для root. |
Важно! Даже если вы единственный пользователь сервера, работа под
root— это как ездить без ремня безопасности: "аварии не будет" — пока не случится.
2. Подготовка: Подключение к серверу
Перед тем как создавать пользователя, убедитесь, что вы:
✔ Подключены к серверу по SSH (например, через Terminal на Mac/Linux или PuTTY на Windows).
✔ Вошли под root (это временно, скоро мы это исправим).
Команда для подключения:
ssh root@ваш_сервер_ip
(Замените ваш_сервер_ip на реальный IP-адрес.)
3. Создание нового пользователя
Мы будем создавать пользователя с именем deploy (вы можете выбрать любое другое, например, admin или ваше имя).
Шаг 1: Создание пользователя
adduser deploy
Система спросит:
- Пароль (придумайте сложный, минимум 12 символов, с цифрами и знаками).
- Дополнительную информацию (можно пропустить, нажимая Enter).
Почему
adduser, а неuseradd?adduser— интерактивная и более дружелюбная команда (создаёт домашнюю папку, задаёт пароль).useradd— низкоуровневая, требует ручной настройки.
Шаг 2: Проверка создания пользователя
Убедитесь, что пользователь появился в системе:
id deploy
Ожидаемый вывод:
uid=1001(deploy) gid=1001(deploy) groups=1001(deploy)
(Цифры могут отличаться.)
4. Наделение пользователя правами sudo
Теперь нужно дать пользователю возможность выполнять команды от имени root, но только когда это действительно необходимо.
Шаг 1: Добавление в группу sudo
usermod -aG sudo deploy
-aG— добавляет пользователя в дополнительную группу (sudo).- Если группы
sudoнет (редко, но бывает на некоторых дистрибутивах), используйтеwheel:usermod -aG wheel deploy
Шаг 2: Проверка прав sudo
Переключитесь на нового пользователя:
su - deploy
И попробуйте выполнить команду с sudo (например, обновить пакеты):
sudo apt update
(Для CentOS/RHEL используйте sudo yum update.)
Если всё работает, система спросит пароль пользователя deploy и выполнит команду.
Важно!
- Пароль спрашивается один раз за сессию (по умолчанию 15 минут).
- Если вы видите ошибку
deploy is not in the sudoers file, значит пользователь не в группеsudo. Повторите шаг 1.
5. Настройка SSH для безопасного входа
Теперь нужно отключить вход по паролю для root и разрешить вход только по SSH-ключу (это защитит от брутфорс-атак).
Шаг 1: Генерация SSH-ключей (на вашем локальном компьютере)
Если у вас ещё нет SSH-ключа, сгенерируйте его:
ssh-keygen -t ed25519 -C "ваш_email@example.com"
(Или ssh-keygen -t rsa -b 4096 для старой системы.)
Почему
ed25519? Это самый современный и безопасный алгоритм (быстрее и надёжнееRSA).
Следуйте инструкциям (можно оставить пустым пароль для ключа, но это менее безопасно).
Шаг 2: Копирование ключа на сервер
Скопируйте публичный ключ (~/.ssh/id_ed25519.pub) на сервер:
ssh-copy-id deploy@ваш_сервер_ip
(Если ssh-copy-id нет, используйте cat ~/.ssh/id_ed25519.pub | ssh deploy@ваш_сервер_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys".)
Шаг 3: Отключение входа по паролю для root
Откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Найдите и измените следующие строки:
PermitRootLogin no # Запрещаем вход под root
PasswordAuthentication no # Запрещаем вход по паролю (только по ключу)
Сохраните (Ctrl+O, затем Enter) и закройте (Ctrl+X).
Шаг 4: Перезапуск SSH-сервиса
sudo systemctl restart sshd
ВАЖНО! Перед выходом из
rootпроверьте, что можете войти под новым пользователем:ssh deploy@ваш_сервер_ipЕсли вход прошёл — можно закрыть сессию
rootи больше не использовать её.
6. Дополнительные меры безопасности (по желанию)
| Действие | Команда/настройка | Зачем нужно? |
|---|---|---|
| Смена порта SSH | В /etc/ssh/sshd_config измените Port 22 на другой (например, 2222). |
Уменьшает количество автоматических атак. |
| Ограничение доступа по IP | AllowUsers deploy@ваш_ip в sshd_config. |
Разрешает вход только с вашего IP. |
Установка fail2ban |
sudo apt install fail2ban |
Блокирует IP после нескольких неудачных попыток входа. |
7. Типичные ошибки и их решение
| Проблема | Причина | Решение |
|---|---|---|
sudo: no tty present |
Скрипт пытается использовать sudo без терминала. |
Добавьте Defaults:deploy !requiretty в /etc/sudoers. |
Permission denied (publickey) |
SSH-ключ не скопировался или права неверные. | Проверьте ~/.ssh/authorized_keys и права (chmod 600 ~/.ssh/authorized_keys). |
adduser: command not found |
На минимальных образах может не быть adduser. |
Используйте useradd -m deploy + passwd deploy. |
Практика для закрепления
Упражнение 1: Создание пользователя
- Создайте пользователя
testuserс паролемSecurePass123!. - Добавьте его в группу
sudo. - Проверьте, может ли он выполнить
sudo apt update.
Упражнение 2: Настройка SSH
- Сгенерируйте новый SSH-ключ
ed25519на локальном компьютере. - Скопируйте его на сервер для пользователя
testuser. - Отключите вход по паролю в
/etc/ssh/sshd_configи перезапустите SSH.
Упражнение 3: Диагностика проблем
Представьте, что после настройки sudo пользователь testuser видит ошибку:
testuser is not in the sudoers file. This incident will be reported.
Вопрос: Какие 3 возможные причины этой ошибки и как их исправить?
Упражнение 4: Безопасность
- Поменяйте порт SSH с
22на2222. - Настройте
fail2banдля защиты от брутфорса. - Проверьте логи аутентификации (
/var/log/auth.log), чтобы увидеть попытки входа.
Упражнение 5: Автоматизация (для продвинутых)
Напишите bash-скрипт, который:
- Создаёт пользователя с именем из переменной (
USERNAME). - Добавляет его в
sudo. - Копирует ваш локальный SSH-ключ в
authorized_keys. - Отключает вход по паролю для
root.
Подсказка: Используйте
expectилиsshpassдля автоматизации ввода пароля (но в продакшене лучше избегать этого).
Заключение: Что дальше?
Теперь ваш сервер защищён от основных угроз, связанных с работой под root. Следующие шаги:
🔹 Настройка фаервола (ufw или iptables).
🔹 Установка необходимого ПО (Nginx, Docker, Node.js и т.д.) под обычным пользователем.
🔹 Резервное копирование (настройка rsync или borgbackup).
Помните: Безопасность — это процесс, а не одноразовая настройка. Регулярно обновляйте систему (
sudo apt update && sudo apt upgrade) и следите за логами (journalctl -xe).
Если остались вопросы — задавайте их в комментариях! 🚀
Генератор паролей с длинной 64 символа
Женская одежда с бахромой
Кадастровые работы в Бийске
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать планировку сайта для блогов на DreamHost
Как выбрать Vdsina вечный хостинг для своего проекта
Казань окна VEKA - профессионализм и опыт
Курьерская вода
Новостройки Оренбурга: недвижимость с отличной ценой
Онлайн чат-партнерство
Пиломатериалы для возведения бани
Почему VDSina — лучший выбор хостинга
Секреты Вконтакте: тонкости и хитрости
Скидки до 50% на тур в Коста-Рике
Видеочат рулетка бесплатно