¿Qué tan útil es evitar que las aplicaciones de Linux configuren conexiones que no sean de confianza? ¿Se puede hacer fácilmente?

1

Amenaza: su máquina Linux se ve comprometida de alguna manera (aplicación no confiable o paquete o actualización de instalación comprometida, o una aplicación está comprometida debido a una vulnerabilidad, etc.) y algo en su sistema intenta "llamar a casa". Así que quieres evitar la llamada, básicamente neutralizando la vulnerabilidad. Lo vería porque podría ver una notificación que dice "Gimp desea conectarse a example.com en el puerto 80: permitir, permitir una vez, negar?". Creo que tiene sentido como defensa, ¿no?

Sin embargo, aparentemente, si no me equivoco, no hay formas fáciles de hacer esto en Linux, y no se han desarrollado aplicaciones populares y confiables para este propósito (busqué en Google y encontré varias preguntas sobre esto incluso aquí en stackexchange) . Se han desarrollado aplicaciones como AppArmor o SeLinux para controlar qué archivos puede usar un proceso, pero no se ha hecho lo mismo para las conexiones de red. En Windows, tales aplicaciones son muy comunes y forman parte de los cortafuegos. ¿Hay alguna razón por la que nunca haya sido lo mismo en Linux? No creo que configurar las conexiones de red permitidas pueda ser más difícil que configurar los archivos permitidos en AppArmor o SeLinux, por lo que no puede ser una cuestión de usabilidad.

Tengo que decir que tal vez he encontrado una manera de eludir tales métodos. La mayoría de los usuarios probablemente tendrán que establecer una regla que permita que el navegador se conecte a cualquier host en el puerto 80. Por lo tanto, el malware podría intentar copiarse dentro del navegador (parcheando o como un complemento), y entonces sería gratis conectarse en cualquier lugar en el puerto 80. Sin embargo, no creo que esto intente evitar conexiones no confiables totalmente inútiles. Por el mismo razonamiento, el malware puede parchar a AppArmor o sus reglas para que esté libre de hacer lo que quiera, pero esto no hace que AppArmor sea totalmente inútil.

    
pregunta reed 16.09.2018 - 15:32
fuente

3 respuestas

1

Traes un buen punto. EDR (Detección de punto final y respuesta) se ha creado por esta misma razón. Los proveedores como Crowdstrike hacen un gran trabajo en la protección de puntos finales. Que yo sepa, la mayoría del software EDR está desarrollado para ser invisible para el usuario final. Principalmente porque los hosts son administrados centralmente por un administrador. Un EDR decente detectaría cuando un usuario descarga y ejecuta una nueva aplicación y puede hacer un seguimiento de todo lo que hace el programa, como hacer conexiones salientes.

Este tipo de software tiene que ser muy robusto e inteligente, por lo que suele ser caro. Supongo que es la razón más probable por la que no está preinstalado en la mayoría de los sistemas operativos. EDR está disponible para la mayoría de los sistemas operativos, incluido Linux.

Para responder a su pregunta directamente, es muy útil monitorear las conexiones de red desde aplicaciones de confianza y, por lo general, es difícil hacerlo de manera efectiva.

    
respondido por el pm1391 16.09.2018 - 18:46
fuente
1

Esto se está volviendo más común con los nuevos formatos de paquetes de sandbox; por ejemplo, el paquete Snap para GIMP no tiene o no tiene acceso a:

Medios extraíbles

enlace

Impresoras

enlace

Network

enlace (No estoy realmente seguro de si el mensaje de error corresponde realmente a eso, también lo hemos visto en otros contextos)

Ahora imagine las distribuciones donde casi todos los programas que está utilizando se instalan a través de estas cajas de arena, y obtiene lo que está buscando. Que yo sepa, no es lo suficientemente detallado como para manejar todos y cada uno de los accesos, pero no debería haber nada para evitar que dichos permisos se otorguen caso por caso.

Esto requerirá un cierto ajuste de las expectativas de los usuarios, por supuesto, como puede ver, todos estos fueron reportados como problemas porque la gente pensaba que el paquete estaba roto :)

    
respondido por el Michael Schumacher 16.09.2018 - 21:30
fuente
1

Hay muchos puntos en tu correo electrónico, algunos de ellos son conceptos erróneos.

  

Gimp desea conectarse a example.com en el puerto 80: permitir, permitir una vez, ¿negar?

Parece que desea transferir su experiencia de MS Windows a Linux. En Linux, es difícil asociar las conexiones de red con el firewall. El firewall en Linux se encuentra debajo de la capa TCP, lo que significa que puede proteger la capa TCP, pero tiene una visibilidad limitada en la pila. Por el contrario, en MS-Windows el firewall se encuentra sobre la capa TCP. Pero, por supuesto, herramientas como netstat pueden asociar sockets de red con procesos, por lo que no es imposible.

Eche un vistazo a netstat: ¿Cuántos sockets ve que pertenecen a procesos de usuario interactivos y cuáles no? ¿Cómo debería el sistema decidir programáticamente si aplicar una política predeterminada o preguntar al usuario?

  

Aplicaciones como AppArmor o SeLinux ... no se han hecho para conexiones de red

Ambos SELinux y Apparmour puede aplicar controles de red, es cierto que ninguno está muy bien documentado. Además, con espacios de nombres de red puede aplicar diferentes reglas de firewall a diferentes grupos de procesos.

  

no hay formas fáciles de hacer esto en Linux,

Es sorprendentemente sencillo de hacer para las conexiones entrantes con TCP-wrappers (aunque requiere cierto conocimiento de cómo la GUI implementa el aislamiento de la sesión y la separación de privilegios). También es relativamente sencillo controlar las conexiones salientes a través de (por ejemplo) squid, aunque aquí es aún más difícil de resolver la aplicación cliente.

Sospecho que nadie ha implementado una solución empaquetada para el problema porque no lo perciben como un problema. Quizás puedas corregirlo / escribir eso.

    
respondido por el symcbean 17.09.2018 - 14:01
fuente

Lea otras preguntas en las etiquetas