Vazamento de credenciais SMTP do Amazon EC2 SES: como resolver isso

PHP and Shell

Protegendo suas credenciais SMTP do SES no EC2

Garantir a segurança de suas credenciais SMTP do SES é crucial, principalmente ao usar webmail cPanel (Exim) e PHP para enviar emails. Recentemente, houve vários casos de vazamento dessas credenciais, resultando no envio de e-mails de spam não autorizados do e-mail do seu domínio principal.

Este artigo discute as possíveis vulnerabilidades e oferece etapas práticas para proteger suas credenciais SMTP do SES em uma instância do Amazon EC2 executando o Rocky 9. Ao compreender os riscos e implementar as medidas de segurança sugeridas, você pode proteger seu sistema de e-mail contra futuras violações.

Comando Descrição
openssl_encrypt() Criptografa dados usando a cifra e a chave especificadas. Usado para armazenar credenciais SMTP com segurança.
openssl_decrypt() Descriptografa dados que foram criptografados anteriormente. Usado para recuperar as credenciais SMTP originais.
file_get_contents() Lê o arquivo inteiro em uma string. Usado para carregar a chave de criptografia de um local seguro.
file_put_contents() Grava dados em um arquivo. Usado para armazenar credenciais SMTP criptografadas com segurança.
PHPMailer\PHPMailer\PHPMailer Uma classe da biblioteca PHPMailer usada para enviar e-mails via SMTP em PHP.
sed -i "s/command" Comando do editor de fluxo para modificar arquivos no local. Usado para atualizar a configuração do Exim com credenciais descriptografadas.
systemctl restart Reinicia um serviço do sistema. Usado para reiniciar o serviço Exim após atualizar sua configuração.

Compreendendo a solução para vazamento de credenciais SMTP do SES

Os scripts fornecidos são projetados para proteger e gerenciar credenciais SMTP do SES para evitar acesso não autorizado e uso indevido. O primeiro script PHP demonstra como criptografar credenciais SMTP usando o função, que garante que informações confidenciais sejam armazenadas com segurança. As credenciais são criptografadas com uma chave segura e armazenadas em um arquivo, protegendo-as contra acesso não autorizado. O e funções são usadas para ler a chave de criptografia e armazenar as credenciais criptografadas, respectivamente. Este método garante que, mesmo que alguém obtenha acesso ao arquivo armazenado, não poderá ler as credenciais sem a chave de criptografia.

O segundo script PHP concentra-se em descriptografar e usar credenciais SMTP criptografadas para enviar e-mails. Ele usa o função para descriptografar as credenciais, disponibilizando-as para uso no processo de envio de e-mail. O script se integra ao PHPMailer para enviar e-mails por meio de credenciais SMTP descriptografadas. O uso do PHPMailer simplifica o processo de configuração e envio de e-mails com segurança. Além disso, o script shell foi projetado para atualizar a configuração do Exim com as credenciais descriptografadas. Ele usa o comando para modificar o arquivo de configuração do Exim e o comando para reiniciar o serviço Exim, garantindo que a nova configuração seja aplicada imediatamente.

Proteja suas credenciais SMTP SES em PHP

Script PHP para criptografar e armazenar credenciais SMTP

//php
// Load encryption key from a secure location
$encryption_key = file_get_contents('/path/to/secure/key');
// SMTP credentials
$smtp_user = 'your_smtp_user';
$smtp_pass = 'your_smtp_password';
// Encrypt credentials
$encrypted_user = openssl_encrypt($smtp_user, 'aes-256-cbc', $encryption_key, 0, $iv);
$encrypted_pass = openssl_encrypt($smtp_pass, 'aes-256-cbc', $encryption_key, 0, $iv);
// Store encrypted credentials in a file
file_put_contents('/path/to/secure/credentials', $encrypted_user . "\n" . $encrypted_pass);
//

Descriptografar e usar credenciais SMTP SES em PHP

Script PHP para descriptografar e usar credenciais SMTP

//php
// Load encryption key and credentials from secure location
$encryption_key = file_get_contents('/path/to/secure/key');
$credentials = file('/path/to/secure/credentials');
$encrypted_user = trim($credentials[0]);
$encrypted_pass = trim($credentials[1]);
// Decrypt credentials
$smtp_user = openssl_decrypt($encrypted_user, 'aes-256-cbc', $encryption_key, 0, $iv);
$smtp_pass = openssl_decrypt($encrypted_pass, 'aes-256-cbc', $encryption_key, 0, $iv);
// Use decrypted credentials to send email
// Example using PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'email-smtp.us-east-1.amazonaws.com';
$mail->SMTPAuth = true;
$mail->Username = $smtp_user;
$mail->Password = $smtp_pass;
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
// ... additional email setup ...
//

Atualize a configuração do Exim para usar credenciais criptografadas

Shell Script para atualizar a configuração do Exim

#!/bin/bash
# Load encryption key and credentials from secure location
encryption_key=$(cat /path/to/secure/key)
credentials=$(cat /path/to/secure/credentials)
encrypted_user=$(echo "$credentials" | head -n 1)
encrypted_pass=$(echo "$credentials" | tail -n 1)
# Decrypt credentials
smtp_user=$(echo "$encrypted_user" | openssl enc -aes-256-cbc -d -a -A -k "$encryption_key")
smtp_pass=$(echo "$encrypted_pass" | openssl enc -aes-256-cbc -d -a -A -k "$encryption_key")
# Update Exim configuration
sed -i "s/smtp_user = .*/smtp_user = $smtp_user/" /etc/exim/exim.conf
sed -i "s/smtp_pass = .*/smtp_pass = $smtp_pass/" /etc/exim/exim.conf
# Restart Exim service
systemctl restart exim

Aprimorando a segurança de e-mail no EC2 com SES

Além de criptografar e armazenar com segurança as credenciais SMTP, é importante implementar uma estratégia de segurança abrangente para o seu sistema de e-mail. Uma medida eficaz é utilizar grupos de segurança do Amazon EC2 para restringir o acesso às portas SMTP. Ao limitar o acesso a endereços ou intervalos IP específicos, você pode reduzir o risco de acesso não autorizado. Além disso, alternar regularmente suas credenciais SMTP do SES pode mitigar o impacto de possíveis vazamentos.

Outro aspecto crucial é habilitar o registro e o monitoramento em sua instância EC2 e conta SES. A implementação do AWS CloudTrail e do Amazon CloudWatch pode ajudá-lo a rastrear e analisar quaisquer atividades suspeitas relacionadas ao seu sistema de e-mail. Essa abordagem proativa permite identificar e responder prontamente a incidentes de segurança, mantendo assim a integridade e a segurança de suas comunicações por e-mail.

  1. Como posso restringir o acesso às minhas portas SMTP no EC2?
  2. Use grupos de segurança do Amazon EC2 para permitir que apenas endereços IP ou intervalos específicos acessem suas portas SMTP.
  3. Qual é a vantagem de criptografar credenciais SMTP?
  4. A criptografia de credenciais SMTP garante que, mesmo que ocorra acesso não autorizado, as credenciais não possam ser facilmente lidas ou usadas.
  5. Com que frequência devo alternar minhas credenciais SMTP do SES?
  6. É recomendável alternar suas credenciais SMTP do SES a cada 90 dias ou imediatamente se você suspeitar de um vazamento.
  7. Quais ferramentas posso usar para monitorar meu sistema de e-mail em busca de atividades suspeitas?
  8. Utilizar e para monitorar e analisar atividades relacionadas ao seu sistema de e-mail.
  9. Como posso armazenar com segurança minha chave de criptografia?
  10. Armazene sua chave de criptografia em um local seguro, como o AWS Secrets Manager ou um módulo de segurança de hardware (HSM).
  11. Por que devo usar o PHPMailer para enviar e-mails?
  12. PHPMailer fornece uma interface robusta e fácil de usar para enviar e-mails com segurança via SMTP.
  13. Que etapas devo seguir se minhas credenciais SMTP vazarem?
  14. Revogue imediatamente as credenciais vazadas, emita novas e investigue a causa do vazamento para evitar incidentes futuros.
  15. Como posso automatizar a atualização da configuração do Exim com novas credenciais?
  16. Use um script de shell com comandos para atualizar o arquivo de configuração Exim e para aplicar as alterações.

Manter a segurança de suas credenciais SMTP do SES é crucial para evitar acesso não autorizado e uso indevido. Ao criptografar credenciais e restringir o acesso por meio de grupos de segurança, você pode reduzir significativamente as vulnerabilidades. Além disso, alternar regularmente suas credenciais e monitorar a atividade do sistema pode ajudar a detectar e prevenir violações de segurança. A implementação dessas práticas garante um sistema de comunicação por e-mail mais seguro e ajuda a proteger a reputação do seu domínio.