Como Instalar e Seguro Memcached no Ubuntu 20.04

Uma versão anterior deste tutorial foi escrito por Kathleen Juell.

introdução

sistemas de cache de objetos de memória como o Memcached podem otimizar o desempenho do banco de dados de back-end armazenando temporariamente informações na memória, retendo registros solicitados com frequência ou recentemente. Dessa forma, eles reduzem o número de solicitações diretas aos seus bancos de dados.

neste guia, você aprenderá como instalar e configurar um servidor Memcached. Você também aprenderá como adicionar autenticação ao secure Memcached usando o Simple Authentication and Security Layer (SASL). Por fim, você aprenderá como vincular o Memcached a uma interface de rede local ou privada para garantir que ele seja acessível apenas em redes confiáveis, por usuários autenticados.

pré-requisitos

para seguir este tutorial, você precisará:

  • um servidor Ubuntu 20.04 com um usuário não root sudo e um firewall habilitado. Para configurar isso, você pode seguir nossa configuração inicial do servidor com o tutorial Ubuntu 20.04.

com esses pré-requisitos em vigor, você estará pronto para instalar e proteger seu servidor Memcached.

Alternativamente, se você gostaria de experimentar com a instalação e configuração Memcached em seu navegador usando um terminal Interativo, clique no lançamento de um terminal interativo! botão abaixo para começar.

inicie um Terminal interativo!

Passo 1-Instalando Memcached

se você ainda não tiver Memcached instalado em seu servidor, você pode instalá-lo a partir dos repositórios oficiais do Ubuntu. Primeiro, certifique-se de que o seu local de índices de pacote é atualizado usando o seguinte comando:

  • sudo apt update

em seguida, instale o pacote oficial da seguinte forma:

  • sudo apt install memcached

Você também pode instalar libmemcached-tools, que é um pacote que contém várias ferramentas que você pode usar para examinar, testar e gerenciar seu servidor Memcached. Adicione o pacote ao seu servidor com o seguinte comando:

  • sudo apt install libmemcached-tools

o Memcached agora deve ser instalado como um serviço em seu servidor, juntamente com ferramentas que permitirão testar sua conectividade.

para iniciar o Memcached, execute o seguinte comando systemctl :

  • sudo systemctl start memcached

Agora você pode passar para proteger suas configurações.

Passo 2-Configurando as configurações de rede Memcached (opcional)

se o seu servidor Memcached só precisa suportar conexões IPv4 locais usando TCP, então você pode pular esta seção e continuar a Etapa 3 Neste tutorial. Caso contrário, se você quiser configurar o Memcached para usar soquetes UDP, soquetes de domínio Unix ou adicionar suporte para conexões IPv6, prossiga com as etapas relevantes nesta seção do tutorial.

primeiro, certifique-se de que sua instância Memcached está ouvindo na interface de loopback IPv4 local 127.0.0.1. A versão atual do Memcached que vem com Ubuntu e Debian tem seu parâmetro de configuração -l definido para a interface local, o que significa que ele está configurado para aceitar apenas conexões do servidor onde o Memcached está sendo executado.

verifique se o Memcached está atualmente vinculado à interface local IPv4 127.0.0.1 e ouvindo apenas para conexões TCP usando o comando ss :

  • sudo ss -plunt

os vários sinalizadores alterarão a saída ss das seguintes maneiras:

  • -p adiciona o nome do processo que está a utilizar um socket
  • -l limita a saída para sockets de escuta só, como oposição também incluindo soquetes conectados a outros sistemas
  • -u inclui UDP base de tomadas na saída
  • -n exibe os valores numéricos na saída, em vez de nomes legíveis e valores
  • -t inclui baseados em TCP sockets na saída

Você deve receber o resultado como o seguinte:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)). . .

esta saída confirma que memcached está vinculado ao endereço IPv4 loopback 127.0.0.1 usando apenas o protocolo TCP.

agora que você confirmou que o Memcached está configurado para suportar IPv4 apenas com conexões TCP, você pode editar /etc/memcached.conf para adicionar suporte para conexões UDP, Unix Domain Sockets ou IPv6.

Configurar o IPv6

Para habilitar conexões IPv6 para o Memcached, abra o /etc/memcached.conf arquivo com nano ou o seu editor preferido:

  • sudo nano /etc/memcached.conf

Primeiro, localize a seguinte linha no arquivo:

/etc/memcached.conf
. . .-l 127.0.0.1

esta linha é onde Memcached está configurado para ouvir na interface IPv4 local. Para adicionar suporte a IPv6, adicione uma linha contendo o endereço de loopback local IPv6 (::1) assim:

/etc/memcached.conf
. . .-l 127.0.0.1-l ::1

Salve e feche o arquivo pressionando CTRL+O então ENTER para salvar, então CTRL+X para sair nano. Em seguida, reinicie o Memcached usando o comando systemctl :

  • sudo systemctl restart memcached

agora você pode verificar se o Memcached também está ouvindo conexões IPv6 repetindo o comando ss da seção anterior:

  • sudo ss -plunt

você deve receber a saída como o seguinte:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)) . . .tcp LISTEN 0 1024 :11211 :* users:(("memcached",pid=8889,fd=27))

as partes destacadas da saída indicam que o Memcached agora está ouvindo conexões TCP na interface IPv6 local.

observe que, se você quiser desativar o Suporte ao IPv4 e apenas ouvir conexões IPv6, poderá remover a linha -l 127.0.0.1 de /etc/memcached.conf e reiniciar o serviço usando o comando systemctl.

configurando UDP

se você gostaria de usar Memcached com soquetes UDP, você pode ativar o suporte UDP editando o arquivo de configuração /etc/memcached.conf.

abra /etc/memcached.conf usando nano ou seu editor preferido, adicione a seguinte linha ao final do arquivo:

/etc/memcached.conf
. . .-U 11211

se você não precisar de suporte TCP, encontre a linha -p 11211 e altere-a para -p 0 para desativar as conexões TCP.

quando terminar de editar o arquivo, salve e feche-o inserindo CTRL+O para salvar e, em seguida, CTRL+X para sair.

em seguida, reinicie o serviço Memcached com o comando systemctl para aplicar suas alterações:

  • sudo systemctl restart memcached

verifique se o Memcached está ouvindo conexões UDP usando o comando ss -plunt novamente:

  • sudo ss -plunt

se você desativou o suporte TCP e tem conexões IPv6 ativadas, então você deve receber saída como a seguinte:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .udp UNCONN 0 0 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=28))udp UNCONN 0 0 :11211 :* users:(("memcached",pid=8889,fd=29)). . .

observe que sua saída pode ser diferente se você tiver apenas conexões IPv4 ativadas e se tiver deixado as conexões TCP ativadas.

configurando soquetes de domínio Unix

se você gostaria de usar Memcached com soquetes de domínio Unix, você pode habilitar esse suporte editando o arquivo de configuração /etc/memcached.conf. Observe que se você configurar o Memcached para usar um soquete de domínio Unix, o Memcached desativará o suporte TCP e UDP, portanto, certifique-se de que seus aplicativos não precisem se conectar usando esses protocolos antes de ativar o suporte ao soquete.

abra /etc/memcached.conf usando nano ou seu editor preferido, adicione as seguintes linhas ao final do arquivo:

/etc/memcached.conf
. . .-s /var/run/memcached/memcached.sock-a 660

o sinalizador -a determina as permissões no arquivo do soquete. Certifique-se de que o usuário que precisa se conectar ao Memcached faz parte do grupo memcache em seu servidor, caso contrário, ele receberá uma mensagem de permissão negada ao tentar acessar o soquete.

em seguida, reinicie o serviço Memcached com o systemctl comando para aplicar as alterações:

  • sudo systemctl restart memcached

Verifique que o Memcached está preparado para ouvir o Socket de Domínio Unix conexões usando o ss -lnx comando:

  • sudo ss -lnx | grep memcached

O -x bandeira limita a saída de ss para exibir o soquete de arquivos. Você deve receber saída como a seguinte:

Output
u_str LISTEN 0 1024 /var/run/memcached/memcached.sock 20234658 * 0

agora que você configurou as configurações de rede do Memcached, você pode prosseguir para a próxima etapa neste tutorial, que está adicionando SASL para autenticação ao Memcached.

Passo 3-adicionando usuários autorizados

para adicionar usuários autenticados ao seu serviço Memcached, você pode usar a camada de autenticação e segurança simples (SASL), que é uma estrutura que desativa os procedimentos de autenticação dos protocolos de aplicativos. Primeiro, você adicionará suporte para SASL ao seu servidor e, em seguida, configurará um usuário com credenciais de autenticação. Com tudo no lugar, você pode ativar o SASL no arquivo de configuração do Memcached e confirmar que tudo está funcionando corretamente.

adicionando um usuário autenticado

para começar a adicionar suporte SASL, você precisará instalar o pacote sasl2-bin, que contém programas administrativos para o banco de dados de usuários SASL. Esta ferramenta permitirá que você crie um usuário ou usuários autenticados. Execute o seguinte comando para instalá-lo:

  • sudo apt install sasl2-bin

em seguida, crie o diretório e o arquivo que o Memcached verificará suas configurações SASL usando o comando mkdir :

  • sudo mkdir -p /etc/sasl2

Agora crie o SASL arquivo de configuração usando nano ou o seu editor preferido:

  • sudo nano /etc/sasl2/memcached.conf

Adicione as seguintes linhas:

/etc/sasl2/memcached.conf
log_level: 5mech_list: plainsasldb_path: /etc/sasl2/memcached-sasldb2

além de especificar o nível de registro, mech_list está definido como plain, que informa ao Memcached que deve usar seu próprio arquivo de senha e verificar uma senha de texto simples. A última linha que você adicionou especifica o caminho para o arquivo de banco de dados do usuário que você criará a seguir. Salve e feche o arquivo quando terminar.

agora você criará um banco de dados SASL com credenciais de usuário. Você usará o comando saslpasswd2 com o sinalizador -c para criar uma nova entrada de usuário no banco de dados SASL. O Usuário será sammy aqui, mas você pode substituir esse nome pelo seu próprio usuário. O -f sinalizador especifica o caminho para o banco de dados, que será o caminho que você definir na /etc/sasl2/memcached.conf:

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

Finalmente, dar o memcache de usuário e grupo de propriedade sobre o SASL banco de dados com o seguinte chown comando:

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

agora Você tem um SASL de configuração no lugar que o Memcached pode usar para autenticação. Na próxima seção, você confirmará que o Memcached está sendo executado com suas configurações padrão primeiro e, em seguida, reconfigurá-lo e verificar se ele está funcionando com a autenticação SASL.

configurando o suporte SASL

podemos primeiro testar a conectividade de nossa instância Memcached com o comando memcstat. Essa verificação nos ajudará a estabelecer que o Memcached está em execução e configurado corretamente antes que o SASL e a autenticação do Usuário estejam ativados. Depois de fazer alterações em nossos arquivos de configuração, executaremos o comando novamente para verificar se há saída diferente.

para verificar se o Memcached está instalado e funcionando usando o comando memcstat, digite o seguinte:

  • memcstat --servers="127.0.0.1"

se você estiver usando IPv6, substitua ::1 no lugar do endereço IPv4 127.0.0.1. Se você estiver usando um soquete de domínio Unix, use o caminho para o soquete no lugar do endereço IP, por exemplo --servers=/var/run/memcached/memached.sock.

quando você executa o comando memcstat e se conecta ao Memcached com sucesso, você deve receber saída como a seguinte:

Output
Server: 127.0.0.1 (11211) pid: 2299875 uptime: 2020 time: 1632404590 version: 1.5.22 . . .

Nota: Se você estiver usando Memcached com suporte UDP, o comando memcstat não poderá se conectar à porta UDP. Você pode usar o seguinte netcat comando para verificar a conectividade:

  • nc -u 127.0.0.1 11211 -vz

Se o Memcached é de responder, você deve receber o resultado como o seguinte:

Output
Connection to 127.0.0.1 11211 port succeeded!

Se você estiver usando Memcached com IPv6 e UDP, o comando deve ser o seguinte:

  • nc -6 -u ::1 11211 -vz

Agora você pode mover para a habilitação SASL. Para fazer isso, adicione o parâmetro -S a /etc/memcached.conf. Abra o arquivo com nano ou seu editor preferido novamente:

  • sudo nano /etc/memcached.conf

na parte inferior do arquivo, adicione o seguinte:

/etc/memcached.conf
. . .-S

em seguida, encontre e descomente a opção -vv, que fornecerá saída detalhada para /var/log/memcached. A linha não comentada deve ser assim:

/ etc / memcached.conf
. . .-vv

Salve e feche o arquivo.

Agora reinicie o serviço Memcached usando o seguinte systemctl comando:

  • sudo systemctl restart memcached

em seguida, verifique a journalctl logs para o Memcached para ter certeza de que está activado o suporte a SASL:

  • sudo journalctl -u memcached |grep SASL

Você deve receber uma linha de saída como a seguinte, indicando que SASL apoio tem sido inicializado:

Output
Sep 23 17:00:55 memcached systemd-memcached-wrapper: Initialized SASL.

Agora você pode verificar a conectividade com Memcached novamente. Com o suporte SASL instalado e inicializado, o seguinte comando memcstat deve falhar sem credenciais de autenticação válidas:

  • memcstat --servers="127.0.0.1"

o comando não deve produzir saída. Digite o seguinte comando shell para verificar seu status:

  • echo $?

$? sempre retornará o código de saída do último comando que saiu. Normalmente, qualquer coisa além de 0 indica falha do processo. Nesse caso, você deve receber um status de saída de 1, o que indica que o comando memcstat falhou.

executando memcstat novamente, desta vez com um nome de usuário e senha confirmará se o processo de autenticação funcionou ou não. Execute o seguinte comando com suas credenciais substituído no lugar do sammy e your_password` valores, se você usou diferentes credenciais:

  • memcstat --servers="127.0.0.1" --username=sammy --password=your_password

Você deve receber o resultado como o seguinte:

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

O Memcached serviço já está configurado e em execução, com suporte a SASL e autenticação de usuário.

Etapa 4-permitir o acesso pela Rede Privada (opcional)

por padrão, o Memcached é configurado apenas para ouvir na interface loopback local (127.0.0.1), que protege a interface Memcached da exposição a terceiros. No entanto, pode haver casos em que você precisará permitir o acesso de outros servidores. Nesse caso, você pode ajustar suas configurações para vincular o Memcached a uma interface de rede privada.

Nota: Abordaremos como configurar as configurações de firewall usando UFW nesta seção, mas também é possível usar firewalls DigitalOcean Cloud para criar essas configurações. Para obter mais informações sobre como configurar Firewalls DigitalOcean Cloud, consulte nossa introdução aos Firewalls DigitalOcean Cloud. Para saber mais sobre como limitar o tráfego de entrada para máquinas específicas, confira a seção deste tutorial sobre como aplicar regras de firewall usando tags e nomes de servidores e nossa discussão sobre tags de firewall.

limitar o acesso IP com Firewalls

Antes de ajustar suas configurações, é uma boa ideia configurar regras de firewall para limitar as máquinas que podem se conectar ao seu servidor Memcached. Primeiro, você precisará gravar o endereço IP privado de qualquer máquina que você gostaria de usar para se conectar ao Memcached. Depois de ter o endereço IP privado (ou endereços), você adicionará uma regra de firewall explícita para permitir que a máquina acesse o Memcached.

Se você estiver usando o firewall UFW, você pode limitar o acesso à sua instância do Memcached, digitando o seguinte no seu servidor Memcached:

  • sudo ufw allow from client_system_private_IP/32 to any port 11211

Se mais do que um sistema está a aceder a Memcached via rede privada, certifique-se de adicionar ufw regras de cada máquina, utilizando a regra acima como um modelo.

você pode descobrir mais sobre firewalls UFW lendo nosso guia UFW essentials.

com essas alterações em vigor, você pode ajustar o serviço Memcached para se ligar à interface de rede privada do seu servidor.

vinculando Memcached à interface de Rede Privada

agora que seu firewall está no lugar, você pode ajustar a configuração Memcached para se ligar à interface de rede privada do seu servidor em vez de 127.0.0.1.

Primeiro, encontrar a interface de rede privada para o servidor Memcached usando o seguinte ip comando

  • ip -brief address show

Dependendo do seu servidor de configuração de rede, a saída pode ser diferente do exemplo a seguir:

Output
lo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 203.0.113.1/20 10.10.0.5/16 2001:DB8::1/64 fe80::7ced:9ff:fe52:4695/64eth1 UP 10.136.32.212/16 fe80::2cee:92ff:fe21:8bc4/64

neste exemplo, as interfaces de rede são identificados pelo seu eth0 e eth1 nomes. Os endereços IPv4 destacados na linha eth0 são os endereços IP públicos para o servidor.

o endereço destacado 10.136.32.212 na linha eth1 é o endereço IPv4 privado para o servidor e o endereço fe80::2cee:92ff:fe21:8bc4 é o endereço privado IPv6. Os endereços IP serão diferentes, mas sempre caem dentro das seguintes faixas de acordo com a RFC 1918 especificação):

  • 10.0.0.0 para 10.255.255.255 (10/8 prefixo)
  • 172.16.0.0 para 172.31.255.255 (172.16/12 prefixo)
  • 192.168.0.0 para 192.168.255.255 (192.168/16 prefixo)

uma Vez que você tenha encontrado o seu servidor privado de endereço ou endereços IP, abra o /etc/memcached.conf arquivo novamente usando nano ou o seu editor preferido:

  • sudo nano /etc/memcached.conf

Localizar o -l 127.0.0.1 linha que você verificados ou modificados anterior e alterar o endereço para correspondência do seu servidor privado de interface de rede:

/etc/memcached.conf
. . .-l memcached_servers_private_IP. . .

se você gostaria de ter Memcached ouvir em vários endereços, adicione outra linha semelhante para cada endereço, IPv4 ou IPv6 usando o formato -l memcached_servers_private_IP.

Salve e feche o arquivo quando terminar.

em seguida, reinicie o serviço Memcached:

  • sudo systemctl restart memcached

Verifique se o seu novo configurações com ss para confirmar a alteração:

  • sudo ss -plunt
Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process. . .tcp LISTEN 0 1024 10.137.0.2:11211 0.0.0.0:* users:(("memcached",pid=8991,fd=27)). . .

Testar a conectividade do seu cliente externo para garantir que você ainda pode chegar a serviço. É uma boa ideia também verificar o acesso de um cliente não autorizado (tente se conectar sem um usuário e senha) para garantir que sua autenticação SASL esteja funcionando conforme o esperado. Também é uma boa ideia tentar se conectar ao Memcached de um servidor diferente que não tem permissão para se conectar para verificar se as regras de firewall criadas são eficazes.

conclusão

neste tutorial, você explorou como configurar o Memcached com soquetes de domínio IPv4, IPv6, TCP, UDP e Unix. Você também aprendeu a proteger seu servidor Memcached ativando a autenticação SASL. Finalmente, você aprendeu como vincular o Memcached à sua interface de rede local ou privada e como configurar regras de firewall para limitar o acesso ao Memcached.

para saber mais sobre o Memcached, confira a documentação do projeto.

Write a Comment

O seu endereço de email não será publicado.