TürkiyeVPS

Безопасность Linux-сервера: 10 шагов для нового VPS

С момента, когда сервер появляется в интернете, его начинают сканировать автоматические боты. По порядку рассказываем о 10 базовых шагах, которые нужно сделать в первый же день, чтобы защитить новый Linux VPS.

3 мин чтения

Как только вы запускаете новый VPS, IP-адрес сервера становится виден всему интернету. Уже через несколько минут автоматические боты со всего мира начинают пробовать войти по SSH в поисках слабых паролей. Ничего личного: боты сканируют все IP подряд. Хорошая новость в том, что несколько простых шагов сводят на нет практически все такие атаки.

Приведённые ниже команды рассчитаны на Ubuntu и Debian. Предполагается, что вы выполняете их от имени root.

1. Обновите систему

Большинство уязвимостей закрываются обновлениями.

apt update && apt upgrade -y

2. Задайте надёжный пароль

Используйте пароль длиной не менее 16 символов, с буквами, цифрами и специальными символами. Менеджер паролей сильно упростит задачу.

passwd

3. Создайте отдельного пользователя для повседневной работы

Вместо того чтобы делать всё под root, заведите пользователя с правами администратора:

adduser ivan
usermod -aG sudo ivan

4. Перейдите на вход по SSH-ключу

Пароль можно подобрать, а SSH-ключ на практике подобрать невозможно. Как создать ключ, мы пошагово объяснили в нашем руководстве по SSH.

5. Запретите вход по SSH с паролем и под root

Только убедившись, что вход по ключу работает, задайте в файле /etc/ssh/sshd_config следующие строки:

PermitRootLogin no
PasswordAuthentication no

Затем перезапустите сервис:

systemctl restart ssh

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

6. Включите файрвол (UFW)

Разрешите только те порты, которые вам действительно нужны:

apt install ufw -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Посмотреть правила можно командой ufw status.

7. Защититесь от перебора паролей с помощью Fail2ban

Fail2ban автоматически блокирует на время IP-адреса, с которых раз за разом приходят неудачные попытки входа:

apt install fail2ban -y
systemctl enable --now fail2ban

8. Включите автоматические обновления безопасности

apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades

9. Отключите ненужные сервисы

Каждый неиспользуемый сервис — это лишняя дверь для злоумышленников. Чтобы увидеть открытые наружу порты, выполните:

ss -tulpn

Ненужный сервис отключите командой systemctl disable --now ИМЯ_СЕРВИСА. Базу данных (MySQL, PostgreSQL, Redis) по возможности настройте так, чтобы она принимала подключения только на 127.0.0.1.

10. Регулярно делайте резервные копии

Ни одна мера безопасности не даёт стопроцентной защиты. Ваша главная страховка — резервные копии. Регулярно копируйте важные файлы и базу данных в место за пределами сервера и хотя бы раз попробуйте восстановиться из резервной копии.

Бонус: для вашего сайта

  • Обязательно публикуйте сайт по HTTPS.
  • Вовремя обновляйте WordPress и другие CMS, а также их плагины.
  • Удаляйте неиспользуемые плагины и темы.

Часто задаваемые вопросы

Как понять, что мой сервер атакуют?

Неудачные попытки входа можно увидеть в файле /var/log/auth.log. Подозрительными признаками также являются неожиданно высокая нагрузка на CPU, незнакомые процессы или новые пользователи.

Не заблокирую ли я сам себя, включив файрвол?

Если добавить правило ufw allow OpenSSH до команды ufw enable, SSH-соединение не прервётся. Если же что-то пойдёт не так, вы всегда сможете попасть на сервер через консоль в личном кабинете.

Нужно ли устанавливать антивирус?

На Linux-серверах главная угроза — не столько вирусы, сколько слабые пароли, необновлённое ПО и оставленные открытыми сервисы. Описанные выше шаги гораздо эффективнее.

Нужны ли эти шаги на виртуальном хостинге?

Нет. На виртуальном хостинге за безопасность сервера отвечает провайдер. Ваша задача — использовать надёжные пароли и вовремя обновлять программное обеспечение сайта.