Para nuestro ejemplo, el ordenador es un 486-DX66 con 8 Megas de RAM, una partición para Linux de 500 Megas, y una conexión PPP a un proveedor de Internet a través de un módem de 14.400 bps . Ese es nuestro linux básico. Para convertirlo en un cortafuegos le añadimos una tarjeta Ethernet NE2000. Con ella queda conectado a tres PC'es con Güindous 3.1 y Trumpet Winsock, y a dos Sun'es con SunOs. La razón de elegir este escenario es que son las dos plataformas con las que estoy familiarizado. Imagino que gran parte de lo que cuento aquí es factible con Mac'es pero, dado que no uso Mac'es con suficiente asiduidad, lo cierto es que no lo sé.
Así, que ahora tenemos un LiNUX conectado a Internet por una linea PPP de
14.400 . Además tenemos una red Ethernet que conecta el LiNUX y el resto
de los ordenadores. Lo primero, debemos recompilar el núcleo con las
opciones apropiadas. En este momento yo echaría un vistazo al
Kernel-Como, al Ethernet-HOWTO, y al
NET-3-HOWTO. Luego teclearía "make config"
:
Las opciones requeridas son:
Ahora, recompilamos y reinstalamos el núcleo y rearrancamos la máquina. Las interfaces deberían ser reconocidas en la secuencia de arranque para que todo estuviera bien. Si no, habría que repasar los Howtos antes mencionados y volverlo a intentar hasta que funcionase.
Esta es la parte interesante. Dado que no queremos que la Internet tenga acceso a nuestras máquinas, no necesitamos usar direcciones reales. Una buena elección es el rango de direcciones de clase C 192.168.2.xxx, que está designado como rango para pruebas. Es decir, nadie lo usa, y no entrará en conflicto con ninguna petición al exterior. De modo que, en esta configuración, sólo se necesita una dirección IP real. Las otras se pueden elegir libremente y de ninguna manera afectarán a la red.
Asignamos la dirección IP real al puerto serie del cortafuegos
que usamos para la conexión PPP. Asignamos 192.168.2.1 a la tarjeta
Ethernet del cortafuegos
. Asignamos a las otras máquinas de la
red protegida cualquier dirección del rango anterior.
Lo primero es hacer ping a la internet desde el cortafuegos
. Yo
antes usaba nic.ddn.mil
como punto de prueba. No deja de ser una
buen sitio, pero ha demostrado ser menos fiable de lo que esperaba. Si no
funciona a la primera, probaremos a hacer pings a otro par de sitios que
no estén conectados a nuestra red local. Si no funciona es que el PPP está
mal configurado. Tendríamos que volver a leer el Net-3-HOWTO y a
probar.
Ahora probaremos a hacer pings entre las máquinas de la red protegida. Todas deben ser capaces de hacer ping a las demás. Si no fuera así, habría que leer de nuevo el Net-3-HOWTO y trabajar en la red un poco más.
Ahora, todas las máquinas de la red protegida deben ser capaces de hacer
pings al cortafuegos
. Si no, vuelta atrás. Recuerda: deberían ser
capaces de hacer ping a la 192.168.2.1, no a la dirección PPP.
Entonces probaremos a hacer ping a la dirección PPP del
cortafuegos
desde dentro de la red protegida. No debe
funcionar. Si funciona es que no hemos deshabilitado el Reenvio
del Paquetes IP y habrá que recompilar el núcleo. Al haber asignado a
la red protegida la dirección 192.168.2.0 ningún paquete será encaminado a
ella por la Internet, pero, en cualquier caso, es más seguro tener el
reenvío de paquetes IP deshabilitado. Esto deja el control en nuestras
manos, no en las manos de nuestro proveedor de PPP.
Finalmente, haremos ping a todas las máquinas de la red protegida desde el
cortafuegos
. Llegados a este punto, no debería haber problemas.
Ya tenemos una disposición de cortafuegos básica.
El cortafuegos no sirve si lo dejamos vulnerable a los ataques. Primero echaremos un vistazo al /etc/inetd.conf. Este es el fichero de configuración del así llamado "superservidor" (inetd), que arranca un buen número de demonios servidores cuando les llega una petición.
Entre ellos:
Se debe desactivar todo lo que no se necesite. No dudaremos en desactivar netstat, systat, tftp, bootp, y finger. Seguramente querremos desactivar telnet, y dejar sólo rlogin, o viceversa.
Para desactivar un servicio basta con poner un # al comienzo de la
linea que se refiera a él. Después hay que mandar una señal SIG-HUP al
proceso inetd tecleando "kill -HUP <pid>
", donde
<pid>
es el número de proceso de inetd. Esto hará que inetd
relea su fichero de configuración (inetd.conf
) y se reinicie. Lo
comprobaremos haciendo un telnet al puerto 15 del cortafuegos
, el
puerto de netstat. Si aparece la respuesta de netstatd, no hemos
reiniciado inetd correctamente.