Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill ot-security명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | ot-security |
| description | Cybersécurité OT et résilience selon l'ISA/IEC 62443. |
| version | 1.2.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"EVA":{"tags":["security","ot-security",62443,"secrets","resilience","network","industrial-automation"],"related_skills":["simplify-code","plan"]}} |
Le réseau de production (OT) a des priorités distinctes du réseau informatique (IT). En OT, la priorité absolue est la Disponibilité et la Sécurité des personnes et équipements (Safety), suivies par l'Intégrité et la Confidentialité. Lors du développement d'applications ou de scripts d'interface avec des automates ou des supervisions, il est crucial d'appliquer les principes fondamentaux de la norme ISA/IEC 62443 au niveau du code.
Cette compétence guide l'agent EVA pour écrire des scripts d'informatique industrielle hautement résilients aux pannes réseaux, et sécurisés contre les vulnérabilités courantes du monde OT.
Le script d'assistance associé à cette compétence est disponible sous ot_security_scanner.py.
À utiliser lorsque l'utilisateur demande de :
Ne jamais insérer des mots de passe de bases de données, de serveurs OPC-UA ou de brokers MQTT en dur dans les scripts.
.env non partagé sur les dépôts de code (ex: git).import os
from dotenv import load_dotenv
# Charger les variables du fichier .env
load_dotenv()
db_user = os.getenv("DB_USER")
db_password = os.getenv("DB_PASS")
# Connexion sécurisée
# connect(user=db_user, password=db_password)
Puisque les scripts Python peuvent écrire directement dans la mémoire des automates (via Modbus, Snap7, ou PyLogix), toute écriture de consigne doit être précédée d'un contrôle de cohérence des plages de valeurs (Range Check) au niveau applicatif pour éviter des dysfonctionnements physiques sur la machine.
def safe_write_speed_limit(client_plc, speed_setpoint: float):
# Seuils de sécurité mécanique définis par le process
MIN_SPEED = 0.0
MAX_SPEED = 1500.0
if speed_setpoint < MIN_SPEED or speed_setpoint > MAX_SPEED:
raise ValueError("Consigne de vitesse %.2f hors limites de sécurité [%.1f, %.1f]"
% (speed_setpoint, MIN_SPEED, MAX_SPEED))
# Si OK, procéder à l'écriture physique
# client_plc.write('Tag_Speed', speed_setpoint)
Les coupures réseau de quelques secondes ou minutes sont courantes en atelier. Les scripts ne doivent pas planter à la première déconnexion mais tenter des reconnexions périodiques tout en alertant les superviseurs.
import time
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("EVA_OT_Monitor")
def communication_loop(plc_client):
reconnect_delay = 5.0 # Attendre 5s avant de réessayer
while True:
try:
if not plc_client.is_connected():
logger.warning("Connexion perdue. Tentative de reconnexion...")
plc_client.connect()
time.sleep(1)
continue
# Lecture de données
data = plc_client.read_all_tags()
logger.info("Données récupérées avec succès.")
# Temps de boucle nominal
time.sleep(2.0)
except Exception as e:
logger.error("Erreur de communication : %s. Nouvelle tentative dans %s secondes."
% (str(e), reconnect_delay))
time.sleep(reconnect_delay)
Pour exécuter le scanner de ports industriels de manière non-intrusive sur une plage réseau, utilisez l'outil d'exécution de code (execute_code) avec le script suivant :
import subprocess
# Plage réseau à scanner (ex : automate local et son réseau)
targets = "127.0.0.1,192.168.1.0/24"
cmd = [
".venv/Scripts/python.exe",
"skills/industrial/standards-security/ot-security/scripts/ot_security_scanner.py",
"--targets", targets,
"--ports", "102,502,4840,44818", # S7Comm, Modbus, OPC UA, EtherNet/IP
"--timeout", "0.5" # Temps d'attente court pour rester discret
]
print(f"Lancement de l'audit de sécurité réseau sur : {targets}...")
result = subprocess.run(cmd, capture_output=True, text=True)
print(result.stdout)
if result.stderr:
print("Erreurs :", result.stderr)
Commit de fichiers de configuration contenant des mots de passe :
.env ou de configuration locale contenant des mots de passe au fichier .gitignore et distribuer un fichier modèle vide (ex: .env.example).Écritures aveugles en boucle infinie (surcharges PLC) :
Scans de ports agressifs (type Nmap) en production :
.env) sont ajoutés au fichier .gitignore.