GNU/Linux >> Znalost Linux >  >> Linux

Otevření portu na Linuxu

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í.


Linux
  1. Zkontrolujte použití portu v Linuxu

  2. Efektivně otestovat, zda je port otevřený v Linuxu?

  3. Příkaz Linuxu získat nepoužívaný port

  1. Jak změnit port SSH v Linuxu

  2. Jak otevřít port v Linuxu

  3. Linux SCP definující cílový port

  1. Získejte seznam otevřených portů v Linuxu

  2. jak používat netstat na konkrétním portu v Linuxu

  3. Výpis nepoužívaných portů SATA v systému Linux