Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 21.06.23 21:31
Оценка:
Когда я перешел на семерку еще с прошлым ноутбуком в 2012-м — сразу поставил в файрволе блокировку всего, кроме явно разрешенного, и создавал правила для отдельных служб/приложений. Когда переходил на нынешний ноутбук в 2016-м — тупо загрузил в реестр набор правил из прежней системы, и все прекрасно работало, как и было задумано. С тех пор много раз создавал и менял правила, всегда все работало, как положено.

Последние несколько дней пытаюсь запинать сетевой принтер Samsung CLP-365W, подключенный по WSD через WiFi точно так же, как и SL-M2070W, который прекрасно работал пять лет, но принтер категорически не хотел ничего печатать
Автор: Евгений Музыченко
Дата: 21.06.23
. Я уж подумал, что проблема в принтере, но на всякий случай решил внимательно просмотреть лог файрвола, и обнаружил там множество отказов в доступе к сети для службы Print Spooler (spoolsv.exe). Пошел смотреть правила и обнаружил, что правило для этой службы отключено. Но M2070W все это время успешно печатал, причем именно в режиме спулинга — он и в настройках включен, и задания в очередь ставятся, все, как положено. Возможно, спулер сам не ходил к принтеру, а работал с ним через драйвер.

Ладно, включил правило, но ничего не изменилось — по-прежнему шли отказы для spoolsv.exe. Удивился, попробовал задать службу не выбором из списка, а напрямую именем, а потом и путем к EXE. Путь гарантированно правильный — проверял вводом частичного пути, и затем достраивал выбором из выпадающего списка. Не помогло.

Убрал из Scope единственное ограничение на fakenet, разрешив спулеру вообще все, что можно — без толку. Создал три параллельных правила, указав в каждом процесс разными способами — не помогло.

Отказы прекратились и принтер стал печатать только после того, как я создал правило, разрешающее всем процессам делать что угодно в рамках fakenet (192.168.0.0/16).

Перезапускал файрвол, перегружал систему — без толку. Стоит запретить новое правило для всех процессов, как принтер перестает печатать, в логе идут отказы для spoolsv.exe.

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

Никаких других фильтров/антивирусов у меня нет.

Что за мистика с Print Spooler? Кто-нибудь сталкивался с подобной избирательностью?
Re: Firewall в Win 7 не пускает Print Spooler в сеть
От: nodir.temir https://github.com/tnodir
Дата: 22.06.23 15:39
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Что за мистика с Print Spooler? Кто-нибудь сталкивался с подобной избирательностью?


Какое правило файера блокирует программу можно посмотреть например в System Informer: вкладка Firewall.
Отредактировано 22.06.2023 15:39 nodir.temir . Предыдущая версия .
Re[2]: Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 22.06.23 17:08
Оценка:
Здравствуйте, nodir.temir, Вы писали:

NT>Какое правило файера блокирует программу можно посмотреть например в System Informer: вкладка Firewall.


Разве Filtering Engine отдает наружу сведения о том, какие правила подошли или не подошли? А если System Informer просто сам просматривает правила, то вряд ли обрабатывает их в точности так же, как и движок.

Ну и у меня по умолчанию все заблокировано, а правилами выдаются явные разрешения.

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

A system service that runs within its own unique .exe file and is not hosted by a service container is considered to be a program and can be added to the rule. In the same way, a program that behaves like a system service and runs whether or not a user is logged on to the computer is also considered a program as long as it runs within its own unique .exe file.


А когда посмотрел, как выглядят параметры правил в реестре, заметил, что там по-прежнему присутствует Svc=Spooler. Тогда пошел во вкладку Programs and Services, нажал кнопку Services, переставил выбор на "Apply to all programs and services", параметр Svc из списка исчез, и доступ к сети заработал.

Я так и не понял, почему так получается. Спулер фигурирует в ряде предопределенных правил, и там он тоже задан двояко — и как App, и как Svc — значит, это не должно мешать опознанию, но почему-то мешает.
Re[3]: Firewall в Win 7 не пускает Print Spooler в сеть
От: nodir.temir https://github.com/tnodir
Дата: 23.06.23 08:37
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, nodir.temir, Вы писали:


NT>>Какое правило файера блокирует программу можно посмотреть например в System Informer: вкладка Firewall.


ЕМ>Разве Filtering Engine отдает наружу сведения о том, какие правила подошли или не подошли? А если System Informer просто сам просматривает правила, то вряд ли обрабатывает их в точности так же, как и движок.


Filtering Engine репортит, какое правило заблокировало или дало доступ соединению.
По логу в System Informer можно узнать что именно блокирует программу, а не гадать.

Ещё все правила можно посмотреть с помощью WFP Explorer.

ЕМ>Ну и у меня по умолчанию все заблокировано, а правилами выдаются явные разрешения.


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


ЕМ>

ЕМ>A system service that runs within its own unique .exe file and is not hosted by a service container is considered to be a program and can be added to the rule. In the same way, a program that behaves like a system service and runs whether or not a user is logged on to the computer is also considered a program as long as it runs within its own unique .exe file.


Вопрос не по теме: А как вы даёте доступ к сети только определённым сервисам SvcHost.exe?
Отредактировано 23.06.2023 8:41 nodir.temir . Предыдущая версия . Еще …
Отредактировано 23.06.2023 8:39 nodir.temir . Предыдущая версия .
Отредактировано 23.06.2023 8:39 nodir.temir . Предыдущая версия .
Re[4]: Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.06.23 09:35
Оценка:
Здравствуйте, nodir.temir, Вы писали:

NT>Filtering Engine репортит, какое правило заблокировало или дало доступ соединению.


Хм, об этом где-то написано? Ни разу не встречал, и даже не слышал о таком.

Даже если и так, то в моем случае это никак не помогло бы — помог бы только протокол обработки каждого правила, в котором отражались бы результаты сравнений по каждому пункту. Нечто подобное выдает Apache по своим RewriteCond/RewriteRule, но и там часто лишь примерно понятно, в чем проблема, а остальное приходится додумывать.

NT>По логу в System Informer можно узнать что именно блокирует программу, а не гадать.


Я ж подчеркнул, что все программы блокирует общий режим (по умолчанию), задаваемый в настройках WFP. Дополнительные правила только разрешают доступ отдельным процессам/службам. Откуда System Informer возьмет подробности обработки всех правил?

NT>как вы даёте доступ к сети только определённым сервисам SvcHost.exe?


Как положено — указанием конкретной службы. Во многих предопределенных правилах указана и конкретная служба, и путь к процессу-контейнеру, но у меня в семерке работает и без процесса (только с Svc).
Re[5]: Firewall в Win 7 не пускает Print Spooler в сеть
От: nodir.temir https://github.com/tnodir
Дата: 23.06.23 10:08
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, nodir.temir, Вы писали:


NT>>Filtering Engine репортит, какое правило заблокировало или дало доступ соединению.


ЕМ>Хм, об этом где-то написано? Ни разу не встречал, и даже не слышал о таком.


Можно подключиться в уровням FWPM_LAYER_*_DISCARD/FWPM_LAYER_*_ESTABLISHED_* из callout драйвера, чтобы логировать события.

System Informer использует свой драйвер.

ЕМ>Даже если и так, то в моем случае это никак не помогло бы — помог бы только протокол обработки каждого правила, в котором отражались бы результаты сравнений по каждому пункту. Нечто подобное выдает Apache по своим RewriteCond/RewriteRule, но и там часто лишь примерно понятно, в чем проблема, а остальное приходится додумывать.


NT>>По логу в System Informer можно узнать что именно блокирует программу, а не гадать.


ЕМ>Я ж подчеркнул, что все программы блокирует общий режим (по умолчанию), задаваемый в настройках WFP. Дополнительные правила только разрешают доступ отдельным процессам/службам. Откуда System Informer возьмет подробности обработки всех правил?


Да, я думал, что проблема была с определением какое правило блокирует программу.

NT>>как вы даёте доступ к сети только определённым сервисам SvcHost.exe?


ЕМ>Как положено — указанием конкретной службы. Во многих предопределенных правилах указана и конкретная служба, и путь к процессу-контейнеру, но у меня в семерке работает и без процесса (только с Svc).


Спасибо. К сожалению, это не работает на Windows 10+.
Re[6]: Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.06.23 14:53
Оценка:
Здравствуйте, nodir.temir, Вы писали:

NT>Можно подключиться в уровням FWPM_LAYER_*_DISCARD/FWPM_LAYER_*_ESTABLISHED_* из callout драйвера, чтобы логировать события.


Понятно. Спасибо, буду иметь в виду на будущее.

NT>К сожалению, это не работает на Windows 10+.


Что именно не работает? Открыл параметры правил в Win 11 — там есть все то же самое, что и в Win 7, плюс дополнительные параметры.
Re[7]: Firewall в Win 7 не пускает Print Spooler в сеть
От: nodir.temir https://github.com/tnodir
Дата: 23.06.23 15:17
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Что именно не работает? Открыл параметры правил в Win 11 — там есть все то же самое, что и в Win 7, плюс дополнительные параметры.


Параметры есть, но указание сервиса не работает.

Напр., Simplewall, чтобы разрешить только нужные сервисы svchost.exe для обновления Windows, копирует svchost.exe.
Отредактировано 23.06.2023 15:19 nodir.temir . Предыдущая версия .
Re[8]: Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.06.23 16:52
Оценка:
Здравствуйте, nodir.temir, Вы писали:

NT>Напр., Simplewall, чтобы разрешить только нужные сервисы svchost.exe для обновления Windows, копирует svchost.exe.


Только что проверил в 10.0.22000.593 с DNS Client (Dnscache) — работает, как и положено. От указания svchost.exe не зависит — работает и с ним, и без него.

Как я уже говорил, многие предопределенные правила содержат и svchost.exe, и конкретную службу в контейнере. Если б это не работало, весь сетизм ломался бы напрочь.
Re[9]: Firewall в Win 7 не пускает Print Spooler в сеть
От: nodir.temir https://github.com/tnodir
Дата: 23.06.23 17:01
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Только что проверил в 10.0.22000.593 с DNS Client (Dnscache) — работает, как и положено. От указания svchost.exe не зависит — работает и с ним, и без него.


`Dnscache` работает, но не сервисы Windows Update:
"This is a bug in Windows 10 using the thread pool. It is a bug because the Microsoft application is not setting the security context individually per thread or is burying security setting and configuration for Windows update."
Отредактировано 23.06.2023 17:02 nodir.temir . Предыдущая версия .
Re[10]: Firewall в Win 7 не пускает Print Spooler в сеть
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.06.23 19:49
Оценка:
Здравствуйте, nodir.temir, Вы писали:

NT>"This is a bug in Windows 10 using the thread pool"


А, теперь понял. Если в каждом потоке не устанавливается соответствующий Service Tag, то WFP никак не может установить принадлежность потока службе.

Получается, глюк существует много лет, и до сих пор не починен?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.