Открыть всем порт linux

Как открывать порты в системе Linux

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

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

Первые 1024 порта (номера портов от 0 до 1023) называются общеизвестными или системными и зарезервированы для часто используемых служб. К ним относятся SSH (порт 22), HTTP (порт 80), HTTPS (порт 443) и тому подобное.

Номера портов выше 1024 называются эфемерными портами.

  • Порты с номерами от 1024 до 49151 называются зарегистрированными/пользовательскими.
  • Номера портов с 49152 по 65535 называются динамическими/частными портами.

В этом мануале мы откроем эфемерный порт в Linux, поскольку общие службы используют известные порты.

Требования

Для выполнения туториала нужно уметь пользоваться терминалом.

Проверка открытых портов

Прежде чем открыть порт в Linux, нужно проверить список всех открытых портов и выбрать эфемерный порт, которого нет в этом списке.

С помощью команды netstat можно получить список всех открытых портов, включая TCP и UDP — это распространенные протоколы для передачи пакетов на сетевом уровне.

Учитывая используемые флаги, команда выводит следующее:

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 . * LISTEN tcp6 0 0 ::1:6379 . * LISTEN tcp6 0 0 . 22 . * LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

Примечание. Если в вашем дистрибутиве нет netstat, то с помощью команды ss можно вывести список открытых портов путем проверки сокетов прослушивания.

Убедитесь, что команда ss выводит согласованные выходные данные:

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:* tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::1]:5432 0.0.0.0:* tcp LISTEN 0 128 [::1]:6379 0.0.0.0:* tcp LISTEN 0 128 [::]:22 0.0.0.0:*

Эта команда выводит практически те же открытые порты, что и netstat.

Открытие порта для TCP-соединений

Теперь откроем закрытый порт и настроим его на прослушивание TCP-соединений.

В этом туториале мы откроем порт 4000. Но при желании вы можете выбрать другой закрытый порт. Только убедитесь, что его номер больше 1023.

Читайте также:  Linux какому пакету принадлежит файл

С помощью команды netstat убедитесь, что порт 4000 не используется:

То же самое можно сделать с помощью команды ss:

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

Ubuntu и системы на базе ufw

ufw — клиент командной строки для брандмауэра UncomplicatedFirewall.

Команда будет выглядеть следующим образом:

CentOS и системы на базе firewalld

firewall-cmd — клиент командной строки для брандмауэра firewalld.

Команды будут выглядеть так:

Для других дистрибутивов Linux

Изменить системные правила фильтрации пакетов IPv4 можно с помощью iptables.

iptables -A INPUT -p tcp —dport 4000 -j ACCEPT

Тестирование порта

После успешного открытия TCP-порта нужно его протестировать.

При отправке вывода ls любому подключенному клиенту, сначала запустите netcat (nc) и прослушивайте (-l) порт (-p) 4000:

Теперь клиент получит вывод ls после того, как он откроет TCP-соединение на порту 4000. Пока оставьте этот сеанс.

Откройте другой терминал на той же машине.

Поскольку мы открыли TCP-порт, мы можем протестировать TCP-подключения с помощью telnet. Если у вас этой команды нет, установите ее с помощью менеджера пакетов.

Введите IP вашего сервера и номер порта (в данном случае 4000) и выполните следующую команду:

Эта команда пытается открыть TCP-соединение на локальном хосте через порт 4000.

Получим следующий вывод, в котором указано, что соединение с программой установлено (nc):

Trying ::1. Trying 127.0.0.1. Connected to localhost. Escape character is '^]'. while.sh

Вывод ls (в данном примере while.sh) отправлен клиенту, что указывает на успешное TCP-соединение.

С помощью nmap проверьте, открыт ли порт (-p):

Эта команда проверит открытый порт:

Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00010s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 4000/tcp open remoteanything Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Как видите, вы успешно открыли новый порт в Linux.

Примечание: nmap выводит список только открытых портов, на которых в данный момент есть прослушивающее приложение. Если вы не используете приложение для прослушивания (например netcat), то порт 4000 будет отображаться как закрытый, поскольку в настоящее время на этом порту нет ни одного прослушивающего приложения. Аналогично не будет работать и telnet, поскольку этой команде также нужно прослушивающее приложение. Именно по этой причине nc такой полезный инструмент. Он имитирует такие среды с помощью простой команды.

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

Сохранение правил брандмауэра

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

Читайте также:  Команда free в linux

Для брандмауэра ufw

Правила ufw не сбрасываются при перезагрузке. Это происходит потому, что он интегрирован в процесс загрузки, и ядро применяет соответствующие конфигурационные файлы и сохраняет правила брандмауэра ufw.

Для firewalld

Необходимо применить флаг –permanent, чтобы правила были действительны после перезагрузки системы.

Для iptables

Чтобы сохранить правила конфигурации, рекомендуется использовать iptables-persistent.

Подводим итоги

В этом туториале мы разобрали, как открыть новый порт в Linux и настроить его для входящих соединений, а также поработали с netstat, ss, telnet, nc и nmap.

Источник

Как открыть порт iptables в операционной системе Linux

Имея дело с программно-аппаратным элементом Linux, пользователю нередко приходится выполнять функции открытия и закрытия портов на сетевом интерфейсе. Открытый порт предлагает доступ к нему, а закрытие порта служит так называемой блокировкой соединения локального компьютера с программным обеспечением. Неопытные владельцы Линукс часто нуждаются в пошаговых инструкциях и подсказках, когда речь заходит о непривычных или новых задачах, стоящих перед ними. В этом нет ничего зазорного. Самое главное – непоколебимое желание учиться. В данном материале мы разберем все основные нюансы, связанные с открытием порта iptables. Для начала следует прояснить простым языком, что такое порт в локальном или удаленном устройстве. Его можно сравнить с квартирой в жилом доме, в которой прописано определенное количество людей. А если быть точнее, то порт – это номер квартиры, IP адрес – номер дома, а жилец – это софт, использующий свою «квартиру». Открытие порта в Linux осуществляется через iptables. При этом существует 2 типа протокола (tcp и udp), которые используют понятие «порт». Основная путаница для новичка заключается в том, что для разных протоколов доступны идентичные номера портов, а сами номера могут означать различные квартиры в разных зданиях и районах. Имя протокола служит этим самым «микрорайоном».

Важно!В некоторых случаях на устройстве Linux может использоваться политика iptables, именуемая как «DROP». Это означает, что порты блокируются автоматически. В обратном случае рассматривается политика iptables, именуемая как «ACCEPT». Это означает, что все существующие порты уже открыты по умолчанию. Если так и есть, то пользователю необходимо всего лишь закрыть те порты, которые предлагают доступ для внешних устройств.

Как открыть один порт

Принцип работы

На практике аргумент -t опускается. Для первого примера откроем 80 port для протокола tcp. Открываем 80 порт tcp. # iptables -A INPUT -p tcp —dport 80 -j ACCEPT Здесь:

  • -A — добавить новое правило в цепочку;
  • -p — протокол tcp;
  • ACCEPT — разрешить.

После этого все внешние устройства смогут установить связь по порту 80 (для примера). Теперь сделаем тоже самое, только для протокола udp

# iptables -A INPUT -p udp —dport 80 -j ACCEPT

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

# iptables -A INPUT -p tcp -s 192.168.200.0/24 —dport 8080 -j ACCEPT

Читайте также:  Getting serial number linux

После выполнения данного действия порт с указанным номером откроется на вашем ПК.

Открытие нескольких портов сразу

Для примера откроем диапазон портов с 18060:18071.

# iptables -t filter -A INPUT -p tcp —dport 18060:18071 -j ACCEPT

Что получится в результате? Теперь возможен прием входящих пакетов, передаваемых по протоколу на локальный ПК. Порты 18060-18071 открылись одновременно.

ВАЖНО! Входящие пакеты, передаваемые из вне на конкретное устройство, условно делятся на два типа: приходящие на указанный узел и отправленные этим узлом. И хотя узлы разные, для них часто используется общий интерфейс. Входящие и исходящие соединения реализуются по разным правилам. Первые размещены в цепочках под названием PREROUTING, INPUT. Вторые находятся в цепочках под названием POSTROUTING, OUTPUT.

Далее мы рассмотрим пример команды, которая позволит разрешить прием пакетов через выбранный порт iptables. То есть, команду для входящего типа соединения. Для этого потребуется задать:

iptables -t filter -A INPUT -p tcp —dport 8081 -j ACCEPT

Теперь перейдем к настройкам исходящего коннекта. Пользователю нужно задать команду аналогичного вида. Единственная разница будет заключаться в изменении «INPUT» на «OUTPUT». Во всем остальном указанная схема остается без изменений.

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

Как проверить статус порта

На практике очень часто бывает так, что введенная команда не работает. Чтобы не попасть в такую ситуацию, необходимо проверить состояния порта. Для этих целей используется telnet.

Проверка порта осуществляется таким образом:

Как видно по заданной команде, система проверит порт под номером 8080 у компьютера с указанным IP-адресом. А теперь представим ситуацию, что порт 445 на удаленном устройстве открыт для входящего коннекта, а порт 445 на локальном устройстве открыт для исходящего коннекта. При таких условиях на экран будет выведено сообщение данного вида: «Connection closed by foreign host». В обратном случае выведенное сообщение будет носить иной характер. И это можно воспринять, как невозможность дальнейшего соединения.

ВАЖНО! Telnet считается эффективным инструментом, хорошо справляющимся со своими прямыми задачами. Однако скорость выдачи результатов при проверке статуса портов довольно низкая. Это значит, что пользователю придется подождать какое-то время.

Заключение

Открытие порта iptables на локальном устройстве вызывает множество различных трудностей у новичков. Внимательно следуя рекомендациям в данной статье, можно быстро приучиться к новшествам системы Линукс и решить все незакрытые вопросы. Воспользуйтесь подсказками, если вам потребуется открыть один или сразу несколько портов на своём ПК, закрыть его или проверить актуальный статус портов на нескольких машинах. Создайте новый коннект («NEW») или отточите своё мастерство при работе с уже установленными коннектами.

Источник

Оцените статью
Adblock
detector