Introdução
Algumas implantações do Couchbase exigem comunicações seguras entre os nós da rede, o que pode ocorrer por motivos como políticas de governança de dados ou conformidade regulatória. Segurança do protocolo da Internet (IPsec) é um conjunto de protocolos para comunicações IP (Internet Protocol) seguras por meio de autenticaçãong e criptografando cada Pacote IP de uma sessão de comunicação. O IPsec pode ser usado para proteger os fluxos de dados entre um par de hosts (de host para host), entre um par de gateways de segurança (rede para rede), ou entre um gateway de segurança e um host (rede para host). O objetivo deste artigo é fornecer aos administradores do Couchbase uma introdução rápida sobre como configurar o IPsec entre os nós em um cluster do Couchbase.
Modos IPsec
O IPSec tem dois modos: modo de túnel e modo de transporte. O mais usado é o modo de túnel, que geralmente é usado para configurações de VPN (criação de dispositivo de rede de túnel em processo). O modo túnel não é prático para um cluster do Couchbase, pois exigiria a criação e a manutenção de túneis entre todos os pares de nós.
O modo de transporte é necessário para proteger a comunicação entre nós na mesma rede. Ele permite o uso do IPsec por pacote. Totalmente transparente para os aplicativos.
O IPSec pode fornecer autenticação de pacotes (ou seja, garantir que os pacotes recebidos sejam pacotes de nós confiáveis) e criptografia de pacotes. O modo de transporte e as entradas associadas do banco de dados de políticas de segurança permitem configurar o comportamento necessário para um cluster do Couchbase:
-
tipos específicos de pacotes de entrada só serão aceitos se estiverem encapsulados em ipsec e forem válidos (caso contrário, serão descartados)
-
tipos específicos de pacotes de saída devem ser encapsulados em ipsec
Normalmente, "tipo específico" será algo como: todos os pacotes de/para o segmento de rede do cluster do couchbase. Ou pode ser algo como tudo: todos os pacotes de/para as portas de serviço do couchbase.
Requisitos
-
Distribuição do Linux (o Debian é usado para este blog). O Windows oferece suporte a IPsec, mas isso não foi testado.
- Linux Openswan U2.6.32/K2.6.32-573.el6.x86_64 (netkey) ou superior
- Couchbase 4.1 ou superior
- Acesso do usuário sudo/root ao sistema
Instalação e configuração do OpenSwan
Na linha de comando, usando o sudo, o seguinte comando foi executado em cada nó. Para outras distribuições Linux, use o gerenciador de pacotes apropriado.
# sudo apt-get update
# sudo apt-get install openswan
O instalador pode solicitar que o usuário crie um certificado x.509. Não crie um certificado x.509. O IPsec precisa ser configurado para o modo de transporte. No ambiente de demonstração criado para este blog, temos dois nós: 10.0.2.4 e 10.0.2.5.
Etapas
1 - Em cada nó - adicione uma linha no arquivo /etc/ipsec.secrets: ipaddress_node1 ipaddress_node2: PSK "some_key"

2 - Modifique o arquivo /etc/ipsec.conf para usar arquivos *.conf localizados no subdiretório ipsec.d. Isso permite uma automação fácil se você precisar adicionar nós ao cluster. Cada par de nós precisa de sua própria entrada.

3 - Crie um arquivo de configuração no diretório /etc/ipsec.d/ com as seguintes informações:
conexão com o couchbase
type=transport
authby=secret
esquerda=
direito=
pfs=sim
auto=start
- conn couchbase -connection: rótulo arbitrário para sua conexão. Pode ser qualquer coisa que você queira
- type=transport: queremos usar o modo de transporte para essa conexãoauthby=secret: usaremos uma chave pré-compartilhada (PSK) para essa conexão.
- left=10.0.2.4: esta e a próxima linha apenas indicam os endereços IP envolvidos nessa associação IPsec. Não importa qual IP é o "esquerdo" e qual é o "direito".
- right=10.0.2.5: veja o item acima.
- pfs=yes: queremos ativar o Perfect Forward Secrecy para essa conexão. Em resumo, isso aumenta drasticamente a segurança. Iauto=start: Queremos iniciar imediatamente a associação IPsec de forma proativa. Isso também pode ser definido como auto=start, caso em que ele aguarda que a outra extremidade da conexão inicie o tráfego.
4 - Habilite o IPSec para usar a nova configuração em ambos os nós: #sudo service ipsec restart
Testando a configuração
Em uma linha de comando em um nó, digite o seguinte comando:
#ping
No outro nó, use a linha de comando e digite : (resultado desejado) Se não receber nenhuma mensagem, você precisará depurar sua configuração (consulte os guias de IPsec listados abaixo)
#sudo tcpdump esp
Observação: ESP = Encapsulamento de carga de segurança
Configuração do Couchbase
Instale o Couchbase em cada nó, uma configuração simples de dois nós. Configure o cluster. Toda a comunicação entre os dois nós pode ser rastreada usando o comando tcpdump esp; o exemplo acima documenta a comunicação entre dois nós do Couchbase.
Cluster de teste do Couchbase:
Captura de tela - #sudo tcpdump esp
Referências
Visão geral do IPsec – https://en.wikipedia.org/wiki/IPsec
Implementação do modo de transporte IPsec http://andersonfam.org/2014/04/02/ipsec-transport-mode/
Usando o StrongSwan (exemplo de 3 nós) - http://blog.sprinternet.at/2016/03/ipsec-transport-mode-with-strongswan-on-debian-jessie/
Arquivos de configuração de amostra usados para este teste
/etc/ipsec.conf
# /etc/ipsec.conf - Arquivo de configuração IPsec do Openswan
#
Manual do #: ipsec.conf.5
#
# Coloque seus próprios arquivos de configuração em /etc/ipsec.d/ terminando em .conf
versão 2.0 O # está em conformidade com a segunda versão da especificação ipsec.conf
Configuração básica do #
configuração
Controles de registro de depuração do #: "none" para (quase) nenhum, "all" para muitos.
# klipsdebug=none
# plutodebug="análise de controle"
# Para o Red Hat Enterprise Linux e o Fedora, deixe protostack=netkey
protostack=netkey
nat_traversal=yes
virtual_private=
oe=off
# Ative essa opção se você vir a mensagem "failed to find any available worker"
# nhelpers=0
1TP5Você pode colocar seu arquivo de configuração (.conf) em "/etc/ipsec.d/" e descomentar isso.
incluir /etc/ipsec.d/*.conf
/etc/ipsecrets
incluir /etc/ipsec.d/*.secrets
# use endereços IP de seu próprio ambiente
10.0.2.4 10.0.2.5: PSK "sharedkey"
/etc/ipsec.d/couchbase.conf
conexão com o couchbase
type=transport
authby=secret
left=10.0.2.4
right=10.0.2.4
pfs=y
auto=start