Add entire Linux Server documentation section (Nivel 1-3)

This commit is contained in:
João Pedro Toledo Goncalves 2026-01-25 01:34:29 -03:00
parent f0ffecc533
commit d11bea73c1
19 changed files with 768 additions and 5 deletions

View File

@ -90,11 +90,13 @@ Este repositório contém a documentação técnica da iT Guys, organizada por s
- [ ] [Nível 3] Backup de Volumes
### 8. Linux Server
- [ ] [Nível 1] Comandos Essenciais de Diagnóstico
- [ ] [Nível 2] Gerenciamento de Pacotes e Updates
- [ ] [Nível 2] Configuração de Firewall
- [ ] [Nível 3] Hardening de Servidor
- [ ] [Nível 3] Análise de Logs (Journalctl)
- [x] [Nível 1] Comandos Essenciais de Diagnóstico
- [x] [Nível 2] Gerenciamento de Pacotes e Updates
- [x] [Nível 2] Configuração de Rede e Firewall
- [x] [Nível 2] Gestão de Usuários e Permissões
- [x] [Nível 3] Hardening de Servidor
- [x] [Nível 3] Análise de Logs (Journalctl)
- [x] [Nível 3] Scripting e Automação Avançada
**Novas Seções (Fase 2 & 3):**
- [ ] [Nível 1-3] Service Desk (Zammad)

View File

@ -0,0 +1,116 @@
# MANUAL TÉCNICO - COMANDOS ESSENCIAIS DE DIAGNÓSTICO E NAVEGAÇÃO
**Código:** ITGSUP 0010/26 | **Classificação:** INTERNO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Padronizar o uso de comandos básicos de terminal para navegação, edição de arquivos e diagnóstico inicial de servidores Linux, cobrindo as distribuições Debian/Ubuntu e RHEL (CentOS/AlmaLinux).
## 3. PRÉ-REQUISITOS
* [ ] Acesso ao terminal do servidor (via SSH ou Console).
* [ ] Usuário com permissão básica (ou `sudo` para comandos administrativos).
## 4. DISTRIBUIÇÕES SUPORTADAS
Este manual é validado para:
* **Debian/Ubuntu:** Ubuntu 24.04, Debian 11/12.
* **RHEL Family:** AlmaLinux, RockyLinux, CentOS.
---
## 5. PASSO A PASSO (EXECUÇÃO)
### Etapa 1: Navegação no Sistema de Arquivos
Use estes comandos para se mover pelos diretórios do servidor.
| Comando | Descrição | Exemplo |
| :--- | :--- | :--- |
| **`pwd`** | Mostra onde você está (caminho atual). | `pwd` |
| **`ls`** | Lista arquivos na pasta. | `ls -lah` (Lista detalhada e oculta) |
| **`cd`** | Muda de diretório. | `cd /var/log` |
| **`cd ..`** | Volta um nível (pasta anterior). | `cd ..` |
| **`cd ~`** | Vai para a pasta pessoal do usuário no `/home`. | `cd ~` |
> 🚀 **DICA:** Use a tecla `TAB` para autocompletar nomes de pastas e arquivos.
### Etapa 2: Leitura e Edição de Arquivos
Como ler logs, configs e editar textos.
**Leitura Rápida:**
* **`cat [arquivo]`**: Exibe o arquivo inteiro na tela.
* *Ex:* `cat /etc/os-release` (Mostra a versão do Linux).
* **`head [arquivo]`**: Mostra as primeiras 10 linhas.
* **`tail [arquivo]`**: Mostra as últimas 10 linhas.
* *Ex:* `tail -f /var/log/syslog` (Acompanha o log em tempo real).
**Editores de Texto:**
Existem basicamente três editores comuns. Escolha o que preferir.
1. **Nano (Mais fácil):**
* **Abrir:** `nano arquivo.txt`
* **Salvar:** `Ctrl + O`, depois `Enter`.
* **Sair:** `Ctrl + X`.
2. **Vim / Vi (Padrão e Poderoso):**
* **Abrir:** `vim arquivo.txt`
* **Inserir Texto:** Aperte `i`.
* **Sair do Modo Inserção:** Aperte `Esc`.
* **Salvar e Sair:** Aperte `Esc`, digite `:wq` e `Enter`.
* **Sair sem Salvar:** Aperte `Esc`, digite `:q!` e `Enter`.
### Etapa 3: Diagnóstico de Recursos (CPU/RAM/Disco)
Verifique se o servidor está lento ou travado.
**1. Disco Cheio? (`df`)**
Use `df -h` para ver o espaço em disco legível (GB/MB).
```bash
df -h
```
> ⚠️ **ATENÇÃO:** Se a partição `/` (root) estiver 100%, o servidor pode parar.
**2. Memória Cheia? (`free`)**
Use `free -h` para ver a RAM usada.
```bash
free -h
```
**3. Processo Travado? (`top` ou `htop`)**
Mostra processos consumindo muita CPU.
* **`top`**: Pressione `q` para sair.
* Identifique o **PID** (número do processo) se precisar matá-lo.
**4. Tempo Ligado? (`uptime`)**
Mostra há quanto tempo o servidor está ligado e a carga média (load average).
```bash
uptime
```
### Etapa 4: Teste de Conectividade (`ping`)
Verifique se o servidor alcança a internet ou outro host.
```bash
ping 8.8.8.8 -c 4
```
* `-c 4`: Envia apenas 4 pacotes (padrão no Windows, mas no Linux o ping é infinito sem isso).
## 6. DADOS TÉCNICOS
| Caminho Importante | Descrição |
| :--- | :--- |
| `/etc/` | Arquivos de configuração do sistema. |
| `/var/log/` | Logs do sistema (auth, syslog, messages). |
| `/home/` | Arquivos dos usuários. |
| `/root/` | Pasta pessoal do administrador (root). |
## 7. VALIDAÇÃO FINAL
- [ ] Consegue navegar entre pastas (`cd`, `ls`)?
- [ ] Consegue criar e editar um arquivo de teste (`nano teste.txt`)?
- [ ] O comando `df -h` mostra espaço livre em disco?

View File

@ -0,0 +1,110 @@
# MANUAL TÉCNICO - CONFIGURAÇÃO DE REDE E FIREWALL
**Código:** ITGINF 0011/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Definir procedimentos para configuração de Endereçamento IP estático, DNS e regras de Firewall em servidores Linux, respeitando as ferramentas nativas de cada distribuição.
## 3. PRÉ-REQUISITOS
* [ ] Acesso console (preferencial) ou SSH (Cuidado para não se bloquear ao alterar IP/Firewall).
* [ ] Dados da Rede: IP, Máscara (CIDR), Gateway e DNS definidos.
---
## 4. CONFIGURAÇÃO DE REDE (IP ESTÁTICO)
### Ubuntu 24.04 (Netplan)
O Ubuntu usa arquivos YAML no Netplan.
1. Edite o arquivo em `/etc/netplan/`. Ex: `00-installer-config.yaml`.
```bash
sudo nano /etc/netplan/00-installer-config.yaml
```
2. Modelo de Configuração:
```yaml
network:
version: 2
ethernets:
ens160: # Nome da interface (verifique com 'ip link')
dhcp4: no
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
```
3. Aplique: `sudo netplan apply`
### Debian 11/12 (Interfaces)
Edição clássica do arquivo interfaces.
1. Arquivo: `/etc/network/interfaces`
```bash
auto ens192
iface ens192 inet static
address 192.168.1.10/24
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
```
2. Reinicie a rede: `sudo systemctl restart networking`
### RHEL / AlmaLinux / Rocky (NetworkManager)
Recomendado usar `nmcli` (Linha de Comando do Network Manager).
1. Listar conexões: `nmcli con show`
2. Definir IPv4 Manual:
```bash
sudo nmcli con mod "ens192" ipv4.addresses 192.168.1.10/24
sudo nmcli con mod "ens192" ipv4.gateway 192.168.1.1
sudo nmcli con mod "ens192" ipv4.dns "8.8.8.8,1.1.1.1"
sudo nmcli con mod "ens192" ipv4.method manual
```
3. Reiniciar interface: `sudo nmcli con up "ens192"`
---
## 5. CONFIGURAÇÃO DE FIREWALL
### Ubuntu / Debian (UFW - Uncomplicated Firewall)
Mais simples e recomendado para a maioria dos casos.
1. **Status:** `sudo ufw status`
2. **Habilitar:** `sudo ufw enable` (CUIDADO: Libere o SSH antes!).
3. **Liberar SSH:** `sudo ufw allow 22/tcp`
4. **Liberar Web:** `sudo ufw allow 80/tcp`
5. **Bloquear tudo (Default):** O UFW já bloqueia entrada por padrão.
6. **Remover regra:** `sudo ufw delete allow 80/tcp`
### RHEL / CentOS (Firewalld)
Gerenciador dinâmico padrão do mundo Red Hat.
1. **Status:** `sudo firewall-cmd --state`
2. **Listar regras (Zona Padrão):** `sudo firewall-cmd --list-all`
3. **Liberar Porta (Permanente):**
```bash
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
```
4. **Liberar Serviço:** `sudo firewall-cmd --permanent --add-service=http`
## 6. DADOS TÉCNICOS
| Ferramenta | Arquivo Config | Serviço |
| :--- | :--- | :--- |
| **Netplan** | `/etc/netplan/*.yaml` | `systemd-networkd` |
| **Ifupdown** | `/etc/network/interfaces` | `networking` |
| **NetworkManager** | `/etc/NetworkManager/` | `NetworkManager` |
## 7. VALIDAÇÃO FINAL
- [ ] O comando `ip addr` mostra o IP correto?
- [ ] O comando `ping 8.8.8.8` funciona (Gateway/Rota ok)?
- [ ] O comando `ping google.com` funciona (DNS ok)?
- [ ] O acesso SSH continua funcionando após ligar o firewall?

View File

@ -0,0 +1,109 @@
# MANUAL TÉCNICO - GERENCIAMENTO DE PACOTES E ATUALIZAÇÕES
**Código:** ITGINF 0010/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Orientar a instalação, remoção, atualização de softwares e resolução de problemas de repositórios em servidores Linux (Debian/Ubuntu e RHEL/CentOS).
## 3. PRÉ-REQUISITOS
* [ ] Acesso root ou usuário com permissão `sudo`.
* [ ] Conexão com a internet liberada no Firewall (Portas 80/443).
---
## 4. COMANDOS POR FAMÍLIA DE DISTRIBUIÇÃO
> ⚠️ **IDENTIFIQUE O SISTEMA:**
> Use `cat /etc/os-release` para saber se está no **Debian/Ubuntu** ou **RHEL/CentOS**.
### Família Debian (Ubuntu 24.04, Debian 11/12)
Gerenciador: **APT** (`apt`) e **DPKG**.
| Ação | Comando |
| :--- | :--- |
| **Atualizar lista** | `sudo apt update` |
| **Aplicar updates** | `sudo apt upgrade -y` |
| **Instalar App** | `sudo apt install [pacote]` |
| **Remover App** | `sudo apt remove [pacote]` |
| **Remover + Configs** | `sudo apt purge [pacote]` |
| **Buscar Pacote** | `apt search [termo]` |
### Família RHEL (AlmaLinux, Rocky, CentOS)
Gerenciador: **DNF** (`dnf`) ou YUM (Legado).
| Ação | Comando |
| :--- | :--- |
| **Atualizar tudo** | `sudo dnf update -y` |
| **Instalar App** | `sudo dnf install [pacote]` |
| **Remover App** | `sudo dnf remove [pacote]` |
| **Buscar Pacote** | `dnf search [termo]` |
| **Info do Pacote** | `dnf info [pacote]` |
---
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
### Problema 1: Erro "Server Not Found" ou Lentidão (Troca de Mirrors)
Muitas vezes o repositório padrão é lento ou está fora do ar.
**No Debian/Ubuntu:**
1. Instale o `netselect-apt` para achar o mirror mais rápido (opcional, ou edite manualmente).
2. Edite a lista de fontes:
```bash
sudo nano /etc/apt/sources.list
```
*(No Ubuntu atual, pode ser `/etc/apt/sources.list.d/ubuntu.sources`)*.
3. Substitua URLs lentas (ex: `br.archive.ubuntu.com`) por outras oficiais (ex: `mirror.unesp.br`).
**No RHEL/CentOS:**
1. Os mirrors ficam em `/etc/yum.repos.d/`.
2. Geralmente o sistema escolhe o melhor automaticamente (`fastestmirror`). Tente limpar o cache:
```bash
sudo dnf clean all
sudo dnf makecache
```
### Problema 2: Erro de Chave GPG (GPG Error / NO_PUBKEY)
Acorre ao adicionar repositórios de terceiros (ex: Docker, Zabbix).
**Correção Padrão:**
```bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [CÓDIGO_DA_CHAVE_DO_ERRO]
```
Ou baixe a chave atualizada do fornecedor e coloque em `/etc/apt/trusted.gpg.d/`.
### Problema 3: Lock File ("Could not get lock /var/lib/dpkg/lock")
Significa que **outro processo** (como updates automáticos) está usando o APT.
1. **Não force o delete do arquivo de lock** exceto em último caso.
2. Verifique quem está usando:
```bash
ps aux | grep apt
```
3. Aguarde o processo terminar ou mate-o se estiver travado (`sudo kill [PID]`).
4. Se persistir após reboot, remova o lock:
```bash
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
```
## 6. DADOS TÉCNICOS
| Sistema | Arquivo de Repositórios | Logs de Instalação |
| :--- | :--- | :--- |
| **Debian/Ubuntu** | `/etc/apt/sources.list` | `/var/log/apt/history.log` |
| **RHEL/CentOS** | `/etc/yum.repos.d/*.repo` | `/var/log/dnf.log` |
## 7. VALIDAÇÃO FINAL
- [ ] O comando de update rodou sem erros vermelhos?
- [ ] Conseguiu instalar um pacote de teste (ex: `neofetch` ou `htop`)?
- [ ] O sistema não reporta dependências quebradas?

View File

@ -0,0 +1,94 @@
# MANUAL TÉCNICO - GESTÃO DE USUÁRIOS E PERMISSÕES
**Código:** ITGINF 0012/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Padronizar a criação de usuários, gerenciamento de senhas, criação de grupos e permissionamento de arquivos em servidores Linux.
## 3. PRÉ-REQUISITOS
* [ ] Acesso root ou usuário com permissão `sudo`.
---
## 4. GESTÃO DE USUÁRIOS E GRUPOS
### Criar Usuário
**Método Recomendado (Interativo - Ubuntu/Debian):**
```bash
sudo adduser nome_usuario
```
*Este comando já cria a pasta /home, pede a senha e define o shell.*
**Método Padrão (Universal / RHEL):**
```bash
sudo useradd -m -s /bin/bash nome_usuario
sudo passwd nome_usuario
```
*-m cria o home, -s define o bash como shell.*
### Adicionar Usuário ao Grupo Sudo/Wheel (Administrador)
* **Debian/Ubuntu:** Grupo `sudo`.
```bash
sudo usermod -aG sudo nome_usuario
```
* **RHEL/CentOS:** Grupo `wheel`.
```bash
sudo usermod -aG wheel nome_usuario
```
### Bloquear/Desbloquear e Deletar
* **Bloquear senha:** `sudo passwd -l nome_usuario`
* **Desbloquear:** `sudo passwd -u nome_usuario`
* **Deletar usuário:** `sudo userdel -r nome_usuario` (O `-r` apaga a pasta home).
---
## 5. PERMISSÕES DE ARQUIVOS E PASTAS
No Linux, permissões são definidas por Leitura (r), Escrita (w) e Execução (x) para Dono (u), Grupo (g) e Outros (o).
### Alterar Dono (`chown`)
Muda quem é o dono do arquivo ou pasta.
```bash
# Sintaxe: chown usuario:grupo arquivo
sudo chown www-data:www-data /var/www/html/index.php
sudo chown -R joao:devs /app/projeto (Recursivo para pasta)
```
### Alterar Permissões (`chmod`)
Modo numérico (Octal) é o mais comum:
* **7** = Full (rwx)
* **6** = Ler/Escrever (rw-)
* **5** = Ler/Executar (r-x)
* **4** = Ler (r--)
**Exemplos Comuns:**
* `chmod 755 arquivo`: Dono faz tudo, outros só leem/executam. (Padrão para scripts/pastas)
* `chmod 644 arquivo`: Dono le/escreve, outros só leem. (Padrão para configs/textos)
* `chmod 777 arquivo`: **PERIGOSO**. Todo mundo mexe. Evite.
* `chmod +x script.sh`: Torna o arquivo executável.
---
## 6. DADOS TÉCNICOS
| Arquivo | Descrição |
| :--- | :--- |
| `/etc/passwd` | Lista de usuários e infos (shell, UID). |
| `/etc/shadow` | Hash das senhas (Restrito ao root). |
| `/etc/group` | Lista de grupos e membros. |
| `/etc/sudoers` | Regras de quem pode usar sudo (Use `visudo` para editar). |
## 7. VALIDAÇÃO FINAL
- [ ] O usuário novo consegue logar (ssh ou local)?
- [ ] O usuário consegue usar `sudo` (se for admin)?
- [ ] As permissões dos arquivos protegem dados sensíveis (outros usuários não conseguem escrever)?

View File

@ -0,0 +1,107 @@
# MANUAL TÉCNICO - ANÁLISE DE LOGS (SYSTEMD/JOURNALCTL)
**Código:** ITGENG 0011/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Capacitar a engenharia na extração, filtro e análise de logs centralizados do `systemd` via comando `journalctl`, substituindo a leitura manual de arquivos texto dispersos.
## 3. PRÉ-REQUISITOS
* [ ] Servidor rodando Systemd (Todas as distros modernas listadas).
* [ ] Acesso root ou usuário no grupo `systemd-journal`.
---
## 4. USO BÁSICO E FILTRAGEM
O `journalctl` exibe logs de todos os serviços unificados.
### Filtrar por Serviço (Unit)
A forma mais comum de debug.
```bash
journalctl -u nginx
journalctl -u ssh
journalctl -u docker
```
### Visualizar em Tempo Real (Follow)
Igual ao `tail -f`.
```bash
journalctl -u nginx -f
```
### Filtrar por Tempo (Since / Until)
Essencial para incidentes ("O que aconteceu ontem às 14h?").
```bash
journalctl --since "2023-10-20 14:00:00" --until "2023-10-20 14:30:00"
journalctl --since "1 hour ago"
journalctl --since "today"
```
### Filtrar por Prioridade (Erro/Crítico)
Isola apenas problemas reais.
* 0: emerg
* 1: alert
* 2: crit
* 3: err
* 4: warning
```bash
journalctl -p err -b 0
```
*(`-b 0` limita ao boot atual, ignorando reboots passados)*
---
## 5. PERSISTÊNCIA DE LOGS
Por padrão, muitas distros configuram o journald como **Volátil** (memória RAM), perdendo logs ao reiniciar.
1. Verifique o armazenamento:
```bash
cat /etc/systemd/journald.conf | grep Storage
```
2. Para ativar persistência:
* Opção A (Automática): Crie a pasta de logs.
```bash
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald
```
* Opção B (Config): Edite `/etc/systemd/journald.conf` e defina `Storage=persistent`.
## 6. LIMPEZA E MANUTENÇÃO (Vacuum)
Logs binários podem crescer muito. Limpe-os seguramente:
* **Manter apenas 1GB:**
```bash
journalctl --vacuum-size=1G
```
* **Manter apenas os últimos 10 dias:**
```bash
journalctl --vacuum-time=10d
```
## 7. EXPORTAÇÃO DE DADOS
Para enviar logs para devs ou anexar em chamados.
* **Sem paginação (Texto Puro):**
```bash
journalctl -u servico --no-pager > log_exportado.txt
```
* **Formato JSON (Para ELK/Splunk):**
```bash
journalctl -u servico -o json-pretty
```
## 8. VALIDAÇÃO FINAL
- [ ] O comando `journalctl` retorna dados?
- [ ] Os logs persistem após um reboot?
- [ ] A rotação de logs (Vacuum) está funcionando para não lotar o disco?

View File

@ -0,0 +1,98 @@
# MANUAL TÉCNICO - HARDENING DE SERVIDOR LINUX
**Código:** ITGENG 0010/26 | **Classificação:** CONFIDENCIAL
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Aplicar práticas de segurança para reduzir a superfície de ataque em servidores Linux expostos ou críticos, focando em SSH, Proteção contra Força Bruta e Kernel Tuning.
## 3. PRÉ-REQUISITOS
* [ ] Acesso Root.
* [ ] **CRÍTICO:** Tenha uma chave SSH pública configurada e testada no servidor ANTES de desabilitar a senha.
* [ ] Backup das configurações originais.
---
## 4. SEGURANÇA NO SSH (Desabilitar Senha)
O vetor de ataque mais comum é força bruta na porta 22.
1. Edite o arquivo: `/etc/ssh/sshd_config`
2. Garanta que as seguintes linhas existem e estão descomentadas:
```config
PermitRootLogin prohibit-password # Ou 'no' (Recomendado criar usuario admin separado)
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
```
3. Valide a configuração: `sudo sshd -t`
4. Reinicie o serviço:
* Debian/Ubuntu: `sudo systemctl restart ssh`
* RHEL/CentOS: `sudo systemctl restart sshd`
> ⚠️ **IMPORTANTE:** Não feche a sessão atual sem abrir uma nova para testar se a chave funcionou. Se falhar, você perderá acesso remoto.
## 5. PROTEÇÃO CONTRA BRUTE-FORCE (Fail2Ban)
O Fail2Ban monitora logs e bane IPs que erram a senha repetidamente.
**Instalação:**
* Debian/Ubuntu: `sudo apt install fail2ban`
* RHEL/CentOS: `sudo dnf install epel-release && sudo dnf install fail2ban`
**Configuração Básica:**
1. Copie o arquivo padrão de config:
```bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
2. Edite `/etc/fail2ban/jail.local` e ative a proteção SSH:
```ini
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log ; (Ou /var/log/secure no RHEL)
maxretry = 3
bantime = 3600 ; (1 hora)
```
3. Reinicie: `sudo systemctl restart fail2ban`
4. Verifique: `sudo fail2ban-client status sshd`
## 6. AJUSTES DE KERNEL (Sysctl)
Proteção contra ataques de rede (Spoofing, ICMP Redirects).
1. Crie o arquivo: `/etc/sysctl.d/99-security.conf`
2. Adicione:
```ini
# Desabilita redirecionamentos ICMP (Man-in-the-middle)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Ignora pings de broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Protecao contra Syn Flood
net.ipv4.tcp_syncookies = 1
# Log de pacotes suspeitos (Martian packets)
net.ipv4.conf.all.log_martians = 1
```
3. Aplique: `sudo sysctl --system`
## 7. DADOS TÉCNICOS
| Serviço | Porta Padrão | Logs |
| :--- | :--- | :--- |
| **SSH** | 22/tcp | `/var/log/auth.log` (Deb) / `/var/log/secure` (RHEL) |
| **Fail2Ban** | N/A | `/var/log/fail2ban.log` |
## 8. VALIDAÇÃO FINAL
- [ ] Tentar logar via SSH sem chave pede senha? (Deve falhar: "Permission denied (publickey)")
- [ ] O Fail2Ban está rodando (`systemctl status fail2ban`)?
- [ ] Errar a senha 3 vezes bane o IP? (Cuidado para não se banir, use 4G para testar).

View File

@ -0,0 +1,127 @@
# MANUAL TÉCNICO - SCRIPTING E AUTOMAÇÃO AVANÇADA
**Código:** ITGENG 0012/26 | **Classificação:** CONFIDENCIAL
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Padronizar a criação de scripts Shell (Bash), agendamento de tarefas (Cron), automação de relatórios (AWK) e notificações por e-mail para otimizar a administração de servidores.
## 3. PRÉ-REQUISITOS
* [ ] Conhecimento de lógica de programação básica.
* [ ] Servidor SMTP (Exchange Interno ou O365) disponível para relay.
---
## 4. SHELL SCRIPTING BÁSICO
Todo script na iT Guys deve seguir este cabeçalho:
```bash
#!/bin/bash
# -------------------------------------------------------------------------
# Script: backup_diario.sh
# Descricao: Realiza backup e envia logs.
# Autor: João Pedro Toledo Gonçalves
# Data: {{DATA_ATUAL}}
# -------------------------------------------------------------------------
# Variaveis
DESTINO="/mnt/backup"
LOG="/var/log/meu_backup.log"
# Funcao de Log com Data
log_msg() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG"
}
# Execucao
log_msg "Inicio do Backup"
tar -czf "$DESTINO/backup.tar.gz" /etc/
if [ $? -eq 0 ]; then
log_msg "Sucesso"
else
log_msg "Erro no Backup"
fi
```
> ⚡ **DICA:** Execute com `bash -x script.sh` para debugar linha a linha.
## 5. AGENDAMENTO (CRON)
Use o agendador nativo para rodar scripts automaticamente.
1. Edite a tabela do usuário: `crontab -e`
2. Sintaxe: `m h dom mon dow command`
3. Exemplos Úteis:
```bash
# Rodar todo dia as 03:00 da manha
00 03 * * * /home/scripts/backup_diario.sh
# Rodar a cada 1 hora
00 * * * * /usr/bin/php /var/www/html/cron.php
# Rodar todo dia 1 do mes
00 05 1 * * /home/scripts/relatorio_mensal.sh
```
## 6. NOTIFICAÇÕES POR E-MAIL (SMTP)
Para scripts enviarem alertas, configure um cliente SMTP simples como o `msmtp` ou `postfix` (relay).
**Exemplo de Envio em Script (usando `mail` ou `sendmail`):**
```bash
ASSUNTO="Alerta: Disco Cheio no Servidor $(hostname)"
EMAIL="monitoramento@itguys.com.br"
CORPO="O servidor esta com 95% de disco ocupado. Verifique."
echo "$CORPO" | mail -s "$ASSUNTO" -r "noreply@itguys.com.br" "$EMAIL"
```
**Configuração SMTP (Exemplo genérico `/etc/postfix/main.cf`):**
```config
relayhost = [smtp.office365.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_security_level = encrypt
```
## 7. RELATÓRIOS CUSTOMIZADOS (AWK)
O `awk` é perfeito para extrair colunas de logs.
**Exemplo: Listar os 5 IPs que mais acessaram o Nginx**
```bash
# Log format: IP - - [Data] "GET..."
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -5
```
* `print $1`: Pega a primeira coluna (IP).
* `sort | uniq -c`: Conta ocorrências.
* `head -5`: Pega o top 5.
## 8. MICRO APPS (ALIASES)
Crie atalhos para comandos longos no `~/.bashrc`:
```bash
# Atualizar tudo com 1 palavra
alias updatedb='sudo apt update && sudo apt upgrade -y'
# Ver logs coloridos do nginx
alias logweb='tail -f /var/log/nginx/error.log | ccze'
# Limpar cache de memoria
alias dropcache='sync; echo 3 | sudo tee /proc/sys/vm/drop_caches'
```
*Aplique com `source ~/.bashrc`.*
## 9. VALIDAÇÃO FINAL
- [ ] O script roda manualmente sem erros?
- [ ] O Cronjob apareceu no log (`grep CRON /var/log/syslog`)?
- [ ] O e-mail de teste chegou na caixa de correio?

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.