En este post voy a mostrar la instalación del IDS Snort en una Raspberry Pi. Snort es un IDS de red (NIDS) que captura los paquetes que circulan en la red y sobre la base de una heurística programada por reglas, para cada tipo de intrusión, es capaz de disparar alertas.
En concreto, para este ejercicio, voy a emplear una Raspberry Pi 2B. Voy a partir de una instalación fresca de Raspbian Stretch Lite. El proceso de instalación del Sistema Operativo es exactamente el mismo que el descrito aquí. Por hacer un resumen rápido del proceso:
-
Descargo la imagen de Raspbian al PC de sobremesa.
-
Grabo la imagen descargada, empleando el programa Win32DiskImager.
-
Creo, en la partición de boot, un fichero vacío con nombre ssh, para habilitar el servidor SSH en el arranque.
-
Conecto la Raspberry Pi a la red a través del switch que tengo.
-
Arranco la Raspberry y averiguo (conectándome) al router de banda ancha, la dirección IP que le asigna por DHCP.
-
Me conecto por SSH empleando Putty a la Raspberry para continuar con la configuración inicial.
Una vez conectado por SSH realizo los siguientes pasos de configuración inicial:
1. Cambio la password por defecto:
pi@raspberrypi:~ $ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
2. Actualizo los paquetes instalados:
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
3. Mediante el programa raspi-config configuro el teclado.
4. Adapto el fichero dhcpcd.conf para realizar la configuración de la dirección IP estática de la Raspberry.
# dhcpcd.conf
# Static IP configuration
interface eth0
ipv4only
static ip_address=192.168.1.28/24
static routers=192.168.1.1
static domain_name_servers=10.1.4.2 208.67.222.222 208.67.220.220
5. Creo el fichero dhcpcd.exit-hook para configurar las rutas a las redes del entorno de lab:
pi@raspberrypi:/etc $ cat dhcpcd.exit-hook
ip route add 10.1.2.0/24 via 192.168.1.4
ip route add 10.1.3.0/24 via 192.168.1.4
ip route add 10.1.4.0/24 via 192.168.1.4
pi@raspberrypi:/etc $
6. Rearranco y verifico que la dirección IP correcta y las rutas están establecidas.
pi@raspberrypi:~ $ ifconfig -a
eth0: flags=4163 mtu 1500
inet 192.168.1.28 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::ba27:ebff:fec2:4299 prefixlen 64 scopeid 0x20
ether b8:27:eb:c2:42:99 txqueuelen 1000 (Ethernet)
RX packets 179 bytes 13849 (13.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 129 bytes 18433 (18.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
10.1.2.0 192.168.1.4 255.255.255.0 UG 0 0 0 eth0
10.1.3.0 192.168.1.4 255.255.255.0 UG 0 0 0 eth0
10.1.4.0 192.168.1.4 255.255.255.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
7. Creo, en el servidor SVN el repositorio para los ficheros de configuración de la Raspi.
8. Instalo subversion para mantener la configuración de la máquina alojada en el repositorio SVN del entorno lab.
pi@raspberrypi:~ $ sudo apt install subversion
9. Creo, desde la Raspi, un directorio en el repositorio SVN para mantener los ficheros de configuración existentes bajo /etc
. La operación va a avisar que los certificados que uso no son de una autoridad reconocida y me va a solicitar la autenticación
pi@raspberrypi:~ $ sudo svn mkdir https://svnrepo.tcantos.com/svn/rpisnort/etc -m ""
10. Hago un checkout inicial en el directorio /etc y añado al repositorio SVN los ficheros de configuración:
pi@raspberrypi:/ $ cd /etc
pi@raspberrypi:/etc $ sudo svn add hosts issue dhcpcd.conf dhcpcd.exit-hook hostname
A issue
A dhcpcd.conf
A dhcpcd.exit-hook
A hostname
A hosts
pi@raspberrypi:/etc $ sudo svn commit -m ""
Adding dhcpcd.conf
Adding dhcpcd.exit-hook
Adding hostname
Adding hosts
Adding issue
Transmitting file data .....done
Committing transaction...
Committed revision 2.
11. En el PC de sobremesa, creo el directorio para la copia local y hago un checkout. A partir de este momento puedo trabajar con los ficheros de configuración en el PC.
12. Añado las entradas correspondientes al nuevo equipo en la base de datos de mi servidor DNS y rearranco el servidor.
13. Por último, configuro que la Raspi sincronice tiempos con el servidor de tiempos del lab.
Con esto queda configurada la Raspberry Pi para los pasos siguientes.