Защита от ддос атак для windows

Защита web сервера от программ для ddos атак

Некоторое время назад я написал подробную статью про установку и настройку web сервера на базе nginx и php-fpm последних версий. Там я упомянул, что это первая статья из цикла заметок о веб сервере. Сегодня я расскажу как простыми и подручными средствами защититься от простых ddos атак.

Введение

Сразу сделаю оговорку по поводу слова ddos, которое тут не совсем уместно, но я не придумал, как еще популярно объяснить о чем идет речь. От полноценной ddos атаки вы не сможете защититься в рамках настройки веб сервера. У вас просто будет забит весь канал и сервер перестанет отвечать. Если мощности сервера не достаточно для обработки и фильтрации входящих запросов, то он ляжет, чтобы вы там не делали. Для полноценной защиты от ddos нужны полноценные средства, которые стоят ощутимых финансовых затрат. Более подробно с теорией по защите от ddos читайте в отдельной статье.

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

Я приведу советы по защите от простых атак ботов или каких-то мелких вредителей и пакостников, которые без должных действий с вашей стороны могут положить ваш сайт или сервер без особых проблем. Вот простой пример. Есть не очень слабый виртуальный сервер от ihor, на борту которого 2 ярда, 8 гигов оперативы и ssd диск.

Сервер настроен по моей предыдущей статье, ссылку на которую привел в начале. На сервере развернут wordpress сайт с некоторым содержимым. И есть у нас вредитель, который на своем сервере запускает простой тест от apache на производительность веб сервера:

Всего лишь 50 параллельных потоков. Что мы видим на своем веб сервере:

Не очень приятная картина. Сервер загружен на 100%. И хотя он нормально обрабатывает запросы и в целом корректно работает. Даже не очень тормозит, но все равно это плохо. А если будет 3 сервера и по 100 потоков на каждом? Нет никаких проблем даже на тест взять у разных хостеров по виртуальной машине и запускать на них подобные штуки, имитируя ддос атаку.

В общем, если вы совсем не сделали никакой защиты на своем сервере, то любой человек сможет вам без особых проблем доставить некоторые неудобства. Защититься от такой «атаки» не сложно. Дальше я расскажу как это сделать.

Защита от ddos с помощью iptables

Для защиты от простейшей атаки мы будем использовать firewall — iptables, модуль ядра ipset для хранения больших списков ip и самописные скрипты. По фаерволу смотрите мою статью — настройка iptables. Здесь я не буду на этом останавливаться.

Вопрос настройки ipset я подробно рассматривал в своей статье по блокировке ботов по странам. Советую посмотреть материал, так как он напрямую связан с этой статьей и дополняет ее.

Итак, приступим к созданию нашей простой защиты от dos атаки с большим количеством подключений с одного ip адреса. Для начала проверим команду, которая покажет нам количество подключений с каждого ip адреса:

У меня получается примерно так. Много единичных подключений. Идет штатная работа веб сервера, никто на него не ломится десятками подключений. Теперь нагрузим наш сервер множественными паразитными запросами и еще раз посмотрим вывод команды.

Вот он, нарушитель нашего спокойствия, пытающийся организовать дос атаку на наш сервер. Теперь нарисуем скрипт, который будет блокировать всех кто устанавливает более 50-ти одновременных соединений с сайтом.

В принципе, комментировать тут особо нечего. Берем список подключений, который только что вывели, в нем сравниваем первую колонку, если она больше 50, то результат второй колонки, где записан ip адрес, передаем в файл.

Далее читаем этот файл и добавляем все ip адреса из него в ipset список под названием much_conn. Предварительно его надо создать. Подробно об этом я рассказывал в статье, на которую привел ссылку выше, но повторю еще раз здесь:

Посмотреть содержимое списка можно командой:

Теперь нужно добавить в iptables правило, по которому будут блокироваться все подключения из указанного списка ipset.

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

Единственный момент, о котором хочу сказать. Сам я не проверял, сколько подключений открывают поисковые боты, когда приходят на сайт. Я подозреваю, что явно не 50 и даже не 30, но наверняка я не проверял. В общем, будьте аккуратны, когда используете это средство.

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

Было бы неплохо как-то автоматически очищать список забаненных, удаляя оттуда тех, кто уже сутки к вам не подключается, но это сильно усложняет задачу. Нужно как минимум вести лог по блокирующему списку, сохранять время последнего обращения. Обрабатывать все это, высчитывать. В общем, задача хоть и не сильно сложная, но уже не тривиальная. Мне не захотелось этим заниматься.

Есть хоть и не очень изящное, но простое решение этой проблемы. Создать список ipset с заданным временем жизни записи с помощью timeout. Например вот так:

В данном случае запись с забаненным ip в списке ipset будет храниться в течении 3600 секунд или 60 минут.

Нужно понимать, что в данном примере с 1 ip адресом использовать ipset нет никакого смысла, можно сразу банить средствами самого iptables. Ipset нужен только тогда, когда этот список хотя бы в сотни строк. Если там несколько десяткой адресов, хватит и одного iptables.

Анализ лог файла web сервера для защиты от ddos

Рассмотрим еще один простой, но все же более сложный тип ддос атаки, когда идут типовые запросы с разных IP. То есть простой ботнет, может быть даже собранный руками из нескольких дешевых vds серверов. Одновременных подключений будет не много, но если у вас тяжелый сайт и злоумышленник найдет его слабое место (например поиск), то этого может быть достаточно, чтобы положить сайт.

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

Мы не будем каждый раз анализировать весь лог файл. Эта операция сама по себе будет сильно нагружать веб сервер. Возьмем последние 1000 строк из лог файла и посчитаем количество подключений с одного ip с типовым содержимым, например запрос главной страницы по протоколу http 1.0, «GET / HTTP/1.0». Если вы заметите другой постоянный признак ботнета, который вас атакует, используйте его. Это может быть один и тот же user agent или что-то еще. Допустим, если атакующий будет долбить в уязвимое место, то это будет адрес этой страницы.

Читайте также:  Kaspersky internet security для windows x64

Результатом этой команды будет примерно такой список.

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

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

Здесь делаем то же самое, что и раньше. Те, кто сделали более 50-ти одинаковых запросов по нашей маске на последние 1000 строк в лог файле, отправляются в бан.

Не забудьте создать отдельный список в ipset и добавить отдельное правило в ipables. Можно использовать уже существующий список и добавленное правило из предыдущего примера, но я рекомендую все разделять. Так удобнее для последующего анализа.

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

Баним ботов с неправильным referer

Есть категория простых ботов, которые подставляют в referrer либо мусор, либо кривые урлы без http или https в начале. Например вот такие:

Корректное поле referer должно содержать либо http, либо https, либо быть пустым. Все, что иначе, можно смело блокировать или возвращать статус ошибки. Добавляем примерно такую конструкцию в конфигурацию виртуального хоста, в раздел server <>.

После этого проверьте конфигурацию nginx и перечитайте ее.

Если вас достает какой-то бот с конкретным referer, можно забанить именно его. Для этого можно дополнить условие, или изменить. Например, вот так:

В дополнение, можно всех этих ботов с помощью простого скрипта банить на iptables, как в примерах выше. К слову сказать, их можно банить сразу, разбирая http запросы еще до того, как они будут попадать к nginx, например, с помощью ngrep, но это более сложная задача. Не все это умеют делать, там есть нюансы, а с nginx знакомы все. Не составит большого труда реализовать данный метод.

Защита от ддос с помощью модулей nginx — limit_conn и limit_req

Поделюсь еще одним простым способом снизить нагрузку на сервер и частично защититься от ддос с помощью модулей nginx — limit_conn и limit_req. Настроить их не сложно, частично результат работы первого модуля будет пересекаться с первыми двумя способами ddos защиты, описанными в начале. Он более простой для настройки, так что если не справились с теми способами, можно попробовать этот.

Смысл данных модулей в том, что один может ограничить одновременное количество разрешенных соединений с сайтом, а другой количество соединений в единицу времени.

Я ограничу в своем примере количество одновременных подключений к сайту с одного ip числом 50, а количество одновременных запросов к динамическому контенту не более 2-х в секунду. При этом будет разрешен всплеск (burst) запросов до 5-ти. Объясню, как понимать этот всплеск, так как сам не сразу понял, что конкретно он означает.

Если у нас идет превышение количества установленных запросов в секунду, то их выполнение задерживается, и они выстраиваются в очередь на исполнение с указанной скоростью. Размер этой очереди и равен значению всплеска. Все запросы, которым не хватит места в очереди, будут завершены с ошибкой. То есть, если запросов будет 4 в секунду, то 2 выполнятся сразу и еще 2 встанут в очередь. А если будет 10, то 2 выполнятся сразу, 5 встанут в очередь на выполнение по 2 штуки в секунду, а остальные будут завершены с ошибкой.

Исходя из этих условий, ограничение на подключения нужно установить в контексте server, а на доступ к динамическому контенту в соответствующем location. При этом описание зон, которые будут использовать директивы, нужно расположить в http.

Вот пример конфига nginx для реализации установленных ограничений с целью защиты от ддос атак.

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

и запись в логе с ошибками:

Лимит на количество подключений можете проверить той же утилитой ab, о которой я рассказал во введении.

Только не забывайте, что тест нужно запускать не на конкретную страницу, тогда вы попадете на ограничение выполнения динамического контента, а на что-то другое. Например, как в моем примере, на картинку.

Заключение

Я рассмотрел наиболее простые способы для защиты web сервера от не менее простых ddos атак, которые больше похожи на баловство. Серьезная атака, которая просто зальет весь входящий канал сервера, даже не заметит наших защит. Но тем не менее, мне приходилось убеждаться в эффективности этих способов в отражении некоторых атак.

Существует до сих пор огромное количество веб серверов, которые вообще никак не защищены даже от утилиты ab 🙂 Я знаю о чем говорю, так как мне попадаются в работу такие серверы. И есть так же много всяких ботов и простых программ, которые можно найти на просторах интернета и побаловаться, заваливая сайты, которые не готовы к нагрузкам вообще.

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

Суть защиты в том, что с помощью nginx выдаем пользователю определенную cookies, а потом редиректим на запрашиваемую страницу. Если бот не понимает кукисов или редиректов, то он отваливается. Нормальные пользователи ничего не замечают. Возможно позже я отдельно расскажу про этот способ и дополню статью. А пока все. Буду рад замечаниям по существу в статьях.

Как защитить сервер от DoS-атак

Здравствуйте. Это снова Антон Чигарёв, и мы продолжаем серию заметок начинающего системного администратора. В прошлый раз я рассказывал о создании интернет-радио, а сегодня поделюсь советами, как защитить сервер от DoS-атак.

Эта угроза, к сожалению, актуальна для любых интернет-ресурсов: никогда не знаешь, что может стать причиной недоброжелательства и вандализма. Мой проект, посвящённый играм для слепых людей, много раз подвергался атакам, из-за чего я занялся укреплением «обороны» и на этом пути перепробовал множество вариантов. Ниже я расскажу о базовых и малозатратных способах оградить небольшой проект от активности хакеров-самоучек.

Эта статья – обзор механизмов защиты, с каждым из которых вы можете ближе познакомиться в материалах по приведённым мною ссылкам. Поскольку большинство серверов работает под управлением Linux, в тексте я ориентируюсь именно на эти системы.

Речь пойдёт прежде всего о бесплатных инструментах. Многие хостинг-провайдеры предлагают защиту от DoS как услугу. За 100-300 рублей в месяц они проверяют пакеты «на подступах» к вашему серверу и отсекают нежелательный трафик. Для коммерческого проекта такие затраты оправданы, а если сайт пока не приносит прибыли – попробуйте сначала защититься методами, о которых я расскажу ниже.

Сам я уже около года использую межсетевой экран ConfigServer Security Firewall (CSF), который успешно выявляет и пресекает нежелательную активность пользователей.

Способы защиты

Ключевая задача при построении обороны – своевременно обнаружить и блокировать злоумышленника. И здесь есть несколько механик, которые можно использовать как вместе, так и по отдельности:

  1. Вы оставляете открытыми только нужные порты, а остальные закрываете. Это делается, чтобы злой хакер не проник в систему после простого сканирования портов.
  2. Файервол следит за открытыми портами по указанным протоколам и блокирует отправителей, которые присылают серверу больше пакетов, чем вы позволили при конфигурации. Вы можете настроить время блокировки, но учтите, что по истечении этого периода преступник снова сможет присылать лишние пакеты.
  3. При обнаружении нежелательной активности вы, администратор, получаете электронное письмо с уведомлением о происшествии и IP-адресом злоумышленника.
Читайте также:  Puppy linux ��������� � �������� �����

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

Инструменты

Выше я обрисовал, что можно сделать, а теперь предлагаю посмотреть, каким образом и с помощью каких программ всё это реализовать. В качестве основного компонента защиты предлагаю использовать встроенный в ядро Linux межсетевой экран IPTables. Он позволяет обрабатывать трафик, управлять портами и решать множество задач, связанных с настройкой сети. Например, вы можете создать «белый список» IP-адресов и полностью запретить любые другие подключения к нужной машине.

Сам по себе встроенный межсетевой экран сложен в настройке, но зато мы можем использовать его в связке с более понятными дополнительными файерволами. Один из них – CSF. У этого решения множество параметров, которые легко «подкрутить» как вам нужно в файле csf.conf. Либо вы можете поставить APF-firewall и к нему – скрипт DoS-deflate. Есть и другие аналогичные решения.

IPTables

Как можно догадаться из названия (буквально – «Таблицы IP»), данный инструмент фильтрует весь трафик при помощи специальных таблиц, которые вы можете добавлять по мере необходимости.

Каждая таблица содержит цепочки правил, определяющих, что делать с пакетом в той или иной ситуации. Стандартные варианты реагирования:

  • ACCEPT – принять пакет и пропустить дальше.
  • DROP – отбросить пакет и не пропускать.

Подробное и понятное русскоязычное руководство по IPTables вы найдёте на сайте ITproffi.

При работе с этим софтом нужно быть внимательным, понимать, что и для чего вы делаете. Иначе легко закрыть доступ к серверу вообще всем и даже самому себе. В этом случае сервер придётся перезагружать через панель управления.

Важно! IPTables хранит правила только до перезагрузки системы. Чтобы сохранить правила насовсем, нужно установить одну из дополнительных утилит. В сети на этот счёт есть готовые инструкции.

Пока вы только начали осваивать утилиту, настоятельно рекомендую НЕ сохранять правила, чтобы в случае ошибки не пришлось переустанавливать систему.

Знакомимся с CSF

Это готовый конфигуратор правил, который позволяет управлять трафиком, перенаправлять порты и контролировать сеть. Проще говоря, если у вас не получается или нет на времени разобраться с IPTables, конфигуратор сделает это за вас. Нужно лишь правильно заполнить текстовый файл конфигурации – прописать в нём необходимые вам порты и адреса. Дальше файервол приступит к работе.

По личному опыту могу сказать, что CSF действительно избавляет администратора от лишней возни и проблем с IPTables. Главное – быть внимательным и проверять, что вы вносите в конфиг.

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

Ставим серверный файервол

Перед установкой межсетевого экрана необходимо установить два компонента, без которых ничего работать не будет. Это интерпретатор Perl и библиотека Library World Wide Web, сокращённо – libwww.

apt-get install -y libwww-perl

Теперь можно браться за ConfigServer Security Firewall. В официальном репозитории он отсутствует, поэтому скачиваем его по ссылке. Или сразу грузим архив к себе на сервер:

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

Дальше запускаем установку программы и проверяем, всё ли у нас впорядке с зависимостями – на месте ли необходимые компоненты.

В результате мы должны получить следующее:

Это значит, что всё хорошо. Если у вас на данном этапе возникли какие-то ошибки, не игнорируйте их, а запрягайте поисковик, чтобы найти доступное объяснение проблемы и её решение.

Настройка

После установки утилиты можно сразу переходить к настройке защиты. Файл конфигурации лежит здесь: /etc/csf/csf.conf . Откройте его.

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

Перевести CSF в рабочий режим очень просто – надо в тексте конфига изменить значение флага TESTING на 0.

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

Для начала пропишем входящие порты. Указывать их надо в кавычках и через запятую:

Если вы хотите задать диапазон портов, границы диапазона обозначайте при помощи двоеточия. Например: 40000:55000,10335.

В блоке «EMAIL_ALERT» файла конфигурации вы можете настроить почтовые оповещения. Например, давайте установим оповещение о том, что кто-то подключился к ssh:

Теперь, если кто-нибудь подключится к ssh, мы получим уведомление на почту. Кстати о почте! CSF – мощный и крутой защитник, но он не волшебник и не знает вашего электронного адреса, пока вы не укажете его в блоке «LF_ALERT_TO».

Пора сохранить все изменения и написать в терминале следующее:

Обратите внимание на команды csf -r и csf -f. Нужны они, чтобы перезагружать и останавливать выполнение правил. А когда вам нужно просмотреть цепочку правил, используйте команду csf -l.

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

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

А удалить все правила, связанные с заданным IP, можно с помощью команды:

csf -ar 192.168.0.6

Удалить все запрещающие правила, связанные с конкретным адресом, можно вот так:

csf -dr 192.168.0.7

Заключение

Собственно, мы установили CSF и немного настроили его. Если у вас будет желание детальнее разобрать параметры инструмента, внимательно просмотрите файл конфигурации – там вы найдёте подробные комментарии на английском языке. Каким из возможных вариантов настройки пользоваться – решать вам. Главное, что у вас есть выбор.

А я пока прощаюсь с вами до следующей статьи, жду ваших комментариев и вопросов.

Хотите свободно работать с Debian и другими дистрибутивами Linux? Приходите учиться на профессию «системный администратор», и через 9 месяцев вы не только освоите Linux, но и сможете обеспечивать бесперебойную работу компьютерной техники и ПО в любой организации! А если вас интересует защита IT-систем — приглашаем на факультет информационной безопасности!

Здравствуйте. Это снова Антон Чигарёв, и мы продолжаем серию заметок начинающего системного администратора. В прошлый раз я рассказывал о создании интернет-радио, а сегодня поделюсь советами, как защитить сервер от DoS-атак.

Эта угроза, к сожалению, актуальна для любых интернет-ресурсов: никогда не знаешь, что может стать причиной недоброжелательства и вандализма. Мой проект, посвящённый играм для слепых людей, много раз подвергался атакам, из-за чего я занялся укреплением «обороны» и на этом пути перепробовал множество вариантов. Ниже я расскажу о базовых и малозатратных способах оградить небольшой проект от активности хакеров-самоучек.

Эта статья – обзор механизмов защиты, с каждым из которых вы можете ближе познакомиться в материалах по приведённым мною ссылкам. Поскольку большинство серверов работает под управлением Linux, в тексте я ориентируюсь именно на эти системы.

Читайте также:  Сломался шрифт windows 10

Речь пойдёт прежде всего о бесплатных инструментах. Многие хостинг-провайдеры предлагают защиту от DoS как услугу. За 100-300 рублей в месяц они проверяют пакеты «на подступах» к вашему серверу и отсекают нежелательный трафик. Для коммерческого проекта такие затраты оправданы, а если сайт пока не приносит прибыли – попробуйте сначала защититься методами, о которых я расскажу ниже.

Сам я уже около года использую межсетевой экран ConfigServer Security Firewall (CSF), который успешно выявляет и пресекает нежелательную активность пользователей.

Способы защиты

Ключевая задача при построении обороны – своевременно обнаружить и блокировать злоумышленника. И здесь есть несколько механик, которые можно использовать как вместе, так и по отдельности:

  1. Вы оставляете открытыми только нужные порты, а остальные закрываете. Это делается, чтобы злой хакер не проник в систему после простого сканирования портов.
  2. Файервол следит за открытыми портами по указанным протоколам и блокирует отправителей, которые присылают серверу больше пакетов, чем вы позволили при конфигурации. Вы можете настроить время блокировки, но учтите, что по истечении этого периода преступник снова сможет присылать лишние пакеты.
  3. При обнаружении нежелательной активности вы, администратор, получаете электронное письмо с уведомлением о происшествии и IP-адресом злоумышленника.

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

Инструменты

Выше я обрисовал, что можно сделать, а теперь предлагаю посмотреть, каким образом и с помощью каких программ всё это реализовать. В качестве основного компонента защиты предлагаю использовать встроенный в ядро Linux межсетевой экран IPTables. Он позволяет обрабатывать трафик, управлять портами и решать множество задач, связанных с настройкой сети. Например, вы можете создать «белый список» IP-адресов и полностью запретить любые другие подключения к нужной машине.

Сам по себе встроенный межсетевой экран сложен в настройке, но зато мы можем использовать его в связке с более понятными дополнительными файерволами. Один из них – CSF. У этого решения множество параметров, которые легко «подкрутить» как вам нужно в файле csf.conf. Либо вы можете поставить APF-firewall и к нему – скрипт DoS-deflate. Есть и другие аналогичные решения.

IPTables

Как можно догадаться из названия (буквально – «Таблицы IP»), данный инструмент фильтрует весь трафик при помощи специальных таблиц, которые вы можете добавлять по мере необходимости.

Каждая таблица содержит цепочки правил, определяющих, что делать с пакетом в той или иной ситуации. Стандартные варианты реагирования:

  • ACCEPT – принять пакет и пропустить дальше.
  • DROP – отбросить пакет и не пропускать.

Подробное и понятное русскоязычное руководство по IPTables вы найдёте на сайте ITproffi.

При работе с этим софтом нужно быть внимательным, понимать, что и для чего вы делаете. Иначе легко закрыть доступ к серверу вообще всем и даже самому себе. В этом случае сервер придётся перезагружать через панель управления.

Важно! IPTables хранит правила только до перезагрузки системы. Чтобы сохранить правила насовсем, нужно установить одну из дополнительных утилит. В сети на этот счёт есть готовые инструкции.

Пока вы только начали осваивать утилиту, настоятельно рекомендую НЕ сохранять правила, чтобы в случае ошибки не пришлось переустанавливать систему.

Знакомимся с CSF

Это готовый конфигуратор правил, который позволяет управлять трафиком, перенаправлять порты и контролировать сеть. Проще говоря, если у вас не получается или нет на времени разобраться с IPTables, конфигуратор сделает это за вас. Нужно лишь правильно заполнить текстовый файл конфигурации – прописать в нём необходимые вам порты и адреса. Дальше файервол приступит к работе.

По личному опыту могу сказать, что CSF действительно избавляет администратора от лишней возни и проблем с IPTables. Главное – быть внимательным и проверять, что вы вносите в конфиг.

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

Ставим серверный файервол

Перед установкой межсетевого экрана необходимо установить два компонента, без которых ничего работать не будет. Это интерпретатор Perl и библиотека Library World Wide Web, сокращённо – libwww.

apt-get install -y libwww-perl

Теперь можно браться за ConfigServer Security Firewall. В официальном репозитории он отсутствует, поэтому скачиваем его по ссылке. Или сразу грузим архив к себе на сервер:

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

Дальше запускаем установку программы и проверяем, всё ли у нас впорядке с зависимостями – на месте ли необходимые компоненты.

В результате мы должны получить следующее:

Это значит, что всё хорошо. Если у вас на данном этапе возникли какие-то ошибки, не игнорируйте их, а запрягайте поисковик, чтобы найти доступное объяснение проблемы и её решение.

Настройка

После установки утилиты можно сразу переходить к настройке защиты. Файл конфигурации лежит здесь: /etc/csf/csf.conf . Откройте его.

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

Перевести CSF в рабочий режим очень просто – надо в тексте конфига изменить значение флага TESTING на 0.

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

Для начала пропишем входящие порты. Указывать их надо в кавычках и через запятую:

Если вы хотите задать диапазон портов, границы диапазона обозначайте при помощи двоеточия. Например: 40000:55000,10335.

В блоке «EMAIL_ALERT» файла конфигурации вы можете настроить почтовые оповещения. Например, давайте установим оповещение о том, что кто-то подключился к ssh:

Теперь, если кто-нибудь подключится к ssh, мы получим уведомление на почту. Кстати о почте! CSF – мощный и крутой защитник, но он не волшебник и не знает вашего электронного адреса, пока вы не укажете его в блоке «LF_ALERT_TO».

Пора сохранить все изменения и написать в терминале следующее:

Обратите внимание на команды csf -r и csf -f. Нужны они, чтобы перезагружать и останавливать выполнение правил. А когда вам нужно просмотреть цепочку правил, используйте команду csf -l.

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

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

А удалить все правила, связанные с заданным IP, можно с помощью команды:

csf -ar 192.168.0.6

Удалить все запрещающие правила, связанные с конкретным адресом, можно вот так:

csf -dr 192.168.0.7

Заключение

Собственно, мы установили CSF и немного настроили его. Если у вас будет желание детальнее разобрать параметры инструмента, внимательно просмотрите файл конфигурации – там вы найдёте подробные комментарии на английском языке. Каким из возможных вариантов настройки пользоваться – решать вам. Главное, что у вас есть выбор.

А я пока прощаюсь с вами до следующей статьи, жду ваших комментариев и вопросов.

Хотите свободно работать с Debian и другими дистрибутивами Linux? Приходите учиться на профессию «системный администратор», и через 9 месяцев вы не только освоите Linux, но и сможете обеспечивать бесперебойную работу компьютерной техники и ПО в любой организации! А если вас интересует защита IT-систем — приглашаем на факультет информационной безопасности!

Оцените статью