Desativação de serviços não utilizados:
Fail2Ban
- É um serviço de firewall que monitora arquivos de logs e realiza bloqueios de acordo com as falhas encontradas, vem configurado por padrão para impedir ataques ao SSH
- Desative-o caso tenha implementado outras formas de proteção contra ataques de força bruta
sudo systemctl disable fail2ban --now
MariaDB
- É um serviço de banco de dados padrão do CloudPanel quando instalado com MariaDB
- Desative-o caso não utilize esse banco de dados
sudo systemctl disable mariadb --now
Memcached
- É um sistema de cache de objetos equivalente ao Redis
- Desative-o caso não utilize esse sistema
sudo systemctl disable memcached --now
PHP.FPM
- São os serviços que permitem execução de aplicações PHP
- Desative-os caso não utilize aplicações PHP, pode-se desativar apenas as versões não utilizadas, por padrão sites PHP utilizam PHP 8.0 como padrão e podem ser alterados pelo painel de configuração
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
- É um serviço para envio e entrega de mensagens de e-mail
- Desative-os caso não utilize aplicações que dependem de um serviço local de envio de e-mail
sudo systemctl disable postfix --now
ProFTPD
- É um serviço que habilita acessos via FTP
- Desative caso não utilize essa forma de acesso
sudo systemctl disable proftpd --now
Redis
- É um bom sistema de cache de objetos
- Desative caso não utilize esse sistema
sudo systemctl disable redis-server --now
Uncomplicated Firewall
- É um bom firewall para proteger as portas abertas no sistema operacional
- Desative caso utilize outro firewall, como ACLs ou Security Groups
sudo systemctl disable ufw --now
Varnish
- É um bom sistema de cache de páginas
- Desative caso não utilize esse sistema
sudo systemctl disable varnish --now
Configurações importantes do painel:
- Backup dos sites do painel: https://[domain]/admin/remote-backup
- Domínio do painel (porta padrão: 8443): https://[domain]/admin/settings
- Fuso horário do painel: https://[domain]/admin/instance/settings
- 2FA do usuário: https://[domain]/security
- Fuso horário do usuário: https://[domain]/settings
Configurações importantes por shell:
Redis recomenda que a configuração vm.overcommit_memory seja sempre 1. Você pode verificar a configuração executando o comando abaixo:
cat /proc/sys/vm/overcommit_memory
Caso o valor retornado seja diferente, como 0 ou 2, você pode executar a linha abaixo para adicionar vm.overcommit_memory = 1 no arquivo /etc/sysctl.conf e em seguida aplicar a configuração executando sysctl vm.overcommit_memory=1.
grep -q "vm.overcommit_memory = 1" /etc/sysctl.conf || (echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf && sudo sysctl vm.overcommit_memory=1)
Você pode verificar se o Redis apresenta essa recomendação ou algum outro erro em seu log, executando:
sudo tail -f /var/log/redis/redis-server.log
Você pode verificar as queries de execução que chegam ao Redis com esse comando:
redis-cli monitor
Configurações importantes do vhost:
Configurações de protocolo, cache e segurança de vhosts do CloudPanel:
Habilitando HTTP/3:
- Libere a porta UDP 443 para acessar o servidor:
- Edite a linha de
http3 off;
parahttp3 on;
.
Alterando o cache de arquivos "estáticos" de 5 anos para 6 horas:
- Substitua a linha
expires max;
pelo código abaixo:
### BEGIN adjusting hard cache # expires max; add_header Cache-Control "max-age=21600, public, no-transform"; ### END adjusting hard cache
Configurações de ./well-known em vhosts do CloudPanel:
Em instalações onde /.well-known
pode sofrer alterações não solicitadas, salve os arquivos que deseja em /.persistent/.well-known
e procure os arquivos na pasta:
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 }
Em instalações onde /.well-known
pode sofrer alterações não solicitadas e o nginx atua como proxy reverso, salve os arquivos em /.persistent/.well-known
e procure os arquivos na pasta:
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 }
Em arquivos onde o uso de CORS é necessário e considerando a correção em que /.well-known
pode sofrer alterações não solicitadas, salve os arquivos em /.persistent/.well-known
e configure a ação de CORS da seguinte 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 Address
Instalação de sistemas específicos no CloudPanel:
Em instalações do YOURLS, onde é necessário alterar a busca por index.php
para yourls-loader.php
, modifique a entrada try_files $uri $uri/ /index.php?$args;
da seguinte 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
Adição de headers de segurança em vhosts do CloudPanel:
Em qualquer instalação, você pode melhorar a segurança adicionando cabeçalhos (headers) à sua configuração. Neste caso, são adicionados:
- HSTS (HTTP Strict Transport Security),
- Restrição de permissões como microfone e câmera,
- Políticas de conteúdo (Content Security Policy) para controlar o uso de recursos como scripts, estilos, fontes, frames e objetos.
Você pode inserir essas configurações logo antes das regras para /.well-known
, da seguinte forma:
### 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://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
Você pode configurar um servidor de site estático no nginx para atuar como um encaminhador (forwarder) sem perder a funcionalidade do /.well-known
. Basta adicionar a configuração logo após as regras do /.well-known
, da seguinte forma:
### BEGIN Redirect all requests location / { return 301 https://example.com/; } ### END Redirect all requests