Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo configurar los servidores de nube de Ubuntu para aplicaciones web en Python

marzo 4, 2020

 

Introducción

memoria caché de objetos como sistemas Memcached pueden optimizar el rendimiento de la base de datos back-end mediante el almacenamiento temporal de información en la memoria, conservando registros solicitados con frecuencia o recientemente. De este modo, reducen el número de solicitudes directas a sus bases de datos.

porque los sistemas como Memcached pueden contribuir a ataques de denegación de servicio si se ha configurado incorrectamente, es importante para asegurar sus servidores Memcached. En esta guía, vamos a cubrir la forma de proteger su servidor Memcached uniéndose a la instalación de una interfaz de red local o privada y la creación de un usuario autorizado para la instancia de Memcached.

Requisitos previos

Este tutorial se supone que tiene un servidor configurado con un usuario que no sea root sudo y un firewall básico. Si ese no es el caso, configurar e instalar lo siguiente:

  • Una CentOS 7 servidor, creó a raíz de nuestra configuración inicial del servidor con CentOS 7 tutorial.
  • FirewallD, configurado siguiendo el “Instalar y habilitar el servidor de seguridad se cargue al inicio” de nuestro guía sobre el uso de FirewallD con CentOS 7.

Con estos requisitos en su lugar, usted estará listo para instalar y proteger su servidor Memcached.

Instalación desde repositorios Memcached Oficial

Si no ya ha Memcached instalado en su servidor, puede instalarlo desde los repositorios de CentOS oficiales. En primer lugar, asegúrese de que su índice de paquetes locales se actualiza:

sudo yum update

  • sudo yum update

A continuación, instalar el paquete oficial de la siguiente manera:

sudo yum install memcached

  • sudo yum install memcached

También puede instalar libmemcached, una biblioteca que proporciona varias herramientas para trabajar con su servidor Memcached:

sudo yum install libmemcached

  • sudo yum install libmemcached

Memcached debe ahora ser instalado como un servicio en el servidor, junto con herramientas que permitan poner a prueba su conectividad. Ahora podemos pasar a asegurar sus valores de configuración. Ajustes de configuración

sujeción de Memcached

para asegurar que nuestro ejemplo Memcached está escuchando en la interfaz local 127.0.0.1, vamos a modificar la variable de opciones en el archivo de configuración ubicado en / etc / sysconfig / memcached. También vamos a desactivar el oyente UDP. Ambas acciones protegerán nuestro servidor de ataques de denegación de servicio.

Puede abrir / etc / sysconfig / memcached con vi:

sudo vi /etc/sysconfig/memcached

  • sudo vi / etc / sysconfig / memcached

Localizar la variable OPCIONES, que inicialmente se verá así:

. . .
OPTIONS=""

La unión a nuestra interfaz de red local restringirá el tráfico de clientes en la misma máquina. Lo haremos mediante la adición de -l 127.0.0.1 a nuestra variable OPCIONES. Esto puede ser demasiado restrictivo para determinados entornos, pero puede hacer un buen punto de partida como medida de seguridad.

Debido a que el protocolo UDP es mucho más eficaz para ataques de denegación de servicio que TCP, también puede desactivar el oyente UDP. Para ello, vamos a añadir el parámetro -U 0 a nuestra variable OPCIONES. El archivo en su totalidad debe tener este aspecto:


PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0"

Guardar y cerrar el archivo cuando haya terminado.

a reiniciar el servicio Memcached para aplicar los cambios:

sudo systemctl restart memcached

  • sudo systemctl reinicio memcached

Compruebe que Memcached está obligado actualmente a la interfaz local y escuchar sólo para conexiones TCP escribiendo:

sudo netstat -plunt

  • sudo netstat -plunt

debería ver el siguiente resultado:

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached
. . .

Esto confirma que memcached está obligado a la dirección 127.0.0.1 usando sólo TCP.

Adición de usuarios autorizados

Para añadir usuarios autenticados a su servicio Memcached, es posible utilizar autenticación simple y Seguridad de la capa (SASL), un marco que desacopla los procedimientos de autenticación de protocolos de aplicación. Vamos a permitir que SASL dentro de nuestro archivo de configuración Memcached y luego pasar a la adición de un usuario con credenciales de autenticación.

Configuración SASL Soporte

En primer lugar, puede probar la conectividad de nuestra instancia Memcached con el comando memstat. Esto nos ayudará a establecer que SASL y autenticación de usuario están habilitados después de hacer cambios en nuestros archivos de configuración. cheque

Para que Memcached está en funcionamiento, escriba lo siguiente: –servers memstat

memstat --servers="127.0.0.1"

  • = «127.0.0.1»

Debería ver una salida como la siguiente:

OutputServer: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .

Ahora podemos pasar a permitir SASL. En primer lugar, podemos añadir el parámetro -S a nuestra variable OPCIONES en / etc / sysconfig / memcached, lo que permitirá a SASL. Abra el archivo de nuevo:

sudo vi /etc/sysconfig/memcached

  • sudo vi / etc / sysconfig / memcached

Vamos a añadir tanto los parámetros -S y -vv a nuestra variable OPCIONES. La opción -vs proporcionará detallado de salida a / var / log / memcached, lo que nos ayudará a medida que depurar. Añadir estas opciones para la variable OPCIONES de la siguiente manera:

. . .
OPTIONS="-l 127.0.0.1 -U 0 -S -vv"

Guardar y cerrar el archivo.

Reiniciar el servicio Memcached:

sudo systemctl restart memcached

  • sudo systemctl reinicio memcached

A continuación, se puede echar un vistazo a los registros para asegurarse de que el apoyo SASL se ha activado:

sudo journalctl -u memcached

  • sudo -u journalctl memcached

debería ver la siguiente línea, lo que indica que el apoyo SASL se ha inicializado:

Output. . .
Mar 05 18:16:11 memcached-server memcached[3846]: Initialized SASL.
. . .

Podemos comprobar la conectividad de nuevo, sino porque SASL se ha inicializado, este comando debe dejar sin autenticación: –servers memstat

memstat --servers="127.0.0.1"

  • = «127,0 .0.1»

Este comando no debe producir una salida. Podemos escribir lo siguiente para comprobar su estado:

echo $?

  • echo $?

$? siempre devuelve el código de salida de la última orden que salió. Por lo general, cualquier cosa además de 0 indica el fracaso del proceso. En este caso, deberíamos ver un estado de salida 1, que nos dice que el comando memstat falló.

Adición de un usuario autenticado

Ahora podemos descargar dos paquetes que nos permitirán trabajar con la Biblioteca SASL de Cyrus y sus mecanismos de autenticación, incluyendo conectores para tratar esquemas de autenticación apoyo NORMAL . Estos paquetes, Cyrus-SASL-devel y Cyrus-SASL-llano, se nos permitirá crear y autenticar nuestro usuario. Instalar los paquetes escribiendo:

sudo yum install cyrus-sasl-devel cyrus-sasl-plain

  • sudo yum install cyrus-sasl-devel cyrus-sasl-llanura

A continuación, vamos a crear el directorio y archivo que Memcached comprobará por sus valores de configuración de SASL:

sudo mkdir -p /etc/sasl2
sudo vi /etc/sasl2/memcached.conf

  • sudo mkdir -p / etc / sasl2
  • sudo vi /etc/sasl2/memcached.conf

Añadir lo siguiente al archivo de configuración de SASL:

mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

Además de especificar nuestro nivel de registro, que fijará mech_list al llano, el cual Memcached dice que debería utilizar su propio archivo de contraseña y verificar una contraseña en texto plano. También vamos a especificar la ruta de acceso al archivo de base de datos de usuario que vamos a crear otra. Guardar y cerrar el archivo cuando haya terminado.

Ahora vamos a crear una base de datos SASL con nuestras credenciales de usuario. Vamos a utilizar el comando saslpasswd2 a hacer una nueva entrada para nuestro usuario en nuestra base de datos utilizando la opción -c. Nuestro usuario será Sammy aquí, pero se puede sustituir este nombre con su propio usuario. El uso de la opción -f, vamos a especificar la ruta a la base de datos, que será el camino que pusimos en /etc/sasl2/memcached.conf:

sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy

  • sudo saslpasswd2 -a memcached -c -f / etc / sasl2 / memcached-sasldb2 Sammy

Por último, queremos dar la propiedad de usuario memcached sobre la base de datos SASL:

sudo chown memcached:memcached /etc/sasl2/memcached-sasldb2

  • sudo chown memcached: memcached / etc / sasl2 / memcached-sasldb2

Reiniciar el servicio Memcached:

sudo systemctl restart memcached

  • sudo systemctl reinicio memcached

Correr memstat nuevo confirmará si nuestro proceso de autenticación trabajó. Esta vez vamos a ejecutarlo con nuestras credenciales de autenticación:

memstat --servers="127.0.0.1" --username=sammy --password=your_password

  • –servers memstat = «127.0.0.1» –username = Sammy –password = su_contraseña

debería ver una salida como la siguiente:

OutputServer: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .

Nuestro Memcached servicio ya está funcionando con éxito con el apoyo SASL y la autenticación de usuario.

Permitir el acceso a través de la red privada

Hemos cubierto de cómo configurar Memcached para escuchar en la interfaz local, que puede prevenir ataques de denegación de servicio mediante la protección de la interfaz de Memcached de la exposición a partes externas. Puede haber casos en los que se necesitan para permitir el acceso desde otros servidores, sin embargo. En este caso, puede ajustar los parámetros de configuración de bind Memcached a la interfaz de red privada.

Nota: vamos a cubrir cómo configurar los ajustes de cortafuegos usando FirewallD en esta sección, pero también es posible utilizar la nube digitalocean cortafuegos para crear estos ajustes. Para obtener más información sobre la configuración de la nube digitalocean cortafuegos, consulte nuestra Introducción a la nube digitalocean cortafuegos. Para obtener más información sobre cómo limitar el tráfico de entrada a máquinas particulares, echa un vistazo a la sección de este tutorial sobre la aplicación de las reglas del cortafuegos usando etiquetas y nombres de servidor y nuestra discusión de las etiquetas de firewall.

La limitación de acceso IP con servidores de seguridad

Antes de ajustar los parámetros de configuración, es una buena idea establecer reglas de cortafuegos para limitar las máquinas que pueden conectarse a su servidor Memcached. Si ha seguido los requisitos previos e instalado FirewallD en su servidor y hace no Plan sobre la conexión a Memcached de un no su anfitrión, y luego lo hace no necesidad de ajustar las reglas del cortafuegos. Su autónomo ejemplo Memcached debe estar escuchando en 127.0.0.1, gracias a la variable de opciones que definen anteriormente, y por lo tanto no debe haber ninguna preocupación por el tráfico de entrada. Si va a permitir el acceso a su servidor Memcached de otras máquinas, sin embargo, entonces usted tendrá que hacer cambios en la configuración del cortafuegos utilizando el comando firewall-cmd.

Comience por la adición de una zona de Memcached dedicado a su política de firewalld: firewall-cmd

sudo firewall-cmd --permanent --new-zone=memcached

  • sudo –permanent –new zona = memcached

A continuación, especifique el puerto que desea mantener abierta. Memcached utiliza el puerto 11211 de forma predeterminada:

sudo firewall-cmd --permanent --zone=memcached --add-port=11211cp

  • sudo firewall-cmd –permanent –zona = memcached –add-port = 11211 / tcp

A continuación, indique las direcciones IP privadas que se debe permitir el acceso a memcached. Para ello, necesitará conocer la dirección IP privada del servidor cliente :

sudo firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP

  • sudo firewall-cmd –permanent –zona = memcached –add-fuente = client_server_private_IP

Actualizar el servidor de seguridad para garantizar que la nuevas reglas entran en vigor:

sudo firewall-cmd --reload

  • sudo firewall-cmd –reload

los paquetes de la dirección IP del cliente debe ahora ser procesados ​​de acuerdo con las reglas de la zona Memcached dedicado. Todas las demás conexiones serán procesados ​​por la zona pública por defecto.

Con estos cambios en su lugar, podemos pasar a hacer los cambios de configuración necesarios para nuestro servicio Memcached, uniéndolo a la interfaz de red privada de nuestro servidor. La unión

Memcached a la interfaz de red privada

El primer paso en la unión a la interfaz de red privada de nuestro servidor será la modificación de la variable OPCIONES establecimos anteriormente.

podemos abrir / etc / sysconfig / memcached de nuevo al teclear:

sudo vi /etc/sysconfig/memcached

  • sudo vi / etc / sysconfig / memcached

interior, localice la variable OPCIONES. Ahora podemos modificar -l 127.0.0.1 para reflejar IP privada de nuestro servidor Memcached:

. . .
OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"

Guardar y cerrar el archivo cuando haya terminado.

Reiniciar el servicio Memcached nuevo:

sudo systemctl restart memcached

  • sudo systemctl reinicio memcached

Compruebe la nueva configuración con netstat para confirmar el cambio: la conectividad

sudo netstat -plunt

  • sudo netstat -plunt

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 memcached_servers_private_IP:11211 0.0.0.0:* LISTEN 2383/memcached
. . .
prueba

de su cliente externo para asegurar que todavía se puede alcanzar el servicio. Es una buena idea también de comprobar el acceso de un cliente no autorizado para cerciorarse de que sus reglas de cortafuegos son eficaces.

Conclusión

En este tutorial hemos explicado cómo proteger el servidor Memcached mediante la configuración que se una a su interfaz de red local o privada, y habilitando la autenticación SASL.

Para obtener más información sobre Memcached, echa un vistazo a la documentación del proyecto. Para obtener más información acerca de cómo trabajar con Memcached, consulte nuestro tutorial sobre cómo instalar y utilizar Memcache en Ubuntu 14.04.