Cuando tienes servidores propios o te encargas de gestionar servidores dedicados, la seguridad es algo que a día de hoy importa y mucho. Una de las primeras cosas que deberías hacer al instalar tu servidor es evitar ataques DDoS en el puerto 111 rpcbind portmapper y el riesgo de Offene Portmapper-Dienste.
Aunque parezca una tontería, hay proveedores que pueden detectar como un fallo potencial y una brecha ante ataques DDoS el tener abierto el puerto 111.
Cómo solucionar el problema del puerto 111 rpcbind y ataques DDoS
El puerto 111 corresponde al servicio rpcbind y también al portmap, que hacen falta para mapear solicitudes RPC al servicio de red.
Esto significa, que la solución tiene por fuerza que restringir o bien el uso total de este puerto, o bien al menos permitir solo a los equipos que sean necesarios para lo que necesites configurar, como puedan ser unidades NFS por ejemplo.
Precisamente por eso te voy a poner las dos soluciones, tanto si lo usas como si no. En este caso los ejemplos están basados en Debian, por lo que también funcionarán en cualquier distro basada en este como Ubuntu por ejemplo.
Cómo deshabilitar rpcbind completamente en Debian
En el primer supuesto no le vas a dar ningún uso, por lo que a partir de ahí el tener el servicio funcionando no tendría sentido.
Conéctate como root a tu sistema por ssh o abre una terminal si estás en la interfaz gráfica. Si no quieres ser root, puedes ejecutar los comandos con sudo delante para que te funcionen.
systemctl stop rpcbind systemctl disable rpcbind
El primer comando detiene el servicio, pero al reiniciar el equipo volvería a arrancar y a escuchar en el puerto 111.
Para eso es el segundo comando, que lo que hará es deshabilitar en el arranque que el servicio se ponga en marcha, por lo que queda completamente deshabilitado y el puerto 111 ya no tendrá ningún servicio escuchando.
Cómo permitir ips específicas para rpcbind en Debian
Por otro lado, imagina que tienes que permitir la conexión a este equipo en dicho puerto porque das un servicio. En este caso, sería necesario echar mano del firewall, y aunque depende de cual uses y de la distro, lo más común es que estés usando iptables que viene integrado.
Para esto lo más conveniente es permitir o ips específicas, o incluso rangos de ips, por ejemplo si tienes una red en un rango de confianza.
Para eso ejecuta lo siguiente como root o sudo:
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
En este caso lo que hemos hecho es rechazar todas las llamadas que no vengan de las direcciones de red del rango 192.168.0.0, y con el segundo comando hemos permitido las que vienen de localhost, que son necesarias para el servicio sgi_fam.
Para hacer lo mismo con el tráfico UDP puedes usar este comando:
iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP
Una vez hecho esto, todo el tráfico que no venga de esas ips debería ser rechazado y no respondido, lo que resolvería el problema.
También puedes poner una ip concreta en lugar de un rango:
iptables -A INPUT -p tcp -s! 80.35.89.45 --dport 111 -j DROP
Pero ten en cuenta que lo mejor es crear una regla para cada una de las ips que quieras gestionar, por si en el futuro tienes que quitar alguna.
Por último, una vez configurado el firewall, tienes que guardarlo para que persista entre reinicios:
service iptables save
Llegados a este punto, deberías poder acceder desde las ips indicadas y todas las demás (ya sean de internet, o de una red local), serán rechazadas.
Si tienes algún problema para la configuración o alguna sugerencia dímelo y te echo un cable.
¿Servidores propios? ¿Arreglo o prevención? Comenta y comparte