Come posso tenere traccia dei tentativi falliti di accesso alla mia istanza database Amazon RDS per PostgreSQL?

3 minuti di lettura
0

Desidero tenere traccia del numero di connessioni fallite alla mia istanza database Amazon Relational Database Service (Amazon RDS) per PostgreSQL.

Risoluzione

PostgreSQL genera nuovi file log ogni ora. Per tenere traccia dei tentativi falliti di accesso a un'istanza database che esegue PostgreSQL, attiva il parametro log_connections. Il parametro si trova nel gruppo di parametri personalizzato associato all'istanza database. Se un utente tenta quindi di accedere all'istanza database utilizzando credenziali errate, i tentativi falliti vengono registrati nel log. I tentativi falliti sono simili all’esempio seguente: “error/postgresql.log.2018-04-19-10”. Per ulteriori informazioni, fai riferimento a Utilizzo dei gruppi di parametri.

Vedi l’esempio seguente di tentativo di accesso non riuscito:

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"

Puoi anche usare il parametro PostgreSQL log_connections per registrare i tentativi di accesso riusciti a un'istanza database che esegue PostgreSQL.

Vedi l’esempio seguente di tentativo di accesso riuscito:

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)

Usa i parametri log_connections e log_disconnections per registrare la durata della sessione di un utente.

Vedi l’esempio seguente riguardante la durata di una sessione:

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:**L'indirizzo IP del computer client è 123.45.67.8 e 6789 è il PID (Process ID) assegnato al processo del database PostgreSQL.

Analisi del file log

Usa l’Interfaccia della linea di comando AWS (AWS CLI) o la console Amazon RDS per scaricare il log. Quindi, usa l'utilità grep per cercare le connessioni fallite:

Nota: Se ricevi messaggi di errore durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di 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:**Il parametro - B 1 indica a grep di mostrare anche la linea che precede le linee che corrispondono allo schema che si sta cercando. In questo esempio, il pattern indica che l'autenticazione non è riuscita.

Puoi anche usare l'estensione PostgreSQL log_fdw per accedere a questi log come tabelle esterne. Se desideri conservare i file di log di PostgreSQL per un periodo più lungo del periodo di conservazione, pubblica i log di Amazon RDS per PostgreSQL nei log di Amazon CloudWatch.

Informazioni correlate

Come posso usare Amazon RDS per attivare la registrazione delle query per PostgreSQL?

File di log del database RDS per PostgreSQL

Esportazione dei dati di log su Amazon S3

Pubblicazione di log compatibili con Aurora PostgreSQL su CloudWatch Logs