Publicado el 15 de Abril ,2008 por ekhtor
Los servicios RPC (Remote Procedure Calls) son un tipo de servicios en Linux que no tienen asignado un puerto determinado, por ello, necesitan registrarse utilizando el demonio portmap. RPC permite a un sistema, realizar llamadas a procedimientos de otras máquinas a través de la red.
Portmap no es mas que un servicio RPC que está a la escucha en el puerto 111 y su labor es asignar números RPC en /etc/rpc a puertos locales. Cuando se arranca un nuevo servido RPC como nfs, se pone a escuchar en un puerto y le comunica a portmap su número, por ejemplo el 100003, y el puerto en que se ha puesto a la escucha, en este caso el 2049. Ahora, cuando un cliente quiera contactar con el servicio nfs, primero deberá conectar al puerto de portmap y preguntarle en qué puerto está escuchando nfs. De ésta forma se realiza una conexión más ordenada en la que portmap actúa de policía de tráfico.
En el caso de querer visualizar los servicios RPC activos en nuestra máquina de forma rápida, usaremos el comando “rpcinfo -p”:
ekhtor@servidor:~$ rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32769 status
100024 1 tcp 58208 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 32771 nlockmgr
100021 3 udp 32771 nlockmgr
100021 4 udp 32771 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 tcp 49665 nlockmgr
100021 3 tcp 49665 nlockmgr
100021 4 tcp 49665 nlockmgr
100005 1 udp 32772 mountd
100005 1 tcp 51593 mountd
100005 2 udp 32772 mountd
100005 2 tcp 51593 mountd
100005 3 udp 32772 mountd
100005 3 tcp 51593 mountd
En algunos casos el puerto 111 de portmap está filtrado, por lo que el comando rpcinfo nos devolvería un mensaje como el siguiente:
rpcinfo: no se puede contactar portmapper: RPC: Error remoto de sistema - Expiró el tiempo de conexión
Otra alternativa en éste caso, es el uso de Nmap. El escaneador de puertos Nmap, tiene la posibilidad de inundar los puertos que va recorriendo con comandos RPC NULL para saber si se trata de un servicio RPC, y de ser así, nos muestra el protocolo y la versión del servicio en ejecución.
Ejemplo de escaneo de servicios RPC con Nmap:
ekhtor@servidor:~$ sudo nmap -sS -sR 192.168.2.4
Starting Nmap 4.53 ( http://insecure.org ) at 2008-04-15 17:56 CEST
Interesting ports on 192.168.2.4:
Not shown: 1706 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh
111/tcp open rpcbind (rpcbind V2) 2 (rpc #100000)
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2049/tcp open nfs (nfs V2-4) 2-4 (rpc #100003)
4000/tcp open remoteanything
4444/tcp open krb524
6881/tcp open bittorent-tracker
Si cualquier usuario de la red es capaz de ver los servicios que tenemos en ejecución, le resultará mucho más fácil lanzar un ataque contra un servicio determinado, por lo que debemos evitar esta situación. Para prevenir que cualquier usuario de la red pueda acceder a ésta información, podemos usar los archivos /etc/host.allow y /etc/host.deny y permitir el acceso al demonio portmap sólo a las máquinas que realmente lo necesiten.
Compártelo
Publicado en Consola, PlanetUbuntu, Redes, Seguridad, Ubuntu | Sin Comentarios »