
Az Nmap fejlesztésének legfontosabb szempontja a teljesítmény. Egy
alapértelmezett letapogatás (nmap
<gépnév>) egy helyi hálózaton lévő gépen
nagyjából 0.2 másodpercig tart. Ez épp egy pislogásnyi idő, amely azonban egyre nő,
ahogy növekszik a célpontként meghatározott gépek száma. Továbbá bizonyos letapogatási
formák, mint például az UDP letapogatás, vagy a változat érzékelés számottevően
megnövelik a letapogatás időtartamát. Ugyanilyen hatása van bizonyos tűzfal
beállításoknak, különösen ha korlátozták az egységnyi idő alatt kibocsátható
válaszok számát. Bár az Nmap ezeknek a letapogatásoknak a felgyorsítására sok
párhuzamosítást és fejlett eljárásokat használ, a felhasználó alapjaiban befolyásolhatja
az Nmap működését. Szakértő felhasználók gondosan összeállított Nmap parancsokkal
rövid idő alatt megszerezhetik a számukra fontos információkat. A letapogatási idő csökkenthetők a nem kritikus tesztek elhagyásával és
az Nmap legfrissebb változatának telepítésével (gyakran történnek teljesítményt
növelő változtatások). Számottevő javulás érhető el az időzítési paraméterek
helyes megválasztásával is. Ezek a paraméterek az alábbiakban találhatóak. Néhány paraméternél használható a time
kiegészítés is. Alaphelyzetben ez milliszekundumban értendő, de az érték után írt
's’, ‘m’ vagy ‘h’ karakterekkel megadhat másodperces, perces vagy órás időtartamot
is. Például a --host-timeout paraméternek átadott 900000,
900s és 15m
értékek mind ugyanazt jelentik. -
--min-hostgroup <méret>;
--max-hostgroup
<érték> (A párhuzamosan letapogatható állomások száma)
Az Nmap képes kapuletapogatást és változat érzékelést végezni egyszerre
több állomáson is. Az Nmap ezt úgy csinálja, hogy az IP tartományt csoportokra
osztja és egyszerre tapogat le egy csoportot. Általában a nagyobb csoportok
hatékonyabbak. A hátránya, hogy az egyes állomásokhoz tartozó eredmények csak
akkor érhetők el, ha végetért a teljes csoport letapogatása. Tehát ha az Nmap
50-es csoportmérettel lett elindítva, a felhasználó addig nem kap semmilyen eredményt
(kivéve a bőbeszédű üzemmód frissítési információit), amíg az első 50 állomás
letapogatása el nem készült. Ennek a konfliktusnak a feloldására az Nmap egy kompromisszumos megoldást
használ. Kezdésként csak egy 5 elemből álló csoportot hoz létre, így az első eredmények
gyorsan megérkeznek. Ezután a csoportméretet folyamatosan növeli, akár 1024-ig.
A kezdeti csoportméret pontos értéke a megadott paraméterektől függ. A hatékonyabb
működés érdekében az Nmap nagyobb csoportokat hoz létre az UDP letapogatásoknál,
illetve a csak néhány TCP kaput érintő letapogatásoknál. Ha a --max-hostgroup paraméterben megadta a maximális
csoportméretet, az Nmap ezt nem fogja túllépni. Ha megadja a --min-hostgroup
paramétert, az Nmap megpróbálja a csoportméretet efölött tartani. Az Nmap kialakíthat
kisebb csoportot is a megadottnál, ha nem áll rendelkezésre elegendő állomás a
megadott minimális csoportméret létrehozásához. Megadható mindkét határérték is,
hogy a csoportméret egy meghatározott sávban maradjon, de erre ritkán van szükség. Ezeknek a paramétereknek nincs hatásuk a letapogatásnak abban a részében,
mikor még csak az állomások felderítése történik. Ebbe beletartozik az egyszerű
visszhang letapogatás is(-sP). Az állomások felderítése mindig nagy
csoportokban történik a sebesség és a pontosság növelésének érdekében. Ezeknek a paramétereknek az elsődleges haszna egy megfelelő méretű minimális
csoprt létrehozása, így a teljes letapogatás gyorsabban lefut. Egy megszokott
választás a 256-os csoport, így egy hálózat C osztályú blokkokban tapogatható le.
Sok kaput tartalmazó letapogatásnál ezt a számot nem célszerű túllépni. Ha a letapogatás
csak néhány kapura korlátozódik, a csoportméret akár 2048-ig (vagy tovább) is
növelhető. -
--min-parallelism <szám>;
--max-parallelism
<szám> (Párhuzamos próbák beállítása)
Ezekkel a paraméterekkel meghatározható, hogy az állomások egy csoportja
felé párhuzamosan hány próba küldhető. Ez a kapuk letapogatására és az állomások
felderítésér egyaránt vonatkozik. Alapesetben az Nmap a hálózat teljesítménye
alapján kiszámítja az ideális - de folyton változó - párhuzamosság mértékét. Ha
az átvitel során csomagvesztés alakul ki, az Nmap lassít és kevesebb próbát küld
ki. Az ideális próbaszám a hálózat minőségének javulása alapján lassan emelkedik.
Ezekkel a paraméterekkel egy minimum és egy maximum határt szabhat ezeknek az
értékeknek. Ha a hálózat megbízhatatlannak bizonyul, a párhuzamosság értéke akár
1-re is csökkenhet, míg tökéletes feltételek esetén a párszázas értéket is elérheti. A legáltalánosabb felhasználás, mikor a --min-parallelism
értékét egynél magasabbra állítják, hogy felgyorsítsák a gyengébb teljesítményű
állomások vagy hálózatok letapogatását. Ezzel a paraméterrel eléggé kockázatos
játszani, mert egy túl magas érték ronthatja a pontosságot. Ennek a paraméternek
az állításával korlátozzuk az Nmap azon képességét, hogy a hálózat paraméterei
alapján dinamikusan szabályozza a párhuzamos működést. A 10-es érték elég jó lehet,
de érdemesebb ezt a paramétert csak a legvégső esetben beállítani. A --max-parallelism paraméter szintén beállítható 1-re,
ezzel megakadályozható, hogy az Nmap egyszerre egynél több próbát küldjön a célpont
felé. Ez jól használható a --scan-delay paraméterrel együtt
(lásd később), bár ez utóbbi önmagában is jól használható. -
--min-rtt-timeout <idő>,
--max-rtt-timeout <idő>,
--initial-rtt-timeout
<idő> (Próbák érvényességi ideje)
Az Nmap kezel egy futó időzítőt annak meghatározására, hogy mennyi ideig
várjon egy próba esetén a válaszra, mielőtt feladná vagy újra megpróbálná. Ennek
a kiszámítása azok alapján történik, hogy az előző próbákra mennyi idő alatt érkezett
válasz. Ha a hálózati késleltetés jelentős és folyton változik, ez az érték akár
néhány másodpercre is nőhet. Az érték indulhat egy magasabb szintről is és egy
nem válaszoló állomás esetén ezen a szinten is marad.
Az alapértelmezettnél alacsonyabb --max-rtt-timeout és
--initial-rtt-timeout érték jelentősen lerövidíti a letapogatás
idejét. Ez különösen igaz a visszhang nélküli (-PN) letapogatásoknál
és az erős tűzfallal védett hálózatoknál. Azonban nem szabad túl agresszíven gondolkodni.
Túl alacsony értéknél a letapogatási idő meg is nőhet, mivel a próbák ideje lejár
és ismétlésre kerülnek, mialatt az előző próbákra adott válaszok még úton vannak
visszafelé. Ha az összes állomás egy helyi hálózaton található, 100 milliszekundum
--max-rtt-timeout érték eléggé agresszív. Ha menet közben útválasztó
is található, érdemesebb először az ICMP ping eszközzel, vagy más csomagösszeállító
programmal (például hping2) letesztelni a hálózat minőségét. Válassza ki 10
csomagból a leghosszabb válaszidejűt. Az --initial-rtt-timeout
értéke lehet ennek a duplája, a --max-rtt-timeout pedig a három-
vagy négyszerese. A maximum RTT értékét általában nem érdemes 100 milliszekundumnál
kisebbre és 1 másodpercnél nagyobbra választani. A --min-rtt-timeout egy ritkán használt paraméter, de hasznos
lehet, ha a hálózat annyira megbízhatatlan, hogy az Nmap alapértékei is túl
agresszívnek bizonyulnak. -
--max-retries <próbák> (Hányszor küldje újra
egy kapura a letapogatási próbát)
Ha az Nmap nem kap választ aegy letapogatási próbára, ez jelentheti azt,
hogy a kaput tűzfallal szűrik, vagy a válasz elveszett a hálózatban. De jelentheti
azt is, hogy a kapu forgalma limitált és átmenetileg nem tud válaszolni. Így az Nmap
ismét elküldi a próbát. Ha az Nmap gyenge hálózati teljesítményt érzékel, ezt
többször is megismételheti mielőtt feladná a próbálkozást. Bár ez javítja a pontosságot,
de egyben elnyújtja a letapogatás idejét is. Ha a teljesítmény fontos szempont,
a letapogatás felgyorsítható az újrapróbálkozások számának korlátozásával. Megadhat
akár --max-retries 0 értéket is, hogy megakadályozza az újrapróbálkozást,
azonban ez ritkán ajánlott. Az alapérték (ha nem használ -T sablont) 10 ismétlés. Ha
a hálózat megbízható és a célállomás forgalmát nem szabályozták, az Nmap általában csak
egyszer ismétli meg a próbát. Így a legtöbb célpont letapogatására nincs hatással,
ha a --max-retries értékét például 3-ra csökkenti. Ilyen alacsony
értékek csak a lassú (korlátozott) célállomások letapogatását gyorsítják fel.
Mivel adatokat veszíthet azzal, ha az Nmap korábban feladja egy kapu letapogatását,
ezért hasznosabb a --host-timeout paraméter időzítésének lejártát
megvárni és elveszteni a célponttal kapcsolatos valamennyi adatot, mint hiányos
adatokkal dolgozni. -
--host-timeout <idő> (Lassú célpontoknál
ennyi idő után feladja a próbálkozást)
Néhány állomás letapogatása hosszú idő vesz igénybe.
Ezt okozhatja gyenge vagy megbízhatatlan hálózati eszköz vagy program, a forgalom
szabályozása, vagy egy szigorú szabályokkal rendelkező tűzfal. A letapogatott állomások
leglassabb néhány százaléka emésztheti fel a letapogatási idő nagyrészét. Néha
jobb csökkenteni az időveszteséget és átugrani az ilyen célpontokat már az elején.
Adja meg a --host-timeout paraméterben azt a maximális időt,
amennyit hajlandó egy-egy állomás válaszára várni. Hasznos lehet a 30m
beállítás, így az Nmap nem tölt fél óránál többet egy állomás vizsgálatával. Mivel
ezalatt az Nmap más állomásokat is vizsgálni tud, ezért ez a fél óra nem tekinthető
teljes veszteségnek. Ha egy állomásnak lejárt az időzítése, az Nmap kihagyja a
listából. Nen készül kapulista, nincs operációs rendszer felderítés és változat
érzékelés sem. -
--scan-delay <idő>;
--max-scan-delay
<idő> (A próbák közti késleltetés)
Ezzel a paraméterrel utasíthatja az Nmap programot, hogy a célpont felé
küldendő próbák között a megadott időtartamot várjon. Ez különösen hasznos olyan
célpontok esetében, amelyeknek forgalma szabályozott. A Solaris állomások (sok
mással egyetemben) például az UDP letapogatási próbákra másodpercenként csak egy
ICMP választ küldenek. Minden további elküldött próba csak veszteség. A --scan-delay
értékének 1s-os beállításával az Nmap lelassítható
erre a sebességre. Az Nmap megpróbálja érzékelni a forgalomszabályzást és pontosan
beállítani a próbák közti késleltetést, azonban nem okoz gondot az érték kézzel
történő megadása sem. Amikor az Nmap növeli a próbák közti késleltetést, hogy megbirkózzon a
forgalomszabályzással, a letapogatás drámaian lelassul. A --max-scan-delay
paraméterrel megadhatja a két próba közti legnagyobb megengedett késleltetést.
Ha ezt az értéket túl alacsonyra választja, az feleslegesen újraküldött csomagokat
generál, ami egy szigorú forgalomkorlátozással működő állomásnál kihagyott kapukhoz
vezethet. A --scan-delay paraméter másik felhasználása a küszöbérték
figyelés alapján működő behatolás érzékelő és megelőző rendszerek (IDS/IPS) megtévesztése. --defeat-rst-ratelimit
Sok állomás hosszú késleltetésű forgalomszabályzást használ a kiküldhető
ICMP hibaüzenetek (például kapu nem elérhető) mennyiségének korlátozására. Néhány
rendszer ugyanilyen korlátozásokat használ az RST (reset) csomagok esetébenis. Ez
drámaian lelassítja az Nmap működését, mivel megpróbál alkalmazkodni ehhez a
korlátozáshoz. A --defeat-rst-ratelimit paraméterrel utasíthatja
az Nmap programot, hogy hagyja figyelmen kívül az ilyen korlátozásokat (például
a SYN letapogatásnál, mely a nem válaszoló kapukat nem nyitott
állapotúként kezeli). Ennek a paraméternek a használata csökkenti a pontosságot, hiszen néhány kapu
elérhetetlennek bizonyul, mivel az Nmap nem vár eléggé sokáig a korlátozott RST
válaszra. Egy SYN letapogatásnál a válasz nélküli kapuk jelölése szűrt
lesz ahelyett, hogy az RST csomag megvárásával zárt
jelölést kapna. Ez a paraméter hasznos lehet akkor, ha csak a nyitott kapuk érdekesek
és nem kell különbséget tenni a zárt és a
szűrt kapuk között. -
-T
<paranoid|sneaky|polite|normal|aggressive|insane>
(Időzítési sablon)
Bár az előzőekben tárgyalt időzítési paraméterek eléggé hatékonyak és
eredményesek, de néhány felhasználó túl bonyolultnak találhatja őket. Ráadásul
a megfelelő értékek kiválasztása gyakran hosszabb idő igényel, mint az optimalizálni
kívánt letapogatási művelet maga. Az Nmap felkínál egy egyszerűbb megközelítést is
hat időzítési sablon segítségével. Ezeket megadhatja a -T paraméterrel
és a számukkal (0–5) vagy a nevükkel. A sablonok nevei: paranoid (0),
trükkös [sneaky]) (1), udvarias [polite]
(2), normál [normal] (3), agresszív [aggressive]
(4) és rült [insane] (5). Az
első kettő a behatolásérzékelők megtévesztésére szolgál. Az udvarias mód lassú
letapogatást végez kevesebb sávszélességet, valamint a célállomáson kevesebb
erőforrást használva. A normál mód az alapértelmezett, így a -T3
paraméter megadása semmilyen változást nem idéz elő. Az agresszív mód felgyorsítja
a letapogatást azt feltételezve, hogy gyors és megbízható hálózatot használ.
Végül az őrült mód azt feltételezi, hogy egy különösen gyors hálózatot használ és
a sebesség érdekében hajlandó feláldozni valamennyit a pontosságból. Ezekkel a sablonokkal megadható, hogy a letapogatás mennyire legyen agresszív,
de meghagyja a lehetőséget az Nmap programnak, hogy az időzítéseket maga álltsa be.
A sablonok ezen kívül elvégeznek néhány olyan sebesség beállítást, melyek önálló
paraméterként jelenleg nem adhatók meg. Például a -T4 paraméter
megakadályozza, hogy a dinamikusan változó letapogatásikésleltetés a TCP kapukon
meghaladja a 10 milliszekundumot, míg a -T5 paraméter ugyanezt
az értéket 5 milliszekundumra korlátozza. A sablonok mellett továbbra is használhatóak
az egyedi időzítési paraméterek és ezek minden esetben felülbírálják a sablonokban
beállított alapértékeket. Modern és megbízható hálózatok letapogatása esetén ajánlott
a -T4 paraméter használata. Tartsa meg ezt a paramétert még akkor
is, ha egyedi időzítési paramétereket használ, így kihasználhatja a sablonban lévő
kisebb extra optimalizációt is. Ha tisztességes szélessávú vagy ethernet kapcsolatot használ, javasolt a
-T4 paraméter állandó használata. Néhányan szeretik használni a
-T5 paramétert, ám ez sok esetben túl agresszív lehet. Vannak akik
a -T2 paramétert szeretik használni, mert azt gondolják, hogy így
kisebb valószínűséggel döntik romba a célpontot, vagy mert magukat általában udvarias
embernek gondolják. Ők azonban gyakran nem veszik észre, hogy a -Tpolite
valójában milyen lassú. Ez a letapogatás tízszer hosszabb is lehet, mint egy
alapértelemeztt. Az alapértelmezett időzítésnél (-T3) ritkán
fordulnak elő összeomlások vagy sávszélesség problémák, ezért vatoss letapogatásnál
célszerű ezt használni. Ezeknek a problémáknak a csökkentésére sokkal alkalmasabb
a változat érzékelés elhagyása, mint az időzítési paraméterek állítgatása. Bár a -T0 és -T1 paraméterek hasznosak
a behatolásérzékelők megtévesztésére, de sok célgép vagy kapu esetén a letapogatási
idő különösen elnyújtják. Ilyen hosszú letapogatások esetén hasznosabb az időzítési
paraméterek kézzel történő beállítása, mint a -T0 és -T1
paraméterekhez tartozó konzerv értékek használata. A T0 fő működési elve a letapogatások sorbaállítása, így
egyszerre csak egy kaput tapogat le és a minden próba után vár 5 percet. A
T1 és T2 beállításai hasonlóak, de a próbák
között csak 15 másodpercet, illetve 0.4 másodpercet várnak. A T3
az Nmap alapértelmezett beállítása, mely már használja a párhuzamos működést is.
A T4 paraméter megfelel a --max-rtt-timeout 1250
--initial-rtt-timeout 500 --max-retries 6 beállításoknak és a TCP letapogatási
késleltetést 0.01 másodpercre állítja. A T5 megfelel a
--max-rtt-timeout 300 --min-rtt-timeout 50
--initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m beállításoknak
és a TCP letapogatási késleltetést 5 milliszekundumra állítja.
|
|