Windows Server Core в Docker, Брандмауэр - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я работаю над проектом, в котором мне нужно докернизировать приложение, которое должно быть запущено в Windows.Это приложение, которое можно установить и настроить с помощью командной строки.В конце концов, вопрос применим к любому приложению.

Платформа, которую я выбрал, очевидно, Windows.Поэтому для начала я выбрал базовый образ mcr.microsoft.com / windows / servercore: 1803 .

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

То, что я сделал до сих пор.

FROM mcr.microsoft.com/windows/servercore:1803

# Add user 
RUN net user /add MyUser
RUN net user MyUser ABCdef123!
RUN net localgroup "Administrators" MyUser /add

После этого я проверил, могу ли я видеть правила FW, вызвав Get-NetFirewallRule.Это привело к ошибке:

Get-NetFirewallRule : There are no more endpoints available from the endpoint mapper.
At line:1 char:1
+ Get-NetFirewallRule
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_NetFirewallRule:root/standardcimv2/MSFT_NetFirewallRule) [Get-NetFirewallRule], CimException
    + FullyQualifiedErrorId : Windows System Error 1753,Get-NetFirewallRule

Я проверил службы, которые работают в данный момент, вызвав Get-Service, что привело к списку служб, содержащих эту строку: Stopped mpssvc Windows Defender Firewall.Похоже, FW даже не запущен.Я решил копать глубже и проверить реестр на наличие подсказок.Вызов этого cmd REG QUERY HKLM\SYSTEM\CurrentControlSet\services\MpsSvc /v Start дал мне значение 4, которое отключено.Поэтому я попытался включить его, установив его на 2, но безуспешно запустив службу после:

REG ADD HKLM\SYSTEM\CurrentControlSet\services\MpsSvc /v Start /t REG_DWORD /d 2 /f
net start MpsSvc

Результат:

System error 1058 has occurred.
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

Зависимые службы FW работают нормально (BFE,RDC и т.д.) Это просто не начнется.

Есть какие-нибудь подсказки от светлых умов?Заранее спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Если вы используете контейнер Windows Server, а не контейнер Hyper-V, у вас есть общее ядро, следовательно, вы используете брандмауэр хоста.

С Изоляция и безопасность сети :

В зависимости от того, какой контейнер и сетевой драйвер используется, списки ACL для портов применяются с помощью комбинации брандмауэра Windows и VFP.

Контейнеры Windows Server

В них используется Windowsбрандмауэр хоста (с сетевыми пространствами имен), а также VFP

Исходящий по умолчанию: ALLOW ALL

Входящий по умолчанию: ALLOW ALL (TCP, UDP, ICMP, IGMP) незапрошенный сетевой трафик

DENY ВСЕ другой сетевой трафик не из этих протоколов

...