Expansao do Plano de Manuais: Adicionados Suricata, OpenVPN, VLANs, Redis, CentOS/AlmaLinux, MagnusBilling, ferramentas de diagnostico e logs
This commit is contained in:
parent
ee976cd041
commit
c3b0496e14
|
|
@ -210,6 +210,10 @@ Acesse `https://admin.microsoft.com` para gerenciar.
|
||||||
### Fase 1: Pesquisa e Descoberta
|
### Fase 1: Pesquisa e Descoberta
|
||||||
* **Ação:** Pesquise versões, pré-requisitos e telas atuais do sistema.
|
* **Ação:** Pesquise versões, pré-requisitos e telas atuais do sistema.
|
||||||
* **Objetivo:** Garantir que o manual não nasça obsoleto.
|
* **Objetivo:** Garantir que o manual não nasça obsoleto.
|
||||||
|
* **Gestão de Conhecimento (Novo):** Se encontrar documentação oficial ou ferramentas úteis, REGISTRE-AS para o futuro:
|
||||||
|
```bash
|
||||||
|
python .gemini/register_knowledge.py add --url "https://docs.exemplo.com" --description "Manual Oficial" --category "Docs"
|
||||||
|
```
|
||||||
|
|
||||||
### Fase 2: Estruturação (Padrão iT Guys)
|
### Fase 2: Estruturação (Padrão iT Guys)
|
||||||
O documento final deve seguir rigorosamente a hierarquia do modelo **MTITG 002-23 (Revisão Jr)**:
|
O documento final deve seguir rigorosamente a hierarquia do modelo **MTITG 002-23 (Revisão Jr)**:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,254 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"url": "https://docs.netgate.com/pfsense/en/latest/",
|
||||||
|
"description": "pfSense Official Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:36:51"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.truenas.com/docs/scale/",
|
||||||
|
"description": "TrueNAS Scale Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:36:51"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.postgresql.org/docs/",
|
||||||
|
"description": "PostgreSQL Official Docs",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:36:51"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://learn.microsoft.com/en-us/windows-server/",
|
||||||
|
"description": "Windows Server Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:36:51"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ubuntu.com/server/docs",
|
||||||
|
"description": "Ubuntu Server Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.debian.org/doc/",
|
||||||
|
"description": "Debian Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://wiki.alpinelinux.org/wiki/Main_Page",
|
||||||
|
"description": "Alpine Linux Wiki",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://pve.proxmox.com/wiki/Main_Page",
|
||||||
|
"description": "Proxmox VE Wiki",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://docs.docker.com/",
|
||||||
|
"description": "Docker Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://docs.portainer.io/",
|
||||||
|
"description": "Portainer Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://docs.gitea.com/",
|
||||||
|
"description": "Gitea Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.zabbix.com/documentation/current/en",
|
||||||
|
"description": "Zabbix Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://support.google.com/chrome/a/",
|
||||||
|
"description": "Chrome Enterprise Support",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://support.mozilla.org/en-US/products/firefox-enterprise",
|
||||||
|
"description": "Firefox for Enterprise",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.chiark.greenend.org.uk/~sgtatham/putty/docs.html",
|
||||||
|
"description": "PuTTY User Manual",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:37:28"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://dev.mysql.com/doc/",
|
||||||
|
"description": "MySQL Reference Manual",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:41:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://docs.asterisk.org/",
|
||||||
|
"description": "Asterisk Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:41:55"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://nginx.org/en/docs/",
|
||||||
|
"description": "Nginx Official Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://httpd.apache.org/docs/",
|
||||||
|
"description": "Apache HTTP Server Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.manageengine.com/products/desktop-central/help/",
|
||||||
|
"description": "ManageEngine Endpoint Central Help",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://webmin.com/docs/",
|
||||||
|
"description": "Webmin Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://winscp.net/eng/docs/start",
|
||||||
|
"description": "WinSCP Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://wiki.filezilla-project.org/Documentation",
|
||||||
|
"description": "FileZilla/FTP Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:52:15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.nano-editor.org/docs.php",
|
||||||
|
"description": "Nano Editor Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.vim.org/docs.php",
|
||||||
|
"description": "Vim Official Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://eff-certbot.readthedocs.io/en/stable/",
|
||||||
|
"description": "Certbot (Let's Encrypt) Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.veeam.com/documentation-guides-datasheets.html",
|
||||||
|
"description": "Veeam Documentation Center",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ss64.com/bash/",
|
||||||
|
"description": "Linux Command Line Reference (ss64)",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ss64.com/nt/",
|
||||||
|
"description": "Windows CMD Reference (ss64)",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://ss64.com/ps/",
|
||||||
|
"description": "PowerShell Reference (ss64)",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 00:55:19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://suricata.readthedocs.io/en/latest/",
|
||||||
|
"description": "Suricata IDS/IPS Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://openvpn.net/community-resources/",
|
||||||
|
"description": "OpenVPN Community Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://redis.io/docs/",
|
||||||
|
"description": "Redis Official Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://docs.almalinux.org/",
|
||||||
|
"description": "AlmaLinux Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://wiki.centos.org/",
|
||||||
|
"description": "CentOS Wiki",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://www.magnusbilling.org/documentation/",
|
||||||
|
"description": "MagnusBilling Documentation",
|
||||||
|
"category": "Docs",
|
||||||
|
"tags": [],
|
||||||
|
"added_at": "2026-01-23 01:00:49"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
KB_FILE = os.path.join(BASE_DIR, "knowledge_base.json")
|
||||||
|
|
||||||
|
def load_kb():
|
||||||
|
if not os.path.exists(KB_FILE):
|
||||||
|
return []
|
||||||
|
try:
|
||||||
|
with open(KB_FILE, 'r', encoding='utf-8') as f:
|
||||||
|
return json.load(f)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error loading KB: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
def save_kb(data):
|
||||||
|
try:
|
||||||
|
with open(KB_FILE, 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error saving KB: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def register_source(url, description, category, tags):
|
||||||
|
kb = load_kb()
|
||||||
|
|
||||||
|
# Check for duplicates
|
||||||
|
for entry in kb:
|
||||||
|
if entry.get("url") == url:
|
||||||
|
print(f"URL already registered: {url}")
|
||||||
|
return
|
||||||
|
|
||||||
|
new_entry = {
|
||||||
|
"url": url,
|
||||||
|
"description": description,
|
||||||
|
"category": category,
|
||||||
|
"tags": tags,
|
||||||
|
"added_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
}
|
||||||
|
|
||||||
|
kb.append(new_entry)
|
||||||
|
save_kb(kb)
|
||||||
|
|
||||||
|
print("SUCCESS: Knowledge Source Registered")
|
||||||
|
print(json.dumps(new_entry, indent=2, ensure_ascii=False))
|
||||||
|
|
||||||
|
def list_sources(filter_text=None):
|
||||||
|
kb = load_kb()
|
||||||
|
print(f"Total Sources: {len(kb)}")
|
||||||
|
for entry in kb:
|
||||||
|
if filter_text:
|
||||||
|
search_content = (entry['url'] + entry['description'] + entry['category']).lower()
|
||||||
|
if filter_text.lower() not in search_content:
|
||||||
|
continue
|
||||||
|
print(f"[{entry['category']}] {entry['description']} ({entry['url']})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description="Register knowledge sources for iT Guys.")
|
||||||
|
subparsers = parser.add_subparsers(dest="command", required=True)
|
||||||
|
|
||||||
|
# Add command
|
||||||
|
add_parser = subparsers.add_parser("add", help="Add a new source")
|
||||||
|
add_parser.add_argument("--url", required=True, help="URL of the source")
|
||||||
|
add_parser.add_argument("--description", required=True, help="Short description")
|
||||||
|
add_parser.add_argument("--category", default="General", help="Category (Docs, Tool, Reference)")
|
||||||
|
add_parser.add_argument("--tags", nargs="*", default=[], help="Tags provided as space-separated list")
|
||||||
|
|
||||||
|
# List command
|
||||||
|
list_parser = subparsers.add_parser("list", help="List sources")
|
||||||
|
list_parser.add_argument("filter", nargs="?", help="Optional filter text")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.command == "add":
|
||||||
|
register_source(args.url, args.description, args.category, args.tags)
|
||||||
|
elif args.command == "list":
|
||||||
|
list_sources(args.filter)
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import urllib.request
|
||||||
|
import urllib.error
|
||||||
|
import re
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
KB_FILE = os.path.join(BASE_DIR, "knowledge_base.json")
|
||||||
|
|
||||||
|
def load_kb():
|
||||||
|
if not os.path.exists(KB_FILE):
|
||||||
|
return []
|
||||||
|
try:
|
||||||
|
with open(KB_FILE, 'r', encoding='utf-8') as f:
|
||||||
|
return json.load(f)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error loading KB: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
def save_kb(data):
|
||||||
|
try:
|
||||||
|
with open(KB_FILE, 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error saving KB: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def validate_url(url, description):
|
||||||
|
print(f"Checking: {url}...", end=" ", flush=True)
|
||||||
|
try:
|
||||||
|
# User-Agent is often required to avoid 403 Forbidden from some documentation sites
|
||||||
|
req = urllib.request.Request(
|
||||||
|
url,
|
||||||
|
data=None,
|
||||||
|
headers={
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
with urllib.request.urlopen(req, timeout=15) as response:
|
||||||
|
if response.status != 200:
|
||||||
|
print(f"[FAIL] Status {response.status}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
content = response.read().decode('utf-8', errors='ignore').lower()
|
||||||
|
|
||||||
|
# Simple content check: look for significant words from description
|
||||||
|
# Exclude common stop words
|
||||||
|
stop_words = {'documentation', 'official', 'manual', 'reference', 'guide', 'wiki', 'site', 'docs', 'for', 'enterprise', 'support', 'user', 'the', 'and', 'of', 'a', 'to', 'in'}
|
||||||
|
keywords = [w.lower() for w in re.split(r'\W+', description) if w.lower() and w.lower() not in stop_words]
|
||||||
|
|
||||||
|
# Special case for abbreviations
|
||||||
|
if "pfsense" in description.lower(): keywords.append("netgate")
|
||||||
|
if "truenas" in description.lower(): keywords.append("ixsystems")
|
||||||
|
if "proxmox" in description.lower(): keywords.append("virtualization")
|
||||||
|
|
||||||
|
if not keywords:
|
||||||
|
# If no keywords remain, just trust the 200 OK
|
||||||
|
print("[OK] (Status 200)")
|
||||||
|
return True
|
||||||
|
|
||||||
|
found = any(k in content for k in keywords)
|
||||||
|
if found:
|
||||||
|
print(f"[OK] Found keywords: {[k for k in keywords if k in content]}")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
# Be lenient if status is 200 but keywords not found (failed fuzzy match)
|
||||||
|
# But user asked: "tem o conteudo esperado?"
|
||||||
|
# Let's try to find title
|
||||||
|
title_match = re.search(r'<title>(.*?)</title>', content, re.IGNORECASE | re.DOTALL)
|
||||||
|
title = title_match.group(1).strip() if title_match else "No Title"
|
||||||
|
print(f"[WARNING] 200 OK but keywords {keywords} not found. Title: '{title}'")
|
||||||
|
# We will keep it if it's 200 OK, assuming my keyword matching might be too strict
|
||||||
|
# Unless title is clearly error
|
||||||
|
if "404" in title or "Not Found" in title:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
except urllib.error.HTTPError as e:
|
||||||
|
print(f"[FAIL] HTTP Error {e.code}")
|
||||||
|
return False
|
||||||
|
except urllib.error.URLError as e:
|
||||||
|
print(f"[FAIL] Connection Error {e.reason}")
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[FAIL] Unexpected Error {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def main():
|
||||||
|
kb = load_kb()
|
||||||
|
valid_entries = []
|
||||||
|
modified = False
|
||||||
|
|
||||||
|
print(f"Validating {len(kb)} sources...\n")
|
||||||
|
|
||||||
|
for entry in kb:
|
||||||
|
if validate_url(entry['url'], entry['description']):
|
||||||
|
valid_entries.append(entry)
|
||||||
|
else:
|
||||||
|
print(f" -> REMOVING: {entry['description']} ({entry['url']})")
|
||||||
|
modified = True
|
||||||
|
|
||||||
|
if modified:
|
||||||
|
save_kb(valid_entries)
|
||||||
|
print(f"\nUpdate Complete. Removed {len(kb) - len(valid_entries)} invalid sources.")
|
||||||
|
else:
|
||||||
|
print("\nAll sources are valid. No changes made.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
@ -2,13 +2,26 @@
|
||||||
|
|
||||||
Este documento lista os manuais essenciais recomendados para compor a base de conhecimento da iT Guys, organizados por tecnologia. A seleção baseia-se em melhores práticas de mercado e necessidades operacionais de MSPs.
|
Este documento lista os manuais essenciais recomendados para compor a base de conhecimento da iT Guys, organizados por tecnologia. A seleção baseia-se em melhores práticas de mercado e necessidades operacionais de MSPs.
|
||||||
|
|
||||||
## 1. Rede e Segurança (pfSense)
|
## 1. Rede e Segurança (pfSense / Suricata / OpenVPN)
|
||||||
|
|
||||||
* **[Nível 1] Diagnóstico de Conectividade e Logs:** Verificação de status de interfaces, gateways e análise de logs do system/firewall.
|
* **pfSense:**
|
||||||
* **[Nível 2] Gestão de Regras de Firewall e Aliases:** Boas práticas de criação de regras "default deny", uso de aliases para organização e documentação de liberações.
|
* [Nível 1] Diagnóstico de Conectividade e Logs: Verificação de status de interfaces, gateways e análise de logs do system/firewall.
|
||||||
* **[Nível 2] Configuração e Troubleshooting de VPN (OpenVPN/IPsec):** Procedimentos para conectar site-to-site e client-to-site, incluindo diagnóstico de túneis caídos.
|
* [Nível 2] Gestão de Regras de Firewall e Aliases: Boas práticas de criação de regras "default deny", uso de aliases.
|
||||||
* **[Nível 3] Backup e Restauração de Configurações:** Procedimento de backup manual e automático (AutoConfigBackup), e restauração em caso de desastre.
|
* [Nível 2] Configuração e Troubleshooting de VPN (OpenVPN/IPsec): Site-to-site e client-to-site.
|
||||||
* **[Nível 3] Atualização e Hardening do pfSense:** Checklist de segurança (desativar admin externo, SSH seguro) e procedimento seguro de update de firmware.
|
* [Nível 3] Backup e Restauração de Configurações: AutoConfigBackup e restauração em caso de desastre.
|
||||||
|
* [Nível 3] Atualização e Hardening: Checklist de segurança e procedimento de update.
|
||||||
|
* **Suricata (IDS/IPS):**
|
||||||
|
* [Nível 2] Instalação e Integração com pfSense/OPNsense: Deploy como IDS inline.
|
||||||
|
* [Nível 2] Gestão de Regras (ET Open/Snort): Atualização e customização de rulesets.
|
||||||
|
* [Nível 3] Análise de Alertas e Tuning: Supressão de falsos positivos e otimização.
|
||||||
|
* **OpenVPN (Standalone):**
|
||||||
|
* [Nível 1] Instalação do Servidor OpenVPN: Deploy em Linux (Ubuntu/Debian).
|
||||||
|
* [Nível 2] Configuração de Clientes e Certificados: Geração de .ovpn e PKI.
|
||||||
|
* [Nível 3] Troubleshooting de Conexão: Logs, MTU, e problemas de NAT.
|
||||||
|
* **VLANs:**
|
||||||
|
* [Nível 2] Conceitos e Configuração em Switches Gerenciáveis: Tagged vs Untagged.
|
||||||
|
* [Nível 2] Configuração de VLANs em pfSense/Linux: Interfaces virtuais e roteamento inter-VLAN.
|
||||||
|
* [Nível 3] Troubleshooting de VLANs: Diagnóstico de tagging incorreto e isolamento.
|
||||||
|
|
||||||
## 2. Storage e Armazenamento (TrueNAS Scale / Samba / iSCSI)
|
## 2. Storage e Armazenamento (TrueNAS Scale / Samba / iSCSI)
|
||||||
|
|
||||||
|
|
@ -18,7 +31,7 @@ Este documento lista os manuais essenciais recomendados para compor a base de co
|
||||||
* **[Nível 3] Manutenção de ZFS (Scrub e Substituição de Disco):** Procedimento crítico de substituição de disco com falha (resilvering) e agendamento de Scrubs.
|
* **[Nível 3] Manutenção de ZFS (Scrub e Substituição de Disco):** Procedimento crítico de substituição de disco com falha (resilvering) e agendamento de Scrubs.
|
||||||
* **[Nível 3] Configuração de iSCSI Target para Virtualização:** Criação de zvols, portals e targets para uso em VMware/Proxmox.
|
* **[Nível 3] Configuração de iSCSI Target para Virtualização:** Criação de zvols, portals e targets para uso em VMware/Proxmox.
|
||||||
|
|
||||||
## 3. Bancos de Dados (PostgreSQL / MySQL)
|
## 3. Bancos de Dados (PostgreSQL / MySQL / Redis)
|
||||||
|
|
||||||
* **[Nível 1] Backup e Restore Básico (dump/restore):** Uso de `mysqldump` e `pg_dump` para backups lógicos e restauração.
|
* **[Nível 1] Backup e Restore Básico (dump/restore):** Uso de `mysqldump` e `pg_dump` para backups lógicos e restauração.
|
||||||
* **[Nível 2] Manutenção Preventiva e Limpeza:**
|
* **[Nível 2] Manutenção Preventiva e Limpeza:**
|
||||||
|
|
@ -26,6 +39,11 @@ Este documento lista os manuais essenciais recomendados para compor a base de co
|
||||||
* **MySQL:** Uso do `mysqlcheck` e `OPTIMIZE TABLE`.
|
* **MySQL:** Uso do `mysqlcheck` e `OPTIMIZE TABLE`.
|
||||||
* **[Nível 2] Gestão de Usuários e Permissões:** Criação de usuários com privilégios mínimos (GRANT/REVOKE).
|
* **[Nível 2] Gestão de Usuários e Permissões:** Criação de usuários com privilégios mínimos (GRANT/REVOKE).
|
||||||
* **[Nível 3] Troubleshooting de Performance e Slow Queries:** Ativação e análise de logs de queries lentas (`slow query log`).
|
* **[Nível 3] Troubleshooting de Performance e Slow Queries:** Ativação e análise de logs de queries lentas (`slow query log`).
|
||||||
|
* **Redis:**
|
||||||
|
* [Nível 1] Instalação e Comandos Básicos: `redis-cli`, `SET`, `GET`, `KEYS`.
|
||||||
|
* [Nível 2] Persistência e Backup: RDB vs AOF, snapshots.
|
||||||
|
* [Nível 2] Segurança: Autenticação, bind e firewall.
|
||||||
|
* [Nível 3] Troubleshooting de Memória e Performance: Monitoramento com `INFO`, eviction policies.
|
||||||
|
|
||||||
## 4. Windows Server (AD / DNS / GPO / Firewall)
|
## 4. Windows Server (AD / DNS / GPO / Firewall)
|
||||||
|
|
||||||
|
|
@ -38,13 +56,16 @@ Este documento lista os manuais essenciais recomendados para compor a base de co
|
||||||
* Deploy de Software (.msi).
|
* Deploy de Software (.msi).
|
||||||
* **[Nível 3] Disaster Recovery do Active Directory:** Backup do System State e restauração autoritativa vs não-autoritativa.
|
* **[Nível 3] Disaster Recovery do Active Directory:** Backup do System State e restauração autoritativa vs não-autoritativa.
|
||||||
|
|
||||||
## 5. Linux (Ubuntu / Debian / Alpine)
|
## 5. Linux (Ubuntu / Debian / Alpine / CentOS / AlmaLinux)
|
||||||
|
|
||||||
* **[Nível 1] Comandos Essenciais de Diagnóstico:** Uso de `top`, `htop`, `df`, `free`, `ip addr` para check rápido de saúde.
|
* **[Nível 1] Comandos Essenciais de Diagnóstico:** Uso de `top`, `htop`, `df`, `free`, `ip addr` para check rápido de saúde.
|
||||||
* **[Nível 2] Gerenciamento de Pacotes e Updates:** Procedimentos seguros de `apt update/upgrade` e limpeza (`autoremove`).
|
* **[Nível 2] Gerenciamento de Pacotes e Updates:**
|
||||||
* **[Nível 2] Configuração de Firewall (UFW/IPTables):** Bloqueio padrão e liberação de portas específicas.
|
* **Debian/Ubuntu:** `apt update/upgrade`, limpeza com `autoremove`.
|
||||||
* **[Nível 3] Hardening de Servidor Linux:** Configuração de SSH seguro (chaves, porta não-padrão, sem root), Fail2Ban e usuários sudo.
|
* **CentOS/AlmaLinux:** `dnf update`, limpeza com `dnf autoremove`.
|
||||||
|
* **[Nível 2] Configuração de Firewall (UFW/IPTables/firewalld):** Bloqueio padrão e liberação de portas.
|
||||||
|
* **[Nível 3] Hardening de Servidor Linux:** SSH seguro (chaves, porta não-padrão), Fail2Ban e usuários sudo.
|
||||||
* **[Nível 3] Análise de Logs (Journalctl/Syslog):** Como buscar erros críticos em `/var/log` e `journalctl`.
|
* **[Nível 3] Análise de Logs (Journalctl/Syslog):** Como buscar erros críticos em `/var/log` e `journalctl`.
|
||||||
|
* **[Nível 1] Leitura de Logs Linux:** Uso de `cat`, `tail -f`, `less`, `grep` em `/var/log/syslog`, `auth.log`, `messages`.
|
||||||
|
|
||||||
## 6. Virtualização (Proxmox VE)
|
## 6. Virtualização (Proxmox VE)
|
||||||
|
|
||||||
|
|
@ -73,10 +94,107 @@ Este documento lista os manuais essenciais recomendados para compor a base de co
|
||||||
* [Nível 1] Diagnóstico de Ramais Offline (Sip Show Peers).
|
* [Nível 1] Diagnóstico de Ramais Offline (Sip Show Peers).
|
||||||
* [Nível 2] Troubleshooting de Áudio Unidirecional (NAT/RTP).
|
* [Nível 2] Troubleshooting de Áudio Unidirecional (NAT/RTP).
|
||||||
* [Nível 2] Análise de Logs de Chamadas (CDR/Verbosity).
|
* [Nível 2] Análise de Logs de Chamadas (CDR/Verbosity).
|
||||||
|
* **MagnusBilling:**
|
||||||
|
* [Nível 1] Gestão de Usuários e Créditos: Criação de contas e recarga.
|
||||||
|
* [Nível 2] Configuração de Troncos SIP: Integração com operadoras VoIP.
|
||||||
|
* [Nível 2] Relatórios de Chamadas e CDR: Análise de consumo e faturamento.
|
||||||
|
* [Nível 3] Troubleshooting e Manutenção: Logs, asterisk CLI, atualizações.
|
||||||
* **Navegadores (Chrome/Firefox):**
|
* **Navegadores (Chrome/Firefox):**
|
||||||
* [Nível 2] Gestão via GPO (ADMX): Definir homepage, extensões obrigatórias e bloqueios.
|
* [Nível 2] Gestão via GPO (ADMX): Definir homepage, extensões obrigatórias e bloqueios.
|
||||||
|
|
||||||
## 9. Ferramentas (SSH / Putty)
|
## 9. Ferramentas (SSH / Putty / WinSCP / SCP)
|
||||||
|
|
||||||
* **[Nível 0] Acesso Remoto Seguro:** Guia de como usar chaves SSH (PPK/PEM) no Putty e Terminal.
|
* **[Nível 0] Acesso Remoto Seguro:** Guia de como usar chaves SSH (PPK/PEM) no Putty e Terminal.
|
||||||
* **[Nível 1] Tunelamento SSH (Port Forwarding):** Como acessar serviços internos de forma segura via túnel.
|
* **[Nível 1] Tunelamento SSH (Port Forwarding):** Como acessar serviços internos de forma segura via túnel.
|
||||||
|
* **[Nível 1] SCP via Terminal:** Transferência de arquivos via linha de comando (`scp origem destino`).
|
||||||
|
* **WinSCP:**
|
||||||
|
* [Nível 0] Transferência de Arquivos via SFTP/SCP: Conexão segura e upload/download de arquivos.
|
||||||
|
* [Nível 1] Sincronização de Diretórios: Automatizar cópia de pastas entre servidor e máquina local.
|
||||||
|
|
||||||
|
## 10. Servidores Web (Nginx / Apache)
|
||||||
|
|
||||||
|
* **Nginx:**
|
||||||
|
* [Nível 1] Configuração Básica de Virtual Hosts: Criação de sites e redirecionamentos.
|
||||||
|
* [Nível 2] Configuração de Proxy Reverso: Encaminhamento de requisições para serviços internos.
|
||||||
|
* [Nível 2] Configuração de SSL/TLS (Let's Encrypt): Certificados gratuitos via Certbot.
|
||||||
|
* [Nível 3] Otimização de Performance e Cache: Gzip, buffer tuning e cache de conteúdo estático.
|
||||||
|
* **Apache:**
|
||||||
|
* [Nível 1] Configuração Básica de Virtual Hosts: Criação de sites com .htaccess.
|
||||||
|
* [Nível 2] Módulos Essenciais (mod_rewrite, mod_ssl): Configuração de redirecionamentos e HTTPS.
|
||||||
|
* [Nível 3] Troubleshooting de Erros 500/502: Análise de logs e debug de configuração.
|
||||||
|
|
||||||
|
## 11. Transferência de Arquivos (FTP)
|
||||||
|
|
||||||
|
* **[Nível 1] Configuração de Servidor FTP/SFTP:** Instalação e configuração básica (vsftpd, ProFTPD).
|
||||||
|
* **[Nível 2] Segurança e Chroot Jail:** Isolamento de usuários e permissões de diretório.
|
||||||
|
* **[Nível 2] FTP Passivo vs Ativo:** Configuração de portas e NAT para ambientes complexos.
|
||||||
|
|
||||||
|
## 12. Gerenciamento de Endpoints (ManageEngine Endpoint Central)
|
||||||
|
|
||||||
|
* **[Nível 1] Instalação de Agentes em Endpoints:** Deploy manual e automático de agentes.
|
||||||
|
* **[Nível 2] Deploy de Patches e Atualizações:** Configuração de políticas de patching (Windows/Mac/Linux).
|
||||||
|
* **[Nível 2] Inventário de Hardware e Software:** Relatórios de ativos e conformidade.
|
||||||
|
* **[Nível 3] Gestão Remota e Scripts:** Execução de scripts remotos e troubleshooting via console.
|
||||||
|
|
||||||
|
## 13. Administração de Servidores (Webmin)
|
||||||
|
|
||||||
|
* **[Nível 1] Instalação e Acesso Seguro:** Instalação inicial e configuração de HTTPS.
|
||||||
|
* **[Nível 2] Gestão de Serviços via Interface Web:** Gerenciamento de Apache, MySQL, Postfix, etc.
|
||||||
|
* **[Nível 2] Agendamento de Tarefas (Cron):** Criação e monitoramento de jobs agendados.
|
||||||
|
* **[Nível 3] Backup e Restauração de Configurações:** Exportação e importação de configurações do sistema.
|
||||||
|
|
||||||
|
## 14. Editores de Texto (Nano / Vim / Vi)
|
||||||
|
|
||||||
|
* **[Nível 0] Nano - Editor Básico:** Abrir, editar e salvar arquivos. Atalhos essenciais (Ctrl+O, Ctrl+X).
|
||||||
|
* **[Nível 1] Vim/Vi - Comandos Essenciais:** Modos (Normal, Insert, Command), navegação básica, salvar e sair (`:wq`, `:q!`).
|
||||||
|
* **[Nível 2] Vim - Produtividade:** Busca e substituição, macros, configuração de `.vimrc`.
|
||||||
|
|
||||||
|
## 15. Comandos de Terminal
|
||||||
|
|
||||||
|
* **Linux:**
|
||||||
|
* [Nível 0] Navegação e Arquivos: `ls`, `cd`, `pwd`, `cp`, `mv`, `rm`, `mkdir`, `cat`, `less`.
|
||||||
|
* [Nível 1] Permissões e Ownership: `chmod`, `chown`, `chgrp`.
|
||||||
|
* [Nível 1] Processos e Recursos: `ps`, `top`, `htop`, `kill`, `df`, `du`, `free`.
|
||||||
|
* [Nível 2] Rede e Diagnóstico: `ping`, `traceroute`, `netstat`, `ss`, `curl`, `wget`, `dig`, `nslookup`.
|
||||||
|
* [Nível 2] Compressão e Arquivos: `tar`, `gzip`, `zip`, `unzip`.
|
||||||
|
* **Windows (CMD/PowerShell):**
|
||||||
|
* [Nível 0] Navegação e Arquivos: `dir`, `cd`, `copy`, `move`, `del`, `mkdir`, `type`.
|
||||||
|
* [Nível 1] Rede e Diagnóstico: `ping`, `tracert`, `ipconfig`, `netstat`, `nslookup`.
|
||||||
|
* [Nível 2] PowerShell Essencial: `Get-Command`, `Get-Help`, `Get-Process`, `Get-Service`, pipelines.
|
||||||
|
|
||||||
|
## 16. Agendamento de Tarefas (Cron / Task Scheduler)
|
||||||
|
|
||||||
|
* **Cron (Linux):**
|
||||||
|
* [Nível 1] Sintaxe do Crontab: Entendendo os 5 campos (min, hora, dia, mês, semana).
|
||||||
|
* [Nível 1] Gerenciamento de Jobs: `crontab -e`, `crontab -l`, logs em `/var/log/cron`.
|
||||||
|
* [Nível 2] Variáveis e Scripts: Definindo PATH, MAILTO, executando scripts complexos.
|
||||||
|
* **Task Scheduler (Windows):**
|
||||||
|
* [Nível 1] Criação de Tarefas Básicas: Agendamento via GUI (Agendador de Tarefas).
|
||||||
|
* [Nível 2] Tarefas Avançadas (schtasks): Criação via linha de comando e triggers complexos.
|
||||||
|
* **Leitura de Logs Windows (Event Viewer):**
|
||||||
|
* [Nível 1] Navegação no Visualizador de Eventos: Application, Security, System logs.
|
||||||
|
* [Nível 2] Filtragem e Busca de Eventos: IDs de evento críticos, exportação de logs.
|
||||||
|
* [Nível 2] Análise de Falhas de Login e Segurança: Eventos 4625, 4624, 4648.
|
||||||
|
|
||||||
|
## 17. Diagnóstico de Rede (Ferramentas)
|
||||||
|
|
||||||
|
* **[Nível 1] Ping e Conectividade:** Uso de `ping` para testar alcance de hosts.
|
||||||
|
* **[Nível 1] Traceroute/Tracert:** Diagnóstico de caminho de pacotes (`traceroute` Linux, `tracert` Windows).
|
||||||
|
* **[Nível 2] Dig e Nslookup:** Consultas DNS avançadas, verificação de registros A, MX, TXT, PTR.
|
||||||
|
* **[Nível 2] Netstat/SS:** Verificação de portas abertas e conexões ativas.
|
||||||
|
* **[Nível 2] Curl/Wget:** Testes de HTTP, headers, download de arquivos.
|
||||||
|
|
||||||
|
## 18. Certificados SSL/TLS (Certbot / Let's Encrypt)
|
||||||
|
|
||||||
|
* **[Nível 1] Instalação do Certbot:** Instalação em Debian/Ubuntu, CentOS/RHEL.
|
||||||
|
* **[Nível 2] Emissão de Certificados:** Modo standalone, webroot e DNS challenge.
|
||||||
|
* **[Nível 2] Renovação Automática:** Configuração de cron para `certbot renew`.
|
||||||
|
* **[Nível 3] Troubleshooting de Expiração:** Diagnóstico de falhas de renovação e rate limits.
|
||||||
|
|
||||||
|
## 19. Backup Empresarial (Veeam)
|
||||||
|
|
||||||
|
* **[Nível 1] Instalação e Configuração Inicial:** Deploy do Veeam Backup & Replication.
|
||||||
|
* **[Nível 2] Backup de VMs (VMware/Hyper-V):** Criação de jobs de backup e políticas de retenção.
|
||||||
|
* **[Nível 2] Backup de Endpoints (Veeam Agent):** Proteção de workstations e servidores físicos.
|
||||||
|
* **[Nível 3] Restauração Granular:** Recuperação de arquivos, itens de Exchange/AD, VMs completas.
|
||||||
|
* **[Nível 3] Replicação e Disaster Recovery:** Configuração de réplicas e failover plans.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue