====== CONSTRUCCIÓ DE UN ENTORN DE SIMULACIÓ DE DISPOSITIUS INDUSTRIALS OT ====== En aquest taller aprendràs a desplegar un entorn de simulació de dispositius industrials OT, instal·lant simuladors del protocol Modbus TCP i del protocol s7comm que utilitzen els dispositius Siemens. Utilitzarem les aplicacions QModMaster i Modbuspal amb les eines Snap7 que simulen dispositius Siemens per simular un entorn industrial. Per comprovar el funcionament configurarem les eines d'escaneig actiu utilitzant les aplicacions NMap i PLCScan. I finalment proposem realitzar 3 exercicis. {{ intro.png?600 }} {{tag> #CiberOtMp02 #CeotMp02 #FpInfor #CiberOT #CiberOtMp03 #Ceot #CeotMp03 Industrial I4.0 STEP7 PLCSIM ModBus }} ===== Introducció ===== Aquest taller està separat en dues parts En la primera part instal·larem un grup d'eines que et permetran simular les comunicacions que es generen en dispositius que utilitzen el protocol Modbus, en concret Modbus TCP. Aquests dispositius simularan un Mestre Modbus, que és el que realitza la petició i la consulta de la informació que emmagatzema l'Esclau Modbus, i un Esclau Modbus que és el que rep les peticions i envia la informació al Mestre Modbus, com faria un PLC Industrial. En la segona que instal·larem les eines necessàries per simular un dispositiu PLC Siemens, amb el paquet de programariSnap7. Aquest paquet de programari està format per dues aplicacions de tipus client/servidor i ambdues en conjunt simulen el funcionament d'un dispositiu PLC Siemens. ===== Requeriments previs ===== Abans de començar a treballar s'ha de tenir instal·lat a l'ordinador els programes Oracle VM VirtualBox 7.0 i dins, almenys una màquina virtual de Ubuntu 20_04 LTS. {{ vmindustrial.png?600 }} Descàrregues que utilitzarem per realitzar l'entorn industrial virtual: * [[https://ubuntu.com/download|Ubuntu Desktop 20.04 LTS]] * [[https://sourceforge.net/projects/qmodmaster/| qmodmaster]] * [[https://sourceforge.net/projects/modbuspal/| modbuspal]] * [[https://sourceforge.net/projects/snap7/files/1.4.2//| snap7 de Siemens]] ===== Preparació de l'entorn ===== En primer lloc executa les instruccions que et permeten la actualització dels paquets de programari del repositori: \\ $ sudo apt update $ sudo apt upgrade Un cop tens els repositoris actualitzats, instal·la el paquet net-tools per poder utilitzar l'ordre ifconfig que tornarà tota la informació de la interfície de xarxa que utilitzeu, com la adreça IP. \\ $ sudo apt install net-tools Ara hem d'instal·lar 2 paquets de software qt5 i qtcreator, que formen part del framework multiplataforma per desenvolupar aplicacions gràfiques Qt, necessaris per la aplicació QModMaster \\ $ sudo apt install qt5-default $ sudo apt install qtcreator Per últim, instal·lem el paquet de software «g++» (compilador de C++ de GNU): \\ § sudo apt install g++ ===== QModMaster (dispositiu mestre Modbus) ===== Descarrega i descomprimeix l'arxiu [[https://sourceforge.net/projects/qmodmaster/ |qModMaster-code-0.5.2-3.zip ]] a la carpeta Documents i crea una carpeta "build". que es on construirem el programa executable qModMaster.pro: \\ § cd qModMaster-code-0.5.2-3/ § mkdir build § cd build/ § qmake ../qModMaster.pro § make Copiem la carpeta ManModbus de forma recursiva i executem el programa: \\ § cp -r ../ManModbus/ ManModbus § ./qModMaster Es pot observar la següent finestra de l'aplicació QModMaster: {{ qmodmaster.png?400 }} ===== Modbuspal (simulador esclau de Modbus) ===== Obre un nou terminal i realitza l'instal·lació del paquet de software per a màquines virtuals de Java: \\ § sudo apt install default-jre Descarrega i descomprimeix l'arxiu [[https://sourceforge.net/projects/modbuspal/| modbuspal.jar]] a la nova carpeta modbuspal, deprés executa l'arxiu ModbusPal.jar: \\ § mkdir Documentos/modbuspal § cp Descargas/ModbusPal.jar Documentos/modbuspal/ § cd Documentos/modbuspal/ § sudo java -jar ModbusPal.jar Ara ja tenim el simulador de dispositius ModbusPal amb el qual, més endavant, crearem els nostres esclaus: {{ modbuspal.png?400 }} ===== Snap7 Client (eines de simulació de dispositius Siemens) ===== Aquest paquet de programari està format per dues aplicacions de tipus client/servidor i totes dues en conjunt simulen el funcionament d'un dispositiu PLC Siemens. La primera és l'aplicació Snap7 Server Demo i és la que exerceix el rol de dispositiu PLC i subministra les dades quan li són sol·licitades. La segona aplicació és l'encarregada d'interactuar amb aquest PLC com a client i interfície per mostrar tota la informació del mateix. Obre un nou terminal i realitza en primer lloc l'instal·lació del paquet de software python 3 pip, necessari pel funcionament de Sanp7 \\ § sudo apt install python3-pip Descarrega i descomprimeix l'arxiu [[https://sourceforge.net/projects/snap7/files/1.4.2/| snap7-full-1.4.2:]] a Documents, després compila l'arxiu dins del nostre sistema Linux de 64 bits: \\ § cd Documentos/snap7-full-1.4.2/build/unix/ § make -f x86_64_linux.mk § cd ../bin/x86_64-linux/ § sudo cp libsnap7.so /usr/lib Hem de crear els vincles necessaris per les biblioteques compartides amb ldconfig i donar permisos d'execució a les dues aplicacions d'Snap7 \\ § sudo ldconfig § cd ../../../rich-demos/x86_64-linux/bin/ § chmod u+x clientdemo § chmod u+x serverdemo Ara ja podem executar les 2 aplicacions, abans hem de executar ifconfig per esbrinar la IP de l'adaptador de xarxa de la MV Ubuntu. En el nostre cas la direcció IP és la 10.0.2.15: {{ ifconfig.png?400 }} Primer, executa l'aplicació «serverdemo» : \\ sudo ./serverdemo Segon, en un nou terminal, executa l'aplicació Client Demo : \\ § cd Documentos/snap7-full-1.4.2/rich-demos/x86_64-linux/bin/ § ./clientdemo {{ serverclient.png?800 }} Per comprovar que funciona hem de posar la direcció IP 10.0.2.15 i a l'entrada «Connect as«, escollim S7 BASIC. Si fem click sobre el botó «Connect» veurem que es connecta i ara a la pestanya «Control» podem realitzar operació de parada del PLC (Stop) i arrancada del PLC (Start): {{ serverclientrun.png?800 }} Es important per tornar a arrencar el PLC, premer el botó «Hot Restart« i si vols desconectar prems en aquest ordre al botó de «Disconnect» (a l'aplicació Snap 7 Client Demo) i «Stop» (a l'aplicació Snap 7 Server Demo). ===== Configuració d'eines de escaneig actiu (NMAP I PLCSCAN) ===== Obre un nou terminal i instal·lem i verifiquem el paquet de software Nmap: \\ § sudo apt install nmap § nmap -V § sudo apt install git {{ nmap.png?700 }} Per utilitzar l'eina PLCscan clonarem a la carpeta «Documentos» el repositori del GitHub, seguidament per poder exectar-lo hem d'instal·lar python2 \\ § git clone https://github.com/meeas/plcscan § cd Documentos § sudo apt install python2 § cd plcscan/ § python2 plcscan.py {{ plcscan.png?700 }} ===== Exercicis proposats ===== ===Exercici 1. Creació de l'esclau núm. 1 MODBUS i lectura de COILS=== En aquest apartat crearem un esclau a l'aplicació ModbusPal i establirem la comunicació Modbus TCP amb l'aplicació QModMaster per a la lectura de les dades. • Les coils són noms d'adreces de memòria, és a dir, són registres o noms de variables predefinides de tipus booleà, i que poden ser llegides o escrites. • Els holding registers, igual que els coils, són noms d'adreces de memòria que permeten emmagatzemar dades de tipus integer (és a dir, nombres enters). ===Exercici 2. Creació de l'esclau núm. 2 MODBUS i realitza una lectura de HOLDING REGISTERS=== En aquest apartat es crearà un segon esclau amb l'aplicació Modbuspal (com has vist anteriorment) i s'establirà la comunicació Modbus TCP amb l'aplicació QModMaster per a la lectura de les dades del Holding register de l'esclau nº1 que heu creat anteriorment i d'un nou Holding register que crearem a l'esclau nº2. ===Exercici 3. Escaneig de dispositius que utilitzen el protocol Modbus amb l'eina PLCSCAN=== En aquest apartat s'utilitzarà l'eina PLCScan per a realitzar la identificació de dispositius que utilitzen el protocol Modbus TCP, així com els dispositius Siemens que utilitzen el protocol de comunicació s7comm