Используем iptables для защиты сервера от DDOS и Flood

Нам потребуется Ostinato для генерации произвольных пакетов. Wireshark для захвата сетевых пакетов, а так же виртуальная машина на CentOS, в которую мы установим tcpdump (работа с этой программой будет показана позднее).

Удаление

Для начала посмотрим какие записи в iptables работают.

# iptables -S

Обратите особое внимание на следующее пояснение: символ «#» в приведенном примере означает, что команда должна быть выполнена непосредственно от имени root или через команду sudo (так принято называть суперпользователя из «мира» Linux). В ином случае реализовать задуманную идею на практике не получится. Обязательно соблюдайте это правило для корректности предпринятых мер.

Очистим все записи фаервола для протокола tcp/ip 4 версии. Для этого будем использовать аргумент «-F».

# iptables -F

Тоже самое будет для протокола 6 версии.

# ip6tables -F

Если интересует удаление правил из другой таблицы (не текущей), тогда пропишите её наименование в середине рассматриваемой команды. Это может выглядеть следующим образом (как пример):

# iptables -t nat -F

Все правила, которые наличествуют в цепочках таблицы «nat» будут удалены.

Хотите удалить правила из определенной цепи в указанной таблице? Найдите наименование цепочки и пропишите его в команде. Давайте рассмотрим на конкретном примере:

# iptables -t nat -F PREROUTING

По номеру в цепочке

Если пользователю известна информация относительно наименования цепочки и номера строки, можно удалить правила iptables альтернативным и не менее тривиальным способом.

Прежде всего необходимо узнать номера цепочек. Для этого будем использовать опцию «line-numbers».

# iptables -L —line-numbers

Узнаем номера для nat.

# iptables -L -t nat —line-numbers

Для удаления необходимо указать аргумент «-D» название цепочки и номер правила.

Для таблицы INPUT.

# iptables -D INPUT номер строки

FORWARD.

# iptables -D FORWARD номер строки

OUTPUT.

# iptables -D OUTPUT номер строки

Чтобы очистить запись из nat таблице, необходимы добавить опцию «-t nat».

Для примера очистим запись из таблицы nat в цепочке PREROUTING.

Читайте также:  Маршрутизация трафика Kali Linux в Tor посредством Whonix.

# iptables -t nat -D PREROUTING номер строки

По спецификации

Запустите команду iptables с приставкой -D. Эта опция позволит пользователю осуществить задуманное. После приставки нужно указать спецификацию правила. Стандартная команда «iptables -S» позволит удалить правила упомянутым способом.

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

iptables -D INPUT -m conntrack —ctstate INVALID -j DROP

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

Заключение

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

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

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

Выводы

Ограничить число TCP-сегментов со статусом NEW (флаги SYN) на порт локального SSH, что позволит существенно замедлить работу переборщика паролей (бруфорсера).

Но тут всплывает существенный недостаток:

Если переборщик будет активен, мы тоже не сможем залогиниться, потому что не попадём в “ёмкость”. Нам нужно организовать отдельную “ёмкость” для каждого source IP. Тогда пусть он как хочет переполняет свою – мы попадём в нужную очередь свободно! Для этого можно использовать другой модуль – hashlimit. Попробуем реализовать эту возможность.

Дальше я продолжаю писать статью на другой виртуалке (помощнее), здесь у меня изменились IP-адреса. Для CentOS (виртуалка) , для генератора пакетов соответственно

Перепишем наши правила следующим образом:

-A INPUT -p icmp -m hashlimit —hashlimit 1/sec —hashlimit-burst 1 —hashlimit-mode srcip —hashlimit-name ICMPFLOOD -j ACCEPT -A INPUT -p icmp -j DROP

Читайте также:  Магия Deep Fusion от Apple: Что это на самом деле?

Здесь почти всё то же самое, что и у limit (ещё бы, hashlimit – прямой его потомок), но добавили параметры:

  1. hashlimit-mode srcip (режим разделения хеша. srcip – означает для каждого source ip свой хеш, т.е. источника пакетов. Может быть dstip, srcport).
  2. hashlimit-name ICMPFLOOD (произвольное имя для таблицы хешей). Таблицы лежат в /proc/net/ipt_hashlimit/ с теми же именами.

Запущу в том же Ostinato второй поток с немного другим Source IP, с похожими параметрами. Попутно будем отслеживать содержимое нашей таблицы:

Выводы

# watch -n 1 cat /proc/net/ipt_hashlimit/ICMPFLOOD

Содержимое таблицы хешей

Здесь мы видим несколько значений. Каждая строка – отдельный источник пакетов.

Первая цифра – счётчик (у нас 9) это значение по умолчанию, мы могли бы его указать прямо в правиле файрволла, (–hashlimit-htable-expire) но по дефолту 10 секунд. Это время жизни хеша в таблице. Каждую секунду счётчик уменьшается на 1. Но если пакеты попадающие под это правило продолжают поступать – счётчик снова выставляется в исходное значение. Далее идёт IP адрес источника, что очевидно. Три последние числа – весьма характерны. Первое из них – текущее значение счётчика пакетов, умноженное на определённый коэффициент. Второе – значение burst с этим же коэффициентом. А третье – средний интервал между пакетами (в секундах) умноженный на 32000.

Кстати, моё правило можно заменить другим, попроще:

-A INPUT -p icmp -m hashlimit —hashlimit-above 1/sec —hashlimit-burst 1 —hashlimit-mode srcip —hashlimit-name ICMPFLOOD -j DROP

И всё! В этом правиле мы отмечаем, что будем дропать пакеты свыше (-above) 1/секунду.

Вам так же понравится: Нужна ли периодическая проверка систем защиты? Настройка Fail2ban для защиты сервера от брутфорса 3 правила защиты своего сервера Используем переменные в Shell Поиск и удаление отдельных правил файрволла iptables Простой учёт трафика на Linux средствами iptables + ulog-acctd

Установка и настройка VPN сервера на Debian, Ubuntu Linux используя pptp и arno-iptables-firewall

Эта инструкция описывает установку и настройку PPTP сервера под управлением Debian GNU/Linux Squeeze.

PPTP — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.

Читайте также:  5 лучших сканеров QR и штрих-кодов для Android

IP адрес сервера в локалке пусть будет адреса в VPN будут

Начинаем установку необходимых программ:

Теперь приступаем к настройке.

Первым делом открываем в редакторе файл /etc/ и дописываем в конец следующие строки:

Добавляем в файл /etc/ppp/pptpd-options следующие строки:

Сохраняем конфигурационный файл и создаем файл лога командой:

Переходим к настройке паролей в файле /etc/ppp/chap-secretsДобавляем по примеру:

После этого перезапускаем pptpd:

Переходим к настройке нашего скрипта файрвола arno-iptables-firewall, который создаёт правила для iptables на основе конфигурационных файлов.

# Разрешаем протокол GRE для всех:Вносим переменную DC_OPEN_IP в файл /etc/arno-iptables-firewall/

В файл /etc/arno-iptables-firewall/ вносим переменную DC_OPEN_IP и открываем протокол GRE для серверабыло:

Перезагружаем ARNO командой:

Если же вы используете самописный скрипт iptables, тогда необходимо добавить следующие строки в свой скрипт:

Теперь можно пинговать наш сервер и пользоватся интернетом через него.

На этом настройка VPN сервера на PPTP закончена, если Вам понадобится подключится к VPN сервер из Windows, Вам достаточно почитать инструкцию: Инструкция подключения к серверу PPTPD из Windows.

После труда, принято немножко отдохнуть, потому посмотрим интересный видео ролик о подводной охоте на сома:

Источник

Сброс цепочек

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

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

Сброс отдельной цепочки

Чтобы сбросить конкретную цепочку с последующим удалением всех правил в данной цепи, вы можете использовать опцию -F или ее эквивалент —flush, добавив в команду имя цепочки, которую вы хотите сбросить.

Например, для удаления всех правил в цепочке INPUT запустите следующую команду:

  • sudo iptables -F INPUT

Сброс всех цепочек

Чтобы сбросить все цепочки с последующим удалением всех правил брандмауэра, вы можете использовать опцию -F или ее эквивалент —flush без указания конкретной цепочки:

  • sudo iptables -F