marzo 21, 2014

Network Monitor

Last Update: Abril 07/2015
En la serie Firewall explicamos el uso de iptables, squid3 y dhcp, para establecer restricciones en una red local. Protegimos nuestro perímetro con técnicas sofisticadas pero muy sencillas de implementar, como Fail2ban, ARPon, DDOs Deflate, etc, las cuales forman parte de nuestro Escudo de Red.
Pero nada de esto puede lograrse si no establecemos sistemas de análisis y supervisión del tráfico en tiempo real, para monitorear las conexiones entrantes y salientes, los puertos, etc, y si somos demasiado paranoicos (recomendable para estos casos) hacer un examen exhaustivo de vulnerabilidades de nuestra red local.
Podemos revisar los archivos .log de nuestro servidor, sin embargo, para nuestra mayor comodidad, existen algunos frontend que valen la pena mencionar y que nos harían la vida más fácil.
SUPERVISIÓN DE CONEXIONES
Una herramienta de monitoreo en tiempo real es una herramienta indispensable para la gestión del Administrador TI de la red local. Hay infinidades de ellas, como Whatsup GoldOpManager, Monit, PRTG, ActiveXperts, Etherape, etc, etc, etc. y es imposible describirlas todas, sin embargo, en esta entrega, nos enfocaremos en Sqstat e IPtraf, que ofrecen resultados realmente sorprendentes, logran nuestro objetivo y son gratuitas. Y para complementar analizaremos Sarg diseñada para rendir informes por terminal de nuestra red.
Adicionalmente reforzaremos con Nessus y Nmap para un examen a fondo de las vulnerabilidades de nuestro servidor proxy, hotspot, etc y los terminales de nuestra red local y usaremos el administrador Webmin.
Configurando Sqstat
Instalamos dependencias
sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli
Descargamos el programa Sqstat AQUI o con wget y descomprimimos
wget http://samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
tar -xzvf sqstat-1.20.tar.gz
Luego creamos la carpeta sqstat (Para Squid 3.0x y 3.1x en /var/www y para Squid v3.2 o superior en /var/www/html). Y copiamos el contenido descargado a la nueva carpeta y cambiamos el archivo config.inc.php.defaults como config.inc.php
# Para Squid3 v3.0x y 3.1x
sudo mkdir /var/www/sqstat
sudo cp -r sqstat-1.20/* /var/www/sqstat
cd /var/www/sqstat
sudo cp config.inc.php.defaults config.inc.php
# Para Squid3 v3.2x o superior
sudo mkdir /var/www/html
sudo mkdir /var/www/html/sqstat
sudo cp -r sqstat-1.20/* /var/www/html/sqstat
cd /var/www/sqstat
sudo cp config.inc.php.defaults config.inc.php
Editamos el archivo config.inc.php especificando los parámetros de IP o hostname del servidor proxy y el puerto de escucha:
# Para Squid3 v3.0x y 3.1x
sudo vim /var/www/sqstat/config.inc.php
# Para Squid3 v3.2x o superior
sudo vim /var/www/html/sqstat/config.inc.php
Y modificamos las líneas 
$squidhost[0]="IP_PROXY_SERVER"; 
$squidport[0]=PORT_PROXY_SERVER; 
con aquellos parámetros de nuestra red Lan. Ejemplo:
$squidhost[0]="192.168.1.10";
$squidport[0]=3128;
Ejemplo de un archivo config.inc.php:
/* global settings */

$use_js=true; // use javascript for the HTML toolkits

// Maximum URL length to display in URI table column
DEFINE("SQSTAT_SHOWLEN",60);

/* proxy settings */

/* Squid proxy server ip address or host name */
$squidhost[0]="192.168.1.10";
/* Squid proxy server port */
$squidport[0]=3128;
/* cachemgr_passwd in squid.conf. Leave blank to disable authorisation */
$cachemgr_passwd[0]="";
/* Resolve user IP addresses or print them as numbers only [true|false] */
$resolveip[0]=false; 
/* uncomment next line if you want to use hosts-like file. 
   See hosts.txt.dist. */
// $hosts_file[0]="hosts.txt"
/* Group users by hostname - "host" or by User - "username". Username work only 
   with squid 2.6+ */ 
$group_by[0]="host";

/* you can specify more than one proxy in the configuration file, e.g.: */
// $squidhost[1]="192.168.0.1";
// $squidport[1]=3129;
// $cachemgr_passwd[1]="secret";
// $resolveip[1]=true; 
// $hosts_file[1]="otherhosts.txt"
Nota: host.txt solo funciona en squid 2.6 o superior. Debe colocar la ruta completa del host y dentro ip del usuario mas el nombre. Ejemplo:
192.168.0.12 JORGE
192.168.1.13 SERVIDORCON
192.168.1.14 PEDRO
192.168.1.10 SERVIDOR
Nota: Si en su squid.conf agregó algún password, debe poner el mismo password en el sqtat. Ejemplo:
# Ejemplo de contraseña en /etc/squid3/squid.conf
cachemgr_passwd su_contraseña all
# Ejempo de contraseña en /var/www/sqstat/config.inc.php
$cachemgr_passwd[0]="su_contraseña";
Finalmente editamos el archivo /etc/squid3/squid.conf, añadiendo estas líneas:
# Para Squid3 v3.0x
acl manager proto cache_object
acl PROXY_SERVER src IP_PROXY_SERVER/255.255.255.255
http_access allow manager PROXY_SERVER
http_access deny manager
# Para Squid3 v3.2x o superior
acl PROXY_SERVER src IP_PROXY_SERVER/32
http_access allow manager PROXY_SERVER
http_access deny manager
Nota: Debe coincidir la IP del proxy tanto en el squid.conf como en el config.inc.php. Y antes de denegar 'manager' debe autorizarlo, tanto para su red local (localnet) como para el localhost
Ejemplo:
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access allow manager localnet
http_access allow manager localhost
# cerrando 
http_access deny manager
Luego reiniciamos el Proxy o recargamos Squid y Apache con:
sudo squid3 -k reconfigure | sudo invoke-rc.d apache2 reload
Por último, abrimos el navegador web desde cualquier PC de la red Lan y en la barra de direcciones accederemos a http://127.0.0.1/sqstat/sqstat.php, donde 127.0.0.1 es localhost (puede reemplazarlo por la IP_PROXY_SERVER)
Sqstat en tiempo real
Nota: No olvide editar su archivo apache2 y agregarle el ServerName
# edite /etc/apache2/apache2.conf
# y agregue el ServerName
ServerName localhost
ServerName IP_DEL_PROXY_SERVER 
Sqstat: Problemas comunes
Netmasks are deprecated
Si después de parametrizar su squid.conf  reiniciar squid3 y verificar  sudo squid3 -k parse) sale un mensaje similar a:
WARNING: Netmasks are deprecated. Please use CIDR masks instead
WARNING: IPv4 netmasks are particularly nasty when used to compare IPv6 to IPv4 ranges
WARNING: For now we will assume you meant to write /32
Significa que esta utilizando mascaras de subred que su versión de Squid no soporta. En su reemplazo deberá especificar el CIDR. Ejemplo: reemplazar 255.255.255.255 por 32. Para mayor información consulte la siguiente tabla CIDR.
SqStat error Error (1): Cannot get data. Server answered: HTTP/1.1 401 Unauthorized (o Forbidden)
Este problema es frecuente en las versiones de Squid 3.2x y 3.3x. Para solucionarlo siga el siguiente tutorial (ruso).
Sqtop
Otro programa similar a Sqstat es Sqtop, que tambien muestra la actividad de Squid en tiempo real, pero por terminal. Si quiere conocer su funcionamiento lea el siguiente tutorial
git clone https://code.google.com/p/sqtop/
o
git clone https://github.com/paleg/sqtop
cd sqtop/
./configure 
make
./src/sqtop -h IP_DEL_PROXY -p PUERTO_DEL_PROXY 
Pero si no queremos instalar nada, simplemente ejecutamos en el terminal:
# para conexiones en tiempo real
sudo tail -f /var/log/squid3/access.log | perl -pe 's/\d+/localtime($&)/e'
# en retrospectiva
sudo cat /var/log/squid3/access.log | perl -pe 's/\d+/localtime($&)/e' | less
Y con esto sabremos en tiempo real, que equipos se están conectando a nuestro squid
Sarg
Reportes Sarg
Sarg (Squid Analysis Report Generator) es otro programa de monitoreo relacionado con el Squid, para supervisar conexiones de internet (http 80), pero no es en tiempo real como Sqstat, sin embargo brinda informes detallados de los accesos por terminal, algo que no hace Sqstat, y estos informes pueden generarse en el momento y con la frecuencia que queramos, lo que lo hace un complemento ideal de Sqstat.
Se puede manejar con el webmin, para mayor comodidad del administrador TI.
Configurando Sarg
Como trabaja con el Squid, debemos asegurarnos que Squid esté instalado y configurado Verifique los archivos de registro
sudo vim /etc/squid3/squid.conf
grep cache_access_log /etc/squid3/squid.conf
TAG: cache_access_log
cache_access_log /var/log/squid3/access.log
Configuración básica
# Instalación de Sarg y sus dependencias (Si instalaron Sqstat es posible que no necesiten las dependencias)
sudo apt-get install sarg apache2 libapache2-mod-php5 squid
# Editar archivo de configuración
sudo vim /etc/sarg/sarg.conf
# Elegir Lenguaje
language Spanish
# Elegir la ruta de los logs
access_log /var/log/squid3/access.log
# Seleccionar un titulo de los reportes
title "Reportes de Acceso Web por Usuarios"
# Ruta de almacenamiento de los reportes (se debe crear la carpeta y colocar la Ruta donde esta configurado Apache)
output_dir /var/www/squid-reports/Manual
# Si el registro aparece o no aparece por la IP (no recomendado. Demora mucho)
resolve_ip yes o no
# Reportes  con la configuracion de la hora U america (mes/dia/año)
date_format u
# Dias a ver en los registros.( Sunday->0, Saturday->6 )
weekdays 0-6 :
También puede crear una lista de los excluidos del reporte. Pudiendo contener direcciones IP (Ejemplo: 192.168.1.10), una red completa (192.168.1.0/24), el nombre de un equipo (equipo.red.local) o todos los equipos de una red (*.red.local) /etc/sarg/exclude_users O de los incluidos
sudo vim /etc/sarg/usertab
Y finalmente para acceder al reporte
http://localhost/sarg/
o
http://ipdelservidor/sarg/
Luego programe la ejecución de Sarg en el crontab (para su ejecución a una hora determinada/dia)
sudo crontab -e
*/5 * * * * /usr/sbin/sarg-reports today > /dev/null 2>&1
# o por el Webmin (que es más sencillo)
@daily /etc/webmin/sarg/generate.pl
# para salir de crontab
:wq
# Nota:
# Para ubuntu 10x
#@daily /etc/webmin/sarg/generate.pl
#Para Ubuntu 14x
#@daily/usr/share/webmin/sarg/generate.pl
Para generar los reportes manualmente
sudo sarg-reports today
Sarg tambien puede usarse con squidguard, y tiene muchas opciones más. Puede hacerlo de modo gráfico en el Webmin, y para más configuraciones leer los tutoriales de tuxjn y ecured. Para restringir el acceso a los reportes lea el siguiente post.
Modulo de Sarg en Webmin
Iptraf
IPtraf es una herramienta de código abierto en tiempo real, pero difiere de las anteriores, y que nos ayudará a monitorizar todas y cada una de las interfaces de nuestro servidor o equipo del cliente.
Es ideal y complementa a Sqstat y Sarg, ya que proporciona estadísticas sobre el tráfico IP de las redes que se encuentren activas en el sistema, brindando número de paquetes y bytes en una conexión TCP, estadísticas de una interfaz e indicadores de actividad, caídas en el tráfico TCP/UDP y número de bytes y paquetes en una estación LAN. No es un sniffer propiamente, como Wireshark, pero si analizamos las estadisticas podemmos llegar a detectar conexiones ilegales o actividad anormal (troyano, etc).
Para instalarlo y ejecutarlo, como se encuentra en los repositorios, ejecute en el terminal:
sudo apt-get install iptraf
sudo iptraf
Luego sale el cuadro de la licencia. Pulse cualquier tecla (Press a key to continue), y selecciona "IP Traffic Monitor". Luego elige "All Interfaces" (o la tarjeta de red que quiera auditar) y presione Enter. Por ultimo presione la letra S para elegir cómo quiere que muestre las estadísticas de conexiones (Seleccione en el teclado P Packet o B Byte)
Opciones (Flags)
Cada paquete TCP se le asocian opciones que están expresadas en letras (flags):
S: Es cuando se esta llevando a cabo un SYN (Sincronización) preparando una conexión. Por ejemplo si esta presente S—- es por que se pretende realizar un conexión. En caso de que aparezca S-A- es por que nos indica un reconocimiento de un pedido de conexión anterior.
A: es un reconocimiento (ACK) de un paquete recibido.
P: son los pedidos de prioridad para poder ser trasladados al principio de la cola.
U: indica la presencia de paquetes de datos urgentes.
RESET: la maquina de origen de esta dirección reseteó toda la conexión.
DONE: indica que la conexión ya terminó de enviar datos en esta dirección y envió un paquete de finalización (Fin).
CLOSED: El paquete de finalización (FIN) ha sido reconocida por la otra maquina.
-: este guión indica que la opción no se encuentra activa.
Para más opciones consulte el manual de IPtraf
ANÁLISIS DE VULNERABILIDADES
Nessus
Esta herramienta no requiere de mayor presentación. Sirve para realizar un análisis a fondo de las vulnerabilidades de nuestra red local, incluyendo el servidor. Si querían saber si realmente todas las configuraciones aplicadas en los capítulos anteriores de la serie Firewall sirven de algo, que mejor que Nessus para destapar algunas verdades.
Instalación y configuración Nessus 5.2.5 
1. Descarga
http://www.tenable.com/products/nessus/select-your-operating-system
2. Instalación
sudo dpkg -i Nessus-5.2.5-ubuntu1110_amd64.deb
3. Configuración
# Añadir usuario
sudo /opt/nessus/sbin/nessus-adduser
Login : usuario (el nombre que quieras como admin)
Do you want this user to be a Nessus 'admin' user ? (can upload plugins...) (y/n) [n]: y
This user will have 'admin' privileges within the Nessus server 
Rules : 
Is that ok ? (y/n) [y] y
# Luego sale el siguiente mensaje y presionar Enter
Enter the rules for this user, and enter a BLANK LINE once you are done :
(the user can have an empty rules set)
Login : usuario
Password : ***********
This user will have 'admin' privileges within the Nessus server
Rules :
Is that ok ? (y/n) [y]  y
# Si todo salió bien, saldrá lo siguiente:
User added 
4. Activación y actualización de plugins Seguimos el siguiente link:
http://www.tenable.com/products/nessus-home
Colocamos Nombre, apellidos, mail, marcamos la casilla "I agree to the terms of service" y pulsamos el botón "Register". Nos enviará al mail un código de activación. Copiamos el código que nos enviaron al mail y en el terminal ejecutamos
sudo /opt/nessus/bin/nessus-fetch --register C2D6-3A94-ECD4-7735-1111
Donde C2D6-3A94-ECD4-7735-1111 es el código (cámbielo por el suyo). Una vez terminada la actualización de los plugins (Nessus descarga entre 90-100mb de plugins, por tanto debe ser paciente), reiniciamos el servicio
sudo /etc/init.d/nessusd restart
5. Verificar servicios activos
sudo netstat -ntpl | grep nessusd
Si los servicios están activos, debe salir la siguiente información:
tcp 0 0 0.0.0.0:1241 0.0.0.0:* ESCUCHAR 7575/nessusd
tcp 0 0 0.0.0.0:8834 0.0.0.0:* ESCUCHAR 7575/nessusd
tcp6 0 0 :::1241 :::* ESCUCHAR 7575/nessusd
tcp6 0 0 :::8834 :::* ESCUCHAR 7575/nessusd
6. Acceder Nessus via web
https://localhost:8834
Una vez aceptado el certificado y en la página inicial de Nessus, el trabajo con la plataforma es muy intuitivo. Basta con crear una "Policies" para crear una nueva política de escaneo, darle un nombre cualquiera y en "Scan Target", colocar la ip a evaluar o la red completa ej: 192.168.1.0/24. Luego en "Scans", activarlo basado en esta política creada y esperar a que termine el escaneo y muestre el informe.
7. Plugins offline (Opcional) 
Si su conexión a internet es lenta, se recomienda la descarga de los plugins manualmente. Una vez nos envíen el código de activación, sin colocarlo en el software, accederemos a
https://plugins.nessus.org/offline.php
Ponemos el código y la web nos reenvia a la pantalla de descarga
Thank you. You can now obtain the newest Nessus plugins at : 
http://plugins.nessus.org/get.php?f=all-2.0.tar.gz&u=eecb2cc1f5449a323ee2123de1863f18&p=2620b5072399716c50cc273255c20f24 

You also need to copy the following file to :
/opt/nessus/etc/nessus/nessus-fetch.rc (Unix)
C:\Documents and Settings\All Users\Application Data\Tenable\Nessus\conf\nessus-fetch.rc (Windows XP/2K3)
C:\ProgramData\Tenable\Nessus\conf\nessus-fetch.rc (Windows Vista/7/8/2008/2012)
/Library/Nessus/run/etc/nessus/nessus-fetch.rc (Mac OS X)
/usr/local/nessus/etc/nessus/nessus-fetch.rc (FreeBSD)

https://plugins.nessus.org/mkconfig.php?ac=C2D6-3A94-ECD4-7735-1A29&c=
Los plugins nessus-fetch.rc y all-2.0.tar.gz se colocan en:
/opt/nessus/etc/nessus/
Y luego reinicie el proceso en el paso 4.
Análisis y reporte con NMAP
También puede realizar un análisis de su red local con el todo terreno Nmap. Es más exacto, efectivo y garantizado, que cualquier otra herramienta existente.
Primero generamos un reporte, en formato xml, que llamaremos "reporte.xml", y se alojará en home. Este reporte incluye un barrido de toda la red, identificando las estaciones de trabajo, puertos activos, SO, etc, sin embargo puede generarlo de una o varias direcciones ip.
El siguiente ejemplo corresponde a un análisis y reporte de una red clase C.
sudo nmap -sV -T4 -O -F --version-light 192.168.1.0/24 -oX reporte.xml
Instalamos la herramienta xsltproc
sudo apt-get install xsltproc
Y convertimos el reporte a formato html para visualizarlo en el navegador.
$ xsltproc reporte.xml -o reporte.html
También podemos convertir la salida de nmap en un csv con un script de python. Su funcionamiento es muy simple. El portal Inseguros nos trae el siguiente ejemplo:
nmap -sV -p- IP -oN - | python nmaptocsv.py >salida.csv
Otras aplicaciones
Para monitorear el ancho de banda, conexiones abiertas, puertos a la escucha, sitios webs y muchas otras cosas más, existen otros cientos de herramientas, tales como Munin, Piwik, Cacti, Monitorix, PRTG, Netspeed, Pandora, etc, que brindan resultados muy confiables y son gratis. Puede encontrar listas detalladas en los sitios: DynacontSBD y Fraterneo
Maravento, Actualizado en: 9:43
Escrito por: Maravento Studio
 
© 2017 Maravento. All Rights Reserved | Powered by Maravento
Design by Novatoz and Maravento | Bloggerized By LawnyDesignz
# https://github.com/google/code-prettify