Add entire Linux Server documentation section (Nivel 1-3)
This commit is contained in:
parent
f0ffecc533
commit
d11bea73c1
12
README.md
12
README.md
|
|
@ -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
|
- [ ] [Nível 3] Backup de Volumes
|
||||||
|
|
||||||
### 8. Linux Server
|
### 8. Linux Server
|
||||||
- [ ] [Nível 1] Comandos Essenciais de Diagnóstico
|
- [x] [Nível 1] Comandos Essenciais de Diagnóstico
|
||||||
- [ ] [Nível 2] Gerenciamento de Pacotes e Updates
|
- [x] [Nível 2] Gerenciamento de Pacotes e Updates
|
||||||
- [ ] [Nível 2] Configuração de Firewall
|
- [x] [Nível 2] Configuração de Rede e Firewall
|
||||||
- [ ] [Nível 3] Hardening de Servidor
|
- [x] [Nível 2] Gestão de Usuários e Permissões
|
||||||
- [ ] [Nível 3] Análise de Logs (Journalctl)
|
- [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):**
|
**Novas Seções (Fase 2 & 3):**
|
||||||
- [ ] [Nível 1-3] Service Desk (Zammad)
|
- [ ] [Nível 1-3] Service Desk (Zammad)
|
||||||
|
|
|
||||||
|
|
@ -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?
|
||||||
Binary file not shown.
|
|
@ -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?
|
||||||
Binary file not shown.
|
|
@ -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?
|
||||||
Binary file not shown.
|
|
@ -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)?
|
||||||
Binary file not shown.
|
|
@ -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?
|
||||||
Binary file not shown.
|
|
@ -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).
|
||||||
Binary file not shown.
|
|
@ -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.
Binary file not shown.
Loading…
Reference in New Issue