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 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.
Conexion entre el cliente y el servidor Modbus
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.
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
Post a Comment