Base de Conhecimento
Como configurar os relatórios MTA-STS e TLS para o seu domínio usando o Apache no Ubuntu 18.04 Imprimir este Artigo
Introdução
O MTA-STS (Security Strict Transport Security) do Mail Transport Agent é um novo padrão da Internet que permite ativar o TLS forçado estrito para emails enviados entre provedores de email compatíveis. É semelhante ao HSTS (HTTP Strict Transport Security) , onde uma política force-TLS é definida e armazenada em cache por um período de tempo especificado, reduzindo o risco de ataques intermediários ou de downgrade.
O MTA-STS é complementado pelo SMTP TLS Reporting (TLSRPT), que fornece informações sobre quais emails são entregues com sucesso por TLS e quais não. TLSRPT é semelhante ao relatório DMARC , mas para TLS.
O principal motivo para implementar o MTA-STS para o seu domínio é garantir que o email confidencial enviado a você seja transmitido com segurança pelo TLS. Outros métodos para incentivar o TLS para comunicações por email, como o STARTTLS, ainda são suscetíveis a ataques intermediários, pois a conexão inicial não é criptografada. O MTA-STS ajuda a garantir que, uma vez estabelecida pelo menos uma conexão segura, o TLS seja usado por padrão a partir daí, o que reduz bastante o risco desses ataques.
Um exemplo de caso de uso para os relatórios MTA-STS e TLS é ajudar a criar um sistema seguro de atendimento ao cliente para o seu negócio. Os clientes podem enviar tíquetes de suporte por e-mail que contêm informações pessoais confidenciais, que precisam de uma conexão TLS segura. O MTA-STS ajuda a garantir a segurança da conexão e o TLSRPT fornece relatórios diários identificando todos os emails que não foram enviados com segurança - fornecendo informações cruciais sobre quaisquer ataques em andamento ou anteriores ao seu sistema de email.
Neste tutorial, você aprenderá como configurar o MTA-STS e o TLSRPT para o seu nome de domínio e depois interpretar o seu primeiro relatório TLS. Embora este tutorial cubra as etapas para o uso do Apache no Ubuntu 18.04 com um certificado Let's Encrypt, a configuração do MTA-STS / TLSRPT também funcionará em alternativas, como o Nginx no Debian.
Pré-requisitos
Antes de começar este guia, você precisará de:
-
Um nome de domínio já configurado para receber email, usando seu próprio servidor de email ou um serviço de email hospedado, como G Suite ou Office 365 . Este tutorial será usado por
your-domain
toda parte, no entanto, este deve ser substituído por seu próprio nome de domínio. Você precisará configurar um subdomínio como parte do tutorial, para garantir que você possa acessar as configurações de DNS do seu domínio. -
Um servidor Ubuntu 18.04 configurado seguindo a Configuração inicial do servidor com o Ubuntu 18.04 , incluindo um usuário sudo não root.
-
Um servidor web Apache foi instalado e configurado, seguindo Como instalar o servidor web Apache no Ubuntu 18.04 .
-
Um cliente Certbot configurado para adquirir um certificado Let's Encrypt, seguindo Como proteger o Apache com Let's Encrypt no Ubuntu 18.04 .
Depois de prepará-los, efetue login no servidor como usuário não root para começar.
Nota: Depois de concluir as etapas de implementação do MTA-STS e TLSRPT, talvez seja necessário esperar até 24 horas para receber seu primeiro relatório TLS. Isso ocorre porque a maioria dos provedores de email envia relatórios uma vez por dia. Você pode retomar o tutorial da Etapa 5 depois de receber seu primeiro relatório.
Etapa 1 - Criando um arquivo de diretiva MTA-STS
O MTA-STS é ativado e configurado usando um arquivo de configuração de texto sem formatação que você hospeda no seu site. Os servidores de email suportados serão conectados automaticamente ao seu site para recuperar o arquivo, o que faz com que o MTA-STS seja ativado. Nesta primeira etapa, você entenderá as opções disponíveis para esse arquivo e escolherá as mais adequadas para ele.
Primeiro, abra um novo arquivo de texto em seu diretório pessoal para que você tenha um lugar para anotar a configuração desejada:
- nano mta-sts.txt
Primeiro, examinaremos um exemplo e, em seguida, você escreverá seu próprio arquivo de configuração.
A seguir, é apresentado um exemplo de um arquivo de configuração do MTA-STS:
version: STSv1
mode: enforce
mx: mail1.your-domain
mx: mail2.your-domain
max_age: 604800
Este arquivo de configuração de exemplo especifica que todos os emails entregues para e de provedores suportados devem ser entregues por uma conexão TLS válida. Se uma conexão TLS válida não puder ser estabelecida com o servidor de correio (por exemplo, se o certificado expirou ou é autoassinado), o email não será entregue.mail1.your-domain
mail2.your-domain
Isso tornará muito mais desafiador para um invasor interceptar e bisbilhotar / modificar seu email em uma situação como um ataque man-in-the-middle. Isso ocorre porque o MTA-STS ativado corretamente permite que o email seja transmitido apenas por uma conexão TLS válida, o que requer um certificado TLS válido. Seria difícil para um invasor adquirir esse certificado, pois isso geralmente requer acesso privilegiado ao seu nome de domínio e / ou site.
Conforme mostrado no exemplo anterior nesta etapa, o arquivo de configuração consiste em vários pares de chave / valor:
-
version
:- Objetivo : especificar a versão da especificação MTA-STS a ser usada.
- Valores aceitos : Atualmente, o único valor aceito é
STSv1
. - Exemplo :
version: STSv1
-
mode
:- Objetivo : especifique em que modo o MTA-STS deve ser ativado.
- Valores aceitos :
enforce
: Force todos os emails recebidos de provedores suportados a usar TLS válido.testing
: Modo somente relatório. o email não será bloqueado, mas os relatórios TLSRPT ainda serão enviados.none
: Desative o MTA-STS.
- Exemplo :
mode: enforce
-
mx
:- Objetivo : especificar quais servidores de email têm permissão para manipular emails do seu domínio. Isso deve corresponder aos servidores especificados em seus
mx
registros. - Valores aceitos : nome de domínio totalmente qualificado de um servidor de email ou host curinga. Vários
mx:
valores devem ser usados para especificar vários servidores de correio. - Exemplo : , ,
mx: mail1.your-domain
mx: mail2.your-domain
mx: *.example.org
- Objetivo : especificar quais servidores de email têm permissão para manipular emails do seu domínio. Isso deve corresponder aos servidores especificados em seus
-
max_age
:- Objetivo : especificar o tempo de vida máximo da diretiva MTA-STS, em segundos.
- Valores aceitos : qualquer número inteiro positivo até 31557600.
- Exemplo :
max_age: 604800
(1 semana)
Você também pode visualizar a especificação oficial para os pares de chave / valor na Seção 3.2 do RFC do MTA-STS .
Aviso: a ativação do MTA-STS no enforce
modo inesperadamente pode fazer com que alguns emails não sejam entregues a você. Em vez disso, é recomendável usar mode: testing
um max_age:
valor baixo no início, para garantir que tudo esteja funcionando corretamente antes de ativar o MTA-STS completamente.
Usando o arquivo de exemplo anterior na etapa, bem como os exemplos anteriores do par de chave / valor, grave o arquivo de política MTA-STS desejado e salve-o no arquivo que você criou no início da etapa.
O arquivo de exemplo a seguir é ideal para testar o MTA-STS, pois não fará com que nenhum e-mail seja bloqueado inesperadamente e tem max_age
apenas um dia, o que significa que, se você decidir desativá-lo, a configuração expirará rapidamente. Observe que alguns provedores de email enviarão apenas relatórios TLSRPT se o valor max_age
for superior a 1 dia, e é por isso que 86401 segundos é uma boa opção (1 dia e 1 segundo).
version: STSv1
mode: testing
mx: mail1.your-domain
mx: mail2.your-domain
max_age: 86401
Nesta etapa, você criou o arquivo de configuração MTA-STS desejado e o salvou na sua área inicial. Na próxima etapa, você configurará um servidor da web Apache para servir o arquivo no formato correto.
Etapa 2 - Configurando o Apache para servir seu arquivo de políticas MTA-STS
Nesta etapa, você configurará um host virtual Apache para servir o arquivo de configuração do MTA-STS e adicionará um registro DNS para permitir que o site seja acessado a partir de um subdomínio.
Para que o seu arquivo de configuração do MTA-STS a ser descoberto automaticamente pelos servidores de email, ele deve ser servido exatamente no caminho certo: . Você deve usar o subdomínio sobre HTTPS e o caminho, caso contrário, sua configuração não funcionará.https://mta-sts.your-domain/.well-known/mta-sts.txt
mta-sts
/.well-known/mta-sts.txt
Isso pode ser conseguido criando um novo host virtual Apache para o mta-sts
subdomínio, que servirá o arquivo de políticas do MTA-STS. Esta etapa baseia-se na configuração básica que você definiu na etapa de pré-requisito Como instalar o servidor Web Apache no Ubuntu 18.04 .
Primeiro, crie um diretório para o seu host virtual:
- sudo mkdir /var/www/mta-sts
Se você estiver hospedando vários domínios diferentes no servidor da Web, é recomendável usar um host virtual MTA-STS diferente para cada um, por exemplo /var/www/mta-sts-site1
e /var/www/mta-sts-site2
.
Em seguida, você precisa criar o .well-known
diretório, onde é armazenado o arquivo de configuração do MTA-STS. .well-known
é um diretório padronizado para arquivos 'conhecidos', como arquivos de validação de certificado TLS security.txt
e muito mais.
- sudo mkdir /var/www/mta-sts/.well-known
Agora você pode mover o arquivo de políticas MTA-STS que você criou na Etapa 1 para o diretório do servidor web que você acabou de criar:
- sudo mv ~/mta-sts.txt /var/www/mta-sts/.well-known/mta-sts.txt
Você pode verificar se o arquivo foi copiado corretamente, se desejar:
- cat /var/www/mta-sts/.well-known/mta-sts.txt
Isso exibirá o conteúdo do arquivo que você criou na Etapa 1.
Para que o Apache sirva o arquivo, você precisará configurar o novo host virtual e ativá-lo. O MTA-STS funciona apenas em HTTPS, portanto, você usará a porta 443
(HTTPS) exclusivamente, em vez de usar a porta 80
(HTTP) também.
Primeiro, crie um novo arquivo de configuração do host virtual:
- sudo nano /etc/apache2/sites-available/mta-sts.conf
Como no diretório do host virtual, se você estiver hospedando vários domínios diferentes no mesmo servidor da Web, é recomendável usar um nome de host virtual diferente para cada um.
Em seguida, copie a seguinte configuração de amostra no arquivo e preencha as variáveis onde necessário:
<IfModule mod_ssl.c>
<VirtualHost your-server-ipv4-address:443 [your-server-ipv6-address]:443>
ServerName mta-sts.your-domain
DocumentRoot /var/www/mta-sts
ErrorDocument 403 "403 Forbidden - This site is used to specify the MTA-STS policy for this domain, please see '/.well-known/mta-sts.txt'. If you were not expecting to see this, please use <a href=\"https://your-domain\" rel=\"noopener\">https://your-domain</a> instead."
RewriteEngine On
RewriteOptions IgnoreInherit
RewriteRule !^/.well-known/mta-sts.txt - [L,R=403]
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Essa configuração criará o mta-sts
host virtual, que será servido em . Ele também redirecionará todas as solicitações, exceto aquelas para o próprio arquivo, para uma página de erro personalizada , com uma explicação amigável sobre para que serve o site de subdomínio. Isso ajuda a garantir que todos os visitantes que encontrarem acidentalmente seu site MTA-STS não sejam confundidos inadvertidamente.mta-sts.your-domain
mta-sts.txt
403 Forbidden
Atualmente, um certificado TLS autoassinado é usado. Isso não é ideal, pois é necessário um certificado totalmente válido / confiável para o MTA-STS funcionar corretamente. Na etapa 3, você adquirirá um certificado TLS usando o Let's Encrypt.
Em seguida, verifique se os módulos Apache necessários estão ativados:
- sudo a2enmod rewrite ssl
Depois disso, ative o novo host virtual:
- sudo a2ensite mta-sts
Em seguida, execute uma verificação de sintaxe dos arquivos de configuração do Apache, para garantir que não haja erros inesperados:
- sudo apachectl configtest
Quando o teste passa sem erros, você pode reiniciar o Apache para ativar totalmente o novo host virtual:
- sudo service apache2 restart
Agora que o host virtual do Apache foi instalado e configurado, é necessário criar o (s) registro (s) DNS necessário (s) para permitir que ele seja acessado usando o nome de domínio completo .mta-sts.your-domain
A maneira como isso é feito depende do provedor de hospedagem DNS que você usa. No entanto, se você usar o DigitalOcean como seu provedor de DNS, simplesmente navegue até o seu projeto, seguido de seu domínio.
Por fim, adicione os registros DNS necessários para o mta-sts
subdomínio. Se o seu Droplet usa apenas IPv4, crie um A
registro para mta-sts
, apontando para o seu endereço-servidor-ipv4 . Se você também usa o IPv6, crie um AAAA
registro apontando para o seu endereço-servidor-ipv6 .
Nesta etapa, você criou e configurou um novo host virtual Apache para o subdomínio MTA-STS e adicionou os registros DNS necessários para permitir que ele seja acessado facilmente. Na próxima etapa, você adquirirá um certificado Let's Encrypt criptografado confiável para o seu subdomínio MTA-STS.
Etapa 3 - Adquirir um certificado Vamos criptografar para seu subdomínio MTA-STS
Nesta etapa, você adquirirá um certificado TLS da Let's Encrypt, para permitir que seu site seja veiculado corretamente por HTTPS.mta-sts.your-domain
Para fazer isso, você usará o certbot
que você configurou como parte da etapa de pré-requisito Como proteger o Apache com o Let's Encrypt no Ubuntu 18.04 .
Primeiramente, execute certbot
para emitir um certificado para o seu mta-sts
subdomínio usando o método de verificação do plugin Apache:
- sudo certbot --apache -d mta-sts.your-domain
Isso emitirá automaticamente um certificado confiável e o instalará no servidor da web Apache. Quando o assistente do Certbot perguntar sobre a configuração de um redirecionamento HTTP -> HTTPS, selecione 'Não', pois isso não é necessário para o MTA-STS.
Para finalizar, teste seu novo host virtual para garantir que ele esteja funcionando corretamente. Use um navegador da Web para visitar ou use uma ferramenta de linha de comando como :https://mta-sts.your-domain/.well-known/mta-sts.txt
curl
- curl https://mta-sts.your-domain/.well-known/mta-sts.txt
Isso produzirá o arquivo de política MTA-STS que você criou na Etapa 1:
version: STSv1
mode: testing
mx: mail1.your-domain
mx: mail2.your-domain
max_age: 86401
Se ocorrer um erro, verifique se a configuração do host virtual da Etapa 2 está correta e se você adicionou um registro DNS para o mta-sts
subdomínio.
Nesta etapa, você emitiu um certificado Let's Encrypt TLS para o seu mta-sts
subdomínio e testou se está funcionando. Em seguida, você definirá alguns registros DNS TXT para ativar completamente o MTA-STS e TLSRPT.
Etapa 4 - Configurando os registros DNS necessários para ativar o MTA-STS e TLSRPT
Nesta etapa, você configurará dois registros TXT DNS, que habilitarão totalmente a diretiva MTA-STS que você já criou e também habilitarão o TLS Reporting (TLSRPT).
Esses registros DNS podem ser configurados usando qualquer provedor de hospedagem DNS, mas neste exemplo, o DigitalOcean é usado como provedor.
Primeiro, faça logon no painel de controle do DigitalOcean e navegue até o seu projeto, seguido de um clique no seu domínio.
Você precisa adicionar os dois registros TXT a seguir:
_mta-sts.your-domain IN TXT "v=STSv1; id=id-value"
_smtp._tls.your-domain IN TXT "v=TLSRPTv1; rua=reporting-address"
id-value
é uma sequência usada para identificar a versão da sua política MTA-STS em vigor. Se você atualizar sua política, precisará também atualizar o id
valor para garantir que a nova versão seja detectada pelos provedores de email. Recomenda-se usar o carimbo de data atual como id
, por exemplo 20190811231231
(23:12:31 em 11 de agosto de 2019).
reporting-address
é o endereço para onde seus relatórios TLS serão enviados. Pode ser um endereço de email prefixado mailto:
ou um URI da web, por exemplo, para uma API que coleta relatórios. O endereço do relatório não precisa ser um endereço your-domain
. Você pode usar um domínio completamente diferente, se desejar.
Por exemplo, os dois registros de amostra a seguir são válidos:
_mta-sts.your-domain IN TXT "v=STSv1; id=20190811231231"
_smtp._tls.your-domain IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@your-domain"
Ajuste as variáveis conforme necessário e defina esses registros DNS TXT no painel de controle do DigitalOcean (ou qualquer provedor DNS que você esteja usando):
Depois que esses registros DNS forem definidos e propagados, o MTA-STS será ativado com a política que você criou na Etapa 1 e começará a receber relatórios TLSRPT no endereço que você especificou.
Nesta etapa, você configurou os registros DNS necessários para que o MTA-STS seja ativado. Em seguida, você receberá e interpretará seu primeiro relatório TLSRPT.
Etapa 5 - Interpretando seu primeiro relatório TLSRPT
Agora que você ativou o MTA-STS e o TLSRPT (TLS Reporting) para o seu domínio, começará a receber relatórios de provedores de email compatíveis. Esses relatórios mostrarão o número de e-mails que foram ou não foram entregues com êxito pelo TLS e os motivos dos erros.
Diferentes provedores de email enviam seus relatórios em momentos diferentes; por exemplo, o Google Mail envia seus relatórios diariamente por volta das 10:00 UTC.
Dependendo de como você configurou o registro DNS TLSRPT na Etapa 5, você receberá seus relatórios por email ou por uma API da web. Este tutorial se concentra no método de email, pois essa é a configuração mais comum.
Se você acabou de concluir o restante deste tutorial, aguarde até receber seu primeiro relatório e poderá continuar.
Seu relatório diário do TLSRPT por e-mail geralmente possui uma linha de assunto semelhante à seguinte:
Report Domain: your-domain Submitter: google.com Report-ID: <2019.08.10T00.00.00Z+your-domain@google.com>
Este email terá um anexo em .gz
formato, que é um arquivo compactado Gzip, com um nome de arquivo semelhante ao seguinte:
google.com!your-domain!1565222400!1565308799!001.json.gz
Para o restante deste tutorial, este arquivo será referido como report.json.gz
.
Salve esse arquivo na sua máquina local e extraia-o usando a ferramenta que você preferir.
Se você estiver usando um sistema Linux baseado no Debian, poderá executar o gzip -d
comando para descompactar o arquivo:
- gzip -d report.json.gz
Isso resultará em um arquivo JSON chamado report.json
.
Em seguida, você pode visualizar o relatório diretamente como a sequência JSON bruta ou usar seu pré-modificador JSON favorito para colocá-lo em um formato mais legível. Neste exemplo, jq
será usado, mas você também pode usar o Python, json.tool
se desejar.
Nota: Se você não tiver o jq instalado, poderá instalá-lo usando apt install jq
. Ou, para outros sistemas operacionais, use as instruções de instalação necessárias da jq.
- jq . report.json
Isso produzirá algo semelhante ao seguinte:
{
"organization-name": "Google Inc.",
"date-range": {
"start-datetime": "2019-08-10T00:00:00Z",
"end-datetime": "2019-08-10T23:59:59Z"
},
"contact-info": "[email protected]",
"report-id": "2019-08-10T00:00:00Z_your-domain",
"policies": [
{
"policy": {
"policy-type": "sts",
"policy-string": [
"version: STSv1",
"mode: testing",
"mx: mail1.your-domain",
"mx: mail2.your-domain",
"max_age: 86401"
],
"policy-domain": "your-domain"
},
"summary": {
"total-successful-session-count": 230,
"total-failure-session-count": 0
}
}
]
}
O relatório mostra o provedor que gerou o relatório e o período do relatório, bem como a política MTA-STS que foi aplicada. No entanto, a seção principal em que você estará interessado é summary
, especificamente, as contagens de sessões bem-sucedidas e com falha.
Este relatório de amostra mostra que 230 emails foram entregues com êxito por TLS do provedor de email que gerou o relatório e 0 entregas de email falharam ao estabelecer uma conexão TLS adequada.
Caso haja uma falha - por exemplo, se um certificado TLS expirar ou houver um invasor na rede - o modo de falha será documentado no relatório. Alguns exemplos de modos de falha são:
starttls-not-supported
: Se o servidor de recebimento de email não suportar STARTTLS.certificate-expired
: Se um certificado expirou.certificate-not-trusted
: Se um certificado autoassinado ou outro certificado não confiável for usado.
Nesta etapa final, você recebeu e interpretou seu primeiro relatório TLSRPT.
Conclusão
Neste artigo, você definiu e configurou os relatórios MTA-STS e TLS para o seu domínio e interpretou o seu primeiro relatório TLSRPT.
Depois que o MTA-STS estiver habilitado e funcionando de forma estável por um tempo, é recomendável ajustar a política, aumentar o max_age
valor e, eventualmente, alternar para o enforce
modo quando tiver certeza de que todos os emails dos provedores suportados estão sendo entregues com êxito por TLS.
Esta resposta lhe foi útil?
Veja também
Introdução O uso de loops no Go permite automatizar e repetir tarefas de maneira eficiente....
Introdução Uma grande quantidade de dados gerados hoje não é estruturada , o que requer...
Introdução Uma função é uma seção de código que, uma vez definida, pode ser reutilizada. As...
Introdução No Python, como em todas as linguagens de programação, os tipos de dados são usados...
Introdução Uma função variável é uma função que aceita zero, um ou mais valores como um único...