Bastionado de máquinas mariadb db server cluster con galera
· 5min · linux
Introducción
En esta entrada vamos a ver cómo securizar los servidores del clúster de mariadb con galera.
Servidores
- nodo1: 192.168.1.81
- nodo2: 192.168.1.82
- nodo3: 192.168.1.83
Puertos a gestionar
- 3306 tcp: Puerto estándar de MariaDB/MySQL
- 4444 tcp : SST (State Snapshot Transfer completo). Sirve para replicar el estado entero de la base de datos (por métodos como rsync, xtrabackup, mysqldump salvo que éste use el 3306)
- 4567 tcp/udp: Galera Replication Port. Por defecto, todo el tráfico de replicación (multicast o unicast) viaja por aquí
- 4568 tcp: IST (Incremental State Transfer). Cuando un nodo pierde unos pocos eventos de replicación, pide sólo el delta en este puerto
Configuración del Firewall
Configuraciones comunes en Ubuntu 24.04
Instalamos el firewall en Ubuntu
sudo apt install ufw
Restablecer UFW y poner política por defecto
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
Desde el nodo 1
Permitir el tráfico al ssh
sudo ufw allow ssh
Definimos las ips de los otros nodos
export NODES=(192.168.1.82 192.168.1.83)
Permitir el tráfico al puerto de mariaDB
sudo ufw allow 3306/tcp
Permitir el tráfico a los puertos de galera
for IP in "${NODES[@]}"; do
# Replicación Galera (TCP y UDP)
sudo ufw allow from $IP to any port 4567 proto tcp
sudo ufw allow from $IP to any port 4567 proto udp
# IST (Incremental State Transfer)
sudo ufw allow from $IP to any port 4568 proto tcp
# SST completo
sudo ufw allow from $IP to any port 4444 proto tcp
done
Habilitamos el firewall
sudo ufw enable
sudo ufw status verbose
Desde el nodo 2
Permitir el tráfico al ssh
sudo ufw allow ssh
Definimos las ips de los otros nodos
export NODES=(192.168.1.81 192.168.1.83)
Permitir el tráfico al puerto de mariaDB
sudo ufw allow 3306/tcp
Permitir el tráfico a los puertos de galera
for IP in "${NODES[@]}"; do
# Replicación Galera (TCP y UDP)
sudo ufw allow from $IP to any port 4567 proto tcp
sudo ufw allow from $IP to any port 4567 proto udp
# IST (Incremental State Transfer)
sudo ufw allow from $IP to any port 4568 proto tcp
# SST completo
sudo ufw allow from $IP to any port 4444 proto tcp
done
Habilitamos el firewall
sudo ufw enable
sudo ufw status verbose
Desde el nodo 3
Permitir el tráfico al ssh
sudo ufw allow ssh
Definimos las ips de los otros nodos
export NODES=(192.168.1.81 192.168.1.82)
Permitir el tráfico al puerto de mariaDB
sudo ufw allow 3306/tcp
Permitir el tráfico a los puertos de galera
for IP in "${NODES[@]}"; do
# Replicación Galera (TCP y UDP)
sudo ufw allow from $IP to any port 4567 proto tcp
sudo ufw allow from $IP to any port 4567 proto udp
# IST (Incremental State Transfer)
sudo ufw allow from $IP to any port 4568 proto tcp
# SST completo
sudo ufw allow from $IP to any port 4444 proto tcp
done
Habilitamos el firewall
sudo ufw enable
sudo ufw status verbose
Configuración del SSHD pra acceder sólo por clave ssh
Creación del clave ssh
ssh-keygen -t ed25519 -b 4096
Copiar la clave pública al servidor
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@IPSERVER
cambiar para uso de clave ssh
sudo vim /etc/ssh/sshd_config
Contenido del fichero de configuración
# Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM no
Reiniciar el servicio
sudo systemctl restart ssh