Разблокируй icmp трафик windows 7. Cisco ACL для продвинутых. Расширенные списки доступа. Сбрасывать или разрешить трафик с определенных MAC адресов

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

Вам понадобится

  • - ПК с установленной операционной системой Windows;
  • - доступ в интернет.

Инструкция

  • Войдите в меню «Пуск» операционной системы Windows, кликнув по соответствующей кнопке в левом углу панели задач. Некоторые устройства для ввода информации имеют клавишу с логотипом Windows, нажав на которую можно получить доступ к главному меню операционной системы непосредственно с клавиатуры.
  • Откройте раздел «Панель управления», активируйте меню «Брандмауэр Windows» и в диалоговом окне перейдите на вкладку «Расширенные». Нажмите на кнопку ICMP Settings и отмените выбор параметра «Allow incoming echo request», сняв галочку с соответствующего пункта меню. Сохраните сделанные вами изменения в настройках, кликнув клавишу «Ok».
  • Воспользуйтесь встроенным приложением IPSec для блокировки входящих и исходящих ping-пакетов. Нажмите на кнопку «Пуск» и, если вы используете операционную систему Windows 7, введите mmc в строку поиска. Владея компьютеров под управлением ОС Windows XP, впишите аналогичное значение в строку «Выполнить». Кликните по пункту «Открыть» или нажмите на клавишу Enter.
  • Подтвердите свой выбор и в окне приложений перейдите в меню File. Выберите функцию «Add/Remove Snap-in» и активируйте утилиту «IP Security and Policy Management». Поставьте флажок в поле «Local computer» и завершите работу мастера, кликнув кнопку Close.
  • Нажмите правую клавишу манипулятора и вызовите контекстное меню. Обозначьте команду «Manage IP filter Lists and Filter Actions» и активируйте пункт «All ICMP Traffic». Перейдите в раздел «Manage Filter Actions», кликните по кнопке Next и отметьте флажком надпись «Block». Подтвердите сделанные настройки и закройте диалоговое окно.
  • В контекстном меню «IP Security Policies» активируйте команду «Create IP Security Policy». Укажите пункт «Block Ping» в соответствующем поле открывшегося мастера создания политик. Снимите флажок напротив надписи «Activate the default responce rule» и сделайте выбор в пользу пункта «Edit Properties». Сохраните сделанные настройки и закройте окно мастера.
  • Совет добавлен 25 января 2012 Совет 2: Как запретить ping Функция ping используется для проверки доступности интернет-ресурсов посредством отправки на используемый хост пакета определенного размера. При этом замеряется время возврата данных, чтобы определить скорость соединения. Данная функция отключается любителями сетевых игр, чтобы сократить время задержек.

    Инструкция

  • Откройте меню «Пуск» операционной системы Windows, кнопка которого находится в левом углу панели задач. Также на некоторых клавиатурах имеется кнопка с изображением окошка Windows, нажав на которое, можно запустить главное меню. Перейдите в раздел «Панель управления» и зайдите в меню «Брандмауэр Windows». Нажмите на вкладку «Расширенные» в открывшемся диалоговом окне.
  • Найдите кнопку ICMP Settings и нажмите на нее, после чего снимите галочку возле надписи “Allow incoming echo request”. После этого внизу окна нажмите на кнопку «Ок», чтобы сохранить указанные настройки. После этого для запрета входящих и исходящих ping-пакетов необходимо воспользоваться встроенным приложением IPSec.
  • Нажмите на кнопку «Пуск» и введите значение mmc в строку поиска (для Windows 7) или в строку «Выполнить» (для Windows XP). Нажмите кнопку «Открыть» или клавишу Enter.Подтвердите выполнение команды и откройте меню File в окне приложений. Выберите функцию "Add/Remove Snap-in" и добавьте утилиту "IP Security and Policy Management". В поле "Local computer" поставьте флажок и нажмите кнопку Close, чтобы завершить работу мастера.
  • Нажмите правой кнопкой мышки на строку "IP Security Policies", чтобы вызвать контекстное меню. Выделите команду “Manage IP filter Lists and Filter Actions” и отметьте пункт “All ICMP Traffic”. После этого перейдите в раздел "Manage Filter Actions". Нажмите кнопку Next и поставьте флажок возле надписи "Block". Подтвердите настройку и закройте диалоговое окно.
  • Выберите команду "Create IP Security Policy" в контекстном меню "IP Security Policies". Откроется мастер создания политик, в котором укажите в соответствующем поле "Block Ping". Снимите флажки возле надписи “Activate the default responce rule” и поставьте возле “Edit Properties”. Сохраните настройки и закройте окно мастера.
  • Как запретить ping - версия для печати

    Научиться настройке MikroTik можно на онлайн курсе по оборудованию этого производителя. Автор курса является сертифицированным тренером MikroTik. Подробней Вы можете прочитать в конце статьи.

    Статья отвечает на вопрос насколько опасно блокировать ICMP трафик.

    ICMP - яблоко раздора

    Многие сетевые администраторы считают, что протокол межсетевых управляющих сообщений (Internet Control Message Protocol (ICMP) представляет собой угрозу безопасности и поэтому должен всегда блокироваться на . Это правда, что протокол имеет некоторые связанные с этим проблемы безопасности, и что часть запросов должна быть заблокирована. Но это не повод блокировать весь ICMP-трафик!

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

    Echo запрос и and Echo ответ

    IPv4 – Echo запрос (Type8, Code0) и Echo ответ (Type0, Code0)
    IPv6 – Echo запрос (Type128, Code0) and Echo ответ (Type129, Code0)

    Мы все хорошо знаем, что ping, - один из первых инструментов для поиска и устранения неполадок. Да, если вы включите на своем оборудование обработку ICMP-пакетов, то это значит, что ваш хост теперь доступен для обнаружения, но разве ваш уже не слушает порт 80, и не отправляет ответы на клиентские запросы? Конечно, заблокируйте ещё и эти запросы, если вы действительно хотите, чтобы на границе сети была ваша DMZ. Но блокируя ICMP трафик внутри вашей сети, не усилите защиту, напротив получите систему с излишне сложным процессом поиска и устранения неполадок («Проверьте пожалуйста отзывается ли шлюз на сетевые запросы?», «Нет, но это меня ничуть не расстраивает, потому что мне это ничего не скажет! »).

    Помните, также можете разрешить прохождение запросов в определенном направлении; например, настроить оборудование так, чтобы Echo запросы из вашей сети проходили в сеть Интернет и Echo ответы из Интернета в вашу сеть, но не наоборот.

    Необходима фрагментация пакета (IPv4) / Пакет слишком большой (IPv6)

    IPv4 – (Type3, Code4)
    IPv6 – (Type2, Code0)

    Данные компоненты протокола ICMP очень важны, так как являются важным компонентом в Path MTU Discovery (PMTUD), который является неотъемлемой частью протокола TCP. Позволяет двум хостам корректировать значение максимального размера сегмента TCP (MSS) до значения, которое будет соответствовать наименьшему MTU по пути связей между двумя адресатами. Если на пути следования пакетов будет узел с меньшим Maximum Transmission Unit, чем у отправителя или получателя, и у них не будет средств для обнаружения данной коллизии, то трафик будет незаметно отбрасывается. И вы не будете понимать что происходит с каналом связи; другими словами, «для вас наступят веселые деньки».

    Don’t Fragment – ICMP не пройдет!

    Передача IPv4-пакетов с установленным битом Don’t Fragment (большинство из них!) или IPv6-пакетов (помним, что в IPv6 нет фрагментации маршрутизаторами), которые слишком велики для передачи через интерфейс, приведёт к тому, что маршрутизатор отбросит пакет и сформирует ответ источнику передачи с следующими ICMP-ошибками: Требуется Фрагментация (Fragmentation Required ), либо Пакет Слишком Большой (Packet Too Big). Если ответы с этими ошибками не смогут вернуться к отправителю, то он будет интерпретировать отсутствие подтверждающих ответов о доставке пакетов ACK (Acknowledge ) от получателя в качестве перегрузки / потери и источником для повторной передачи пакетов, которые также будут отбрасываться.

    Сложно выявить причину подобной проблемы и быстро устранить, процесс обмена TCP-рукопожатиями (TCP-handshake) работает нормально, поскольку в нем задействованы небольшие пакеты, но как только происходит массовая передача данных сеанс передачи зависает, так как источник передачи не получает сообщения об ошибках.

    Исследование пути доставки пакетов

    RFC 4821 был разработан для того, чтобы помочь участникам передачи трафика в сети обойти эту проблему, используя исследование пути распространения пакетов (Path MTU Discovery (PLPMTUD) . Стандарт позволяет обнаружить максимальный объём данных (Maximum Transmission Unit (MTU) , который может быть передан протоколом за одну итерацию, путем постепенного увеличения максимального размера полезного блока данных (Maximum Segment Size (MSS) , для того чтобы найти максимально возможную величину пакета без его фрагментации на пути следования от передатчика к приемнику. Данный функционал уменьшает зависимость от своевременного получения ответов с ошибками по протоколу межсетевых управляющих сообщений (Internet Control Message Protocol (ICMP) и доступен в большинстве сетевых стеков устройств и клиентских операционных систем. К сожалению, он не так эффективен, как непосредственное получение данных о максимальном возможном размере передаваемых пакетов. Пожалуйста, позвольте этим сообщениям протокола ICMP возвращаться к источнику передачи, хорошо?

    Превышение времени передачи пакетов

    IPv4 – (Type11, Code0)
    IPv6 – (Type3, Code0)

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


    Отправляет пакет с временем жизни пакета данных для протокола IP (Time to live (TTL) равным 1 , чтобы первый маршрутизатор отправил сообщение с ошибкой (включая собственный IP-адрес) о превышении времени жизни пакета. Затем отправляет пакет с TTL 2 и так далее. Данная процедура необходима для того, чтобы обнаружить каждый узел на пути следования пакетов.

    NDP and SLAAC (IPv6)

    Router Solicitation (RS) (Type133, Code0)
    Router Advertisement (RA) (Type134, Code0)
    Neighbour Solicitation (NS) (Type135, Code0)
    Neighbour Advertisement (NA) (Type136, Code0)
    Redirect (Type137, Code0)

    В то время как IPv4 использовал протокол разрешения адресов (ARP) для сопоставления 2 и 3 уровней сетевой модели OSI, IPv6 использует другой подход в виде протокола обнаружения соседей (NDP). NDP предоставляет множество функций, включая обнаружение маршрутизатора, обнаружение префикса, разрешение адреса и многое другое. В дополнение к NDP, Автоконфигурация (StateLess Address AutoConfiguration (SLAAC) позволяет динамически настраивать хост в сети, аналогично концепции протокола динамической настройки узла (Dynamic Host Configuration Protocol (DHCP) (хотя DHCPv6 предназначается для более тонкого управления).

    Эти пять типов ICMP сообщений не должны блокироваться внутри вашей сети (не учитываем внешний периметр), чтобы протокол передачи данных IP функционировал правильно.

    Нумерация типов ICMP

    Протокол межсетевых управляющих сообщений (ICMP) содержит много сообщений, которые идентифицируются полем «тип».

    Тип Наименование Спецификация
    0 Echo Reply
    1 Unassigned
    2 Unassigned
    3 Destination Unreachable
    4 Source Quench (Deprecated)
    5 Redirect
    6 Alternate Host Address (Deprecated)
    7 Unassigned
    8 Echo
    9 Router Advertisement
    10 Router Solicitation
    11 Time Exceeded
    12 Parameter Problem
    13 Timestamp
    14 Timestamp Reply
    15 Information Request (Deprecated)
    16 Information Reply (Deprecated)
    17 Address Mask Request (Deprecated)
    18 Address Mask Reply (Deprecated)
    19 Reserved (for Security) Solo
    20-29 Reserved (for Robustness Experiment) ZSu
    30 Traceroute (Deprecated)
    31 Datagram Conversion Error (Deprecated)
    32 Mobile Host Redirect (Deprecated) David_Johnson
    33 IPv6 Where-Are-You (Deprecated)
    34 IPv6 I-Am-Here (Deprecated)
    35 Mobile Registration Request (Deprecated)
    36 Mobile Registration Reply (Deprecated)
    37 Domain Name Request (Deprecated)
    38 Domain Name Reply (Deprecated)
    39 SKIP (Deprecated)
    40 Photuris
    41 ICMP messages utilized by experimental mobility protocols such as Seamoby
    42 Extended Echo Request
    43 Extended Echo Reply
    44-252 Unassigned
    253 RFC3692-style Experiment 1
    254 RFC3692-style Experiment 2
    255 Reserved

    Пара слов об ограничении скорости

    Хотя ICMP-сообщения, подобные тем, которые описаны в статье, могут быть очень полезными, помните, что генерация всех этих сообщений занимает процессорное время на ваших маршрутизаторах и генерирует трафик. Вы действительно ожидаете, что вы получите 1000 пингов в секунду через ваш брандмауэр в обычной ситуации? Будет ли это считаться нормальным трафиком? Вероятно, нет. Ограничивайте пропускную способность сети для этих типов ICMP трафика, как вы считаете нужным; этот шаг может помочь вам в защите вашей сети.

    Читать, исследовать и понимать

    Учитывая, что обсуждение темы «блокировать или не блокировать» ICMP-пакетов, всегда приводит к путанице, спорам и разногласиям, предлагаю продолжить изучать эту тему самостоятельно. На этой странице привел много ссылок, считаю для более полного понимания проблематики следует потратить время на их чтение. И сделать осознанный выбор того, что лучше всего подходит для вашей сети.

    MikroTik: куда нажать, чтобы заработало?
    При всех своих достоинствах, есть у продукции компании MikroTik один минус – много разобщенной и далеко не всегда достоверной информации о ее настройке. Рекомендуем проверенный источник на русском языке, где все собрано, логично и структурировано – видеокурс «Настройка оборудования MikroTik ». В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект. Все материалы остаются у вас бессрочно. Начало курса можно посмотреть бесплатно, оставив заявку на странице курса. Автор курса является сертифицированным тренером MikroTik.


    Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.

    Знак # означает, что команда выполняется от root. Откройте заранее консоль с рутовыми правами - sudo -i в Debian-based системах или su в остальных.

    1. Показать статус.

    # iptables -L -n -v

    Примерный вывод команды для неактивного файрвола:

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

    Для активного файрвола:

    Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 394 43586 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 93 17292 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 1 142 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 0 0 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes) pkts bytes target prot opt in out source destination Chain wanin (1 references) pkts bytes target prot opt in out source destination Chain wanout (1 references) pkts bytes target prot opt in out source destination

    Где:
    -L: Показать список правил.
    -v: Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы "K", "M" or "G".
    -n: Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).

    2. Отобразить список правил с номерами строк.

    # iptables -n -L -v --line-numbers

    Примерный вывод:

    Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID 3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 wanin all -- 0.0.0.0/0 0.0.0.0/0 6 wanout all -- 0.0.0.0/0 0.0.0.0/0 7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain wanin (1 references) num target prot opt source destination Chain wanout (1 references) num target prot opt source destination

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

    3. Отобразить INPUT или OUTPUT цепочки правил.

    # iptables -L INPUT -n -v
    # iptables -L OUTPUT -n -v --line-numbers

    4. Остановить, запустить, перезапустить файрвол.

    Силами самой системы:
    # service ufw stop
    # service ufw start

    Можно также использовать команды iptables для того, чтобы остановить файрвол и удалить все правила:
    # iptables -F
    # iptables -X
    # iptables -t nat -F
    # iptables -t nat -X
    # iptables -t mangle -F
    # iptables -t mangle -X
    # iptables -P INPUT ACCEPT
    # iptables -P OUTPUT ACCEPT
    # iptables -P FORWARD ACCEPT

    Где:
    -F: Удалить (flush) все правила.
    -X: Удалить цепочку.
    -t table_name: Выбрать таблицу (nat или mangle) и удалить все правила.
    -P: Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).

    5. Удалить правила файрвола.

    Чтобы отобразить номер строки с существующими правилами:

    # iptables -L OUTPUT -n --line-numbers
    # iptables -L OUTPUT -n --line-numbers | less
    # iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1

    Получим список IP адресов. Просто посмотрим на номер слева и удалим соответствующую строку. К примеру для номера 3:
    # iptables -D INPUT 3

    Или найдем IP адрес источника (202.54.1.1) и удалим из правила:
    # iptables -D INPUT -s 202.54.1.1 -j DROP

    Где:
    -D: Удалить одно или несколько правил из цепочки.

    6. Добавить правило в файрвол.

    Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк:
    # iptables -L INPUT -n --line-numbers

    Примерный вывод:

    Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED

    Чтобы вставить правило между 1 и 2 строкой:
    # iptables -I INPUT 2 -s 202.54.1.2 -j DROP

    Проверим, обновилось ли правило:
    # iptables -L INPUT -n --line-numbers

    Вывод станет таким:

    Chain INPUT (policy DROP) num target prot opt source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 DROP all -- 202.54.1.2 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED

    7. Сохраняем правила файрвола.

    Через iptables-save:
    # iptables-save > /etc/iptables.rules

    8. Восстанавливаем правила.

    Через iptables-restore
    # iptables-restore

    9. Устанавливаем политики по умолчанию.

    Чтобы сбрасывать весь трафик:
    # iptables -P INPUT DROP
    # iptables -P OUTPUT DROP
    # iptables -P FORWARD DROP
    # iptables -L -v -n

    После вышеперечисленных команд ни один пакет не покинет данный хост.
    # ping google.com

    10. Блокировать только входящие соединения.

    Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:
    # iptables -P INPUT DROP
    # iptables -P FORWARD DROP
    # iptables -P OUTPUT ACCEPT
    # iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
    # iptables -L -v -n

    Пакеты исходящие и те, которые были запомнены в рамках установленных сессий - разрешены.
    # ping google.com

    11. Сбрасывать адреса изолированных сетей в публичной сети.

    # iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP

    Список IP адресов для изолированных сетей:
    10.0.0.0/8 -j (A)
    172.16.0.0/12 (B)
    192.168.0.0/16 (C)
    224.0.0.0/4 (MULTICAST D)
    240.0.0.0/5 (E)
    127.0.0.0/8 (LOOPBACK)

    12. Блокировка определенного IP адреса.

    Чтобы заблокировать адрес взломщика 1.2.3.4:
    # iptables -A INPUT -s 1.2.3.4 -j DROP
    # iptables -A INPUT -s 192.168.0.0/24 -j DROP

    13. Заблокировать входящие запросы порта.

    Чтобы заблокировать все входящие запросы порта 80:
    # iptables -A INPUT -p tcp --dport 80 -j DROP
    # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

    Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4:
    # iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
    # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

    14. Заблокировать запросы на исходящий IP адрес.

    Чтобы заблокировать определенный домен, узнаем его адрес:
    # host -t a facebook.com

    Вывод: facebook.com has address 69.171.228.40

    Найдем CIDR для 69.171.228.40:
    # whois 69.171.228.40 | grep CIDR

    Вывод:
    CIDR: 69.171.224.0/19

    Заблокируем доступ на 69.171.224.0/19:
    # iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

    Также можно использовать домен для блокировки:
    # iptables -A OUTPUT -p tcp -d www.fаcebook.com -j DROP
    # iptables -A OUTPUT -p tcp -d fаcebook.com -j DROP

    15. Записать событие и сбросить.

    Чтобы записать в журнал движение пакетов перед сбросом, добавим правило:

    # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
    # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

    Проверим журнал (по умолчанию /var/log/messages):
    # tail -f /var/log/messages
    # grep -i --color "IP SPOOF" /var/log/messages

    16. Записать событие и сбросить (с ограничением на количество записей).

    Чтобы не переполнить раздел раздутым журналом, ограничим количество записей с помощью -m. К примеру, чтобы записывать каждые 5 минут максимум 7 строк:
    # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
    # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

    16. Сбрасывать или разрешить трафик с определенных MAC адресов.

    # iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
    ## *разрешить только для TCP port # 8080 с mac адреса 00:0F:EA:91:04:07 * ##
    # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT

    17. Разрешить или запретить ICMP Ping запросы.

    Чтобы запретить ping:
    # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

    Разрешить для определенных сетей / хостов:
    # iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT

    Разрешить только часть ICMP запросов:
    ### ** предполагается, что политики по умолчанию для входящих установлены в DROP ** ###
    # iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
    # iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
    # iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
    ## ** разрешим отвечать на запрос ** ##
    # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

    18. Открыть диапазон портов.

    # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

    19. Открыть диапазон адресов.

    ## разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 ##
    # iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

    ## пример для nat ##
    # iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25

    20. Закрыть или открыть стандартные порты.

    Заменить ACCEPT на DROP, чтобы заблокировать порт.

    ## ssh tcp port 22 ##
    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    ## cups (printing service) udp/tcp port 631 для локальной сети ##
    iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

    ## time sync via NTP для локальной сети (udp port 123) ##
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

    ## tcp port 25 (smtp) ##
    iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT

    # dns server ports ##
    iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT

    ## http/https www server port ##
    iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

    ## tcp port 110 (pop3) ##
    iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT

    ## tcp port 143 (imap) ##
    iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT

    ## Samba file server для локальной сети ##
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT

    ## proxy server для локальной сети ##
    iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT

    ## mysql server для локальной сети ##
    iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

    21. Ограничить количество параллельных соединений к серверу для одного адреса.

    Для ограничений используется connlimit модуль. Чтобы разрешить только 3 ssh соединения на одного клиента:
    # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

    Установить количество запросов HTTP до 20:
    # iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP

    Где:
    --connlimit-above 3: Указывает, что правило действует только если количество соединений превышает 3.
    --connlimit-mask 24: Указывает маску сети.

    Помощь по iptables.

    Для поиска помощи по iptables, воспользуемся man:
    $ man iptables

    Чтобы посмотреть помощь по определенным командам и целям:
    # iptables -j DROP -h

    Проверка правила iptables.

    Проверяем открытость / закрытость портов:
    # netstat -tulpn

    Проверяем открытость / закрытость определенного порта:
    # netstat -tulpn | grep:80

    Проверим, что iptables разрешает соединение с 80 портом:
    # iptables -L INPUT -v -n | grep 80

    В противном случае откроем его для всех:
    # iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

    Проверяем с помощью telnet
    $ telnet ya.ru 80

    Можно использовать nmap для проверки:
    $ nmap -sS -p 80 ya.ru

    Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

    Брандмауэр - первая линия защиты любого сервера, и от его правильной настройки зависит, сможет ли злоумышленник продвинуться дальше в своих попытках проникновения в систему. Современные файеры предлагают множество механизмов обеспечения безопасности, используя которые ты можешь оставить «не у дел» 99% атакующих. И все это без необходимости покупки дорогостоящего оборудования и коммерческого софта.

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

    Сканирование портов

    Чтобы выявить наличие уязвимых сервисов на машине, атакующий производит разведку с помощью сканера портов и различных систем обнаружения уязвимостей. Обычно в качестве сканера портов используется nmap, который способен осуществлять сканирование десятком различных способов и в некоторых случаях умеет выявлять версии ОС и сервисов. Вот список особенно популярных флагов nmap, которые обычно используют взломщики:

    Флаги nmap, используемые при сканировании

    • -sT - обычное TCP-сканирование с помощью открытия соединения на указанный порт и его завершения;
    • -sS - SYN/ACK-сканирование, связь разрывается сразу после ответа на запрос открытия соединения;
    • -sU - UDP-сканирование;
    • -sF - сканирование пакетами с установленным флагом FIN;
    • -sX - сканирование пакетами с установленными флагами FIN, PSH и URG;
    • -sN - сканирование пакетами без установленных флагов.

    Метод защиты от сканирования прост и известен любому системному администратору. Заключается он в простом закрытии всех сервисов, которые не должны быть видны из внешней сети. Например, если на машине работают сервисы ssh, samba и apache, а из внешнего мира должен быть виден только веб-сервер с корпоративной веб-страницей, то межсетевой экран может быть настроен так:

    Начальная настройка iptables

    outif="eth1"
    iptables -F
    iptables -i $outif -A INPUT \
    -m conntrack \
    --ctstate ESTABLISHED,RELATED \
    -j ACCEPT
    iptables -i $outif -A INPUT -p tcp \
    --dport 80 -j ACCEPT
    iptables -i $outif -P INPUT DROP
    iptables -i $outif -P OUTPUT ACCEPT

    Начальная настройка ipfw

    outif="rl0"
    ipfw add allow ip from any to any \
    via lo0
    ipfw add allow ip from me to any \
    via $outif
    ipfw add allow tcp from any to me \
    established via $outif
    ipfw add allow tcp from any 80 \
    to me via $outif
    ipfw add deny ip from any to any \
    via $outif

    Начальная настройка pf

    outif="rl0"
    set skip on lo0
    block all
    pass out on $outif from $outif \
    to any keep state
    pass in on $outif proto from any \
    to $outif port 80

    Все три набора правил делают одно и то же - разрешают прохождение любого трафика по интерфейсу обратной петли (loopback), разрешают принимать пакеты уже установленных соединений (чтобы, например, браузер мог получить ответ на запрос к удаленному серверу), разрешают обращения на 80-й порт, блокируя все остальные, и разрешают любые коннекты наружу. Обрати внимание, что если в примерах iptables и ipfw мы явно задали правила для разрешения приема пакетов уже установленных соединений (established), то в случае с pf для этого достаточно было указать «keep state» в рулесете, разрешающем любые исходящие соединения.

    В общем-то, такая схема защиты сетевых сервисов от сканирования и проникновения отлично работает, но мы можем пойти дальше и настроить файер так, чтобы некоторые виды сканирования вообще не могли бы быть выполнены. Технически мы не можем сделать это в отношении обычного сканирования (флаги nmap "-sT", "-sS" и "-sU") просто потому, что в нем нет ничего криминального, однако нестандартные типы сканирования, такие как "-sN", "-sF" и "-sX", порождают пакеты, которые никак не могли быть созданы легальными приложениями.

    Поэтому без тени сомнения отбрасываем подобные соединения.

    Методы борьбы с экзотическими видами сканирования

    # Запрет FIN-сканирования
    Linux> iptables -A INPUT –p tcp \
    –m tcp \
    –-tcp-flags FIN,ACK FIN -j DROP
    FreeBSD>
    not established tcpflags fin
    # Запрет X-сканирования
    Linux>
    --tcp-flags FIN,SYN,RST,PSH,ACK,URG
    FIN,SYN,RST,PSH,ACK,URG \
    –j DROP
    FreeBSD> ipfw add reject tcp from any to any \
    tcpflags fin, syn, rst, psh, ack, urg
    # Запрет N-сканирования
    Linux> iptables -A INPUT –p tcp –m tcp \
    –-tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
    FreeBSD> ipfw add reject tcp from any to any \
    tcpflags !fin, !syn, !rst, !psh, !ack, !urg
    В OpenBSD все эти строки можно заменить простой записью в начале
    /etc/pf.conf:
    scrub in all

    Директива scrub активирует механизм нормализации пакетов, при котором фрагментированные пакеты воссоединяются, а пакеты с недопустимой комбинацией флагов отбрасываются. Кроме экзотических видов сканирования scrub позволяет защититься и от обмана систем обнаружения вторжений (посылка сильно фрагментированных пакетов) и некоторых видов DoS-атак.

    Для защиты от SYN/ACK-сканирования, инициируемого с помощью nmap-флага "-sS", мы можем использовать метод пассивного определения ОС (OS Fingerprint), доступный в брандмауэрах pf и iptables/netfilter (начиная с версии 1.4.6). Во время проведения обычного сканирования (флаг "-sT") nmap использует стандартный интерфейс сокетов операционной системы, поэтому такой скан почти ничем не отличается от потока обычных пакетов (ниже мы рассмотрим некоторые его отличия), однако при SYN/ACK-сканировании nmap формирует пакеты самостоятельно, поэтому они имеют некоторые черты, которые выдают их источник. Метод пассивного определения ОС позволяет идентифицировать эти пакеты и отбросить их с помощью стандартных правил файервола:

    OpenBSD> block in quick from any os NMAP
    Linux> iptables -I INPUT -p tcp -m osf --genre NMAP \
    -j DROP

    Модуль osf брандмауэра iptables/netfilter использует базу «отпечатков», собранную и обновляемую разработчиками OpenBSD (/etc/pf.os), поэтому оба этих правила должны привести к одинаковым результатам. Интересно так же и то, что они позволяют эффективно противодействовать функции определения ОС утилиты nmap (флаг "-O").

    Теперь мы защищены почти от всех видов сканирования, кроме стандартного и тупого "-sT". Как быть с ним? На самом деле все просто. Факт сканирования портов легко заметить, просто проанализировав логи файервола. Если за короткий промежуток времени происходило множество коннектов на различные порты - значит, нас сканировали. Осталось только переложить эту идею на правила брандмауэра. Для iptables есть отличный рецепт, который блокирует всех, кто слишком настойчиво стучится в нерабочие порты:

    Борьба со сканированием с помощью iptables

    # Проверка на стук в нерабочие порты (10 в час)

    --seconds 3600 --hitcount 10 --rttl -j RETURN
    # Вторая проверка на стук в нерабочие порты (2 в минуту)
    iptables -A INPUT -m recent --rcheck \
    --seconds 60 --hitcount 2 --rttl -j RETURN
    # Заносим адреса стучащихся в список
    iptables -A INPUT -m recent --set
    # Отбрасываем пакеты всех, кто превысил лимит на
    количество подключений
    iptables -P INPUT -j DROP

    Установив пакет xtables-addons, содержащий наработки проекта patch-omatic, мы получим доступ к модулю PSD (Port Scan Detect), реализованному по образу и подобию демона scanlogd. Все предыдущие строки могут быть легко заменены простым правилом:

    # iptables -A INPUT -m psd -j DROP

    К сожалению, в пакетных фильтрах ipfw и pf ничего подобного нет, но это не беда, потому как сканированию портов хорошо противодействует демон PortSentry и тот самый scanlogd.

    Запрет Icmp-сообщений

    Хорошей практикой также является запрет ICMP-сообщений, которые могут выдать дополнительную информацию о хосте или быть использованы для выполнения различных злонамеренных действий (например, модификации таблицы маршрутизации). Ниже приведена таблица со списком возможных типов ICMP-сообщений:

    Типы ICMP-сообщений

    • 0 - echo reply (echo-ответ, пинг)
    • 3 - destination unreachable (адресат недосягаем)
    • 4 - source quench (подавление источника, просьба посылать пакеты медленнее)
    • 5 - redirect (редирект)
    • 8 - echo request (echo-запрос, пинг)
    • 9 - router advertisement (объявление маршрутизатора)
    • 10 - router solicitation (ходатайство маршрутизатора)
    • 11 - time-to-live exceeded (истечение срока жизни пакета)
    • 12 - IP header bad (неправильный IPзаголовок пакета)
    • 13 - timestamp request (запрос значения счетчика времени)
    • 14 - timestamp reply (ответ на запрос значения счетчика времени)
    • 15 - information request (запрос информации)
    • 16 - information reply (ответ на запрос информации)
    • 17 - address mask request (запрос маски сети)
    • 18 - address mask reply (ответ на запрос маски сети)

    Как видишь, ответ на некоторые ICMP-сообщения может привести к разглашению некоторой информации о хосте, в то время как другие - привести к модификации таблицы маршрутизации, поэтому их необходимо запретить.

    Обычно выход во внешний мир разрешают ICMP-сообщениям 0, 3, 4, 11 и 12, в то время как на вход принимают только 3, 8 и 12. Вот как это реализуется в различных брандмауэрах:

    Запрет опасных ICMP-сообщений

    Linux> iptables -A INPUT -p icmp \
    -icmp-type 3,8,12 -j ACCEPT
    Linux> iptables -A OUTPUT -p icmp \
    -icmp-type 0,3,4,11,12 -j ACCEPT
    FreeBSD> ipfw add allow icmp \
    from any to $outif in \
    via $outif icmptype 3,8,12
    FreeBSD> ipfw add allow icmp \
    from $outif to any out \
    via $outif icmptype 0,3,4,11,12
    OpenBSD> pass in inet proto icmp \
    from any to $outif \
    icmp-type { 3, 8, 12 } keep state
    OpenBSD> pass out inet proto icmp \
    from $outif to any \
    icmp-type { 0, 3, 4, 11, 12 } \
    keep state

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

    Брутфорс

    Разведав информацию об открытых портах и ОС, взломщик предпринимает попытки проникновения в систему, которые могут быть основаны на эксплуатации дыр в сервисах, либо на подборе паролей. Предотвратить возможность взлома сервисов брандмауэр нам не поможет, однако затормозить процесс перебора паролей - легко. Для этого применяются возможности по ограничению количества пакетов, пришедших на машину с одного IP-адреса. Вот как это можно сделать с помощью iptables:

    Защита от брутфорса с помощью iptables

    # Цепочка для проверки соединений
    iptables -N brute_check
    # Блокировка адреса, если за 60
    секунд он инициировал более 2-х соединений

    --update --seconds 60 \
    --hitcount 3 -j DROP
    # Если нет - разрешаем соединение и
    заносим адрес в список
    iptables -A brute_check -m recent \
    --set -j ACCEPT
    # Очищаем цепочку INPUT
    iptables -F INPUT
    # Отправляем в цепочку brute_check
    всех, кто пытается подключиться к
    22-му порту

    --ctstate NEW -p tcp \
    --dport 22 -j brute_check
    iptables -P INPUT DROP

    То же самое можно проделать и с использованием pf:

    Защита от брутфорса с помощью pf

    # Создаем таблицу для брутфорсеров
    table persist
    # Блокируем всех, кто в нее попадает
    block in quick from
    # Помещаем в таблицу bruteforcers всех, кто инициирует более двух соединений на 22-ой порт в минуту
    pass in on $ext_if inet proto tcp to $outif \
    port 22 flags S/SA keep state \
    (max-src-conn-rate 60/2, \ overload flush)

    Брандмауэр ipfw не обладает достаточной функциональностью для эффективного противодействия брутфорсерам, поэтому его пользователи должны использовать инструменты более высокого уровня, такие как специальные модули PAM, системы обнаружения вторжений и программы вроде sshguard.

    Спуфинг

    Спуфинг (подмена адреса отправителя пакета) может быть использован для осуществления DoS-атак или обхода брандмауэра. В первом случае спуфинг дает огромное преимущество атакующему, так как существенно затрудняет реакцию на атаку (пакеты, приходящие с совершенно разными адресами отправителя, не так просто классифицировать и заблокировать) и затягивает процесс закрытия новых соединений (обычно поддельный адрес недостижим, поэтому закрытие соединения происходит лишь по истечению таймаута). Спуфинг, осуществляемый для обхода системы защиты, менее опасен и в большинстве случаев поддается контролю.

    Достаточно часто, блокируя внешние сетевые сервисы хоста, системные администраторы оставляют их открытыми для определенного диапазона адресов (например, для подключения со своей домашней машины). Вычислив один из этих адресов, взломщик может сформировать пакет, указав этот адрес в качестве обратного, и таким образом «проскользнуть » через брандмауэр. Далее он может угадать номера последовательности TCP-пакетов и сделать так, чтобы доверяющий обратному адресу сервис выполнил нужное ему действие. Это очень трудная в реализации атака, которая, тем не менее, может быть выполнена грамотным специалистом, а если речь идет о протоколе UDP, то это под силу и кулхацкеру.

    К счастью, защититься от подобных атак легко. Достаточно не открывать порты незащищенных сервисов во внешний мир, а в случае резкой необходимости использовать защитные системы самих сервисов (например, сертификаты ssh) или механизм «стука в порты» (о нем рассказано в конце статьи).

    Ситуация становится более сложной, когда дело касается сетевого моста, разделяющего внутреннюю и внешнюю сети (или две локальных сети). Доверительные отношения внутри локальной сети - обычное дело. Сервисы доступны всем, никакой аутентификации, шифрования и т.д. - просто лакомый кусочек для взломщика. Находясь во внешней сети, он может узнать сетевую маску внутренней сети и сформировать пакеты с соответствующим ей обратным адресом, что приведет к получению доступа ко всем ресурсам локалки. Это действительно опасная ситуация, но ее легко предотвратить с помощью правильной настройки брандмауэра или ОС.

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

    Linux> iptables -A INPUT -i $outif \
    -s 192.168.1.0/24 -j DENY
    FreeBSD> ipfw add deny ip from \
    192.168.1.0/24 to any via $outif
    OpenBSD> block in on $outif from \
    192.168.1.0/24 to any

    В качестве альтернативы или дополнительной меры защиты можно (и даже нужно) использовать специальные директивы ipfw и pf и настройки ядра Linux:

    Linux> echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
    FreeBSD> ipfw add deny ip from any to any not antispoof in
    OpenBSD> antispoof quick for $ext_if

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

    Полезности IPTABLES

    В конце статьи мы рассмотрим несколько интересных возможностей iptables/netfilter, которые могут оказаться полезными при защите сервера от проникновений. Начнем с механизма удаленного управления брандмауэром, получившего имя «стук в порты» (port knoking). Суть его заключается в том, чтобы заставить файервол выполнять определенные действия после подключения к заданному порту. Ниже приведен пример правил, открывающих порт SSH на 10 секунд после «стука» в 27520-ый порт:

    iptables и port knocking
    # Цепочка для проверки соединений на защищаемый порт
    iptables -N knock
    # Разрешаем соединение, если стук был в течение последних
    10 секунд
    iptables -A knock -m recent --rcheck --seconds 10 \
    -j ACCEPT
    # Очищаем INPUT
    iptables -F INPUT
    # Разрешаем все, что относится к уже установленным соединениям
    iptables -A INPUT -m conntrack \
    --ctstate ESTABLISHED,RELATED -j ACCEPT
    # Все попытки открыть соединение с 22-м портом отправляем
    на проверку в цепочку knock

    -p tcp --dport 22 -j knock
    # Заносим адрес стучащегося в 27520-й порт в список
    iptables -A INPUT -m conntrack --ctstate NEW \
    -p tcp --dport 27520 -m recent --set
    # При стуке в соседние порты удаляем адрес из списка
    iptables -A INPUT -m conntrack --ctstate NEW -p tcp \
    -m multiport --dport 27519,27521 -m recent --remove
    # Запрещаем все
    iptables -P INPUT DROP

    Третье с конца правило добавляет адрес стучащегося в список. Если та же машина в течение 10 секунд после стука обратится к 22-му порту, соединение будет установлено. Предпоследнее правило - защита от «перебора стука». Если злоумышленник попытается стучать последовательно во все порты с надеждой, что один из них откроет 22-й порт, сработает это правило, и его адрес будет удален из списка сразу после попадания в него.

    Вторая полезность iptables распространяется в пакете xtables-addons (patch-o-matic) и носит имя TARPIT. Это действие (такое же, как ACCEPT или DENY), которое «подвешивает» соединение, не позволяя атакующей стороне его закрыть. Соединение, пакеты которого попадают в TARPIT, будет благополучно установлено, однако размер окна будет равен нулю, благодаря чему удаленная машина не сможет отправлять данные, расходуя свои ресурсы, а соединение будет закрыто только по истечению таймаута. TARPIT можно использовать в экстренных случаях для защиты от DoS:

    # iptables -A INPUT -p tcp -m tcp -dport 80 -j TARPIT

    Или же для введения атакующего в заблуждение и борьбы против сканеров
    портов (только обычное TCP-сканирование, "-sT"):

    # iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    # iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
    # iptables -A INPUT -p tcp -m tcp -j TARPIT

    Эти правила создают видимость системы, в которой открыты все порты, однако при попытке подключения к любому из них (кроме 80 и 25) соединения будут «подвисать». Того же результата, но без «провисших» соединений, можно добиться с помощью действия DELUDE, которое правильно отвечает на все попытки инициации соединения, но посылает RST-пакет в ответ на все остальные пакеты. Для еще большего запутывания атакующего ты можешь использовать действие CHAOS, которое случайным образом активирует одно из двух описанных выше действий.

    Выводы

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

    Links

    • sf.net/projects/sentrytools - PortSentry
    • www.openwall.com/scanlogd - scanlogd

    Борьба с утечкой ресурсов

    При использовании действия TARPIT обязательно добавляй в конфиг следующее правило, иначе «провисшие» соединения будут съедать ресурсы при обработке подсистемой conntrack:

    # iptables -t raw -I PREROUTING -p tcp --dport 25 -j NOTRACK

    • Сергей Савенков

      какой то “куцый” обзор… как будто спешили куда то