
Tengo mi aplicación (WordPress) y mi base de datos (MySQL) en servidores separados; están conectados a una red privada proporcionada por el proveedor de servicios de alojamiento y he tomadotodos los pasos preliminares(que yo sepa) por seguridad.
Normalmente, sigo estas reglas de IPTables:
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow SSH connections
#
# The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -j ACCEPT
# Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
Pero para mi servidor de base de datos independiente (MySQL), veo que las reglas necesitan algunos cambios. Por ejemplo, necesito abrir el puerto 3306 para MySQL, que sería tan simple como:
-A INPUT -p tcp --dport 443 -j ACCEPT
Excepto que no sé cómo modificarlo para que solo el servidor de aplicaciones pueda conectarse a la base de datos (es decir, para que admita una conexión remota). Entonces, ¿cómo lo hago?
Respuesta1
Así que tú necesitas
-A INPUT -p tcp -s $INTERNAL_WEB_SERVER_IP --dport 3306 -j ACCEPT
Permite que sólo su servidor web se comunique con mysql. Como menciona dmourati, permitir el tráfico de ping es una buena idea. En mi humilde opinión, ayuda a resolver muchos más problemas que los de seguridad que presenta.
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $SERVER_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -s $SERVER_IP -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT
La regla de salida que mencionó significa que su servidor de base de datos puede realizar cualquier conexión saliente que se le indique. Básicamente, se permitirá CUALQUIER y TODO el tráfico que se origine en su servidor de base de datos.