Než se dozvíme o otevření portu v Linuxu, pojďme pochopit, co jsou síťové porty. port je komunikační koncový bod. V rámci operačního systému port umožňuje datovým paketům specifické procesy nebo síťové služby.
Porty obvykle identifikují konkrétní síťovou službu, která je jim přiřazena. To lze změnit ruční konfigurací služby tak, aby používala jiný port, ale obecně lze použít výchozí hodnoty.
Prvních 1024 porty (Porty 0–1023 ) se označují jako známá čísla portů a jsou vyhrazena pro nejpoužívanější služby, mezi které patří SSH (port 22), HTTP a HTTPS (port 80 a 443) atd. Čísla portů nad 1024 se označují jako efemérní porty .
Mezi pomíjivými porty jsou čísla portů 1024-49151 se nazývají Registrovaný/Uživatel Porty. Zbývající porty, 49152-65535 se nazývají Dynamické/Soukromé Porty.
V tomto tutoriálu si ukážeme, jak můžeme otevřít pomíjivý port na Linuxu, protože nejběžnější služby používají dobře známé porty.
Seznam všech otevřených portů
Před otevřením portu v Linuxu nejprve zkontrolujte seznam všech otevřených portů a vyberte z tohoto seznamu pomíjivý port, který chcete otevřít.
Můžeme použít netstat příkaz k zobrazení seznamu všech otevřených portů, včetně portů TCP , UDP , což jsou nejběžnější protokoly pro přenos paketů v síťové vrstvě.
POZNÁMKA :Pokud vaše distribuce nemá netstat
, to není problém. Můžete použít ss
příkaz pro zobrazení otevřených portů přes naslouchající sokety.
netstat -lntu
Tím se vytisknou všechny poslechy zásuvky (-l
) spolu s číslem portu (-n
), s TCP porty (-t
) a UDP porty (-u
) je také uveden ve výstupu.
Abychom se ujistili, že dostáváme konzistentní výstupy, ověřte to pomocí ss
příkaz pro výpis naslouchacích soketů s otevřeným portem.
ss -lntu
To poskytuje víceméně stejné otevřené porty jako netstat
, takže můžeme jít!
Otevření portu v systému Linux pro povolení připojení TCP
Otevřeme uzavřený port a necháme jej poslouchat TCP Připojení, pro účely tohoto příkladu.
Od portu 4000 se v mém systému nepoužívá, rozhodl jsem se otevřít port 4000 . Pokud tento port není ve vašem systému otevřený, můžete si vybrat jiný uzavřený port. Jen se ujistěte, že je větší než 1023 !
Ještě jednou, abychom se ujistili, pomocí netstat
se ujistěte, že port 4000 není používán nebo ss
příkaz.
netstat -na | grep :4000
ss -na | grep :4000
Výstup musí zůstat prázdný, abychom ověřili, že se aktuálně nepoužívá, abychom mohli ručně přidat pravidla portu do systémového iptables firewallu .
Pro uživatele Ubuntu a systémy založené na ufw firewallu
Ubuntu má firewall s názvem ufw
, který se stará o tato pravidla pro porty a připojení, namísto starých iptables
firewall. Pokud jste uživatelem Ubuntu, můžete port otevřít přímo pomocí ufw
sudo ufw allow 4000
Můžete přeskočit několik následujících kroků a přímo otestovat nově otevřený port!
Pro systémy CentOS a firewall
Pro tyto typy systémů, pokud máte firewalld
jako primární firewall se doporučuje použít firewall-cmd
aktualizovat pravidla brány firewall namísto starých iptables
firewall.
firewall-cmd --add-port=4000/tcp
POZNÁMKA:Tím se resetuje firewalld
pravidla se při restartu nastaví jako výchozí, takže pokud chcete toto nastavení trvale změnit, přidejte --permanent
příznak k příkazu.
firewall-cmd --add-port=4000/tcp --permanent
Můžete přeskočit několik následujících kroků a přímo otestovat nově otevřený port!
Pro jiné distribuce Linuxu
Pojďme tedy tento nový port přidat do našich systémových pravidel iptables pomocí iptables
příkaz.
Pokud tento příkaz ještě není nainstalován, získejte jej pomocí správce balíčků.
iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
Tím nastavíte bránu firewall na připojení (-A
) nové pravidlo pro přijímání vstupních paketů prostřednictvím protokolu (-p
) TCP kde cílový port (--dport
) je 4000 a určuje cílový skok (-j
) pravidlo jako AKCEPTOVAT .
Chcete-li aktualizovat pravidla brány firewall, restartujte iptables
službu.
sudo service iptables restart
NEBO pomocí systemctl
pokud ho máte.
sudo systemctl restart iptables
Otestujte nově otevřený port pro připojení TCP
Nyní, když jsme úspěšně otevřeli nový TCP port (v mém případě port 4000), pojďme to vyzkoušet.
Nejprve spustíme netcat (nc
) a poslouchejte na portu 4000, zatímco odesíláte výstup ls
libovolnému připojenému klientovi. Jakmile tedy klient otevře připojení TCP na portu 4000, obdrží výstup ls
.
ls | nc -l -p 4000
To umožňuje, aby netcat naslouchal na portu 4000. Tuto relaci zatím nechte na pokoji.
Otevřete další terminálovou relaci na stejném počítači.
Protože jsem otevřel port TCP, použiji telnet
pro kontrolu připojení TCP. Pokud příkaz neexistuje, znovu jej nainstalujte pomocí správce balíčků.
Formát pro telnet :
telnet [hostname/IP address] [port number]
Zadejte tedy IP svého serveru a číslo portu, což je 4000 v mém případě a spusťte tento příkaz.
telnet localhost 4000
Toto se pokusí otevřít TCP spojení na localhost
na portu 4000.
Získáte výstup podobný tomuto, což znamená, že bylo navázáno spojení s poslechovým programem (nc
).
Jak můžete vidět, výstup ls
(while.sh
v mém případě) byl také odeslán klientovi, což znamená úspěšné připojení TCP!
Abychom vám ukázali, že port je skutečně otevřený, můžeme použít nmap
pro kontrolu.
nmap localhost -p 4000
Náš přístav byl skutečně otevřen! Úspěšně jsme otevřeli nový port na našem systému Linux!
POZNÁMKA :nmap
uvádí pouze otevřené porty, které mají aktuálně naslouchající aplikaci. Pokud nepoužíváte žádnou naslouchací aplikaci, jako je netcat, zobrazí se port 4000 jako uzavřený, protože na tomto portu aktuálně nenaslouchá žádná aplikace. Podobně nebude fungovat ani telnet, protože potřebuje také naslouchací aplikaci, ke které se bude vázat. To je důvod, proč nc
je tak užitečný nástroj. To simuluje taková prostředí v jednoduchém příkazu.
Ale to je pouze dočasné, protože změny budou resetovány pokaždé, když restartujeme systém.
Po každém restartu je potřeba aktualizovat pravidla
Postup uvedený v tomto článku pouze dočasně aktualizuje pravidla brány firewall, dokud se systém nevypne/restartuje. Podobné kroky je tedy nutné opakovat, aby se po restartu znovu otevřel stejný port.
Pro ufw Firewall
ufw
pravidla nejsou resetovat při restartu, takže pokud jste uživatelem Ubuntu, nemusíte se o tuto část starat!
Je to proto, že je integrován do zaváděcího procesu a jádro ukládá pravidla brány firewall pomocí ufw
, prostřednictvím příslušných konfiguračních souborů.
Pro firewall
Jak již bylo zmíněno, firewalld
také trpí stejným problémem, ale tomu se lze vyhnout připojením --permananent
flag na počáteční příkaz při otevírání portu nebo nastavování jiného pravidla.
Můžete například otevřít port TCP 4000 trvale pomocí níže uvedeného příkazu:
firewall-cmd --zone=public --add-port=400/tcp --permanent
Pro iptables
Pro iptables
firewall, i když se této nepříjemnosti nelze vyhnout, můžeme potíže minimalizovat.
Můžeme uložit iptables
pravidla do konfiguračního souboru, jako je /etc/iptables.conf
.
sudo iptables-save | sudo tee -a /etc/iptables.conf
Poté jej můžeme po restartu načíst z konfiguračního souboru pomocí níže uvedeného příkazu:
sudo iptables-restore < /etc/iptables.conf
Nyní iptables
pravidla jsou nyní aktualizována a naše porty jsou znovu otevřeny!
Závěr
V tomto tutoriálu jsme vám ukázali, jak můžete otevřít nový port v Linuxu a nastavit jej pro příchozí připojení.