De tempos em tempos, há tentativas fracassadas de login em nosso servidor de produção MySQL (o painel MySQL nos alerta). Existe uma maneira de registrar todos os sucessos e falhas no login no servidor MySQL sem ativar general_log
?
Achamos que general_log
não é uma opção porque é um servidor de produção com alta carga.
As of MySQL 5.5.28, MySQL Enterprise Edition includes MySQL Enterprise Audit, implemented using a server plugin named audit_log.
Apenas a versão empreendedora possui.Respostas:
apenas para informar o curioso: cave no seu log de erros e pronto!
(1) edite my.cnf (documentação de configurações encontrada aqui )
(2) na execução do comando
(3) e você tem!
(4) se você precisar restringir o usuário (tentativa de recuperação de senha de usuário do mysql ou do ataque em um banco de dados multiusuário), então ( http://dev.mysql.com/doc/refman/5.5/en/user-resources.html )
restringir a apenas 100 tentativas de recuperação de senha por hora.
fonte
Acho que o log geral pode registrar todas as tentativas de login (êxito e falha) entre muitas outras coisas. O principal problema é que o log geral afetará o desempenho do seu banco de dados. Você pode ativar o log geral com a consulta
para versões mais recentes do MySQL.
fonte
/etc/mysql/my.cnf
mysql?--general-log
aos sinalizadores ao iniciar o MySQL.Oi eu não acho que é possível.
A partir do mysql 5.1.29 - você pode especificar a opção de armazenamento (tabela ou arquivo) e o local e o log que deseja - erro, consulta geral, binária ou lenta. Tanto quanto eu sei - você não pode especificar o formato do log ou o que é registrado. Posso estar errado - mas acho que todas as tentativas de logon serão registradas no log geral, e não no erro.
No entanto, supondo que o servidor mysql esteja sendo executado em uma máquina separada, a partir do servidor de aplicativos, e você precise da porta 3306 (ou qualquer outra) aberta e que não possa usar o túnel ssh, o servidor mysql ainda não deve ser acessível por ninguém. nulo. Eu recomendo não expô-lo ao tráfego da Web e, se você precisar (como no caso de residir em algum lugar fora do firewall), vinculá-lo ao endereço IP ou ao bloco IP do seu servidor de aplicativos e ao seu acesso de administrador ip (onde você está acessando de)
Espero que ajude.
fonte
Pode-se registrar
connect
equit
comandar usando o mysql-audit-plugin.audit-plugin-percona-5.7-1.1.7-805-linux-x86_64.zip
.so
arquivo baixado para o local indicado pormysqladmin variables | grep plugin_dir
.mysql>install plugin audit soname 'libaudit_plugin.so'
mysql>set global audit_json_file=ON
por padrão, registra todas as operações bem-sucedidas. configurandoset global audit_record_cmds='quit,connect'
-o, log apenas conecta e encerra, suponho, de acordo com a configuração do mysql-audit-plugin .É assim que aparece no arquivo para login e logout:
fonte
se o servidor em questão não tiver conexões externas, conforme configurado, eu ficaria preocupado com algum tipo de ataque ao servidor de aplicativos, a menos que os logons com falha sejam de novos aplicativos sendo lançados antes da configuração do usuário / passe.
se o servidor estiver exposto de alguma forma a conexões externas no 3306, a menos que seja intencional e necessário, eu definiria a configuração como Nick disse e também usaria o iptables para restringir o tráfego para 3306 apenas dos servidores de aplicativos.
fonte
Em http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ , o autor mostra um método para capturar os pacotes usando tcpdump e filtrando a saída com base na string.
Isso soluciona suas preocupações com o general_log e o desempenho, embora o tcpdump possa incorrer em uma penalidade de desempenho menor. Essa solução também registrará menos dados que o Registro de consulta geral.
Eu não usei isso sozinho, mas parece muito útil.
fonte