Pentru a face o lista cu porturile care sunt deschise local si care asculta conexiuni putem folosi doua utilitare care se gasesc (sau ar trebui sa se gaseasca) pe orice sistem UNIX: netstat si nmap.
Primul utilitar, netstat, este folosit pentru a ne arata detalii despre conexiunile active. Vom folosi optiunea -a pentru a vedea toate conexiunile deschise, optiunea -n pentru a fi afisate in format numeric (pentru o afisare mai rapida) iar apoi rezultatul il vom trimite utilitarului grep care va cauta in liniile rezultate sirul LISTEN, care ne spune despre conexiunea afisata ca asteapta o cerere de comunicare. Comanda folosita este:
[root@server ~]# netstat -an | grep LISTEN
Rezultatul acesteia va arata cam asa:
[root@server ~]# netstat -an | grep LISTEN tcp4 0 0 *.80 *.* LISTEN tcp4 0 0 *.443 *.* LISTEN tcp4 0 0 *.2087 *.* LISTEN tcp4 0 0 *.2086 *.* LISTEN tcp4 0 0 *.2096 *.* LISTEN tcp4 0 0 *.2083 *.* LISTEN tcp4 0 0 *.2095 *.* LISTEN tcp4 0 0 *.2082 *.* LISTEN tcp4 0 0 *.2078 *.* LISTEN tcp4 0 0 *.2077 *.* LISTEN tcp4 0 0 *.110 *.* LISTEN tcp4 0 0 *.995 *.* LISTEN tcp4 0 0 *.143 *.* LISTEN tcp4 0 0 *.993 *.* LISTEN tcp4 0 0 *.21 *.* LISTEN tcp4 0 0 *.3306 *.* LISTEN tcp4 0 0 127.0.0.1.783 *.* LISTEN tcp4 0 0 *.26 *.* LISTEN tcp4 0 0 *.465 *.* LISTEN tcp4 0 0 *.25 *.* LISTEN tcp4 0 0 127.0.0.1.953 *.* LISTEN tcp4 0 0 192.168.0.1.53 *.* LISTEN tcp4 0 0 192.168.0.1.2255 *.* LISTEN [root@server ~]#
In prima coloana vedem protocolul, in cazul nostru tcp4 (adica tcp pe protocol IPv4). A doua si a treia coloana ne arata statisticile de trimitere/primire. A patra coloana ne arata ceea ce ne intereseaza si anume adresa IP pe care se asculta conexiunea si portul pe care se asculta. Daca in loc de adresa IP apare un asterisc (*) inseamna ca aplicatia care asculta conexiuni pe portul respectiv foloseste toate IP-urile disponibile.
A doua metoda folosita pentru detectarea porturilor deschise pe care se asculta conexiuni este nmap. Nmap, dupa cum ii spune si numele (Network Mapper), este un utilitar care face o mapare a porturilor deschise care asteapta conexiuni. Pentru ce ne intereseaza momentan, utilizarea nmap este simpla. Se porneste utilitarul dand ca parametru IP-ul sau numele host-ului care dorim sa il scanam – in cazul de fata localhost sau IP-ul serverului de securizat:
[root@server ~]# nmap localhost
Rezultatul acestei comenzi va fi asemanator cu acesta:
[root@server ~]# nmap localhost Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-04-29 23:17 EEST Interesting ports on localhost (127.0.0.1): Not shown: 1674 closed ports PORT STATE SERVICE 21/tcp open ftp 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 139/tcp open netbios-ssn 445/tcp open microsoft-ds Nmap finished: 1 IP address (1 host up) scanned in 0.115 seconds [root@server ~]#
Spre deosebire de netstat, nmap ne poate oferi mult mai multe detalii cum ar fi tipul serverului care asculta conexiuni pe un anumit port ceea ce il face un utilitar important din punct de vedere al securitatii. De exemplu, daca folosim nmap impreuna cu parametrul -A vom obtine urmatorul rezultat:
[root@server ~]# nmap -A localhost Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-04-29 23:20 EEST Interesting ports on localhost (127.0.0.1): Not shown: 1674 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp PureFTPd 25/tcp open smtp Exim smtpd 4.63 111/tcp open rpcbind 2 (rpc #100000) 113/tcp open ident OpenBSD identd 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: LINKSYS) 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: LINKSYS) No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi). TCP/IP fingerprint: SInfo(V=4.11%P=i686-pc-linux-gnu%D=4/29%Tm=4817831C%O=21%C=1) TSeq(Class=RI%gcd=1%SI=46ED43%IPID=Z) TSeq(Class=RI%gcd=1%SI=46E71D%IPID=Z) TSeq(Class=RI%gcd=1%SI=46F039%IPID=Z) T1(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T2(Resp=N) T3(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) Service Info: Host: Desktop; OS: OpenBSD Nmap finished: 1 IP address (1 host up) scanned in 20.947 seconds [root@server ~]#
Dupa cum se vede a gasit tipul serverelor care asculta conexiuni, in unele cazuri chiar si versiunea. Daca nu ar fi un sistem putin modificat ar gasi inclusiv tipul sistemului de operare si versiunea acestuia.
Daca nu va place linia de comanda, nmap vine si cu o interfata grafica, nmapfe (nmap FrontEnd).
Popularity: 15% [?]


