Desactivación de servicios no utilizados:
Fail2Ban
- Es un servicio de firewall que monitorea archivos de logs y realiza bloqueos de acuerdo con las fallas encontradas, viene configurado por defecto para impedir ataques al SSH
- Desactívalo si has implementado otras formas de protección contra ataques de fuerza bruta
sudo systemctl disable fail2ban --now
MariaDB
- Es un servicio de base de datos por defecto de CloudPanel cuando es instalado con MariaDB
- Desactívalo si no utilizas esta base de datos
sudo systemctl disable mariadb --now
Memcached
- Es un sistema de caché de objetos equivalente a Redis
- Desactívalo si no utilizas este sistema
sudo systemctl disable memcached --now
PHP.FPM
- Son los servicios que permiten la ejecución de aplicaciones PHP
- Desactívalos si no utilizas aplicaciones PHP, puedes desactivar solo las versiones no utilizadas. Los sitios PHP utilizan PHP 8.0 como predeterminado y pueden ser cambiados desde el panel de configuración. Si PHP 8.0 es desactivado, algunos procesos como la creación de sitios PHP pueden fallar.
sudo systemctl disable php7.1-fpm --now sudo systemctl disable php7.2-fpm --now sudo systemctl disable php7.3-fpm --now sudo systemctl disable php7.4-fpm --now sudo systemctl disable php8.0-fpm --now sudo systemctl disable php8.1-fpm --now sudo systemctl disable php8.2-fpm --now sudo systemctl disable php8.3-fpm --now sudo systemctl disable php8.4-fpm --now
Postfix
- Es un servicio para envío y entrega de mensajes de correo electrónico
- Desactívalo si no utilizas aplicaciones que dependan de un servicio local de envío de correo electrónico
sudo systemctl disable postfix --now
ProFTPD
- Es un servicio que habilita accesos vía FTP
- Desactívalo si no utilizas este tipo de acceso
sudo systemctl disable proftpd --now
Redis
- Es un buen sistema de caché de objetos
- Desactívalo si no utilizas este sistema
sudo systemctl disable redis-server --now
Uncomplicated Firewall
- Es un buen firewall para proteger los puertos abiertos en el sistema operativo
- Desactívalo si utilizas otro firewall, como ACLs o Security Groups
sudo systemctl disable ufw --now
Varnish
- Es un buen sistema de caché de páginas
- Desactívalo si no utilizas este sistema
sudo systemctl disable varnish --now
Configuraciones importantes del panel:
- Respaldo de los sitios del panel: https://[dominio]/admin/remote-backup
- Dominio del panel (puerto predeterminado: 8443): https://[dominio]/admin/settings
- Zona horaria del panel: https://[dominio]/admin/instance/settings
- 2FA del usuario: https://[dominio]/security
- Zona horaria del usuario: https://[dominio]/settings
Configuraciones importantes por shell:
Redis recomienda que la configuración vm.overcommit_memory sea siempre 1, así como la configuración de un bind que aún no está disponible puede impedir el arranque de Redis. Puedes ejecutar las siguientes líneas para agregar vm.overcommit_memory = 1 y net.ipv4.ip_nonlocal_bind = 1 en el archivo /etc/sysctl.conf y luego aplicar la configuración ejecutando sysctl -p.
{
# 1. Handle vm.overcommit_memory
if grep -q "^vm.overcommit_memory" /etc/sysctl.conf; then
sudo sed -i 's/^vm.overcommit_memory.*/vm.overcommit_memory = 1/' /etc/sysctl.conf
else
echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf
fi
# 2. Handle net.ipv4.ip_nonlocal_bind
if grep -q "^net.ipv4.ip_nonlocal_bind" /etc/sysctl.conf; then
sudo sed -i 's/^net.ipv4.ip_nonlocal_bind.*/net.ipv4.ip_nonlocal_bind = 1/' /etc/sysctl.conf
else
echo "net.ipv4.ip_nonlocal_bind = 1" | sudo tee -a /etc/sysctl.conf
fi
# 3. Apply changes immediately
sudo sysctl -p
}Puedes verificar si Redis presenta esta recomendación u otro error en su log, ejecutando:
sudo tail -f /var/log/redis/redis-server.log
Puedes verificar las consultas de ejecución que llegan a Redis con este comando:
redis-cli monitor
Configuraciones importantes del vhost:
Configuraciones de protocolo, caché y seguridad de vhosts de CloudPanel:
Habilitando HTTP/3:
- Libera el puerto UDP 443 para acceder al servidor:
- Edita la línea de
http3 off;ahttp3 on;.
Cambiando la caché de archivos "estáticos" de 5 años a 6 horas:
- Sustituye la línea
expires max;por el siguiente código:
### BEGIN adjusting hard cache # expires max; add_header Cache-Control "max-age=21600, public, no-transform"; ### END adjusting hard cache
Configuraciones de ./well-known en vhosts de CloudPanel:
En instalaciones donde /.well-known puede sufrir alteraciones no solicitadas, guarda los archivos que desees en /.persistent/.well-known y busca los archivos en la carpeta:
location ~ /.well-known {
auth_basic off;
allow all;
### BEGIN fixing .well-known deletion
try_files $uri $uri/ /.persistent$uri =404;
### END fixing .well-known deletion
}En instalaciones donde /.well-known puede sufrir alteraciones no solicitadas y el nginx actúa como proxy reverso, guarda los archivos en /.persistent/.well-known y busca los archivos en la carpeta:
location ^~ /.well-known {
auth_basic off;
allow all;
### BEGIN fixing .well-known deletion
try_files $uri $uri/ /.persistent$uri @reverse_proxy;
# try_files $uri @reverse_proxy;
### END fixing .well-known deletion
}En archivos donde el uso de CORS es necesario y considerando la corrección en la que /.well-known puede sufrir alteraciones no solicitadas, guarda los archivos en /.persistent/.well-known y configura la acción de CORS de la siguiente forma:
### BEGIN Enabling Nostr domain validation and Lightning Address
location ~.well-known/(nostr.json|lnurlp/*) {
### BEGIN fixing .well-known deletion
try_files $uri $uri/ /.persistent$uri =404;
### END fixing .well-known deletion
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
}
### END Enabling Nostr domain validation and Lightning AddressInstalación de sistemas específicos en CloudPanel:
En instalaciones de YOURLS, donde es necesario cambiar la búsqueda por index.php a yourls-loader.php, modifica la entrada try_files $uri $uri/ /index.php?$args; de la siguiente forma:
### BEGIN custom entry for YOURLS try_files $uri $uri/ /yourls-loader.php$is_args$args; # try_files $uri $uri/ /index.php?$args; ### END custom entry for YOURLS
Adición de headers de seguridad en:
En cualquier instalación, puedes mejorar la seguridad agregando encabezados (headers) a tu configuración. En este caso, se agregan:
- HSTS (HTTP Strict Transport Security),
- Restricción de permisos como micrófono y cámara,
- Políticas de contenido (Content Security Policy) para controlar el uso de recursos como scripts, estilos, fuentes, frames y objetos.
Puedes insertar estas configuraciones justo antes de las reglas para /.well-known, de la siguiente manera:
### BEGIN adding security header lines add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; add_header Permissions-Policy "geolocation=(), microphone=(), accelerometer=(), camera=(), gyroscope=(), magnetometer=()"; add_header Content-Security-Policy "img-src https: data:; script-src 'unsafe-inline' 'unsafe-eval'; script-src-elem 'self' 'unsafe-inline' https://*.zapwp.com/ https://*.cloudfront.net/ https://code.jquery.com/ https://cdn.jsdelivr.net/ https://plugin.handtalk.me/ https://optimizerwpc.b-cdn.net/ https://www.googletagmanager.com/ https://www.google.com/ https://www.gstatic.com/ https://www.youtube.com/ https://kit.fontawesome.com/ https://googleads.g.doubleclick.net/ https://www.google-analytics.com/ https://cdnjs.cloudflare.com/; style-src 'self' 'unsafe-inline'; style-src-elem 'self' 'unsafe-inline' https://*.zapwp.com/ https://code.jquery.com/ https://cdn.jsdelivr.net/ https://p.typekit.net/ https://use.typekit.net/ https://cdnjs.cloudflare.com/ https://fonts.googleapis.com/ https://www.gstatic.com/; frame-src 'self' https://*.substack.com/ https://www.google.com/ https://www.youtube.com/ https://www.youtube-nocookie.com/ https://open.spotify.com/ https://td.doubleclick.net/ https://www.googletagmanager.com/; worker-src 'self' blob:; frame-ancestors 'self'; object-src 'none'; base-uri about:; upgrade-insecure-requests;"; ### END adding security header lines
Puedes configurar un servidor de sitio estático en nginx para actuar como un reenviador (forwarder) sin perder la funcionalidad de /.well-known. Solo agrega la configuración justo después de las reglas de /.well-known, de la siguiente forma:
### BEGIN Redirect all requests
location / {
return 301 https://example.com/;
}
### END Redirect all requests