Puertos reservados para root (del 1 al 1024)

Imagen de Capa
0 puntos

Hola.
Estoy leyendo un libro de programación, la parte de comunicaciones por red (TCP/IP) y leo que:

Los puertos con número del 1 al 1024, se consideran reservados para servicios conocidos (como HTTP,POP,FTP,IMAP...) 
y no pueden ser utilizados por programas cuyo usuario es distinto del root. Tratar, por tanto, de abrir, por ejemplo 
el puerto 523 desde un programa ejecutado por un usuario normal dará lugar a un error.

Aquí viene la pregunta (y por eso en el foro de Seguridad). ¿Porqué?
¿Quiere decir esto que todo servidor WEB está corriendo el servicio como root?

¿Qué seguridad comporta esta característica?
¿Porqué no puede un usuario normal correr un servicio que escuche el puerto 1024 y si el 1025?

Buscando respuestas en Google he encontrado dos:

1 - De esta forma podemos estar seguros de que una conexión que se realice por debajo del puerto 1024 de la máquina remota, 
como por ejemplo el 999, viene de un programa que que está siendo ejecutado por el usuario root de dicha máquina.
Por ejemplo, ssh puede configurarse para que ciertos usuarios puedan establecer una conexión sin que se les pida ningún tipo de contraseña

.

2- Si intentamos conectarnos a un puerto privilegiado de otra máquina, como por ejemplo el 80, podemos confiar que es el demonio oficial 
el que está pidiéndonos un nombre de usuario y la contraseña, en lugar de un falso servidor creado por alguien del sistema.

Y después he encontrado una forma de burlarlo.

También se podría hacer que tu programa escuche en un puerto mayor
al 1024 (ej 2020) y luego con una regla de IPTABLES redireccionar lo que
llegue al puerto 20 hasta el 2020.

¿Entonces de qué sirve?

No tengo muy claro este concepto de seguridad y agradecería alguna explicación más práctica, donde pueda ver de forma clara el porqué esto es así.
Gracias.

Imagen de slap
+1
0
-1

¿Quiere decir esto que todo servidor WEB está corriendo el servicio como root?

Sí.

¿Qué seguridad comporta esta característica?

La respuesta la has encontrado tú mismo (respuestas 1 y 2).
Los servicios "sensibles" de la máquina escuchan en esos puertos y cuando hacemos una conexión a ellos tenemos la "garantía" de que son los servicios auténticos de la máquina y NO servicios falsos que hayan sido creados por usuarios malvados.

La forma de saltárselo que propones requiere modificar las iptables de la máquina atacada y eso sólo lo puede hacer root.

Saludos.


0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://7grados.injiniero.es

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de Capa
+1
0
-1

Gracias Slap.
¿Algún otro motivo o ejemplo a parte de los citados 1 y 2?


Firma:
Hay 10 tipos de personas, las que entienden código binario y las que no.
http://www.putoinformatico.tk
+1
0
-1