С помощью подсистемы Windows для Linux 2 (WSL2) обходятся ограничения штатного файервола Windows 10



    По информации портала Bleeping Computer, в настоящее время подсистема WSL 2 обходит правила блокировки встроенного брандмауэра Windows 10. В то время, как первая версия WSL полностью соблюдает все ограничения Windows Advanced Firewall (WAF).

    Первая версия WSL использует ядро, совместимое с Linux, которое переводит систему Linux в вызовы, работающие с ядром Windows NT. При использовании WSL любой сетевой трафик фильтруется через WAF и блокировка отрабатывает штатно.

    WSL2 использует виртуальную сеть Hyper-V. Виртуальный сетевой адаптер Hyper-V передает трафик без блокировки и не позволяет брандмауэру хоста проверять его пакеты. Если в системе с помощью WAF выставить блокировку всего исходящего трафик на порты 80 (HTTP) и 443 (HTTPS), то при использовании браузеров в Windows 10 нельзя будет выполнить подключение к веб-сайтам. В WSL 2, проверено на дистрибутиве Ubuntu, эта блокировка не работает и сайты доступны.

    Единственная защита в этой ситуации — использование брандмауэра Linux, например, iptables. С его помощью можно контролировать сетевой трафик в системе. Нужно настраивать в нем такие же правила, как в брандмауэре Windows, чтобы реплицировать уровень безопасности Windows.
    sudo iptables -A OUTPUT -p tcp --match multiport --dports 80,443 -j DROP
    Bleeping Computer задал Microsoft вопрос по этой ситуации, но ответа компания не предоставила.

    Microsoft с начала года занимается улучшением поддержки Linux в Windows 10 с помощью подсистемы Windows для Linux (WSL). Предлагаемое Microsoft для WSL2 ядро основано на выпуске ядра Linux 4.19. В WSL добавлена поддержка компьютерных вычислений на GPU. Разработчики могут полноценно использовать свои аппаратные ресурсы, например, для машинного обучения, используя NVIDIA CUDA и DirectML. В Linux-окружении можно запустить TensorFlow и PyTorch. В начале сентября этого года Microsoft добавила в подсистему Windows для Linux 2 (WSL2) возможность монтирования дисков. С помощью WSL2 можно запускать в Windows 10 не только консольные приложения, но и линуксовые GUI-программы.
    См. также:

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 50

      +21
      Это логично и здорово, незачем оборачивать wsl2 виндовым файрволом.
        +7
        Это зависит от точки зрения, если воспринимать WSL2 как отдельную ОС то да, но это не отдельная ОС а среда живущая внутри Вин 10 и имеющая доступ к сервисам и дискам…
        В неумелых руках это уязвимость, я предпочитаю использовать для экспериментов отдельные виртуалки Hyper-V.
          +7
          wsl2 и есть по сути отдельная виртуалка или виртуалки Hyper-V с удобным api
            0
            По своему назначению (и названию, это подсистема для винды) это все таки часть системы и логично ей подчиняться правилам этой системы. Как оно там реализовано и в какой виртуалке пофиг абсолютно. Тем более что корней этой виртуалки я чего-то не вижу. Без оснастки hyper-v вообще не понять, есть ли что-то в системе.
          0
          Я тоже так считаю, но соответствующая опция в wsl сама собой напрашивается, хотя бы потому, что раньше оно вроде как иначе работало. Одна-единственная галочка плюс пояснение о деталях работы сняли бы кучу вопросов.
          –17

          Нельзя в одну упряжку впрячь и Окна и пингвина. Ибо сие несуразно есть. ;-)

            +3

            Вы это ребятам из Azure скажите, а то они не в курсе.

            +3

            Ну добавят они автоматическое и, скорее всего, кривое копирование правил из винды в iptables — легче будет разве? По-моему, то, что они не стали влезать в iptables фича, а не баг.

              +1

              В hyperv vswitch давно есть возможность на уровне каждого виртуального порта фильтровать трафик. Без всяких кривостей, так что приделают просто проброс правил fw к виртуалкам wsl и все

              +5

              По-моему, установивший wsl человек должен сам понимать, что делает.

                +1

                Почему должен понимать? Я вот недавно качал докер для десктопа, там написано было обновить wsl2, про политики фаерволов ни слова

                  –4

                  Почему должен понимать? А почему не должен?
                  имхо если уж ты берешь в руки нож (wsl2), то должен понимать, что можно порезаться. Берешь докер — тоже нужно понимать, что это не виндовый инструмент.
                  Давайте повышать уровень осознанности и делать систему для умных, а не для дураков. А то так можно дойти до выпуска только тупые ножей, чтобы никто не порезался.

                    0

                    Вы не поверите… Google "столовые ножи Ришелье".

                      +1
                      Ну вот я недавно начал читать книгу по докеру и куберу от oreilly, там для винды советуют брать докер десктоп- для его корректной работы требуется установить wsl2. Там нигде не написано что wsl2 дырявая, что ее надо как-то конфигурировать или что это такое вообще, ее ставишь аля какой-нибудь directX для игр и спокойно работаешь с докером дальше.
                        +1

                        сорри, а вы хотите, чтобы вам на каждой микроволновке писали "кошек сушить нельзя"?
                        Меня пугает, что конечный пользователь не хочет думать самостоятельно, а ждет, что за него обо всём подумают авторы, производители, любой кто-то другой, но не он сам.
                        Разве wsl2 дырявая?

                          0
                          Ну логично что если я ставлю докер я изучаю докер и его фичи, что такое wsl2 кроме того что это какое-то там ядро линукса в винде я не знаю. Откуда мне например знать что его надо дополнительно конфигурировать через iptables как в статье, чтобы он не был дырявым? Почему изначально его не поставлять с нужным конфигом?
                            0

                            А в этой вашей книге случаем не написано, что докер дырявый? Или Linux ядро? Зачем вам знать о конфигурировании Linux, о каких-то там namespaces, cgroups, следить за появлением уязвимостей. Почему RedHat не поставляет готовых конфигов.

                              0
                              Только вот на линуксе докер подчиняется правила фаервола системного. Люди и говорят, что так же должно быть и на винде. Не должен человек думать, чего там за виртуалка или не виртуалка, через какие подсистемы сисколы ходят, как трафик от устройства в контейнер попадает. Завтра выйдет WSL3 и что, опять гадать, как там его реализовала МС? WSL2 это подсистема винды, вот и должна она играть по правилам винды. Т.е. подчиняться тем правилам, которые прописаны в фаерволе этой самой винды. Сделать это будет не так уж сложно.
                                0

                                А докер и в wsl подчиняется правилам линуксового файрвола. Внезапно потому, что докера не существует вне Linux. А так берите выше, что уж там. Любая линуксовая программа в wsl2 тогда должна подчиняться виндовым политикам, а дефрагментатор должен уметь ext4.

                                  0
                                  Я не буду брать выше, потому что это абсурд и увод обсуждения не в ту сторону. Докер не докер, не имеет значения. Трафик приходит на машину, которая работает на винде. В винде есть фаервол. На винду я ставлю wsl2 (не виртуалку я ставлю, где у меня есть четкий выбор, каким образом сетевая карта моего пека пробрасывается в виртуалку, а компонент винды. Встроенный и поддерживаемый МС, как подсистема винды), и какого-то хрена фаервол он игнорирует. Это нарушение ожиданий, грубое и опасное. К счастью, не настолько, чтобы прямо бить тревогу, потому что wsl2 пока еще не инструмент обычного пользователя. Это так же предельно очевидно, как нарушений абстракций в программировании, когда подробности реализации чего-то просачиваются туда, куда не должны. Совершенно по боку как работает WSL2. Это подсистема винды, а значит она должна максимально подчиняться ее правилам.
                                    0

                                    Ну так не уводите тогда тему. Должна ли винда уметь фильтровать трафик глобально от wsl2 — да должна. Должна ли она понимать, что в wsl2 выполняется и понимать во всякие докеры — нет не должна. Так понятно?

                                      0
                                      Нет, непонятно, зачем вы привязались к докеру и опять уводите разговор куда-то не туда. WSL2 это компонент винды. Он умеет поднимать сервисы, которые слушают трафик. Поступление трафика к ним должно подчиняться правилам фаервола винды. Просто и ясно. И винде не имеет значения, апач там слушает или докер контейнер.
                                        0

                                        Вы не можете понять почему в ветке комментариев про докер, я пишу о докере?

                                          –1

                                          Вас не смущает, что компонент винды проверяли на дистрибутиве Ubuntu?
                                          Ну то есть внезапно оказывается, что Ubuntu — это компонент винды?
                                          Архитектура поменялась. Раньше было взаимодействие через ядро Windows (и wsl БЫЛ компонентом Windows), а теперь взаимодействие идет через виртуальную сеть. Логично, что теперь это другое взаимодействие и теперь wsl2 — это виртуалка внутри Windows. Зачем вы хотите убедить пользователей, что это должно быть не так? Зачем вы хотите, чтобы wsl2 был компонентом Windows, когда по сути он таковым не является. Смотрите ниже, как из wsl2 нельзя достучаться до хоста по 127.0.0.1. Это тоже править?
                                          Или пусть лучше пользователи осознают разницу между wsl и wsl2?

                                0

                                Посмотрите на первый комментарий к этой статье. Потому что не всем нужно то, что нужно вам.
                                Если вы не понимаете сути wsl2, и не хотите даже разбираться как оно работает, то не стоит называть его дырявым. Скорее это дырявая винда, которая не умеет пользоваться wsl2.
                                Вы так рассуждаете, словно это единственная потенциальная уязвимость в винде.

                          0
                          Почему должен понимать?

                          WSL это инструмент не юзера, а инструмент разработчика.
                            0
                            А чем разработчику Linux не подходит? И какова целевая платформа разработки? Если Windows, то не предполагается ли установка WSL и на целевых компьютерах?
                              +3
                              А чем разработчику Linux не подходит?


                              Linux, несмотря на все усилия предпринимаемыми десятилетиями уже, всё равно отстает по удобству от MacOS и Windows.

                              Это конечно не означает, что пользоваться Linux совсем нельзя.

                              Но до сих пор приходится сталкиваться… вот нужно было мне подключиться к интернету в дороге через сотовую связь — в Linux для этого пришлось кучу танцев с бубнами проделать (для которых, к слову, нужен доступ к интернету для инструкций), потратил 3 часа, плюнул, перезагрузился в Windows и
                              все заработало сразу.
                              И да, в Linux это не завелось ни через Wi-Fi ни через прямое подключение к смартфону по кабелю, ни через прямое подключение к USB-модему. В Windows всё заработало сразу же для любого из трёх упомянутых выше способов. Железо хорошее и не старое. ОС Linux свежая.

                              P.S.:
                              Плотно использую unix-системы с 2004 года как админ и как разрабочик.

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

                              Но не на то, чтобы бороться со своим инструментом.

                              И какова целевая платформа разработки?


                              Если целевая платформа десктопный Linux с GUI, то тут и вопросов нет, нужно использовать для разработки Linux. Но это не про WSL.

                              WSL — это про то если целевая платформа серверный Linux.

                              И тут использование локального Linux далеко не всегда помогает.
                              Даже нередко вводит в заблуждение типа «а у меня всё работает, почему у вас там на сервере не работает — не знаю».

                              Просто потому что софтовая конфигурация сервера серьезно отличается от конфигурации Linux'a разработчика. Другое ядро, другие установленные пакеты, другая конфигурация системы.

                              Для идеальной проверки как будет функционировать разрабатываемое вами ПО на Linux-сервере вам всё равно нужно тестировать это ПО в изолированной среде (типа Docker хотя бы или в полноценной виртуальной машине).

                              Так что на чем разрабатывать — не зависит от целевой платформы.
                              Исключение только разработка под десктоп Linux, тут разумно использовать Linux и разработчику.
                                –4
                                И да, в Linux это не завелось...
                                ну тут есть положительная обратная связь — доля линукса маленькая, поэтому разработчики забивают на linux-версии софта/драйверов, поэтому на линуксе работает не всё или через жопу, поэтому линукс не подходит для пользователей, поэтому доля линукса маленькая… Дело не в том, что линукс плохой, а в монополии MS. Собственно, именно ради сохранения status quo MS вместо поддержки posix делают WSL.
                                  0
                                  И да, в Linux это не завелось…

                                  ну тут есть положительная обратная связь — доля линукса маленькая, поэтому разработчики забивают на linux-версии софта/драйверов, поэтому на линуксе работает не всё или через жопу, поэтому линукс не подходит для пользователей, поэтому доля линукса маленькая…


                                  Да какая разница рядовому пользователю, у которого отладка Линукса — не хобби? Какая ему разница объективная там причина или необъективная?

                                  0
                                  А я вот не соглашусь. Имхо, Виндоус «догнала» Линукс, двигаясь в обратном направлении.
                                  Я когда-то плотно сидел на Windows, от 95 до 7. После перешел на Мак (на один год), а затем на Линукс.
                                  А вот недавно, в попытке решить плохую поддержку драйверов на Линуксе для моего Thinkpad (луч ненависти в сторону Леново), поставил на пробу себе Windows 10 LTSC. Я продержался 2 дня, решил что лучше буду вручную чинить сеть и блютуз под Линуксом, чем пользоваться этим недоразумением под названием Windows.
                                  И кстати, в отличии от Windows, в Manjaro USB-модем у меня работает без всяких проблем. Просто воткнул и заработало, а в Винде он пытается установить какой-то говнософт идущий с этим модемом.
                                    0

                                    очень странно, что у вас не завелся интернет в Linux.
                                    А что это был за дистрибутив?
                                    Я ещё хочу заметить, что криворукие разработчики очень часто верстали сайты под IE6 в те далекие времена, когда трава была зеленее.
                                    Боюсь, что вы либо нарвались именно на таких разработчиков, которые умеют только в винду, либо выбрали линукс, который не умете готовить. Ну или нашли единичные грабли, которые никак не отражают общей тенденции.
                                    У меня был обратный случай: Win Vista на ноуте отказывалась подключаться к любому WiFi, который ей был неизвестен. Ну то есть примерно 6-8 точек можно было добавить в список, а потом как отрезало. И помогал только сброс до заводских настроек.
                                    И что? Теперь винда — это никуда не годный кусок дерьма?
                                    Кстати, вам напомнить, что если вы хотите мультизагрузку, то виндовый загрузчик не умеет устанавливаться рядом с линуксовым? Как думаете, это потому что винда такая мегаудобная, что другие ОС не нужны в принципе?

                                      0
                                      А что это был за дистрибутив?

                                      Ubuntu

                                      либо выбрали линукс, который не умете готовить

                                      Я на юниксах с 2004 года.

                                      Но сам факт, что в 2020 году Ликус все еще, согласно вашим словам, «нужно уметь готовить», хотя у нормальных ОС такие банальные вещи заводятся из коробки — в этом и проблема.

                                      ОС — давно уже инструмент не только для разработчика, а для простого пользователя.

                                      Не должно быть таких проблем даже рядом.
                                      Не хочу я тратить время борьбу с ОС. У меня другие хобби.

                                      И поэтому я выбираю ОС, что экономит мне кучу времени в своей настройке.

                                      Но если кто-то любит ковыряться в своей ОС, — не возражаю. Это его личное дело.
                                        0

                                        Странность в том, что я вот только сегодня раздал интернет с андроида на ноут со свежей Ubuntu через WiFi. И заняло это не больше пяти минут. Либо ваш опыт сильно устарел, либо вы вытались делать это каким-то нетрадиционным способом в силу профдеформации. Либо на Ubuntu вы раздавали инет, которого не было, а появился прием как раз тогда, когда вы загрузили Винду.
                                        Ваш частный опыт ни разу не подтверждает, что Ubuntu хуже Win10.
                                        Я знаю тех, кто не ездит в метро, потому что заболевает. У них сила самоубеждения слишуом велика. Мне кажется у вас такое же предвзятое отношение к Linux.
                                        Если бы MS на ставила палки в колеса с документами, загрузчиком, входом в домен для почты, то многие разработчики сидели бы под линуксом и горя бы не знали.
                                        Моя точка зрения.

                                          0
                                          Ваш частный опыт ни разу не подтверждает

                                          Как и ваш частный опыт не подтверждает обратного.
                                            –1

                                            Так я на основе своего опыта не делаю категорических утверждений типа "виндовый десктоп для людей, а линуксовый — для гиков и не ценящих свое время".
                                            Мне кажется, что такое утверждение ни на чем не основано в 2020.
                                            А ведь вас читают молодые люди. И они потом с пеной у рта могут отстаивать вашу категоричную точку зрения.

                                              +1
                                              Так я на основе своего опыта не делаю категорических утверждений типа «виндовый десктоп для людей, а линуксовый — для гиков и не ценящих свое время».


                                              У меня порядка 15 лет опыта подъема десктопов на X11 и пр. друзьях Linux.

                                              Должен констатировать, что и сейчас всецело полагаться на десктопный Linux нельзя.

                                              В ситуациях с проверенным кругом ПО/железа Linux вполне юзабелен.

                                              Чего нельзя сказать про общий случай.

                                              Но своя ниша у Linux есть.
                                          0
                                          1) поддержка Линукс сильно зависит от железа, где-то всё работает из коробки, а где-то нет.
                                          2) ну и заявлять что Windows из коробки работает всегда — это тоже не правда.
                                            0
                                            1) поддержка Линукс сильно зависит от железа, где-то всё работает из коробки, а где-то нет.
                                            2) ну и заявлять что Windows из коробки работает всегда — это тоже не правда.


                                            Конечно, есть разные вероятности.

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

                                            P.S.:
                                            На серверах у меня всё прекрасно работает на FreeBSD/Linux еще с 2004.

                                            Но на десктопе.
                                            Делал уже множество подходов в разные годы.
                                            Всё надеялся, что вот уже допилили.

                                            Но то модем, то принтер, то какой софт, то еще какие-то проблемы.

                                            Linux хорошо работает, но только в довольно узком диапазоне.
                                              0
                                              Ну я понимаю что статистически с Линуксом больше шансов нарваться на всякие проблемы, однако в целом Линукс стал достаточно юзабелен и работает вполне хорошо. Так хорошо, что у меня и у родителей на ноутбуке уже стоит Убунта. А в 2004 году состояние десктопного Линукса было очень печальным, что я бы и себе его не поставил. Так что двигаются они в нужном направлении и, конкретно для меня, уже дошли до стадии когда «допилили достаточно».
                                                0
                                                Так хорошо, что у меня и у родителей на ноутбуке уже стоит Убунта.


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

                                                А вот если копнуть глубже, на более широкий круг задач — тут уже нужно лишний раз подумать.
                                    0

                                    Ну так я ставил wsl для докера, а не сам по себе

                                0
                                А у меня локально установленный PostgreSQL не видно из под WSL2.
                                По IP на 127.0.0.1
                                Подозреваю, нужно какой другой адрес указывать. Руки не доходили разобраться.

                                Но может кто знает готовое решение?
                                  0
                                  По имени хоста? Только отключить в wsl.conf генерацию файла hosts и выпилить из него это самое имя.
                                  Ну или скриптом доставать адрес из resolv.conf (автогенерируемого).
                                    0

                                    Посмотрите, какой адрес назначен вашему компу в соответствующей виртуальной сети и используйте его. В моём случае адаптер называется vEthernet (WSL) и имеет адрес 172.22.80.1 с маской 255.255.240.0.

                                      0
                                      Забавно. В статье написано, что правила файрвола не распространяется на WSL.
                                      В моем же случае пинговать даже локальную Windows из под WSL не получается. Хотя к глобальной сети доступ из под WSL есть.

                                        0

                                        Проблемы перевода и громких заголовков, увы. Не распространяются правила исходящих соединений. С точки зрения файрвола и всех систем ваша WSL — отдельный компьютер. Соответственно, входящие соединения от WSL файрволом фильтруются. По этой же причине и не работает 127.0.0.1 — для WSL по этому адресу отвечает сама WSL, а для основной системы — основная система.

                                    0

                                    Интересно, когда вирусы начнут поднимать wsl и частично жить там…

                                      0
                                      С точки зрения Hyper-V и Win10, и WSL2 — оба его гости. В режиме сетевого моста один гость и не должен блокировать трафик другого.
                                      Как там с другими виртуалками с этим же гипервизором, ограничивает ли Win10 их трафик?

                                      WSL1 был без гипервизора, там естественно все соединения проходили через систему.
                                        0
                                        С точки зрения архитектуры Hyper-V некоторые гостевые VM равны более других: значительная часть функциональности гипервизора реализуется в первичном разделе (Win10 в данном случае).
                                        В частности, именно первичный раздел (кроме случая редко AFAIK установленых на клиентских ПК сетевых адаптеров с SR-IOV) реализует всю функциональность виртуального коммутатора, направлющего трафик в нужную VM. Так что, весь сетевой трафик WSL2 проходит через Win10. Более того, в Windows для коммутатора Hyper-V (extensible switch) уже реализована возможность фильтрации этого трафика через стандартную WFP (которую, в частности использует и брандмауэр Windows).
                                        Так что отказ от фильтрации трафика WSL2 через бранмауэр Windows вызван не технической невозможностью а решением производителя Win10, возможно — просто из-за нежелания тратить ресурсы на модификацию кода брандмауэра.

                                      Only users with full accounts can post comments. Log in, please.