Uma versão anterior deste tutorial foi escrito por Kathleen Juell.
- introdução
- pré-requisitos
- Passo 1-Instalando Memcached
- Passo 2-Configurando as configurações de rede Memcached (opcional)
- Configurar o IPv6
- configurando UDP
- configurando soquetes de domínio Unix
- Passo 3-adicionando usuários autorizados
- adicionando um usuário autenticado
- configurando o suporte SASL
- Etapa 4-permitir o acesso pela Rede Privada (opcional)
- limitar o acesso IP com Firewalls
- vinculando Memcached à interface de Rede Privada
- conclusão
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.
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:
OutputNetid 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:
. . .-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:
. . .-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:
OutputNetid 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:
. . .-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:
. . .-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:
Outputu_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:
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:
OutputServer: 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:
OutputConnection 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:
. . .-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:
. . .-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:
OutputSep 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:
OutputServer: 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:
Outputlo 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
para10.255.255.255
(10/8 prefixo) -
172.16.0.0
para172.31.255.255
(172.16/12 prefixo) -
192.168.0.0
para192.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:
. . .-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
OutputNetid 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.