The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Пакетные фильтры в Linux: iptables, ipchains

   Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетные фильтры в Linux: iptables, ipchains

----* Пример правил nftables с реализацией port knoсking для открытия доступа к SSH   Автор: umask  [комментарии]
  Общий набор правил для nftables с реализацией техники "port knoсking", позволяющей организовать временное открытие сетевого порта к SSH только после предварительной попытки соединения к определённой последовательности портов (порты задаются в параметрах "define ssh_port_knock_[1234]").
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Прозрачный межсетевой экран с маршрутизатором (доп. ссылка 1)   Автор: Владимир Олейник  [комментарии]
  ++ Предисловие
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Обход блокировки трафика провайдером при помощи iptables   [комментарии]
  Многие провайдеры и корпоративные системы инспектирования трафика применяют для блокирования доступа к сайтам подстановку пакетов, перенаправляющих браузер пользователя на страницу с информацией о блокировке, при этом не обрывая изначально установленное соединение к заблокированному ресурсу.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Борьба с SYN-флудом при помощи iptables и SYNPROXY (доп. ссылка 1) (доп. ссылка 2)   [комментарии]
  Начиная с ядра Linux 3.12 и инструментария IPTables 1.4.21 в iptables доступна поддержка новой цели - SYNPROXY, позволяющей в десятки раз увеличить интенсивность обработки SYN-пакетов при противостоянии таким атакам, как SYN Flood, SYN-ACK Flood и ACK Flood. Например, если в обычной конфигурации ядра сервер на базе CPU Xeon X5550 способен обработать приблизительно 200 тысяч SYN- или ACK-пакетов в секунду, то при включении SYNPROXY производительность возрастает до нескольких миллионов, чего достаточно для отражения небольших атак без привлечения специализированного оборудования.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Отключение Firewalld и возвращение к iptables в RHEL/CentOS 7   Автор: Базиль  [комментарии]
  Использование применяемой по умолчанию в RHEL/CentOS 7 надстройки Firewalld не всегда очевидно, поэтому бывает удобнее вернуться к классическим скриптам работы с пакетным фильтром.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Блокирование попыток эксплуатации heartbeat-уязвимости в OpenSSL средствами iptables (доп. ссылка 1)   [комментарии]
 
Пример блокирования  критической уязвимости CVE-2014-0160 в OpenSSL 1.0.1,
позволяющей получить содержимое памяти удалённых серверных и клиентских приложений.


Отражаем в логе все heartbeat-запросы при помощи iptables и модуля u32:

   iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j LOG --log-prefix "BLOCKED: HEARTBEAT"

Блокируем heartbeat-запросы:

   iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP

Отслеживаем возможные атаки при помощи Wireshark:

   tshark -i interface port 443 -R 'frame[68:1] == 18'
   tshark -i interface port 443 -R 'ssl.record.content_type == 24'
 
----* Использование xtables-модуля xt_bpf для фильтрации через BPF в Linux   Автор: Roman Timofeev  [комментарии]
  В ядре Linux 3.9 добавили xt_bpf - аналог нетграф-ноды ng_bpf из FreeBSD. Без использования правил iptables на платформе x86_64 BPF-правило демонстрирует производительность 40K (40 GBps) netperf TCP_STREAM, после вставки 100 BPF-правил производительность составляет 28K.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Использование нескольких сетевых стеков в Linux   Автор: Roman Timofeev ( ^rage^ )  [комментарии]
  В linux относительно давно появилась такая замечательная вещь, как неймспейсы (namespaces). Основное применение данной технологии - контейнерная виртуализация, но и на маршрутизаторе можно придумать много разных применений, так как среди неймспейсов есть "network namespaces".
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Интерактивный firewall в Linux   Автор: tux2002  [комментарии]
  Linux обладает отличными средствами фильтрации сетевого трафика, но обычно в нём строят статический firewall. В данной статье я опишу идею и реализацию интерактивного firewall, который в случае подозрительной активности выводит пользователю окно с предложением блокирования трафика или игнорирования предупреждения.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Создание модуля для iptables, изменяющего ID пакета (доп. ссылка 1)   Автор: xlise  [комментарии]
  Данная статья основывается на материале "Разработка Match-модуля для iptables своими руками" (http://www.linuxjournal.com/article/7184), но код работает на ядрах 2.6.20+.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Совместное использование SELinux и iptables (доп. ссылка 1)   [комментарии]
  Используя утилиту [[http://james-morris.livejournal.com/11010.html Secmark]] можно организовать назначение в правилах iptables SELinux-меток для сетевых пакетов, примерно также как осуществляется назначение меток для локальных системных ресурсов. Подобное может использоваться для предотвращения доступа сторонних процессов, не находящихся под контролем SELinux, к определенному классу пакетов. Например, можно указать что запросы на 80 порт (метка http_packet_t) может отправлять только определенный web-браузер (или процесс, имеющий SELinux-метку http_t) и никто иной.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Простой интерактивный firewall в Linux   Автор: tux2002  [комментарии]
  Недавно на форуме спрашивали есть ли интерактивный firewall в Linux и многие отвечали, что нет. Ниже простая заготовка скрипта, следящего за событиями в логе, в случае подозрительной активности выводящего пользователю окно с предложением блокирования трафика или игнорирования предупреждения.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Установка ipfw и dummynet в Linux и Windows (доп. ссылка 1)   [комментарии]
  Не многие знают о том, что классический пакетный фильтр FreeBSD ipfw и система ограничения пропускной способности dummynet были успешно портированы в Linux и Windows.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Round Robin балансирование IP адресов исходящих соединений средствами iptables (доп. ссылка 1)   Автор: Stanislav S. Osipov  [комментарии]
  Данное решение отличается изящностью, так как реализует все средствами iptables. Синтаксис: на машине, которая должна балансировать исходящие соединения, выполнить скрипт balancer.sh:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Защита от bruteforce средствами iptables (доп. ссылка 1)   Автор: Владимир  [комментарии]
  В заметке приведены различные варианты защиты от bruteforce-атак, на примере блокирования последовательного подбора паролей через ssh.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Защита от спамерских и bruteforce-атак с помощью iptables   Автор: Забудкин Лев Мирославович  [комментарии]
  Сохраняем в файл скрипт:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Защищаем http-proxy от пробрасывания http-туннеля средствами iptables (доп. ссылка 1)   Автор: Владимир   [комментарии]
  При пробрасывании http-туннеля через http-прокси, http-заголовок пакета имеет аномально маленький размер, порядка 80-90 байт, так как передается лишь минимальный набор данных. Заголовок передаваемых браузером запросов обычно не бывает меньше 350 байт. Основываясь на данной особенности можно отфильтровать проброшенных поверх http-прокси туннели.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Настройка ufw в Ubuntu (доп. ссылка 1)   Автор: Eugene Shelepov  [комментарии]
  Начиная с версии Ubuntu 8.04 в ее состав по умолчанию включена новая упрощенная оболочка для работы с файрволом - ufw (Uncomplicated firewall - "незамысловатый" брэндмауер). Как известно Linux по умолчанию имеет очень мощный встроенный сетевой фильтр - netfilter.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Защита от трассировки маршрутов с помощью iptables (доп. ссылка 1)   Автор: Владимир  [комментарии]
 
Для того, чтобы затруднить исследование сети (локальной, DMZ и т.д.) можно
заблокировать все пакеты с низким значением TTL. Пример блокирования пакетов с
TTL меньше 5:

   iptables -A INPUT -p all -m ttl --ttl-lt 5 -j DROP

или

   iptables -A FORWARD -p all -m ttl --ttl-lt 5 -j DROP
 
----* Активное противодействие сканированию портов (доп. ссылка 1)   Автор: Владимир  [комментарии]
  Имеется сервер на нем ssh и web. Ниже приведён простой пример правил для блокирования на определенное время IP, обратившегося по неактивному номеру порта.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Защищаем SSH при помощи технологии "Port Knocking" (доп. ссылка 1) (доп. ссылка 2)   Автор: Дмитрий  [комментарии]
  Реализация идеи динамического открытия доступа к 22 порту, при предварительном обращении telnet-ом на определенный сетевой порт (в примере 333 - открыть доступ и 334 - закрыть). Идея реализована средствами iptables, без привлечения дополнительных утилит и анализаторов логов.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Методы сокрытия сервисов средствами iptables на примере sshd (доп. ссылка 1) (доп. ссылка 2)   Автор: Владимир  [комментарии]
  Все действия в нижеизложенной статье выполнялись в debian 5, стандартными средствами. Методы предназначены для сокрытия сервисов.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Использование L7-filter в Linux (доп. ссылка 1)   Автор: Сергей Яремчук  [комментарии]
  Проект l7-filter (http://l7-filter.sf.net) дает возможность Netfilter идентифицировать пакет на прикладном уровне данных, основываясь на его содержимом, и классифицировать пакеты по их назначению, без привязки к номеру порта. В настоящее время поддерживаются протоколы HTTP и FTP; P2P сети (Kazaa, BitTorrent, eDonkey2000, FastTrack); IM-системы (AIM/Jabber/IRC/MSN); VoIP/Skype; VPN; игры (Battlefield, CS, Doom3, WoW); файлы (exe, mp3) и даже сетевые черви - Code Red и Nimda.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Корректировка вывода arptables-save в Debian Lenny   Автор: аноним  [комментарии]
  Суть проблемы: в Debian Lenny arptables-save генерирует данные, синтаксически и семантически некорректные с точки зрения arptables-restore.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Ограничение возможностей ssh туннеля при помощи iptables   Автор: Avatar  [комментарии]
  Использование туннелей на основе ssh сейчас широко распространено. И многие используют его как универсальное решение для организации туннелей внутрь локальной сети для доступа к различным сервисам. И в связи с этим очень часто возникает вопрос "А как ограничить возможности такого туннеля".
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Скрипт для блокировки в iptables целых стран (доп. ссылка 1)   Автор: Vivek Gite  [комментарии]
  Скрипт для организации блокировки диапазонов IP адресов в привязке к названию страны. Например, можно использовать для блокирования всех непрофильных сайту стран в моменты DDoS атаки или запретить приход почты для стран с которыми явно не ведется переписка.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Поддержка TARPIT для RHEL 5/CentOS 5   Автор: Андрей  [комментарии]
  Для RHEL 5 / CentOS 5 исходники модуля TARPIT можно загрузить здесь:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Удаление iptables правил по их номерам   [комментарии]
 
Для отображения порядковых номеров iptables правил в списке необходимо
использовать опцию --line-numbers.
Например, просмотрим содержимое таблицы трансляции и правила, влияющие на
пересылку пакетов между интерфейсами:

   iptables -L POSTROUTING -t nat -n -v --line-numbers
   iptables -L FORWARD -n -v --line-numbers

Удалим несколько записей по номеру:

   iptables -D FORWARD 55
   iptables -t nat -D POSTROUTING 15

Цепочку следует явно указывать, так как номера уникальны только в рамках каждой цепочки.
Удалять следует внимательно и по одному элементу, так как после удаления
следующие номера сдвигаются!
Т.е., если вы хотели удалить в списке строки 15 и 25, удалять нужно, начиная с большего номера,
иначе 25 запись после удаления 15 сменит номер на 24.
 
----* Обход блокировки BitTorrent трафика, через отправку фиктивных RST пакетов (доп. ссылка 1)   Автор: tuxtraining.com  [комментарии]
  Некоторые сетевые операторы, например Comcast, используют ПО Sandvine для нарушения работы BitTorrent.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как заблокировать через iptables пакеты отправленные из определенной ОС (доп. ссылка 1)   Автор: Evgeniy Polyakov  [комментарии]
  Модуль ost был написан для использования в iptables правилах результатов пассивного определения типа операционной системы, из которой был отправлен TCP SYN пакет.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как увеличить размер таблицы контроля сессий ip_conntrack в Linux   [комментарии]
 
Если ядро ругается "kernel: ip_conntrack: table full, dropping packet.", причину флуда 
(скорее всего вирус или сканирование портов) можно найти по списку /proc/net/ip_conntrack
Если просто общая загрузка большая, увеличить размер таблицы можно через /proc/sys/net/ipv4/ip_conntrack_max

Также можно увеличить размерность хэша через параметр  hashsize модуля ip_conntrack:
/etc/modules.conf:
   options ip_conntrack hashsize=N

Более тонкий тюнинг можно произвести через переменные определенные в /proc/sys/net/ipv4/netfilter
 
----* Как вести лог блокировок в iptables и ipfw   [комментарии]
  Linux:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Статистика сетевых соединений через syslog и iptables   Автор: umask  [комментарии]
  Часто недовольные пользователи приходят и просят дать им распечатку логов доступа в интернет. Отчасти это позволяет сделать squid, но только при прозрачном проксировании, да и то логи только по http-протоколу.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Скрипт для автоматизации настройки iptables фильтра для локальной сети (доп. ссылка 1)   Автор: Константин Брызгалов  [комментарии]
  На разных машинах в моей локальной сети накопилась куча программ, которым нужен был выход в интернет напрямую. У каждой свой набор портов. Захотелось на входе иметь минимальную конфигурацию, описывающую ресурсы, а на выходе набор разрешающих правил для iptables. В основном были клиент-банки - поэтому и такая терминология в программе.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Лимитирование числа запросов в единицу времени через iptables (доп. ссылка 1)   Автор: Steve  [комментарии]
 
Разрешаем производить только 4 коннекта к 22 порту в течении 60 секунд:

   iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

   iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent \
      --update --seconds 60 --hitcount 4 -j DROP
 
----* Ограничение трафика через iptables (доп. ссылка 1)   Автор: Николай Малых  [комментарии]
  ipt_limit - общее ограничение по срабатываний правила
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Примеры возможностей iptables открывающихся после установки POM (patch-o-matic) (доп. ссылка 1)   [комментарии]
  Фильтрация по строковой маске:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как удалить iptables правило по номеру   [комментарии]
 
iptables -L INPUT --line-numbers
iptables -D INPUT номер

iptables -t nat -L POSTROUTING --line-numbers
iptables -t nat -D POSTROUTING номер
 
----* Как ограничить пропускную полосу для пакетов помеченных меткой через MARK.   Автор: Denis Fedorishenko (NuclearCat)  [комментарии]
 
Сделать MARK, и загнать все такие трансферы в какой-либо класс шейпера. 
Т.е. если например помеченные пакеты - все их отнести к классу 1:51 где
скорость ограничена от 32К до 64К:
  tc filter add dev eth1 parent 1:0 protocol ip prio 100 handle 51 fw classid 1:51
  tc class add dev eth1 parent 1:2 classid 1:51 htb rate 32Kbit ceil 64Kbit
  tc qdisc add dev eth1 parent 1:51 handle 51 sfq perturb 10
 
----* Как запретить пользователям качать большие файлы   Автор: Denis Fedorishenko (NuclearCat)  [обсудить]
 
- Собираем поддержку connbytes в patch-o-matic.
- Добавляем правило в firewall, например:
     iptables -A FORWARD --connbytes 100000 -j REJECT
- теперь все TCP сессии более 100 Кбайт будут "обрезаны", необходимо добавить 
исключения для протоколов типа ssh, обычные "долгоживущие" чаты и т.п.
 
----* Борьба с Kazaa и прочим вредным трафиком путем вырезания пакетов по маске   Автор: Denis Fedorishenko (NuclearCat)  [комментарии]
 
- собираем поддержку "string" в patch-o-matic.
- смотрим на протокол Kazaa, в заголовках содержится:
  HTTP/1.0 503 Service Unavailable.Retry-After: 3..X-Kazaa-Username: BlazeTre
- добавляем в firewall строчку - iptables -A FORWARD -m string --string "X-Kazaa-" -j REJECT
 
----* Как в Linux перебросить соединение через NAT во внутреннюю сеть (доп. ссылка 1)   Автор: Dimez  [комментарии]
 
Первый путь - пробрасывание только порта:
  1) iptables -t nat -A PREROUTING -p tcp -d EXT_R_IP --dport 10000 -j DNAT --to-destination LOCAL_IP:80
  2) iptables -A FORWARD -i eth0 -d LOCAL_IP -p tcp --dport 22 -j ACCEPT

Второй вариант - выброс всей машины наружу (если есть свободные адреса):
  1) ifconfig eth0:0 NEW_IP netmask NETMASK broadcast BROADCAST
  2) route add NEW_IP gw GW netmask 0.0.0.0 metric 1 dev eth0:0
  3) iptables -t nat -A PREROUTING -p tcp -d NEW_IP -j DNAT --to-destination LOCAL_IP
  4) iptables -A FORWARD -i eth0 -d LOCAL_IP -j ACCEPT

Обозначения: EXT_R_IP - внешний IP роутера, LOCAL_IP - внутренний IP машины,
которую хочешь выбросить
  NEW_IP - новый IP на который хочешь посадить машину, которая имеет локальный LOCAL_IP
  NETMASK, BROADCAST, GW - внешние netmask, broadcast и gateway
 
----* Пример настройки NAT с привязкой к IP под Linux   [комментарии]
 
Пример настройки NAT с привязкой к IP под Linux

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -o eth0 -j SNAT --to-source 212.23.98.45

или (без привязки к IP)

  ipchains -A forward -j MASQ -s 192.168.0.0/16 -d 0.0.0.0/0
или (через iproute2)

  ip rule add from 10.0.1.0/24 nat 254.147.38.14

Другой способ трансляции адресов:

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -j MASQUERADE
 
----* Как ограничить через iptables максимальное число одновременных соединений с одного IP.   [комментарии]
 
# Максимум 10 одновременных соединений к 80 порту с одного IP
  iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT
# Блокируем на стадии SYN
  iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10
# 20 соединений на сеть класса С
  iptables -p tcp --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT 
  
 
----* Как посмотреть статистику по PREROUTING цепочкам в iptables.   [комментарии]
 
> Делаю:
> iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128
> По iptables -L ничего не показывается.
Используйте: iptables -t nat -L
 
----* Как настроить пакетный фильтр для фильтрации по содержимому пакетов   [комментарии]
 
Следующие правила блокируют прохождение пакетов, данные в которых содержат подстроку virus.exe
и ведут лог пакетов с строкой secret внутри:
iptables -A INPUT -m string --string "secret" -j LOG --log-level info --log-prefix "SECRET"
iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --string "virus.exe"
# Block Code Red
iptables -I INPUT -j DROP -p tcp -m string --string "cmd.exe"
# Block Nimda
iptables -I INPUT -j DROP -p tcp -m string --string "root.exe"
iptables -I INPUT -j DROP -p tcp -m string --string "default.ida"
 
----* Как настроить NAT (транслятор адресов) для нормальной работы с FTP и ICQ в Linux   [комментарии]
 
iptables:
   modprobe iptable_nat
   modprobe ip_conntrack_ftp
   modprobe ip_nat_ftp                     
   modprobe ip_nat_irc
ipchains:
   modprobe ip_masq_ftp
   modprobe ip_masq_raudio
   modprobe ip_masq_irc
   modprobe ip_masq_icq
 
----* Список интересных iptables модулей-расширений. (доп. ссылка 1)   [обсудить]
  Фильтрация по MAC (mac):
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Можно ли отфильтровывать пакеты (вести лог) в зависимости от UID пользователя ?   [обсудить]
 
Для FreeBSD:
ipfw add count tcp from any to not 192.168.1.0/24 uid 231
uid user (или gid group) - под правило попадают все TCP или UDP пакеты посланный 
или принятые пользователем user (группой group).
В Linux в ядрах 2.4.x в iptables можно использовать модуль owner.
 
----* Ограничение трафика через iptables (доп. ссылка 1)   Автор: Z0termaNN  [комментарии]
 
iptables --new-chain car
iptables --insert OUTPUT 1 -p tcp --destination-port 25 -o eth1 --jump car
iptables --append car -m limit --limit 20/sec --jump RETURN
iptables --append car --jump DROP
 

 Версия для печати





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру