В данной статье расскажем, как открыть порт на VPS. Существует несколько методом открыть порт, рассмотрим подробно.
- Открыть порт на Ubuntu 20.04
- Открыть порт на Ubuntu 18.04
- Открыть порт через CSF
- Открыть порт на Centos 7
- Открыть порт двумя способами
1. Открыть порт на Ubuntu 20.04.
Для данной ОС управление открытием и закрытием портов как правило производится через файрволл ufw.
На свежеустановленной системе данный файрволл по умолчанию отключен, нужно будет открыть порт для ssh-соединения и включить файрволл. Если сначала включить файрволл, то доступа через ssh мы лишимся.
Команды:
sudo ufw status verbose
sudo ufw allow 22/tcp
Если открытие порта пройдет успешно, то появится сообщение «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, команды:
apt-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-дисками, можно на нашем сайте.
Комментарии ()