Logging de conexões remotas do Mysql

3

Eu preciso permitir conexões remotas para o meu servidor mysql rodando no último CentOS estável.

Eu não gosto dessa idéia, então eu quero pelo menos coletar o máximo possível de informações relevantes. Para ser exato, eu preciso (quero) seguir:

  • [datetime] 1.2.3.4 conectado
  • [datetime] 3.4.5.6 senha incorreta

De acordo com o manual do mysql , há um registro de tudo (desempenho não aceitável sobrecarga) ou nada que pareça relevante para mim (e o que nos ajudaria a rastrear o atacante / administrador irresponsável).

Eu pensei em usar o grepping e apagar esse log a cada N minutos, mas isso não parece certo.

    
por Vyktor 23.07.2012 / 20:30

1 resposta

3

Na verdade, existe uma maneira de registrar todas as conexões em um mysql:

Suposições: O nome do banco de dados que usaremos para armazenar essas informações será chamado admin.

  1. Crie a tabela para armazenar as informações de conexão. Você não precisa incluir a chave exclusiva se não quiser.

    CREATE TABLE admin.connections (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, connect_time DATETIME NOT NULL, user_host VARCHAR(50) NOT NULL, connection_id INT UNSIGNED NOT NULL, UNIQUE INDEX idx_connect_time_user_host (connect_time, user_host));

  2. Defina a variável init-connect. Esta é uma string a ser executada para cada cliente que se conecta. Detalhes aqui.

    SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());";

  3. Verifique as permissões de todos os usuários para garantir que eles possam inserir um registro na tabela admin.connections.

  4. Faça login como um usuário sem privilégios globais e uma linha deve ser inserida na tabela admin.connections. Observe que a variável de sistema init-connect não funciona em usuários com privilégios globais. Para o bem ou para o mal, todos os DBAs sabem o que isso significa.

  5. Veja a sua tabela de conexões crescer e florescer. Você acabou de começar um novo animal de estimação (projeto).

Fonte: link

Agora você tem que esperar que seus usuários sejam responsáveis, eles podem começar a inundar sua tabela com dados, mas depois você lida com alguém com intenção maliciosa. Por segurança, eu usaria um local remoto que vigiasse essa tabela e guardasse uma cópia dela.

    
por 23.07.2012 / 21:10