¿Por qué necesitamos un firewall si no se ejecutan programas en sus puertos?

14

Cuando trato de hacer telnet a un puerto en un servidor, y si no hay ningún programa escuchando en ese puerto, telnet muere con el error "No se puede conectar ...". Entiendo que. Pero, ¿por qué necesitamos un firewall si no hay ningún programa escuchando en ningún puerto?

Khaja Minhajuddin
fuente
Defensa en profundidad. en.wikipedia.org/wiki/Defense_in_Depth_(computing)
Zoredache

Respuestas:

31

Puede que no haya un servicio en ejecución en este momento, pero ¿qué tal mañana? Los tiene todos apagados, pero ¿qué pasa con sus usuarios? Cualquier persona en un sistema unix / windows / mac puede abrir un puerto> 1024 en cualquier máquina a la que tenga acceso. ¿Qué pasa con el malware? ¿Qué hay de un virus? También pueden abrir puertos y comenzar a servir información al mundo, o comenzar a escuchar las conexiones de la red.

El propósito principal de un firewall no es bloquear los puertos para los servicios que sabe que están deshabilitados, es bloquear los puertos en servicios que quizás no conozca. Piense en ello como una denegación predeterminada con solo ciertos agujeros para los servicios que autoriza. Cualquier usuario o programa iniciado por un usuario puede iniciar un servidor en un sistema al que tenga acceso, un firewall impide que otra persona se conecte a ese servicio.

Un buen administrador sabe qué servicios deben exponerse y puede habilitarlos. Un firewall es principalmente para mitigar el riesgo de servidores desconocidos que se ejecutan en su sistema o su red, así como para administrar lo que está permitido en la red desde un lugar central.

Es importante saber qué se está ejecutando en su máquina / servidor y solo habilitar lo que necesita, pero un firewall proporciona esa protección adicional contra las cosas que no sabe.

gabe
fuente
1
> "Cualquier usuario o programa iniciado por un usuario puede iniciar un servidor en un sistema al que tenga acceso, un firewall impide que alguien más se conecte a ese servicio". Pero, ¿no haría esto inutilizable el servicio?
Khaja Minhajuddin
55
@KhajaMinhajuddin sí! Ese es exactamente el punto. (-:
gabe.
2
@KhajaMinhajuddin Sólo desea que los servicios que la configuración esté disponible para el mundo. No desea que el servidor smtp que super_spam_virus.exe inició mientras no buscaba escuchar conexiones de otros sistemas infectados. Un firewall evitará esto, aunque no es una panacea.
Gabe.
super_spam_virus.exe no suena como Unix y Linux :)
usuario desconocido
@userunknown true ... ¿qué tal a.out o una versión comprometida de / bin / ls que se copió a su sistema? O, si eres un desarrollador hg serveque inicia un servidor web en tu máquina. El punto es que es trivial iniciar un servidor en cualquier máquina, ya sea que se use como 'escritorio' o 'servidor', no importa. Y una vez que se inicia ese servidor, y no lo sabes ... bueno, ahí es cuando comienza la diversión.
Gabe.
3

SI no hay ningún programa escuchando en ningún puerto, no necesita un firewall, pero tampoco puede conectarse a su servidor porque está 'sellado' del resto del mundo.

Por otro lado ... supongamos que su servidor no tiene ningún programa que se ejecute localmente que escuche en ningún puerto, pero sirve como puerta de enlace para otras computadoras detrás de él. En este caso, utiliza un firewall para administrar el enmascaramiento (NAT) y, opcionalmente, puede filtrar algunas cosas en el reenvío de paquetes.

Patkos Csaba
fuente
Este es un buen punto, pero si quiero que el servidor haga cosas (generalmente pondría openssh y un servidor web). Incluso con un firewall, tengo que abrir puertos para que las aplicaciones en ejecución como openssh y servidores web sean útiles. Entonces, supongo que lo que pregunto es: ¿hay algún programa que abra puertos al mundo exterior que deba ser bloqueado por un firewall y que aún sea útil?
Khaja Minhajuddin 01 de
1
Sí hay. No es necesario un ejemplo para un servidor, pero supongamos que tiene una máquina Linux con X instalada y X ejecutándose en un puerto de red. Desea permitir que su computadora, tal vez algunas otras computadoras de la LAN se conecten a su X. Sin embargo, no querría que Joe de Francia se conecte a ella. Otro ejemplo, supongamos que configura varios servicios VPN en su servidor y necesita controlar qué redes pueden ver otras redes (o no). O supongamos que tiene OpenSSH pero desea permitir la conexión solo desde la computadora de su hogar. Hay muchos otros ejemplos.
Patkos Csaba
1
@KhajaMinhajuddin: para ssh, debe usar /etc/ssh/sshd_configpara asegurar la máquina. PermitRootLogindebe establecerse en No, debe usar una contraseña segura y mantener la máquina con sudo (puede usar sudo después de iniciar sesión con una cuenta con permisos de sudo). Establecer las restricciones con un firewall es la herramienta incorrecta para el trabajo. Lo mismo sería cierto para una postgresqlbase de datos: use la configuración de la base de datos para establecer y revocar permisos.
Usuario desconocido
3

Estrictamente hablando, puede no ser necesario, sin embargo, tenga en cuenta que un firewall puede proporcionar más funcionalidad que simplemente rechazar conexiones a través de puertos de red. Por ejemplo, comportamiento DROP versus RECHAZO.

Tok
fuente
1
¿Cuál es la ventaja de DROP versus RECHAZAR?
usuario desconocido
No estoy seguro, pero creo que DROP simplemente no responde, por lo que el solicitante ni siquiera sabe si se recibió la solicitud o si su máquina existe. RECHAZAR dice que definitivamente estás allí y simplemente no quieres hablar de eso. Y, si algo está detrás de una puerta cerrada, podría valer la pena intentar encontrar una manera de descubrir qué vale la pena proteger.
Joe
-5

Pero, ¿por qué necesitamos un firewall si no hay ningún programa escuchando en ningún puerto?

Si tiene un escritorio de usuario único , no un servidor, no necesita un firewall, si no hay ningún servicio en ejecución, como en una instalación predeterminada de Ubuntu.

Windows tuvo algunas veces, después de poder hacer redes, algunos servicios que se ejecutan de manera predeterminada para mantenimiento, actualizaciones, transmisión de mensajes internos, etc. No podría detenerlos sin que Windows dejara de funcionar, pero eran vulnerables a ataques externos. Entonces, los usuarios de Windows necesitaban un firewall, y el meme, que todos necesitan un firewall, se extendió rápidamente.

Cuando conocieron a la gente de Linux, que a menudo eran administradores de servidores, no dijeron 'no necesitas un firewall en Linux' sino 'tenemos firewalls gratuitos como iptables durante casi una década'.

Un firewall personal , ubicado en el sistema que protegerá, tampoco es la mejor idea.

En un sistema de escritorio de un solo usuario, no necesita un firewall personal.

usuario desconocido
fuente
3
Mira la respuesta de gabe y vuelve a pensar. Especialmente los clientes de escritorio son vulnerables a los ataques.
Nils
1
@userunknown: un virus podría ser un usuario de su escritorio. Un demonio que instalas y no configuras también lo es.
André Paramés
1
He realizado pruebas de seguridad durante muchos años, y el acceso a través de escritorios es una ruta muy útil para propagar un ataque. No importa si es Windows, Linux, Solaris, lo que sea. Ciérralo o piérdelo a un atacante. La frase correcta debería ser que puede necesitar un firewall en su escritorio - evalúe completamente los riesgos en su entorno
Rory Alsop
2
@userunknown solo porque usas una computadora como una desktopno significa que todavía no serverson solo palabras. Tu desktoptiene mucho de serverseso potencialmente podría ejecutarse en él, y posiblemente eso ya lo sea.
Gabe.
1
Piense en CUPS (cualquier linux), SLPD (SuSE) y otras cosas (KDE-remote, iSCSI-server / client) que pueden ejecutarse en linux después de una actualización. Incluso si marcó antes, estas cosas pueden aparecer. Si lo hacen, es bueno bloquearlos. Por cierto, active su firewall a través de GUI (don t allow anything) on RedHat, start CUPS and see if you can connect to it from outside. Then look at iptables-save`: Voila - el puerto CUPS está abierto sin aparecer en la gui ...
Nils