En esta entrada de blog, presentaré tres nuevas características en Couchbase Server 7.0.2 ("Server") para ayudar a los administradores a desplegar Couchbase Server de forma segura: Enforce TLS, HSTS, y Enforce IP Address Family.
Cuando se despliega un cluster de Couchbase Server, una buena práctica es evitar tener un nodo Server directamente conectado a Internet. Aconsejamos que los clientes desplieguen un cortafuegos en el perímetro de red de su cluster así como un cortafuegos en cada nodo Servidor. Estos cortafuegos deben estar configurados para bloquear todos los puertos inseguros, los puertos para servicios que no están en uso y familias enteras de direcciones IP que no están en uso.
Aquí es donde entran en juego estas tres nuevas funciones. Los administradores deben desplegar cortafuegos y sólo permitir puertos específicos según sea necesario. Los nuevos ajustes proporcionan protecciones adicionales que logran el mismo objetivo, en lo que algunos podrían denominar un control compensatorio.
Aplicar TLS
La primera novedad es el refuerzo del cifrado de red TLS. En Couchbase Server 6.5.0, introdujimos Cifrado de nodo a nodo. Con Node To Node Encryption habilitado, permitimos la configuración de cómo se manejan los datos entre los nodos de Couchbase Server.
Opcionalmente, los datos de control están configurados para ser encriptados o todos los datos entre nodos están encriptados. Esto garantiza que el tráfico de red entre nodos del clúster sea seguro y, si los administradores despliegan aplicaciones para que sólo se conecten al clúster mediante conexiones de red cifradas, todos los datos de la base de datos a través de la red estarán cifrados. En este punto, el administrador desplegaría un cortafuegos para bloquear los puertos de red que gestionan el tráfico de red sin cifrar o de texto plano.
Con la nueva función Enforce TLS hemos añadido una tercera opción a la configuración de cifrado del clúster, ser estricto. Cuando esta opción está activada, el único tráfico de red permitido a través del clúster es seguro y cifrado. Esto se aplica a todo, desde la interfaz de usuario web, las herramientas de línea de comandos, el acceso a las aplicaciones y el tráfico de red entre los nodos del clúster, pero no se aplica a las interfaces locales de loopback.
Enforce TLS puede implementarse fácilmente utilizando el comando CLI:
couchbase-cli setting-security -cluster-encryption-level strict
Encabezado de transporte seguro HTTP (HSTS)
Junto con la configuración de Aplicar TLS, también hay una nueva configuración para activar opcionalmente un encabezado de transporte seguro HTTP (HSTS). El encabezado HTTP Strict Transport Security informa al navegador web de un usuario que nunca debe cargar un sitio utilizando HTTP y debe convertir automáticamente todos los intentos de acceder al sitio utilizando HTTP a solicitudes HTTPS en su lugar. Esto es útil si desea que todos los accesos a la interfaz de usuario se realicen únicamente a través de HTTPS.
Cuando un navegador sabe que un dominio ha activado HSTS, hace dos cosas:
- Siempre utiliza un https:// conexión, incluso al hacer clic en un http:// o después de escribir un dominio en la barra de direcciones sin especificar un protocolo.
- Elimina la posibilidad de que los usuarios hagan clic en las advertencias sobre certificados no válidos.
Una cosa que hay que recordar sobre Couchbase Server: por defecto el puerto no-TLS de la interfaz de usuario es 8091 mientras que el puerto TLS es 18091. Con HSTS activado, cualquier petición a http://cluster:8091 intentará acceder automáticamente a https://cluster:8091no la correcta 18091 puerto.
HSTS puede activarse con el comando CLI:
couchbase-cli setting-security -hsts-max-age
Configure el max-age a la cantidad de tiempo, en segundos, que el navegador debe recordar para acceder a la UI de Couchbase sólo usando HTTPS.
También puede optar por activar/desactivar HSTS precarga y incluirSubDominios directivas.
Aplicar la familia de direcciones IP
También aconsejamos a los clientes que utilicen un cortafuegos y bloqueen todo el tráfico de red para puertos y protocolos que no sean necesarios, incluyendo familias enteras de direcciones IP. Por ejemplo, si tu organización usa sólo direcciones IPv4, deberías bloquear a nivel de firewall todo acceso a direcciones IPv6 en tus nodos de Couchbase Server. Para añadir algunos controles compensatorios, hemos añadido opciones a los ajustes de Familia de Direcciones IP.
En el ejemplo anterior, si una organización sólo utiliza direcciones IPv4 y utilizó el comando CLI:
couchbase-cli ip-family -set -ipv4
...el clúster utilizaría IPv4 para la comunicación entre los nodos, pero aún sería posible que el tráfico de los clientes pasara por IPv6 a menos que hubiera un cortafuegos que lo impidiera. Si la dirección IPv4 no pudiera enlazarse, el nodo fallaría automáticamente. La nueva -ipv4only indicará al clúster que sólo intente enlazar con interfaces IPv4 y que nunca permita comunicaciones de red IPv6.
También existen -ipv6 y -ipv6only que logran el mismo resultado pero para la familia de direcciones IPv6 en lugar de la familia de direcciones IPv4. Si -ipv4 y -ipv6 están ambos establecidos, ambas interfaces deben ser enlazadas y si alguna de ellas está disponible, el sistema debe utilizarla y arrancar.
Conclusión
En este artículo, te he mostrado Enforce TLS, HSTS y Enforce IP Address Family. Todas estas características de seguridad tratan de hacer una barrera robusta para los atacantes que intentan comprometer tus sistemas. Si la seguridad es importante para ti, te recomiendo que leas algunas entradas de blog adicionales sobre nuestras características de seguridad que ayudan a mantener tus datos de Couchbase protegidos.