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

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

Умение защитить сервер на Linux от возможных атак может спасти ваш проект от простоя, а бизнес от потери прибыли. Разбираем как защитить VPS.

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

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

Итак, одним из наиболее популярных помощников в защите серверов на операционной системе Linux является утилита iptables. Она предназначена для управления межсетевым экраном. Также популярным решением считается fail2ban, в которой применяется iptables, чтобы блокировать передачу данных с запрещенных ip-адресов, а также python, чтобы подобные ip-адреса отслеживать и находить.

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

Для начала стоит изменить обычный SSH на более безопасный. Чтобы осуществить данную процедуру, нужно в настройках файла SSH прописать:

sudo nano /etc/ssh/sshd_config

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

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

Далее следует все сохранить и выполнить перезапуск SSH:

sudo service ssh restart

Для нового входа нужно будет указывать новый установленный порт:

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-get install fail2ban

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

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

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

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

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

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

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

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

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

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

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

sudo service fail2ban restart

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

sudo iptables -L

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

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