Acceso básico / seguro nginx [cerrado]

3

Ejecuto un servidor virtual privado en Ubuntu 14.04 y uso Nginx como mi servidor http y / o proxy inverso. Ejecuto varias aplicaciones web en este servidor, la mayoría de ellas son proyectos de código abierto nuevos.

ACTUALIZACIÓN: El servidor es un VPS que alquilo a una empresa de hosting. La instalación será un subdominio por aplicación.

Me pregunto cuáles son las diversas posibilidades de asegurar nginx en un entorno simple. Por ahora, este servidor solo se usa para uso privado / de desarrollo. Me gustaría lograr lo siguiente:

  • Use una autorización para aplicaciones que no tienen la suya propia. De lo contrario, cualquiera puede usarlo.
  • Restrinja el acceso a ciertas máquinas. Sé que Nginx puede negar el acceso en función de la dirección IP. Me preguntaba si podría lograrlo utilizando otras variables, como la dirección MAC, por ejemplo.

  • Evita que los motores de búsqueda indexen lo que hay en mi servidor. He leído que podría usar un .htaccess de Apache pero ¿puedo hacerlo con nginx? ¿Cuál es la diferencia con los archivos robots.txt?

  • ¿Cómo se podría aislar webapps? Me preguntaba si podría ejecutar cada aplicación como usuarios separados para fortalecer la seguridad. De lo contrario (alguien me dice si estoy equivocado) una violación de seguridad en uno de ellos (y eso puede ocurrir con frecuencia en proyectos jóvenes) podría permitir que un atacante tenga acceso a todos los archivos de usuarios de www-data. Con respecto a este hilo no sé si debe investigar en php5-fpm pools o solo nginx o ambos.

Gracias!

ACTUALIZAR

Lecturas interesantes sobre Docker y Sandstorm

Por lo general, configuro las carpetas en 755 y los archivos en 644. (Algunas aplicaciones recomiendan 777 en carpetas completas: 0) Para un servidor, prefiero quedarme en ubuntu por ahora (más fácil) a pesar de que lo pasé realmente bien descubriendo Arch durante algunos meses. hace. Sin embargo, he visto esto . Debería ser capaz de establecer SE Linux.

Siempre uso https. Nginx solo esta escuchando en el puerto ssl. El "problema" es que uso un certificado autofirmado ( tal vez no por mucho tiempo ) y no sé mucho acerca de los delincuentes, por lo que Primero investigue ssl antes de hacer algunas preguntas. Acabo de enterarme esta mañana que podría usar TLS en la configuración de nginx ^^

Realmente no entiendo qué es el hash. Ni dónde usarlo (me refiero a la configuración "server / nginx"). Todavía no entiendo dónde usar hash, excepto para la configuración ssl. - > ¿Podría usar el hash como contraseñas?

Actualmente utilizo Mitro . Pero inútil en Android (secuestro del portapapeles)

También utilizo algunas opciones básicas de rkhunter y fail2ban.

    
pregunta Lich4r 17.02.2015 - 21:21
fuente

1 respuesta

1
* Use an authenficiation for apps that don't have their own. Otherwise anyone can use it.

Puedes usar la autenticación básica HTTP para eso. Es básico, como dice el nombre. enlace

* Restrict access to certain machines. I know Nginx can deny access based on IP adress, I was wondering if I could achieve this using other variables such as mac adress for example?

En realidad no lo recomendaría. Las direcciones Mac se pueden falsificar. I.P auth más una contraseña debe ser suficiente. Las direcciones IP también pueden ser falsificadas, pero es un poco más problemático sacarlas en este contexto.

enlace

* Prevent search engines to index what is on my server. I have read that I could use an Apache .htaccess but can I do it with nginx ? What is the difference with robots.txt files ?

Use Robots.txt para decirle al motor de búsqueda de qué quiere que se mantenga alejado. Use htaccess / basic auth para asegurarse. El motor de búsqueda no puede leer nada a lo que no tenga una contraseña, aunque podría ver que hay una página allí (un prohibido es una prueba de la existencia de una página de alguna manera).

enlace

* How would one isolate webapps ? I was wondering if I could run each apps as separate users in order to harden security. Otherwise (someone tell me if I'm wrong) a security breach in one of them (and that may happen often with young projects) could allow an attacker to have access to all www-data user files. Regarding this thread I don't know if I must investigate in php5-fpm pools or only nginx or both.

Puede ejecutar la aplicación en un contenedor seguro de algún tipo, como las ofertas de la ventana acoplable. Creo que SystemD también tiene un contenedor nativo también. De esta manera, hay una "caja de arena" más para romper antes de que tengas problemas profundos. Tenga en cuenta que si hay un exploit binario en su servidor, el atacante a menudo se identificará como apache o Nginx y tendrá acceso a lo que esos servidores tienen acceso. La forma en que muchos proveedores de hosting hacen las cosas, es que ejecutan cada sitio en una máquina virtual propia. Si su caja tiene la potencia para esto, puede ser una buena solución.

Desea asegurarse de que los permisos en todas sus carpetas estén configurados correctamente. Si usa centOS o RedHat Linux, también es posible agregar otra capa de permisos de grano fino en las carpetas relacionadas con la web para bloquearlos aún más (investigue SE Linux). Ya que está en Ubuntu, eso no es una opción, pero si alguna vez cambia Usted deberia comprobar esto. Del mismo modo, freeBSD tiene un concepto de "Jails" que limita el acceso de una aplicación a todo el sistema. Usted puede encontrar esto interesante también.

Algunas cosas adicionales que no preguntaste pero que te diré

  • Asegúrese de ocultar los números de versión siempre que pueda
  • Usa HTTPS en todo
  • Encripta todo lo que puedas, siempre que puedas.
  • Usa los cifrados más fuertes que puedas todo el tiempo
  • Usa los hashes más fuertes que puedas.
  • Utilice contraseñas muy grandes. Use un administrador de contraseñas que genere contraseñas seguras para usted. (Keepass es bueno.)
  • Si es vida o muerte que nadie acceda a esto, no lo pongas en internet. Si la gente lo quiere lo suficiente, encontrarán un camino.
  • No tenga miedo de usar una solución de alojamiento, donde parte de la responsabilidad de seguridad (IDS y demás) recae en el proveedor de alojamiento. No hay garantía de que lo hagan bien, pero si eres un nuevo desarrollador web, será muy difícil preocuparse por todo esto mientras aprendes a programar.
respondido por el baordog 17.02.2015 - 23:00
fuente

Lea otras preguntas en las etiquetas