Как открыть порт debian
Перейти к содержимому

Как открыть порт debian

  • автор:

Управление портами в 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

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

Вывод команды sudo ufw status numbered - Управление портами в Linux

Номера правил указаны в скобках в начале строки. Например, правило для подключения по 443-му порту имеет номер 3. Исходя из этого, команда для удаления этого правила будет выглядеть как:

$ sudo ufw delete 3

То же самое можно сделать командой:

$ sudo ufw delete allow 443/tcp

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

$ sudo ufw status

Просмотр статуса UFW

Для отключения брандмауэра служит следующая инструкция:

$ sudo ufw disable

Управление портами в Centos

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

$ sudo dnf update -y $ sudo dnf install firewalld -y

Если окажется, что firewalld уже был установлен в системе, команда вернёт следующее сообщение:

Сообщение об уже установленном firewalld

Текущее состояние службы можно увидеть набрав команду:

$ systemctl status firewalld

Если служба работает штатно, то вывод команды будет выглядеть так:

Просмотр статуса firewalld

Список приложений, которым доступ в firewalld уже предоставлен, можно увидеть с помощью команды:

$ sudo firewall-cmd --permanent --list-all 

Такие приложения перечислены в строке services :

Вывод команды sudo firewall-cmd --permanent --list-all

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

$ sudo firewall-cmd --permanent --add-service=http

Этот протокол должен добавиться в строку services :

Вывод команды sudo firewall-cmd --permanent --list-all - Управление портами в Linux

Аналогичным образом можно открыть доступ для подключений к серверу по протоколу https :

$ sudo firewall-cmd --permanent --add-service=https

Вывод команды sudo firewall-cmd --permanent --list-all - Управление портами в Linux

В 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

Список открытых портов в firewalld

Доступ для подключений по определённому порту можно также и заблокировать. Например, закрытие доступа по udp-порту 32814 осуществляется командой:

$ sudo firewall-cmd --zone=public --remove-port=32814/udp

И наконец, для применения всех внесённых изменений, брандмауэр необходимо перезапустить:

$ sudo firewall-cmd --reload

Заключение

Итак, мы рассмотрели установку и запуск межсетевых экранов в операционных системах Linux, таких как Ubuntu, Debian и Centos. А также, мы научились открывать доступ для подключений к нашему серверу через определённые порты и протоколы.

Статья Как открыть порт ssh с помощью ufw на Ubuntu/Debian Linux

Как разрешить входящие соединения SSH с определенного IP-адреса или подсети на сервере Ubuntu или Debian Linux с помощью ufw?

UFW является аббревиатурой для брандмауэра. Он используется для управления брандмауэром Linux и предназначен для обеспечения простого в использовании интерфейса для пользователя. В этом руководстве вы узнаете, как использовать UFW интерфейс для iptables для открытия входящего соединения SSH на сервере Ubuntu Linux 16.04 LTS или Debian Linux.

1574782949741.png

Рисунок 01: Разрешить входящий SSH от определенного IP-адреса или подсети

Открыть входящий SSH-порт для всех
Синтаксис выглядит следующим образом:

sudo ufw allow ssh
$ sudo ufw allow 22/tcp

ИЛИ (добавьте комментарий)

$ sudo ufw allow 22/tcp comment 'Open port ssh tcp port 22'

Если вы запустили ssh на TCP порту # 2222, введите:

$ sudo ufw allow 2222/tcp

Как разрешить входящий SSH с определенного IP-адреса
Синтаксис выглядит следующим образом:

$ sudo ufw allow from to any port 22

Чтобы разрешить входящие SSH-соединения с конкретного IP-адреса с именем 202.54.1.1, введите:

$ sudo ufw allow from 202.54.1.1 to any port 22

Как разрешить входящий SSH из определенных подсетей
Синтаксис выглядит следующим образом:

$ sudo ufw allow from to any port 22
$ sudo ufw allow from to any port 22 proto tcp
$ sudo ufw allow from to port 22 proto tcp

Чтобы разрешить входящие SSH-соединения из конкретной IP-подсети с именем 202.54.1.1.29, введите:

$ sudo ufw allow from 202.54.1.1/29 to any port 22

Чтобы разрешить входящие SSH-соединения из конкретной подсети IP с 10.8.0.0/24 по 10.8.0.1 и tcp-портом 22, введите:

$ sudo ufw allow from 10.8.0.0/24 to 10.8.0.1 port 22 proto tcp

Ограничить входящий SSH-порт для всех
Откройте входящий SSH, но запретите подключения с IP-адреса, который пытался инициировать 6 или более соединений в течение последних 30 секунд. Синтаксис выглядит следующим образом:

$ sudo ufw limit ssh
$ sudo ufw limit 22/tcp

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

$ sudo ufw status

Примеры возможных выводов данных:

Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 72.14.190.12 443/tcp ALLOW Anywhere 72.14.190.12 80/tcp ALLOW Anywhere

если ufw не был включен, выход будет следующим:

sudo ufw status Status: inactive

Чтобы включить UFW с набором правил по умолчанию, включая открытый SSH-порт, введите:

$ sudo ufw enable $ sudo ufw status verbose

Как открыть порты в Iptables на сервере с Linux

Iptables — это базовый и встроенный брандмауэр сервера Linux. Iptables используется для настройки, обслуживания и проверки таблиц правил фильтрации IP-пакетов в ядре Linux. Он чрезвычайно мощный и настраиваемый, но в результате из-за обилия опций и функций стал невероятно сложным в управлении. По этой причине iWeb рекомендует ConfigServer Security & Firewall (CSF) для управления конфигурацией iptables. CSF — это упрощенный интерфейс, который делает добавление или удаление IP-адресов из вашего брандмауэра более удобным.

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

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

Если необходимо проверить список уже существующих правил используйте команду:

sudo iptables -L

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

sudo iptables -A INPUT -p tcp —dport 8888 -j ACCEPT

где 8888 — номер порта, который необходимо открыть.

Аналогичным способом можно удалить открытый порт.

sudo iptables -D INPUT -p tcp —dport 8888 -j ACCEPT

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

  • полностью заблокировать IP

iptables -A INPUT -s IP -j DROP

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

  • заблокировать IP только для определенного порта:

iptables -A INPUT -p tcp -s IP —dport PORT -j DROP

  • предоставить доступ в систему с определенного адреса

iptables -A INPUT -s IP -j ACCEPT

  • разрешить доступ с адреса на определенный порт

iptables -A INPUT -p tcp -s IP —dport PORT -j ACCEPT

Для проверки и отображения текущего список временных разрешенных и запрещенных IP-записей с их TTL и комментариями используется команда:.

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

sudo netfilter-persistent save

sudo netfilter-persistent reload

service iptables save

Готово. Приятной работы.

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

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

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

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

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

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

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

Требования

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

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

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

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

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

  • все прослушиваемые сокеты (-l)
  • номер порта (-n)
  • TCP-порты (-t)
  • UDP-порты (-u)

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.

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

netstat -na | grep :4000

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

ss -na | grep :4000

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

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

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

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

sudo ufw allow 4000

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 | nc -l -p 4000

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

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

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

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

telnet localhost 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):

nmap localhost -p 4000

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

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 такой полезный инструмент. Он имитирует такие среды с помощью простой команды.

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

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

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

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

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

Для firewalld

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

Для iptables

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *