Usuários remotos que tentam obter acesso ao mysqld root

3

Acabei de revisar meu arquivo syslog e observei uma tonelada de entradas dos seguintes itens:

Aug 25 13:06:17 ssrv001 mysqld: 150825 13:06:17 [Warning] Access denied for user 'root'@'61.160.232.48' (using password: YES)

O ip é malicioso, pois ninguém além de mim tem acesso root a este servidor. Eu removerei o acesso remoto para o usuário root do mysqld, mas isso será suficiente para impedir que esse tipo de coisa aconteça?

Eu também estava pensando em implementar algo que não permitisse conexões de endereços IP que fizeram solicitações inválidas várias vezes.

    
por nullReference 25.08.2015 / 21:38

3 respostas

9

Antes de mais nada, recomendo que você permita o login como root no mysql somente a partir do localhost. Se você tiver que se conectar ao mysql de outro servidor - crie um novo usuário e conceda apenas as permissões necessárias para ele.

Além disso, você pode usar o fail2ban ou similar para adicionar IPs de hackers à lista negra após várias tentativas de conexão com falha.

E por último, você pode mudar sua porta mysql para evitar ataques de força bruta.

Saiba mais sobre como proteger seu banco de dados MySQL no linux aqui: Como Proteger Bancos de Dados MySQL e MariaDB em um VPS Linux

ATUALIZAÇÃO: Eu esqueci que o MySQL tem suas próprias ferramentas para bloquear IPs após tentativas de login malsucedidas. Você pode usar isso no seu arquivo de configuração mysql:

max_connect_errors = 5;

Mas por padrão, o mysqld bloqueia um host após 10 erros de conexão.

Leia mais sobre isso aqui: Variáveis de sistema do servidor #sysvar_max_connect_errors e aqui: O host 'host_name' está bloqueado

    
por 25.08.2015 / 21:50
6

Eu estou com Maxim e knowhy, permitir login como root no MySQL somente a partir do localhost. Eu iria ainda mais longe, permitindo login para localhost ou ips específicos para todos os usuários.

Algo que você pode fazer para se conectar ao seu servidor MySQL remoto como um usuário local é o tunelamento ssh.

Algo como isso Deve funcionar para sistemas UNIX:

ssh -fNg -L 9999:127.0.0.1:3306 [email protected]

Isso ativará a porta do cliente 9999 como um "túnel" para a porta yourhost.com:3306 remota.

Para sistemas Windows, talvez Putty deva fazer o truque. Dê uma olhada nisso:

link

A maioria dos atuais clientes gráficos do MySQL, permite conexões via túnel, o MySQL Workbench por exemplo, funciona muito bem:

link

    
por 25.08.2015 / 23:56
3

Você deve bloquear o mysql com seus iptables. Este trecho bloqueará o mysql de qualquer host diferente de localhost:

iptables -A INPUT -i lo -p tcp --dport mysql -j ACCEPT
iptables -A INPUT -p tcp --dport mysql -j DROP

Esteja ciente de que estas configurações no seu iptables não serão persistentes. Dependendo da sua distribuição, você deve editar sua configuração do iptables. Para sistemas baseados em Redhat6, você deve editar /etc/sysconfig/iptables , por exemplo.

Você também deve desabilitar o login root remoto no mysql com as seguintes consultas sql:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

Você também pode pensar em implementar o fail2ban para bloquear IPs com muitos logins com falha. Esta questão de falha de servidor deve ajudá-lo com isso.

    
por 25.08.2015 / 21:45