Instalação automática

Método automático: um único script da área pessoal prepara todo o servidor (stack web Apache + PHP, base de dados, ferramentas de segurança, cron). Depois — implementar o painel, emitir o SSL e introduzir a licença. Funciona em Ubuntu/Debian: num VPS novo configura tudo de raiz, num servidor já configurado — apenas de forma aditiva (perfil «Servidor configurado», passo 01). Todos os comandos abaixo estão por ordem, basta percorrer de cima para baixo. Num VPS novo aplicam-se todos os passos, um a seguir ao outro; se o servidor já estiver configurado ou tiver um painel de alojamento, o script deixa intencionalmente parte do trabalho a seu cargo — e indica exatamente o quê no final da sua execução (a leitura desse resultado está no passo 01).

Substitua os valores de exemplo nos comandos pelos seus: monitor.example.com — o seu domínio; 203.0.113.10 — o IP real do servidor; /var/www/monitor — a raiz do painel (onde estão public/, assets/, config.php); defina a sua própria palavra-passe da BD.
O conjunto completo («Proteção total») destina-se a um VPS novo. Num Ubuntu/Debian limpo, configura o sistema de segurança de raiz — Fail2ban (jail.local), root-crontab, regras do UFW, configuração do Apache. Se o servidor já estiver configurado (painel a funcionar, sites, correio, jails próprias) — escolha o perfil «Servidor configurado»: introduz apenas alterações aditivas e não mexe na sua firewall, no Fail2ban, no correio, no SSH nem no sysctl. Ao detetar um painel de alojamento, o script muda sozinho para este modo. Antes da primeira execução pode ativar a simulação (opção na área pessoal) — mostra o que será feito sem alterar nada. Num servidor em produção, faça uma cópia instantânea (snapshot) por precaução.

01. Comando de configuração automática a partir da área pessoal

Obtém o comando na sua área pessoal my.arciveo.com → secção «Configuração do servidor» (disponível depois de subscrever o Arcivéo Security Monitor). Está associado à sua conta e contém um token pessoal.

O script prepara todo o servidor: pilha web (Apache + PHP), base de dados, ferramentas para SSL, o conjunto completo de meios de proteção e tarefas cron (Lynis, SMART, debsums, Logwatch, relatório diário, atualização do ipsum).

1) Escolha o nível de proteção (na área pessoal, antes de copiar o comando):

  • Proteção completa (recomendado) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (lista de bloqueio de IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (integridade dos ficheiros), debsums, ClamAV + maldet (antivírus), Auditd, AppArmor, Monit, Lynis (auditoria), Logwatch, atualizações de segurança automáticas.
  • Ligeira — para VPS com pouca RAM: conjunto básico sem componentes pesados.
  • Servidor configurado (painel de alojamento) — para um servidor já em funcionamento com painel (HestiaCP, etc.), sites e correio: apenas alterações aditivas (instalação de ferramentas, cron, regras sudo), enquanto a firewall, o Fail2ban, o correio, o SSH e o sysctl permanecem tal como estão. Num servidor com painel, o script escolhe este modo automaticamente.
Execução a seco. Na área pessoal pode marcar a opção «Execução a seco» — então o comando apenas mostra o que o script vai instalar e alterar, e termina sem tocar em nada. Útil num servidor já configurado: primeiro a execução a seco, depois a execução real sem a opção marcada.

2) Execute no servidor como root o comando da área pessoal — tem este aspeto:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Mantenha o comando em segredo — está associado à sua conta. A ligação tem um prazo de validade limitado; se tiver expirado, clique em «Obter nova ligação» na área pessoal.
Após a configuração automática, o servidor web é Apache + PHP-FPM, e as ferramentas de segurança e tarefas cron já estão instaladas e a funcionar «out-of-the-box».

3) Leia o resultado no final — é aí que fica dito o que sobra para si. O script termina com um bloco de verificações e uma lista «A seguir — a instalação do painel». Parte dos passos não é executada de propósito: o que exatamente depende do perfil escolhido e do que ele encontrou no servidor. Confronte com a lista abaixo — só precisa de executar os pontos cujas linhas apareceram no seu resultado.

  • Control panel detected (…) — o site é criado pelos meios do próprio painel de alojamento, o script não cria o vhost. Passo 03, ramo «Servidor com painel de alojamento».
  • No vhost created (no domain given) — perfil «Servidor configurado» sem domínio: um vhost sem nome passaria a ser o site predefinido e intercetaria os seus próprios sites, por isso não foi criado. Passo 03, ramo «Criar o vhost à mão».
  • sudo rules NOT written — o script não conseguiu determinar sob que conta funciona o painel. É uma situação normal: os ficheiros do painel são enviados já depois da configuração automática e ainda não havia nada por onde determinar. Sem estas regras, os módulos não veem os dados do sistema. Passo 04, bloco «sudo para o servidor web».
  • ! Nginx does not read .htaccess — há um Nginx à frente do Apache e não foi possível inscrever a proibição na sua configuração automaticamente. Faça-o obrigatoriamente: caso contrário, data/, keys/, database/ e config.php ficam acessíveis do exterior, contornando o .htaccess. Passo 03, bloco «Se houver um Nginx à frente do Apache».
  • UFW installed but inactive — a firewall está instalada, mas desligada: num servidor já configurado o script não a ativa sozinho, para não lhe cortar o acesso. Ative-a você mesmo, permitindo obrigatoriamente a sua porta SSH:
    sudo ufw allow OpenSSH # porta SSH não padrão: sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • Fail2ban installed but not running — inicie-o: sudo systemctl enable --now fail2ban.
  • Database server present … but not running — inicie o SGBD antes do passo 04: sudo systemctl enable --now mariadb (ou mysql — conforme o que estiver instalado).
  • Certbot skipped — issue SSL in … — o certificado é emitido pelo interruptor Let's Encrypt no painel de alojamento; não precisa do passo 06.
Se estiver tudo bem no bloco de verificações, a última linha é All checks passed. Os pontos com ! exigem atenção; os pormenores são escritos no registo, cujo caminho o script imprime mesmo no fim (Log: …).

02. Domínio e DNS

Para abrir o painel num endereço como monitor.example.com e obter SSL gratuito, o domínio tem de apontar para o servidor. No painel de gestão de DNS (do registador ou do alojamento) crie um registo A:

Tipo: A Nome: monitor (subdomínio → monitor.example.com) ou @ (raiz do domínio → example.com) Valor: 203.0.113.10 ← IP do seu servidor TTL: 3600

Passados alguns minutos (por vezes até uma hora), verifique que o domínio aponta para o servidor:

dig +short monitor.example.com # deve devolver o seu IP # ou, se não tiver o dig: getent hosts monitor.example.com
O certificado SSL (passo 06) é emitido apenas para o domínio — por isso o DNS tem de apontar para o servidor antes da emissão do certificado.

03. Enviar os ficheiros do painel

Caso habitual (VPS novo). A configuração automática já criou a diretoria do painel /var/www/monitor e configurou o site Apache (DocumentRoot na raiz do painel, PHP-FPM, AllowOverride para .htaccess). No resultado do script isso corresponde à linha vhost … → DocumentRoot …. Não é preciso criar a diretoria e o vhost à parte — basta enviar os ficheiros e definir as permissões.
Dois casos em que o vhost NÃO é criado — o script diz-lho explicitamente no final da sua execução. Nesse caso, execute primeiro o ramo adequado abaixo e só depois envie os ficheiros.

Ramo «Servidor com painel de alojamento» (no resultado: Control panel detected (…)). Num servidor destes é o painel que gere os sites, e o script não cria um vhost próprio de propósito — seria apagado na primeira reconstrução das configurações pelo painel. A ordem é esta:

  1. Crie um domínio web no painel de alojamento (HestiaCP, etc.) — o DocumentRoot dele fica como está.
  2. Envie a distribuição por inteiro para a public_html desse domínio: ao lado de index.php, api/, assets/ devem ficar também os ficheiros e pastas de serviço config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Não é preciso colocar nada acima da raiz web: as pastas de serviço estão protegidas pelo ficheiro .htaccess da distribuição e, sob Nginx, pela proibição que o script inscreveu na configuração do domínio.
  3. O SSL é emitido pelo interruptor Let's Encrypt no próprio painel — salte o passo 06.
  4. A seguir — as permissões (mais abaixo neste passo), a base de dados (passo 04) e o config.php (passo 05). Nos comandos, substitua os caminhos por /home/conta/web/dominio/public_html e o proprietário pelo utilizador desse domínio, em vez de www-data.

Ramo «Criar o vhost à mão» (no resultado: No vhost created (no domain given)). Isto só acontece no perfil «Servidor configurado», quando o domínio não foi indicado. O mais simples é voltar a executar o comando da área pessoal, indicando o domínio:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo bash -s -- monitor.example.com

A repetição da execução é segura: o que já foi feito não é duplicado. Se ainda assim precisar de criar o vhost à mão — aqui fica a mesma configuração que o instalador escreve:

sudo mkdir -p /var/www/monitor # O socket do PHP-FPM é determinado automaticamente — a versão do PHP varia de servidor para servidor. PHPSOCK=$(ls -1 /run/php/php*-fpm.sock 2>/dev/null | head -1) sudo tee /etc/apache2/sites-available/arciveo-monitor.conf > /dev/null <<'EOF' <VirtualHost *:80> ServerName monitor.example.com DocumentRoot /var/www/monitor <Directory /var/www/monitor> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch "\.php$"> SetHandler "proxy:unix:__PHPSOCK__|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/arciveo-monitor_error.log CustomLog ${APACHE_LOG_DIR}/arciveo-monitor_requests.log combined </VirtualHost> EOF sudo sed -i "s#__PHPSOCK__#${PHPSOCK}#" /etc/apache2/sites-available/arciveo-monitor.conf sudo a2ensite arciveo-monitor.conf sudo apache2ctl configtest sudo systemctl reload apache2
Aqui o ServerName é obrigatório. Um vhost sem nome torna-se o site predefinido do Apache e começa a responder por domínios alheios no mesmo servidor. Pela mesma razão, não desative o 000-default.conf num servidor já configurado: esse site pode ter sido adaptado para algo em produção — num VPS novo o instalador remove-o sozinho, aqui não é preciso fazê-lo.
Se houver um Nginx à frente do Apache (no resultado: ! Nginx does not read .htaccess). O Nginx serve os ficheiros estáticos diretamente do disco e não lê o .htaccess — as pastas de serviço ficam acessíveis do exterior, ainda que o Apache as feche corretamente. O script preparou antecipadamente um ficheiro com as proibições; é preciso incluí-lo no bloco server{} do seu site e recarregar o Nginx:
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # Verificação: deve devolver 403 e não o conteúdo do ficheiro curl -sI https://monitor.example.com/config.php | head -1
Os ficheiros do painel (arquivo da distribuição) são transferidos após a compra na área pessoal my.arciveo.com → «Transferências». Descompacte o arquivo antes de o enviar para o servidor.

Envie o conteúdo da distribuição para /var/www/monitor (de modo a que lá dentro fiquem public/, assets/, config.php etc.) — por SFTP/SCP (FileZilla / WinSCP) ou com o comando scp a partir do computador local:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Para que o seu domínio (ServerName) fique logo definido no vhost, ele é passado ao comando de configuração automática ainda no passo 01: … | sudo bash -s -- monitor.example.com (ou indica-se o domínio no campo «Domínio do painel» na área pessoal). Se o domínio não for passado — o painel responde a qualquer host e por IP, e o ServerName será definido pelo certbot ao emitir o SSL (passo 06); não é preciso reinstalar nada.
Defina as permissões dos ficheiros — é um passo obrigatório. Se enviou como root ou por SFTP, os ficheiros pertencem ao root, e o servidor web (www-data) não os conseguirá ler — o painel abrirá vazio ou com erro 403 (no registo: .htaccess unreadable / directory not executable). O comando abaixo corrige isto:
# Normalizamos as permissões de toda a webroot: a diretoria criada pelo root # é inacessível ao servidor web (www-data) — sem isto o painel devolve página vazia ou 403. cd /var/www/monitor # Criamos as pastas de trabalho ANTES do chown — senão as novas diretorias ficam root:root # e, com chmod 750, o servidor web (www-data) não conseguirá escrever nelas. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

Abra para si próprio o envio de ficheiros por SFTP. Depois do comando acima todos os ficheiros pertencem ao www-data, enquanto o FileZilla / WinSCP se ligam com o seu próprio utilizador — o envio falhará com SSH_FX_PERMISSION_DENIED (Permission denied). Escolha uma das duas variantes.

Variante A — uma ACL apenas para o seu utilizador (recomendado). A permissão de escrita fica só consigo; o servidor web continua sem poder substituir o código do painel:

sudo apt install -y acl # Permissão de escrita para o seu utilizador em todo o diretório do painel: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # A mesma regra por omissão — para ficheiros e pastas criados mais tarde: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Variante B — através do grupo www-data. Mais simples, mas a permissão de escrita nos ficheiros do painel passa também para o servidor web: com uma vulnerabilidade no PHP o código poderia ser substituído. A ordem dos comandos importa — config.php e as pastas de trabalho são fechadas por último:

sudo usermod -aG www-data deploy # Escrita para o grupo + setgid (o bit 2): os ficheiros enviados por SFTP # permanecem no grupo www-data — caso contrário o painel não os consegue substituir. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
Depois da variante B volte a ligar-se no FileZilla (Servidor → Desligar e entrar de novo) — o novo grupo só passa a valer numa nova sessão, até lá continua sem permissões. Verificação: id deploy — na lista de grupos deve aparecer www-data; ls -ld /var/www/monitor — permissões drwxrwsr-x, a letra s em vez de x significa que o setgid está ativo.

04. Base de dados

Crie a base de dados e o utilizador, depois importe o esquema. O bloco da BD é colado no terminal por inteiro (sudo mysql entra como root pelo socket unix — não é preciso a palavra-passe de root). monitor_db e monitor_user são nomes de exemplo, pode definir os seus; memorize o nome da base, do utilizador e a palavra-passe — irá inseri-los no config.php no passo seguinte:

# 1. Base de dados. O nome da base, o utilizador e a palavra-passe definem-se UMA vez abaixo e são usados em todas as linhas. # O bloco cola-se no terminal POR INTEIRO; sudo mysql entra como root pelo socket unix # (não é preciso a palavra-passe de root). NÃO use o interativo `sudo mysql -u root -p` # com copiar/colar — ao colar, as linhas SQL vão para o pedido de palavra-passe e perdem-se. DBNAME='monitor_db' # ← nome da base, pode ficar assim DBUSER='monitor_user' # ← utilizador da base, pode ficar assim DBPASS='CHOOSE_A_PASSWORD' # ← palavra-passe, defina a sua sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS $DBNAME CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON $DBNAME.* TO '$DBUSER'@'localhost'; FLUSH PRIVILEGES; SQL # Verificação (deve mostrar $DBNAME): mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # Insira estes mesmos três valores em config.php → DB_NAME, DB_USER, DB_PASS.
Normalmente não é preciso importar o esquema — o painel cria por si as tabelas e a conta admin no primeiro acesso pelo navegador (a partir de database/db.sql), se a BD estiver vazia.

Se as tabelas não tiverem sido criadas (o painel mostra um erro de ligação à BD ou um ecrã vazio em vez do formulário de início de sessão) — importe o esquema à mão. O comando executa-se na raiz do painel e os valores vêm do bloco acima:

# Importação do esquema: cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # Verificação — deve aparecer a lista de tabelas: mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
Se as variáveis $DBNAME / $DBUSER / $DBPASS já se «perderam» (nova sessão do terminal) — introduza os valores no comando à mão ou defina-os de novo com as mesmas três linhas do bloco acima.
sudo para o servidor web. Normalmente as regras já foram escritas pela configuração automática e os módulos veem os dados do sistema de imediato. Mas se no resultado do script apareceu a linha sudo rules NOT written — não havia como determinar a conta do painel (os ficheiros ainda não tinham sido enviados) e as regras não foram criadas. Sem elas, secções como a firewall, o Fail2ban e o CrowdSec ficam vazias. Agora que os ficheiros já estão no lugar, execute o comando da área pessoal outra vez, indicando a conta explicitamente:
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
Substitua www-data pelo utilizador sob o qual corre o PHP do seu site (num painel de alojamento é normalmente o proprietário do domínio). Pode consultá-lo assim:
ps -o user= -C php-fpm8.3 | sort -u # indique a sua versão # ou: ps aux | grep -m3 '[p]hp-fpm'
Verificação após a nova execução: o ficheiro /etc/sudoers.d/monitor existe e contém linhas com o seu utilizador.

05. Configuração do config.php

config.php na raiz do painel (/var/www/monitor/config.php) é o único ficheiro que precisa de editar à mão. Todas as definições do painel estão definidas nele através de constantes define(). Abra-o num editor:

sudo nano /var/www/monitor/config.php

Introduza os seus valores nos locais realçados; deixe o resto como está:

// --- Base de dados (do passo 04) --- define('DB_HOST', 'localhost'); // manter define('DB_NAME', 'db_name'); // o que criou no passo 04 define('DB_USER', 'user'); // o que criou no passo 04 define('DB_PASS', 'db_password'); // o que definiu no passo 04 define('DB_CHARSET', 'utf8mb4'); // manter // --- Aplicação --- define('APP_URL', 'https://monitor.example.com'); // endereço do painel, sem barra no fim define('TIMEZONE', 'Europe/Lisbon'); // o seu fuso horário // --- Tempo de sessão --- define('SESSION_LIFETIME', 28800); // inatividade até novo início de sessão, seg (28800 = 8 h)

O que alterar:

  • DB_NAME, DB_USER, DB_PASS — exatamente os mesmos nome da base, utilizador e palavra-passe que definiu ao criar a BD no passo 04 (se manteve os exemplos — monitor_db / monitor_user). Não mexa em DB_HOST e DB_CHARSET.
  • APP_URL — o endereço completo do painel com https://, sem barra no fim e sem www. Tem de coincidir com o domínio no qual ativa a licença (passo 07), caso contrário a chave será rejeitada.
  • TIMEZONE — o seu fuso horário (lista — timedatectl list-timezones). Afeta apenas a forma como o painel mostra as datas; não afeta a hora de execução das tarefas cron (aí vale o fuso do sistema).
  • SESSION_LIFETIME — após quantos segundos de inatividade o painel pede novo início de sessão (por predefinição 8 horas). Ex.: 3600 = 1 hora, 86400 = um dia.
  • Bloco de registo de erros (display_errors, log_errors, error_log) — deixe por predefinição.

Guarde o ficheiro (Ctrl+O, Enter, depois Ctrl+X) e reinicie o PHP-FPM — caso contrário, devido ao OPcache, as alterações não serão aplicadas:

sudo systemctl restart php*-fpm
config.php — ficheiro secreto (contém a palavra-passe da BD). Está na raiz do painel, que é a própria raiz web, mas está protegido: permissões 640 (definidas no passo 03) e proibição explícita no .htaccess da raiz. Não o publique em repositórios públicos nem o envie para o suporte com a palavra-passe real.
Análise detalhada de todos os parâmetros — no FAQ: «Ficheiro config.php — todas as definições do painel».

06. Emitir SSL (HTTPS)

O painel funciona apenas por HTTPS. A sessão de início usa uma cookie segura e o WebAuthn (2FA), por norma, só funciona em HTTPS. Por http:// não conseguirá entrar.
Num servidor com painel de alojamento este passo não é necessário (no resultado do script: Certbot skipped — issue SSL in …). O certificado é emitido pelo interruptor Let's Encrypt no domínio web dentro do próprio painel — assim é também o painel que trata da sua renovação.

O certbot e o plugin para Apache já foram instalados pela configuração automática. O DNS do domínio já deve apontar para o servidor (passo 02). Emissão num único comando:

sudo certbot --apache -d monitor.example.com

Se o painel também tiver de abrir com www. — indique ambos os nomes no mesmo comando, caso contrário no segundo endereço o navegador mostrará um aviso sobre o certificado:

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
Acrescente o segundo nome apenas se ele também tiver um registo A a apontar para este servidor (passo 02). Caso contrário, a Let's Encrypt não o conseguirá validar e não emitirá o certificado por inteiro — incluindo o domínio principal.
O que o certbot vai perguntar:
  1. Enter email address — o seu e-mail (para lá receberá avisos de expiração do certificado).
  2. Terms of Service … (Y)es/(N)o — Y.
  3. Share email with the EFF … (Y)es/(N)o — ao seu critério.
A seguir o certbot emite o certificado, cria o <VirtualHost *:443>, configura o redirecionamento http→https e a renovação automática. No fim — Successfully enabled HTTPS.
Se a emissão falhar — verifique se dig +short monitor.example.com devolve o IP do servidor e se as portas 80/443 estão abertas (sudo ufw allow 80,443/tcp).

Após a emissão: https://monitor.example.com abre com o cadeado, http:// redireciona para https://.

07. Início de sessão e configuração inicial

Abra https://monitor.example.com, inicie sessão com admin / useradmin e siga a lista de verificação:

  1. Alterar a palavra-passe de admin — secção «Utilizadores» no menu.
  2. Ativar WebAuthn (2FA) — «Chaves WebAuthn» → registar chave/passkey (requer HTTPS). Registe logo duas: em caso de perda da única chave, o início de sessão com ela será impossível. Saber mais.
  3. Restringir o acesso por IP — «Definições» → «Restrição de acesso por IP» (introduza o seu IP antes de ativar, caso contrário perde o acesso).
  4. Introduzir a licença — ative na área pessoal o código de ativação ARCIVEO-… para o seu domínio e cole a chave em «Definições» → «Licença». Saber mais.
  5. Configurar notificações — Telegram e/ou Email em «Definições». Saber mais.
  6. Eliminar o instalador public/start_db.php, se ainda existir: permite recriar a base de dados sem autenticação. Enquanto o ficheiro estiver na raiz do painel ou em public/, o painel avisa disso com um banner vermelho.
  7. Executar as primeiras verificações à mão — caso contrário, parte das secções fica vazia até à noite (ver o bloco abaixo).
Porque é que a «Auditoria Lynis» e o «Logwatch» aparecem logo vazios. A configuração automática instalou as ferramentas e criou as tarefas cron, mas não executou as próprias verificações — estas correrão conforme o agendamento: Lynis às 03:00, Logwatch às 06:00, debsums às 04:30, ClamAV às 01:30. Até lá, as secções mostram honestamente que ainda não há relatórios. Para não esperar um dia inteiro, execute-as uma vez à mão:
# Auditoria Lynis — primeiro relatório (alguns minutos): sudo /usr/local/bin/lynis-scan.sh # Relatório do Logwatch das últimas 24 horas: sudo /usr/local/bin/logwatch_daily.sh # Integridade dos pacotes (debsums) — num servidor grande demora bastante: sudo /usr/local/bin/debsums-scan.sh
O Lynis também pode ser iniciado diretamente a partir do painel — botão «Executar auditoria» na página «Auditoria Lynis»: executa o mesmo script em segundo plano e atualiza o relatório sozinho. Daí em diante tudo segue o agendamento, não é preciso executar mais nada à mão.
A primeira análise antivírus (sudo /usr/local/bin/clamav-scan.sh) sobrecarrega bastante o disco e o processador e pode demorar uma hora ou mais — num servidor em produção é preferível aguardar a execução noturna das 01:30. As secções «Discos (SMART)», «Desempenho» e «Atualizações de segurança» preenchem-se sozinhas: a cada 30 minutos, 5 minutos e uma vez por hora, respetivamente.
Concluído. O manual de cada ferramenta está nas FAQ.
Se precisar de alojar neste servidor mais um site com domínio próprio, consulte as FAQ: «Um segundo site neste servidor (mais um domínio)».