Ať už používáte Linux jako server nebo desktop, znalost otevřených portů nebo používaných portů může být užitečná v různých situacích.
Pokud například používáte webový server založený na Apache nebo Ngnix, použitý port by měl být 80 nebo 443. Kontrola portů to potvrdí. Podobně můžete zkontrolovat, který port používá SMTP nebo SSH nebo některé další služby. Vědět, které porty se používají, může být užitečné při přidělování portů nové službě.
Můžete také zkontrolovat, zda jsou otevřené porty pro detekci narušení.
V Linuxu existují různé způsoby kontroly portů. V tomto rychlém tipu se podělím o dvě své oblíbené metody.
Metoda 1:Kontrola otevřených portů v aktuálně přihlášeném systému Linux pomocí příkaz lsof
Pokud jste přihlášeni do systému, buď přímo, nebo přes SSH, můžete ke kontrole jeho portů použít příkaz lsof.
sudo lsof -i -P -n
Tento příkaz lsof se používá k vyhledání souborů a procesů používaných uživatelem. Možnosti uživatele zde jsou:
- -i:Pokud není zadána žádná adresa IP, tato možnost vybere seznam všech síťových souborů
- -P:zabrání převodu čísel portů na názvy portů pro síťové soubory
- -n:zabrání převodu čísel sítě na názvy hostitelů pro síťové soubory
Ale také nám to ukazuje spoustu dalších portů, které počítač ve skutečnosti neposlouchá.
Tento výstup můžete jednoduše převést do příkazu grep a porovnat vzor „LISTEN“ takto:
sudo lsof -i -P -n | grep LISTEN
Zobrazí se pouze porty, které náš počítač aktivně naslouchá, a také to, která služba používá uvedený otevřený port.
Metoda 2:Kontrola portů na libovolném vzdáleném serveru Linux pomocí příkazu netcat
nc (Netcat) je nástroj příkazového řádku, který čte a zapisuje data mezi počítači přes síť pomocí protokolů TCP a UDP.
Níže je uvedena syntaxe pro nc
příkaz:
nc [options] host port
Tento nástroj má šikovný -z
vlajka. Při použití vytvoří nc
skenovat naslouchající démony, aniž by do portu skutečně posílala jakákoli data.
Zkombinujte to s -v
příznak, umožňující upovídanost, můžete získat podrobný výstup.
Níže je uveden příkaz, který můžete použít ke skenování otevřených portů pomocí nc
příkaz:
nc -z -v <IP-ADDRESS> 1-65535 2>&1 | grep -v 'Connection refused'
Nahraďte IP-ADDRESS
s IP adresou systému Linux, jehož porty kontrolujete.
Pokud jde o důvod, proč jsem vybral hodnoty 1
na 65535
, protože rozsah portů začíná od 1
a končí na 65535
.
Nakonec výstup nasměrujte do grep
příkaz. Pomocí -v
možnost, vylučuje jakýkoli řádek, který má jako odpovídající vzor "Připojení odmítnuto".
Zobrazí se všechny porty, které jsou na počítači otevřené a jsou přístupné jinému počítači v síti.
Závěr
Z těchto dvou metod preferuji příkaz lsof. Je to rychlejší než příkaz nc. K tomu však musíte být přihlášeni do systému a mít sudo přístup. Jinými slovy, lsof je vhodnější volbou, pokud spravujete systém.
Příkaz nc má flexibilitu skenování portů bez přihlášení.
Oba příkazy lze použít pro kontrolu otevřených portů v Linuxu na základě scénáře, ve kterém se nacházíte. Užijte si to.