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

В связке с iptables отлично работает Fail2Ban — утилита, которая в реальном времени отслеживает логи системы и блокирует IP-адреса, с которых зафиксированы подозрительные действия. Например, при пяти неудачных попытках входа по SSH, IP-адрес автоматически блокируется на заданное время. Fail2Ban использует фильтры, основанные на регулярных выражениях и написанные в конфигурационных файлах.
Оба инструмента — iptables и Fail2Ban — входят в число обязательных средств защиты для любого VPS, особенно если он размещён в открытой сети и на нём работают публичные сервисы. При грамотной настройке они помогут отбить большую часть массовых атак, снизить нагрузку на сервер и упростить администрирование. Даже если вы только начинаете работать с Linux-серверами, освоение этих инструментов — важный шаг к надёжной и безопасной инфраструктуре.
Перенос порта SSH сервера
Для начала стоит изменить обычный SSH на более безопасный. Откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Нужно заменить стандартный порт на более сложный и многозначный, причем значение этого порта нужно выбрать из диапазона от 49152 до 65535. Это необходимо, чтобы избежать конфликтов с другими программами:

Сохраните изменения и перезапустите SSH:
sudo service ssh restart
После смены порта для подключения по SSH необходимо указывать его вручную:
ssh user@host -p 49681
Блокировка всех портов, за исключением HTTP, HTTPS, SSH
Для большей безопасности сервера, на котором располагаются важные сайты, будет достаточно этих трех портов. Для иных сервисов, связанных с сетью, рекомендуется иметь отдельный сервер. Причем и настройки безопасности для таких отдельных серверов будут соответствующими. Поскольку клиенты обычных сайтов, а точнее их браузеры, обычно используют всего два порта – HTTP и HTTPS, то для серверов, хостящих обычные сайты и не выполняющих другие функции, является полезным отключить любые другие порты, кроме этих двух. Кроме этого, стоит оставить и порт, который использует для подключения администратор ресурса – SSH. Для этого нужно иметь следующий файл настроек для iptables:
sudo touch /etc/iptables.firewall-rules
Внутри которого должен содержаться следующий весьма объемный код:

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

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

Для первичного исполнения указанной команды нужно выполнить ее самостоятельно. При дальнейших запусках за это будет отвечать созданный вами скрипт. Посмотреть настройки iptables можно, введя данную команду:
sudo iptables -L
Динамическая защита с использованием FAIL2BAN
Для установки данной утилиты, поскольку она не входит в систему по умолчанию, нужно выполнить следующее действие:
sudo apt install fail2ban
Fail2Ban отсутствует в базовой установке большинства дистрибутивов Linux.
Важным советом является создание резервной копии файла настроек, в которой и следует проводить все изменения. При обновлении пакета исходный файл может быть перезаписан, поэтому все изменения вносятся в копию:
cd /etc/fail2ban/ && cp jail.conf jail.local
Хоть данный инструмент по умолчанию и оснащен некоторыми фильтрами для веб-сервера Apache, лучше будет создать собственные самостоятельно. Первый будет использоваться для лога access, а другой для error. Полезно выполнить настройку виртуальных хостов так, чтобы данные логи распространялись сразу на все сайты сервера. Это сделает защиту VPS более надежной, а ее настройку более простой и понятной, ведь осуществляется она всего двумя фильтрами сразу для всех ресурсов. Для этого нужно создать новые файлы:

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

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

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

После перезапуска 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 останется защищённым от большинства массовых атак.
Читайте в блоге:
- Как установить и настроить Fail2Ban на CentOS 7
- Как увеличить скорость загрузки сайта: практическое руководство
- Как настроить OpenCart: от старта до профессионального магазина за 7 шагов