Quin programa ha obert un port?
Escrit al 2004-12-18 00:00:00 per cpina
A vegades, estem treballant (ja sigui instal·lant un programa servidor, fent un programa nosaltres mateixos, etc.) i ens trobem que un port ja està ocupat.
És a dir, que "algú" en el nostre sistema ha fet un "bind" del port i el té ell.
A aquest petit article veurem quines maneres tenim de saber quin és el programa que ha obert un port. A vegades podem necessitar saber quin programa ens ha obert un port.
Per exemple, perquè tenim un error de "binded port" a alguna aplicació, o bé hem fet un nmap per saber quins ports tenim oberts i en tenim algun que no coneixem o no sabem quin programa l’ha obert.
Per fer moltes de les operacions comentades aquí és necessari ser usuari root o
bé només podrem veure els ports que hem obert nosaltres, com usuari, etc.
/etc/services
Un mètode per fer-ho podria ser buscant el número del port a /etc/services, i veure de quin protocol es tracta. Després podríem fer un ps auxw i intuïtivament veure quin programa pot ser.
netstat
Mitjançant netstat -pan tenim un llistat com el següent:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 2
172/inetd
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 9
252/psi
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2
462/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1
987/portmap
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 2
670/X
Les opcions són:
Quan la Local Address és 0.0.0.0:x és que està escoltant (esperant connexions).
El netstat també ens mostrarà connexions establertes.
lsof
lsof ens dona un llistat de fitxers oberts, incloent-hi també els ports.
lsof incorpora moltes més funcions a més de la de comprovar els ports oberts (podem veure fàcilment quins fitxers té oberts una aplicació, quins fitxers hi ha oberts al sistema, etc.)
Podem fer el llistat mitjançant:
lsof -ni|grep LISTEN
Les opcions són:
fuser
Útil per si volem investigar un port només. Per exemple:
pinux:~# fuser 25/tcp
25/tcp: 2449
pinux:~# ps auxw | grep -i 2449
root 2449 0.0 0.1 2924 1100 ? Ss Dec17 0:00 /usr/lib/postfix/
master
És el postfix que té aquest port obert.
Com a curiositat, i aprofitant el fuser, si tenim la tarja de so utilitzada per algú i no sabem qui podem fer:
pinux:~# fuser /dev/dsp
/dev/dsp: 17788
pinux:~#
És el PID 17788 que l’està utilitzant. Amb lsof també es pot fer, en canvi no és possible fer-ho amb netstat ja que s’utilitza per xarxa.
El mateix si fem:
pinux:~# umount /cdrom/
umount: /cdrom: device is busy
umount: /cdrom: device is busy
No el podem desmuntar, mirem qui l’està fent servir:
pinux:~# fuser /cdrom/
/cdrom/: 18355c
pinux:~#
És el procés 18355 que té com a current directory el /cdrom.
Tots aquests programes tenen moltes més opcions i molt interessants et recomanem llegir les seves pàgines man.
Categories: Articles
Comentaris
- Sense comentaris