Lär känna ditt nätverk utan och innan genom att regelbundet leta efter öppna portar med dessa Linux-kommandon.
Öppna nätverksportar är de enklaste ingångspunkterna till ditt nätverk. Ibland kan det finnas oönskade tjänster som körs på portar som är externt synliga från internet. Om dessa tjänster är sårbara, skulle ditt nätverk vara under konstant hot om en attack eftersom hela internet varje dag masssöks efter sårbara tjänster på öppna portar.
Lär dig hur du kan skanna och visa öppna portar på dina Linux-system, så att du kan försvara ditt nätverk från hot.
Vad är nätverksportar?
Nätverksportar är logiska åtkomstpunkter i ditt system som kan användas som en kanal för att vara värd för flera tjänster. En port representeras av ett 16-bitars heltal, så det högsta portnumret är 65535.
Du kan tänka på portar som fönster och dörrar i ett hus – i princip alla olika ingångar till ett hus eller en dator. Portar är av tre typer: systemportar (1-1023), registrerade portar (1024-49151) och tillfälliga eller dynamiska portar (49152-65535).
När du startar ett program som kräver anslutning till internet använder det dynamiska portar för att överföra och ta emot data över nätverket. Men när du startar en webbserver eller en SSH-server binder den vanligtvis till systemportarna eller registrerade portar.
För webbservrar som betjänar HTTP är standardsystemporten 80 och för SSH är den 22. Dessa regler, såsom portintervallen, är utvecklade av Internet Assigned Numbers Authority (IANA). Du kan gå igenom RFC angående portar för att få en fullständig lista över alla portar och deras funktioner.
Det är viktigt att du känner till mest sårbara hamnar så att du kan se till att de är stängda eller skyddade.
1. Kontrollera om det finns öppna portar med netstat
netstat är ett populärt verktyg som du kan använda för att se nätverksstatistiken för ditt Linux-system. Det är en del av net-tools-paketet.
Net-tools-paketet är nu avskrivet på grund av bristande underhåll från utvecklaren. Detta är också anledningen till att du kan stöta på ett "ifconfig: kommando hittades inte"-fel när du kör det populära ifconfig-kommandot på Linux.
Så på moderna system, kanske du måste först installera net-tools-paketet, och sedan kommer du att kunna köra netstat-kommandot. Så här letar du efter öppna portar med netstat:
netstat -tuln
Förklaring av kommandot:
- -t visar TCP-portar.
- -u visar UDP-portar.
- -l visar lyssningsportar. Byt ut detta mot a om du vill se alla hamnar, oavsett deras tillstånd.
- -n visar portarnas numeriska värde istället för att lösas till tjänstnamn. Visa till exempel port 22 istället för SSH, det vill säga tjänsten som körs på porten.
2. Kontrollera om det finns öppna portar med ss
ss är den moderna motsvarigheten till netstat-verktyget. Du hittar detta förinstallerat i alla moderna Linux-distributioner. Syntaxen för att kontrollera öppna portar med ss är identisk med netstat.
Så här letar du efter öppna portar med ss:
ss -tuln
Förklaring av kommandot:
- -t visar TCP-portar.
- -u visar UDP-portar.
- -l visar lyssningsportar. Byt ut detta mot a om du vill se alla hamnar, oavsett deras tillstånd.
- -n visar portarnas numeriska värde istället för att lösas till tjänstnamn. Visa till exempel port 21 istället för FTP, dvs tjänsten som körs på porten.
3. Kontrollera om det finns öppna portar med Nmap
Nmap är ett av de mest populära verktygen inom cybersäkerhet och nätverk. Det är ett huvudnamn när det kommer till penetrationstestning av nätverkssäkerhet. Dess primära användningsfall är portskanning så att du inte bara får information om portarna som är öppna i ditt system utan också om de är sårbara och kan utnyttjas.
Dessutom, om du vill kontrollera öppna portar i ett fjärrsystem med IDS/IPS inställt och brandväggar på plats, oroa dig inte eftersom Nmap också kan kringgå brandväggar och IDS/IPS med rätt switchar.
Kolla in det här omfattande guide om Nmap för nybörjare att utforska de olika funktionerna i Nmap och hur man använder dem. Även om du kan, rekommenderas det inte att försöka kringgå brandväggar eftersom det inte är helt tillförlitligt, så det är bäst att du SSH till fjärrservern och sedan kör Nmap på den lokalt.
Här är kommandot för att leta efter öppna portar med Nmap:
nmap -sTU -sV -T 5 --min-hastighet 9000 --min-parallellism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-försök 50 -Pn --disable-arp-ping -n -- script vuln, exploit, auth -v -oX
Förklaring av kommandot:
- -sTU ställer in skanningstypen till TCP Connect och UDP-skanning.
- -T 5 ställer in timingmallen till aggressiv för blixtrasnabba skanningar (rekommenderas inte på ett oskyddat system eftersom det kan resultera i en DoS-attack).
- -sV aktiverar serviceskanning.
- --min-pris 9000 säger åt Nmap att skicka 9000 paket per sekund.
- --initial-rtt-timeout 50ms säger till Nmap att initialt vänta 50 ms på ett svar på varje SYN-paket det skickar.
- --max-rtt-timeout 3000ms säger åt Nmap att vänta i maximalt 3000ms på ett svar.
- --min-parallellism 9000 ställer in det minsta antalet samtidiga skriptkörningar till 9000.
- --max-försök igen 50 säger åt Nmap att försöka igen 50 gånger för att ansluta till en port.
- -Pn inaktiverar ping-sondering.
- --inaktivera-arp-ping inaktiverar ARP-sondering.
- -n inaktiverar DNS-upplösning.
- --script vuln, exploit, auth kör tre skript för att testa för olika typer av sårbarheter i de upptäckta portarna.
- -v returnerar en utförlig utdata.
- -oxe sparar resultat till en XML-fil.
- -6 Valfri parameter för att skanna IPv6-adresser.
4. Kontrollera om det finns öppna portar med lsof
Kommandot lsof i Linux används för att lista öppna filer. Men om du lägger till några switchar till den kommer du att kunna se de öppna internetanslutningarna och portarna på din lokala dator. Så här kontrollerar du om det finns öppna portar med lsof:
lsof -i -n
Förklaring av kommandot:
- -jag listar alla nätverks- och internetfiler.
- -n löser inte värdnamn.
5. Kontrollera om det finns öppna portar med netcat
netcat är ett kommandoradsverktyg som låter dig läsa och skriva från och till TCP/UDP-anslutningar. Observera att detta bara är en funktion hos netcat. Du kan kolla in dess manualsida med hjälp av man nätkatt kommando för att utforska alla dess funktioner och hur man använder dem.
Så här kan du använda netcat för att skanna öppna portar:
nc -zv | grep -v "vägrade"
Förklaring av kommandot:
- -z ställer in netcat till skannerläge.
- -v returnerar en utförlig utdata.
- grep -v "vägrade" returnerar utdatarader utan ordet "avvisad". Detta för att förhindra att terminalen täpps till med meddelanden "anslutning nekad" när netcat inte får någon utmatning från en port.
- 2>&1: Detta är en valfri switch som du kan behöva slå på för att grep ska fungera när du kör netcat i verbose läge. netcat returnerar utdata till stderr (betecknad med 2). Så för att gripa utdatan måste du omdirigera stderr till stdout (betecknad med 1) och sedan skicka den till grep.
Ju djupare du känner till ditt nätverk desto bättre kan du försvara det
Att veta vilka portar som är öppna och vilka tjänster som körs på ditt system är ett bra steg för att försvara det från potentiella externa attacker. Detta gör att du kan söka efter och stänga av onödiga tjänster, hitta föråldrade tjänster och även upptäcka om det finns några skadliga filer som bind eller omvända skalbakdörrar som körs på din systemet.
Om du menar allvar med nätverkssäkerhet bör du överväga att installera och konfigurera en IDS-lösning för att övervaka all aktivitet på ditt nätverk och genomdriva regeluppsättningar för att förhindra oönskade anslutningar.