Snap7, suite para de PLCs y comunicaciones Siemens.

En lo que a comunicaciones se refiere, si en algo se caracterizan los Sistemas de Control Industrial es por la gran cantidad de protocolos existentes.  Según sean las operaciones a llevar a cabo estos pueden dividirse, principalmente, en dos grades grupos: “Fieldbus” y “Backend”. Dentro de “FieldBus” encontramos aquellos relacionados con tareas vinculadas a operaciones de proceso y control; mientras que en “Backend” los vinculados a funciones de supervisión, como lo son servidores y sistemas SCADA. Algunos ejemplos son:

Fieldbus:

  • Profibus
  • Devicenet
  • Canbus
  • Profinet
  • Ethernet/IP
  • CC-Link
  • SERCOS

Backend:

  • OPC
  • DNP3

En cualquiera de los casos el abanico existente es muy amplio y por si fuera poco a éstos hay que sumar los que cada fabricante desarrolla para sus propios productos. Tal es el caso de S7 de SIEMENS, objeto en día de hoy, aunque como podéis imaginar, no el único.

Fabricante Protocolo
OMRON FINS
HITACHI HI-Protocol
ROCKWELL RS-Logix
SCHNEIDER Unitelway
HONEYWELL UDC

Dicho lo cual, aunque tengamos que hacer una referencia al protocolo en sí, nos vamos a centrar en una suite llamada Snap7 con la que podremos imitar ciertas comunicaciones y comportamientos de igual modo que lo hicimos con Modbus en la entrada “Simulador de Protocolo MODBUS”.

Snap7 es un software multi plataforma para comunicarse de igual manera que lo harían de forma nativa PLCs del fabricante SIEMENS empleando tecnología Ethernet y protocolo S7.

Entre sus características principales destacan:

  • Arquitectura diseñada para 32 y 64 bits.
  • Software Open Source.
  • Soporte para varios sistemas operativos, Windows, Linux, MacOSX, etc.
  • Soporte para varios tipos de CPU.
  • No son necesarios librerías de terceros.
  • No es necesaria su instalación.
  • Modelos de transmisión de información síncrona como asíncrona.
  • Se incluyen algunas demos para su uso directo.

A día de hoy da soporte parcial a CPUs más nuevas como 1200 y 1500 y más antiguas como 200. Dentro de su estructura se definen 3 componentes principales los cuales son “Client”, “Server” y “Partner”.

Como digo, la aplicación está orientada para ser utilizada en comunicaciones Ethernet y  S7, no siendo necesario ningún adaptador especial.

La implementación del protocolo S7, base de las comunicaciones entre dispositivos SIEMENS, se soporta sobre una ampliación del protocolo TCP recogida en la RFC 1006 y titulada como “ISO Transport Service on top of TCP”. Esto es necesario ya que TCP esta orientado al envío de datos  no transmitiendo información sobre la longitud de la información contenida o sobre cuándo empiezan o terminan. Sin embargo, en aplicaciones de automatización, es indispensable operar orientado a mensajes. Esto es, enviar bloques de datos en los que el receptor sea capaz de reconocer, ahora sí, dónde terminan y finalizan cada uno de ellos. Con RFC 1006, se logra esto último ya que se incluye una cabecera que lo define, y por tanto, garantiza el proceso. Resumiendo, RFC 1006 es una aplicación dirigida a mensajes pero basada en TCP que está basado en datos.

Una vez descargada la aplicación, conviene leer el Manual de Referencia para conocer las capacidades, características, usos y otras cuestiones técnicas.

En mi caso voy a utilizar las «Demos» para Sistemas Operativos Windows los cuales encontraremos junto con el resto de versiones en:

snap7-full-1.4.2\rich-demos

snap7-full-1.4.2\rich-demos\x86_64-win64\bin

Allí encontramos tres aplicaciones:

  • clientdemo
  • serverdemo
  • PartnerDemo

Como se puede entender, hacen referencia a los dispositivos «Cliente» (Workstation, HMI o FieldPG), «Servidor» (PLC) y «Partner» (Comunicaciones entre PLCs); donde, los clientes sólo preguntan, los servidores sólo responden y los partner que pueden hablar de forma bidireccional bajo su propia iniciativa. En cualquiera de los casos, desde el punto de vista hardware, no importa cómo se lleven a cabo estas comunicaciones. Es indiferente de si se trata de un puerto de comunicaciones en la propia CPU 3XX-PN o CPU4XX-PN o un módulo tipo CP343 o CP443.

Para este ejemplo iniciaremos el serverdemo y tras configurar la IP (0.0.0.0 si lo corremos en la propia máquina) pincharemos en “Start”. En la parte inferior se puede ver un espacio donde se registran los eventos que a su vez pueden ser habilitados en la la parte superior.

Por otra parte arrancaremos el software cliente, donde deberemos especificar la IP del serverdemo. Puesto que ambas están en el mismo equipo la IP será la de loopback, 127.0.0.1.

ClientDemo_01

Y pinchando en “Connect”…. Voila! Estamos conectados, en teoría, a un PLC de la serie 300.

Luego exploraremos el contenido de las pestañas, como por ejemplo “Security”.

Para comprobar la manera en la que podremos interactuar debemos irnos a la pestaña “Control”. Como podemos ver, actualmente el PLC están “RUN”, pero si presionamos en “Stop” podríamos pararlo.

En el lado del serverdemo:

Y en el clientdemo:

La herramienta contiene otras muchas funcionalidades que viene reflejadas en el Manual de Referencia que podéis encontrar en el mismo paquete, aparte de distintas casuísticas y topologías. Sin duda Snap7 es un excelente recurso con el que aprender el funcionamiento no sólo de los PLCs del fabricante SIEMENS sino la manera en la que se comunican y explorar técnicamente todo lo que nos ofrecen. Muchas veces nos ceñimos a la parte teórica, buscamos información en uno y otro sitio, pero tener la posibilidad de montarnos nuestro propio laboratorio y simular un escenario por muy simple que sea nos permitirá aplicar todo lo leído y ayudarnos a entender mejor los Sistemas de Control. Así pues ahora toca ponerse manos a la obra.

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .

Edorta.

Crónica de Curso «Ciberseguridad en IACS»

En esta ocasión la cosa no va a ir de temas técnicos sino más bien, va a ser una crónica de un curso que he realizado recientemente. Ha sido la primera edición, con lo que me parece positivo dar a conocerla para que más gente se anime y se haga eco de los nuevos cursos que están por venir, así más y más profesionales sigamos formándonos en distintas áreas .

El curos en cuestión se ha denominado bajo el nombre “Curso Avanzado de de Ciberseguridad y Sistemas de Control y Automatización Industrial” y ha sido impartido por INCIBE (Instituto Nacional de Ciberseguridad; lo que era antes INTECO”) vía ONLINE.

Llevo 4 años presando servicios como Técnico/Administrador de Redes y Seguridad en una fábrica dedicada al sector de la automoción, y muchas veces me ha tocado que resolver los problemas de conectividad de Robots, Autómatas, Controles de Soldadura, configurar reglas de firewall para sistemas SCADA, etc. Tenía mucho interés por aprender más sobre este tipo de dispositivos y puesto que todos ellos de una manera u otra se “conectan” a la infraestructura de comunicaciones, pues era mi oportunidad.

Dicho esto, a continuación os dejo el enlace del video promocional para que veáis la idea que se persigue y la forma que se imparte:

Enlace

El curso se divide en 7 Unidades, de las cuales haré un breve resumen general ya que no se desea revelar demasiada información sino despertar la curiosidad:

Unidad 0: Bienvenida al curso avanzado de ciberseguridad industrial

Una presentación del curso en general donde se explica el calendario, actividades, normativa, recursos, criterios, manuales, test, etc.

Unidad 1: Introducción a los sistemas de control y automatización

Aquí ya se empieza con la materia en sí. Se abordan temas como historia de la automatización, evolución, problemas de seguridad, particularidades, etc.

Unidad 2: Estudio detallado de los distintos dispositivos de control

Enumeración y descripción de los elementos que intervienen en el proceso de automatización industrial, configuración, parametrización y medidas de seguridad nativas.

Unidad 3: Conceptos fundamentales de las comunicaciones industriales

Propósitos de las comunicaciones, medios físicos, protocolos, tipos de comunicación.

Unidad 4: Sistemas SCADA, historiadores y otros aplicativos

Modelos de implantación, funcionalidades y campo de actuación de los sistemas SCADA, Historización, soluciones BATCH, MES y BII.

Unidad 5: Estudio detallado de amenazas y vulnerabilidades de seguridad 

Amenazas en entornos industriales, vulnerabilidades diseño, desarrollo, operación y mantenimiento; factores de riesgo; incidentes de seguridad. 

Unidad 6: Presentación de iniciativas, buenas prácticas y soluciones

Aproximación a la protección a los sistemas de automatización y control; iniciativas de seguridad a nivel mundial; métodos, modelos, técnicas de seguridad.

Unidad 7: Visita virtual y demostraciones prácticas de seguridad

Introducción a las redes de distribución eléctrica y “Smart Grids”

Evaluación final y encuesta de satisfacción

Examen final de todo el curso y encuesta de satisfacción.

Cada “Unidad” a su vez se subdivide en distintos “Apartados” que abordan de manera específica los temas a tratar. Todas las “Unidades” y “Apartados” cuentan con un documento en formato .pdf, siendo el contenido de estos últimos un resumen del de las respectivas unidades. Adicionalmente cada “Unidad” dispone de un video introductorio. Los “Apartados” también tienen el suyo donde se explica de manera audiovisual su contenido. En algunos casos los documentos y videos tienen contenido muy similar, pero no igual. Es material didáctico complementario y no excluyente. Ojo, a esto!!!

En general cada “Unidad” posee dos ejercicios, uno de investigación y otro práctico. El de investigación se basa en búsqueda, análisis, y desarrollo de información sobre temas propuestos. Los prácticos se basan por ejemplo, en la instalación de software de prueba o libre para realizar distintas actividades como simulación y análisis de cierto tipo de tráfico de comunicaciones industriales.

Aparte la plataforma cuenta con un Blog donde se deberán “subir” los ejercicios prácticos donde los distintos alumnos podrán ver su contenido y votar en consecuencia.

A la hora de evaluar cada, “Unidad” tiene un test final que, para obtener el diploma final, hay que aprobarlo junto con uno  el final. Adicionalmente cada “Apartado” tiene el suyo propio, cuyo objetivo es evaluar los conocimientos. Estos no puntúan, si se suspenden no pasa nada, aunque es muy recomendable hacerlos.

En dos casos, las actividades han de ser plasmadas en documento “Word” o “PDF” para que sean evaluadas por los propios compañeros y calificarlas del 0 al 100 según su propio criterio.

En general, he quedado muy contento con el curso y ha cumplido con mis expectativas. El contenido de los materiales es muy bueno y la inclusión de video ha dinamizado el aprendizaje ya que muchas veces los cursos se basan en documentación escrita que aburre un poco. Con los videos es distintos. Hay que valorar el esfuerzo que supone la edición y maquetación de los mismos.

Otro de los aspectos destacables son los ejercicios, tanto de investigación como prácticos ya que te obliga a trabajar y profundizar en los distintos temas. Esto marca la diferencia con otros cursos que te explican las cosas, te ponen un test y listo. Aquí tienes que “currártelo” más, y eso me parece positivo para el aprendizaje.

Sin embargo no todo ha sido perfecto. Como en todas las cosas que se hacen por primera vez se pueden cometer errores o mejorar ciertas cosas. Por ejemplo, al principio se estimaba que la duración era de 36 horas y luego que no. La organización amplió posteriormente esta cifra a 50. También algunas preguntas de test podían tener a mi juicio (otros alumnos se pronunciaron igual) más de una posible respuesta válida que repercutía en el fallo de la misma. Lo malo es que no se despejaba la duda con lo que te quedas con ella.

Pero bueno, estoy seguro que los responsables tomarán nota de esto último y lo corregirán para futuras ediciones.

En resumen, recomiendo a todo aquel que desee aprender sobre este campo que se apunte y que lo hagan ya que, en mi caso, he aprendido mucho sobre estos sistemas. Ahora queda seguir formándonos, leer, practicar y seguir mejorando.