> La lista completa de artículos está en [llms.txt](https://docs.f3cloud.com/llms.txt). Cada página tiene versión en Markdown, basta con añadir .md a su dirección. Esta página en Markdown: [https://docs.f3cloud.com/es/client-area/protect-vps-from-unauthorised-access/firewall.md](https://docs.f3cloud.com/es/client-area/protect-vps-from-unauthorised-access/firewall.md).

# Cómo configurar el cortafuegos UFW y firewalld en un VPS Linux

Cómo configurar el cortafuegos de un VPS y cerrar los puertos que sobran. Configuración paso a paso de UFW para Ubuntu y Debian y de firewalld para AlmaLinux, CentOS y Oracle Linux, acceso SSH solo desde tu IP.

El cortafuegos decide qué conexiones dejar entrar en el servidor y cuáles no. La idea es sencilla. Desde fuera solo deben verse los servicios que de verdad usas. Cuantos menos puertos abiertos, menos posibilidades de que alguien encuentre en ellos una vulnerabilidad.

Normalmente hay que abrir muy pocos.

* **SSH** – el puerto `22` o el tuyo, si lo has [cambiado](https://docs.f3cloud.com/es/client-area/protect-vps-from-unauthorised-access/change-ssh-port.md);
* **una web** – los puertos `80` y `443`;
* **una VPN o un proxy** – los puertos que use tu programa, por ejemplo `443` para VLESS.

> **Primero permite SSH.**
>
> Si activas el cortafuegos sin haber permitido SSH, perderás al instante el acceso al servidor. Por eso, ejecuta los comandos estrictamente en este orden.

***

### Configuración del cortafuegos

Los comandos se ejecutan en el servidor.

#### Ubuntu y Debian (UFW)

```bash
# Instalamos UFW (en Ubuntu normalmente ya viene)
sudo apt update
sudo apt install -y ufw

# Por defecto bloqueamos todas las conexiones entrantes y permitimos
# las salientes
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Permitimos SSH. Si cambiaste el puerto, pon el tuyo en lugar de 22
sudo ufw allow 22/tcp

# Si en el servidor hay una web, abrimos HTTP y HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activamos el cortafuegos. Cuando pregunte por las conexiones SSH
# actuales, responde y
sudo ufw enable

# Vemos qué reglas están en vigor
sudo ufw status verbose
```
#### AlmaLinux, CentOS, Oracle Linux (firewalld)

```bash
# Instalamos firewalld y activamos su arranque automático
sudo dnf install -y firewalld
sudo systemctl enable --now firewalld

# Vemos qué hay abierto ya. Aquí SSH suele estar permitido por
# defecto
sudo firewall-cmd --list-all

# Si en el servidor hay una web, abrimos HTTP y HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Aplicamos los cambios
sudo firewall-cmd --reload
```

Si más adelante necesitas abrir algún otro puerto, por ejemplo el `8080` para un panel de control, basta con un comando.

#### Ubuntu y Debian (UFW)

```bash
# Abrimos el puerto 8080 para conexiones TCP
sudo ufw allow 8080/tcp
```
#### AlmaLinux, CentOS, Oracle Linux (firewalld)

```bash
# Abrimos el puerto 8080 para conexiones TCP y aplicamos los cambios
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
```

***

### SSH solo desde tu dirección IP

Es la medida más eficaz, porque solo tú podrás conectarte por SSH y para todos los demás el puerto estará cerrado. Puedes averiguar tu dirección IP en la web [2ip.ru](https://2ip.ru).

> **Solo si tienes una IP fija.**
>
> Este paso solo te sirve si tienes una dirección IP fija. Muchos proveedores domésticos la cambian de vez en cuando, y entonces, tras el cambio de dirección, no podrás entrar por SSH y tendrás que hacerlo por la consola. Si no estás seguro de que tu IP sea fija, sáltate este paso.

#### Ubuntu y Debian (UFW)

```bash
# Permitimos SSH solo desde tu IP. En lugar de TU_IP pon
# tu dirección,
# y en lugar de 22 – tu puerto SSH, si lo cambiaste
sudo ufw allow from TU_IP to any port 22 proto tcp

# Borramos la regla general que dejaba entrar a todos por SSH
sudo ufw delete allow 22/tcp

# Comprobamos la lista de reglas
sudo ufw status
```
#### AlmaLinux, CentOS, Oracle Linux (firewalld)

```bash
# Permitimos SSH solo desde tu IP. En lugar de TU_IP pon
# tu dirección,
# y en lugar de 22 – tu puerto SSH, si lo cambiaste
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="TU_IP" port port="22" protocol="tcp" accept'

# Quitamos el servicio SSH estándar, que estaba abierto para todos
sudo firewall-cmd --permanent --remove-service=ssh

# Aplicamos los cambios y comprobamos el resultado
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
```

> **Si aun así pierdes el acceso.**
>
> Si aun así pierdes el acceso, abre el servidor con el botón <kbd>Console</kbd> de la lista de servidores del área de cliente y desactiva temporalmente el cortafuegos.\
> En Ubuntu y Debian, el comando es `sudo ufw disable`.\
> En AlmaLinux, CentOS y Oracle Linux, es `sudo systemctl stop firewalld`.
>
> Luego corrige las reglas y vuelve a activarlo.

***

### Nuestros recursos

**Canal de Telegram:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Web del hosting:** [https://f3cloud.com](https://f3cloud.com/es)
