nikkeyl
  • Telegram

Безопасность VPS, настройка Nginx, UFW, пользователей и вход по SSH

Безопасность VPS, настройка Nginx, UFW, пользователей и вход по SSH

29

3 мин.

Предварительные требования

Для работы нам понадобятся nginx и docker. Если они еще не установлены, выполните следующие команды:

sudo apt update && sudo apt install nginx docker.io -y

Либо проверить установлены ли они:

docker --version && nginx -v

Первичная настройка пользователя

Никогда не работайте под пользователем root. Создадим нового пользователя и дадим ему права администратора.

  • Добавление пользователя:

    adduser user  # Замените 'user' на ваше имя

    Вывод будет выглядеть так: Adding user 'user' ... Enter new UNIX password: (вводите пароль, символы не отображаются).

  • Выдача прав и проверка:

    usermod -aG sudo user
    groups user

    Ожидаемый вывод: user : user sudo.

Настройка входа по SSH-ключам

Это самый надежный способ защиты от брутфорса.

  1. Если у вас уже есть SSH-ключ на компьютере, просто отправьте его на сервер:

    ssh-copy-id user@ip_сервера
  2. Если ключа нет, создайте его:

    ssh-keygen -t ed25519 -C "user@vps"
    # Затем отправьте его командой ssh-copy-id, указанной выше    

Отключение входа по паролю и Root-доступа

Теперь закроем возможность входа любым другим способом, кроме вашего ключа.

  1. Откройте конфиг: sudo nano /etc/ssh/sshd_config

  2. Найдите и измените (или добавьте) строки:

    • PermitRootLogin no - запрещает вход в систему напрямую под пользователем root через SSH;
    • PasswordAuthentication no - Отключает возможность входа на сервер с использованием обычного пароля;
    • ChallengeResponseAuthentication no - Отключает аутентификацию по принципу "вызов-ответ";
    • UsePAM no - Отключает использование модуля PAM (Pluggable Authentication Modules) для SSH.
  3. Перезапустите службу: sudo systemctl restart ssh

Теперь при попытке войти под root вы увидите: root@ip: Permission denied (publickey).

Настройка Фаервола (UFW)

Фаервол блокирует все порты, кроме тех, что мы разрешим.

ПортПротоколНазначениеПочему это важно?
22TCPSSHОбязателен! Без него вы потеряете связь с сервером.
80TCPHTTPСтандартный порт для Nginx.
443TCPHTTPSЗащищенный порт для SSL-трафика.

Для большей безопасности смените порт для SSH на другой, и также добавьте его в конфиг UFW!

Настройка UFW:

sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status

Вывод команды status должен быть таким:

Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere

Уязвимость React2Shell в Next.js

React2Shell — критическая уязвимость, позволяющая хакерам исполнять свой код на вашем сервере через формы React. Под угрозой 69% всех облачных инстансов на Next.js.

Как проверить взлом?

Посмотрите список процессов и файлов. Подозрительные признаки:

  • Файлы в системе: ssh.sh, sex.sh, kai.tar.gz, httd.
  • Процесс xmrig (майнер, загружает CPU на 100%).
    • Проверить можно командой top или htop.

Способы защиты

  1. Обновление Next.js: Срочно обновитесь до безопасных версий: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7.

  2. Node.js 24: Используйте новую модель разрешений Node для ограничения доступа к файлам.

  3. Безопасный Docker:

    • Запускайте контейнеры с флагом --read-only.
    • Убирайте запуск от root в Dockerfile, используйте USER node.
    • Настраивайте доступ контейнера только к внутренним ресурсам (Whitelist).
  4. Если вас взломали: Удалите зараженные поды/контейнеры, очистите кэши и обязательно смените все секретные ключи и пароли.

Похожие категории:

Похожие статьи

  • Как использовать Vite при включённом VPN, быстрое решение

    Решае проблемы с работой Vite при включённом VPN, настройка соединения, для избежания перенаправления локального трафика в VPN-туннель

    29

    2 мин.

Свяжитесь со мной

Тип проекта*