Как я могу открыть порты в Ubuntu
Открытые порты — это порты, которые позволяют трафику службы или приложений работать на нем. Открытие портов важно, если вы хотите, чтобы в вашей системе работала определенная служба. В большинстве систем, таких как Ubuntu, порты по умолчанию закрыты из соображений безопасности, но их можно легко открыть.
В этой статье мы показали, как открывать порты в Ubuntu.
Как я могу открыть некоторые порты в Ubuntu
Чтобы открыть порты в Ubuntu, мы будем использовать простой брандмауэр (UFW), который представляет собой простой инструмент брандмауэра, предоставляющий настройки прокси в разных системах. Многие системы Linux поставляются с предустановленным брандмауэром, но в случае с Ubuntu его потребуется установить.
Вы можете установить UFW на Ubuntu из репозитория с помощью команды apt, и для этого обязательно сначала обновить/обновить репозиторий с помощью следующих команд:
$ sudo apt update
$ sudo apt upgrade
Затем установите UFW с помощью приведенной ниже команды:
$ sudo apt install ufw

После установки UFW включите его в своей системе Ubuntu с помощью приведенной ниже команды:
$ sudo ufw enable

Как открыть порт в Ubuntu
После включения UFW вы можете открывать порты с помощью следующей команды:
Синтаксис
$ sudo ufw allow < port >
Например, чтобы открыть порт SSH, который по умолчанию равен 22, вы можете использовать 22 с командой ufw, как показано ниже:
$ sudo ufw allow 22

С помощью UFW также можно контролировать трафик к порту, и для этого пользователю просто нужно указать порт вместе с именем протокола, по которому ему нужен трафик:
Синтаксис
$ sudo ufw allow < port >/ < protocol >
В приведенном примере я разрешил трафик протокола tcp на порт 80.
$ sudo ufw allow 80 / tcp

Аналогичным образом, в приведенном ниже примере разрешен трафик udp на порт 1025:
$ sudo ufw allow 1025 / udp

Трафик с определенного IP-адреса также можно разрешить на порт, выполнив следующую команду:
$ sudo ufw allow from 127.0.0.1 / 8 to any port 21

Чтобы проверить состояние портов, вы можете выполнить приведенную ниже команду, чтобы убедиться, что порты успешно открыты:
$ sudo ufw status

Как закрыть порты в Ubuntu
Если вы ранее открывали порт и теперь чувствуете необходимость его заблокировать, вы можете использовать приведенную ниже команду:
Синтаксис
$ sudo ufw deny < Port >
Так же, как команда открытия порта, вы также можете заблокировать порты либо по их имени, либо по имени службы:
Пример
Блокировка портов по номеру порта:
$ sudo ufw deny 22

Затем проверьте, используя приведенную ниже команду состояния:
$ sudo ufw status

Это все, что касается процесса, но помните, что при использовании UFW для открытия портов убедитесь, что интересующий вас сервис должен быть активен.
Выводы
Все права защищены. © Linux-Console.net • 2019-2023
Управление портами в 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=https

В 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. А также, мы научились открывать доступ для подключений к нашему серверу через определённые порты и протоколы.
Как открыть порт на 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-дисками, можно на нашем сайте.
Как открыть порт Ubuntu
Правильная настройка брандмауэра имеет очень важное значение для безопасности вашего сервера или даже домашнего компьютера, подключенного к сети интернет.
На промышленных серверах брандмауэр запрещает подключение к большинству из них, оставляя только необходимые. В этой статье мы рассмотрим как открыть порт iptables и закрыть все остальные. Хотя в большинстве дистрибутивов существуют специальные утилиты для настройки брандмауэра,мы будем использовать iptables, чтобы вы смогли понять процесс на самом низком уровне.
Просмотр правил Iptables
Прежде чем что-либо менять, нужно понять каким образом система работает сейчас. Возможно, для лучшего понимания материала вам сначала стоит ознакомиться со статьей iptables для начинающих. Для просмотра текущих правил iptables выполните такую команду:
sudo iptables -L

Здесь мы видим три цепочки OUTPUT, INPUT и FORWARD, за открытые порты отвечает цепочка INPUT, именно через нее проходят все входящие пакеты. Сейчас политика по умолчанию — ACCEPT, это значит, что подключение ко всем портам разрешено. Здесь нам нужно настроить все самим и это будет проще если бы какая-либо программа уже создала свои настройки, но этот вариант мы тоже рассмотрим ниже.
Как открыть порт iptables с нуля
Если в iptables уже есть какие-либо правила и вы хотите их удалить просто выполните:
sudo iptables -F
Теперь нам нужно добавить правила, которые разрешат обмен данными между любыми портами на локальном интерфейсе lo, это нужно чтобы не вызвать системных ошибок:
sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
Если кратко, то здесь добавляется два правила в цепочки INPUT и OUTPUT, разрешающие отправку и прием данных из интерфейса lo. Еще одно интересное и важное правило, которое многие упускают. Нужно запрещать только новые соединения, а пакеты для уже открытых нужно разрешать. Иначе получится, что мы отправляем серверу запрос (цепочка OUTPUT открыта), соединение открывается, но сервер не может нам ответить, потому что все пакеты отбрасываются в INPUT. Поэтому нужно разрешить все пакеты с состоянием ESTABLISHED и RELATED. Для этого есть модуль state:
sudo iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
Теперь самое интересное, рассмотрим как открыть порт 22 и 80 для протокола TCP:
sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT
$ sudo iptables -A INPUT -p tcp —dport 80 -j ACCEPT

Опция -A сообщает, что нужно добавить пакет в конец цепочки, -p — указывает протокол, а —dport или Destination Port (порт назначения) указывает из какого порта пакеты нужно принимать. Теперь вы можете снова посмотреть список правил:
sudo iptables -L

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

Чтобы все это в действительности заработало, осталось поменять политику по умолчанию на DROP:
sudo iptables -P INPUT DROP
Все, можете проверять. Все пользователи смогут получить доступ к портам 22 и 80, а к остальным доступа не будет.
Как открыть порт, если уже есть правила
Довольно часто возникает ситуация, когда вам нужно открыть порт Linux, а iptables уже содержит набор правил, запрещающих доступ к портам. Иногда вы добавляете правило, все как нужно, с помощью описанной выше команды, но не замечаете никакого эффекта. Рассмотрим почему так происходит.
Допустим, программа или предыдущий администратор для надежности добавили в конец цепочки правило такого вида:
sudo iptables -A INPUT -j DROP

Как вы понимаете, это значит, что все пакеты, которые до него доходят, будут отброшены. Ваше правило добавляется в конец цепочки, уже после этого. Естественно, что к нему уже никакие пакеты не дойдут, потому что они были отброшены ранее. Чтобы обойти эту проблему нужно использовать опцию -I (INSERT) вместо -A (ADD), она добавляет правило в начало цепочки и все будет работать. Осталось открыть порты Linux:
sudo iptables -I INPUT -p tcp —dport 1924 -j ACCEPT

Теперь смотрим список правил и проверяем:
sudo iptables -L

Выводы
В этой статье мы рассмотрели как открыть порт Ubuntu 16.04 или в любом другом Linux дистрибутиве, а также закрыть ненужные порты. Это повысит безопасность вашей системы. Только на первый взгляд кажется, что с iptables сложно работать. Если разобраться, то все будет достаточно просто. Надеюсь, эта информация была полезной для вас.