Рейтинг:1

FreeBSD 13 PF блокирует джейл-трафик

флаг id

После обновления моей системы FreeBSD с 12.2 до 13.0-p3 PF блокирует весь трафик в мои тюрьмы. При отключении PF все работает нормально (кроме незащищенности ;))

Я попытался выяснить, какое правило блокирует этот трафик, установив «блокировать в журнале все», но, кроме некоторых очевидных многоадресных вещей, не появляется ничего, что могло бы объяснить, почему этот трафик заблокирован.

Опять же, раньше все прекрасно работало под версией 12.2. Я нашел несколько статей о том, что v13 теперь фильтрует через VLAN вместо lo0, но я не использую VLAN.

В каком направлении мне искать дальше?

Обновление 2021-07-15:

Для ясности: вот мой файл pf_rules:

установить возврат политики блокировки
установить агрессивную оптимизацию
установить пропуск на {lo0, lo1, lo2, lo3, lo4, lo5}
ext_if=hn0
ext_address="{ 192.x.x.x, 2001:981:x.x::x}"
ext_services = "{ssh, http, https, smtp, smtps}"
tcp_services = "{ ftp, ssh, домен, ntp, www, smtp, smtps, отправка, http, https, nfs}"
udp_services = "{домен, ntp, nfs}"
icmp6_types="{ 2, 128 }" # слишком большой пакет, эхо-запрос (ping6)
icmp6_types_ext_if="{ 128, 133, 134, 135, 136, 137}"
тюрьма_net = "192.168.1.0/24"
jail_services = "{mysql, http, smtp, 587, 3000}"
таблица <sshguard> сохраняется
вычистить все
nat передает $ext_if из $jail_net в любой -> $ext_address
заблокировать в журнале $ext_if proto tcp от <sshguard> до любого порта метка ssh "ssh bruteforce"
заблокировать в журнале все
быстро передать из <pf_whitelist> флаги состояния синпрокси S/SA
передать на $ext_if inet6 proto icmp6 все эхо-запросы типа icmp6 сохранить состояние
передать через $ext_if inet proto udp на порт 33433:33626
передать $ext_if inet6 proto udp на порт 33433:33626
перейти в $ext_if inet6 proto ipv6-icmp icmp6-type $icmp6_types сохранить состояние
перейти в $ext_if inet6 proto ipv6-icmp from any to { ($ext_if ), ff02::1/16 } icmp6-type $i
cmp6_types_ext_if сохранить состояние
передать по $ext_if proto tcp с любого на порт $ext_address $ext_services сохранить состояние
передать в $ext_if inet6 proto tcp с любого порта $ext_address $ext_services сохранить состояние
передать через $ext_if inet proto tcp на любой порт $tcp_services сохранить состояние
передать через $ext_if inet6 proto tcp на любой порт $tcp_services сохранить состояние
пройти через $ext_if inet6 proto udp на любой порт $udp_services
передать proto udp на любой порт $udp_services сохранить состояние
передать прото tcp с любого на порт $jail_net $jail_services сохранить состояние
передать proto tcp из $jail_net на любой порт $jail_services сохранить состояние
передать inet proto icmp от любого к любому

Это работало много лет до FreeBSD 13.

drookie avatar
флаг za
`kldload pflog && ifconfig pflog0 up && tcpdump -netti pflog0` ? И обновите свой вопрос с результатами.
GTeley avatar
флаг id
Как я уже сказал, я проверял журналы (с помощью tcpdump), но, кроме некоторых вещей UDP и многоадресной рассылки, ничего не появляется: 1626265392.763303 правило 1/0 (совпадение): блокировка на hn0: 192.168.178.56.138 > 192.168.178.255.138: ПАКЕТ NBT UDP (138) 1626265398.905896 правило 1/0 (совпадение): блокировка на hn0: fe80::98af:7b38:affd:bc9f > ff02::16: HBH ICMP6, отчет прослушивателя многоадресной рассылки v2, 4 групповые записи, длина 88
флаг br
Мне пришлось убрать флаг «синпрокси».
Рейтинг:0
флаг br

Цитата из TCP-SYN-прокси:

| Прокси-сервер SYN не будет работать, если PF работает на мосту(4).

Удалить флаг синпрокси

быстро передать из <pf_whitelist> флаги состояния синпрокси S/SA

Попробуйте вместо этого

быстро передать из <pf_whitelist> флаги S/SA сохранить состояние

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

быстро перейти от <pf_whitelist> к флагам $jail_net S/SA сохранить состояние
быстро передать из <pf_whitelist> флаги состояния синпрокси S/SA
GTeley avatar
флаг id
Привет Владимир, Спасибо за ваш вклад. К сожалению, это не помогает. Кроме того: я предполагаю, что это нечто большее. Создание нового джейла (в целях тестирования) не сработало, потому что ezjail-admin не смог создать ссылки на /bin, /sbin и т.д. Поэтому мне нужно углубиться в это, чтобы выяснить, что еще не так в версии 13. Может быть, они должны были пропустить 13 и сразу перейти к 14 ;)
GTeley avatar
флаг id
Да, с FreeBSD 13 и джейлами определенно что-то не так. Даже в тюрьме (тех, которые пришли из 12.2) я больше не могу получить доступ к службам по «внешнему» адресу, который они прослушивают. Итак, если локальная служба HTTP работает на порту 3000, в тюрьме 12.2 я могу получить к ней доступ, например. 'завиток -v 192.168.1.101:3000' В системе, обновленной до v13, это больше не работает. Это (частично?) объясняет, почему в de pf_log нет заблокированных попыток доступа.
флаг br
Жаль это слышать. FWIW, я использую [роль Ansible] (https://github.com/vbotka/ansible-freebsd-jail). Мне пришлось снять флаг «синпрокси» только при переходе с 12 на 13.
GTeley avatar
флаг id
Я установил с нуля старый сервер IBM x3400 M3 с FreeBSD 13, создал test_jail, установил некоторые службы и все работает нормально. Так что это должно иметь какое-то отношение к процессу обновления. Поскольку все, что я вижу, идентично в настройке и конфигурации (кроме того, что это виртуальная машина), очень сложно сказать, что пошло не так.
флаг br
Я понимаю. Вы хотите закрыть этот вопрос и ответ?
Рейтинг:0
флаг id

Очевидно, это не имело никакого отношения к PF, а было связано с процессом обновления с версии 12.2 до 13.0. Установка версии 13 на физический сервер и создание джейла с некоторыми сервисами сработало нормально. Так что это может иметь какое-то отношение к обновлению на виртуальном сервере, будь то Hyper-V или что-то еще.Я до сих пор не знаю, так как в настройках и конфиге все выглядит одинаково (большую часть я скопировал с обновленного виртуального сервера, где это не работает)

Ответить или комментировать

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