Основы защиты VPS от атак и сбоев в работе

Основы защиты VPS от атак и сбоев в работе

Арендованный сервер — это как дом без охраны. Безопасность начинается с малого: от замены стандартного порта до строгой настройки прав доступа. Даже один открытый путь в систему может стать уязвимостью.

Описанные методы защиты VPS от атак и сбоев не требуют глубоких знаний, но дают прочную основу. При грамотной настройке они работают как броня: не мешают функционалу, но защищают надёжно.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

popup12

Пароль — не единственная преграда

Обычный пароль легко подобрать. SSH-ключ — это связка из двух файлов: открытого и закрытого. Вход будет возможен только с компьютера, где есть закрытый ключ.

Откройте терминал и введите:

ssh-keygen -t rsa -b 4096

Нажмите Enter, чтобы сохранить в папке ~/.ssh/.

Введите фразу-пароль (для дополнительной защиты).

Передайте ключ.

Способ 1 — автоматически:

ssh-copy-id user@IP_сервера

Замените user и IP_сервера на имя пользователя и IP-адрес вашего сервера.

Способ 2 — вручную:

  • откройте документ ~/.ssh/id_rsa.pub;
  • сделайте копию содержания;
  • авторизуйтесь по паролю.

Выполните:

mkdir -p ~/.ssh

nano ~/.ssh/authorized_keys

Вставьте ключ и сохраните файл.

Запретите подключение по паролю к серверу.

Изменим файл sshd_config:

sudo nano /etc/ssh/sshd_config

Необходим строчка:

PasswordAuthentication yes

Замените на:

PasswordAuthentication no

Если строки нет — добавьте её вручную.

Перезапустите SSH:

sudo systemctl restart ssh

Закрытый ключ id_rsa не передавайте, не храните в облаке, не отправляйте по почте.

Несколько устройств — несколько ключей: сгенерируйте на каждом и скопируйте открытые части в authorized_keys на сервере.

Защитить подключение — скрыть дверь

22-й порт сканируют тысячи роботов в сутки. Чтобы закрыть сервер от автоматических атак, его нужно сменить.

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

sudo nano /etc/ssh/sshd_config

В нём находится строка #Port 22. Удаляется символ # и вместо 22 указывается, например, 2282:

Port 2282

Сохраняем правки, выходим из редактора и загружаем SSH повторно:

sudo systemctl restart sshd

Подключаясь, указывайте новый порт:

ssh -p 2282 user@IP

Теперь лимитируем количество ошибочных подключений. Там же, в etc/ssh/sshd_config добавляются строки:

MaxAuthTries 3
MaxSessions 2

Первая команда запрещает больше трёх попыток ввода пароля подряд, вторая ограничивает количество одновременных подключений. Ещё раз сохраняем и запускаем SSH.

Для усиления контроля рекомендуется включить двухфакторную аутентификацию. Устанавливается Google Authenticator:

sudo apt install libpam-google-authenticator

Затем запускается настройка:

google-authenticator

Появится QR-код — его нужно отсканировать в мобильном приложении Google Authenticator или аналогичном. С этого момента оно будет показывать одноразовые коды. Их придётся вводить при каждом входе.

Чтобы сервер их принимал, в директории /etc/pam.d/sshd добавляется:

auth required pam_google_authenticator.so

А в /etc/ssh/sshd_config нужно включить:

ChallengeResponseAuthentication yes

Перезапустите SSH:

sudo systemctl restart sshd

IP-фильтрация

Разрешим вход только с известных адресов. 

Ufw в Ubuntu контролирует доступ. Включаем его:

sudo ufw enable

Затем устанавливается разрешение. Как пример:

sudo ufw allow from 203.0.113.45 to any port 2282 proto tcp

Здесь 203.0.113.45 — это внешний IP-адрес подключения, а 2282 — порт SSH (если он был изменён ранее). Всё остальное блокируется.

Проверка:

sudo ufw status

Меняется IP? Разрешите подсеть, а не один адрес:

sudo ufw allow from 203.0.113.0/24 to any port 2282 proto tcp

Дополнительно установите Fail2Ban — он блокирует IP, с которых слишком часто пытаются войти с ошибкой.

Команда для установки:

sudo apt install fail2ban

Создаём собственный конфигурационный файл:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Редактируем раздел [sshd]:

[sshd]
enabled = true
port = 2282
maxretry = 3
bantime = 3600

Здесь:

  • maxretry — лимит ошибочных попыток, 
  • bantime — длительность блокирования IP-адреса в секундах.

Запускаем службу:

sudo systemctl restart fail2ban

Обновления — не мелочь, а защита

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

Самый простой способ — вручную проверять и устанавливать обновления. Для этого подключитесь к серверу по SSH и наберите:

sudo apt update

sudo apt upgrade

Первая строка обновляет доступные пакеты списком, вторая — устанавливает сами обновления. Повторяйте это хотя бы раз в неделю.

Можно автоматизировать процесс. Для этого установите специальную утилиту:

sudo apt install unattended-upgrades

Затем включите автоматические обновления:

sudo dpkg-reconfigure --priority=low unattended-upgrades

Откроется меню, в котором нужно подтвердить активацию автоматических обновлений. После этого система будет регулярно проверять наличие новых пакетов и устанавливать их без вашего участия.

Минимум лишнего — максимум безопасности

На сервере должен работать только тот софт, который действительно нужен. Каждый лишний пакет — это потенциальная брешь.

То же касается и служб: ненужных почтовых серверов или FTP. Всё, что открыто и работает — видно в интернете. 

Права доступа: не все равны

Работа под пользователем root — это как ездить без тормозов. Одна ошибка в команде и можно удалить систему, открыть доступ злоумышленнику или сломать важные настройки. Безопаснее обычный пользователь с ограниченными правами, а к root-доступу прибегать только при необходимости.

Подключитесь к серверу как root и создайте нового пользователя, например adminuser:

adduser adminuser

Укажите пароль и, при необходимости, заполните дополнительные поля (можно нажимать Enter).

Добавьте нового пользователя в группу sudo, чтобы выполнять административные действия при необходимости:

usermod -aG sudo adminuser

Теперь можно подключаться под adminuser и с использованием sudo перед командами, требующими прав администратора. К примеру:

sudo apt update

Проверьте, кто сейчас имеет права на файл:

 ls -l /etc/ssh/sshd_config

Вы увидите что-то вроде:

 -rw-r--r-- 1 root root 2682 Jul 20 10:15 /etc/ssh/sshd_config

Можно выполнить ручную настройку:

 chmod 600 /путь/к/файлу

 — подключение только под root.

Или открыть доступ только владельцу и группе:

chmod 640 /путь/к/файлу

Измените владельца (по необходимости):

chown root:root /путь/к/файлу

Брандмауэр ― первый рубеж

Пропускает только разрешённые подключения. В Linux брандмауэр настраивается через UFW (Uncomplicated Firewall). Это удобный способ.

Установим UFW. На Ubuntu и Debian:

sudo apt install ufw

На CentOS / RHEL (если не установлен firewalld, а UFW доступен):

sudo yum install ufw
sudo systemctl enable ufw
sudo systemctl start ufw

Обязательно откройте порт 22 (SSH) в установках брандмауэра:

sudo ufw allow ssh

или так:

sudo ufw allow 22/tcp

Разрешите соединения по HTTP и HTTPS.

Для обычного сайта:

sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS

Запретите всё остальное.

Теперь можно включить брандмауэр. Он заблокирует всё, что не разрешено явно:

sudo ufw enable

Проверим правильность работы:

sudo ufw status verbose

Вы увидите список разрешённых подключений, например:

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

Удалить разрешение при необходимости можно так:

sudo ufw delete allow 80/tcp

Заблокировать конкретный IP:

sudo ufw deny from 123.123.123.123

Когда появятся новые сервисы — просто добавляйте порты через ufw allow.

Резервные копии спасают, если всё сломалось

Даже самый защищённый ресурс может выйти из строя. Резервные копии (бекапы) — это страховка, которая позволяет быстро восстановить работу. Их нужно делать регулярно и хранить отдельно — не на том же VPS.

Даже если сервер работает без сбоев, важно следить за его состоянием. Для этого существуют программы мониторинга: они показывают загрузку, активность, сетевой трафик и другие параметры. Если что-то идёт не так — приходит уведомление.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях