Ir para o conteúdo

Como posso rastrear tentativas malsucedidas de fazer login na minha instância de banco de dados do Amazon RDS para PostgreSQL?

3 minuto de leitura
0

Quero rastrear o número de conexões malsucedidas na minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para PostgreSQL.

Resolução

O PostgreSQL gera novos arquivos de log a cada hora. Para rastrear tentativas malsucedidas de fazer login em uma instância de banco de dados que executa o PostgreSQL, ative o parâmetro log_connections. O parâmetro é encontrado no grupo de parâmetros personalizados associado à instância de banco de dados. Então, se um usuário tentar fazer login na sua instância de banco de dados com as credenciais erradas, as tentativas malsucedidas serão registradas no log. As tentativas malsucedidas são semelhantes ao exemplo a seguir: "error/postgresql.log.2018-04-19-10." Para obter mais informações, consulte Trabalhar com grupos de parâmetros.

Veja o exemplo a seguir de uma tentativa malsucedida de login:

2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"

Também é possível usar o parâmetro log_connections do PostgreSQL para registrar tentativas de login bem-sucedidas em uma instância de banco de dados que esteja executando o PostgreSQL.

Veja o exemplo a seguir de uma tentativa bem-sucedida de login:

2018-04-19 10:19:20 UTC:123.45.67.8(6789):[unknown]@[unknown]:[17196]:LOG: connection received: host=123.45.67.8 port=12345
2018-04-19 10:19:20 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: connection authorized: user=test_user database=Test_DB SSL enabled (protocol=xxxx, cipher=xxxx, compression=off)

Use os parâmetros log_connections e log_disconnections para registrar a duração da sessão de um usuário.

Veja o exemplo a seguir para saber a duração de uma sessão:

2018-04-19 10:19:43 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: disconnection: session time: 0:00:23.753 user=test_user database=Test_DB host=123.45.67.8 port=12345

Observação: o endereço IP da máquina cliente é 123.45.67.8 e 6789 é o PID (ID do processo) fornecido ao processo do banco de dados do PostgreSQL.

Analisar o arquivo de log

Use a AWS Command Line Interface (AWS CLI) ou o console do Amazon Aurora e do RDS para fazer download do log. Em seguida, use o utilitário grep para pesquisar as conexões malsucedidas:

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.

$ grep -B 1 "authentication failed" postgresql.log.2018-04-19-10
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"

Observação: o parâmetro - B 1 diz ao grep que também mostre a linha que precede as linhas que correspondem ao padrão que você está procurando. Neste exemplo, o padrão é falha na autenticação.

Também é possível usar a extensão log_fdw do PostgreSQL para acessar esses logs como tabelas estrangeiras. Se você quiser manter os arquivos de log do PostgreSQL por mais tempo do que o período de retenção, publique os logs do Amazon RDS para PostgreSQL nos Amazon CloudWatch Logs.

Informações relacionadas

Como faço para ativar o registro em log de consultas para minhas instâncias de banco de dados do Amazon RDS para PostgreSQL?

Arquivos de log do banco de dados RDS para PostgreSQL

Exportar dados de log para o Amazon S3

Publicar logs do Aurora PostgreSQL no Amazon CloudWatch Logs

AWS OFICIALAtualizada há 3 anos