Optiuni de timp si performanta

Una dintre prioritatile principale in dezvoltarea Nmapului a fost performanta. O scanare implicita ( nmap <nume_host>) de pe un calculator din reteaua locala ia mai putin de o cincime de secunda. Cu greu ai timp sa clipesti, dar timpul creste o data cu numarul hosturilor. Mai mult, anumite optiuni cum ar fi scanarea UDP si detectia versiunii pot mari substantial timpul de scanare. Acelasi lucru il pot face si anumite configuratii firewall, in special cele care limiteaza rata de raspuns. Cu toate ca Nmap utilizeaza paralelismul si algoritmi avansati de accelerare a scanarilor, controlul final asupra a cum ruleaza Nmap revine utilizatorului. Expertii compun cu atentie comenzile Nmap pentru a obtine numai informatia de care au nevoie incadrandu-se si in perioada de timp.

Tehnicile pentru imbunatatirea vitezei de scanare includ omiterea testelor ne-critice si upgradeul la ultima versiune de Nmap (imbunatatiri de performanta se realizeaza frecvent). Optimizarea parametrilor de timp poate aduce de asemenea un spor substantial. Aceste optuni sunt prezentate in cele ce urmeaza.

--min-hostgroup <dimensiune>; --max-hostgroup<dimensiune>(Ajusteaza dimensiunea grupurilor pentru scanari paralele)

Nmap are capacitatea de a scana porturi sau versiuni pe mai multe hosturi in paralel. Nmap realizeaza acest lucru prin divizarea spatiului de adrese IP tinta in grupuri si scanand fiecare grup pe rand. In general, grupurile mari sunt mult mai eficiente. Aspectul negativ este ca rezultatul scanarii pentru fiecare host nu poate fi furnizat pana ce nu e terminata scanarea pentru intregul grup. Daca Nmap porneste scanarea unui grup de 50 de hosturi, utilizatorul nu va primi nici un raport (cu exceptia updateurilor oferite de modul vizualizare detaliata) pana ce primele nu s-a terminat scanarea pentru aceste hosturi.

Implicit, Nmap adopta o abordare de compromis in acest conflict. Porneste cu un grup mic de cinci pentru a afisa rapid primele rezultate si apoi creste dimensiunea grupului pana la 1024. Numarul exact depinde de optiunea data. Din motive de eficienta, Nmap utilizeaza grupuri mai mari pentru scanarile UDP si pentru cateva din porturile TCP.

Cand o dimensiune maxima este specificata cu --max-hostgroup, Nmap nu va depasi niciodata aceasta valoare. Specificati o dimensiune minima cu --min-hostgroupsi Nmap va incerca sa mentina dimensiunile grupurilor peste acel nivel. Nmap se poate vedea nevoit sa foloseasca grupuri mai mici daca nu mai sunt suficiente tinte ramase pentru a completa nivelul minim. Amandoua pot fi folosite pentru a mentine dimensiunea grupului intre anumite limite, desi acest lucru este in putine cazuri unul de dorit.

Principala utilizare a acestei optiuni este specificarea dimensiunii minime a unui grup astfel incat scanarea sa ruleze mai rapid. O alegere uzuala este 256 pentru scanarea unei retele in bucati egale cu o clasa C. Pentru o scanare cu multe porturi, depasirea acestui numar este improbabil sa ajute la ceva. Pentru o scanare cu doar cateva porturi, grupurile de 2048 sau mai multe hosturi pot fi folositoare.

--min-parallelism <milisecunde>; --max-parallelism<milisecunde>(Seteaza paralelizarea probelor)

Aceste optiuni controleaza numarul de probe in asteptare pentru un host. Sunt folosite la scanarea de porturi si la descoperirea hosturilor. Implicit, Nmap calculeaza un numar ideal pentru paralelism, mereu variabil, in baza performantelor retelei. Daca unele pachete sunt ignorate, Nmap incetineste ritmul si permite un numar mai mic de probe in asteptare. Numarul ideal de probe creste incet pe masura ce reteaua este mai rapida. Aceste optiuni stabilesc limitele minima si maxima ale acestei variabile. Implicit, paralelismul ideal poate scadea la 1 daca reteaua raspunde greu si se ridica pana la cateva sute in conditii perfecte.

Cea mai comuna utilizare o reprezinta setarea --min-parallelismla o valoare mai mare de unu pentru a mari viteza de scanare pentru hosturi si retele cu performante slabe. Aceasta este o optiune riscanta, deoarece setarea ei la o valoare prea mare poate influenta calitatea rezultatului. Setarea acesteia reduce de asemenea capacitatea Nmap de a controla paralelismul in mod dinamic pe baza conditiilor intalnite in retea. O valoare de zece poate fi una rezonabila, cu toate ca eu ajustez aceasta valoare doar ca o ultima optiune.

Optiunea --max-parallelismeste setata cateodata pentru a preveni Nmap sa trimita mai mult de o proba o data catre un host. Poate fi folositoare in combinatie cu --scan-delay(ce va fi discutata mai tarziu), cu toate ca cea de-a doua face acest lucru destul de bine si singura.

--min-rtt-timeout <milisecunde>, --max-rtt-timeout <milisecunde>, --initial-rtt-timeout<milisecunde>(Seteaza timpul de viata al probelor)

Nmap mentine un timp de viata pentru determinarea timpului maxim asteptat pentru ca o proba sa genereze un raspuns, inainte sa se renunte la ea sau sa fie retransmisa. Este calculata pe baza timpilor de raspuns a probelor anterioare. Daca latenta retelei are o valoare mare si variabila, atunci timpul de viata poate creste pana la cateva secunde. Porneste de la o valoare mare si poate ramane asa un timp pana cand Nmap scaneaza hosturi care nu raspund.

Aceasta optiune preia o valoare in milisecunde. Specificand o valoare mica pentru --max-rtt-timeoutsi --initial-rtt-timeout, in scanarile default se pot obtine reduceri de timp semnificative. Acest lucru este in particular adevarat pentru hosturile care nu raspund la ping ( -P0) si a celor impotriva retelelor masiv filtrate. nu deveniti insa prea agresiv. Scanarea poate sfarsi intr-un timp mare daca valorile sunt prea mici si probele expira repede, fiind necesara retransmiterea lor in timp ce probabil raspunsul este pe drum.

Daca hosturile fac parte din reteaua interna, o valoare de 100 milisecunde este una suficient de agresiva pentru --max-rtt-timeout. Daca routarea intra in joc, executati un ping la un host din respectiva retea folosind utilitarul PING din sistemul de operare, sau cu un utilitar de construit pachete cum ar fi hping2 ce are mai multe sanse de a trece prin firewall. Analizati timpul maxim dintr-un grup de zece pachete. Il puteti dubla pentru --initial-rtt-timeoutsi tripla pentru --max-rtt-timeout. In general, nu setati timpul maxim rtt sub 100 milisecunde., indiferent de ce raporteaza pingurile. Si nici nu depasiti 1000 milisecunde.

--min-rtt-timeouteste rar folosita si nu este folositoare intr-o retea pentru care valoarea implicita a Nmap este prea agresiva. Din moment ce Nmap reduce timpul de viata al pachetelor pana la minim pentru o retea eficienta, nevoia acestei optiuni nu este uzuala si ar trebui raporta ca o problema in lista de discutii nmap-dev.

--host-timeout <milisecunde>(Se renunta la tintele lente in raspuns)

Unele hosturi iau un timp prea lungde scanare. Se poate datora unor performante proaste ale retelei hardware si software, limitarii a ratei de pachete sau firewallurilor restrictive. Cele mai lente cateva hosturi pot manca majoritata timpului de scanare. Cateodata este bine sa scapam de aceste pierderi si sa sarim aceste hosturi. Acest lucru poate fi realizat prin specificarea --host-timeoutcu un numar de milisecunde in care sunteti disponibili sa asteptati. De obicei specific 1800000 pentru a ma asigura ca Nmap nu va pierde mai mult de o jumatate de ora pentru un singur host. De notat ca Nmap poate scana si alte hosturi in acelasi timp, deci nu reprezinta o pierdere totala acest timp. Un host care depaseste aceasta perioada este sarit. Tabela de porturi, detectia sistemului de operare sau detectia versiunii nu sunt afisate pentru acel host.

--scan-delay <milisecunde>; --max-scan-delay<milisecunde>(Ajusteaza pauza dintre probe)

Aceasta optiune face ca Nmap sa astepte cel putin un numar dat de milisecunde intre probele trimise la un host. Este folositoare in particular in cazul in care exista o rata de limitare. Masinile Solaris (printre multe altele) vor raspunde scanarii UDP cu un singur mesaj ICMP pe secunda. Orice alta proba trimisa de Nmap in acest interval va fi irosita. O optiune --scan-delaycu valoarea 1000 va mentine Nmap la acea rata lenta. Nmap incearca detectarea ratei de limitare si ajusteaza scanarea in functie de aceasta, dar nu face rau sa specificati explicit daca stiti deja ce rata functioneaza cel mai bine.

Alta utilizare a --scan-delayeste ascunderea scanarii in fata IDS/IPSurilor bazate pe un anumit prag de raspuns.

-T<Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>(Seteaza optiunile de timp)

Desi optiunile detaliate de control al timpilor discutate mai sus sunt puternice si eficiente, unii oameni le gasesc confuze. Mai mult, alegerea valorilor corecte poate dura uneori mai mult decat scanarea in sine. Asadar Nmap ofera o abordare mai simpla, cu sase modele de timp. Le puteti specifica cu optiunea -Tsi numarul (0-5) sau numele. Numele modelelor sunt paranoid (paranoic - 0), sneaky (siret - 1), polite (politicos -2), aggresive (agresiv - 4) si insane (nebun - 5). Primele doua sunt folosite pentru ascunderea de IDS. Modul politicos incetineste ritmul scanarii pentru a utiliza mai putina latime de banda a masinii tinta. Modul normal este implicit asa ca -T3nu face nimic. Modul agresiv accelereaza scanarea presupunand ca va aflati intr-o retea rapida. In fine, modul nebun presupune ca va aflati intr-o retea extrem de rapida sau ca sunteti dispus sa sacrificati acuratetea rezultatelor in favoarea vitezei.

Aceste modele permit utilizatorului sa specifice cat de agresiva sa fie scanarea, lasand totusi Nmapul sa aleaga valorile exacte. Modelele realizeaza uneori mici reglaje pentru care inca nu exista optiuni de control. De exemplu, -T4interzice scanarii dinamice sa depaseasca 10 milisecunde pentru porturile TCP si -T5reduce aceasta valoare la 5 milisecunde. Modelele pot fi folosite in combinatie cu controalele fine de timp, atat timp cat modelul este specificat mai intai. Altfel valorile standard ale modelului pot suprascrie valorile specificate. Se recomanda folosirea -T4cand se scaneaza retele moderne rapide. Pastrati aceasta optiune la inceputul liniei de comanda chiar si cand adaugati optiuni de control fin pentru a beneficia de micile ajustari oferite.

Daca folositi o conexiune broadband sau ethernet, recomand folosirea intotdeauna a optiunii -T4. Unii oameni adora -T5cu toate ca este prea agresiva pentru gustul meu. Altii specifica -T2deoarece cred ca scanarea va bloca hosturile si se considere pe ei politicosi in general. De obicei nu realizeaza cat de inceata este optiunea -TPolite. Scanarile lor pot lua de zece ori mai mult timp decat unele implicite. Blocarile masinilor si probleme legate de banda sunt rare cu modelul implicit ( -T3) asa ca in mod normal este recomandat pentru scanere precaute. Omiterea detectiei versiunii este mult mai eficienta decat jocul cu optiunile de timp.

Desi -T0si -T1pot fi folosite pentru pacalirea IDSurilor, ele pot lua un timp extrem de mare pentru a scana mii de masini sau porturi. Pentru o astfel de scanare lunga, puteti prefera setarea exacta a optiunilor de timp decat sa va bazati pe cele inglobate in optiunile -T0si -T1.

Principalul efect al T0este serializarea scanarii astfel incat un singur port este scanat o data, si se asteapta cinci minute intre trimiterea probelor. T1si T2sunt similare dar asteapta doar 15 secunde, respectiv 0,4 secunde intre probe. T3este comportamentul implicit al Nmapului ce include si paralelizarea. T4realizeaza echivalentul --max-rtt-timeout 1250 --initial-rtt-timeout 500si seteaza intarzierea maxima pentru scanarea TCP la 10 milisecunde. T5realizeaza echivalentul la --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000si seteaza intarzierea maxima pentru scanarea TCP la 5 milisecunde.