From d11bea73c10270707de1e3891c9b8c77f91796a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Toledo?= Date: Sun, 25 Jan 2026 01:34:29 -0300 Subject: [PATCH] Add entire Linux Server documentation section (Nivel 1-3) --- README.md | 12 +- ...el 1] Comandos Essenciais de Diagnóstico.md | 116 ++++++++++++++++ ...l 1] Comandos Essenciais de Diagnóstico.pdf | Bin 0 -> 19878 bytes ...ível 2] Configuração de Rede e Firewall.md | 110 +++++++++++++++ ...vel 2] Configuração de Rede e Firewall.pdf | Bin 0 -> 18772 bytes ...el 2] Gerenciamento de Pacotes e Updates.md | 109 +++++++++++++++ ...l 2] Gerenciamento de Pacotes e Updates.pdf | Bin 0 -> 19097 bytes ...ível 2] Gestão de Usuários e Permissões.md | 94 +++++++++++++ ...vel 2] Gestão de Usuários e Permissões.pdf | Bin 0 -> 18184 bytes .../[Nível 3] Análise de Logs (Journalctl).md | 107 +++++++++++++++ ...[Nível 3] Análise de Logs (Journalctl).pdf | Bin 0 -> 18160 bytes .../[Nível 3] Hardening de Servidor.md | 98 ++++++++++++++ .../[Nível 3] Hardening de Servidor.pdf | Bin 0 -> 18788 bytes ...Nível 3] Scripting e Automação Avançada.md | 127 ++++++++++++++++++ ...ível 3] Scripting e Automação Avançada.pdf | Bin 0 -> 19095 bytes documentacao linux/README.pdf | Bin 0 -> 14145 bytes documentacao linux/alpine/README.pdf | Bin 0 -> 14193 bytes documentacao linux/debian/README.pdf | Bin 0 -> 14193 bytes documentacao linux/ubuntu/README.pdf | Bin 0 -> 14193 bytes 19 files changed, 768 insertions(+), 5 deletions(-) create mode 100644 documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.md create mode 100644 documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.pdf create mode 100644 documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.md create mode 100644 documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.pdf create mode 100644 documentacao linux/Nivel_2/[Nível 2] Gerenciamento de Pacotes e Updates.md create mode 100644 documentacao linux/Nivel_2/[Nível 2] Gerenciamento de Pacotes e Updates.pdf create mode 100644 documentacao linux/Nivel_2/[Nível 2] Gestão de Usuários e Permissões.md create mode 100644 documentacao linux/Nivel_2/[Nível 2] Gestão de Usuários e Permissões.pdf create mode 100644 documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).md create mode 100644 documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).pdf create mode 100644 documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.md create mode 100644 documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.pdf create mode 100644 documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.md create mode 100644 documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.pdf create mode 100644 documentacao linux/README.pdf create mode 100644 documentacao linux/alpine/README.pdf create mode 100644 documentacao linux/debian/README.pdf create mode 100644 documentacao linux/ubuntu/README.pdf diff --git a/README.md b/README.md index 97aaf24..2b5e64a 100644 --- a/README.md +++ b/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 ### 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) diff --git a/documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.md b/documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.md new file mode 100644 index 0000000..d3cbac0 --- /dev/null +++ b/documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.md @@ -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? diff --git a/documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.pdf b/documentacao linux/Nivel_1/[Nível 1] Comandos Essenciais de Diagnóstico.pdf new file mode 100644 index 0000000000000000000000000000000000000000..877905c5113ee21af7b4d0a5764e8e6e5fb18127 GIT binary patch literal 19878 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 HudBr~FaZu7 literal 0 HcmV?d00001 diff --git a/documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.md b/documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.md new file mode 100644 index 0000000..8f1aa58 --- /dev/null +++ b/documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.md @@ -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? diff --git a/documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.pdf b/documentacao linux/Nivel_2/[Nível 2] Configuração de Rede e Firewall.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a251acbe5eb144946c49be92add9d5e0f4614a2c GIT binary patch literal 18772 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 z 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 d*CjN6KgXkMYyX=B(Sz8>3P(aBEF%K ⚠️ **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? diff --git a/documentacao linux/Nivel_2/[Nível 2] Gerenciamento de Pacotes e Updates.pdf b/documentacao linux/Nivel_2/[Nível 2] Gerenciamento de Pacotes e Updates.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98778ab2970782bae302c7eff0794efb17e8070c GIT binary patch literal 19097 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%0DfBr-$KYB zQd!pIvbFZ}wBG5>hxq}I-`_msvM?FJ?=VDK1SBLOwXtyy?e)m>$z1D_L#S{{R_x( zF9oHK@W?8*aa+PJ!S1qi4MX8l@S}jdrn@Bi?DO<@M>n*i&x?28IX-W5e%>DbZ7Y~l zAMs$1UyP8Unb5+7+%ZU0F8TpgYR`aADK*suc}Q?x?I~dcdkO_L6Th{} z;6Ab=bY>&eI5Q+dy_d9`t%Y~Pv!%2qaQ0;a`y3;Lq z{?V{_;In><369)=pU(9&f#(ThhxJL4h0RuJ;;%E`f zDzq|odC`f>n4-Wga!Qej%Q(*D(1+-ge!H1^13~mw|ZXfL>Q`-vDPFZgRwzBjUnH5DvofDIG_3cEp-DLHhL{*@H zeeApJ$>B-!VOBGNMT$#>G8S2IDgvipQ*7}Qq5RxP6x5g(rK`5*XMp*Hm!Ar3ki)dy znMY76mk%P33>9DWn>@wo`uRpZ)lhuLAn!*Lr2szu| z@hB7UDHCw>R1>#3Oz#2_3Qi>|t^5S?tpk24nOF%UchfTcZqyB2?fM|zy~mb%Y;C8> zKylI^ShqJC!Q3ToK-h^y2&MQ;TijCNShblEhhlZ)SB(Fh>LXD21G%|*ZY5tg$x>as zM>id)8dH!FG#ettCPT%pP{1TZ^P$$EG!UdL>K>wGmIF>3x2?sMYm8%~{oTVPUPQS& zFEF5rk&3qpXibn=SvbWNyy@>el_IpiBH7w%I*q@LY}c@oY$Dd#wtC6XZh?+QscZom z+&ARo-RAOU)ox0OR@kaVN|XDqmeX~X(}|V=q-jZ!@m2H^Rn4M5$x(A;;-q}^m#1Qp zE1C!!!s4uzsH}X2-!&Q%sP7qAu>1h|C}BmNs1wQO&RdS0DNzb9dp*Wa%4E`D9=em%<0fwD0!_zrnF*#td8A_L3Dd#ugU}4(uMQNfm zSSsy|?#ch_6G)`F4pOF~KrOk21QG{kPk~5O_`@1Yp56gO_{OY#__V-PbXbZ;_a5a1 zyw}hGyOZn`A1GQwC_E^|-hN$jxd~vTPs7O2G7gIgH@R+&L-=JOw_?3#TwmKDL|A-= z?|FmmX+w2+!*F;mSjXqv@*HGZqI=q$d-HdhoGOjFZ!WunKcb$0a;+&#w!UcICxfISB*!&lTzEjrxVNX{aL{-@dY=Sv1w}eSlpYt5 zD|kyzek#GSPgYS>m)@Ap^sy5iqIS>%D(}wl51<}jfjI0D4*x*9O+dQNFe{j19Q9{- zkY#-*GjScJa*d$kfDl`a80VDJn-3Ehra71O=`%O>>5BflRuDne8*}Rk+-R?8(MfiN=5eWAKZJ{ z-5F4GtI5IB(DKj01I3-64n(ddVHTyMW&a?`iN!03MJq|gq;;GQ!~Ou323g!N9d$D4 zNnT_lZm(-aGq0$AMZJ->C{++&t^L)oQn%5Q!E_VTmb$@3_%28$tswXcYXGdb8eLV*kgic;O3RCzdX z9}J~Cn(z^H*~yE+%}ysONyaKjMbG?Bkn4>SuZSE!8vMg`t$DNUivp1q8$R!`@EeDs zQCGFci-(RaIS**DX^{Wcoj(T1AM*~HIW<)~1D{-MX0&8nWL7XjYyy^tw~I@c5R*B2lHM9i9}~NP z#K-sM2NBp1LPTtWzh1EqG43tG;x?{FEXTdm*>JFUioa^zTqN=FA8j2({gdWDsRDek z@%WS58!C;U@M7cV?|&p!69Ry_Y5+Ul9td@7*kP|4s;KPiIrz7h1C#&Rg4^g z#2I!Ti>k?5>$jb}dhmZLdTAmCnA$P2a6Lkx45?ne*l<^>BvdM*TQN{Fc3F%7wxHk@ z?HeEemAMc5H4`hIRg{%GiiYx!hT+zX#l@e!0Y=1l+=6!*h}(2;0`w$F^bvFY-U#+- z#9V*As|cu;O}bM;dc+=n>;rAT_hml61d)>x2TLwtN4SvTT}t)cvb1K?C)800so4gg%E0KBi0Mx7u`hWbOs=5`DXTS%a7bVaoyMDet6``C{2}l&Gr! zw#`MU+I(C1p5VUWHbI#7?@iUIDTTRtzpzsZvvMkxG2v=`&(ciBF$Uu6`mK29V}R%>0?Y$^Ajqoq6lwA%kb1JMRg_Wa zSTC_t(e&m;D(7<^EBAyKUB1>w{^iVw`qPYt%z+)HNV*9?#_=@}W<+l}(gWP?}TFv|hd? z?CmpH=R%ADz2^Agyn-`6))BwNn-dIdDemipXPD0}>slvNJ0f#d-*EEfEn}DUoW2z+ zuc}}X^n~K~CN}(VZXj|J;<^D{LifFiaX$e#vN5V_w3ZR?7y+Mhw-up00dt_Ie ze`asCvg|>YRpne=_98l(ayxiEye6h&@PI5#Le`9exRMI8{(`z_jvx?!cIb{KUZKhNV5qMG7viu6i%!^f>8V%%1nUyQTkhZc#8Ow)Ix2b<#;yDP_0 zqaNIR9ODl+9;b~cgTKqXns$d10|O~w{YKFiw86&)1_bUo?_DQ93xek%uKGSnbis5C zp1LRv2|T1ATAjw9x=B#{qvq>v#L0K!vBsYI-{o5{9xqu1Sv*a4uom$!*B9Iq2$4k)19lwB_cd_Rx!;f85 ztgTF5nZ31K4%X$gLmQH(R|aZL*JLe8Vx(wrVy+1MAygzW0RaI?=c`R^&i8ex)mIY4 zs(_)OjLI4n$NE*cj3VV2dTgw={y|!!W{o^D%YZ*51uXpKZdqv0ypQg4Q&yF%i%pe;Iu+tE zpdSIAWXYFzj43g8bz0|68ueBF#nbP`+Z2=Tq`Tf)ybK!`9SvI>T3gK`?YUg0uNOUy zlE+GweYu7^LH*?wcbeOEYA?L@i?$7=G94t&ud{QwPUm!x|5YMf*%Li2?| zfmpN^MX7dqE@K)qu&;DbWO)%E-Z<)Ub&n;T@q*EcmH1|PE+aMhZUWuN2#$gx*TTX= zE*v~NSGgz)ieQ``yo>QYA#_Ua4ou)pOus^&(qQL}v!509#q!<04~-yfA1GY2aQ>Bh zW+R;|E*xs7xwV_LO8N+1(f44{m2SD@tR92LeuK@9y#jKP9*G3FDWDC{WYV<9lLzq2 zEf!W!lk-+8n+YVkXTV`#2EyCW2>H2o^&C=j$HzPAfjj9(JTns<_rsZz6Cxt8S%xiU z?CHGOQ^8l+tgBM-I@p8izV8%2$DC=Kca%5K2(If~vB-K;H6wrUeLOt8;& zQ!*Pn{_&&bke?RKb`eOUUR1Y1M0-E*=A6_>oHS z`cqTC2F?0-9@O$<;wnor02|Yb|?2(3`{@c?1zY_6ih+j`O65>8tk2py64{b zEE88*c(uF5SmmJ?(U%+=$-R3RYTP6pUUuixm6H7YZzF?*xu2Wd0qwxQ5J&yGs(doOzeT2Vav z1bJc0imQuP9pghSwkI4+o)dzCYOXNJioP4uVC2}ml;y=Wx+xm(UTGT{<%alEL#m>O zV9ZZbgrKB*h2Jg>G2T>2B?`7)A7c}KAVW7bOD?||8A5${fF&m<-(T8l3^|YMeMawj zt9K52*L)`W%&nKItt|pe2ei^vmx~HK+ohl(3kuV@7a!@lmu~Y*>X$A|NKQ;j0tls% z4u#9fYhwP=ixnw=eLjz>Z?@(SE}<+jhlBR@@qtK#dfEPBXusC#@}&a~@yw4d!Lbbm zCP1X3G7}B%i>b6Hl9~WJkce67N2`ZHAp56#9x-&=Kq)eJh7hrVgTo&^K|}o0ek_;o zgX>>ow+V=D>@?LX`r@cobsH1R4^_Pgoo|Og&wrD$^vf2KEkpMf8X9_x`%L!)lY@W*JgshuX`j14 zBYWKjRpfmT9hKaDu(Kd*u9YPxhx9{H>Iw?(;bR#H_PB;v7`k;MV`7RPA$%Te?g;Dz zzxSF+M`{z~;b-ULuEiH-b9z{}_p=qbk&+1F%ycyn8Z7nN~tNn~X;aLOSy+=2w+uZ&TFxpKbK#yL;4$ z*`ycPGvZIR|AiaH-|wpZr=P=rE}|j1uE>gmD8%-C6jkV2 z1(7s{wqyG@{P<}TXfz=IM#x)KF^GVLQG(^`!iIYsqrjy7QTLa_!r8JSuPX<&X4h%J zR&Nxspywm#Ty&4y>$ZN=Typl-f!9H-D`8Gz#F}pzV;R+crj)wpTV)=8_It=1G4*9wJO! z{?g60f%%?vfxWxblsr0s{Nqv3H-g0-Az! zg!&_m(0fz57oLA~l9jZm3sF|khN%r{kT7m>Il)hus8@cv4c)e>S67tviGmj_NM;oM zB8BG!FS!gTbP0HCUxsmQJx4y|)SU0LSY8%-Pv8WDlG6BPiha&loZT}_=M81zc5%K} zR|_o-UPM~nmT5xR!g&m1nC2;-Q}QjhC+CDH4Xil3;a6QO%;tc!?HLtgle|uHB$5M0fW4JwL3p-IkJj_L?;l|U4MWUsXK87#r?!4SusEMlJjlLuZikqum=Zwv}#+`^MlIEDxUT@^s~sS{SS+^ zvetb53+WmflVln`N<`qhx8MZ*jFs$3ms&UVM z1lYreR_m5SXsIaX!;AOL&3U4t;Q}UY+5x02{v`;QqZDEs-%ZC@aOD%&C^$Uov7(Bh za=jC4B5)Ee5s#OoZ9Ywb5R{woObz30+RcYj>rYHGDJK0jG2vhXSX{mqWC@c5({k)_ z8gI5=a-Lwy)Kg!MMESRJ#vEy6%H!MQ`ESEz?rIn&2rzK5Wfyd;t&%8d#m@>&d4=UM zF|PM)oH7Zb25f~HZ8y#Fgcgy_KKp%~yV@kK;9CZ2vPBrApbIDYW7}Aq^pbSKc7S$6 zEyMfMa%VnGu}gj6^=D0gOf7|DL^m6OCB0&{ed0||N&3}N9@1R=;s_(nd_pss#S;rL z3FRb34BhjCv?@j)o}1=$^C{~FQ0i>c)E2YJ?$27R7 zeX|3n40}42zJUQfU97FFZMn&i*6bG+VGJg_o**!xJ%kr1wcPBJyp)A7MW zLz?{!IQlptVpFNI)VY6Lm9r=gCfWWK@g_gOXXd(qX3 z>NY?3^Q3NzXN-K8w@Jt^*|s)|5Y5U$!Mq9azO!v;-a}%S$GnsmgyN*x&qWo$E_MzYf)}GNk z3A-_#WQDPCzxvw_d+sTS*49-txTy>yj6;f|4e#g7Ld$WRI^$349IntRtB>OY58?sK z^&V4(dB`}SUZnfx1DZU=R3cO$77MffVt}~P%U5~}O)1P17La%Tu@u~+%D@HYMiq@P z=|Mnpz<`%5=S^3b>anEi_O_nZzQZR_7v7h1CncoM8wD;k=)478yUa@M@*?BI4Ux2F z^$TbXzcHoHLMW+c%2QCtM47|$0J^A{M%(--?>-1|ERm7P9{}_}2JQ9KJnqP$BR>(S z6JX`Qp{;Ipe^u=r6t@)Rxw~t#A+`NXK>cInJz^PBsI_=-6w+*+y`n`@UqG!t5xSA6 zdIx9c+VT&hm%5twSE^x~szKuH1n)=rq5QdJv~w?EjYVPAJjKR$+ol#vjb9q#xJgh{|g zxv!>UsM}9EGe=G}<}51%HP_6A_m01{#3INKe|I4CI?ZEl;L_NU6&0PA7Utrm)+tOG z)&?VVC?(bSnw;@bOdyBTGzy&*_CkyFyFz8enmC8yp@=PS5-H^c8z-@L-g&0`$w#(nI)Dp9FhzePd z!9DzyZxZ$GUSUxG*6epAWuZp`w8-wsruD_GXaAYGxRTq4+AxHo^LM3giT+pO@?zx3 zp`?3oPw){T5+Ax*C$=Kw=o`r9V&!V6Op<+<7-^=xi<aXxlZP3Ml+NdyX~cW0i5NuTm0h_Nz)?eZs}@x>x1S zVICqpzh1SDE>NzFS}9wq#REC~o5{1umQD9NH-8a@cJ&i66D-|H*wkt%=imWPhvK8X z8B0j5TPEsIL^7qpiEf>v_xo*;_QD8AeI9bj-$>M3a=(g)xxkn&gB_?fB3-pk=kRZM?05%xU%fax()7*&~q52 z_d3%th}NItlHps0uw@8>5uc{BGWGVHJtK^Uq8QB_3W4Ly7&J{j`B?P4Mh3CJ+!SK_ z$QxDjtYmKPKoVovi24*)Yzf*4T!k)Ba`V$eT+czqzUe(+muLZQN{6xjK0X3o#vOrV&v32u9dgwzww z)u$DqVz4OkFuJi)u51mRghSQ%E{Xd*n1)P{Ng%cwzvJdCXcCDi5{!L;;DmK{k(i5_ z*+QmXIyG^c$+$e;vb*_#$AS3!?v6S%-S2^6$xR@G{{(%dgA(_do^iDYT^mUl5h^jRWv8voA2*?DWHWD(81I|pI*e;!VrN`+zRXfZfa!= z0DDj#s09uUTur1&~CBScB?)~8(FY@QN=%3%x;J_(=`pUoh@JoX`{3BEfxR<~2 z>0jW z5$1mxqrczf5CsQ^c@38%296&Cpc3O@VFKTuU}j-wVguiYVAZ4sPfJq=3m|~c2xw%) z#KdOE#KZxx73LHcF~G(unku&^M2tNr;0;9zHGWd|4m{#o`aK(BuQtACa;zf$_&%2-&y zqW^DYtQ`MYkAn-${(q~-^`C87n7RG~E(51GH!OTZ2oH*J3IHk z!)0b;{*SRSbFy;(JI>6UY~24oHfBzC?th2N%*nwGRtx_Emzk6Ezi7+-8g%Gi>v1u$ z|NGdOxtO`ZQ~lrSv9f{H^j~ETcKW6kV14!)_({do75K_aMrCVj2f&}#aipz`tO2hS zdcB(?Ee6oyV`t+Mkp_n!Oi zd+T5Kd$W4>^z`oTs;;W8?p?d8DL#lvFt9MPBU0=goV6gb0GI*5PZo&${D@4VKqnhV z06QX+thtc`K#L80O9_$Vw=36gSDu%v4kDAhv5~of2=EI)iy2(P!NbAG$_?OVXJO># z0pC?|u{8!TeK0UJc0d#qL^QTBdI7)+uK6b*1zTeqVM9lApv@mp08A3*j#2;{Co3y( z2QN+K3|xRtjsPYF8)H$Rm6Ns2@5K&)7lf7m1R`qSXkZ02{R@~Er2hmX3bb)FwsCX- zu>amh(jMq!3*hJf1H<3{GARR?RO}6G9Bd8jjcp8F08FCb5;0?Eb3!1#dg zIQ|J)$=CttWN&B;M&);^{AIv@LF5JIpNL49TR9rrg9mA4;AkvnYzQ&Qg$o#l42VS8eW8O!*x`USr=o{;F^ROxu!AT|a))8)lS<9VJ%jMD z^S%tN3h?$;&n8U7E)WtSnyJn5ZIDknGKzKctqa^xdX>n$fnrdi zpcXw;{j5iE3MXkQiNMnuU77Sih!?^1jC{Br$s_?ldGoS&gvf5v;Ay=iPp#ICCSd~LRopYi;ZIf7kah# zFCy~C`2P@=7oq!;c>mxc=l>EHxqt8Xf5i4LTzrA~CnEoei!7|{tpCKu67>O_1qrOB z1G-}+gsdW$C{b2EA*=x5PkfkLjQd%5VTLY{(S{CU4Geb<;%XmnkdT>tOYfn&qGIG5 zs^}pCU!g#wp71yvC$W*i67xbozAEK|mPU7dH;NSe%9kXE1gjDi=7z?^2GVEr2d>1b zq+kWQD?}T!w@BN^9ZXUmerQN&jo?K+PdG&m(_~?x+@HWz2fj(O+05PYWCS0;cPU&W zy8NvZo^ZYfgv%Ah?^BJN$gt8on9i?HA$6PfzCcH1pLWK4zc=5}ueiX7IdOwKTVA7+ zYHkM<1Wzfop1SbRO1+N`M7JfTDZ?-)r$#qg+_8b@Um;O*--`i$K3P#28C*cDdH%|g z{w@`H!|(Gucw-OBRRxXruBUg}nnfd*Do?f6Wvuw&v5KkeYSTutbi!OFd`j2to7dYi zLt1TuiCR#Sv<%4PCZ$SHqOs3W7j(u8w53)@y6M*IT`X93_ovvd$y5Yi)V8ifzoHx-o>Xa9rw<@Z%h=^>2jPbZY>^9XzK`MH zYg(w@ieH|?cif9Y`9KrnR-1!et!KD&in4l*c$9^?uC4GZbw!j(tC8cfBHFVvTGBG} z8Ru&xsf#Mj>h8TI-BQ4Q?%eKcA0rP=R{xGAG(U1d8zI`pC_v^xWN08iaskqY@CjS*}K^o{UE++lL<&b#ajp8C9aqEr0c$ zY}Z_1Ll?{@0@dFnfvZQv?jhtV2fT4iI(z z;EEGFP#i<4UJVz`fE$-;r7+foHT{7j6s?EZd(F&#QpFsmbKb{&BxlnB<3nq9e4Z+N zHze}x_Dq(-GrgRJes(UUvJ0&;6x9;9UcLz9Wt=br7ElFna|7-5Bt^f1u3(eD}<@=!?1vfs;WZoMWg+h z@%VEefc1N#-OwsGYK<|6SOuJg+l4wj6gMs7YdYx-gw8i0*<*0G4PS*8x|%nt3)MeGY->^c5KqLJw)?AiOH0Bv z`1V%G!Lo?8V1rZivjSic^Y`h*`@mP-bl*RRfIwtkeYF-hL5FjTPEvnFqUnJjZL!1wC!JrhgvpTd2Dmiro?1}K8hv-o8D9lWy(&#?9t-@dcjgb zKYyg8ex=tn^_I(^QNNVR zwOy-O__zKL=aCA^;qa*XRo>TpFf-CN@n!mqPVrb>LKWWYVZIv6lrETIklQjHzvN_o zz=SWjF1o-peJYF{*JbQ}8#SucUvPU6=4wq?4QJ~uZ+@LiaK zvd6UvC{u!nTQj9bh$buMO%sZGoqzpNQ-s6NiC5cU>~1;~FZY%Eln8yp~8$d1HA>{H~hy~u`F zr7)shR!1OT50;=(@vX=skM)@9o3tqvVi4y&R&k0B$@VVjmz%aeWF+6D&SpAhG*ITd z#aK>c|HWFP@nl+5v_-QLvFi|TIy9gsd!*?Uho+>CJ1mGSG%sK*0Ov>4`ZLSs{-m}f zt!cRxgLJbCw@nwh!L=h&fqT|4*dCBbCf8cSvHvA_ypX%55^LtO5}W~7fvarNkg{rP zUB8?zdmdT!jTY51XtE2MB*&5^&G8`KfzC5%ymKErzrF+8OO)1lyPp>y&)4o=qVsM* z2F{8qJt07APq>^)Ch-#=e^4|`8>1nu&d0o6#x2H0m93h-Vq4id`YBy*Vyztac&H9r zs8W(L8&|)gfv2C%4ojSV`bOf^Y;_(9vLWAZqP}5rh<LEBPt?fF}2s&ZA1~QPA!#L|4l90P534OplIoQ!O1&gi7XreuoKWBLH~sgh zRE&bCe19=apt6h+qA9b*P$qN;1vNFP^m_K~d(|crjqektyC2=nSlWMJN0Z9qWnzS0 zMGv`$rcCd>O1nWW*5$%oTl&t?v-gTW;vmf@;Zu}BnIo6P{m${0^$nz7%P`};sX7(z z!`IJH?ixXju%}esi5Qg8_7b0*Pu+z_53WmXru|bGK0O_l#xaQ4wPTZJN@cfVMe~Ec zXcjFr*pVe1CCK6#{91JC9zCviiDNoao1#pD+bsA7|DPM+sJ zW4)FG0iJmi4dhbRIbAbPJ9pCrk=%AxWkbjYr zs4iXbjK#qB!&#_<*Ddd`EXr~Ln%Tt>&ojgu51qEZPkolZ8jnQG9UVRx+lvCNZGko~ z<`V7~gOU}{UfI^b5Nr?nheZVuoPDu?fUPRl4lmZ25B6YllA$Be9>Br@w!XZyaR9LW zmIK>;z*%-?0Mp;Qf3eK`+gUDUY;I}>HrFsS|HH__&B_V>qbzUWUIHng#i;QG|ppe6>RXmz<9zwCA*4--uqEF&pCf85N|AocOh zEH-BQ-ShBg+`vTnZXV*Norhtsk*5G?NXT>5Z6<<8p;wTQ6)X@S;djmBuO0vZJ@Z$d z=uu_tuY}-x)sy2+TQW%8$;&4$+%i zL4_H!?-{rUINwXOS6DARFV#=T1DbFjK_@sTgaocj_Q*c}@qf^tO;43pOLr+F*51U>n`m7^oT7jjDFs)F z!vojv4qtfd3%y2mpwdhHaM@(Z2?)~Yy!5q2X4o-S;UI3I&J;vJ3q5(Z5gx~v#YdNE z075SwSMsLRupqbykrMihv^05n(T%Oq-iw=z7YYesJ(EXEkw+gpqjFDQ)pA{yYP*g+ zYb_H2iQ_mb#fob|KgM>gwQ2&pD8gf;7|4i!YlJTpB34L*dy#+OTykPpq1ZVgS5Djz8(2$o>+*#j0fHaMJhC=s3#O@)#M*JK3$@KDo=kxNs?4@}!1N^^3cjEKr6f zjebY!kxYUN2_Co?<^yWLP&&3Xiwue^mWO= z6QhFXvVbcMSQj>{}%%O%xFpY$e?v0tWF&0L79fEl#ULSmq zlVoX8ZS3DnBTffR+4h7pu9SxiIn!D=mmJ$Ny71nVy<;%5r#It`T0oybSfh%T60;YS z8*0o*^}I1Z@7nD-zS&T3hHvqj`7kk?mmIBNO-u!*JbL}9S1JjoS0cQJfb+&y>sY*FHVK?ig61$#BoZV}kV5^jqH+%FADRT;_^`IGqtFo8&pn06h=f){MpH zwu17J=FE}0f{`CvN7_2c%d5%D++4#?54*lzRry1k!yXrP#~)VSS!XepuKm){Df93s z^LSgA(P9U{QCHBamGv00I_S0Db+UHZxT`{&8QsvhZs#p+UlbZSm$}Q-iydBKJSN6} zc0K*k*i<``7O$$(+S_k)=>u0$aH@AiXm6Db>=ESHXrAK~aY{Kl$Z^Usyh^W;-;PK* zqLWFp%v|4h(@xfHsA}xyxSma@{uq#;u{g+n4+C^1o$usXB*d}aBdQr;8$-vrpsq%! zFV@JF3nX?q$O^vFbwTKh5Zr&qN$?alRAwtbO50R?lp9cOe(J0Pb4@zM7^W&(5+Jj^ zB(Q>?|DHo3WN)c!TZ+w5|V)SGMsc*P6gz0MlR-*LoY@)RW!dq}<`Vjv*5N2w$a*_?g^St62N2{vLq5;dOeLWZlOWxm{Cb%~fpGV7iCEBU-(q zC7{)_|6V4|qQN#oU^rqa2q{A|Fzyo*h2^TR%C*4wEKb#deqyQ4w`S#V62|UXj_E;x z;Rmw^$Ok*n;&l?<`XrW*NfLsP#eh}$aA&I3R_Cb?ebK<1&rHr3A!?3YRl zrCM{G9KfD{Mw<2=D<*Usy<7Wc><>q@^G8LzsrwB_w0ehOWs6&J0CN`wu@ODO`*+>+ zAC_6A%)NdVIt2&H&-R0c7B_6*X1;nQ6A`81;y;R2%K5!8@B0simqDTnMT^nmy=5=# zo6AsL)s~mg6&-LMLagT7D;HQepCh92g7}48=;0J3s*@-0S^4#Iq5lyS#9KWGc_EBP zxb^PH>_MV|klUTM;K05q68B0ATYiVnsv^7)gY744I-1s~N6-Con4?!6?AVLi#3>Ojc?6V6%D9y|fS0u-hAKxtzKp%_uN(hNKyNU+6moA2Ta=h99R-7xIa6* z-kE5w(fRE3z$<&2;?_yblNO^quc&rYSX6d&pbd$~NY_lY%lpd|(q>zbWC6;BeW#f}wONh%cb1?kb5o{W$f_ z$qnQ16<x`ipL^QCMR((<1>JEyo=_7FKq~N?`hML<1 z46_vtu?@;|%Jx?FTP|lTNOfG(1EoN^GL_#ojiy9~ihuPMmk$D$Qx@`_=fl*+u==`X zuIfCrsZncZA)KdP)y}`ou4meL-@?@CMK3O6js~~DB}FbWw`&TeUF@S=o2~;;UYESp zUgf!O!R6ukSq^7Z0)oq<+~(!y_{hgwRa4zs%sWy{J5xnD!%Q{D&AGtZ;A7Pguf%HA z%bBx{_f0LuROO^Ee>qmSiK@v$!Q^PUJ?{?flUUVd^r4j*cj`3NRa+Ea)tu_FFjNau z7jQc%%h(Aoz&jnQuz4pn#4X0hVUyl-iTIG8adL(Q&GXxh%Vk_;OueSPlKwDUMd=GN z%L)oQ$7XG6TZyVW$!gn)D#nHmF~~nAh9)eB*enDWC@k|-4cnfg!=FKcfh!4=i6t8WNtY)07DO@0pn6vc_pDKZXDgiG~C2@<>{5BA=;6$Rr#!oOG81P-u%tjcs zi;nqMgI?fDCz*KHE_><`&|Z^~^0+Usc6TI#rBmGSZ3oI*D1|4w;^uOv%8iUzG@C=e zVuGhsAHl+S)TXA{<$S#)Yc=t1y>w%h=z@%(nGh*<8ETIA1lz~QBFf!#DlA34YnSRA!E3Oe!&!Ec9~7njE<7m3!C_5usS#jeK+D9~JO+mi zKd}bHeXBd4TfWvkW}s~tA}l`5|Fq8jxURCaZZtF-tmE@#X%;dq(LHU}z3H1wPNjP7 z7ndEO_{gX4+^b5GEw5Sx8KvcxRis2ZW*NYHss>t5QSI;$$-_zr+KPyNHWXR5pA_bI;sx~qeZ1n*$snl+$uZ4n7haGO z-p$DvJT$(KzJ?&4kVt!o;=?>@IbX@~cSU%PiAu_<(rfeSUJjxI^maNx#qBA%a3?Ot|H)0?R=x6O6L=1WXdAL;pkU%i$bL<6=nOzsj_mE!2|Y8mi7n+B%H{N zysF?n(PVXBue98Zcx291(3|BW#AK)bzR^T2)x@Ae)4ulSmF{joF{~-N5TB9}+9QY~ zvU6bXIauVUgWW~{k+a(9*`(kX)2(}V6*eynytm%O{vjQ&p8T6j<5KQ&cV>2+>T~wO zOgwL;HC;j)95C4{H`rMX*()|Ckxp4#(zc?}McEt?y+27Jri_K?UFp}>I{{9d?btE9 zhX$Amj7T!gaxE@j54{zvx_;;cD*{k;7}&TVM+kcg=Uh{=7`9LQL+9QaR9fX?90T^-zic z`#u`dciaq%@OL09O{HI^T%#-%qa$)w^|&tvd`>N+&Wds+X!HE(D1vBAx_i3>-|(z; z|I&GNhyAlX;+@&5sWh7B78DDq44k6vn_Y}|--e%Hy_*%;1T6QH4B)M|^E?WGU@>F_ z`ih8rrT`m9C{dw6kt#bA%J=*31EKVX<32(z+j-G=KhlXxlHU}hVrG6L%=Jc#Q$URy z366JNZQ5wneNSY=PQZ60{K~Ot#8vg-{Jwot&I4L(3go|e>yHKU$G(MTNln$xxFxHt zb%{gqWOnXIsih*Q8`Od9#IK`FCX%11LBmvM7WZt{1sgM7(i>ChBVrej_}K2;03thLh=^_Qr%R4OrriZNyoR-irC4O0bw{hm zxXYG}1ri_sk(L4UKWP4)I>6^mo=C!@EbLPyTZ=eIbQ9CpXamyt6R|86tn8Yo7-QPn z#KijMI_WdwJBHb1%Nj(_F#YhPmZ~Qg^TV9Feq8Ns97WL|Zz8Z2;ZdMF*W@#c8nA*{@@ZIk~8B#s` zG2yP%N$Au>H)5br8_%d=#A)#J;al~fhm3P$n|M&UrF;^L3q025+- z9--R|q%Hba0s4|821vPnuY`Klqpv>RmIqYHCfzEcJm3sH^n$it`?8!}fG9|bgC!Sn zB3#JvFQj^JSX+KDB-BzM|CTe%pb#^qexQ;uxlzx)#l$M@C5e_zX8H_cx|pmLnX|^r^`Vl%*Lfy z#*C-+ElV#Eoa7kUpC=gPrYZHVl~Ep4dqLQyXK+Jn3E{2)A`HMAPX+QpJ?_oY4?j=7 zerP$$^n~9?VWyZ@IKk#{4K9cOwm=~EBfjn24a((nuaeFPm(S2n5-*oS;lx2hvQmwumylJJL_=P%yuKmdg2<$Hp@*69~^8G2rP4D!ZR#q zmh^xLRZgf}Ro7hnc}qBD-6ybOKP$^wg*>4Iyors-&J0D4LtNLPOX$BfGVLW853i5t znXG2WMP#^ch;>(AED;4m35-O~;O@iTI$$gU+wzL@PY)vR;^uf=LR3=R%~4+HZuGF3M2y#B zo6R&cc3_pbz&v$3vcEBQzO#H3IpV>?&pCE~?Qzn8Ht?&=t8r&2F))x4&Tj-`UK{+_ zz=+5*>%HUbXGQol$X(Yfi7Awh#akPxE`g5{M5oj6T`vhrV8n8*l{ooUJjT@1;G29i z*24vx5UZ!zHjceIcRP+#BEC?=`B7|weX!U%sPnQgjU{!!Pb?vmv5yf~=9eOYR|`_}&!h4Yrr0fb@E zZ13g=8z>~4@%FuT6FKJI`PP6|wUxoA2kHzY$R4}ZWa7=pF0gNe%a^TothiA6!456$ zb`i*P+@nS4qxNiLuG^S1<)Md8YPJ?;ugsnrZb#rxy1{kHlS@O@#w+sXBr#G9crjN* zfe>nv=zxHLq_dUA*3Wmfsa2N}#43Qnpp1%YWv99o_>3Z@Xa<}&t$hP@CQa&j6+MTVb!|Zhryyt30>hhim5W@ybT;(+(gp3 zmb^uJxTh>?L~CGm92&{AmwdP5X=n+4uaKNhGWroRnw^{7w@rW5mV09TH`B>7${Vk! zE3gIp+&Cpjo$>v~N|W-tk9MDJNN)!-Tw_nheie8x@C0X=ICHRxILt{ZsMFHJr^ zh#c(`GxA_o!v0?-&dknqw5iC`Bk2(18ZW_DglL@`*-p6ZGoab}7f|cPc4UM=* zpc!`V=?kZ^hUmG(3=pmO(_upcqvK@4Fk%t~QNuI*M z%sXFI6YAyN7zzDB`xw?@Z&#>2>wyIqlpoi1+-@{f%zZuxy!Cl*Ptpr!3VK3$Q@3Cx zgZ>o0&KUR}gtLx@iaJ+qP4Id{(#_2-gO8yI5E&h}v@43_AENFVc#1<#M;>Tzy)w)| zo*#{yRkv!8USxG1fr@_J(vh`3RA_tOLSE|inI=JsT>kx#oE)n*WVDKkcHld}ZpN*( z;DbYod)qo%#a9qEX2%9urF4EVE9!Dr*q{?)!;E&O>y<$&tJ5L;hSF`C_(JInG;sQF` z2W#}s`}v0%xaDjff<}LV z&5k{Sa$h|X3Gq@u>z>J^X%ENu;FnvhY@TLkE!4K-DD+Q&gTM?#*w6_1**3KtQcI_Y zTj~B==?8oZGhFwB>5^k2BCuJ8J$m%PX9J6m>!IZ9Y11?Oc*L6ek2Tt6>2kSvUE!wRjkb1%38=i~L)xhShRsH7! zz2{H|JD=*U7_P+?uQB>KEX1J)YK1F}#y)l0wXv@QHP579Zr7J8`U;YsGS4`i-D9w@ z{Y-z{M?9ur3mKn152LKY-Rh`$?vBkcbC-ozxm%4^9C#7w=Fm#+-oen|CF$^Sd_Gw& z$L_-@G$R$+y_gcgV zi63epZRXroG=`^{5$QeeB~L&LnrE*NA6!{+Rq={bT&UI7xTD!qLQqikB{q4{H&a@y z9NXuzyx0ae1=F2NZ4;B+5Pup-70eKvE|?p_Z#7oVR4;nC2GA zKd*-e(eLl!C@3iQ7B?G0&SHC>FuP&(&){yGPDP)1^i#F9Md0X-ZS>USA_Gr%C~3)q z!gTJ$hr92jTm6#yqze<06O)nv@6t#I!{y{Pv9tAKL<-=Z&LZoYfC9lKR3(=1(7rxC z5NS})Te?OLt1T|N?eIvae)I`Wt!OX-BIOmC81TC0(w-=)f*i&~EQ;|h9)^J&8h5;6 zn0A3uL@f>CF8;5>Y1=s0T;m4g>J+$r5c!5#@9u z4kZZX)UQ}TMUtacLH)nm=#O{z=;Jd<&v2*28a4mMjpDDNF@N`S_;+p;lJ*8J|KI#5 zSpKVi6l~0_JpZ?z6KO8mSdwpgEKP8s$=7{E(D?yb2d?7$n1(frx+<){ z!!-#^+8c3yJ}8_iEAqN@RBdvd0&Mm~5({}gfX+mBdAx4wHY_D)ZXEd>#X1vaC5D0g zOISn%LuA!K~_8#n>Pw#zIeuhiEaJ@bb!@fhhO(f&4 zw9~U&1UM&{h{oQu)ICu$h5!*JE`QR|U|ZfAsX zGqnnho6s%WIyD7ZpGX9uf@CI9T`7EL1j!{pp-TX)LmAc;aF$}wxhdag;b&Rs9icM} zT1tcNB*(0&IEQDL&MT_Kt>S#I&SpAV{D`!?P4k4X`Lk%IFwGNu=j0n6Pp)xMS~zhI zqfdHou$uzXwx*Q{YmkTpD-}%DED&wXr;Vd|wF0 zTD^C=r#gk43A$TOF5Sxx&Bl4g3jff`Q@4-tRd4(hiszACvV3mzIp@o!UnBMNKsPSV zNadD_CzYwJL*OW zf{fhkKMLAcS4b4K;%44WdWGdNGp%*6pD+ud2W*C!Y&FjEh8B^}Jo$Z?z1$!!=U+0` zWREaR!4yvN$Fa3K?jh-bYX|LwT8HnRFb^8b$ zC6p8sFJlYD@oLk=eJ{17V;oWD95!A)1wihJ794eQQ_W zw2Q(ak9{F81jR+Wmy0fv!Q4!{p!7qO;Pny(Z7Mpm`*C9ah*}@2?}D%JzOCDwwvwYj zSdV88bOH6*I&OkO8Ck(IoCA|(5>7)L$ud*nUe%Xvj@%Ovot>*_aAO%(7^f6vEB^QC z`R1cmHKy;t9PZFcn-63C_u>Idbsm#Od8oLdUZi`L{hGYR)FRX%Rx69XVt}~f^Ct!? zO)2bSR*-l8kre!ca{oE@dL^we>3%?RK);tP*L7!@%8{hX)|S53o}&h+6JPhtSrO&q zdVxzdCSO744vS)&yvW#4{Z~4Rx_ONHU)a*8AyhQeKU2`iMOni00D9=yCR+k%$Yk$0 z7s<)x_W=eUf_A&BAGYN%Q6CA_2;bzuW2|g;eNyQe5VscPy}fO#toO=BK1*)K}&v5F#SWi zu&+CnA3x)M%5aFxHcwnT;sjv*r>~|{sM~jX3nwmBmMj}XRoBe<*G|8*#3CpTezha^ zIL~3P9 z#TDJiYQhkU&X7yp68$g5<;5saLrHhx9}yx#B*?nh#y2D680yJqW8|u-&60f=nP{iH ziyHZ@aX++sm4)Pw<*eU^zzc{I@$su}yye9FkuJF@*S?)f(*b%aFQD}I>`p44r&%qI zYtU7p)n*I~gGg)D!ih8xvzA|&X4(uvtlshn7`0t55gTw!M-|G5FW;ptWija{t&&lj z{H$mlEaT-Mm;6MO0#$gVu#H-WgM}BXloeB2T0wXBwRR!<3Y8$(tC+A^m?|psx?_S` z#wO#)K)EE?BD>N+ZQRA_sz>?OaSkFpzfPr=K2WZVM)8MKvj=MU7qcg`P1`PHH-C}$ zZEDA2W^eQ+;8LrkJ_q-EIu;-9PFq82-7wRHB9SW&jCbiAzTRv7>L84WLP2|%>=x#7 z7;37oLqxLHA=SS8SsNzt$O$Tc*Ed@>A4ajGwk}P(|0we8ec|PJscIOG$C*6iFETQ& z4>TTw-P*YnLltGZYqogX@1DY_yw{kIKy?0;7mQ!Zg{?ynP53oGE75GtIxxYgD~Qp~ zq7gbxk3!StQ;bH)T%S|G+4Zl*c%u43r3DiDDEa*NdT0pFeM)V4N{)w`eor#jl zCq|u)CxR^jm{j1Un@F8Jgj7_7WBsZkhV0o{aAK09eme&LweNrf{Ynk@1Xj~dEROtg zHEVYsOO*rKz>tW?;A=8N$|f=6<7wB?PyFD10x2?;j6VL6n#(jM=9RoHQ-=lxmCNe8 zqt$@cjwEK=p+a2$csiB&*uio9AA$$%C-cpMH@?Yk)Mb8j9pPA-Ae zVv5YeRnRCBQ6v=e48aBW*+pVDdU_L;X7R+#c{=0bXw&{W9-kBG*X=D$Xu97$!{5Ov>e+|DEF>o-J0EgfMn52xY zoQ)mL4GkDXfL2C`OyV|R2XJ#6Qvle@+D6#M!TisHzdT#Kgm|$0>6QJ`&0iw@SpFJZ z|8Kzj7a;sK0{wp=fKN!UH#fHbFZBP{!1Dj;|9=Rj@X5;D&I#<6{wHbvuW9wy_{`tf z0d~2UU;(iFe!K&d1S{Y-aw`3H(t$nDP}$fKpv43}B?5ddg7FtH_kQz_7y08?^p9U@ z@Hq{C_{zWd@JoX`{Ox20a4+EWM;JfLKZRtzh{FE^Y_KOk+l%-AZ;tsA>;RVEV*UR& zF#2n_(to1H|8E%m7Si;OsHOi*qyI(1u>LicLlk@##mng&V&LN{0Mufs)n3*}j;TD|6%*hC zWo*CS=lnAdZufHk<^M~ampnVy@9nw3Wn6536{Iir#wLi&09IB+aJ4@^08S1LHV%LZ z;2&i#0`&3$*!-i6<%PWeQpU;(7X5!IW8?gLJx(t0)cKcs+%I$GpUYTTSiwT|FJ-Kp zUT$7f{0#;dE6=}u=TK#QN711uTb9PF%IqU>BOY}_K?p>TpbW#<&( k;SmuR6a0U#q4Rt2j)A@7ZxY19#lg*kNI@a4Ac6RQ0K+3eMgRZ+ literal 0 HcmV?d00001 diff --git a/documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).md b/documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).md new file mode 100644 index 0000000..2e606c5 --- /dev/null +++ b/documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).md @@ -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? diff --git a/documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).pdf b/documentacao linux/Nivel_3/[Nível 3] Análise de Logs (Journalctl).pdf new file mode 100644 index 0000000000000000000000000000000000000000..9cd25f28e8a7f46a70605a21f72a0c15c60bdbf0 GIT binary patch literal 18160 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 literal 0 HcmV?d00001 diff --git a/documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.md b/documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.md new file mode 100644 index 0000000..7a7b15b --- /dev/null +++ b/documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.md @@ -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). diff --git a/documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.pdf b/documentacao linux/Nivel_3/[Nível 3] Hardening de Servidor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d51510b4c7230ec06c28fffb22fb67364f9bf55f GIT binary patch literal 18788 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 Cf?!|( literal 0 HcmV?d00001 diff --git a/documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.md b/documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.md new file mode 100644 index 0000000..3c71603 --- /dev/null +++ b/documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.md @@ -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? diff --git a/documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.pdf b/documentacao linux/Nivel_3/[Nível 3] Scripting e Automação Avançada.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a7d0da1e251ce625a414e8e201c28c02e54edfcf GIT binary patch literal 19095 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 literal 0 HcmV?d00001 diff --git a/documentacao linux/debian/README.pdf b/documentacao linux/debian/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6853678a2a18f8dd8e68cb7a27d264a557d6b8a9 GIT binary patch literal 14193 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 literal 0 HcmV?d00001 diff --git a/documentacao linux/ubuntu/README.pdf b/documentacao linux/ubuntu/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6225499f4b937cd5d5d93fb509d4b861dfa322da GIT binary patch literal 14193 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%0DIr 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