Por diseño, la seguridad no se construye en Elasticsearch. Ellos dejan que sea usted como el desarrollador para implementar la seguridad adecuada para su entorno. Esto es a la vez bueno y malo.
Pensé seguridad por oscuridad trabajaría por un corto tiempo - yo estaba equivocado.
A principios de esta semana alguien utiliza la empresa en el servidor de acceso público Elasticsearch para inyectar un script que a su vez inició una serie de ataques DDoS de nuestra red interna a los sitios web chinos paralizando nuestra red de oficinas por medio día. Asegurar elasticsearch luego se convirtió en una prioridad
En este post, vamos a discutir varias opciones para proteger Elasticsearch incluyendo parches, firewalls, iptables, nginx proxy inverso y el plugin embarcadero.
Esta es una de las razones una de mis índices Elasticsearch obtuve comprometida. Estábamos corriendo la versión 1.1 a la producción y al igual que muchos que los sistemas de apoyo en la producción desea configurar y olvidarse de él. Está funcionando muy bien - no lo toque! Así que todavía no había tenido tiempo de actualizar a Elasticsearch 1.2.
Supongo que lo que - que desactiva la característica de scripting dinámico de forma predeterminada. Ejecutar un servidor de acceso público con ES encendido es buscar problemas. Esto es lo que se utiliza para activar nuestro servidor Elasticsearch en una red zombi DDoS paralizante.
Incluso si usted usa alguna de las siguientes soluciones para proteger su servidor ES, sigue siendo una buena idea para mantenerlo actualizado (por no hablar de conseguir todas las nuevas características impresionantes!)
TL; DR: Mantenga su Elasticsearch instalar hasta la fecha
Esta es la solución más fácil: No tengo un servidor de acceso público Elasticsearch. Si está ejecutando Elasticsearch en la nube como en EC2 o en la empresa, puede normas de configuración de cortafuegos para permitir sólo las IPs de su entorno de desarrollo y servidor de acceso con las reglas del cortafuegos. Permitiendo sólo el acceso al puerto 9200/9300 en la lista blanca de direcciones IP es una gran manera de proteger su servidor Elasticsearch.
Otra opción es, que está disponible con la mayoría de distribuciones de Linux, y ofrece características similares de un servidor de seguridad para un único servidor.
Si bien esto es probablemente 'bueno, duh' para usted que era algo que pensé que podía esperar - seguridad por oscuridad, como me gusta llamarlo. Tenía un servidor que ejecuta Elasticsearch públicamente por lo que un grupo de desarrolladores distribuidos podía acceder a él. Yo no quería hacer frente a la creación de reglas de firewall para la dirección IP de todos que pueden cambiar mañana y luego de nuevo la próxima semana. Pensé que esperar hasta la extendemos a la producción de bloqueo hacia abajo.
TL; DR: Utilice un firewall o iptables para proteger su servidor Elasticsearch de los Internet pública.
A veces quiere que el servidor Elasticsearch que se accede desde fuera de su red. Esta es una buena solución si usted tiene un equipo distribuido de desarrolladores, utiliza cloud hosting, o simplemente desea exponer sus datos a un grupo selecto de personas externas. Usando este método se puede también configurar varios nombres de usuario y contraseñas que pueden acceder a su índice, que le da un mayor control sobre la concesión y revocación de acceso.
Y esto es muy fácil de instalar si lo son. Simplemente, y actualizar un par de archivos de configuración, y la configuración de su configuración Elasticsearch para ejecutar en el servidor local (esto es defecto cuando usted). Hay un bono si está utilizando Nginx en el que usted tiene más control y puede ejecutar todo a través de SSL.
Aquí está la ejecutarlo como un proxy inverso para usar la autenticación HTTP en frente de su servicio Elasticsearch.
TL; DR: utilizar Nginx como proxy inverso para elasticsearch ejecuta la autenticación HTTP en solicitudes
Es posible que desee que sus datos Elasticsearch abiertas al público - pero que no desea. Tal vez se está ejecutando una API pública en la que desea utilizar para exponer datos ES. Quizás esté sirviendo recetas o algún tipo de datos agregados a otros desarrolladores o la publicación de los datos de los sitios web públicos. O si está utilizando el y desea utilizar angular como interfaz (o!) Interfaz a su índice.
Hay un par de maneras de hacer esto. En primer lugar, se puede configurar un proxy inverso Nginx (similar al punto 3 anterior), excepto que no es necesario para la autenticación de configuración ... Sólo tiene que sólo se puede permitir que las solicitudes GET, utilizando la siguiente configuración de Nginx ()
También puede configurar la configuración de Nginx para permitir sólo las peticiones al.
¿Qué pasa si usted no quiere tratar con la configuración de Nginx proxy? Hay un plugin llamado por Elasticsearch que lograr esto para usted.
Este plugin hace posible exponer el servidor HTTP del alto rendimiento incrustado en Elasticsearch directamente al público negar el acceso a las llamadas a la API que pueden cambiar ningún dato. Sin más apoderados! Potros yay!
TL; DR: únicamente permite el acceso de sólo lectura o el acceso a la API de búsqueda para el acceso anónimo pública
El añade algunas características impresionantes para su servidor Elasticsearch incluyendo el soporte SSL, la autenticación básica, la solicitud de registro, y la compresión Gzip de respuestas.
El plug-in elasticsearch-embarcadero trae toda la potencia del embarcadero y añade varias características nuevas para Elasticsearch. Con este plugin elasticsearch ahora puede manejar conexiones SSL, soporte a la autenticación básica, y registrar todas o algunas de las solicitudes entrantes en los formatos de texto sin formato o JSON.
El plugin es similar al embarcadero sin todas las características adicionales. Simplemente controla la autenticación básica. Esto es más sencillo de configurar y usar de embarcadero, pero carece de las características adicionales que hacen embarcadero impresionante. Pero si lo que desea es auth - darle una oportunidad.
No hay manera estándar para asegurar Elasticsearch - que depende de su entorno y requisitos. Sin embargo, cualquiera de estas cinco maneras será mejor que simplemente encendiendo un índice Elasticsearch a cabo en el Internet público.
No quieren preocuparse de todo esto divertido? Echa un vistazo a algunas opciones.
.