securing-historian-server-in-ot-environment
Audita e protege servidores de histórico em ambientes industriais (OT). Garante a integridade e o acesso seguro aos dados de processo.
O que ela faz
Esta ferramenta verifica a segurança de servidores de dados históricos industriais (como OSIsoft PI, Honeywell PHD, GE Proficy, AVEVA Historian) em ambientes de produção. Ela verifica se as configurações de rede, acesso e proteção de dados estão seguras.
Quando usar
- ✓Ao configurar um novo servidor histórico pela primeira vez.
- ✓Ao revisar a segurança de um servidor histórico existente.
- ✓Ao planejar como enviar dados do chão de fábrica para a rede de TI de forma segura.
Exemplo do que pedir para a IA
“Verifique a segurança do meu servidor histórico OSIsoft PI no endereço 192.168.1.100.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta se conecta ao servidor para verificar portas abertas e configurações comuns de segurança. Ela identifica riscos como serviços desnecessários expostos ou falta de criptografia.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill securing-historian-server-in-ot-environmentOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/securing-historian-server-in-ot-environment/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Protegendo o Servidor Historian em Ambientes OT
Quando Usar
- Ao implantar um novo servidor historian em um ambiente OT e configurá-lo de forma segura desde o início
- Ao fortalecer um historian existente após uma avaliação de segurança identificar que ele é um alvo de alto risco
- Ao projetar a arquitetura de replicação de dados do historian através de uma DMZ para acesso de TI aos dados de processo
- Ao implementar controles de acesso para impedir a modificação não autorizada de dados históricos de processo
- Ao investigar suspeitas de comprometimento do historian ou problemas de integridade de dados
Não usar para segurança de banco de dados apenas de TI sem dados OT (veja o fortalecimento geral de bancos de dados), para segurança de transmissão de dados SCADA em tempo real (veja detecção-de-ataques-em-sistemas-scada), ou para decisões de seleção e dimensionamento do historian.
Pré-requisitos
- Plataforma Historian (OSIsoft PI, Honeywell PHD, GE Proficy, AVEVA Historian) instalada e operacional
- Segmentação de rede com o historian posicionado no Nível 3 (Operações do Site) de acordo com o Modelo Purdue
- Compreensão dos fluxos de dados: dispositivos de campo -> PLCs -> servidores OPC -> historian
- Acesso às credenciais de administração do historian
- Infraestrutura DMZ para replicação de dados voltada para TI
Fluxo de Trabalho
Etapa 1: Auditar a Configuração de Segurança Atual do Historian
Avalie a postura de segurança atual do servidor historian, incluindo exposição de rede, autenticação e controles de acesso.
#!/usr/bin/env python3
"""Ferramenta de Auditoria de Segurança do Historian.
Avalia a configuração de segurança de servidores historian de processo
incluindo exposição de rede, autenticação, controles de acesso
e proteções de integridade de dados.
"""
import json
import socket
import ssl
import subprocess
import sys
from dataclasses import dataclass, field, asdict
from datetime import datetime
@dataclass
class AuditFinding:
finding_id: str
severity: str
category: str
title: str
detail: str
remediation: str
class HistorianSecurityAudit:
"""Auditoria de segurança para servidores historian OT."""
def __init__(self, historian_ip, historian_type="PI"):
self.ip = historian_ip
self.type = historian_type
self.findings = []
self.counter = 1
def check_network_exposure(self):
"""Verifica quais serviços de rede estão expostos pelo historian."""
print(f"[*] Verificando exposição de rede: {self.ip}")
# Portas comuns do historian
ports_to_check = {
5450: ("PI Data Archive", "Conexões PI SDK/API"),
5457: ("PI AF Server", "PI Asset Framework"),
5459: ("PI Notifications", "Serviço de Notificação PI"),
443: ("HTTPS", "PI Vision / API Web"),
80: ("HTTP", "Interface web não segura"),
1433: ("MS SQL Server", "Acesso direto ao banco de dados"),
5432: ("PostgreSQL", "Acesso direto ao banco de dados"),
3389: ("RDP", "Área de Trabalho Remota"),
135: ("RPC", "RPC do Windows"),
445: ("SMB", "Compartilhamento de Arquivos do Windows"),
8080: ("HTTP Alt", "Interface web alternativa"),
}
exposed = []
for port, (service, desc) in ports_to_check.items():
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3)
result = sock.connect_ex((self.ip, port))
sock.close()
if result == 0:
exposed.append({"port": port, "service": service, "description": desc})
except Exception:
pass
# Sinaliza serviços desnecessariamente expostos
for svc in exposed:
if svc["port"] in (80, 135, 445, 3389):
self.findings.append(AuditFinding(
finding_id=f"HIST-{self.counter:03d}",
severity="high",
category="Exposição de Rede",
title=f"Serviço desnecessário exposto: {svc['service']} (porta {svc['port']})",
detail=f"Porta {svc['port']} ({svc['description']}) está acessível no historian",
remediation=f"Desative {svc['service']} ou restrinja via firewall do host",
))
self.counter += 1
if any(s["port"] == 80 for s in exposed):
self.findings.append(AuditFinding(
finding_id=f"HIST-{self.counter:03d}",
severity="high",
category="Criptografia",
title="Interface web do historian em HTTP não criptografado",
…
Perguntas frequentes
O que é um 'ambiente OT'?
OT significa 'Tecnologia Operacional'. São os sistemas que controlam equipamentos e processos industriais, como fábricas e usinas.
O que é o 'Modelo Purdue'?
É um modelo que divide a rede industrial em níveis, do chão de fábrica até a rede de TI, para organizar e proteger os sistemas.
O que é 'DMZ'?
Uma DMZ (Zona Desmilitarizada) é uma área de rede intermediária que protege a rede interna (OT) de acessos externos (IT), permitindo a comunicação controlada.
Detalhes
Descrição original do autor
Audits and hardens process historian servers (OSIsoft PI, Honeywell PHD, GE Proficy, AVEVA Historian) in OT environments: Purdue-level network placement, interface access control, secure DMZ replication via data diodes or PI-to-PI connectors, SQL injection prevention, and process data integrity. Use when auditing or hardening a historian server, or designing secure OT-to-IT data replication throug
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6209
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC