OVH Community, your new community space.

[Warning] Access denied for user `root`


oceano
16/06/2013, 10:45
Hola, buenos días.

Muchas gracias por tu ayuda y aclaración Guille.


Un saludo y buen día !

Guille
15/06/2013, 18:58
Cita Publicado inicialmente por oceano
Hola Guille,

Entiendo que haces referencia a la conectividad entre dos servidores de forma encriptada mediante SSH por método que has explicado, NO desde local a servidor, es así ?
Es conectividad entre dos servidores.
Pero en el servidor remoto (no en el mysql) la conexion se efectua a localhost en el puerto 3307. Eso es lo bueno: que todo se encamina por el tunel ssh.

En efecto, el rsync tambien efectua una conexion por ssh. Por eso no necesitas "abrir puertos": usa el puerto ssh.

oceano
15/06/2013, 15:23
Hola Guille,

Entiendo que haces referencia a la conectividad entre dos servidores de forma encriptada mediante SSH por método que has explicado, NO desde local a servidor, es así ?

Cita Publicado inicialmente por Guille
Lo que quiero decir es:
En tu servidor remoto desde ssh ejecutas el siguiente comando:
servidormysql.net es la ip publica o nombre de dominio de tu servidor mysql
(servidorremoto) localhost:3307 ---tunel ssh--> (servidormysql) localhost:3306
Tiene bastante parecido a este comando para transferencia entre servidores
# rsync -avzr --progress -e "ssh -c arcfour256" /location_1/* user@address:/location_2 (location 1,2 (ojo con los permisos))

Un saludo y muchas gracias por la aclaración !

Guille
15/06/2013, 15:11
Cita Publicado inicialmente por oceano
Hola Guille,

Yo lo tengo puesto así,

Dentro de /etc/my.cnf
bind-address=0.0.0.0

Y cerrado por IpTables para todos, menos mi ip

¿Dónde debería de hacer esto que indicas exactamente?
2.- En el servidor remoto hago un tunel ssh:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f

a) imagino que root@"servidormysql.net" es el hostname, verdad ?

b) Cuando dices; " Ahora en el servidor remoto puedo acceder al mysql a la direccion 127.0.0.1 en el puerto 3307 de forma encriptada. " Te refieres directamente tú o los servicios que conecten a MySQL ?


Muchas gracias !
Lo que quiero decir es:

bind-address=127.0.0.1
Esto quiere decir que solo admites conexiones desde local, ni siquiera desde tu servidor remoto privado.

En tu servidor remoto desde ssh ejecutas el siguiente comando:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f
servidormysql.net es la ip publica o nombre de dominio de tu servidor mysql

Entonces diras ¿cómo puedo acceder si solo podia entrar a mysql desde localhost?
Pues eso es lo que hace el tunel ssh: encaminas la conexion del servidor remoto por el 3307 al puerto 3306 del servidor mysql sin que este abierto el puerto 3306. ¿Y que puerto usa? Pues el 22 del ssh que debe estar abierto, claro.

(servidorremoto) localhost:3307 ---tunel ssh--> (servidormysql) localhost:3306
La conexion la haces a traves de ssh, es decir a traves del puerto 22 que va encriptado.

Ni que decir tiene que si en el servidor mysql tienes el ssh abierto por otro puerto diferente del 22 es necesario especificar el puerto en el comando ssh.

suicidal
15/06/2013, 10:30
Cita Publicado inicialmente por oceano
Hola Guille,

Yo lo tengo puesto así,

Dentro de /etc/my.cnf
bind-address=0.0.0.0

Y cerrado por IpTables para todos, menos mi ip

¿Dónde debería de hacer esto que indicas exactamente?
2.- En el servidor remoto hago un tunel ssh:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f

a) imagino que root@"servidormysql.net" es el hostname, verdad ?

b) Cuando dices; " Ahora en el servidor remoto puedo acceder al mysql a la direccion 127.0.0.1 en el puerto 3307 de forma encriptada. " Te refieres directamente tú o los servicios que conecten a MySQL ?


Muchas gracias !
a) sí. es obvio xD sustituye root y srvidormysql.net por tu ip del servidor donde está alojado el mysql

b) el o los servicios, como quieras. simplemente es cambiar en la configuración de tu foro/cms/lo que sea el puerto 3306 al 3307 y listo. (al menos entendí yo así)

suicidal
15/06/2013, 10:28
Cita Publicado inicialmente por Guille
Ya se que está resuelto pero fijate que el acceso al puerto mysql por ips que no sean la local no va encriptado, vamos que va en abierto, con los problemas de inseguridad que puede haber.
Por lo que mi opción para poder acceder por mysql en remoto es usar un tunel ssh:

1.- Hago un bind-address=127.0.0.1 # Solo puedo acceder desde local
2.- En el servidor remoto hago un tunel ssh:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f
3.- Ahora en el servidor remoto puedo acceder al mysql a la direccion 127.0.0.1 en el puerto 3307 de forma encriptada.
WOW! Gracias Guille! Este mini-apunte debería ir en un how-to

oceano
15/06/2013, 10:15
Hola Guille,

Yo lo tengo puesto así,

Dentro de /etc/my.cnf
bind-address=0.0.0.0

Y cerrado por IpTables para todos, menos mi ip

¿Dónde debería de hacer esto que indicas exactamente?
2.- En el servidor remoto hago un tunel ssh:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f

a) imagino que root@"servidormysql.net" es el hostname, verdad ?

b) Cuando dices; " Ahora en el servidor remoto puedo acceder al mysql a la direccion 127.0.0.1 en el puerto 3307 de forma encriptada. " Te refieres directamente tú o los servicios que conecten a MySQL ?


Muchas gracias !

Guille
15/06/2013, 09:22
Ya se que está resuelto pero fijate que el acceso al puerto mysql por ips que no sean la local no va encriptado, vamos que va en abierto, con los problemas de inseguridad que puede haber.
Por lo que mi opción para poder acceder por mysql en remoto es usar un tunel ssh:

1.- Hago un bind-address=127.0.0.1 # Solo puedo acceder desde local
2.- En el servidor remoto hago un tunel ssh:
ssh root@servidormysql.net -L 3307:127.0.0.1:3306 -N -f
3.- Ahora en el servidor remoto puedo acceder al mysql a la direccion 127.0.0.1 en el puerto 3307 de forma encriptada.

oceano
15/06/2013, 09:17
Hola,

Bueno, esto parece que está solucionado ya.

El correcto era éste, como indica Manoleet;

Caso D; abierto para todos, cerrado mediante IpTables:
bind-address= 0.0.0.0

Después, mediante IpTables es cuestión de ir filtrando.

Mediante este comando se puede visualizar todos los puertos abiertos.
#nmap localhost

y con este otro:
# echo -e "target prot opt source destination\n$(iptables -L INPUT -n | grep 3306)"
target prot opt source destination
DROP tcp -- 0.0.0.0/0 IP_SERVER tcp dpt:3306 state NEW

Nos indicará como lo tenemos, y si hemos configurado correctamente IpTables nos dará acceso, en mi caso al panel que necesito, el cual funciona correctamente


Muchas gracias por vuestra ayuda Suicidal, Manoleet y Guille.

Un saludo !

manoleet
15/06/2013, 08:06
El error es intentar usar tu IP, en bind_address debe ir la IP del servidor o 0.0.0.0, para abrirlo al exterior, o 127.0.0.1.

bind_address indica la IP en la que escuchará por el puerto 3306

Si quieres cerrar a todos menos tu IP de casa debes hacerlo con iptables, caso D.

oceano
15/06/2013, 07:58
Hola, buenos días !

Si, yo quiero implementarlo con la dirección de loop-back que entoría es (para todos)

Caso A; cierre total desde el exterior, funciona con ambos añadidos:
(dentro de /etc/my.cnf)
bind-address=127.0.0.1
skip-networking

Caso B; cierre total desde el exterior, menos para mi ip: (No hace caso, pero deja reiniciar MySQL)
(dentro de /etc/my.cnf)
bind-address= MI_IP
skip-networking

Caso C; cierre total desde el exterior, menos para mi ip;(No deja reinciar MySQL, da error)
bind-address= MI_IP

Ni idea que puede estar pasando, la verdad. He estado leyendo que para el sistema anterior mio llegara a funcionar al 100%, debería de tener

Caso D; abierto para todos, cerrado mediante IpTables:
bind-address= 0.0.0.0

Será cuestión de probarlo, luego comento.

Toda sugerencia será agradecida !

Un saludo !

Guille
15/06/2013, 00:10
Ten en cuenta que no es lo mismo
bind-address=127.0.0.1
que
bind-address=localhost

Es preferible lo primero, ya que localhost funciona sólo en modo socket.

suicidal
14/06/2013, 22:06
Que sistema usas? Yo tengo el bind a 127.0.0.1 y no tengo acceso desde el exterior.

Uso debian 7, todo actualizado a lo ultimo

oceano
14/06/2013, 20:49
Hola,

nada de nada, esto sigue igual...

Si dejas esto como me indicas es la dirección de look-back, es decir, a toda la red en el cielo, el mundo y el inframundo ! que viene a ser igual que hacer un skip-networking dentro de my.cnf para toda la red menos localhost.

La cuestión es que funciona, pero me mucho no poder ir controlando desde web, que lo tengo off

He estado leyendo y con 1* debería de funcionar, pero no me permite reiniciar MySQL cuando lo añado.
1: bind-address= MI_IP (dentro de #/etc/mysql/my.cnf )


Agradecería cualquier tipo de ayuda, seguro me da alguna idea por donde mirar...


Muchas gracias !

suicidal
14/06/2013, 18:11
prueba en bind-address 127.0.0.1

oceano
14/06/2013, 17:59
Hola Suicidal,

Pues si (skip-networking) y no (bind-address=MI_IP), porque ahora me dice que lo tengo cerrado el 3306 al exterior mediante 1* y 2*, pero quiero conectar a un panel que tengo y no me da acceso, está Off total.

1: #mysqladmin variables | grep skip_networking = ON/OFF
2: #nmap localhost (visualiza listado de puertos abiertos)

Es decir, si utilizo skip-networking dentro de /etc/my.cnf me lo cierra todo y MySQL se reinicia bien, pero si pongo bind-address=MI_IP, MySQL no me deja reiniciar, me indica que ha dado un fallo !

Está correctamente escrita la nomenclatura para bind-address=MI_IP ?

Un saludo y gracias por la ayuda !

suicidal
14/06/2013, 17:38
Iba a trolear, pero es que luego me borran el mensaje, no sería la primera vez xD

¿Ya se soluciono oceano? con el bind deberia bastar.

oceano
14/06/2013, 16:32
Hola Manoolet,

La cuestión es que lo tenía cerrado mediante WHM en 1* con 2* pero creo no era suficiente.
1: Home »Security Center »Host Access Control
2 : # mysql MI_IP allow
2.1: # mysql ALL deny

También lo tenía cerrado por iptables únicamente para que diera acceso a mi ip mediante

-A INPUT -s MY_IP/32 -d MY_IP_SERVER/32 -p tcp -m state --state NEW -j ACCEPT
-A INPUT -d MY_IP_SERVER/32 -p tcp -m tcp --dport 3306 -m state --state NEW -j DROP

Ahora lo he cerrado añadiendo a 2*, escribiendo 3* dentro de [mysqld]
2: # /etc/my.cnf
3: # skip-networking

,pero utilizo un panel que me gustaría ver los resultados y ahora se queda también OFF todo

Añadiendo dentro de 2* , 4* debería darme acceso, verdad :confused:
4: # bind-address= MI_IP

Por cierto, si le pones este comando te indica el estado *5, creo que es igual que hacer un 6* el que has puesto tú.

5: #mysqladmin variables | grep skip_networking
6: #nmap localhost (visualiza puertos abiertos)


Muchas gracias por vuestra ayuda !

Un saludo !

manoleet
14/06/2013, 16:07
Para ver si MySQL te hace caso, puedes ejecutar esto?

Código:
netstat -antp | fgrep :3306

oceano
14/06/2013, 15:06
Hola Suicidal,

Me comentas esta opción ? *1 dentro de my.cnf ?
1: skip-networking


# mysqladmin variables | grep skip_networking
| skip_networking | ON


Un saludo !

suicidal
14/06/2013, 14:51
Como no tienes limitado mysql para local únicamente...?

oceano
14/06/2013, 13:31
Hola, buenos días

Esta misma mañana he tenido varias alertas de este tipo de una misma dirección;

MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES
MySQL log: 430218 11:45:48[Warning] Access denied for user `root`@`197.27.70.95` (using password: YES

Es la primera vez que sucede y me preguntaba, si habrían podillo llegar a entrar al servidor, he estado revisando logs y no da señales de nada extraño, pero esto que aquí muestro me hacer estar en alerta.

Os ha llegado a pasar algo así algunan vez ? Imagino que el ataque ha sido desde el exterior, verdad ? Podría ofrecer alguien algún tipo de información sobre ello ?

Muchas gracias por ello,

Un saludo !