Página 1 de 5
Proteção de Banco de Dados MySQL
Enviado: 20 Dez 2022 23:24
por cjp
Pessoal, me aconteceu uma coisa estranha recentemente: um técnico de informática não autorizado acessou meu banco de dados em um provedor (Kinghost), sem a senha.
Ele acessou a rede pelo notebook dele, sendo que uma das máquinas da rede tinha meu sistema instalado, incluindo o Maria DB. Ele usou algum aplicativo no notebook dele (não sei qual é, pois eu não estava presente, só tenho a informação do usuário dessa máquina) para capturar os dados do banco de dados.
Eu gostaria de entender como ele pode ter feito isso.
E, sobretudo, gostaria de saber como posso proteger meu banco de dados desse tipo de ataque.
Alguém me ajuda?
Proteção de Banco de Dados MySQL
Enviado: 21 Dez 2022 03:41
por alxsts
Olá!
Baseado no teu relato, é difícil opinar. Provavelmente alguma brecha foi deixada durante o desenvolvimento. Eu apostaria em
SQL Injection...
Proteção de Banco de Dados MySQL
Enviado: 22 Dez 2022 00:10
por cjp
A senha do banco de dados está salva no PRG do meu sistema. Os computadores dos usuários não têm os PRGs. Mas claro que, se está no PRG, também está no EXE.
Mas, até onde sei, o técnico não examinou o EXE. Ele simplesmente acessou o computador do usuário pela rede, por meio do notebook dele, e fez uma cópia integral do banco de dados do provedor.
Do relatório elaborado pelo próprio técnico, consta o seguinte: "Por essa razão, a verificação foi realizada no computador de
patrimônio X e serial Y, utilizado pela servidora ..., através do
monitoramento da comunicação realizada entre o dispositivo e o servidor que hospeda os
dados durante a inicialização do programa tlprocesso" com seu login. Assim, foi possível utilizar
a conexão aberta pela aplicação para realizar a exportação dos dados e gerar um arquivo para
posterior análise conforme descrito abaixo:"
Queria entender como ele conseguiu fazer esse monitoramento da comunicação, e como faço para evitar que isso ocorra novamente.
Proteção de Banco de Dados MySQL
Enviado: 24 Dez 2022 00:35
por Vlademiro
Pelo que eu entendi, o técnico monitorou a comunicação pela rede. Existem programas, como p wireshark que capturam pacotes na rede. Ele descobriu que o seu exe estava abrindo a porta 3306 e ele monitorou os pacote correspondentes. O que me deixa intrigado é que esses pacotes deviam estar criptografados. Como vc faz para conectar ao banco ? Poderia postar o trecho que faz isso ?
Se os pacotes trafegam descriptografados fica difícil ajudar. Nesse caso, vc poderia pelo menos dificultar o invasor, limitando os IPs que podem acessar o banco.
O link a seguir pode lhe ajudar
https://mariadb.com/kb/en/configuring-m ... mote-hosts
Proteção de Banco de Dados MySQL
Enviado: 26 Dez 2022 14:10
por ANDRIL
Possivelmente seu site deva ser acessado via https, então apostaria em algum programa de monitoramento de pacotes de rede Wi-Fi. Talvez a criptografia do roteador esteja setada mais fraca ou até mesmo sem facilitando a leitura pela rede Wi-Fi.
Outra possibilidade é o técnico ter tido acesso fácil aos dados de conexão que estejam com o usuário ou em algum arquivo.
Proteção de Banco de Dados MySQL
Enviado: 26 Dez 2022 16:49
por cjp
Acesso o banco de dados desta forma:
Código: Selecionar todos
FUNCTION conectado(nProvedor)
LOCAL cnConnection
LOCAL nPort :=" "
LOCAL nVersion :=3
LOCAL cServer :="mysql.xxx.com.br"
LOCAL cDatabase :="xxx"
LOCAL cUser :="xxx"
LOCAL cPassword :="xxx"
private nVzexq :=0
#define AD_USE_CLIENT 3
hb_Default( @nPort, 3306 )
hb_Default( @nVersion, 3 )
do while .t.
ODBC_MARIADB=Mariadb_StringConexao()
cnConnection:= win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := ODBC_MARIADB + ";Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
";Stmt=;Database=" + cDatabase + ";User=" + cUser + ";Password=" + cPassword + ";Collation=latin1;" + ;
"AUTO_RECONNECT=1;COMPRESSED_PROTO=0;PAD_SPACE=1" // usando compactaΒo impede certas checagens // Option=131072;
cnConnection:CursorLocation := AD_USE_CLIENT
cnConnection:CommandTimeOut := 300 // seconds
cnConnection:ConnectionTimeOut := 300 // seconds
if cnConnection:State#0
exit
else
nVzexq++
if nVzexq>2
?"Não conectou"
inkey(5)
return 999
endif
endif
exit
enddo
RETURN cnConnection
Criptografado? Eu não sei fazer isto.
Os usuários não têm os dados de conexão, nem há arquivos nos computadores dos usuários com esses dados, apenas o .exe.
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 00:58
por Vlademiro
Não sou especialista no assunto, mas pelo que entendi dos links que pesquisei :
(1) O mysql/mariadb vem com ssl desabilitado, logo o tráfego pode ser monitorado
Para saber se o suporte a ssl no seu servidor está ativo faça :
Repare na linha : "have_ssl"
(2) Para ativar o suporte encontrei esse link.
https://www.alibabacloud.com/blog/how-t ... ion_595079
O suporte a ssl é uma característica do servidor, basicamente não há nada que a sua aplicação possa fazer, já que teoricamente o ODBC faz o trabalho de enviar e receber. Já que o seu mariadb está em um provedor, creio que é melhor entrar em contato com o provedor. Note que na documentação que enviei tem uma etapa para a geração de chaves ssl. Não entendo bem essa parte, mas creio que o seu provedor deve lhe informar algo a respeito.
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 01:13
por Vlademiro
Uma curiosidade interessante: a configuração do ssl no PostgreSQL me pareceu bem mais fácil a primeira vista:
https://www.percona.com/blog/enabling-a ... nnections/
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 10:25
por cjp
Fiz a pesquisa do ssl no servidor, veja no anexo.
Mas, salvo erro meu, o MariaDB está instalado nas máquinas dos usuários. Então, não é no servidor, correto? Ou mesmo assim eu teria que configurar no servidor?
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 13:55
por Itamar M. Lins Jr.
Olá!
Dentro da rede, ele pode até interceptar a conexão.
Eu quero saber se fora da rede ele consegue.
Interceptar por exemplo a conexão da empresa com o provedor do SGBD.
Saudações,
Itamar M. Lins Jr.
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 14:32
por cjp
Não sei se ele tentou fazer fora da rede.
Mas a questão é: tem como impedir que faça essa interceptação, dentro ou fora da rede?
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 15:43
por Itamar M. Lins Jr.
Olá!
Dentro da rede ele já FUROU o PRINCIPAL BLOQUEIO.
Quero ver da casa dele por exemplo ele acessar o seu BD esteja onde estiver.
O resto é monitorar portas. Se tiver criptografado o tráfego é bem difícil. Tem que ver isso no SGBD, parece que vc usa MariaDB/MySQL. Veja nas configurações se está ativa a criptografia. Mas se ele tem acesso a sua rede ele já está dentro, talvez ele acessou a maquina local e está inventando... Não sei, tenho que ler muita coisa a esse respeito para saber como fazer, seria mais fácil perguntar para ele como fez... Se ficar com segredinho é pq não fez nada de mais. Assim eu penso.
Ele pode ter EDITADO O .EXE e viu o login/senha.
Saudações,
Itamar M. Lins Jr.
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 18:19
por Itamar M. Lins Jr.
Olá!
Possivelmente seu site deva ser acessado via https,
Uma pequena correção HTTPS não é usado por banco de dados. HTTP
é usando entre o Apache/IIS/Etc e o NAVEGADOR Edger/Chrome/Firefox... Banco de dados usa o TCP/IP.
HTTP e HTTPS e FTP e DHCP roda em cima do TCP. Sem HTTP, sem FTP, sem DHCP vc consegue comunicação com Mysql/MariaDb por exemplo até o LetoDBf roda. SMB é outro protocolo da M$ mais FURADO que queijo suíço, serve para compartilhar impressoras, pastas etc.
https://www.gta.ufrj.br/grad/03_1/ip-se ... ducao.html
Saudações,
Itamar M. Lins Jr.
Proteção de Banco de Dados MySQL
Enviado: 29 Dez 2022 20:35
por cjp
Olá!
Dentro da rede ele já FUROU o PRINCIPAL BLOQUEIO.
Quero ver da casa dele por exemplo ele acessar o seu BD esteja onde estiver.
O resto é monitorar portas. Se tiver criptografado o tráfego é bem difícil. Tem que ver isso no SGBD, parece que vc usa MariaDB/MySQL. Veja nas configurações se está ativa a criptografia. Mas se ele tem acesso a sua rede ele já está dentro, talvez ele acessou a maquina local e está inventando... Não sei, tenho que ler muita coisa a esse respeito para saber como fazer, seria mais fácil perguntar para ele como fez... Se ficar com segredinho é pq não fez nada de mais. Assim eu penso.
Ele pode ter EDITADO O .EXE e viu o login/senha.
Eu não estava no local na hora, mas, pelo que o usuário me contou, parece que ele não editou o .EXE não. E com certeza ele não mexeu na máquina do usuário, só acessou pela rede.
Como faço para ver se está ativa a criptografia?
Não tenho como perguntar pra ele como fez. Não é questão de segredinho. Apenas não tenho acesso a ele, nem sei quem é.
Será que entendi direito"
Eu não te entendi. Falei alguma besteira?
Proteção de Banco de Dados MySQL
Enviado: 30 Dez 2022 11:48
por Itamar M. Lins Jr.
Olá!
Como faço para ver se está ativa a criptografia?
Pesquisar na internet.
Se não me falha a memória o Vladimir postou.
Lembre-se é seu banco de dados, e aprender essa parte é o básico do básico.
Primeira coisa é perguntar ao provedor se já está criptografado a transmissão.
Não confundir criptografia de dados(strings) com criptografia dos PACOTES DA COMUNICAÇÃO.
Saudações,
Itamar M. Lins Jr.