¿Cómo proteger los entornos de prueba / desarrollo del mundo exterior?

5

Me gustaría configurar una barrera de seguridad para mis entornos de prueba / dev. Estoy bajo una LAMP más o menos típica en servidores dedicados.

Lo que pasa es que tengo algunas aplicaciones de Facebook, un widget para otros dispositivos y otras aplicaciones que necesitan conectarse a mi sitio a través de una API (¡también, llamadas ajax!). Pero quiero que mis sitios de prueba / desarrollo no sean accesibles desde el exterior. Por lo tanto, ¿cómo podría configurar mejor alguna protección aquí?

Las primeras ideas que se me ocurren son:

  • Eliminar entradas de DNS.
    • Solo puede acceder a través de IP y configurar las entradas de / etc / hosts donde quiera probar. Pero necesitaría referirse vía IP en otras aplicaciones externas como una aplicación FB.
  • autenticación http de Apache
    • Pros: necesita u / pw para acceder, así que seguro. Pero: ¿cómo se puede configurar el acceso automatizado? P.ej. widgets, aplicaciones FB, llamadas ajax ... (en realidad no sé)
  • entrada de robots.txt para evitar la exposición a los motores de búsqueda, pero no lo suficiente como para bloquear un sitio.

Ideas por favor? ¡Gracias!

    
pregunta Co Lega 06.10.2011 - 20:09
fuente

5 respuestas

4

Coloque el servidor de prueba detrás de un enrutador / firewall, y no lo exponga al exterior. Siempre que todos los que necesiten acceder al servidor de prueba estén detrás del mismo enrutador, todo está bien (siempre que confíe en la red local); El mundo exterior ni siquiera sabrá que la máquina existe.

Si necesita acceso desde el exterior, VPN o SSH-tunnel a la red local.

    
respondido por el tdammers 06.10.2011 - 23:20
fuente
3
  
  • Eliminar entradas de DNS.
  •   

Esto no te ayudará. Cualquier persona que lo encuentre y escanee desde el exterior es casi seguro que explora ciegamente el espacio de IP, no busca nombres ni los prueba, y eliminarse a sí mismo del DNS no los afectará en lo más mínimo.

  
  • autenticación http de Apache
  •   

Esto ayudará, pero como has señalado, hacer que funcione con todos tus widgets puede terminar siendo un dolor.

  
  • entrada de robots.txt para evitar la exposición del motor de búsqueda
  •   

Esto no ayudará mucho. Puede reducir los motores de búsqueda honestos que lo indexan, pero solo detiene a los rastreadores de buen comportamiento. Y las posibilidades de que su oponente se encuentre con usted a través de una búsqueda en la web son muy, muy bajas. Consulte más arriba, probablemente estén escaneando ciegamente el espacio IP y lo estén golpeando.

Actualice para responder completamente al comentario de @Co Lega

¿También quieres soluciones? Mierda, eso es lo difícil! 8)

Una solución que podría funcionar para usted es otorgar temporalmente acceso basado en IP basado en la autenticación. Esto es similar a la detonación de puertos o POP-before-SMTP. Parece que desea probar las aplicaciones en el servidor de desarrollo y, por lo tanto, no puede agregar la autenticación de la capa de la aplicación al servidor de desarrollo sin entrar en conflicto con las aplicaciones que ya pueden tener su propia autenticación. No desea mantener las reglas del cortafuegos porque sus usuarios pueden no ser predecibles en su IP de origen o porque no desea mantener un conjunto de reglas cambiantes.

La idea, entonces, es que las personas realicen una autenticación en el servidor de desarrollo con el único propósito de abrir el acceso desde su IP por un tiempo limitado, como una regla de firewall dinámica y temporal. Debido a que está modificando el acceso IP, su navegador y / o aplicación no necesitan mantener credenciales, el servidor de aplicaciones no necesita mantener el estado para ese nivel de acceso, etc. Navegan a la página de autenticación del servidor , autentíquese, y su IP se autoriza para acceder al resto del sitio durante 30 minutos, 2 horas, 2 días, lo que desee. Ellos prueban las aplicaciones sin necesidad de permitir el ajuste de ese acceso en la autenticación, ya que a su IP se le ha otorgado acceso basado en esa autenticación fuera de banda (por ejemplo, no en la aplicación).

Un inconveniente es que la fuente de IP no siempre es tan segura; si están detrás de un proxy en la biblioteca, a alguien más detrás de ese proxy también se le otorga acceso. En ese momento, desea ver una solución VPN.

Mirando tu pregunta, no estoy seguro de qué tan bien se ajusta a tu objetivo original. Está dirigido a una multitud de desarrolladores más que usuarios finales, y suena como si estuvieras pensando en usuarios finales. En ese caso, tal vez la respuesta sea fortalecer las aplicaciones para sobrevivir a la exposición a Internet, lo cual es una buena idea de todos modos.

¡Buena suerte!

    
respondido por el gowenfawr 06.10.2011 - 21:14
fuente
2

Configura un DNS indiscutible.

$ openssl rand -hex 16
dbfbd61101a137242e6f1e1149923e20

$ host instance-dbfbd61101a137242e6f1e1149923e20.myapp.com
instance-dbfbd61101a137242e6f1e1149923e20.myapp.com has address 128.64.32.16
    
respondido por el yfeldblum 06.10.2011 - 21:14
fuente
2

Configurar un cortafuegos. Comience con una política que bloquee todo el acceso a su máquina desde el exterior. Luego, haga algunos agujeros en el firewall solo para los puertos de destino que deben estar expuestos, pero limítelos por IP de origen según la dirección IP del servicio externo que necesita comunicarse con usted.

Esto no es perfecto, porque las direcciones IP pueden ser falsificadas. Sin embargo, probablemente sea lo suficientemente bueno para configurar un entorno de prueba / desarrollo por un tiempo. Simplemente no lo dejes para siempre: cuando hayas terminado, apágalo.

    
respondido por el D.W. 06.10.2011 - 22:43
fuente
0

No repetiré las otras respuestas. Desea que una aplicación de Facebook acceda a su sitio, si está detrás de un inicio de sesión. Puedes darle a esa aplicación la opción de iniciar sesión, supongo. Nunca construí una aplicación FB, así que no conozco las limitaciones, pero supongo que no serás el primero en necesitar algo como esto. Lo mismo ocurre con cualquier aplicación, PHP o cualquier idioma que uses. Debería ser posible.

    
respondido por el SPRBRN 01.05.2014 - 10:49
fuente

Lea otras preguntas en las etiquetas