Как да отворите портове в Linux
Linux Ubuntu основи на Ubuntu Герой / / March 02, 2022

Последна актуализация на

Ако искате да разрешите външни връзки към компютър или сървър, ще трябва да отворите правилния порт. Потребителите на Linux могат да отварят портове с помощта на това полезно ръководство.
Трябва да се свържете с външен компютър или сървър — или имате нужда от друг компютър или сървър, за да се свържете с вас? Ако използвате Linux, ще трябва да се уверите, че правилният порт е отворен.
Докато другите операционни системи обикновено имат някакъв графичен инструмент за това, Linux не е толкова прост. Ще ви преведем как да отваряте портове в Linux по-долу.
Какво е порт и защо трябва да го отворя?
Портът е крайна точка в мрежата. Мислете за това като за врата, която води към определена стая или външния свят, но на вашия компютър. Всичко, което правите в интернет, използва определен порт или серия от портове.
Например, да кажем, че искате да стартирате свой собствен сървър на Minecraft. За да направите това, ще трябва да отворите порт, през който потребителите да се свързват с него. Същото важи и за стартирането на собствен уеб, пощенски или FTP сървър.
Портовете са стандартизирани във всички свързани към мрежата устройства. Първите 1024 порта (от 0 до 1023) се наричат добре познати номера на портове. Те са запазени за най-често използваните услуги, като HTTP и HTTP (съответно порт 80 и 443) и SSH (порт 22).
Номерата на портове над 1024 се наричат ефимерни пристанища, и обикновено са достъпни за използване за вашите онлайн игри, частни уеб сървъри и т.н. Извикват се номера на портове от 1024 до 49151 регистриран или потребителски портове, докато тези от 49152 до 65535 са известни като динамичен или частни пристанища.
Изброяване на отворени портове в Linux
Преди да започнете да се опитвате да отворите порт на Linux, трябва да се уверите, че той вече не се използва. Можете да постигнете това с помощта на netstat команда, включена в повечето дистрибуции на Linux. Ако вашата дистрибуция няма netstat, можеш да използваш ss вместо.
netstat -lntu.

Това ще отпечата всички гнезда за слушане (-л), заедно с номера на порта (-н). Включва TCP портове (-т), както и UDP (-u). Ако вашата система няма netstat, просто използвайте ss със същите параметри.
ss -lntu.

Как да отворите портове в Linux
В името на този пример ще приемем, че искаме да отворим порт 4000 към TCP връзки. Първо трябва да се уверим, че портът вече не се използва. Правим това чрез netstat или ss.
netstat -na | grep :4000. ss -na | grep :4000.
Ако приемем, че изходът е празен, можем да добавим съответните правила за портове към защитната стена на системата. Методите за това ще варират в зависимост от вашата дистрибуция и дали използва по-новата ufw защитна стена или защитна стена. Ubuntu предпочитаufw, докато CentOS обикновено използвазащитна стена вместо. Разбира се, все още има някои Linux дистрибуции, използващи по-старите iptables защитна стена.
За потребители на Ubuntu и други системи, базирани на защитна стена на ufw
Вместо да използвате по-стария iptables защитна стена, Ubuntu и някои други дистрибуции използват ufw. При тези системи следната команда ще отвори порта.
sudo ufw разреши 4000.
Прескочете следващите няколко стъпки и тествайте новоотворения си порт, за да се уверите, че работи.
Как да отворите портове в Linux с помощта на CentOS и други базирани на защитна стена системи
Ако вашата система използва защитна стена, най-добре е да използвате защитна стена-cmd команда за актуализиране на правилата.
sudo firewall-cmd --add-port=4000/tcp.
Това няма да бъде постоянна промяна, но ще разгледаме как да запазим правилата след рестартиране, след като тестваме порта.
За други дистрибуции на Linux
Ако вашата Linux система няма ufw или защитна стена, ще трябва да използвате iptables. Ако не е инсталиран, продължете и го вземете с помощта на вашия мениджър на пакети по избор. След като бъде инсталиран, тези команди ще отворят порт 4000:
sudo iptables -A INPUT -p tcp --dport 4000 -j ПРИЕМАНЕ. sudo service iptables рестартирайте.
Ако вашата система използва systemctl, заменете втората команда с:
sudo systemctl рестартирайте iptables.
Тестване на новооткрити портове за връзки
След това трябва да тестваме порта, за да се уверим, че приема връзки. Правим това с помощта на netcat (nc), за да слушате порта, след което се опитвате да се свържете с telnet към него.
Първо отворете прозорец на терминала и издайте тази команда:
sudo ls | nc -l -p 4000.
Оставете го да работи (слуша) и отворете втори терминален прозорец. В този прозорец ще използвате telnet, за да тествате свързаността. Ако telnet не е инсталиран, направете го с вашия мениджър на пакети.
telnet [име на хост/IP адрес] [номер на порта]
Сменете [име на хост/IP адрес] с IP адреса на вашата система и [номер на пристанище] с номера на порта, който сте отворили.
telnet локален хост 4000.
Трябва да видите изход като този по-долу, което показва отворена връзка с nc.

Можем също да покажем, че портът е отворен с помощта nmap. Отново, ако командата вече не е инсталирана, използвайте мениджъра на пакети, за да я извлечете.
nmap localhost -p 4000.

Отбележи, че nmap ще изброява само отворени портове, които слушат за връзки. Ето защо използваме netcat за тестване, за да слушаме на този порт. В противен случай портът няма да се регистрира като отворен.
Не мога да се свържа с порта, който току-що отворих, какво сега?
Ако преминете през всички стъпки по-горе и не можете да постигнете връзка с порта, проверете отново въвеждането си. Ако сте сигурни, че сте въвели всичко правилно, има вероятност да се наложи да преконфигурирате мрежовия си рутер, за да разрешите трафика.
Тъй като всеки мрежов рутер има различни екрани за конфигурация, трябва да се консултирате със страниците за поддръжка или ръководството на потребителя за вашето конкретно оборудване. Ще трябва да проверите за настройки за пренасочване на портове или картографиране на портове, както и всяка вградена защитна стена, която рутерът може да използва.
Как да отворите за постоянно порт в Linux
След като сте тествали своя отворен порт и се уверите, че работи, вероятно ще искате да направите промяната постоянна. В противен случай промените може да не останат след рестартиране. Ако сте потребител на Ubuntu или по друг начин използвате ufw защитна стена, не е нужно да се притеснявате за това. В ufw правилата не се нулират при рестартиране.
За потребители на защитна стена
Лесно е да задържите правилото за порт след рестартиране защитна стена. Просто добавете — постоянен флаг към първоначалната ви команда и той ще бъде включен в правилата за защитната стена на вашата Linux система при стартиране.
sudo firewall-cmd --add-port=4000/tcp --permanent.
Ако все още използвате iptables
В iptables защитната стена е много по-обезпокоителна (може би добра причина да надстроите до защитна стена или ufw). За „постоянно“ отваряне на порт в iptables, можете да инсталирате iptables-постоянен пакет за помощ.
Когато за първи път инсталирате iptables-постоянен на базирана на Debian система, тя ще запази текущите ви правила в едно от двете /etc/iptables/rules.v4 или /etc/iptables/rules.v6. За да добавите нови правила, ще издадете следната команда:
sudo iptables-save > /etc/iptables/rules.v4.
ИЛИ
sudo iptables-save > /etc/iptables/rules.v6.
За тези, които използват базирани на RPM дистрибуции на Linux, е малко по-различно. Пакетът се нарича iptables-услуги, а файловете за запис са /etc/sysconfig/iptables и /etc/sysconfig/ip6tables.
При RPM-базирани дистрибуции има и различна команда, използвана за IPv6 портове. Записването на вашите правила става с помощта на една от тези две команди:
sudo iptables-save > /etc/sysconfig/iptables. sudo ip6tables-save > /etc/sysconfig/iptables.
Уверете се, че наблюдавате използването на вашия порт
С течение на времето нуждите на вашия сървър може да се променят. Точно както трябва бъдете в крак с потребителските акаунти на вашата Linux машина също трябва редовно да проверявате отворените си портове. Затворете всички отворени портове, които вече не са необходими. Заедно с редовно промяна на вашата парола, това е добра практика за сигурност, която ще ви помогне да избегнете системни прониквания и експлоати за сигурност.