Настройка брандмауэра Windows из командной строки cmd | Soft Setup

Брандмауэр на основе зон

Firewalld – это брандмауэр на основе зоны: каждая зона может быть настроена так, чтобы принимать или отклонять некоторые службы или порты и, следовательно, с другим уровнем безопасности.

Зоны могут быть связаны с одним или несколькими сетевыми интерфейсами.

Обычно firewalld поставляется с набором предварительно сконфигурированных зон: чтобы перечислять эти зоны и, в общем, взаимодействовать с брандмауэром, мы будем использовать утилиту firewall-cmd.

Я работаю в системе Fedora 27, давайте посмотрим, какие существуют доступные зоны:

Основные понятия межсетевого экрана

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

От используемого интерфейса напрямую зависят применяемые правила. Например, при подключении к общедоступному Wi-Fi сетевой экран повысит уровень контроля, а в домашней сети откроет дополнительный доступ для участников цепи. В рассматриваемом фаерволе присутствуют такие зоны:

Сами же политики бывают временные и постоянные. При появлении или редактировании параметров действие фаервола сразу меняется без надобности перезагрузки. Если же были применены временные правила, после рестарта FirewallD они будут сброшены. Перманентное правило на то так и называются — оно будет сохранено на постоянной основе при применении аргумента —permanent.

Введение

Начиная с версии 7 Rhel и CentOS и версии 18 Fedora, firewalld является системой брандмауэра по умолчанию.

Одной из его отличительных черт является его модульность: он работает над концепцией зон – zones

В этом уроке мы узнаем больше об этом и о том, как с ним работать, используя утилиту firewall-cmd.

Что делать, если нужный сервис недоступен?

Брандмауэр firewalld по умолчанию включает в себя многие наиболее распространённые сервисы. Однако некоторым приложениям необходимы сервисы, поддержка которых отсутствует в firewalld. В таком случае у вас есть два выхода.

Firewalld: блокировка ip-адресов, создание исключений

Вы можете добавлять в исключения firewalld доверенные адреса IP адреса или блокировать нежелательные.

Чтобы добавить в исключения конкретный IP- адрес (например 8.8.8.8) на вашем сервере через firewalld, используйте команду:

# firewall-cmd –zone=public –add-rich-rule=’rule family=”ipv4″ source address=”8.8.8.8″ accept’

Проверьте зону, и убедитесь что IP добавлен в исключения в правиле rich rules:

# firewall-cmd –zone=public –list-all

Panic mode

Panice mode- это режим, который следует использовать только в ситуациях, когда есть серьезные проблемы с сетевой средой.

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

Он может быть включен таким образом:

# firewall-cmd --panic-on

Чтобы выйти из этого режима:

# firewall-cmd --panic-off

Можно даже запросить его статус, выполнив:

# firewall-cmd --query-panic

Базовые понятия firewalld

Прежде чем начать работу с утилитой firewall-cmd, давайте ознакомимся с основными понятиями брандмауэра.

Включение брандмауэра firewalld

Для начала нужно запустить FirewallD или убедиться в том, что он находится в активном состоянии. Только функционирующий демон (программа, работающая в фоновом режиме) будет применять правила для межсетевого экрана. Активация производится буквально в несколько кликов:

  1. Запустите классический «Терминал» любым удобным методом, к примеру, через меню «Приложения».
  2. Запуск терминала для дальнейшей настройки фаервола в CentOS 7

  3. Введите команду sudo systemctl start firewalld.service и нажмите на клавишу Enter.
  4. Запуск сервисов фаервола в операционной системе CentOS 7

  5. Управление утилитой осуществляется от имени суперпользователя, поэтому придется подтвердить подлинность, указав пароль.
  6. Ввод пароля для запуска сервисов фаервола в терминале CentOS 7

  7. Чтобы убедиться в функционировании сервиса, укажите firewall-cmd --state.
  8. Просмотр текущего состояния фаервола через терминал в CentOS 7

  9. В открывшемся графическом окне повторно подтвердите подлинность.
  10. Ввод пароля для подтверждения подлинности при просмотре состояния фаервола CentOS 7

  11. Отобразится новая строка. Значение «running» говорит о том, что фаервол работает.
  12. Отображение текущего состояния фаервола в операционной системе CentOS 7

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

Подробнее: Отключение Firewall в CentOS 7

Выключение и включение

Выключение брандмауэра:

netsh advfirewall set allprofiles state off

Включение брандмауэра:

netsh advfirewall set allprofiles state on

Выключение сетевых профилей:

netsh advfirewall set domainprofile state off
netsh advfirewall set privateprofile state off
netsh advfirewall set publicprofile state off

Включение сетевых профилей:

netsh advfirewall set domainprofile state on
netsh advfirewall set privateprofile state on
netsh advfirewall set publicprofile state on

Запрет всех входящих соединений и разрешение исходящих:

Добавление правил для приложений

Чтобы открыть порт для приложения, можно добавить в исключения сервис. Вывести список доступных сервисов:

# firewall-cmd –get-services

Вывод будет содержать большое количество сервисов. Подробная информация о службе содержится в ее xml файле. Эти файлы расположены в директории /usr/lib/firewalld/services.

Например:

# cd /usr/lib/firewalld/services

# cat smtp.xml

Добавление собственных зон

Вы можете создать собственную зону (назову ее our):

# firewall-cmd –permanent –new-zone=our

После создания новой зоны, как и после создания сервиса, нужна перезагрузка firewalld:

# firewall-cmd –reload

success

# firewall-cmd –get-zones

Доступные зоны

Чтобы просмотреть список всех зон, нужно выполнить команду:

# firewall-cmd –get-zones

:/>  Стандартный набор программ для windows 10 список

У меня получился такой список:

Закрытие и открытие портов

Разрешение входящих протоколов TCP и UDP на 80 порт:

netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=UDP localport=80 

Запрет входящих протоколов на 80 порт:

Комбинирования параметров

Можно использовать длинные выражения путем комбинирования сразу нескольких параметров:

netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:MyAppMyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain

Мы создали правило, которое разрешает входящие соединения к приложению MyApp из сетей с ip-адресами 157.60.0.1,172.16.0.0/16 и доменным профилем сетевого подключения.

На официальном сайте Microsoft можно ознакомится с примерами сравнения старого контекста Windows XP и нового, который начал использоваться в Windows 7.

Конвертируем правила iptables в firewalld

Многих пугает переход с Iptables на Firewalld из-за того, что нет привычного вида правил и это заблуждение.

Преобразуем, для примера, следующие правила Iptables

В файле /etc/firewalld/zones/public.xml добавляем строчки:

Создаем файл /etc/firewalld/services/custom_ports.xml:

Либо всю процедуру можно выполнить следующим образом:

Перезагружаем Firewalld и проверяем:

Маскарадинг

Данная команда включает маскарадинг для зоны. Адреса частной сети спрятаны за доступным извне IP адресом и привязаны к нему. Это разновидность трансляции адресов, обычно используется в роутерах. Маскарадинг доступен только для IPv4 из-за ограничений ядра.

Проверяем статус работы:

Перенаправим запросы входящие на настроенный ранее SSH порт на нужный хост:

Также мы можем перенаправить запросы с изменением порта назначения, например:

Настройка зон интерфейсов

Как вы знаете из информации выше, для каждого интерфейса определяется своя зона по умолчанию. Он будет находиться в ней до тех пор, пока настройки не изменятся пользователем или программно. Возможен ручной перенос интерфейса в зону на одну сессию, и осуществляется он активацией команды sudo firewall-cmd –zone=home –change-interface=eth0.

При подобном изменении параметров следует учитывать, что работа сервисов может быть сброшена. Некоторые из них не поддерживают функционирование в определенных зонах, допустим, SSH хоть и доступен в «home», но в пользовательских или особенных сервис работать откажется.

Если вы захотите сбросить произведенные ранее настройки, просто выполните рестарт брандмауэра: sudo systemctl restart firewalld.service.

Порой не всегда удобно изменять зону интерфейса всего на одну сессию. В таком случае потребуется редактировать конфигурационный файл, чтобы все настройки ввелись на перманентной основе. Для этого мы советуем использовать текстовый редактор nano, который устанавливается с официального хранилища sudo yum install nano. Далее остается произвести такие действия:

  1. Откройте конфигурационный файл через редактор, введя sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0, где eth0 — название необходимого интерфейса.
  2. Открытие конфигурационного файла интерфейса фаервола в CentOS 7

  3. Подтвердите подлинность учетной записи для выполнения дальнейших действий.
  4. Ввод пароля для открытия конфигурационного файла интерфейса в CentOS 7

  5. Отыщите параметр «ZONE» и поменяйте его значение на нужное, например, public или home.
  6. Изменение зоны интерфейса через конфигурационный файл в CentOS 7

  7. Зажмите клавиши Ctrl O, чтобы сохранить изменения.
  8. Запись изменений в текстовом редакторе CentOS 7

  9. Не изменяйте имя файла, а просто нажмите на Enter.
  10. Назначение файла для записи изменений в текстовом редакторе CentOS 7

  11. Выйдите из текстового редактора через Ctrl X.
  12. Выход из текстового редактора после изменений CentOS 7

Теперь зона интерфейса будет такой, какой вы ее указали, до момента следующего редактирования конфигурационного файла. Чтобы обновленные параметры вступили в действие, выполните sudo systemctl restart network.service и sudo systemctl restart firewalld.service.

Настройка зоны по умолчанию

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

Для этого существует параметр –set-default-zone=. После этого все интерфейсы будут привязаны к этой зоне:

sudo firewall-cmd –set-default-zone=homesuccess

Настройка правил

Настройка правил может выполняться “на лету” либо через XML.Предлагаю начать с настройки правила для нестандартного порта, например для SSH.

Проверяем, что разрешено на нашем сервере:

Если в конфигурации сервера не используется IPv6 протокол, то лучше его убрать:

Выбираем новый порт для SSH, но запоминаем его в уме.Не надо рваться его сразу поменять в настройках SSH, добавим сразу правило для него на постоянной основе (–permanent):

Перезагрузим правила:

Проверяем:

Отлично. Теперь можно смело изменять настройки SSH и удалять правило на сервис с 22 портом.

Проверяем результат:

Второй вариант настройки – через XML.Рассмотрим на примере настройки SNMP.

Создаем файл /etc/firewalld/services/snmp.xml

Перезагружаем Firewalld:

Добавляем правило на постоянной основе:

И снова перезагружаем Firewalld:

Ограничения по ip адресам

правило ограничивающие подключение одно ip-адреса

Определение сервиса

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

Перенаправление портов в firewalld

Вы можете создать правило перенаправления портов (port forwarding) в firewalld. Чтобы перенаправить 443 порт на 9090:

# firewall-cmd –zone=public –add-forward-port=port=443:proto=tcp:toport=9090 –permanent

Чтобы удалить правило перенаправления порта:

# firewall-cmd –zone=public –remove-forward-port=port=443:proto=tcp:toport=9090

Полезные команды при работе в firewalld

Включить режим блокировки всех исходящих и входящих пакетов:

:/>  Набор актуальных обновлений для microsoft windows 10 10.0.14393 ver 1607 за 11, 10, 16 Ru скачать торрент

Выключить режим блокировки всех исходящих и входящих пакетов:

Проверить режим “паника”:

Перезагрузить правила firewalld без потери текущих соединений:

Перезагрузить правила firewalld и сбросить текущие соединения:

Добавить к зоне сетевой интерфейс:

В конфигурации интерфейса ens3 можно указать, какой зоне принадлежит этот интерфейс. Для этого добавим ZONE=work.Если параметр ZONE не указан, будет назначена зона по-умолчанию.

Разрешить диапазон портов:

Открыть порт MySQL

Более подробную информацию, а также описание всех возможностей можно найти на сайте FedoraProject

Помогла ли вам эта статья?

ДАНЕТ

Правила брандмауэра по умолчанию

Прежде ем начать менять правила, давайте ознакомимся со стандартным набором правил firewalld.

Правила для приложений

Разрешить соединения для программы MyApp.exe

netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:MyAppMyApp.exe" enable=yes

Просмотр правил по умолчанию и доступных зон

Даже работающий в штатном режиме фаервол имеет свои определенные правила и доступные зоны. Перед началом редактирования политик советуем ознакомиться с текущей конфигурацией. Делается это при помощи простых команд:

  1. Определить функционирующую по умолчанию зону поможет команда firewall-cmd --get-default-zone.
  2. Просмотр установленной по умолчанию зоны фаервола в CentOS 7

  3. После ее активации вы увидите новую строку, где отобразится необходимый параметр. Например, на скриншоте ниже активной считается зона «public».
  4. Отображение установленной по умолчанию зоны фаервола в CentOS 7

  5. Однако активными могут быть сразу несколько зон, к тому же они привязываются к отдельному интерфейсу. Узнайте эту информацию через firewall-cmd --get-active-zones.
  6. Просмотр всех активных зон фаервола в CentOS 7

  7. Команда firewall-cmd --list-all выведет на экран правила, заданные для зоны по умолчанию. Обратите внимание на скриншот ниже. Вы видите, что активной зоне «public» присвоено правило «default» — функционирование по умолчанию, интерфейс «enp0s3» и добавлено два сервиса.
  8. Просмотр правил активных зон фаервола через терминал в CentOS 7

  9. Если появилась надобность узнать все доступные зоны брандмауэра, введите firewall-cmd --get-zones.
  10. Получение списка всех доступных зон фаервола через терминал в CentOS 7

  11. Параметры же конкретной зоны определяются через firewall-cmd --zone=name --list-all, где name — название зоны.
  12. Отображение правил указанной зоны фаервола через терминал в CentOS 7

После определения необходимых параметров можно переходить к их изменению и добавлению. Давайте детально разберем несколько самых популярных конфигураций.

Разрешение протоколов

Следующее правило принимает входящий трафик по ICMP-протоколу, проще говоря разрешает ping:

Свяжите зону с интерфейсом

Создание зоны – это только первый шаг: теперь мы должны связать ее с сетевым интерфейсом.

Предположим, мы хотим использовать нашу новую созданную зону, связывая ее с интерфейсом ethernet через ens5f5: вот команда, которая позволяет нам выполнить задачу:

# firewall-cmd --permanent --zone=linuxconfig --add-interface=ens5f5

если мы запрашиваем зону на назначенные ей интерфейсы, мы должны увидеть:

# firewall-cmd --zone=linuxconfig --list-interfaces
ens5f5

Удаление интерфейса из зоны так же просто:

# firewall-cmd --remove-interface=ens5f5 --zone=linuxconfig

Создание пользовательской зоны

До сих пор мы посмотрели, как изменять существующие зоны.

Также можно создать несколько новых, и это так же просто.

Предположим, мы хотим создать пользовательскую зону под названием linuxconfig:

# firewall-cmd --permanent --new-zone=linuxconfig

Создана новая пустая зона: по умолчанию в ней не разрешены службы или порты.

Также можно создать зону, загрузив файл конфигурации:

# firewall-cmd --permanent --new-zone-from-file=file --name=linuxconfig

Где file – это путь к файлу, содержащему определение зоны.

Обратите внимание, что при создании или удалении зоны параметр -permanent является обязательным: ошибка будет отображена, если он не указан.

Создание правил для приложений

Теперь давайте посмотрим, как делать исключения для сервисов, которые должно поддерживать ваше приложение.

Создание правил для программ и утилит

В самом начале статьи мы рассказали о действии каждой зоны. Определение сервисов, утилит и программ в такие ветви позволит применить для каждой из них индивидуальные параметры под запросы каждого пользователя. Для начала советуем ознакомиться с полным списком доступных на данный момент сервисов: firewall-cmd –get-services.

Результат отобразится прямо в консоли. Каждый сервер разделен пробелом, и в списке вы сможете с легкостью отыскать интересующий вас инструмент. Если же нужный сервис отсутствует, его следует дополнительно установить. О правилах инсталляции читайте в официальной документации программного обеспечения.

Указанная выше команда демонстрирует только названия сервисов. Детальная информация по каждому из них получается через индивидуальный файл, находящийся по пути /usr/lib/firewalld/services. Такие документы имеют формат XML, путь, например, к SSH выглядит так: /usr/lib/firewalld/services/ssh.xml, а документ имеет следующее содержимое:

SSHSecure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

Способ 1: настройка порта

Проще всего в такой ситуации открыть порт приложения в необходимой зоне брандмауэра. Нужно просто указать порт или диапазон портов и протокол (TCP или UDP).

Допустим, приложение, которое использует порт 5000 и протокол TCP, нужно добавить в зону public. Чтобы включить временную поддержку приложения, используйте параметр –add-port= и укажите протокол tcp или udp.

:/>  Просмотреть примененные политики gpo

sudo firewall-cmd –zone=public –add-port=5000/tcpsuccess

Убедитесь, что операция прошла успешно:

sudo firewall-cmd –zone=public –list-ports5000/tcp

Также можно указать последовательный диапазон портов, отделив первый и последний порт диапазона с помощью тире. Например, если приложение использует UDP-порты 4990-4999, чтобы добавить их в зону public, нужно ввести:

sudo firewall-cmd –zone=public –add-port=4990-4999/udp

После тестирования можно добавить эти правила в постоянный набор правил брандмауэра.

sudo firewall-cmd –zone=public –permanent –add-port=5000/tcpsudo firewall-cmd –zone=public –permanent –add-port=4990-4999/udpsudo firewall-cmd –zone=public –permanent –list-portssuccesssuccess5000/tcp 4990-4999/udp

Способ 2: определение сервиса

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

Сервисы – это наборы портов с определенным именем и описанием. С помощью сервисов проще управлять настройками, но сами по себе они устроены сложнее, чем порты.

Для начала нужно скопировать существующий сценарий из каталога /usr/lib/firewalld/services в каталог /etc/firewalld/services (здесь брандмауэр ищет нестандартные настройки).

Например, можно скопировать определение сервиса SSH и использовать его для определения условного сервиса example. Имя сценария должно совпадать с именем сервиса и иметь расширение .xml.

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Откорректируйте скопированный файл.

sudo vi /etc/firewalld/services/example.xml

В файле находится определение SSH:

Большую часть определения сервиса составляют метаданные. Изменить краткое имя сервиса можно в тегах <short> – это человекочитаемое имя сервиса. Также нужно добавить описание сервиса. Единственное изменение, которое повлияет на работу сервиса – это изменение номера порта и протокола. Вы можете использовать несколько тегов <port/>.

Вернёмся к сервису example; допустим, он требует открыть TCP-порт 7777 и UDP-порт 8888. Определение будет выглядеть так:

Сохраните и закройте файл.

Перезапустите брандмауэр:

sudo firewall-cmd –reload

Теперь он появится в списке доступных сервисов:

Требования

Для работы вам понадобится сервер CentOS 8, настроенный по этому мануалу. Войдите в систему как пользователь sudo и приступайте к работе.

Углубленные правила | rich rules

В определенных ситуациях нам может потребоваться создать более сложное правило, а не просто разрешить некоторые порты или службы в зоне.

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

Для этого нужны – Rich rules.

Правило в основном состоит из двух частей: в первом мы указываем условия, которые должны выполняться для применяемого правила, а во втором – действие, которое должно выполняться: принимать, сбрасывать или отклонять – accept, drop, ,reject.

Предположим, мы хотим заблокировать трафик с компьютера с ip 192.168.0.37 в локальной сети: вот как мы будем составлять наше правило:

# firewall-cmd --zone=linuxconfig --add-rich-rule="rule 
    family="ipv4" 
    source address=192.168.0.37 
    service name=ssh 
    reject 

Чтобы добавить правило, мы использовали опцию -add-rich-rule, описывающую правило в качестве аргумента.

Правило начинается с ключевого слова правила. В family мы указали, что правило применяется только к ipv4-пакетам: если это ключевое слово не указано, правило применяется как к ipv4, так и к ipv6.

Затем мы предоставили исходный адрес, который получает пакеты для запуска правила с адресом источника.

С помощью service мы указали тип сервиса для правила, в данном случае ssh.

Наконец, мы предоставили действие, которое должно быть выполнено, если пакет соответствует правилу, в этом случае reject.

Если мы попытаемся установить соединение ssh с машиной с 192.168.0.37 ip, мы получим:

ssh 192.168.0.35
ssh: connect to host 192.168.0.35 port 22: Connection refused

Вы можете посмотреть документацию по firewalld, чтобы увидеть весь диапазон доступных параметров и опций.

Установка и включение firewalld в centos

В CentOS 7/8 firewalld устанавливается по умолчанию при установке ОС. Если вы его удалили и хотите установить firewalld, можете воспользоваться стандартным менеджером yum/dnf:

# yum install firewalld -y — для Centos 7# dnf install firewalld -y — для Centos 8

Чтобы демон firewalld запускался автоматически со стартом сервера, нужно добавить его в автозагрузку:

# systemctl enable firewalld

И запустить:

# systemctl start firewalld

Проверить статус сервиса:

# systemctl status firewalld

Заключение

Теперь вы знаете, как работает firewalld, знакомы с основными понятиями брандмауэра, умеете создавать пользовательские зоны и добавлять сервисы.

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

Много полезного вы найдете в официальной документации firewalld.

Tags:

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