Block c4d in firewall что это
Новое поколение межсетевых экранов удобнее и безопаснее, благодаря новой архитектуре движка и новой идеологии управления сетевыми потоками.
Ограничения технологии анализа 7 уровня
L7 firewall требуется больше памяти для хранения состояния одного соединения, поэтому параметр «число одновременных соединений» у L7 firewall всегда ниже чем у L4 Firewall при одинаковом количестве оперативной памяти в обоих устройствах, причем значительно, раз в 10. Это уже объяснялось выше в разделе Statefull Inspection. И это цена за безопасность ваших приложений. Поэтому если вы сравниваете L4 и L7 инспекцию, то задавайте вопрос производителю как он измерял параметр «число одновременных сессий»: с включенной безопасностью на 7 уровне или с выключенной.
То же самое и с производительностью: процессор L4 firewall проверяет лишь несколько байт заголовка пакета и затем уже сами данные передает на скорости маршрутизации без проверки, а L7 firewall проверят и заголовок и все те мегабайты данных, которые содержатся в последующих пакетах соединения. А это уже совершенно другая работа. Поэтому такую работу нужно делать на специализированных для этого аппаратных платформах, где ускорен анализ приложений, ускорена работа потокового антивируса, ускорена работа IPS и других функций безопасности. Лучше всех в создании чипов для ускорения безопасности преуспела компания Cavium, чипами которой, например, пользуется компания Palo Alto Networks. Кроме того использование специализированных чипов FPGA(ПЛИС) позволяет прошивать сигнатуры антивируса и IPS в сам чип и проверка сигнатур идет на аппаратной скорости чипа FPGA. Сейчас даже у личных компьютеров есть ускорение графических функций на выделенных графических процессорах, так что использование чипов для ускорения безопасности — логичное развитие технологий.
Проблема L4 firewall: port-hopping (туннелирование)
Туннелирование неразрешенных приложений внутри разрешенных соединений – это стандартная картина в современных сетях. Естественно, хакеры пользуются тем же приемом: они создают туннели в разрешенных соединениях. А безопасники даже не в курсе.
Об этой статье
В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.
Фаервол – это программное обеспечение или аппаратное средство, которое выполняет проверку входящей информации из Интернета или сети, и либо блокирует ее, либо позволяет проходить через компьютер, в зависимости от настроек самого firewall.
Фаервол может помочь пользователям уберечься от нападения хакеров или от вредоносного программного обеспечения, которые могут получить доступ к вашему компьютеру через вашу сеть. Фаервол также может помочь остановить отправку вредоносных файлов с вашего компьютера на другие ПК.
Все вышеописанное также можно отнести и к Брандмауэру Windows. Некоторые приложения требуют для себя подключения к сети время от времени. Однако, у фаервола есть контроль над тем, какие .exe и .dll на вашем компьютере подключать к публичной, личной или доменным сетям.
По умолчанию, все приложения заблокированы Брандмауэром. Если какому-то приложению или программе запрещено связываться с сетью, то Брандмауэр блокирует ей доступ. В список этих программ также могут входить и ваши игры, для работы с которыми вам требуется Интернет-подключение.
Для того чтобы установить нужные вам настройки в Брандмауэре Windows, вы можете:
- Нажать одновременно кнопки Win+R.
- Затем вписать в строку утилиты «Выполнить» запрос firewall.cpl и нажать Enter.
- Выбрать «Разрешение взаимодействия с приложением или компонентом в брандмауэре Windows».
В этом окне вы сможете выдавать разрешения определенным программам или же добавлять новые исполнительные файлы.
Однако, когда вам нужно заблокировать или снять блокировку с более чем одного исполнительного файла на вашем компьютере(или если вы разрабатываете приложение, которому требуется разрешение firewall’а), то вам нужно проделывать достаточно много однообразной работы для этого.
Сейчас мы покажем вам, как блокировать несколько файлов одновременно или даже целые папки в Брандмауэре Windows. Для демонстрационных целей, мы будет показывать этот метод на папке Program Files.
Для начала вы рекомендуем вам сделать резервную копию вашей политики в Брандмауэре Windows, на случай того, если что-то пойдет не так. Для этого сделайте следующее:
- Нажмите комбинацию из Win+R, напишите wf.msc и нажмите Enter для открытия Брандмауэра Windows в режиме повышенной безопасности.
- В самом правом углу окна, нажмите на «Экспортировать политики…» и сохраните их в файл. Если что-то произойдет при выполнении нижеуказанных шагов, то вы сможете использовать этот Wfw-файл для восстановления состояний политик.
Какие новые проблемы создает новый подход к написанию правил по L7
Нужно понимать, что определение приложения по контенту пакета очень нагружает процессора L7 firewall. Если обычный L4 firewall проверял только несколько байт заголовка TCP пакета и затем остальные мегабайты flash ролика пропускал без проверки, то L7 firewall должен считывать все что хранится в поле данных TCP/IP и постоянно проверять что за контент находится внутри соединения TCP/IP, вдруг оно изменилось или несет угрозу для компании. Поэтому, когда появился такой функционал, как анализ контента, то все устройства стали тормозить. Поэтому для анализа контента нужны более мощные устройства.
Iptables и другие
Проект iptables, разработанный Расти Расселом (Rusty Russell) в 1999 году для управления netfilter и заменивший в ядре 2.4 ipchains и ряд других инструментов вроде ipnatctl, предлагает более расширяемый способ фильтрации пакетов, обеспечивающий сисадмину больший контроль при упрощении самих правил. Так, в ipchains нужно было создавать правило в каждой цепочке, прослеживая весь маршрут пакета, теперь достаточно одного. Появление модулей позволяло очень просто расширять возможности. В процессе развития проекта iptables был портирован для IPv6 (в 2011 году, ip6tables), добавлялись дополнительные модули (ULOG, nf_conntrack), он научился производить разные манипуляции с пакетами, классифицировать трафик (до седьмого уровня OSI), балансировать нагрузку и многое другое. С ростом количества функций усложнились и настройки. При этом, даже несмотря на некоторую унификацию, каждое расширение имеет свой синтаксис, одни поддерживают диапазоны, отрицание, префиксы, другие — нет. Поначалу каждое изменение правил требовало полного перезапуска брандмауэра, включая выгрузку модулей, что приводило к разрыву установленных соединений. Сейчас такой проблемы нет.
Для простых случаев настройка при помощи iptables — дело нехитрое, но в сложных сетях управлять большим количеством правил становится тяжело; чтобы изучить все настройки и понять, как оно работает, нужно потратить время. Трудно с ходу разобраться, что делают все цепочки, правила начинают повторяться, их становится сложно обслуживать, обновлять и переносить на другие системы.
Неудивительно, что для решения этих проблем были придуманы разные надстройки. Так, в Ubuntu для простой настройки правил используется ufw (Uncomplicated Firewall — несложный файрвол). Например, чтобы открыть доступ к SSH-порту, достаточно ввести
Разработчики приложений могут создавать готовые профили, которые активируются при установке пакета, избавляя пользователя от выдумывания и ввода правил.
Под капотом FERM находится обычный Perl-скрипт, который конвертирует конфигурационные файлы в правила iptables.
В Fedora 18 был анонсирован демон firewalld, ставший официальным приложением для управления настройками netfilter в RHEL 7 / CentOS 7. Последние становятся все популярнее на VDS, а значит, придется столкнуться с их особенностями.
Дополнительные статьи
Почему появилась эта статья?
Неоднократно приходил к коллегам-безопасникам, которые пользуются межсетевым экраном нового поколения и видел, что они продолжают писать правила по номерам портов. На мое предложение перейти писать по имени приложений, слышал «А вдруг так не заработает?». Если вам тоже «страшно» или непонятно зачем писать правила по приложениям, от эта статья для вас.
Приложения изменились – изменился ли ваш firewall
Нужно анализировать содержимое передаваемых данных и именно по ним разбирать какое же приложение в данный момент использует это TCP соединение.
Приложения, использующие порт 80
Содержание
Выводы
Как видишь, ничего сложного! Firewalld очень упрощает установки, особенно если учесть, что настройки легко перенести.
Почему появилась эта статья?
Неоднократно приходил к коллегам-безопасникам, которые пользуются межсетевым экраном нового поколения и видел, что они продолжают писать правила по номерам портов. На мое предложение перейти писать по имени приложений, слышал «А вдруг так не заработает?». Если вам тоже «страшно» или непонятно зачем писать правила по приложениям, от эта статья для вас.
Как работает обнаружение приложений в трафике
Одной из задач анализа приложений является обнаружение трафика приложений, которые специально созданы, чтобы их соединения не видели. Возьмем для примера Skype. Люди, которые научились отличать зашифрованные UDP пакеты Skype от других зашифрованных UDP пакетов – очень большие молодцы.
Есть еще класс устройств, которые так умеют: Deep Packet Inspection (далее DPI). Такие устройства стоят сейчас у крупных провайдеров и позволяют манипулировать трафиком приложений: применять QoS или перенаправлять в нужном направлении. Иногда NGFW и DPI сравнивают. Разница: DPI предназначен для управления качеством трафика, а NGFW безопасностью, хотя в NGFW тоже есть функции QoS.
Методы обнаружения приложений в трафике отличаются.
В базе данных приложений находятся тысячи приложений, поэтому по сути разбор форматов и алгоритмов каждого приложения – это долгая и кропотливая работа аналитиков. После того как поняли как приложение работает, начинают работать программисты, которые реализуют обнаружение приложения по трафику. И эти несколько тысяч приложений постоянно меняются. Соответственно, продукт должен постоянно поддерживаться, изучать новые приложения и контролировать изменения в старых и добавлять в базу измененные детекторы. Базу всех возможных приложений генерирующих трафик можно посмотреть тут.
Иногда вендоры L7 firewall пытаются меряться числом приложений которые есть у них в базе, но это больше похоже на профанацию. Включив критическое мышление вы понимаете, что вам в реальности нужно детектировать только приложения на периметре (в среднем это в районе 300 разных приложений), в ЦОД (10-15 штук), в ICS/SCADA сетях (2-3 приложения), между внутренними сегментами (возможно это всего несколько десятков). И если вам предлагают детектировать тысячи приложений — это всего лишь маркетинг и детект каких-то неизвестных приложений, которыми никто не пользуется.
Пример приложений в сети компании:
Внутренняя сегментация внутри компании – это постоянное требование стандартов ИБ, которое почти никто не выполняет. Между сегментами, где сидят программисты, финансисты, HR и бухгалтерия тоже ходят приложения. Как минимум нужно контролировать сеть Windows (протокол SMB), особенно это стало понятно после эпидемии криптолокера WannaCry, который распространялся именно по SMB. То есть во внутренних сетях тоже нужен анализ приложений 7 уровня и сопутствующие методики поиска вредоносного кода песочницей и IPS, да хотя бы контроля передаваемых типов файлов.
Самая частая проблема, которая заметна в сетях: межсетевой экран якобы 7 уровня, но в реальности детектирует приложения по портам. Как это проверить?
Проблема многих средств защиты – игнорирование приложений на нестандартных портах
Перемещение стандартного приложения на нестандартный порт, тоже позволяет злоумышленнику уйти из-под контроля. Этот контроль восстанавливает только устройство, которое анализирует содержимое всего трафика, а не только заголовки.
Возможности firewalld
Firewalld запускается как демон, новые правила добавляются без перезапуска и без сброса установленного файрвола. Изменения в конфигурации могут быть сделаны в любое время и применяются мгновенно: сохранять или применять изменения не требуется. Поддерживается IPv4, IPv6, автоматическая загрузка модулей ядра и сетевые зоны, определяющие уровень доверия соединений. Предоставляется простой интерфейс добавления правил для служб и приложений, белый список приложений, имеющих право менять правила. В настоящее время такую возможность поддерживает libvirt, Docker, fail2ban, Puppet, скрипт установки Virtuozzo и многие другие проекты. В репозитории YUM уже есть пакеты fail2ban-firewalld и puppet-firewalld, поэтому подключить их можно одной командой.
Firewalld предоставляет информацию о текущих настройках брандмауэра через D-Bus API, а также принимает изменения через D-Bus с использованием методов аутентификации PolicyKit. В качестве бэкенда используются iptables, ip6tables, ebtables, ipset и планируется nftables. Но сами правила, созданные непосредственно этими утилитами, firewalld не может разобрать, поэтому оба метода использовать нельзя.
Управление производится при помощи утилит командной строки firewall-cmd или графической firewall-config, позволяющей настроить все правила в удобной среде. Для помощи в миграции текущих правил iptables на firewalld используется утилита firewall-offline-cmd, по умолчанию считывающая /etc/sysconfig/system-config-firewall . В последних релизах появилась утилита firewallctl, имеющая простой синтаксис и позволяющая получать информацию о состоянии службы, конфигурации брандмауэра и изменять правила.
Графическая firewall-config поддерживает firewalld
Параметры firewall-cmd
Разрешить соединение на определенный порт очень просто:
Чтобы любые изменения вступили в силу, всегда после правок должна быть запущена команда
Для удаления порта из правил используется параметр --remove-port :
Вообще, многие команды --add-* имеют значения для проверки статуса --query-* , --list-* — список, изменения --change-* или удаления --remove соответствующего значения. Для краткости на этом не будем дальше заострять внимание. После релоада правил проверяем:
В firewalld предусмотрен режим, позволяющий одной командой заблокировать все соединения:
Для проверки, в каком режиме находится файрвол, есть специальный ключ:
Отключается panic mode:
В firewalld необязательно знать, какой порт привязан к сервису, достаточно указать название сервиса. Все остальное утилита возьмет на себя.
После установки firewalld знает настройки более 50 сервисов, получаем их список.
Используя фигурные скобки, можно задавать сразу несколько сервисов. Информация по настройкам сервисов доступна при помощи
Firewalld хранит все настройки в XML-файлах в каталогах в /usr/lib/firewalld. В частности, сервисы лежат в services. Внутри файла описание: название, протокол и порт.
Это каталог системный, и менять там ничего нельзя. Если нужно переопределить настройки или создать свой сервис, то копируем любой файл в качестве шаблона в /etc/firewalld/services , правим под свои условия и применяем настройки.
Для настройки ICMP используется отдельный набор правил. Получаем список поддерживаемых типов ICMP:
Все настройки firewalld хранит в XML-файлах
Firewalld знает о почти 50 сервисах
Управление зонами
Для определения уровня доверия сетевому соединению в firewalld используются зоны. Зона может содержать несколько сетевых подключений, но сетевое соединение может входить только в одну зону. Список всех зон получаем командой firewall-cmd --get-zones .
Получаем список зон
Другие статьи в выпуске:
После установки создается девять зон, в зависимости от назначения может быть использована одна или несколько зон:
Описания зон также представлены в XML-файлах в /usr/lib/firewalld/zones .
После установки системы обычно используется зона public. Если имеющихся зон недостаточно, то можно создавать новые зоны при помощи
Настройки зон по умолчанию
Все пакеты, не попадающие под определенные зоны, обрабатываются в зоне по умолчанию.
Теперь — какие зоны сейчас активны и какие интерфейсы к ним привязаны.
Также можем получить обратную информацию — к какой зоне привязан интерфейс.
Смотрим настройки зоны (сервисы, порты, протоколы. ).
Если параметр пуст, то это значит, что настройки не установлены. При необходимости переназначаем интерфейс зоне:
Если сейчас проверить вывод firewall-cmd --zone=public --list-all , то увидим, что из списка установок пропал сетевой интерфейс. Разрешим подключение сервиса:
Удаляется он так же:
К зонам можно привязывать и другие источники, определяемые по MAC, отдельному IP или адресу сети. Пакет, пришедший из такого источника, будет обрабатываться по правилам зоны.
Список всех source смотрим при помощи --zone=trusted --list-sources . NAT, позволяющий нескольким компьютерам подключаться к сети, в firewalld включается одной командой. Смотрим текущие настройки маскарадинга:
Если в ответ получим no , то включаем:
Это все. Для доступа извне настроим форвардинг порта в один из компьютеров. Например, нам нужен доступ по SSH к внутреннему серверу:
Удаляется правило форвардинга при помощи --remove-forward-port .
L7 Firewall безопаснее
У меня под рукой есть Palo Alto Networks NGFW. Я написал на нем три разных правила. Давайте разберем чем они отличаются.
Если вы настраивали когда-либо firewall, то вы видите, что для разных групп пользователей: vip, marketing и programmers я разрешил SSL тремя разными способами.
- vip пользователи смогут ходить по порту 443 и смогут пользоваться SSL внутри него, поскольку он является портом по-умолчанию для SSL. Если они попытаются пойти по 443 порту, например обычным telnet, то у них не получится – межсетевой экран проверит, что это не SSL и заблокирует. И это то что нужно!
- marketing может ходить по любому порту приложением SSL, потому что в поле Service, где указываются порты разрешен любой порт. Вопрос, хотел ли я чтобы маркетинг использовал SSL по нестандартным портам? Нет. Это частая ошибка настройки. Указывать порт как any логично, если правило запрещающее — то есть, если мы хотим запретить SSL по любому порту.
- programmers могут ходить по порту 443 любым приложением, что вообще-то является дыркой, потому что я изначально хотел открыть только SSL. И именно так и работают L4 firewall – он открывает порт и дальше ему уже все равно что там и какие приложение этим портом пользуются. Любой программист из группы programmers может воспользоваться любым туннелем.
Например, для правила ниже, где всем сотрудникам разрешено ходить в Интернет только по портам по-умолчанию, NGFW будет постоянно проверяться, что они хотят по 53 порту только DNS клиентом, а никак не TCP-over-DNS. И конечно же это повышает безопасность, ведь вы не просто разрешаете приложения, а контролируете, что по открытым каналам ходят только не приложения, которые вы разрешили.
Блокировка нескольких .exe-файлов с помощью BAT-файла
Через netsh(скриптовый инструмент, которые позволяет Командной строке изменять настойки сетевого подключения), вы можете использовать силы Командной строки изменить настройки вашего Firewall’а. Так как Брандмауэр контролирует входящие и исходящие соединения, то вы должны отключить их обоих для ваших файлов. Для этого сделайте следующее:
-
Откройте Блокнот и копируйте следующие строки в него:
for %%G in (“C:\Program Files (x86)\Test Folder\*.exe”) do (netsh advfirewall firewall add rule name=”Blocked With Batchfile %%G” dir=in action=block program=”%%G” enable=yes profile=anynetsh advfirewall firewall add rule name=”Blocked With Batchfile %%G” dir=out action=block program=”%%G” enable=yes profile=any)
@ echo off
@setlocal enableextensions
@cd /d “%~dp0”
color F0
title Exe blocker
echo.
echo. ==============================
echo. == Welcome to .exe blocker ==
echo. ==============================
echo.
Echo Current location: %cd%
echo.
CHOICE /C YN /M “Do you want to search in the current location?”
IF Errorlevel 2 goto END
IF Errorlevel 1 goto Yes
::——————–CHECK and searching files—————–
:Yes
set location=%cd%
cls
echo.
Echo. Searching for .exe files in %location%
echo.
set /a count=0
echo.___________________________________________
echo.Found:
echo.
FOR %%i in (*.exe) do (echo. %%i & set /a count+=1)
echo.___________________________________________
echo.
title Exe blocker %count% Files found
echo. Number of files found with .exe extention: %count%
echo.
echo.
set add2=
CHOICE /C YN /M “Do you want to add aditional information?”
IF Errorlevel 2 goto block
IF Errorlevel 1 goto ADD
::—————–ADD additional info—————
:ADD
Set /p add=Please type the additonal information for the name:
Set add2=%add%
::—————–Add files to firewall————–
:block
cls
title Exe blocker – Blocking Rules
set /a countt=0
echo.
echo.___________________________________________
echo. Inbound Rules
echo.___________________________________________
FOR /r %%B in (*.exe) do (set /a countt+=1 & echo.%countt%. %%~nxB blocking… & netsh advfirewall firewall add rule name=”%add2%%%~nxB” dir=in action=block program=”%%~dpfnxB”)
echo.___________________________________________
echo. OutBound rules
set /a coun=0
echo.___________________________________________
FOR /r %%B in (*.exe) do (set /a coun+=1 & echo.%coun%. %%~nxB blocking… & netsh advfirewall firewall add rule name=”%add2%%%~nxB” dir=out action=block program=”%%~dpfnxB”)
echo.___________________________________________
Echo. Added files to Firewall
echo.
title Exe blocker – Rules Blocked
Pause
::————————END———————
:END
cls
ECHO.
Echo. Thanks for using .exe blocker
Echo.
CHOICE /C YN /T 10 /D n /M “Do you want to open firewall? (10 seconds)”
IF Errorlevel 2 goto EXIT
IF Errorlevel 1 goto OPEN
::——————Open Firewall—————
:OPEN
start “C:\Windows\System32” rundll32.exe shell32.dll,Control_RunDLL firewall.cpl
Goto EXIT
Настройке межсетевого экрана при помощи iptables в Linux посвящена не одна статья, и, так как тема популярна, вероятно, будет написано множество других. Для простых конфигураций все достаточно легко, но вот если сети сложные, а компьютеров много, то дело уже не кажется таким простым. А перенос правил в другие системы не всегда прозрачен.
Заключение
Во-первых, управлять безопасностью на L7 firewall проще. Раньше вы долго читали документацию производителя приложения и открывали порты, что там перечислены. Теперь просто: указываете название приложения в правиле NGFW и нужные порты будут разрешаться автоматически в зависимости от состояния соединений данного приложения.
Во-вторых, вы сможете обнаружить и заблокировать туннелирование, поскольку L7 firewall безопасно разрешает только явно указанное приложение и если кто-то попытается туннелировать другое приложение по открытому порту, то сразу будет обнаружен и заблокирован.
В-третьих, вы можете разрешить нужное приложение по любому нужному порту и по этому порту будет ходить только нужное приложение, а не все сразу. Например, только веб-браузер будет использовать 80 порт.
Если паранойя подсказывает, что вы недостаточно защищены, а под рукой имеются только бесплатные инструменты для безопасности, то нужно это чувство удовлетворить! Под катом будем создавать белый список программ для выхода в сеть с помощью стандартного брандмауэра Windows, в том числе и на PowerShell.
Введение
Большинство энкодеров, троянов и других плохих вещей из мира киберугроз для своих темных делишек используют возможность выхода в сеть с устройства жертвы: получение ключа для шифрования файлов, отправка конфиденциальной информации и так далее. Антивирусные компании в борьбе с такими противниками натаскивают свои проактивные технологии, выпускают даже отдельные продукты для шифровальщиков, ну а для простых пользователей бесплатной защиты остается только более тонко настраивать свои рубежи самостоятельно. Со времен Vista встроенный в Windows брандмауэр стал неплох, но большую часть времени простаивает без дела, отбивая лишь неписаные входящие соединения в лучшем случае. Не все знают, но он умеет чуточку больше — фильтровать и исходящие соединения, стоит лишь только включить этот режим и правильно настроить.
Итак, приступим
Первым делом необходимо запретить все исходящие соединения (входящие, считаем, уже запрещены — нужное ПО само, как правило, прописывает для себя исключения). Для этого идем в Панель управления -> Система и безопасность -> Брандмауэр Windows -> Дополнительные параметры. Далее выбираем «Брандмауэр Windows в режиме повышенной безопасности» и через правую кнопку мыши открываем Свойства. В зависимости от вашего сетевого профиля (частный — локальная сеть с маршрутизатором, общий — напрямую в интернет, домен — доменная сеть) выбирается вкладка профиля и для исходящих соединений выбирается режим «Блокировать» (я настраивал для всех профилей одинаково).
На данный момент никакая программа выйти в сеть не может (кроме уже имеющих правила). Легко это проверить, открыв браузер с любым сайтом — наверняка получим ошибку сети. Чтобы загрузить страницу необходимо создать соответствующее правило. Рассмотрим Internet Explorer — имеется у всех на Windows. Нажимаем правой кнопкой на «Правила для исходящего подключения» -> Создать правило. Открывается окно с 4-мя типами правил, для IE подойдет первый — «Для программы». Далее нужно указать путь к программе — в нашем случае — C:\Program Files\Internet Explorer\iexplore.exe . Не забываем, что обладатели 64-битных систем должны создать еще одно такое же правило, только для Program Files (x86) (там IE тоже установлен). После выбора файла необходимо выбрать пункт «Разрешить подключение», далее отметить галками нужные сетевые профили. Осталось только придумать название для нашего правила. Рекомендую все правила писать с одного и того же слова/символа, потом искать будет удобнее. Созданное правило будет отображаться в общем списке.
Для программ правила делать научились, а что со службами? Пусть необходимо добавить в исключения службу Mozilla Maintenance Service. Создаем новое правило, выбираем тип «Настраиваемое». Далее нажимаем «Настроить», выбираем «Применять к службе» и ищем в списке нужную службу или чуть ниже вводим название службы вручную. Затем предлагается настроить протокол и порты, но в данном случае их можно оставить по умолчанию — программа доверенная и шут ее знает, чем она там пользуется при доставке и установке обновлений. IP-адреса аналогично не трогаем. Далее разрешаем подключение, выбираем профили и задаем название для правила.
Казалось бы, основные моменты пройдены, что теперь? А теперь подводные камни. Если кто-нибудь использует в своей деятельности программу удаленного управления TeamViewer, которая ставит с собой службу, то вроде бы достаточно найти в списке службу и добавить правило для нее. Но это не сработает. Необходимо вместо службы добавлять правило «Для программы» и выбирать исполняемый файл службы C:\Program Files (x86)\TeamViewer\TeamViewer_Service.exe (путь для 64-битной системы). Это частая ситуация, поэтому не спешите добавлять службы, начинайте с exe. Кроме этого в нашей системе перестанет работать ping. Для него необходимо добавить правило по типу «Настраиваемое», все оставлять по умолчанию, только протокол выбрать ICMPv4 и внизу нажать «Настроить», где поставить галочку только рядом с «Эхо-запрос». Теперь ping и tracert будут работать. Для IPv6 повторить, но уже с протоколом ICMPv6. Если правило уже создано, но необходимо что-то в нем изменить, это легко можно сделать, выбрав нужное правило в списке и зайдя в его свойства. На вкладках можно все настроить на любой вкус — привязать службу к определенному exe, ограничить программу в портах и т.д.
Свойства уже созданного правила для ping
Обновив систему с Windows 8.1 до Windows 10, я не мог создать работоспособное правило для OneDrive. Вроде бы простое правило для %USERPROFILE%\AppData\Local\Microsoft\OneDrive\OneDrive.exe и все должно работать. Но, потратив несколько месяцев, я пришел к тому, что, оказывается, надо было прописывать прямой путь C:\Users\ProfileName\AppData\Local\Microsoft\OneDrive\OneDrive.exe , хотя в предыдущих ОС того же семейства все благополучно работало и с первым вариантом (загадка?).
Накопленный опыт и PowerShell
Список правил, накопленный за N-ое время, я представлю в виде команд для PowerShell — легче автоматизировать. Чтобы можно было запустить в PowerShell скрипт на исполнение, необходимо дать на это разрешение для неподписанных скриптов в системе (для параноиков можно потом вернуть на место):
Блокировка всех исходящих соединений брандмауэром выглядит так:
Команда для добавления правила для всех профилей и исходящего направления для explorer.exe — обновление плиток на Windows 8.1. Полагаю, что и на 10-ке используется:
Пусть у нас первая ячейка содержит название правила, а вторая ячейка хранит путь до программы. И у нас будет N таких двухячеечных строк — сколько штук правил. Все это будем хранить в $programs . Начнем с простого: Internet Explorer, Google Chrome, Tor Browser, Yandex.Browser, Notepad++, Visual Studio 2015, qBittorrent, HWMonitor, OneDrive, PowerShell, PowerShell ISE, Steam, CS GO, TeamViewer и так далее — все более-менее простые приложения, которым для выхода в сеть нужен доступ из 1-2 файлов exe.
Также в табличку можно при желании добавить хитрый Avast (ему еще нужна служба) и Firefox (+служба).
Все строки таблицы будем обрабатывать поштучно следующим образом:
Кроме этого необходимо разобраться с нестандартными правилами и службами. Например, центр обновления работает через svchost.exe по протоколу TCP через порты 80 и 443. А магазин приложений использует для обновления отдельную службу WSService. Помимо этого не забываем про пинг и службы для нужных приложений:
Вот и, пожалуй, все. На этом повествование можно заканчивать. Передаю инициативу теперь в ваши руки, дерзайте! Надеюсь, Вы узнали что-то новое или хотя бы вспомнили хорошо забытое старое. Итоговый скрипт (.ps1) можно обнаружить под спойлером ниже.
В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.
Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.
В этой статье мы расскажем вам, как в брандмауэре запретить программе доступ к сети. Для этого войдите в систему в качестве администратора. Имейте в виду, что блокирование программы в брандмауэре не запрещает ее запуск на компьютере.
Щелкните по Создать правило . Эта опция находится в верхнем правом углу окна. Откроется новое окно для создания правила брандмауэра.
- установите флажок у «Путь программы» и нажмите «Обзор»;
- нажмите «Этот компьютер» в левой части окна;
- прокрутите вниз и дважды щелкните по имени своего жесткого диска (например, «C:»);
- дважды щелкните по папке «Program Files»;
- если программа, которую вы хотите заблокировать, находится в другой папке, перейдите в нее.
- Это необходимо, потому что Windows изменит путь к файлу, когда он откроется в брандмауэре, тем самым правило будет испорчено. Чтобы избежать этого, вручную вставьте путь к файлу.
- Например, чтобы заблокировать Chrome в «C:\Program Files\Google\Application\chrome.exe», выделите все, кроме «\chrome.exe», и замените выделенное скопированным путем.
- Не меняйте имя и расширение программы в конце пути — в противном случае правило работать не будет.
Трижды нажмите Далее . Эта кнопка находится в нижней правой части окна. Вы перейдете на последнюю страницу.
- Например, если вы блокируете Google Chrome, назовите правило «Блокировка Chrome».
Нажмите Завершить . Эта кнопка находится в нижней части окна. Правило будет сохранено и вступит в силу; теперь программа не сможет подключиться к интернету (до тех пор, пока вы не удалите или не отключите правило).
Щелкните по Разрешить запуск программы или компонента через брандмауэр Windows . Вы найдете эту опцию в левом верхнем углу окна брандмауэра.
- Во всплывающем окне нажмите «Да».
- Вы не сможете изменить параметры брандмауэра без прав администратора.
Найдите программу, которую вы хотите заблокировать. В центре страницы отобразятся программы, которые блокируются или не блокируются брандмауэром. Прокрутите список программ и найдите в нем нужную программу.
- нажмите «Разрешить другую программу» под списком;
- нажмите «Обзор»;
- откройте папку программы и найдите в ней EXE-файл программы;
- щелкните по ЕХЕ-файлу;
- нажмите «Открыть», нажмите на имя программы, а затем щелкните по «Добавить», если программа не добавится автоматически.
- Если такой галочки нет, брандмауэр Windows уже блокирует программу.
- Оставьте две галочки справа от программы (у опций «Домашняя или рабочая (частная)» и «Публичные»).
Щелкните по OK . Эта кнопка находится в нижней части окна. Изменения будут сохранены, а программа не сможет подключиться к интернету.
- Если заблокировать программу в брандмауэре, в систему не проникнут вредоносные программы, которые снижают быстродействие компьютера.
- Если вы не знаете, где находится нужная программа, щелкните правой кнопкой мыши по ярлыку программы и нажмите «Расположение файла».
- Если заблокировать программу в брандмауэре, некоторые процессы Windows могут прекратить работу.
L7 firewall проверяет содержимое поля данных, L4 firewall нет
Основная проблема, с которой мы боремся, что сейчас программы сразу пишут так, чтобы они обходили защиту L4 firewall.
У разработчиков есть термин User Experience – у клиента после установки загорелся Skype зелененьким = клиент счастлив. А то, что Skype прошел периметр компании нелегально по соединению, которое было открыто для работы только браузера по портам TCP/80 и 443 – L4 firewall игнорирует, потому что это не его задача смотреть в содержимое пакетов — ему важны лишь в их заголовки.
L7 Firewall удобнее
Если посмотреть на процесс обучения сетевых инженеров, то чаще всего люди, проходят курсы известной компании-производителя сетевого оборудования и это дает хорошее знание технологий работы сетей.
Свежеиспеченному сетевому специалисту может показаться, что все можно сделать правилами на транспортном уровне, где нужно лишь разрешить нужный протокол и порт. Нужно разрешить браузер в Интернет? Открываем TCP/80. Нужно открыть DNS? Открываем TCP/53 или UDP/53. Нужно открыть RDP? Открываем TCP/3389. И написание правил на L4 firewall становится стандартом в компании.
Надо сказать, что многие ИТ специалисты в курсе про понятие statefull inspection. Но одновременно для многих является откровением, что разные firewall поддерживает satefull inspection для разного набора приложений. У меня есть определенная статистика, поскольку работал преподавателем курсов по Firewall в учебном центре компании Информзащита. Что же я вижу? Кто-то думает, что statefull inspection – это только про разрешение принимать обратно ответы протоколов TCP/UDP/ICMP. А как быть с более сложными приложениями? Например, как отследить два TCP соединения, которые делает протокол FTP на 21 и 20 порты — они зависят друг от друго? Там нужно не просто принимать ответ, так еще и второе соединение разрешать в зависимости от команды PORT внутри управляющего соединения на 21 порту. А сколько еще команд на открытие новых соединений внутри себя дают приложения? Резюмируя, в сетях сейчас используются и обычные access list, которые не понимают команду PORT внутри FTP протокола, и есть L4 firewall, которые разбирают команду PORT и автоматически открывают нужный порт, есть кто пошел дальше и смотрит в более сложные команды протоколов MS RPC или ICS/SCADA протоколов. Но все возможные приложения L4 firewall не смотрит и эти firewall тоже в общем-то отличаются количеством реализованных внутри Application Layer Gateway (ALG).
К чему я клоню? Убежденность, что достаточно помнить основные порты TCP/UDP – не работает.
В мире уже несколько тысяч приложений и все они пользуются компьютерными сетями. И никакой сетевой инженер не в состоянии помнить все эти порты.Откровением для сетевых инженеров являются задачи открыть порты для приложения посложнее, например, VNC. Никто не помнит какие там порты и приходится уже использовать google.
При публикации первой части я провел опрос и вижу, что до сих пор люди готовы запоминать номера портов — мнения разделились 50 на 50: кто-то ответил, что готов помнить все 4 порта приложения VNC.
Пожалуй рекордсменом по числу портов является Lync (он же Skype for Business). Около 40 портов. Реально ли их запомнить?
Если вы заглянете в Microsoft TechNet, где описано, какие порты нужно открыть, то хочется написать правило permit any to any, потому что там порядка 40 портов и часть из них должны открываться динамически. А это катастрофически неудобно прописывать в L4 firewall.
Получается, что сетевому инженеру удобнее писать в правилах приложения L7 и нужно, чтобы firewall сам автоматически открывал нужные порты.
Нужно открыть VNC? Пишешь в правиле слово VNC и уже firewall понимает какие протоколы нижележащие нужно открыть. Это ведь удобно.
Пример. Отчет NGFW по отдельным категориям трафика.
В среднем доступом в Интернет из корпоративной сети пользуется 200-300 приложений. Межсетевой экран уровня приложений показывает какие это приложения и может эти приложения фильтровать для всех или для конкретных пользователей и фильтровать файлы по типам или контенту, которые идут в разрешенных приложениях у всех пользователей корпоративной сети. Также не забываем что в NGFW, параллельно работают функции безопасности: IPS, антивирус, anti-spyware, URL фильтр, DNS фильтр, Threat Intelligence и так далее. То есть мы не просто разрешаем приложения, а делаем это безопасно.
Сложные правила
Для отдельного ПК или небольших сетей базовых возможностей вполне хватает, для настройки сложных правил в firewalld изначально предлагался так называемый direct-синтаксис, чуть позже появился собственный язык Rich Language. В первом варианте достаточно знать синтаксис iptables, рекомендуется использовать в крайнем случае, так как правила не сохраняются после перезагрузки.
Синтаксис direct правила такой:
Добавляем правило, разрешающее соединение по 25-му порту:
Пробросим соединение по 22-му на другой сервер:
Большой плюс Rich Language в том, что все параметры можно описать в XML в файле зоны. Формат файла очень простой и повторяет названия параметров:
Настройка файрвола — дело привычки. Часто удобнее вбить команду, которой пользуешься уже не один год, чем осваивать новую утилиту. Поэтому иногда все-таки хочется вернуть классический инструмент. Это не проблема. Iptables в CentOS 7 не ставится, поэтому его нужно вернуть:
Чтобы не настраивать все повторно, лучше сохранить текущие правила, сгенерированные firewalld.
Останавливаем firewalld и запускаем iptables:
Проверяем текущие правила:
Запрещаем автозапуск firewalld при загрузке ОС:
Пример туннеля TCP-Over-DNS
По собранным пакетам трафика на картинке видно, что идут соединения по 53 порту TCP, что обычно рассматривается как работа протокола DNS. Однако, если присмотреться, то видно, что в поле Text протокола DNS находится какой-то зашифрованный текст. Это реализация туннеля TCP-Over-DNS, которую я часто встречаю в корпоративных сетках. Слева список других туннелей, которыми могут воспользоваться и ваши пользователи или хакеры. Дает ли такую информацию L4 firewall? Нет. Поэтому, если нужно обезопасить компанию от несанкционированных туннелей, то нужно анализировать содержимое передаваемых данных и именно по ним разбирать какое же приложение в данный момент использует это TCP соединение.
Читайте также: