¿Cómo puedo realizar un seguimiento de los intentos fallidos de inicio de sesión en mi instancia de base de datos de Amazon RDS para PostgreSQL?

3 minutos de lectura
0

Quiero hacer un seguimiento del número de conexiones fallidas a mi instancia de base de datos Amazon Relational Database Service (Amazon RDS) para PostgreSQL.

Resolución

PostgreSQL genera nuevos archivos de registro cada hora. Para realizar un seguimiento de los intentos fallidos de inicio de sesión en una instancia de base de datos que ejecuta PostgreSQL, active el parámetro log\ _connections. El parámetro se encuentra en el grupo de parámetros personalizados asociado a la instancia de base de datos. Si un usuario intenta iniciar sesión en la instancia de base de datos con credenciales incorrectas, los intentos con errores se graban en el registro. Los intentos fallidos son similares a los del ejemplo siguiente: «error/postgresql.log.2018-04-19-10». Para obtener más información, consulte Trabajo con los grupos de parámetros.

Consulte el siguiente ejemplo de un intento de inicio de sesión fallido:

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"

También puede usar el parámetro log\ _connections de PostgreSQL para registrar los intentos de inicio de sesión correctos en una instancia de base de datos que ejecuta PostgreSQL.

Consulte el siguiente ejemplo de un intento de inicio de sesión exitoso:

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)

Utilice los parámetros log\ _connections y log_disconnections para registrar la duración de la sesión de un usuario.

Consulte el siguiente ejemplo para conocer la duración de una sesión:

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

**Nota:**La dirección IP de la máquina cliente es 123.45.67.8 y 6789 es el PID (ID de proceso) que se asigna al proceso de la base de datos PostgreSQL.

Analizar el archivo de registro

Utilice la Interfaz de la línea de comandos de AWS (AWS CLI) o la consola Amazon RDS para descargar el registro. A continuación, utilice la utilidad grep para buscar las conexiones fallidas:

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de usar la versión más reciente de 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"

Nota:El parámetro\ - B 1 indica a grep que también muestre la línea que precede a las líneas que coinciden con el patrón que estás buscando. En este ejemplo, el patrón es error de autenticación.

También puede usar la extensión log\ _fdw de PostgreSQL para acceder a estos registros como tablas externas. Si desea conservar los archivos de registro de PostgreSQL durante más tiempo que el período de retención, publique los registros de Amazon RDS para PostgreSQL en los registros de Amazon CloudWatch.

Información relacionada

¿Cómo utilizo Amazon RDS para activar el registro de consultas en PostgreSQL?

Archivos de registro de base de datos PostgreSQL

Exportación de datos de registro a Amazon S3

Publicación de registros compatibles con Aurora PostgreSQL en CloudWatch Logs