Desarrollo de Un firewall industrial



El objetivo es explicar la metodología seguida para el desarrollo de un prototipo mínimo viable de un firewall industrial, empleando el protocolo modbus, para esto se han diseñado dos topologías.

                                              Topologia 1.

                                              Topologia 2.

Para esto, en las dos topologías la raspberry debe soportar un comportamiento como router, la configuración del firewall y  el servidor modbus.
Se debe resaltar que las configuraciones a realizar se apoyan en capas de software diferentes, el primer paso es la configuración de la Rpi como un router para esto se adiciona una tarjeta usb nano encore.

Configuración de Rpi como router TCP:

Sobre una instalación de Raspbian jessie se procede a la actualización del conjunto de paquetes con:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
En la topología planteada el Puerto Ethernet cableado va a realizar la conexión hacia la red externa y una tarjeta usb wifi se asocia con la red de clientes usb.
Entonces se instala la tarjeta y se verifica su detección en el sistema operativo con    
               lsusb
                                    Escaneo de los dispositivos USB.
Y se corrobora que la tarjeta soporta el modo Access point con:
                iw list.

Ambos comandos deben detectar a la tarjeta wlan0.
La mayor parte del software necesario viene por defecto instalado en Raspbian,
 El servicio de creación de puntos de  acceso y de creación del servidor dhcp se instalan de forma manual.
                sudo apt-get install isc-dhcp-server hostapd
Una vez se llega a este punto se puede reiniciar el  Raspberry para empezar con la configuración.
Posteriormente se configura el servidor dhcp, editando
               sudo nano /etc/dhcp/dhcpd.conf
Las siguientes líneas están por defecto sin comentar, se comentan con el símbolo # delante de manera que dejen de estar habilitadas quedando de la siguiente manera:

 #option domain-name "example.org";
 #option domain-name-servers ns1.example.org, ns2.example.org

Se descomenta la línea authoritative del mismo archivo.
Dentro del mismo archivo se configura la red que creara el router:
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.30;
option broadcast-address 192.168.2.255;
option routers 192.168.2.1
default-lease-time 600;
max-lease-time 7200;
option domain-name "local
option domain-name-servers 8.8.8.8, 8.8.4.4;[1]

 La figura 13 muestra dicha configuración.



[1] Manual para configurar Raspberry PI Disponible en: https://www.redeszone.net/raspberry-pi/manual-para-configurar-raspberry-pi-como-un-router-wi-fi/

Se edita posteriormente el nano /etc/default/isc-dhcp-server en el cual se adiciona o descomenta la línea
INTERFACES="wlan0"

Lo primero que se hace será desconectar la tarjeta WI-FI.  Para esto se escribe:

% sudo ifdown wlan0

A continuación se abre el fichero “interfaces”:
% sudo cp /etc/network/interfaces /etc/network/interfaces.orig
% sudo nano /etc/network/interfaces
Y se configura de la siguiente manera:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow hotplug wlan0
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
Se comenta o se borra las demás líneas. Se guardan los cambios y se cierra el documento. El archivo interfaces se puede observar en la figura 14. Para aplicar los cambios al momento debemos teclear:
% sudo ifconfig wlan0 192.168.2.1           [1]



[1] Manual para configurar Raspberry PI Disponible en: https://www.redeszone.net/raspberry-pi/manual-para-configurar-raspberry-pi-como-un-router-wi-fi/


Para configurar el punto de acceso se edita otro fichero tecleando:

% sudo cp /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.orig
% sudo nano /etc/hostapd/hostapd.conf

Y en este archivo se pega:
interface=wlan0
ssid=RaspiAP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP[1]  

La figura 15, muestra el archivo hostapd que soporta el punto de acceso   y en el cual se evidencian los nombre del punto de acceso, el tipo de seguridad y el password.

Figura 15. Resultado de los comandos de modificación del archivo hostapd en la configuración del punto de acceso de la red modbus.

Se puede cambiar  el SSID por el nombre que se quiera dar a la red como el canal en channel y la wpa_passphrase con la contraseña, en texto plano, que se quiera utilizar para conectarse.
Para finalizar con la configuración se abre un nuevo archivo de configuración tecleando:

% sudo cp /etc/default/hostapd /etc/default/hostapd.orig
% sudo nano /etc/default/hostapd

Se descomenta y se cambia la línea  #DAEMON_CONF=””  por:
DAEMON_CONF="/etc/hostapd/hostapd.conf"[1]
Figura 16. Resultado de los comandos de modificación del archivo hostapd en la configuración del punto de acceso de la red modbus.

                                     Estado de la configuracion del host APD
Se guarda el archivo y se configura el SO para que reinicie todos los servicios de forma automática, para esto se debe:
Configurar el reenvío de paquetes para que Raspberry Pi transmita las tramas desde su núcleo al enrutador.  Por lo tanto,  se realiza la siguiente configuración:
Se edita el archivo sysctl:

% sudo cp /etc/sysctl.conf /etc/sysctl.conf.orig
% sudo nano /etc/sysctl.conf

Se busca la línea “# net.ipv4.ip_forward=1” y se descomenta, quedando:
               net.ipv4.ip_forward=1[1]
La siguiente figura  evidencia la configuración para el reenvió de paquetes.



. Resultado de los comandos de modificación del archivo sysctl.conf  en la configuración del reenvío de paquetes de la red modbuF hacia el router de internet.


Se guarda y se cierra el documento. Para que se tomen los cambios se digita:
% sudo sysctl -p /etc/sysctl.conf

Se habilita la NAT digitando:                      
               % sudo iptables -t nat -A POSTROUTING -j MASQUERADE [1]

posteriormente se guardan las reglas, para garantizar su persistencia instalando
%  sudo apt-get install iptables-persistent.


Pruebas del Servidor Modbus para la topología 1.
Se inicia el servidor modbus,  siguiendo el orden dado por la topología 1, el objetivo específico aquí es validar la operación del servidor en conexión con un cliente local ejecutado desde el pc, el cliente local usado es simply modbus client, para Windows, el cual es una herramienta gratuita, sin limitaciones en funcionalidad, pero si con limitaciones en cuanto al número de llamados que puede realizar por sesión.

                                  Conexion entre el cliente y el servidor Modbus


La Rpi se encuentra en la dirección dhcp 192.168.0.102 y es accedida desde el pc vía el protocolo drp de Windows y mediante la herramienta xdrp para Linux. Una vez el servidor está en ejecución muestra su estado y el puerto que consume, en este caso el puerto 502. En la línea DEBUG se observa el lanzamiento de la clase Client la cual indica que se ha conectado un cliente con ip4 y con protocolo TCP.
Cuando se realizan lecturas de los registros al interior del Servidor, este lo reporta.
Modificación de registros desde el cliente

VALIDACION DEL FIREWALL

El proceso de verificación de la funcionalidad del firewall considera aspectos importantes como: La topología de red, la ubicación del ataque, la activación del firewall, y el tipo de funcionalidad.

La figura resalta la topología de red implementada, se destaca el firewall con dos interfaces de red, el servidor modbus está programado dentro de la raspberry pi.

                                  Topologia del ataque 1



                                  Topologia del ataque 2


Para la validación se utiliza la herramienta Nessus en su licencia de siete días. 
Nessus es un escáner de vulnerabilidades patentado desarrollado por Tenable 
Network Security. Es gratuito para uso personal en un entorno no empresarial[1]. 
Nessus permite escaneos para los siguientes tipos de vulnerabilidades:
 
·         Vulnerabilidades que permiten a un hacker remoto controlar o acceder a datos 
       confidenciales en un sistema.
·         Configuración incorrecta (por ejemplo, retransmisión de correo abierto, 
       parches faltantes, etc.).
·         Contraseñas predeterminadas, algunas contraseñas comunes y contraseñas
      en blanco / ausentes en algunas cuentas del sistema. 
·         Nessus también puede llamar a Hydra (una herramienta externa) para lanzar
      un ataque de diccionario.
·         Denegaciones de servicio contra la pila TCP / IP mediante el uso de paquetes 
       mal formados
·         Preparación para las auditorías PCI DSS
 
El programa crea un entorno de servidor local descargando las librerías para su operación,
 la figura  muestra el entorno de inicio.


                                         Entorno de inicio para la selección de tipo de análisis.

Los análisis realizados en la presente validación emplean la plantilla de escaneo de 
red básico ya que realiza un análisis completo del sistema que es adecuado para cualquier
 host.
 Por ejemplo, se puede usar esta plantilla para realizar un análisis interno de vulnerabilidades en los sistemas informáticos de la red  interna.[1]
 Resultados del análisis: 

Con este conjunto de comparaciones se valida la operación 
del firewall bajo dos escenarios se concluye que es completamente operativo y que el
conjunto de reglas puede ampliarse para proteger más puertos o protocolos
instalados al interior de una red industrial. Los anexos incluyen los 4
reportes generados por la herramienta para los casos de análisis







[1] Nessus 6.4 User Guide, April 5, 2016 (Revision 3), Copyright © 2015. Tenable Network Security, Inc. All rights reserved. Tenable Network Security and Nessus are registered trademarks of Tenable Network Security, Inc.


[1] "Nessus Release Notes". Tenable Network Security. Retrieved 2017-04-13. Copyright © 2015. Tenable Network Security, Inc. All rights reserved. Tenable Network Security and Nessus are registered trademarks of Tenable Network Security, Inc


[1] Manual para configurar Raspberry PI Disponible en: https://www.redeszone.net/raspberry-pi/manual-para-configurar-raspberry-pi-como-un-router-wi-fi/





































Comments