Después de haber hecho un barrido elemental por las generalidades de un UNIX, así como por las verificaciones básicas relacionadas con ficheros, vamos a entrar en el capítulo de análisis de red.
Cualquier sistema operativo tiene capacidad para el trabajo en redes, bien sean locales, metropolitanas o de área extensa. UNIX no iba a ser la excepción, con lo que analizar las capacidades de operación de una máquina en uno o varios entornos de red es fundamental.
La primera verificación que podemos hacer es aquella en la que miramos el fichero de hosts, y por otro lado, los resultados que arroja la ejecución del comando de identificación de interfaces de red, que generalmente será ifconfig. Este comando es muy variable, con lo que tendremos que tirar de la Piedra Rosetta UNIX cuando sea preciso. Esto es especialmente interesante en ciertos sistemas en los que convendrá ejecutar algo más que un enumerador de interfaces, como puede ser algún que otro netstat.
El fichero /etc/hosts (ubicación variable en función al sistema que consideremos) contiene un mapeo de nombres de host a direcciones IP que, en ausencia de DNS, facilita la resulución de nombres con los que nuestra máquina debe comunicarse. El comando ifconfig permite configurar o mostrar la configuración de los distintos interfaces de red, a través de los parámetros clásicos como la dirección IP, la máscara de red y la dirección de broadcast. Nosotros no vamos a configurar, ya que esto no es un curso de administración, con lo que nos limitaremos a enumerar.
El objetivo de auditoría será comprobar qué interfaces aparecidos en la ejecución de ifconfig -a tienen su correspondencia en el fichero /etc/hosts.
Ejemplo práctico
Extraemos la ejecución de ifconfig -a a fichero:
ifconfig -a >> ifconfig.txt
En nuestro ejemplo:
lo0: flags=1010283
mtu 5242 index 1
inet 127.0.0.1 netmask ff000000
de2: flags=1010732mtu 1600 index 2
inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.1
ether 0:0:be:a9:44:c9
de3: flags=1010732mtu 1600 index 3
inet 192.168.1.3 netmask ffffff00 broadcast 192.168.1.1
ether 0:0:be:a9:44:c9
de4: flags=1010732mtu 1600 index 3
inet 192.168.1.4 netmask ffffff00 broadcast 192.168.1.1
ether 0:0:be:a9:44:c9
Extraemos los contenidos de /etc/hosts a fichero:
cat /etc/hosts >> etchosts.txt
En nuestro ejemplo:
#Definicion del loopback
127.0.0.1 localhost# Enlaces a otras maquinas
#
192.168.1.2 servidor.de.correo.sahw.com
192.168.1.3 servidor.http.sahw.com
192.168.1.4 servidor.ldap.sahw.com# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Empleamos un script Bash no optimizado (muestra a propósito todos los pasos, incluyendo la generación de un fichero intermedio de clasificación) para comprobar qué interfaces aparecidos en ifconfig -a aparecen también en /etc/hosts.
#!/bin/bash
#Script ejemplo para el análisis de interfaces de red
grep inet ifconfig.txt | awk ‘{print $2}’ >> intermedio.txt
for i in $(awk ‘{print $1}’ intermedio.txt); do
grep $i etchosts.txt
done
Con el siguiente resultado:
127.0.0.1 localhost
192.168.1.2 servidor.de.correo.sahw.com
192.168.1.3 servidor.http.sahw.com
192.168.1.4 servidor.ldap.sahw.com
Cuando el listado de hosts e interfaces es pequeño, se puede hacer la clasificación manualmente. Nótese que si ejecutamos el script varias veces, convendrá añadir la línea rm etchosts.txt al comienzo del script, de modo que nos aseguremos que el fichero intermedio se borra cada vez que ejecutamos el programa. De todos modos, crear el fichero intermedio no es necesario, optimizando ese código Bash es posible no depender de él (ejercicio que queda pendiente para los lectores interesados).
Resumen
Analizar los interfaces de red surge como consecuencia de poder evaluar el tipo de actividad y las interconexiones en red que la máquina a auditar tiene en el momento del análisis.
Para ello, analizaremos la información completa de interfaces de red (ifconfig -a) y comprobaremos que la definición del fichero de hosts es la adecuada, y que existe sintonía entre ambos.
Te está quedando una saga muy buena ;). Por cierto, con que software has hecho el esquema de red? No me suena a MS Visio, ni a DIA… y me gusta el resultado final. Si es alguna aplicación para Mac OS X, me vendrá bien para tener en el portátil.
Gura,
La imagen no es mía. La tomé de un artículo de la Wikipedia, concretamente de:
http://en.wikipedia.org/wiki/Local_area_network
Quizás en la discusión del wiki te aclaren con qué software está generada. A mi también me gustaría saberlo :)
Saludos,
Hombre, yo creo un buen análisis del subsistema de red debería incluir (1) la tablas de rutas, así como (2) los procesos que están escuchando en cada uno de los puertos:
(1) netstat -anr
(2) netstat -nlp
Y puede que incluso la (3) configuración del firewall:
(3) iptables -nvL
(3) iptables -t nat -nvL
:-)
# fuser -v -a -n [tcp|udp] numero_de_puerto
PD: El software utilizado es OmniGraffle
Felipe,
Todo llega, todo llega. Te me has adelantado un par de capítulos :P
Gura,
Gracias. Habrá que ojear ese OmniGraffle, tiene buena pinta.
Saludos,