TUTORIAL DE netstat

Extraido y traducido del Security-Quickstart-HOWTO (Autor: Hal Burgiss)
Documento original: http://www.tldp.org/HOWTO/Security-Quickstart-HOWTO/index.html

1.- INTRODUCCIÓN
netstat es una herramienta muy útil para comprobar el estado actual de la red (qué
servicios están a la escucha de conexiones entrantes, sobre qué interfaces escuchan,
quién está conectado a nuestro equipo, a qué equipos estamos conectados nosotros,
etcétera).




Como ejemplo, comprobemos todos los servicios a la escucha y las conexiones activas
para TCP y UDP en nuestro equipo bigcat. En este ejemplo, bigcat es un equipo de
escritorio de usuario. bigcat tiene dos tarjetas Ethernet: una para la conexión externa al
ISP, y otra para una pequeña red local con la dirección 192.168.1.1.

$ netstat -tua

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 bigcat:8000 *:* LISTEN
tcp 0 0 *:time *:* LISTEN
tcp 0 0 *:x11 *:* LISTEN
tcp 0 0 *:http *:* LISTEN
tcp 0 0 bigcat:domain *:* LISTEN
tcp 0 0 bigcat:domain *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:631 *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 1 dsl-78-199-139.s:1174 64.152.100.93:nntp SYN_SENT
tcp 0 1 dsl-78-199-139.s:1175 64.152.100.93:nntp SYN_SENT
tcp 0 1 dsl-78-199-139.s:1173 64.152.100.93:nntp SYN_SENT
tcp 0 0 dsl-78-199-139.s:1172 207.153.203.114:http ESTABLISHED
tcp 1 0 dsl-78-199-139.s:1199 www.xodiax.com:http CLOSE_WAIT
tcp 0 0 dsl-78-199-139.sd:http 63.236.92.144:34197 TIME_WAIT
tcp 400 0 bigcat:1152 bigcat:8000 CLOSE_WAIT
tcp 6648 0 bigcat:1162 bigcat:8000 CLOSE_WAIT
tcp 553 0 bigcat:1164 bigcat:8000 CLOSE_WAIT
udp 0 0 *:32768 *:*
udp 0 0 bigcat:domain *:*
udp 0 0 bigcat:domain *:*
udp 0 0 *:631 *:*

Probablemente esta salida sea muy diferente de la que obtengas en tu sistema. Observa
la diferencia entre Local Address y Foreign Address, y cómo cada una incluye su
correspondiente número de puerto (o nombre de servicio, si está disponible) después de
los dos puntos “:”. La dirección local es nuestro extremo de la conexión.
 El primer grupo con la palabra LISTEN en la última columna son servicios que están
corriendo en este sistema. Son servicios que se están ejecutando en segundo plano en
 bigcat , y “escuchan” posibles conexiones entrantes. Así, estos servicios tienen un puerto
abierto, que es por donde “escuchan”. Estas conexiones pueden provenir del sistema
local (por ejemplo, el propio bigcat) o desde sistemas remotos. ¡Y ésta es una información
muy importante !

Las líneas de debajo son conexiones que han sido establecidas desde este sistema a otros
sistemas. Las conexiones pueden estar en varios estados, tal y como indica la palabra de
la última columna. Aquellas en las que esta columna está vacía son servicios que
responden a conexiones UDP. UDP es un protocolo diferente de TCP que se utiliza para
conexiones de tráfico de red con baja prioridad.
Ahora ejecutaremos el mismo comando pero con la opción -n para suprimir la conversión
de nombres y poder ver los números de puerto:

$ netstat -taun

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 1 169.254.179.139:1174 64.152.100.93:119 SYN_SENT
tcp 0 1 169.254.179.139:1175 64.152.100.93:119 SYN_SENT
tcp 0 1 169.254.179.139:1173 64.152.100.93:119 SYN_SENT
tcp 0 0 169.254.179.139:1172 207.153.203.114:80 ESTABLISHED
tcp 1 0 169.254.179.139:1199 216.26.129.136:80 CLOSE_WAIT
tcp 0 0 169.254.179.139:80 63.236.92.144:34197 TIME_WAIT
tcp 400 0 127.0.0.1:1152 127.0.0.1:8000 CLOSE_WAIT
tcp 6648 0 127.0.0.1:1162 127.0.0.1:8000 CLOSE_WAIT
tcp 553 0 127.0.0.1:1164 127.0.0.1:8000 CLOSE_WAIT
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 192.168.1.1:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*

Echemos un vistazo a las primeras líneas.

Primera línea:

tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN

 En la primera línea, la dirección local es 0.0.0.0 , lo que significa que todas las interfaces
están disponibles. El puerto local es el 515, o el puerto servidor de impresión estándar,
normalmente propiedad del demonio lpd. Podemos ver una lista de los nombres de
servicio más comunes y sus números de puerto asociados en el fichero /etc/services.
El hecho de que esté escuchando en todas las interfaces es significativo. En este caso
podríamos hablar de tres interfaces: lo (localhost), eth0 y eth1. Así pues, se podría
establecer una conexión con la impresora sobre cualquiera de estas interfaces. Si un
usuario puede levantar una conexión PPP en nuestro sistema, el demonio de impresión
estará escuchando también sobre esa interfaz (la ppp0). La dirección remota es también
 0.0.0.0 ,lo que significa “desde cualquier parte”.

Conviene además apuntar aquí que incluso si este servidor está diciéndole al kernel que
escuche en todas las interfaces, la salida de netstat no refleja que pudiera haber un
cortafuegos que filtrara las conexiones entrantes. Es algo que, por el momento, no
podemos asegurar. Obviamente, para ciertos servidores, ésta sería una muy deseable
opción. Nadie de fuera de nuestra red local tiene por qué conectarse a nuestro puerto
servidor de impresión, por ejemplo.

La segunda línea es un poco distinta:

 tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN

Obsérvese que esta vez la Local Address es la dirección del localhost 127.0.0.1. Esto es
muy significativo, ya que sólo las conexiones locales a esta máquina seran aceptadas. Así
que sólo bigcat puede conectarse al puerto TCP 8000 de bigcat. Las implicaciones de
seguridad son obvias. No todos los servidores tienen opciones de configuración para
permitir este tipo de restricción, pero es una característica muy útil para aquellos que lo
tienen. El puerto 8000 en este ejemplo es propiedad del proxy web Junkbuster.
Con las tres siguientes líneas, volvemos a escuchar sobre todas las interfaces
disponibles:

tcp 0 0 0.0.0.0:37 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

Mirando a /etc/services, podemos decir que el puerto 37 es un servidor de tiempo. El
puerto 6000 corresponde a X11 y el 80 es el estándar para los servidores HTTP como
Apache. No hay nada extraño aquí ya que estos son servicios normalmente disponibles
en Linux.

Los dos primeros nos son del tipo de servicios a los que te gustaría que alguien se
conectase. Por eso, deberían ponerse detras de un cortafuegos para que todas las
conexiones externas fueran rechazadas. De nuevo, mirando la salida no podemos decir si
existe algún cortafuegos, y mucho menos si ha sido correctamente implementado.
El servidor web en el puerto 80 no supone un gran riesgo de seguridad por sí mismo.
HTTP es un protocolo que suele estar abierto para todos los visitantes. Por ejemplo, si
queremos alojar nuestra propia página web, Apache puede hacerlo por nosotros.
Además, es posible filtrarlo por cortafuegos para que puedan usarlo solamente nuestros
clientes LAN como parte de una Intranet. También es obvio que si no tienes una buena
razón para ejecutar un servidor web, entonces lo mejor será que lo deshabilites por
completo.

Las dos líneas siguientes son interesantes:
tcp 0 0 192.168.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN

Nótese de nuevo que la Local Address no es la 0.0.0.0. ¡Eso está bien! El puerto esta vez
es el 53, o el puerto DNS utilizado por los demonios servidores de nombres como named.
Pero vemos que el demonio servidor de nombres está escuchando solamente por la
interfaz lo y por la interfaz que conecta a bigcat con la red local. Así pues, el kernel sólo
permite conexiones del localhost y de la red local. El puerto 53 no estará disponible para
las conexiones externas. Este es un buen ejemplo de cómo puede configurarse, en
ocasiones, la seguridad para aplicaciones individuales. En este caso, estamos
probablemente utilizando un servidor DNS de caché, ya que el servidor de nombres
verdadero, que es responsable de la gestión de las consultas DNS, debería tener abierto
el puerto 53 a todo el mundo. Entonces ya estaríamos hablando de un riesgo de
seguridad que requiere una gestión especial.
Las últimas tres entradas:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

Estas de nuevo escuchan en todas las interfaces disponibles.
El puerto 22 es de sshd, el demonio servidor de Secure Shell. ¡Eso es una buena señal!
Obsérvese que el servicio para el puerto 631 no tiene un nombre de servicio si miramos
la salida del primer ejemplo. Esto nos da una pista de que algo raro esta pasando aquí.
(Mirar la siguiente sección para resonder este enigma).

Y por último, el puerto 25, el puerto estándar para el demonio de correo SMTP. La
mayoría de instalaciones Linux probablemente tendrán un demonio SMTP corriendo, así
que no es algo tan raro. Pero, ¿es necesario?

El siguiente grupo son las conexiones establecidas. Para nuestros propósitos, el
estado de la conexión indicado en la última columna no es tan importante. Eso ya está
bien explicado en la página del manual.

tcp 0 1 169.254.179.139:1174 64.152.100.93:119 SYN_SENT
tcp 0 1 169.254.179.139:1175 64.152.100.93:119 SYN_SENT
tcp 0 1 169.254.179.139:1173 64.152.100.93:119 SYN_SENT
tcp 0 0 169.254.179.139:1172 207.153.203.114:80 ESTABLISHED
tcp 1 0 169.254.179.139:1199 216.26.129.136:80 CLOSE_WAIT
tcp 0 0 169.254.179.139:80 63.236.92.144:34197 TIME_WAIT
tcp 400 0 127.0.0.1:1152 127.0.0.1:8000 CLOSE_WAIT
tcp 6648 0 127.0.0.1:1162 127.0.0.1:8000 CLOSE_WAIT
tcp 553 0 127.0.0.1:1164 127.0.0.1:8000 CLOSE_WAIT

Aqué tenemos nueve conexiones en total.
Las tres primeras corresponden a nuestra interfaz externa conectándose a un puerto
remoto en su puerto 119, el puerto estándar de las news (NNTP). Aquí vemos tres
conexiones con el mismo servidor de news. Aparentemente la aplicación es multi-hebra,
ya que está intentando abrir múltiples conexiones con el servidor.
Las dos entradas siguientes corresponden a conexiones a un servidor web remoto, como
indica el puerto 80 de la quinta columna. Probablementeuna entrada muy común para la
mayoría de nosotros.

Pero la línea siguiente está invertida y tiene el puerto 80 en la cuarta columna, lo que
quiere decir que alguien se ha conectado al servidor web de bigcat via su interfaz externa,
la cara que da a Internet.

Las tres últimas entradas son todas conexiones del localhost al localhost. O sea, que
aquí nos estamos conectando a nosotros mismos. Si recordamos que el puerto 8000 es el
proxy web de bigcat, podemos decir que tenemos un navegador conectado localmente al
proxy. El proxy abrirá después una conexión externa consigo mismo, que es
probablemente lo que esta sucediendo con las líneas cuatro y cinco.

Puesto que indicamos las opciones -t y -u en el comando netstat, hemos obtenido las
conexiones TCP y UDP.

Las últimas líneas son las correspondientes a UDP:

udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 192.168.1.1:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*

Las tres últimas entradas tienen puertos que nos resultan familiares por lo dicho
anteriormente. Son servidores que están escuchando para conexiones TCP y UDP. En
este caso, los mismos servidores utilizando dos protocolos diferentes.
El primero, el puerto 32678 es nuevo, y no tiene un nombre de servicio asociado en
/etc/services. Así pues, a primera vista podría ser sospechoso y nos podría picar la
curiosidad. Véase la explicación de la sección siguiente.
¿Podemos extraer alguna conclusión de esta situación hipotética? Para la mayoría, estos
servicios y conexiones parecen bastantes normales en Linux. No parece haber un
número excesivo de servicios corriendo, pero eso no significa mucho porque no sabemos
si todos esos servicios son realmente necesarios o no. Sabemos que netstat no puede
decirnos si alguno de esos servicios está eficazmente filtrado por un cortafuegos, así que
no hay modo de conocer hasta donde llega nuestra seguridad. Además no sabemos
realmente si todos los servicios a la escucha son verdaderamente necesarios. Esto es algo
que varía bastante de una instalación a otra. Por ejemplo, ¿tiene bigcat una impresora
conectada? Aparentemente sí, o sino estaría corriendo un riesgo completamente
innecesario.

2.- PROPIETARIOS DE PUERTOS Y PROCESOS
En la sección anterior, hemos aprendido mucho de lo que está pasando en las tareas de
red de bigcat. Pero supongamos que vemos algo que no somos capaces de reconocer y
queremos saber quién arrancó ese servicio en particular. O que queremos detener un
servicio en particular y, solo mirando la salida del netstat, no tenemos claro cuál es.
La opción -p nos da el PID del proceso y el nombre del programa que arrancó el proceso
en la última columna. Echemos un vistazo a los servicios TCP de nuevo (para ganar
espacio, se han suprimido las tres primeras columnas). Tendremos que ejecutar el
comando como root para obtener toda la información disponible:

# netstat -tap

Active Internet connections (servers and established)
 Local Address Foreign Address State PID/Program name
 *:printer *:* LISTEN 988/inetd
 bigcat:8000 *:* LISTEN 1064/junkbuster
 *:time *:* LISTEN 988/inetd
 *:x11 *:* LISTEN 1462/X
 *:http *:* LISTEN 1078/httpd
 bigcat:domain *:* LISTEN 956/named
 bigcat:domain *:* LISTEN 956/named
 *:ssh *:* LISTEN 972/sshd
 *:631 *:* LISTEN 1315/cupsd
 *:smtp *:* LISTEN 1051/master

Sobre esto, ya conocemos algo. Pero vemos ahora que el demonio de la impresora, en el
puerto 515, está siendo iniciado via inetd con un PID de 988. inetd es una situación
especial. A inetd se le conoce como el super servidor, debido a que es su función
principal es crear sub-servicios. Si miramos la primera línea, inetd está escuchando en el
puerto 515 para servicios de impresora. Si una conexión viene para este puerto, inetd la
intercepta y luego genera el demonio apropiado, como el demonio de impresora en este
caso. La configuración que indica a inetd cómo manejar todo esto suele estar en
/etc/inetd.conf. Así es que si queremos detener un servicio controlado por inetd,
entonces deberemos escarbar en la configuración de inetd (o quizá la de xinetd). Además,
el servicio time también ha sido iniciado via inetd. Eso nos dice que estos dos servicios
pueden ser protegidos también por tcpwrappers, lo que supone uno de los beneficios de
utilizar inetd para controlar ciertos servicios de sistema.
tcpwrapper: una aplicación para seguridad en Internet que permite a los
usuarios desactivar ciertos programas que exponen a los sistemas ante tráfico
poco seguro de Internet, además de realizar pruebas para verificar los cambios.

El tcpwrapper (tcpd) viene ya incluido en algunas distribuciones de Linux.

No estábamos seguros del servicio que utilizaba el puerto 631 porque no teníamos un
nombre de servicio estándar, lo que quiere decir que posiblemente hay algo que no es
normal o que está fuera de lugar. Ahora vemos que pertenece a cupsd, que es uno de los
diferentes demonios de impresión disponibles en Linux. Este parece ser la interfaz web
para controlar el servicio de impresora. El demonio cupsd es, de hecho, un poco
diferente de otros servicios de impresión.

La última entrada pertenece al servidor de correo SMTP de bigcat. En muchas
distribuciones, éste suele ser sendmail. Pero no es el caso. El comando es master, que a
lo mejor no nos suena de nada. Como tenemos el nombre del programa, podríamos
buscar en el sistema de ficheros utilizando herramientas como los comandos locate o
find. Una vez encontrado, podríamos averiguar a qué paquete pertenece. Pero con el PID
disponible, podemos observar la salida de ps y ver si nos puede servir de ayuda:
 $ /bin/ps ax |grep 1051 |grep -v grep
 1051 ? S 0:24 /usr/libexec/postfix/master

Aquí hemos tomado un atajo combinando ps con grep. Parece que el fichero pertenece a
postfix, que es, efectivamente, un paquete servidor de correo similar a sendmail.


Ejecutar ps con la opción --forest (o la opción corta -f ) nos puede ayudar a determinar
qué procesos son padres o hijos de otro proceso. He aquí un ejemplo:

 $ /bin/ps -axf
 956 ? S 0:00 named -u named
 957 ? S 0:00 \_ named -u named
 958 ? S 0:46 \_ named -u named
 959 ? S 0:47 \_ named -u named
 960 ? S 0:00 \_ named -u named
 961 ? S 0:11 \_ named -u named
 1051 ? S 0:30 /usr/libexec/postfix/master
 1703 ? S 0:00 \_ tlsmgr -l -t fifo -u -c
 1704 ? S 0:00 \_ qmgr -l -t fifo -u -c
 1955 ? S 0:00 \_ pickup -l -t fifo -c
 1863 ? S 0:00 \_ trivial-rewrite -n rewrite -t unix -u -c
 2043 ? S 0:00 \_ cleanup -t unix -u -c
 2049 ? S 0:00 \_ local -t unix
 2062 ? S 0:00 \_ smtpd -n smtp -t inet -u -c

Aquí tenemos un par de cosas que reseñar. Ahora tenemos dos demonios conocidos:
named y postfix (smtpd). Ambos son sub-procesos generadores. En el caso de named,
lo que vemos son hebras, varios sub-procesos que siempre generan. Postfix también
está generando sub-procesos, bero no como “hebras”. Cada subproceso posee su propia
tarea específica. Vale la pena hacer notar que los procesos hijos dependen de sus
procesos padre. Entonces, matando el PID padre, mataremos todos los procesos hijos.
Si todo esto no ha arrojado mucha luz, podemos intentarlo con el comando locate:

 $ locate /master
 /etc/postfix/master.cf
 /var/spool/postfix/pid/master.pid
 /usr/libexec/postfix/master
 /usr/share/vim/syntax/master.vim
 /usr/share/vim/vim60z/syntax/master.vim
 /usr/share/doc/postfix-20010202/html/master.8.html
 /usr/share/doc/postfix-20010202/master.cf
 /usr/share/man/man8/master.8.gz
find es, posiblemente, la utilidad de búsqueda de ficheros más flexible, pero no utiliza
una base de datos como lo hace locate, así que es mucho más lento:

 $ find / -name master
 /usr/libexec/postfix/master

Si lsof está instalado, es otro comando útil para encontrar quién es propietario de los
procesos o los puertos:

 # lsof -i :631
 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
 cupsd 1315 root 0u IPv4 3734 TCP *:631 (LISTEN)

Esto nos dice otra vez que el demonio de impresión cupsd es propietario del puerto 631,
sólo que hemos utilizado otro modo de averiguarlo. Y todavía existe otra forma de hacerlo
con fuser, que debería estar instalado:

 # fuser -v -n tcp 631
 USER PID ACCESS COMMAND
 631/tcp root 1315 f.... cupsd

Ver las páginas de manual para la sintaxis de los comandos fuser y lsof.
Otro sitio donde para buscar dónde ha sido iniciado un servicio es en el directorio init.d,
en el cual residen los scripts init (en sistemas Sys Vinit). Algo como ls -l /etc/init.d nos
podría mostrar una lista de ellos. Generalmente, el propio nombre del script nos da una
pista de qué servicio(s) inicia, aunque no tiene por qué coincidir exactamente con el
“Nombre de Programa” proporcionado por netstat. O podemos utilizar grep para buscar
dentro de los ficheros mediante un patrón de búsqueda. ¿Necesitamos encontrar dónde
se está iniciando rpc.statd y no vemos un script con ese nombre?

 # grep rpc.statd /etc/init.d/*
 /etc/init.d/nfslock: [ -x /sbin/rpc.statd ] || exit 0
 /etc/init.d/nfslock: daemon rpc.statd
 /etc/init.d/nfslock: killproc rpc.statd
 /etc/init.d/nfslock: status rpc.statd
 /etc/init.d/nfslock: /sbin/pidof rpc.statd >/dev/null 2>&1; STATD="$?"

En realidad, no necesitábamos toda esa información, pero al menos ahora vemos
exactamente qué script lo está iniciando. Recordemos también que no todos los servicios
se inician de esta manera. Algunos pueden ser iniciados mediante inetd, o xinetd.
El sistema de ficheros /proc guarda, además, todo lo que queremos saber sobre los
procesos que se están ejecutando. Podemos preguntárselo para obtener más información
de cada proceso. ¿Necesitas saber la ruta absoluta del comando que inició un proceso?

 # ls -l /proc/1315/exe

 lrwxrwxrwx 1 root root 0 July 4 19:41 /proc/1315/exe -> /usr/sbin/cupsd
Para finalizar, tenermos una o dos cabos sueltos en los servicios UDP a la escucha.
Recordemos que tenemos un extraño número de puerto, el 32768, que además no tiene
un nombre de servicio asociado:

 # netstat -aup

 Active Internet connections (servers and established)
 Local Address Foreign Address State PID/Program name
 *:32768 *:* 956/named

 bigcat:domain *:* 956/named
 bigcat:domain *:* 956/named

 *:631 *:* 1315/cupsd

Ahora, incluyendo el “PID/Nombre de Programa” con la opción -p, vemos que éste
pertenece a named, el demonio servidor de nombres. Versiones recientes de BIND
utilizan un puerto sin privilegios para cierto tipo de tráfico. En este caso, es la versión
BIND 9.x. O sea, que no tenemos por qué preocuparnos. Aquí, el puerto sin privilegios es
el que named utiliza para hablar con otros servidores de nombres para búsquedas de
nombres y direcciones, y no debería estar filtrado por cortafuegos.
Por tanto, no encontramos grandes sorpresas en esta situación hipotética.
Si todo esto falla, y no puedes encontrar el propietario de un proceso para un puerto
abierto, piensa que puede ser un servicio RPC (Remote Procedure Call) de algún tipo.
Estos usan puertos asignados aleatoriamente sin ningún significado lógico ni coherencia,
y son normalmente controlados por el demonio portmap. En algunos casos, pueden no
revelar el proceso propietario mediante netstat o lsof. Podemos intentar detener
portmap, y luego mirar si el misterioso servicio ha desaparecido. O podemos utilizar
rpcinfo -p localhost para ver cuáles servicios RPC están corriendo (portmap debe estar
ejecutándose para que esto funcione).

NOTA
Si sospechas que alguien entró en tu sistema, no confíes en la salida de netstat ni en la
de ps. Es muy posible que éstos, y otros componentes del sistema, hayan sido “forzados”
de modo que su salida no es fiable.




Comentarios