přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap

Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap

debain_notext.png

Nmap je jeden z nejpopulárnějších nástrojů pro skenování portů. Umí toho poměrně dost a výborně se hodí k základním prověrkám bezpečnosti, zejména pak po různých úpravách firewallu nebo konfigurace sítě. V tomto dílu vás s tímto nástrojem seznámím.


Úvod

Jako správci jste se určitě setkali s potřebou ověřit si, zda vámi nastavený firewall funguje podle vašich představ, zda jste na něco nezapomněli nebo zda jste se v něčem nespletli. Stejně tak jste možná chtěli zjistit, jaké informace mohou o vašich serverech (a službách na nich dostupných) získat případní útočníci.

Nmap je, jak už bylo v úvodu řečeno, jeden z nejpopulárnějších nástrojů pro skenování sítí, alespoň v oblasti GNU/Linuxu. Je to velmi pokročilý nástroj, který má mnoho možností. Umí samozřejmě skenovat porty, ale také zvládne skenovat sítě (a hledat běžící počítače), dokáže detekovat nejenom běžící služby, ale i verze příslušných démonů a také verzi použitého operačního systému.

Na závěr úvodu musím bezpodmínečně upozornit na to, že byste měli skenovat pouze ty počítače nebo sítě, které máte pod svou správou. V ostatních případech byste Nmap měli používat pouze se souhlasem všech dotčených subjektů (majitelé a správci příslušných počítačů nebo sítí). Skenování portů bez svolení může být detekováno a považováno za formu útoku.

Dejte si také pozor na skenování sítí v organizaci, pro kterou pracujete (pracujete-li pro nějakou). Zejména, pokud máte na starosti správu serverů a sítě spravuje někdo jiný. Skenování portů bývá často monitorováno pomocí různých IDS a bylo by nemilé, kdyby se na vás po použití Nmapu vyřítil rozezlený správce sítě.

Instalace a GUI pro Nmap

Před samotným použitím Nmapu by bylo vhodné jej nainstalovat. Jelikož Nmap je masivně rozšířený v linuxových distribucích, s největší pravděpodobností naleznete stejnojmenný balíček, který můžete nainstalovat pomocí správce balíčků. V Debianu byste to provedli třeba takto:

aptitude install nmap

V Arch Linuxu a možná i v jiných distribucích je součástí balíčku nmap i jeho GUI, zenmap. V Debianu a Fedoře tomu tak není, tam je balíček s GUI osamostatněn:

aptitude install zenmap

GUI Nmapu může být poměrně užitečné, jelikož umí značně zpřehlednit výsledky skenování. Umí také kombinovat informace získané z různých skenů, dokonce zvládne i skenované sítě vizualizovat. Určitě tedy doporučuji se na něj podívat, i když v tomto článku se jím zabývat nebudu. Jeho ovládání není nijak komplikované, a pochopíte-li základy práce s Nmapem, měli byste být schopni bez problémů zvládnout práci s jeho GUI.

Základní použití

Oficiální syntax pro Nmap vypadá takto:

nmap [volby] [cíle]

V zásadě ale na pořadí nezáleží, Nmap je v tomhle poměrně tolerantní. Na úvod si můžete zkusit oskenovat vlastní počítač:

nmap localhost

Přirozeně, sken zevnitř a sken zvenčí budou dávat odlišné výsledky, jelikož skenování sebe sama jde přes místní smyčku (local loopback, localhost), kde obvykle běží řada služeb, které ze sítě nemusí být vůbec dostupné. Pokud si vzpomenete na díly o bezpečnosti, zdůrazňoval jsem v nich možnost nakonfigurovat démony tak, aby naslouchaly pouze na místní smyčce a nikde jinde. Např. MySQL je tak (přinejmenším v Debianu) po čerstvé instalaci již nastaven. Dodám, že pro skenování sebe sama nemusí být Nmap vhodným nástrojem, osobně bych doporučil použít netstat:

netstat -tulpn

Pro úplnost dodám, že volby -t a -u zobrazují služby běžící na TCP a UDP, dále -l je zodpovědná za vypisování pouze naslouchajících služeb (chcete-li zobrazit všechna spojení, použijte -a), -n vypíná překlad adres na jména (výstup tedy bude vyjádřen v číslech) a konečně -p zobrazí PID i název démona, který je zodpovědný za obsazení daného portu. Toto je velmi užitečný nástroj a také velmi užitečná kolona parametrů.

Ale zpět k Nmapu. Většinou jej budete používat na konkrétní počítač na síti:

nmap 10.0.1.13

Výstup takového příkazu by mohl vypadat takto:

Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-26 16:48 CET
Nmap scan report for 10.0.1.13
Host is up (0.019s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds

Na tomto konkrétním počítači je patrný pouze jediný otevřený port, a sice SSH (port 22). Ostatní porty jsou zavřené.

Pokud nenastavíte žádné volby, využije Nmap pro všechny parametry výchozí hodnoty. Ty zahrnují mj. typ skenu, rozsah portů, rychlost skenování apod. Nmap také volí různé hodnoty v závislosti na tom, jaká máte privilegia. Kupříkladu, pouštíte-li jej pod rootem, provádí TCP SYN scan (-sS), zatímco pokud byste jej pustili pod neprivilegovaným uživatelem, kde není k dispozici přímý přístup k síťovému rozhraní, zvolí Nmap náhradní variantu, TCP connect scan (-sT). Skutečnost, že různé funkce Nmapu vyžadují různá privilegia, byste měli mít na paměti, jelikož Nmap ne vždy varuje, že mu privilegia chybí. Pak se můžete dlouho divit, proč vrací prázdný výsledek, i když jste parametry specifikovali dobře.

Ve výchozím stavu provádí Nmap před samotným skenováním portů test, zda je příslušný počítač online (host discovery). Pokud v této fázi nezjistí, že je počítač online, nebude provádět skenování portů:

nmap 10.0.1.254  

Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-28 17:28 CET
Note: Host seems down. If it is really up, but blocking our ping probes, try -PN
Nmap done: 1 IP address (0 hosts up) scanned in 3.00 seconds

Zde naštěstí Nmap rovnou radí, že zjištění stavu lze přeskočit pomocí volby -PN:

nmap -PN 10.0.1.254 

Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-28 17:28 CET
Nmap scan report for orion (10.0.1.254)
Host is up (0.00035s latency).
Not shown: 998 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
53/tcp  open   domain

Nmap done: 1 IP address (1 host up) scanned in 4.56 seconds

Ke zjištění stavu cílového počítače využívá Nmap různé nástroje – kromě klasického ICMP echo (ping) využívá také protokol ARP, ovšem pouze v privilegovaném režimu (viz varování výše).

Skenování sítí

Nmap umí skenovat nejenom konkrétní počítače, ale také celé sítě. Realizuje se to velmi snadno, prostě specifikujete konkrétní subnet místo jednoho počítače:

nmap 10.0.1.0/24

Pokud nechcete provádět skenování portů jednotlivých počítačů, ale pouze zjištění, které počítače jsou v dané síti dostupné, můžete skenování portů vypnout (volbou -sP):

nmap -sP 10.0.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-28 16:54 CET
Nmap scan report for 10.0.1.12
Host is up (0.00013s latency).
Nmap scan report for 10.0.1.13
Host is up (0.014s latency).
Nmap scan report for 10.0.1.15
Host is up (0.0018s latency).
Nmap scan report for 10.0.1.16
Host is up (0.00059s latency).
Nmap scan report for 10.0.1.17
Host is up (0.0017s latency).
Nmap scan report for 10.0.1.51
Host is up (0.00097s latency).
Nmap scan report for 10.0.1.252
Host is up (0.015s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 3.01 seconds

Interpretace výsledků

Jednotlivé porty se mohou jevit buď otevřené (open), zavřené (closed), nebo filtrované (filtered). Otevřený port znamená dostupnou službu a potenciální prostor pro průnik útočníka do systému. Služba, která je zvenčí dostupná, může být (a bývá) vystavena nejrůznějším útokům, a měla by tedy být velmi dobře zabezpečena. Pokud nemusí být přístupná světu (např. SSH), bývá dobré ji na firewallu omezit pouze pro ty počítače a sítě, ze kterých se na ni potřebujete hlásit.

Zavřený port je takový, který odmítá pokus o spojení (v iptables je to typicky -j REJECT). Tím se liší od filtrovaného portu, který neodpovídá vůbec (ekvivalent -j DROP). Pokud chcete být hodní a chovat se podle norem, měli byste na pokus o spojení reagovat odmítnutím. To však podstatně urychluje skenování portů. Mimo jiné i proto řada správců využívá možnosti zahazovat neoprávněné žádosti o spojení bez jakéhokoliv oznamování. Skenování portů pak trvá déle, jelikož nelze s jistotou říci, zda paket k cíli dorazil nebo ne, tudíž se déle čeká. Skenování portů ovšem zahazování žádostí o spojení nijak nezabrání.

Pokračování příště

Tolik tedy k úvodu do Nmapu. Příští díl se bude věnovat jeho bohatému spektru voleb a jednotlivým typům skenů.

Nahoru

Příspěvky

Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Linux user 1. 03. 2012, 10:36:23
Odpovědět  Odkaz 
Moc pěkný seriál a díky za něj. Neuvažujete i o vydání offline verze třeba ve formátu pdf?
Re: Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
David 1. 03. 2012, 13:44:59
Odpovědět  Odkaz 
+1
Vlastimil Ott Re: Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Vlastimil Ott 1. 03. 2012, 19:49:49
Odpovědět  Odkaz 
My bychom rádi, čekáme, až autor skončí. Ale plánujeme to už na podzim 2014. :-) ;-) ;-)
Tomáš Crhonek Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Tomáš Crhonek 1. 03. 2012, 17:02:06
Odpovědět  Odkaz 
"Na závěr úvodu musím bezpodmínečně upozornit na to, že byste měli skenovat pouze ty počítače nebo sítě, které máte pod svou správou. V ostatních případech byste Nmap měli používat pouze se souhlasem všech dotčených subjektů (majitelé a správci příslušných počítačů nebo sítí)."

Tyhle "legal" věci jsou jistě na širší diskusi, jen však nerozumím tomu z čeho vychází doporučení vyžádat si souhlas od majitelů scanovaných zařízení?

Port scan považuji za jeden ze základních nástrojů při řešení problémů se sítí a pokud se provádí "něžně" tedy jako pokus o klasické navázání TCP spojení, či odeslání UDP a čekání na reakci, tak nepředstavuje vůbec žádný problém (záměrně zmršené packety a různé flood útoky jsou samozřejmně něco jiného, to sem nepočítám).

Ani nevím, kolikrát jsem nmap jako technik použil při řešení problémů typu "klient se chce připojit na nějaký server, server má poskytovat vícero služeb, přičem nejedou a není jasná příčina".

Navíc, je daleko rychlejší si daný stroj oscanovat a buď se na základně takto získaných informací dopátrat příčiny nebo v případě nezdaru poslat dotaz společně s portscanem. Jako technik bych takto položený dotaz + technické informace ocenil daleko víc, než dotazy "jestli můžu scanovat". Scanuj si co chceš a neotravuj :-).
Re: Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Michal Dočekal 11. 03. 2012, 15:50:55
Odpovědět  Odkaz 
"Tyhle "legal" věci jsou jistě na širší diskusi, jen však nerozumím tomu z čeho vychází doporučení vyžádat si souhlas od majitelů scanovaných zařízení?"

Je to podle mne lepší než řešit situaci, kdy z provedeného skenu méně kompetentní nebo přehnaně paranoidní správce udělá bezpečnostní incident. Jinak osobně také mnohdy používam Nmap bez vyžádání souhlasu, ale je to "na vlastní triko" a v článku jsem chtěl být vzhledem k různým typům čtenářů lehce paranoidní a předvídat různé nepředvídatelné situace. :-)
Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Vojta 2. 03. 2012, 08:32:38
Odpovědět  Odkaz 
Zvlastni, moje verze nmapu nezna -sn ani -Pn (Nmap 5.00-3, Debian Squeeze).
Re: Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
Michal Dočekal 11. 03. 2012, 15:39:11
Odpovědět  Odkaz 
Máte pravdu, v Debianu je starší verze Nmapu, než se kterou jsem při psaní článku zacházel. Místo -sn použijte -sP a místo -Pn použijte -PN. Za tuto chybu se omlouvám.
Správa linuxového serveru: Úvod do skenování sítí pomocí Nmap
karl 2. 03. 2012, 22:38:22
Odpovědět  Odkaz 
Tenhle seriál sleduji už delší dobu a je opravdu skvělý:-) Jen tak dál!!

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz