13 min de leitura · Guia técnico
Para configurar um servidor de produção Linux, siga este checklist: atualize o sistema, crie um usuário não-root com privilégios sudo, configure autenticação por chave SSH, desabilite o login root, e configure o firewall UFW. Essas etapas garantem segurança e estabilidade para o ambiente de produção.
- Atualize o sistema operacional com
apt update && apt upgrade -y - Crie um usuário administrativo com privilégios sudo
- Configure autenticação por chave SSH e desabilite login root
- Configure o firewall UFW para permitir apenas portas essenciais
- Instale e configure fail2ban para proteção contra ataques de força bruta
- Implemente backup automatizado e monitoramento contínuo
Pré-requisitos
- Servidor Linux recém-instalado com acesso root
- Conexão SSH estável para administração remota
- Conhecimento básico de comandos Linux e editores de texto
- Chaves SSH geradas para autenticação segura
- Endereço IP fixo configurado no servidor
Configuração inicial do sistema
A configuração inicial do servidor para produção começa com a atualização completa do sistema e criação de usuário administrativo não-root. Esta etapa fundamental estabelece a base segura para todas as configurações posteriores.
- Atualize o sistema operacional:
apt update && apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
base-files ubuntu-keyring
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- Crie um usuário administrativo com privilégios sudo:
adduser admin
usermod -aG sudo admin
- Configure o timezone do servidor:
timedatectl set-timezone America/Sao_Paulo
timedatectl status
Local time: Fri 2024-01-15 14:30:25 -03
Universal time: Fri 2024-01-15 17:30:25 UTC
RTC time: Fri 2024-01-15 17:30:25
Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
- Configure o hostname do servidor:
hostnamectl set-hostname servidor-producao
echo "127.0.0.1 servidor-producao" >> /etc/hosts
Configuração de segurança SSH e firewall
A segurança SSH representa o primeiro ponto crítico na configuração de servidor para produção. Desabilitar autenticação por senha e configurar firewall restritivo são medidas obrigatórias para proteger contra ataques automatizados.
- Configure autenticação por chave SSH editando o arquivo de configuração:
nano /etc/ssh/sshd_config
Modifique as seguintes linhas:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222
MaxAuthTries 3
- Copie sua chave pública SSH para o usuário admin:
mkdir -p /home/admin/.ssh
echo "sua-chave-publica-ssh" > /home/admin/.ssh/authorized_keys
chmod 700 /home/admin/.ssh
chmod 600 /home/admin/.ssh/authorized_keys
chown -R admin:admin /home/admin/.ssh
- Reinicie o serviço SSH:
systemctl restart ssh
systemctl status ssh
- Configure o firewall UFW com regras restritivas:
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Firewall is active and enabled on system startup
Instalação e configuração de serviços essenciais
Os serviços essenciais para servidor de produção incluem fail2ban para proteção contra ataques de força bruta, sistema de monitoramento e ferramentas de backup automatizado. Esta configuração garante operação confiável 24/7.
- Instale o fail2ban para proteção contra ataques:
apt install fail2ban -y
systemctl enable fail2ban
- Configure o fail2ban criando arquivo de configuração local:
nano /etc/fail2ban/jail.local
Adicione a configuração:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 3
- Instale ferramentas de monitoramento do sistema:
apt install htop iotop nethogs unattended-upgrades -y
- Configure atualizações automáticas de segurança:
dpkg-reconfigure -plow unattended-upgrades
- Instale e configure logrotate para gerenciamento de logs:
nano /etc/logrotate.d/custom-logs
/var/log/aplicacao/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
}
Configuração de backup e monitoramento
O sistema de backup automatizado e monitoramento contínuo são componentes críticos para servidor em produção. Implementar verificações de saúde do sistema e backup incremental garante recuperação rápida em caso de falhas.
- Crie script de backup automatizado:
nano /usr/local/bin/backup-sistema.sh
#!/bin/bash
DATA=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
LOG_FILE="/var/log/backup.log"
mkdir -p $BACKUP_DIR
echo "$(date): Iniciando backup do sistema" >> $LOG_FILE
# Backup de configurações críticas
tar -czf $BACKUP_DIR/config_$DATA.tar.gz /etc /home /var/www 2>/dev/null
# Backup do banco de dados (se aplicável)
if systemctl is-active --quiet mysql; then
mysqldump --all-databases > $BACKUP_DIR/mysql_$DATA.sql
fi
# Remove backups antigos (mantém 7 dias)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
echo "$(date): Backup concluído" >> $LOG_FILE
- Torne o script executável e configure cron:
chmod +x /usr/local/bin/backup-sistema.sh
crontab -e
Adicione a linha para backup diário às 2h:
0 2 * * * /usr/local/bin/backup-sistema.sh
- Configure monitoramento de recursos do sistema:
nano /usr/local/bin/monitor-sistema.sh
#!/bin/bash
LOG_FILE="/var/log/monitor.log"
ALERT_EMAIL="[email protected]"
# Verifica uso de CPU
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
if (( $(echo "$CPU_USAGE > 80" | bc -l) )); then
echo "$(date): ALERTA - CPU em ${CPU_USAGE}%" >> $LOG_FILE
fi
# Verifica uso de memória
MEM_USAGE=$(free | grep Mem | awk '{printf "%.2f", $3/$2 * 100.0}')
if (( $(echo "$MEM_USAGE > 85" | bc -l) )); then
echo "$(date): ALERTA - Memória em ${MEM_USAGE}%" >> $LOG_FILE
fi
# Verifica espaço em disco
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | cut -d'%' -f1)
if [ $DISK_USAGE -gt 85 ]; then
echo "$(date): ALERTA - Disco em ${DISK_USAGE}%" >> $LOG_FILE
fi
- Configure execução do monitoramento a cada 5 minutos:
chmod +x /usr/local/bin/monitor-sistema.sh
echo "*/5 * * * * /usr/local/bin/monitor-sistema.sh" | crontab -
Para servidores que hospedam sites WordPress, considere também configurar um servidor Linux para hospedagem de sites com otimizações específicas para aplicações web.
Otimização de performance e limites do sistema
A otimização de performance do servidor envolve ajustes nos limites do kernel, configuração de swap e tuning de parâmetros de rede. Estas configurações maximizam a capacidade de resposta sob carga elevada.
- Configure limites do sistema no arquivo limits.conf:
nano /etc/security/limits.conf
Adicione as seguintes linhas:
* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768
root soft nofile 65536
root hard nofile 65536
- Otimize parâmetros do kernel para produção:
nano /etc/sysctl.conf
Adicione as configurações de otimização:
# Otimizações de rede
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = bbr
# Otimizações de memória
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# Segurança
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
- Aplique as configurações:
sysctl -p
- Configure swap otimizado (para servidores com 4GB+ RAM):
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890
Problemas comuns e como resolver
Sintoma: SSH não aceita conexões após mudança de porta
Causa: Firewall bloqueando a nova porta SSH ou serviço SSH não reiniciado corretamente.
Solução: Verifique se a porta está liberada no UFW com ufw status e reinicie o SSH com systemctl restart ssh. Se necessário, acesse via console da AviraHost para corrigir.
Sintoma: Fail2ban não está bloqueando ataques de força bruta
Causa: Configuração incorreta do arquivo jail.local ou logs não sendo monitorados adequadamente.
Solução: Verifique o status com fail2ban-client status sshd e confirme se o caminho do log em jail.local está correto. Reinicie o serviço com systemctl restart fail2ban.
Sintoma: Sistema lento após aplicar otimizações de kernel
Causa: Valores inadequados para a quantidade de RAM disponível ou configuração de swap incorreta.
Solução: Ajuste vm.swappiness para valor entre 1-10 para servidores com RAM suficiente. Monitore uso de memória com free -h e ajuste parâmetros conforme necessário.
Sintoma: Backup automatizado falhando silenciosamente
Causa: Permissões insuficientes no diretório de backup ou espaço em disco insuficiente.
Solução: Verifique permissões com ls -la /backup e espaço disponível com df -h. Ajuste o script para incluir verificação de espaço antes de iniciar backup.
Sintoma: Monitoramento não enviando alertas críticos
Causa: Serviço de email não configurado ou script de monitoramento com erro de sintaxe.
Solução: Teste o script manualmente e verifique logs em /var/log/monitor.log. Configure postfix ou use webhook para notificações externas se email local não estiver disponível.
Perguntas frequentes sobre checklist para configurar servidor de produção Linux
Quanto tempo leva para configurar um servidor para produção?
A configuração completa de um servidor para produção leva entre 2 a 4 horas, dependendo da complexidade dos serviços. Isso inclui atualizações, configuração de firewall, instalação de SSL e configuração de backup automatizado.
Quais são os primeiros passos após instalar o sistema no servidor?
Os primeiros passos incluem atualizar o sistema com apt update && apt upgrade, criar um usuário não-root com privilégios sudo, configurar autenticação por chave SSH e desabilitar login root direto. Também é essencial configurar o firewall UFW imediatamente.
É necessário instalar antivírus em servidor Linux?
Não é obrigatório instalar antivírus tradicional em servidores Linux, pois o sistema é naturalmente mais seguro. É mais importante focar em configurações de firewall, fail2ban para proteção contra ataques de força bruta e manter o sistema sempre atualizado.
Como verificar se meu servidor está seguro após a configuração?
Verifique a segurança executando nmap localhost para conferir portas abertas, testando conexões SSH com chaves, verificando logs do fail2ban e confirmando que o firewall UFW está ativo. Também execute lynis audit system para uma auditoria completa de segurança.
Qual a diferença entre configurar servidor para desenvolvimento e produção?
Servidores de produção exigem configurações mais rigorosas de segurança, como desabilitar login root, usar apenas autenticação por chave SSH, configurar firewall restritivo e implementar monitoramento contínuo. Servidores de desenvolvimento podem ter configurações mais flexíveis para facilitar testes e debugging.
Conclusão
- Execute este checklist completo antes de colocar qualquer servidor em produção para garantir segurança e estabilidade máximas
- Monitore regularmente os logs de sistema, backup e segurança para identificar problemas antes que afetem a operação
- Mantenha documentação atualizada de todas as configurações personalizadas para facilitar manutenção e recuperação de desastres
Precisa de ajuda com configuração de servidor?
A AviraHost oferece servidores VPS pré-configurados com as melhores práticas de segurança. Nossa equipe técnica pode auxiliar na implementação completa deste checklist.