Перейти к содержимому

Как открыть порт на vps сервере ubuntu

  • автор:

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

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

На промышленных серверах брандмауэр запрещает подключение к большинству из них, оставляя только необходимые. В этой статье мы рассмотрим как открыть порт iptables и закрыть все остальные. Хотя в большинстве дистрибутивов существуют специальные утилиты для настройки брандмауэра,мы будем использовать iptables, чтобы вы смогли понять процесс на самом низком уровне.

Table of Contents

  • Просмотр правил 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 сложно работать. Если разобраться, то все будет достаточно просто. Надеюсь, эта информация была полезной для вас.

Как открыть порт в Ubuntu / Debian

Здравствуйте, друзья. Если у вас есть сервер или компьютер, тогда вам требуется Firewall. Firewall добавит дополнительный уровень безопасности вашей системе. С помощью брандмауэра (Firewall) вы можете открыть любой порт на Ubuntu / Debian и контролировать доступ к вашему компьютеру. В этом посте мы покажем как открыть порты в Ubuntu / Debian.

Возможно вам будет интересно: Как посмотреть правила брандмауэра UFW

UFW: это простой брандмауэр на Ubuntu / Debian

По умолчанию брандмауэром Linux является IPTables. Хотя это очень эффективное и гибкое приложение, правда в том, что им сложно управлять. Поэтому сообщество создало не менее эффективные, но более простые в использовании альтернативы, такие как UFW.

Вкратце, UFW означает Uncomplicated Firewall и является своего рода Front-end для IPTables, но предназначенный для Ubuntu / Debian. С его помощью вы можете быстро и легко настраивать правила и открывать порты в системе.

Когда вы включаете UFW, он использует набор правил (профиль) по умолчанию, который должен быть подходящим для среднего домашнего пользователя. Короче говоря, все «входящие» запрещены, с некоторыми исключениями, чтобы облегчить жизнь домашним пользователям. Однако все эти настройки можно изменить и адаптировать к вашим потребностям.

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

Итак, давайте мы вам покажем, как открыть порты в Ubuntu / Debian с помощью UFW.

Возможно вам будет интересно: Установка WordPress со стеком LEMP на Ubuntu 20.04

Включение UFW на Ubuntu / Debian

В официальной документации по UFW сказано, что по умолчанию UFW отключен. Давайте проверим это, выполните следующую команду:

Скорее всего, вы увидите на экране ответ похожий на этот:

Как вы поняли первым шагом перед настройкой UFW является его включение. Для того чтоб включить UFW выделите следующую команду.

Вы должны увидеть следующий экран:

Включение UFW на Ubuntu или Debian

По английски это звучит как-то так «he firewall is active and enabled on system startup»

Если вы снова проверите статус службы, вы должны получить следующий результат

Проверить статус UFW в Ubuntu или Debian

Теперь UFW активен в системе. Далее мы можем начать работать с UFW и открыть нужные нам порты.

Возможно вам будет интересно: Установка Microsoft Visual Studio Code на Ubuntu 20.04

Открытие порт в Ubuntu / Debian с помощью UFW

С помощью UFW мы можем начать открывать порты. Существует несколько способов сделать это, но все они одинаково просты.

Перед началом работы всегда полезно быть осторожным с портами, которые вы собираетесь открывать. Многие приложения могут использовать его и через них получать важную информацию. Некоторые порты наоборот сделают брешь в вашей системе. Так что будьте очень осторожны.

Итак, если на вашем компьютере работают службы баз данных, SSH или FTP, то вам может понадобиться открыть эти порты. Если у вас не работают эти службы, то я не рекомендую их открывать.

Заканчиваем мат. чать и приступаем.

Чтобы открыть порт с в UFW, мы должны следовать следующему основному синтаксису:

Например, если мы хотим открыть порт 80, через который работает HTTP. Требуется выполнить вот такую команду:

Вы получите ответ в терминале подобное этому:

Открыть порт 80 в Ubuntu или Debian

В данном случае порт 80 был открыт в обоих протоколах TCP и UDP.

Также можно указать протокол и порт, который будет открыт. Это очень полезно для контроля трафика.

Если например вы хотите открыть порт 85, но только для протокола TCP, то вам нужно выполнить следующую команду.

А если требуется открыть UDP порт, тогда команда будет такой.

В обоих случаях вы получите ответ, похожий на этот:

Открыть порт UDP или TCP в Ubuntu и Debian

Возможно вам будет интересно: Сравнение iproute2 vs net-tools

Открыть порт в Ubuntu / Debian, указав системную службу

Некоторые службы и профили определены в UFW. Эти службы используют определенный порт, поэтому мы также можем открыть порты с помощью названия службы. Это очень удобно новичкам, которые не знают какая служба какой порт использует.

Итак, чтобы открыть порты с помощью этого метода, нам нужно использовать следующий синтаксис:

И вы должны получить следующий результат:

Открыть порт SSH в UFW на Ubuntu или Debian

В данном примере будет открыт порт 22, который является портом, используемым SSH.

Если вы хотите узнать, какие еще службы вы можете использовать, вы можете ознакомиться с ними, введя команду.

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

Возможно вам будет интересно: Как установить VMware Workstation 16 в Linux

Закрыть порт UFW в Ubuntu и Debian

Как открыть мы показали, а теперь я покажу вам обратный процесс. Синтаксис аналогичен. Нам требуется просто изменить одно слово в команде с «allow» на «deny«. Например чтоб запретить доступ к порту 80 введите команду.

Данная команда закроет порт 80 как на TCP, так и UDP. Так же как и в разрешающей команде можно использовать протоколы порта, TCP и UDP.

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

Ответ в терминале будет таким:

Закрыть порт службы SSH в UFW на Ubuntu и Debian

Таким образом, вы можете контролировать входящий трафик.

Заключение

Благодаря UFW открыть порт в Ubuntu / Debian очень легко. В этой инструкции мы показали как открыть или закрыть определенный порт в Ubuntu или 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. А также, мы научились открывать доступ для подключений к нашему серверу через определённые порты и протоколы.

Сменить порт на сервере или VPS для SSH

В данной статье мы рассмотрим как можно самостоятельно сменить порт для сервиса SSH на Вашем VPS или Выделенном сервере.

Выполняем подключение к серверу по SSH с помощью команды:
ssh root@IP_адрес_сервера
После этого у нас запросят пароль, нам необходимо будет его ввести.

Для более комфортного редактирования файлов установить утилиту nano, используя данную команду:
yum install nano -y
или
apt install nano -y

Как только утилита будет установлена приступаем к смене порта SSH. Редактируем конфигурационный файлы службы sshd:

Смена порта для SSH

nano /etc/ssh/sshd_config

Ищем строку где написано Port, убираем символ «#» для того чтобы раскомментировать строчку.
Пишем наш порт, в примере мы меняем порт на 34713.
Обращаю Ваше внимание, что использовать порты можно в диапазоне от 1-65535.

Добавляем разрешение в Firewall

Далее необходимо добавить правило в firewall для того чтобы этот порт начал работать.

1. Если Вы используете iptables, то действуем этим способом:
Нам необходимо изменить разрешающее правило, вводим данную команду:
nano /etc/sysconfig/iptables

Чтобы быстро найти необходимое поле можем использовать встроенный поиск в утилиту nano. Нажимаем комбинацию клавиш CTRL+W в самом низу появится окно для поиска вносим данную строчку для поиска:
-A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT
Выполним замену dport на 34713:
-A INPUT -p tcp -m state —state NEW -m tcp —dport 34713 -j ACCEPT

Смена порта для SSH

Сохраняем изменения, нажав на комбинацию клавиш CRTL+X, Вас спросят сохранить изменения или нет, для сохранения изменений нажимаем на кнопку «Y», далее «Enter», чтобы закрыть отредактированный файл.

Перезагружаем службу SSH:
service sshd restart

Перезагружаем службу iptables:
service iptables restart

2. Если Вы используете Firewalld, то выполните следующие шаги:

Добавляем правило для открытия порта 34713, используя команду:
firewall-cmd —permanent —add-port=34713/tcp

Если правило добавлено корректно, то нам отобразиться сообщение: success
Перезагружаем службу SSH:
service sshd restart

Перезагружаем службу firewalld:
service firewalld restart

3. Также открыть доступ по SSH можно используя CSF.
Сначала нам необходимо выполнить его установку.
Выполняем установку необходимых зависимостей для CSF (Config Server Firewall):
yum install perl-libwww-perl
yum install perl-Time-HiRes
или
apt install libtime-hires-perl

Приступаем к установке CSF:
wget https://download.configserver.com/csf.tgz
tar xvfz csf.tgz
cd csf
sh install.sh

Выполняем проверку необходимых модулей для iptables:
Testing ip_tables/iptable_filter. OK
Testing ipt_LOG. OK
Testing ipt_multiport/xt_multiport. OK
Testing ipt_REJECT. OK
Testing ipt_state/xt_state. OK
Testing ipt_limit/xt_limit. OK
Testing ipt_recent. OK
Testing xt_connlimit. OK
Testing ipt_owner/xt_owner. OK
Testing iptable_nat/ipt_REDIRECT. OK
Testing iptable_nat/ipt_DNAT. OK
RESULT: csf should function on this server

Выполняем удаление других firewall, которые могут конфликтовать с CSF:
sh /usr/local/csf/bin/remove_apf_bfd.sh

Смена порта для SSH

Редактируем конфигурационный файл CSF:
nano /etc/csf/csf.conf
Ищем поле:
TESTING = «1»
Меняем значение с 1 на 0, чтобы отключить тестовый режим CSF.

Смена порта для SSH

C помощью поиска через комбинацию клавиш CTRL+W ищем строку TCP_IN и добавляем в неё наш порт в самом конце.

Смена порта для SSH

Сохраняем изменения, нажав на комбинацию клавиш CRTL+X, Вас спросят сохранить изменения или нет, для сохранения изменений нажимаем на кнопку «Y», далее «Enter», чтобы закрыть отредактированный файл.

Перезагружаем CSF командной:
csf -r
Перезагружаем службу SSH:
service sshd restart
Проверяем подключение по новому порту SSH:
ssh p номер_порта root@IP_адрес_сервера

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

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