Защита VPS на Linux с помощью Fail2Ban и iptables

Защита VPS на Linux с помощью Fail2Ban и iptables

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

Любой VPS, как только он становится доступен в Интернете, практически сразу оказывается в поле зрения автоматизированных сканеров и ботов. Их задача — находить уязвимости в конфигурации сервера: открытые порты, слабые пароли, незакрытые уязвимости в ПО. Такие боты массово «простреливают» IP-диапазоны в поиске слабозащищённых машин. Если боту удаётся найти брешь, он отправляет данные на управляющий сервер злоумышленников — именно они позже используют эти данные для целенаправленных атак. Это могут быть попытки брутфорса, загрузка вредоносного кода, организация прокси-сетей и даже вымогательство.

Чтобы успешно защитить VPS от подобных сценариев, не обязательно быть экспертом в кибербезопасности. Достаточно освоить базовые принципы настройки Linux и использовать проверенные инструменты. iptables — встроенный в Linux межсетевой экран. Он позволяет управлять доступом по портам, ограничивать соединения с одного IP и создавать фильтры для защиты сервера.

Fail2Ban логотип

В связке с iptables отлично работает Fail2Ban — утилита, которая в реальном времени отслеживает логи системы и блокирует IP-адреса, с которых зафиксированы подозрительные действия. Например, при пяти неудачных попытках входа по SSH, IP-адрес автоматически блокируется на заданное время. Fail2Ban использует фильтры, основанные на регулярных выражениях и написанные в конфигурационных файлах.

Оба инструмента — iptables и Fail2Ban — входят в число обязательных средств защиты для любого VPS, особенно если он размещён в открытой сети и на нём работают публичные сервисы. При грамотной настройке они помогут отбить большую часть массовых атак, снизить нагрузку на сервер и упростить администрирование. Даже если вы только начинаете работать с Linux-серверами, освоение этих инструментов — важный шаг к надёжной и безопасной инфраструктуре.

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

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Перенос порта SSH сервера

Для начала стоит изменить обычный SSH на более безопасный. Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Нужно заменить стандартный порт на более сложный и многозначный, причем значение этого порта нужно выбрать из диапазона от 49152 до 65535. Это необходимо, чтобы избежать конфликтов с другими программами:

Перенос порта SSH сервера
Перенос порта SSH сервера

Сохраните изменения и перезапустите SSH:

sudo service ssh restart

После смены порта для подключения по SSH необходимо указывать его вручную:

ssh user@host -p 49681

Блокировка всех портов, за исключением HTTP, HTTPS, SSH

Для большей безопасности сервера, на котором располагаются важные сайты, будет достаточно этих трех портов. Для иных сервисов, связанных с сетью, рекомендуется иметь отдельный сервер. Причем и настройки безопасности для таких отдельных серверов будут соответствующими. Поскольку клиенты обычных сайтов, а точнее их браузеры, обычно используют всего два порта – HTTP и HTTPS, то для серверов, хостящих обычные сайты и не выполняющих другие функции, является полезным отключить любые другие порты, кроме этих двух. Кроме этого, стоит оставить и порт, который использует для подключения администратор ресурса – SSH. Для этого нужно иметь следующий файл настроек для iptables:

sudo touch /etc/iptables.firewall-rules

Внутри которого должен содержаться следующий весьма объемный код:

Блокировка портов
Блокировка портов

Для того, чтобы после каждого перезапуска системы она самостоятельно применяла данные настройки, необходимо создать определенный скрипт. Создайте файл и сделайте его исполняемым:

Блокировка портов-2
Блокировка портов, ещё один шаг

Внутри нужно прописать:

Блокировка портов-3
Блокировка портов, следующий шаг

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

sudo iptables -L

Динамическая защита с использованием FAIL2BAN

Для установки данной утилиты, поскольку она не входит в систему по умолчанию, нужно выполнить следующее действие:

sudo apt install fail2ban

Fail2Ban отсутствует в базовой установке большинства дистрибутивов Linux.

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

cd /etc/fail2ban/ && cp jail.conf jail.local

Хоть данный инструмент по умолчанию и оснащен некоторыми фильтрами для веб-сервера Apache, лучше будет создать собственные самостоятельно. Первый будет использоваться для лога access, а другой для error. Полезно выполнить настройку виртуальных хостов так, чтобы данные логи распространялись сразу на все сайты сервера. Это сделает защиту VPS более надежной, а ее настройку более простой и понятной, ведь осуществляется она всего двумя фильтрами сразу для всех ресурсов. Для этого нужно создать новые файлы:

Динамическая защита с использованием FAIL2BAN
Динамическая защита с использованием Fail2Ban

Для лога access содержимое соответствующего файла должно иметь вид:

Динамическая защита с использованием FAIL2BAN-2
Динамическая защита с использованием Fail2Ban

Этот файл будет постепенно дополняться строчками в разделе failregex. Это связано с тем, что вы так или иначе будете находить опасную деятельность ботов или хакеров. В примере блокируются запросы с определёнными словами или символами (обособлены звездочками, например *\\\*). Для лога error фильтр мало чем отличается структурно:

Динамическая защита с использованием FAIL2BAN-3
Динамическая защита с использованием Fail2Ban

В файле настроек jail.local следует подключить новые созданные фильтры, указав пути к созданным недавно файлам:

Динамическая защита с использованием FAIL2BAN-4
Динамическая защита с использованием Fail2Ban

После перезапуска Fail2Ban защита активируется:

sudo systemctl restart fail2ban

Всю информацию по фильтрам и заблокированным адресам можно посмотреть с помощью команды:

sudo iptables -L

Динамическая защита с использованием Fail2Ban

Fail2Ban анализирует логи и блокирует IP-адреса, с которых исходят частые попытки подбора пароля и другие подозрительные действия. Наиболее часто он используется для защиты от брутфорс-атак на SSH, почтовые сервисы, панель администратора и другие точки входа.

Установка Fail2Ban

Fail2Ban отсутствует в базовой установке большинства Linux-дистрибутивов, но его можно установить одной командой:

sudo apt install fail2ban

После установки создайте копию конфигурационного файла:

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

Изменения вносятся в файл jail.local, потому что jail.conf может быть перезаписан при обновлении.

Настройка защиты от брутфорса по SSH

Откройте файл jail.local:

sudo nano /etc/fail2ban/jail.local

Найдите или добавьте следующий блок:

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Здесь:

  • enabled = true — активирует фильтр;
  • port — номер порта SSH (укажите свой, если нестандартный);
  • maxretry = 5 — количество неудачных попыток входа до блокировки;
  • bantime = 3600 — время блокировки IP в секундах (здесь — 1 час);
  • findtime = 600 — интервал (в секундах), за который считаются попытки.

Применение настроек и запуск

После редактирования перезапустите Fail2Ban:

sudo service fail2ban restart

Проверьте статус:

sudo fail2ban-client status

Для SSH:

sudo fail2ban-client status sshd

Вы увидите список заблокированных IP и количество срабатываний фильтра.

Защита других сервисов

Также Fail2Ban можно использовать для защиты веб-интерфейсов (например, nginx-noscript, apache-auth), почтовых серверов (Postfix, Dovecot), FTP и CMS.

Все фильтры Fail2Ban хранятся в /etc/fail2ban/filter.d/. Вы можете использовать стандартные или создать собственные, если фиксируете повторяющиеся попытки взлома в логах.

Советы

  • В Fail2Ban версии 1.0 и выше можно включить опцию bantime.increment = true, чтобы увеличить срок блокировки при повторных попытках.
  • Добавьте свой IP в параметр ignoreip, чтобы исключить себя из блокировок:
ignoreip = 127.0.0.1 ваш_IP
  • Вы можете настроить отправку уведомлений на e-mail, указав почтовые параметры в конфигурации Fail2Ban (раздел [DEFAULT]: destemail, sender, action).

Заключение

Базовая настройка защиты VPS с помощью iptables и fail2ban — это первый шаг к устойчивой и безопасной серверной инфраструктуре. Даже такие простые меры, как смена порта SSH и закрытие неиспользуемых портов, помогают снизить риск автоматических атак. Fail2Ban оперативно блокирует IP-адреса при выявлении подозрительной активности, предотвращая дальнейшие попытки взлома.

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

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

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

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

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

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