En algunas distribuciones de Linux, el puerto 3306 está abierto después de instalar MySQL. Este artículo describe dos métodos para restringir o bloquear el acceso al puerto 3306 en un servidor no administrado.
La información de este artículo solo se aplica a los productos no administrados. Debe tener acceso raíz al servidor para seguir los procedimientos que se describen a continuación.Método #1:Deshabilitar MySQL networking
Si no necesita acceder a MySQL desde una computadora externa, puede deshabilitar la red de MySQL.
Siga el procedimiento adecuado a continuación para su distribución de Linux.
Incluso con la red MySQL deshabilitada, aún puede acceder a MySQL de forma segura desde una computadora remota si lo necesita. Para ello, puede configurar un túnel SSH. Para obtener información sobre cómo hacer esto, consulte este artículo.CentOS y Fedora
Para deshabilitar la red MySQL en CentOS y Fedora, siga estos pasos:
- Inicie sesión en su servidor usando SSH.
- En el símbolo del sistema, use su editor de texto preferido para abrir /etc/my.cnf archivo.
- Ubique la siguiente línea en my.cnf archivo:
#skip-networking
Si esta línea no está en my.cnf archivo, agréguelo. -
Eliminar el # firme al comienzo de la línea para que la línea se vea así:
skip-networking
- Guarde sus cambios en /etc/my.cnf y luego salga del editor de texto.
-
Escriba el siguiente comando para reiniciar el servicio MySQL:
service mysqld restart
El puerto 3306 ahora está cerrado en el servidor.
Debian y Ubuntu
De forma predeterminada, MySQL en Debian y Ubuntu está configurado para usar solo el localhost interfaz (dirección IP 127.0.0.1) para redes. Esto significa que el puerto 3306 está cerrado a conexiones externas. Para confirmar que esta es la configuración en su servidor, siga estos pasos:
- Inicie sesión en su servidor usando SSH.
- En el símbolo del sistema, use su editor de texto preferido para abrir /etc/mysql/my.cnf archivo.
- Ubique el MySQL dirección de enlace línea en my.cnf expediente. Debería tener el siguiente aspecto:
bind-address = 127.0.0.1
Si el MySQL dirección de enlace la línea está establecida en 0.0.0.0 (o ninguna dirección), entonces las conexiones están abiertas en todas las interfaces. - Si realizó algún cambio en /etc/my.cnf archivo, guárdelos y luego salga del editor de texto.
-
Para reiniciar el servicio MySQL, escriba el siguiente comando:
service mysql restart
El puerto 3306 ahora está cerrado en el servidor.
Método #2:Configurar reglas de firewall
Puede usar iptables para crear reglas de firewall que restrinjan el acceso al puerto 3306. La ventaja de este método es que puede otorgar o denegar selectivamente el acceso al puerto 3306 según las direcciones IP u otros criterios.
Por ejemplo, para bloquear completamente el acceso externo al puerto 3306, escriba el siguiente comando:
iptables -A INPUT -p tcp --dport 3306 -j DROP
Del mismo modo, para otorgar acceso a una dirección IP específica y bloquear todas las demás, escriba los siguientes comandos. Reemplazar xxx.xxx.xxx.xxx con la dirección IP para la que desea otorgar acceso:
iptables -A INPUT -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP
Puede otorgar acceso a MySQL a direcciones IP adicionales insertando reglas en INPUT cadena antes del DROP regla. Por ejemplo:
iptables -I INPUT 1 -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT