3 мин для чтения3 способа, чтобы проверить открытые порты в linux с соответствующим сервисом-процессом
Содержание:
Какие порты открыты для внешнего мира?
Обратите внимание, что сервис может иметь открытый порт, который можно прослушивать только на текущей машине. То есть, порт открыт, но вы не сможете получить к нему доступ из сети
Это полезно для безопасности, например, веб-сервер должен иметь открытый для остального мира порт 80, но мир не должен знать о (или иметь возможность подключения) порте 3306, который прослушивает сервер MySQL, поддерживающий вебсайт.
В идеале, если вы используете веб-сервер, единственные порты, которые должны быть видны извне это HTTP-порт 80, и возможно, SSH порт 22, поскольку вам понадобится подключаться к веб-серверу для выполнения команд.
Порты для служб, доступных только на локальном компьютере, будут иметь IP адрес 127.0.0.1 в поле локального адреса. В вышеприведенном примере это будет:
Как видно, MySQL прослушивает порт 3306 по IP адресу 127.0.0.1. Это означает, что к MySQL серверу могут подключиться только программы на той же машине.
Открытие портов
Теперь немного расширим нашу конфигурацию и откроем в iptables порты для некоторых сервисов. Допустим, у нас работает веб-сервер и необходимо открыть к нему доступ из интернета. Добавляем правила для веб-трафика:
Было добавлено разрешение на входящие соединения по 80-му и 443-му портам, которые использует web сервер в своей работе.
Если у вас установлен почтовый сервер, то нужно разрешить на него входящие соединения по всем используемым портам:
Для корректной работы DNS сервера, нужно открыть UDP порт 53
И так далее. По аналогии можете открыть доступ для всех необходимых сервисов.
Как открыть порты: изменение настроек
Работа по пробросу проводится через веб-интерфейс. Чтобы открыть порт на роутере Ростелеком, сделайте такие шаги:
- войдите в любой браузер и введите в строке 192.168.1.1. для входа в маршрутизатор;
- введите данные для входа (логин и пароль) — по умолчанию это admin;
- справа в верхней части отыщите кнопку, позволяющую поменять язык;
- войдите в раздел «Дополнительно»;
выберите сервер виртуального типа;
- придумайте и с правой стороны укажите имя, которое поможет ориентироваться в параметрах;
- в графах порта WAN и открытого входа WAN роутера Ростелеком укажите число, которое вы ранее нашли;
наберите адрес IP сети.
Если вы не знаете свой IP, нажмите Win+R, пропишите команду cmd и подтвердите ввод.
В открывшемся окне пропишите Ipconfig. Теперь отыщите строчку IPv4-адрес и используйте это число в строчке IP в настройке роутера.
Теперь сохраните внесенные изменения путем нажатия клавиши «Применить».
6: Поддержка других соединений
Теперь разблокируйте другие соединения, которые нужны для работы сервера. Список необходимых сервисов индивидуален для каждого сервера.
Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.
Незашифрованные соединения HTTP можно разблокировать с помощью команды allow, указав протокол или порт:
Зашифрованные соединения HTTPS можно разрешить при помощи команд:
Соединения FTP используются для незашифрованного обмена файлами; этот метод передачи данных небезопасен, потому рекомендуется использовать зашифрованные соединения.
Настройка диапазонов портов
UFW позволяет разблокировать диапазон портов. Некоторые приложения используют несколько портов.
К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:
Указывая диапазон портов, вы должны задать протокол (tcp или udp). Если вы не укажете протокол, UFW будет использовать оба протокола (в большинстве случаев это нормально).
Настройка IP-адресов
Также UFW может разрешить трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 203.0.113.4, нужно ввести from и сам адрес:
Вы можете ограничить доступ для IP конкретным портом с помощью опции to any port. Например, чтобы разрешить IP-адресу 203.0.113.4 SSH-доступ, используйте:
Настройка подсетей
Чтобы разблокировать подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 203.0.113.1-203.0.113.254 , нужно ввести:
Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:
Настройка сетевых интерфейсов
Правила брандмауэра могут быть предназначены для конкретного интерфейса. Для этого нужно ввести allow in on, а затем указать имя интерфейса.
Прежде чем продолжить, просмотрите свои сетевые интерфейсы.
Имена интерфейсов выделены красным (обычно они называются eth0, enp3s2 и т.п.).
Чтобы разблокировать трафик HTTP для eth0, введите:
Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:
Как открывать или перенаправлять TCP/UDP порты? Печать
Изменено: Вт, 3 Июл, 2018 at 10:45 AM
Открытие или перенаправление порта необходимо в тех случаях, когда нужно получить доступ к локальным устройства или службам находящимися за роутером в локальной сети.
Возможные задачи могут выглядеть следующим образом:
1. Необходимо получить доступ к WEB интерфейсу самого роутера.
2. Необходимо перенаправить порт 8080 на WEB сервер расположенный на локальном ПК с IP 192.168.88.100
Все операции с открытием и перенаправлением портов производятся в Межсетевом экране
1. Открытие порта
1.1. Через WEB
Открываются порты для получения доступа к различным службам на самом роутере или контроллере.
Например откроем порт 80 для получения доступа к WEB-интерфейсу роутера.
Переходим в пункт Правила для трафика
Добавляем новое правило
Так выглядит новое созданное правило
Сохраняем добавленные правила
1.2. Через консоль
Необходимо отредактировать файл /etc/config/firewall
nano /etc/config/firewall
Добавляем правило и сохраняем файл:
config rule option enabled ‘1’ option target ‘ACCEPT’ option src ‘wan’ option proto ‘tcp udp’ option dest_port ‘1194’ option name ‘OpenVPN’
Перезапускаем межсетевой экран
/etc/init.d/firewall restart
2. Перенаправление порта
2.1. Через WEB
Перенаправление используется, чтобы перенаправить запросы с внешнего порта к другому или тому же порту в локальную сеть.
Например перенаправим запросы с внешнего порта 8080 к локальному ПК с IP 192.168.88.100 и его порту 80
Переходим в пункт Перенаправления портов
Добавляем новое правило:
Так выглядит новое правило
Сохраняем и применяем изменения
2.1. Через консоль
Необходимо отредактировать файл /etc/config/firewall
nano /etc/config/firewall
Добавляем правило и сохраняем файл:
config redirect option target ‘DNAT’ option src ‘wan’ option dest ‘lan’ option proto ‘tcp udp’ option src_dport ‘8080’ option dest_ip ‘192.168.88.100’ option dest_port ’80’ option name ‘8080 to 192.168.88.100:80’
Перезапускаем межсетевой экран
/etc/init.d/firewall restart
3. IPTABLES. Перенаправление порта из локальной сети к статическому IP и порту в интернете или VPN.
Бывают и такие ситуации, при которых Ваше оборудование имеет только Локальный IP адрес и маску подсети.
И не имеет настроек шлюза и DNS.
Также данному устройству можно задать цель, т.е. куда оно будет отправлять данные. Обычно это целевой IP адрес и порт(TCP или UDP).
Проблема заключается в том, что при подключении такого устройства к роутеру, данные, которые оно генерирует, не попадут дальше самого роутера. Т.е. они ограниченны рамками локальной сети.
Без шлюза устройство не «видит» интернет.
В данной ситуации нам поможет пользовательское перенаправление портов с использованием IPTABLES
Необходимо перейти в Межсетевой экран:
Перейти на вкладку Пользовательские правила:
И добавить правило перенаправления:
iptables -t nat -A PREROUTING -d 192.168.88.1 -p TCP —dport 9001 -j DNAT —to-destination 31.58.45.6:9001
Итоговый вид:
# This file is interpreted as shell script.# Put your custom iptables rules here, they will# be executed with each firewall (re-)start.# Internal uci firewall chains are flushed and recreated on reload, so# put custom rules into the root chains e.g. INPUT or FORWARD or into the# special user chains, e.g. input_wan_rule or postrouting_lan_rule.iptables -t nat -A PREROUTING -d 192.168.88.1 -p TCP —dport 9001 -j DNAT —to-destination 31.58.45.6:9001
После, нажимаем Применить:
Перезапустим межсетевой экран. Делаем это через консоль:
/etc/init.d/firewall restart
Проверяем наше перенаправление. Все должно работать.
Сопутствующие статьи:
Дополнительная информация:
Была ли эта статья полезной?
Да
Нет
Отправить отзыв К сожалению, мы не смогли помочь вам в разрешении проблемы. Ваш отзыв позволит нам улучшить эту статью.
Вступление
Iptables в настоящее время является стандартом де-факто в среде современных linux дистрибутивов. Я даже сходу не могу припомнить, что еще используют в качестве фаервола. Так что любому администратору линукс приходится сталкиваться в своей работе с настройкой этого межсетевого экрана.
К этому фаерволу существуют разные обвязки, которые используются для более «удобной» настройки. В ubuntu есть ufw, в centos — firewalld, с другими не знаком. Лично я не вижу никакого удобства в использовании этих инструментов. Я привык настраивать линуксовый фаервол по-старинке, как научился в самом начале работы. Мне кажется это наиболее простым и удобным способом, которым я с вами и поделюсь. Суть его сводится к тому, что создается скрипт с правилами фаервола. Этот скрипт можно легко редактировать под свои нужды и переносить с сервера на сервер.
Что такое IPTables и Netfilter?
IPTables – это основное программное обеспечение брандмауэра, наиболее часто используемое в Linux. Брандмауэр iptables работает, взаимодействуя с хуками фильтрации пакетов в сетевом стеке ядра Linux. Эти хуки называются фреймворком netfilter.
Каждый пакет в сети (входящий или исходящий) будет запускать эти хуки по мере прохождения через стек, позволяя программам, которые регистрируют эти хуки, взаимодействовать с трафиком в ключевых точках. Модули ядра, связанные с iptables, регистрируют эти хуки, чтобы убедиться, что трафик соответствует условиям, установленным правилами брандмауэра.
Хуки netfilter
Программы могут регистрировать пять фильтров-хуков netfilter. По мере продвижения пакетов через стек, они будут запускать модули ядра, которые зарегистрировались в этих хуках. Хуки, которые запускает пакет, зависят от того, является ли пакет входящим или исходящим, был ли он отклонен в предыдущей точке, а также от места назначения пакета.
Следующие хуки представляют собой четко определенные точки в сетевом стеке:
- NF_IP_PRE_ROUTING: этот хук будет сразу запускаться любым входящим трафиком сетевого стека. Этот хук обрабатывается до принятия решения о том, куда отправлять пакет.
- NF_IP_LOCAL_IN: этот хук запускается после маршрутизации входящего пакета, если пакет предназначен для локальной системы.
- NF_IP_FORWARD: этот хук запускается после перенаправления входящего пакета, если пакет нужно перенаправить другому хосту.
- NF_IP_LOCAL_OUT: этот хук запускается любым локальным исходящим трафиком, попадающим в сетевой стек.
- NF_IP_POST_ROUTING: этот хук запускается любым исходящим или переадресованным трафиком после маршрутизации.
Модули ядра, которые хотят зарегистрироваться на этих хуках, должны установить приоритет, чтобы определить порядок, в котором они будут вызываться при запуске хука. Это обеспечивает возможность подключения нескольких модулей (или нескольких экземпляров того же модуля) к каждому из хуков в определенном порядке. Каждый модуль будет вызываться по очереди и возвращать решение для фреймворка netfilter после обработки, которая определяет, что должно быть сделано с пакетом.
Таблицы и цепочки iptables
Брандмауэр iptables использует таблицы для систематизации правил. Эти таблицы классифицируют правила в соответствии с типом решений, которые они принимают. Например, если правило касается преобразования сетевых адресов, оно будет помещено в таблицу nat. Если правило используется для принятия решения о том, пропустить ли пакет к его цели, оно, вероятно, будет добавлено в таблицу filter.
В каждой таблице iptables правила организованы в отдельные цепочки. Таблицы определяют общую цель правил, а встроенные цепочки представляют собой хуки netfilter, которые запускают их. Цепочки в основном определяют, когда будут использоваться те или иные правила.
Имена встроенных цепей зеркально отражают имена хуков netfilter, с которыми они связаны:
- PREROUTING: запускается хуком NF_IP_PRE_ROUTING.
- INPUT: запускается с помощью NF_IP_LOCAL_IN.
- FORWARD: запускается хуком NF_IP_FORWARD.
- OUTPUT: запускается с помощью NF_IP_LOCAL_OUT.
- POSTROUTING: запускается с помощью NF_IP_POST_ROUTING.
Цепочки позволяют администратору указать, где на пути доставки пакета будет оцениваться то или иное правило. Поскольку каждая таблица имеет несколько цепочек, она может влиять на пакет в нескольких точках обработки.
Существует только пять хуков ядра netfilter, поэтому на каждом из хуков регистрируются цепочки из нескольких таблиц. Например, в трех таблицах есть цепочки PREROUTING. Когда эти цепочки регистрируются на связанном хуке NF_IP_PRE_ROUTING, они задают свой приоритет – это определяет, в каком порядке вызываются цепочки PREROUTING из каждой таблицы. Сначала последовательно оцениваются все правила в цепочке PREROUTING с наивысшим приоритетом, а затем пакет может перейти к следующей цепочке PREROUTING.