En esta segunda parte de ‘Cómo configurar SQL Server sobre Linux’, cambiaremos el password del superusuario ‘SA’, crearemos otro en su lugar y deshabilitaremos el usuario ‘SA’. Además, cambiaremos el puerto por defecto de SQL Server y abriremos el firewall local para poder conectarnos a nuestra instancia desde un cliente como SQL Server Management Studio o Azure Data Studio.
Lee La Primera Parte – Cómo configurar SQL Server sobre Linux – Parte I
1. Cambia el password de SA, crea otra cuenta SYSADMIN y deshabilita el SA. SA es un usuario con privilegios de SYSADMIN que viene por defecto en todas las instalaciones de SQL Server, lo que lo hace un objetivo relativamente vulnerable a ataques de fuerza bruta. Como buena práctica de seguridad, crearemos otra cuenta con privilegios en reemplazo del ‘SA’ y luego la deshabilitaremos, esto disminuirá en gran medida este riesgo.
Primero, haz SSH a tu máquina virtual y detén el servicio de SQL:
sudo systemctl stop mssql-server
Cambia el usuario de SA con el utilitario mssql-conf. Provee una nueva clave.
sudo /opt/mssql/bin/mssql-conf set-sa-password
Vuelve a iniciar el servicio SQL:
sudo systemctl start mssql-server
Ahora, conéctate a la instancia con el login SA y la clave escogida:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘YourPassword’
Crea otra cuenta con privilegios de SYSADMIN. En mi caso le he llamado SQLAdmin:
CREATE LOGIN SQLAdmin WITH PASSWORD = ‘YouAreAwesome!!’
GO
EXEC SP_ADDSRVROLEMEMBER ‘SQLAdmin’,’SYSADMIN’;
GO
Cierra la sesión de SA con quit.
Nos conectamos ahora con el nuevo usuario creado.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SQLAdmin -P ‘YouAreAwesome!!’
Si puedes conectarte sin problemas con este nuevo usuario puedes deshabilitar de manera segura el login SA:
ALTER LOGIN SA DISABLE;
GO
2. Abre un puerto para las conexiones a SQL Server: Aquí vamos a escoger un puerto que sirva para conectarnos a SQL Server. Después de la instalación, SQL ya trae un puerto por defecto que es 1433 pero lo cambiaremos siguiendo las buenas prácticas.
Desde el portal de Azure y en la página del recurso de tu máquina virtual.
Nos dirigimos a ‘Networking’ en el panel izquierdo y luego clic en ‘Add inbound port rule’.
Deja los valores de los campos ‘Source’, ‘Source port ranges’ y ‘Destination’ por defecto y cambia el Destination Port Ranges a 60000. Puedes escoger otro puerto de tu elección teniendo en cuenta que no cause conflicto con otros en tu sistema.
Cambia el protocolo a ‘TCP’ y ponle un nombre como ‘Port_60000’.
Clic en Add.
3. Configura el firewall local del servidor. En el paso anterior hemos abierto el puerto de manera ‘externa’, ahora abriremos el puerto desde el firewall local del servidor y le diremos a SQL Server que este será nuestro puerto de ahora en adelante.
sudo firewall-cmd –zone=public –add-port=60000/tcp –permanent
Luego:
sudo firewall-cmd –reload
Por último, cambia el puerto de SQL Server usando mssql-conf:
sudo /opt/mssql/bin/mssql-conf set network.tcpport 60000
Para que esta configuración tome efecto deberás reiniciar el servicio de SQL.
4. Prueba la conexión a tu base de datos con un cliente. Aquí puedes usar cualquier cliente, con GUI o desde línea de comandos. El objetivo es probar que tu base de datos es accesible desde un cliente externo al servidor. Aquí te dejo unos ejemplos de conexión con 2 herramientas cliente, Azure Data Studio y SSMS:
a. Azure Data Studio. Ingresa los parámetros de conexión y asegúrate de poner el puerto 60000 en la sección ‘General’ de Advanced Properties.
b. SQL Server Management Studio.
En el siguiente artículo configuraremos los discos y particiones de la VM y cambiaremos las rutas para archivos de datos, log y backups por defecto.
Si tienes alguna duda, comentarios o sugerencias, me puedes enviar un correo a bitácoradeundba@gmail.com.