|
Пример правил nftables с реализацией port knoсking для открытия доступа к SSH |
Автор: umask
[комментарии]
|
| Общий набор правил для nftables с реализацией техники "port knoсking", позволяющей организовать временное открытие сетевого порта к SSH только после предварительной попытки соединения к определённой последовательности портов (порты задаются в параметрах "define ssh_port_knock_[1234]").
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
|
Борьба с подстановкой фиктивных пакетов провайдером при помощи 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.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
|
Защищаем 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
|
|
|
|
|
|
Статистика сетевых соединений через 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 правило по номеру |
[комментарии]
|
| 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
|
|
|
|