Управление портами в Linux (Ubuntu/Debian/CentOS)
Как много времени проходит с момента заказа сервера на хостинге до первого подключения к готовому серверу? Несколько минут. На сколько полученный сервер готов к тому, чтобы использовать его на полную? На 100%. Ну или почти на 100. Точнее, совсем не на 100. Новый сервер подобен новорождённому ребёнку. У него одежды, нет приобретённого иммунитета и нет почти никаких навыков. Он уязвим для любого внешнего воздействия. И защиту от окружающих угроз мы должны ему дать. Наш новый сервер на начальном этапе не готов противостоять всему, что приходит к нему извне. А значит, его необходимо оснастить защитой. Такая защита для сервера – брандмауэр, или файрвол (firewall), или межсетевой экран.
Обмен информацией между узлами сети происходит посредством портов открытых для использования на узлах. Для того, чтобы иметь гарантии прохождения исключительно легитимного трафика, следует уметь управлять портами нашего сервера при помощи брандмауэра.
Управление портами в Ubuntu и Debian
В операционных системах Ubuntu и Debian для управления брандмауэром довольно часто применяется утилита iptables. Её упрощённым интерфейсом является UFW (Uncomplicated Firewall). Открытие доступа к серверу для какого-либо приложения происходит путём регистрации этого приложения в UFW.
В Ubuntu интерфейс UFW как правило присутствует по умолчанию, в Debian же необходимо будет сначала его проинсталлировать. Перед установкой брандмауэра рекомендуется обновить репозитории:
$ sudo apt update $ sudo apt install ufw
Список приложений, зарегистрированных в брандмауэре, доступен по следующей команде:
$ sudo ufw app list
Если вы производите первоначальную настройку межсетевого экрана используя подключение к серверу по ssh , логично было бы сразу же прописать в UFW соответствующее этому протоколу правило:
$ sudo ufw allow SSH
Эту команду также можно применить используя соответствующий номер порта вместо имени протокола. Для ssh это, как правило, порт 22:
$ sudo ufw allow 22
В Ubuntu команда для разрешения подключения по ssh выглядит как:
$ sudo ufw allow OpenSSH
Для того, чтобы межсетевой экран начал работать, его необходимо запустить:
$ sudo ufw enable
Теперь, можно добавить в UFW правило, которое позволит разрешить передачу данных, например, по порту 80, или другими словами, при помощи протокола http . Это можно прописать командой:
$ sudo ufw allow 80
$ sudo ufw allow http
По аналогии можно также разрешить трафик с использованием порта 443, то есть по протоколу https :
$ sudo ufw allow 443
$ sudo ufw allow https
Подобными инструкциями можно давать разрешения для подключений, использующих несколько портов. Например, так выглядит команда на открытие целого диапазона портов (32810-32814):
$ sudo ufw allow 32810:32814/udp
Также, помимо номеров портов и названий протоколов, в разрешительных правилах есть возможность использовать IP-адреса. Вот как выглядит команда, разрешающая подключение только с IP-адреса 10.10.10.233:
$ sudo ufw allow from 10.10.10.233
Или из одной определённой подсети:
$ sudo ufw allow from 10.10.10.
0/24
Или с одного определённого IP-адреса и только по одному определённому порту:
$ sudo ufw allow from 10.10.10.233
to any port 22
Естественно существует возможность и закрыть доступ для уже открытого подключения через определённый порт. Для этого используется команда deny . Следующей командой можно запретить подключения по протоколу http :
$ sudo ufw deny http
Инструкция для закрытия всех подключений с определённого IP-адреса выглядит следующим образом:
$ sudo ufw deny from
10.10.10.233
где 10.10.10.233 – IP-адрес, для которого будут закрыты все соединения на наш сервер.
Уже созданные правила можно также удалить. Сделать это можно по номеру правила. Чтобы узнать номера правил, используйте следующую команду:
$ sudo ufw status numbered
Вывод данной команды выглядит следующим образом:
Номера правил указаны в скобках в начале строки. Например, правило для подключения по 443-му порту имеет номер 3. Исходя из этого, команда для удаления этого правила будет выглядеть как:
$ sudo ufw delete
3
То же самое можно сделать командой:
$ sudo ufw delete allow 443/tcp
Посмотреть текущее состояние межсетевого экрана позволяет команда:
$ sudo ufw status
Для отключения брандмауэра служит следующая инструкция:
$ sudo ufw disable
Управление портами в Centos
Клиентским интерфейсом для работы с межсетевым экраном в Centos является программа firewalld. Как правило, firewalld уже по умолчанию входит в состав служб Centos. Но если вдруг это не так, для его установки используйте следующие команды:
$ sudo dnf update -y
$ sudo dnf install firewalld -y
Если окажется, что firewalld уже был установлен в системе, команда вернёт следующее сообщение:
Текущее состояние службы можно увидеть набрав команду:
$ systemctl status firewalld
Если служба работает штатно, то вывод команды будет выглядеть так:
Список приложений, которым доступ в firewalld уже предоставлен, можно увидеть с помощью команды:
$ sudo firewall-cmd --permanent --list-all
Такие приложения перечислены в строке services :
Чтобы предоставить приложению или протоколу, например, http , возможность производить подключения к нашему серверу, необходимо использовать команду следующего вида:
$ sudo firewall-cmd --permanent --add-service=http
Этот протокол должен добавиться в строку services :
Аналогичным образом можно открыть доступ для подключений к серверу по протоколу https :
$ sudo firewall-cmd --permanent --add-service=http
s
В firewalld также есть возможность предоставить доступ для подключений по определённому порту. Так, например, будет выглядеть команда для открытия доступа по udp-порту 32810:
$ sudo firewall-cmd --zone=public --add-port=32810/udp
А так пишется команда для открытия доступа по пулу портов, например, для udp-портов с 32811 по 32814:
$ sudo firewall-cmd --zone=public --add-port=32811-32814/udp
И чтобы убедиться, что данные порты добавлены в список открытых, необходимо использовать следующую инструкцию:
$ sudo firewall-cmd --zone=public --list-ports
Доступ для подключений по определённому порту можно также и заблокировать. Например, закрытие доступа по udp-порту 32814 осуществляется командой:
$ sudo firewall-cmd --zone=public --remove-port=32814/
udp
И наконец, для применения всех внесённых изменений, брандмауэр необходимо перезапустить:
$ sudo firewall-cmd --reload
Заключение
Итак, мы рассмотрели установку и запуск межсетевых экранов в операционных системах Linux, таких как Ubuntu, Debian и Centos. А также, мы научились открывать доступ для подключений к нашему серверу через определённые порты и протоколы.
Что такое порт форвардинг и как пробросить порты
Высшее образование по специальности «Информационные системы». Опыт работы системным администратором — 5 лет.
Задать вопрос
Проброс портов потребуется вам дома, если нужно получить доступ к какому-то домашнему оборудованию из интернета. Маршрутизатор не позволяет делать такие вещи напрямую, это служит дополнительной защитой от атак из глобальной сети. Иногда требуется дать подключение из внешней сети к внутреннему устройству. Тогда и пригодится перенаправление портов.
Содержание
- Зачем нужен проброс портов
- Что необходимо для выполнения перенаправления
- Ручной проброс через кабинет роутера
- Как пробросить порты с помощью
- Windows
- iptables в Линукс
- SSH-туннеля
- Заключение
Зачем нужен проброс портов
Домашние устройства находятся в локальной сети. Для доступа к интернету они используют маршрутизатор. Через него проходят данные от каждого домашнего устройства и отправляются в интернет. После получения ответа он сам раздает нужные данные обратно. Получается такая ситуация, что домашние девайсы видят интернет и могут получать из него данные, а из интернета виден только маршрутизатор.
Он выполняет роль сетевого шлюза, который защищает локальную сеть от проникновения. Поэтому и ценятся устройства, имеющие встроенные системы защиты, с их помощью внутренняя сеть остается в большей безопасности. Если вы не знаете, кто шлет сигналы в интернет, то и подобрать ключи к нему не сможете или это будет трудно.
Есть вещи, которые почти бесполезны при использовании в локальной сети. Это камеры видеонаблюдения или FTP-сервера. Доступ к камерам нужен всегда, чтобы в любой момент можно было посмотреть, что происходит дома или на другой территории. FTP для домашнего использования заводить смысла нет, есть способы организовать обмен данными проще. Так что для его использования тоже потребуется подключение из интернета.
Чтобы подключаться к таким девайсам используют переадресацию. На маршрутизатор приходит пакет с указанием номера порта, а тот его переадресуют напрямую камере или серверу. Получается, что человек из интернета общается сразу с устройством, минуя роутер. Такой способ позволяет получать данные напрямую, но при его перехвате, проникнуть в сеть становится проще.
Подключение устройств для прямого обмена данными с интернетом повышает опасность для домашней сети, но иногда другого выбора нет.
Что необходимо для выполнения перенаправления
Для начала вам нужен белый IP-адрес. Белый – это значит статический адрес. Обычно при каждом подключении провайдер выдает вам адрес из своего пула свободных IP. Каждый раз он оказывается разным, а для подключения его нужно знать. Чтобы избежать проблем с подключением, обратитесь к провайдеру и попросите, чтобы он дал вам статический адрес.
Услуга по предоставлению постоянного адреса платная, но сумма в месяц получается небольшая. Так что заплатите, если такая услуга предоставляется. Подключение такой услуги несет и угрозу, потому что вы всегда доступны по этому адресу. Это упрощает попытки подключение к вашему оборудованию злоумышленников.
Если провайдер не оказывает услуг по покупке белых адресов, то посмотрите в параметры роутера. Некоторые из них умеют работать в dynDNS, который можно использовать вместо адреса. Если на роутере такой настройки нет, то воспользуйтесь одним из сервисов, которые предоставляют услуги по использованию имени. После подключения к такому сервису, к роутеру можно обращаться по имени, а не по адресу.
Теперь на том оборудовании, которое «смотрит» в интернет настраивается переадресация портов. Прописываете, что данные, пришедшие на такой-то порт направляются такому-то устройству. Здесь тоже можно указать порт, на который они пойдут, если это важно. Теперь все полученные пакеты в неизменном виде отправятся вашему домашнему девайсу. Если порт не указывать, то все пакеты идут маршрутизатору, а оттуда распределяются стандартным порядком.
Ручной проброс через кабинет роутера
Проще всего перенаправить пакеты через настройку роутера. У них обычно есть встроенные параметры, которые называются «переадресация», «проброс портов», «port forwarding», «виртуальные порты» или каким-то похожим образом. Если название не очевидно, то лучше найти инструкцию для своей модели.
На Dlink можно сделать через мастер настройки виртуального сервера. На главном экране нажмите на него, откроется еще одно окно, в котором выберите внутренний IP, на который будут передавать пакеты.
Или можно настроить стандартный проброс, для этого зайдите в расширенные настройки, потом «Виртуальные серверы» в разделе «Межсетевой экран». В открывшемся коне нажмите на «Добавить».
Здесь заполните данные для установки соединения. Главное – это поставить значения во внешнем и внутреннем порте, чтобы маршрутизатор понимал, откуда и куда переправлять данные. Тут же можно указать и внешние с внутренними адресами.
Как пробросить порты с помощью
Бывает и так, что внешним устройством в сети является компьютер или специально созданный для этого сервер. Это не значит, что вам придется обязательно ставить роутер или настраивать все заново, большинство систем позволяет пробросить порты. Здесь покажем несколько примеров того, какие параметры нужно устанавливать, чтобы все заработало.
Если у вас более экзотические варианты и указанные способы вам не подходят, то придется смотреть инструкции конкретно под вашу версию операционной системы. Хотя что-то более сложное обычно носит специализированный характер и на домашних компьютерах не стоит.
Windows
Откройте меню пуска и наберите там «cmd», по найденной программе щелкните правой кнопкой мыши и выберите в появившемся меню «Запуск от имени администратора». В открытой командной строке введите следующую команду:
netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=nnn connectaddress=xxx.xxx.xxx.xxx connectport=nnn
В команде нужно установить эти данные:
- listenaddress – это тот адрес, с которого будут передавать пакеты.
- listenport – порт на адресе, принимающем пакеты, который будет прослушиваться для получения информации.
- connectaddress — удаленный или локальный адрес на который перенаправляются соединения.
- connectport — удаленный или локальный порт на который перенаправляются соединения.
Чтобы посмотреть все созданные правила введите netsh interface portproxy show all, после этого списком отобразятся все доступные перенаправления. Для удаления используйте netsh interface portproxy delete v4tov4, только впишите тут те адреса, которые были прописаны в начальной команде.
Эти способы работают и в Windows 10, и в других системах, начиная с Windows Server 2003, в котором и добавили возможность использования этих команд. Во всем, что было до него так сделать не получится. Вот только такими системами лучше не пользоваться, потому что их поддержка давно отменена, так что там нет обновлений и устранения угроз безопасности.
iptables в Линукс
В линуксе действовать будем с помощью таблиц маршрутизации iptables. Действовать будем с помощью команд, хотя в некоторых системах, таких как Linux Ubuntu есть и графическая оболочка, через которую можно провести такие операции.
Сначала включаем возможность пробрасывать порты в принципе. Для этого вводим команду:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь открываем /etc/sysctl.conf и ищем там строку #net.ipv4.ip_forward=1, удаляем с неё значок комментария, чтобы она стала снова активна. Теперь пишем команду:
sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
Вместо enp0s3 подставляем название вашего внешнего интерфейса, вместо enp0s8 ставим название внутреннего интерфейса. Вся этак команда разрешает проброс портов и передачу данных из внешней сети во внутреннюю.
Теперь пишем сами правила для перенаправления:
- sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
В тех местах, где написан курсив, вам нужно проставить свои значения. Первая команда будет отправлять все поступившие на определенный порт внешнего интерфейса данные на определенный порт по внутреннему адресу. Вторая команда делает обратную операцию, отправляет данные с определенного порта устройства внутренней на определенный порт внешней сети.
Теперь нужно создать файл, в который запишем наши новые правила, на случай, если они слетят. Выполняем команду:
- sudo nano /etc/nat
Вписываем в файл наши созданные правила. - sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
- sudo nano /etc/network/interfaces
Открываем файл интерфейсов. - Дописываем в конце строчку pre-up /etc/nat . Это позволит подгружать файл с командами после каждой перезагрузки системы.
Если вдруг захотите посмотреть все действующие правила, то введите в консоли sudo iptables -L -t nat . Отобразятся все действующие правила.
SSH-туннеля
SSH-туннели используются для безопасного внешнего доступа и передачи данных из интернета во внутреннюю сеть. Чем-то их действие похоже на организацию VPN-сервера и передачу данных внутри этой приватной сети.
Только если впн бывает еще и общим, то про SSH этого не скажешь. Такие туннели организуют для безопасной связи со своей локальной сетью или каким-то устройством в нем. Если у вас уже организован доступ к какому-то оборудованию внутри сети, то можно будет пробросить порт через него, чтобы получить нужный доступ.
SSH-туннели используют для безопасно передачи данных и подключению к свое оборудованию, но не к каждому девайсу так удобно подключаться.
Проблема возникает такая же, как и в случае с роутерами. Если у вас построен полноценный туннель, то он может быть организован на Линуксе, виндовсе или используя какую-то операционную систему с вашего маршрутизатора. При этом настройка параметров и ограничений тоже лежит на вас.
Команда для проброски портов выглядит так на большинстве устройств:
$ ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66
Теперь доступ к устройству можно получить по адресу http://localhost:2222 или командой $ ssh -p2222 localhost. Все это делается через ваш хост 99.88.77.66 к которому уже построен и настроен туннель, так что само его построение не рассматриваем.
Заключение
Проброс портов требуется в нескольких случаях, но всегда нужен для получения доступа к какой-то информации. Проводить его стоит с осторожностью, также хорошо, если вы сможете как-то дополнительно защитить оборудования, к которому теперь подключаетесь из сети. Сам белый адрес увеличивает шансы на взлом оборудования, а если иметь еще и незащищенное соединение через один из портов, то шансы увеличиваются.
Проблемы возникнут и при параноидальной настройке фаерволлов и антивирусов на компьютере или маршрутизаторе. Лучше заранее создайте исключения для каждого проброшенного порта и будущего соединения. Если этого не сделать, то в случайный момент времени антивирус может зарезать это соединение. Фаерволл-то его сразу не пропустит, если оно ему не нравится. А вот комплексные решения могут подложить свинью в самый неожиданный момент.
Как открыть порт на VPS
Для данной ОС управление открытием и закрытием портов как правило производится через файрволл ufw.
На свежеустановленной системе данный файрволл по умолчанию отключен, нужно будет открыть порт для ssh-соединения и включить файрволл. Если сначала включить файрволл, то доступа через ssh мы лишимся.
Команды:
sudo ufw status verbose
— проверяем статус, если результатом выполнения команды будет inactive, то файрволл в настоящий момент выключен.
sudo ufw allow 22/tcp
— открываем стандартный порт для ssh. Если у Вас ssh у Вас работает по другому порту, то замените 22 на его номер.
Если открытие порта пройдет успешно, то появится сообщение «Rules updated».
sudo ufw enable
— включаем файрволл.
Появится предупреждение о возможной блокировке ssh, соглашаемся.
Если после этого повторно выполнить sudo ufw status verbose, то увидим, что статус сменился на active, а также уже открытые порты.
После активации файрволла открыть порт можно командой: sudo ufw allow порт/протокол (можно указать диапазон портов через двоеточие). Пример:
sudo ufw allow 6000/tcp
sudo ufw allow 6000:6007/udp
Выполнив ещё раз sudo ufw status verbose можем убедиться, что порты успешно открылись.
2. Открыть порт на Ubuntu 18.04.
Будем использовать iptables. Посмотрим список действующих правил iptables. Команда:
sudo iptables -L
На чистой VPS правил быть не должно, результатом этой команды должны быть сообщения, как на скриншоте.
Здесь мы видим три цепочки OUTPUT, INPUT и FORWARD, за открытые порты отвечает цепочка INPUT, именно через нее проходят все входящие пакеты. Сейчас политика по умолчанию — ACCEPT, это значит, что подключение ко всем портам разрешено.
Добавим правила, которые разрешат обмен данными между любыми портами на локальном интерфейсе lo и добавим в разрешенные уже установленное нами подключение, чтобы не потерять доступ к VPS по ssh. Команды:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A INPUT -m state —state ESTABLISHED, RELATED -j ACCEPT
Также откроем 22 порт для ssh-доступа в дальнейшем. Команда:
sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT
И сменим политику по умолчания для входящих подключений с разрешения на блокирование. Команда:
sudo iptables -P INPUT DROP
Сохраним изменения командой (иначе они пропадут после перезагрузки VPS):
sudo /sbin/iptables-save
Теперь снова смотрим список действующих правил командой:
sudo iptables -L
Видим, что для входящих (цепочка INRUT) политика сменилась на DROP, а разрешены только те входящие подключения, правила для которых мы добавили выше.
Новый порт можно открыть командой вида: sudo iptables -I INPUT -p протокол —dport номер порта -j ACCEPT.
Обратите внимание, что ранее мы использовали -A, сейчас используем -I, чтобы избежать конфликта с правилам и добавленными ранее — опция -I добавит новое правило в начало списка.
Пример команды на открытие порта 1888 для протокола tcp:
sudo iptables -I INPUT -p tcp —dport 1888 -j ACCEPT
Также не забываем сохранить командой: sudo /sbin/iptables-save
Командой sudo iptables -L снова проверим список правил. Видим, что порт успешно открыт.
3. Открытие портов через CSF
Сначала обновим пакеты на VPS, команды:
a pt-get update -y
apt-get upgrade -y
Сначала установим модули Perl, необходимые для CSF. Команды:
На Centos
yum install perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch perl-GDGraph$ -y
На Ubuntu/Debian
apt-get install libwww-perl liblwp-protocol-https-perl libgd-graph-perl -y
Далее скачаем архив csf с официального сайта. Распакуем, перейдем в каталог с распакованным архивом и запустим установку.
wget https://download.configserver.com/csf.tgz
tar -zxvf csf.tgz
cd csf
sh install.sh
В случае успешной установки должно вывестись сообщение «Install ation Completed». Далее нужно протестировать работу модулей командой:
perl /usr/local/csf/bin/csftest.pl
Если все установлено и работает корректно, результатом вывода должно стать сообщение «RESULT: csf should function on this server».
Следующим шагом откроем конфигурационный файл CSF и переведем файрволл из тестового режима в рабочий. Команда:
nano /etc/csf/csf.conf
Нам нужно сначала в файле изменить значение TESTING = «1» на TESTING = «0».
Далее запускаем файрволл и проверяем его статус. Должно быть «Active».
systemctl start csf
systemctl status csf
Чтобы теперь открыть порт через CSF, нам нужно снова открыть файл /etc/csf/csf.conf и найти строки, начинающиеся с директив TCP_IN, TCP_OUT, UDP_IN, UDP_OUT.
Секция TCP_IN открывает порты для входящих соединений по tcp-протоколу, секция TCP_OUT — для исходящих.
Секции UDP_IN и UDP_OUT = для входящих и исходящих соединений по udp-протоколу.
В соответствующей строке через запятую указываем номера портов, которые нужно открыть. В данном примере прописан tcp-порт 8888 для входящих соединений, также оставлены порты, которые в момент установки csf прописывает по умолчанию.
Сохраняем изменения и перезапускаем csf командой csf -r
Готово, порт открыт.
4. Открыть порт на Centos 7
На Centos7 в комплекте идет свой файрволл-надстройка над Iptables, который называется Firewalld.
Сначала проверим, запущен ли данный сервис, командой:
sudo system ctl status firewalld
Результатом должно быть «active (running)», как на скриншоте.
В отличие от IPTables, работу данный файрволл ведет не с цепочками правил, а с зонами. Зона представляет из себя набор правил, ограничений и разрешений, которые применяются к конкретному сетевому интерфейсу и для каждого интерфейса может быть выбрана только одна зона.
Есть несколько предустановленных зон:
- drop — блокировать все входящие пакеты, разрешить только исходящие.
- block — в отличие от предыдущего варианта отправителю пакета будет отправлено сообщение по блокировке его пакета.
- public — поддерживаются входящие соединения только для ssh и dhclient.
- external — поддерживает NAT для скрытия внутренней сети.
- internal и home — разрешены сервисы ssh, samba, mdns и dhcp.
- dmz — используется для изолированных серверов, у которых нет доступа к сети. Разрешено только подключение по SSH.
- work — разрешены сервисы ssh и dhcp.
- trusted — всё разрешено.
Проверить, какие зоны назначены сетевым интерфейсам можно командой:
sudo firewall-cmd —get-active-zones
На свежеустановленной Centos7 имеющемся интерфейсам по умолчанию будет назначена зона public. Посмотреть информацию о действующих правилах для зоны можно командой вида: sudo firewall-cmd —zone= имя зоны —list-all. Соответственно для зоны public команда будет выглядеть, как:
sudo firewall-cmd —zone=public —list-all
Можем видеть, что в зону public у нас уже по умолчанию добавлены сервисы ssh и dhcpv6-client
5. Открыть порт двумя способами
Первый способ — прямой командой вида: sudo firewall-cmd —zone=имя зоны —remove-port=номер порта/протокол —permanent
Пример для зоны: public, порта: 3471 и протокола: tcp
sudo firewall-cmd —zone=public —remove-port=3471/tcp —permanent
Опция —permanent нужна, чтобы добавленные правила сохранились после перезагрузки VPS. В завершение нужно перезапустить файрволл командой:
sudo firewall-cmd —reload
В случае успешного выполнения команд получим сообщение «success».
Второй способ — добавить соответствующий сервис к зоне, при этом будут открыть нужные для работы этого сервиса порт. Но добавлять можно только те сервисы, которые известны файрволлу, посмотреть их список можно командой:
sudo firewall-cmd —get-services
Добавить сервис в зону — командой вида: sudo firewall-cmd —zone=имя зоны —add-service=имя сервиса —permanent
Например, команда добавления сервиса SMTP в зону public будет иметь вид:
sudo firewall-cmd —zone=public —add-service=smtp —permanent
После также нужно перезапустить файрволл sudo firewall-cmd —reload
Для проверки еще раз выполним sudo firewall-cmd —zone=public —list-all, как можем видеть в результатах вывода — сервис smtp добавлен, порт открыт.
Подобрать лучшие VPS с SSD-дисками, можно на нашем сайте.
Работа с брандмауэром Windows
Любая программа запущенная от имени администратора включает нужное правило брандмауэра автоматически, сама по себе и никаких дополнительных настроек не нужно, чтобы она видела сеть и была видна из сети.
Исключение составляют правила для стандартных служб установленных по умолчанию, нужно включить разрешающее правило для общественных сетей или изменить текущее, о чем и поговорим в этой статье.
ОТКРЫТЬ ПОРТ ЧЕРЕЗ ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС
Рассмотрим один из редких случаев, это когда мы хотим развернуть общий доступ к файлам расположенных на сервере. В данном случае, просто открыть общий доступ недостаточно, нужно залезть в брандмауэр.
Используйте Win+R (или щелкните правой кнопкой мыши по меню Пуск, выберите «Выполнить») наберите firewall.cpl и перейдите в дополнительные параметры.
Найти брандмауэр можно и через поиск меню пуск, если начать набирать «Брандмауэр». Нас интересует брандмауэр в режиме повышенной безопасности.
Общий доступ к файлам и папкам утилизирует протокол SMB, а он использует 445 порт. Тут не нужно создавать новое правило, а лучше включить стандартное. Так без лишней путаницы, чисто и быстро можно открыть любой порт.
Отсортируйте колонку по порту или группе, затем включите правило.
Вот так просто и чисто корпорация Майкрософт реализовала управление правилами в Windows с пользовательским интерфейсом.
ОТКРЫТЬ ПОРТ C ПОМОЩЬЮ POWERSHELL
Каждое правило, которое было добавлено позже имеет высший приоритет над ранним. Чтобы однажды не запутаться в них, мы сделаем тоже самое что и в случае выше, так же чисто, только при помощи одной командной строки.
Используйте Win+R (или щелкните правой кнопкой мыши по меню Пуск, выберите «Выполнить») наберите Powershell.
Найти можно и через поиск меню пуск, если начать набирать «Powershell». Запускать нужно от имени администратора. Рассматривать мы будем обычный Powershell, Powershell ISE нужен для выполнения скриптов, нас это не интересует.
Сперва нам нужно узнать какое правило мы хотим включить. Для этого выполним командлет:
Get-NetFirewallRule | where Direction -EQ inbound | select name
Этим самым мы получаем имена всех входящих правил фаервола и получаем только их имена. Отличить их просто, первой идет группа правил, затем протокол и направление. По-русски это бы выглядело так:
ГруппаПравил-Протокол-Направление
Мы получили результат. Нас интересует правило FPS-SMB-In-TCP. Эта аббривеатура расшифровывается как File and Printer Shading (SMB IN). Это то, что нам в данном случае нужно. Теперь включаем правило:
Set-NetFirewallRule -Name FPS-SMB-In-TCP -Enabled True
Как вы видите, никаких принципиальных изменений от того, что происходит с помощью пользовательского интерфейса тут нет, нужно лишь небольшое знание английского языка.
СОЗДАТЬ РАЗРЕШАЮЩЕЕ ПРАВИЛО ВРУЧНУЮ
Иногда программы не создают правила сами по себе, и требуется ручное вмешательство. Рассмотрим на примере открытия порта для сервера Майнкрафт. Справа от окна брандмауэра нажимаем “Создать новое правило”. Выбираем правило для порта.
Майнкрафт использует протокол TCP, поэтому в меню выбираем его.
Осталось выбрать то, что мы этим правилом делаем, разрешаем или запрещаем взаимодействие с портом и дать ему имя. Ровно это же можно уложить в один командлет powershell’a.
New-NetFirewallRule -Name Minecraft -LocalPort 25565 -DisplayName Minecraft -Enabled True -Direction Inbound -Action Allow -Protocol TCP