Preambulo (Pule se já tem o WSL2 instalado)
Estes passos a seguir resumem as informações do tutorial “Como instalar o Linux no Windows com o WSL”.
Montar o WSL
Inicie um PowerShell como administrador.
- Habilitar o subsistema do Windows para Linux:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Habilitar o recurso de Máquina Virtual:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Definir o WSL 2 como a versão padrão:
wsl --set-default-version 2
- Listar as distros disponíveis:
wsl --list --online
- Instalar a Distro Debian:
wsl --install Debian
Reinicie o computador, abra a distro instalada e crie seu login. Em caso de dúvidas, revise o tutorial original.
Configurando Chave SSH (Opcional)
Abra o terminal Debian como root e atualize o gerenciador de pacotes com o comando:
apt update
Rodar o comando de instalação do OpenSSH:
apt-get install openssh-client
Prosseguir com o instalação.
Sair do root com o comando
exit
Gerar a sua chave SSH nova com o comando:
ssh-keygen -t ed25519 -C "Seu Email"
Abrir o conteúdo da chave seguindo os comandos:
cd ~
cd .ssh
cat id_ed25519.pub
Copiar o conteúdo inteiro que foi exibido no seu terminal. Ex: ssh-ed25519 AAAAAABBBBBBBBCCCCCCCCDDDDDDDD/EEEEFFFFG seuemail@hotmail.com
Colocar o conteúdo na sua conta do GitHub, em Settings -> SSH and GPG Keys -> New SSH Key Dê um titulo coerente, o tipo = autenticação e por fim cole o conteúdo copiado no espaço designado a chave, finalize.
Já deixe o Git instalado para que seja possível clonar os repositórios. Utilize o comando abaixo:
sudo apt install git
Crashfix - O que é?
O CrashFix surgiu da necessidade de ter um sistema de telemetria de falhas. Quando ocorre um crash, o CrashRpt gera um arquivo de minidump, empacota e envia ao servidor CrashFix, permitindo identificar onde o problema ocorreu e facilitando a correção. Novos recursos incluem envio de imagens, arquivos do projeto, vídeos, hardware do computador e versão do software. Os arquivos ficam por 90 dias, mas as informações do crash permanecem indefinidamente para pesquisa.
Arquitetura e implantação
Guia para implantação seguindo a documentação oficial.
Clonando repositório do CrashFix WebApp
Crie a pasta e clone o projeto:
cd ~
mkdir crashfix
cd crashfix
Clone o repositório:
git clone https://github.com/jsonzilla/crashfix_webapp.git
Instrução de Instalação do servidor CrashFix WebApp
Entre no repositório clonado.
cd ~
cd crashfix/crashfix_webapp
Instalar os componentes necessários para o PHP
sudo apt update
sudo apt upgrade
sudo apt install -y php
sudo apt-get install libapache2-mod-php php-mysql php-xml
Instalar e iniciar o WebServer Apache:
sudo apt-get install apache2
sudo service apache2 restart
sudo service apache2 status
Instalar o MariaDB
sudo apt update
sudo apt install mariadb-server
Configuração básica de segurança
sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, you'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
Aperte somente Enter!
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n]
Escolha n Enter!
Change the root password? [Y/n]
Esolha n Entre!
Para as perguntas restantes escolha Y!
Cheche o servidor
sudo service mariadb restart
sudo service mariadb status
Definindo usuário admin do banco
sudo mariadb
> GRANT ALL ON *.* TO 'admin_user'@'localhost' IDENTIFIED BY 'admin_password';
> CREATE DATABASE crashfix_db;
> CREATE USER 'crashfix_user'@'localhost' IDENTIFIED BY 'user_password';
> GRANT ALL PRIVILEGES ON crashfix_db.* TO 'crashfix_user'@'localhost';
> FLUSH PRIVILEGES;
Previnindo o erro de GROUP_BY
Editar o /etc/mysql/my.cnf e adicionar ao final
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
E reiniciar o serviço
sudo systemctl start mysql.service
Instalacão do CrashFix Service
Baixando e Compilando o CrashFix Service
Baixe o repositório do CrashFix Service:
https://github.com/jsonzilla/crashfix_service
Veja o README para instruções de como compilar o serviço.
Enviando CrashFix para o servidor
scp -P 22 -i .\crashfix12.pem .\crashfix-service-1.0.5-Linux-amd64.deb user@server_ip:/home/user/
scp -P 22 -i .\crashfix12.pem .\crashfix_web.zip user@server_ip:/home/user/
Instalando o serviço
sudo dpkg -i crashfix-service-1.0.5-Linux-amd64.deb
sudo update-rc.d -f crashfixd defaults
sudo service crashfixd start
ps aux | grep crashfixd
Altera o path da configuração do crashfix se necessario
sudo nano /etc/crashfix/crashfixd.conf
WEB_ROOT_DIR = /var/www/html/
Defina a informações de licença em /usr/share/crashfix/licenses/crashfix.lic
Configurando o PHP
post_max_size = 1024M
upload_max_filesize = 1024M
extension=curl
extension=fileinfo
extension=gd
extension=gettext
extension=intl
extension=mbstring
extension=exif ; Must be after mbstring as it depends on it
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=sockets
Optional
session.cookie_lifetime = 1800
Configuração do servidor CrashFix WebApp
Edite o arquivo user_params.ini dentro de crashfix_webapp/protected/config/user_params.ini com as suas informações Copie toda a pasta para o root do servidor
cd /var/www/hmtl
sudo cp -r /home/<SEU_NOME_DE_USUARIO>/crashfix/crashfix_webapp .
Aplique as permissões necessárias de escrita e leitura da pasta para o Apache
sudo chmod -R 0755 crashfix_webapp
sudo chown -R www-data:www-data crashfix_webapp
Crie e inicialize o banco de dados (precione “y” quando solicitado)
sudo php crashfix_webapp/protected/yiic.php migrate
Neste ponto já é possível logar como root no servidor utilizando :
- Login: root
- Senha: rootpwd
Será necessário criar uma nova senha para o root
Firewall
sudo apt update
sudo apt install ufw
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
Limitar a 25 conexões por IP simultâneas
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j REJECT --reject-with tcp-reset
Fail2Ban Install
Para instalar e configurar o fail2ban no Debian, siga os passos abaixo:
Passo 1: Instalar o fail2ban
-
Atualize a lista de pacotes:
sudo apt update -
Instale o fail2ban:
sudo apt install fail2ban
Passo 2: Configurar o fail2ban
-
Crie uma cópia do arquivo de configuração padrão para edição:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local -
Edite o arquivo jail.local:
sudo nano /etc/fail2ban/jail.localNo arquivo, você pode configurar as opções gerais e específicas para cada serviço. Algumas das configurações importantes incluem:
-
Configurações Gerais (no início do arquivo):
[DEFAULT] bantime = 600 findtime = 600 maxretry = 5 backend = systemd-
bantime: Tempo em segundos que o IP será banido (por exemplo, 600 segundos = 10 minutos). -
findtime: Período em segundos durante o qual se ocorremmaxretryfalhas de login, o IP será banido. -
maxretry: Número de tentativas de login falhadas antes de banir o IP.
-
-
-
Habilitar e configurar as jails para Apache e SSH:
No arquivo jail.local, procure as seções
[sshd]e[apache-auth](ou outras relacionadas ao Apache, como[apache-badbots],[apache-overflows], etc.) e ajuste conforme necessário:[sshd] enabled = true port = ssh maxretry = 5Certifique-se de que
enabledestá definido comotruepara ativar a jail.
Passo 3: Reiniciar o fail2ban
Depois de fazer as configurações, reinicie o serviço fail2ban para aplicar as mudanças:
sudo systemctl restart fail2ban
Passo 4: Verificar o Status do fail2ban
Para verificar se o fail2ban está funcionando corretamente, use:
sudo fail2ban-client status
Para verificar o status de uma jail específica (por exemplo, sshd):
sudo fail2ban-client status sshd
Isso deve instalar e configurar o fail2ban no Debian, protegendo seu servidor contra tentativas de login maliciosas no Apache e SSH.
Redirecionar porta 8080
sudo nano /etc/apache2/ports.conf
Adicione a porta 8080 as portas ouvidas e reinicie o serviço.
Auto Delete no Crontab
Instalar o crom e habilitar
sudo apt install cron
sudo systemctl enable cron
sudo systemctl start cron
Criar o script no /script/clean_crashfix_90_days.sh
find /var/www/html/protected/data/crashReports/ -type f -ctime +100 -delete
E com crontab adicionar algo assim:
0 9,21 * * 1 /scripts/clean_crashfix_120_days.sh