iwlist + ngrep debian

Otro apunte.

para ver de un vistazo las redes inalámbricas que tenemos a nuestro alcance y la potencia, podemos usar el comando iwlist, pero nos muestra quizás demasiados parámetros….. si queremos ver si solapamos canales, podemos usar nuestro amigo grep.


# iwlist wlan0 scanning | grep "ESSID\|Frequency\|Quality"

Y el resultado debe ser, algo similar a:


Frequency:2.412 GHz (Channel 1)
Quality=23/70 Signal level=-87 dBm
ESSID:"xxxxx"
Frequency:2.462 GHz (Channel 11)
Quality=22/70 Signal level=-88 dBm
ESSID:"xxxxx"
Frequency:2.467 GHz (Channel 12)
Quality=39/70 Signal level=-71 dBm
ESSID:"xxxxx"
Frequency:2.462 GHz (Channel 11)
Quality=32/70 Signal level=-78 dBm
ESSID:"xxxxxx"

usando “|” con grep, podemos especificar algo para filtrar, pero si tenemos que filtrar por varios, deberemos usar:


iwlist wlan0 scanning | grep "$EXPRESION1 \|$EXPRESION2 \|$EXPRESION'N' \"

🙂 Sencillo

Netflow: nfsen + nfdump en Debian (3) + cacti + pmacct

Ahora vamos a añadir una capa más…. pmacct.

Pmacct será el enlace entre cacti y los flows de los dispositivos… usaremos nfsen para controlar tráfico y ataques.

Descargamos y descomprimimos pmacct:


# cd /usr/src
# wget -c http://www.pmacct.net/pmacct-1.5.0.tar.gz
# tar -zxvf pmacct-1.5.0.tar.gz

Creamos el directorio de instalación:

# mkdir /etc/pmacct

Y instalamos

Una vez instalado, vamos a configurar lo que nos interesa de pmacct, que más tarde, enlazaremos con cacti.


# nano /etc/pmacct.conf

debug: true
daemonize: true
nfacctd_port: 9996
pidfile: /var/run/nfacctd.pid
plugin_buffer_size: 80524
plugin_pipe_size: 18052324
networks_file: /etc/pmacct/nfacctd.hosts

plugins: memory[in], memory[out]
aggregate[in]: dst_host
aggregate[out]: src_host
imt_path[in]: /tmp/in.pipe
imt_path[out]: /tmp/out.pipe

En el fichero nfacctd.hosts, añadimos las ip’s / rangos que nos interese tener en detalle…


# nano /etc/pmacct/nfacctd.hosts

1.1.1.1/32
1.1.1.2/32
..
...

Lanzamos pmacct….


root@testflow:/etc/pmacct/sbin# ./nfacctd -D -f /etc/pmacct/pmacct.conf

Para comprobar que estamos escuchando correctamente:

root@testflow:/etc/pmacct/bin# netstat -putan | grep 9996
udp 0 0 0.0.0.0:9996 0.0.0.0:* 17799/nfacctd: Core

y que recogemos flows:

root@testflow:/etc/pmacct/bin# ./pmacct -s -p /tmp/out.pipe
root@testflow:/etc/pmacct/bin# ./pmacct -s -p /tmp/in.pipe

Y ahora comprobamos si hace accounting de las ip’s en concreto:


root@testflow:/etc/pmacct/bin# ./pmacct -c dst_net -N 1.1.1.1 -p /tmp/in.pipe
7254628
root@testflow:/etc/pmacct/bin#

Y vemos cómo ya nos muestra tráfico en bytes 🙂

Captura de pantalla 2014-11-16 a las 14.42.32

Netflow: nfsen + nfdump en Debian (2) + cacti

Siguiendo la entrada anterior, si accedemos a la interfície web de nfsen (dejando un rato para que grafique), deberíamos tener algo así:

capturanfsen1

Ahora, añadimos Cacti…. para ello, instalamos unas dependencias nuevas:


# apt-get install dbconfig-common javascript-common libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libjs-jquery libjs-jquery-cookie libphp-adodb mysql-client-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5 wwwconfig-common php5-cli php5-mysql php5-snmp snmp snmpd rrdtool libmysqlclient-dev libsnmp-dev libpcap-dev

Una vez instaladas las dependencias, descargamos la última versión de cacti:


# cd /usr/src
# wget -c http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz

Descomprimimos:

# tar -zxvf cacti-0.8.8b.tar.gz

Creamos la BBDD para cacti, junto con el user / pass


# mysql -u root -p
password:****
mysql> create database cacti;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'cacti'@'%' IDENTIFIED BY 'cacti' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

# mysql -u cacti -pcacti cacti < cacti.sql

Copiamos la carpeta que nos hemos descargado a /var/www/cacti

Una vez copiada, modificamos /var/www/cacti/include/config.php


/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;

Y nos vamos al navegador:

http://ip.del.server/cacti

Y tendremos la siguiente página:

capturacacti

Aceptamos:

capturacacti2

Nos aseguramos que tengamos todas las dependencias:

cacti3

Una vez aceptado, accedemos via web al cacti:

http://ip.del.server/cacti

y ponemos la pass de admin

cacti4

Ahora instalamos cacti-spine.... descargamos:


root@testflow:/usr/src# wget -c http://www.cacti.net/downloads/spine/cacti-spine-0.8.8b.tar.gz
root@testflow:/usr/src# tar -zxvf cacti-spine-0.8.8b.tar.gz
root@testflow:/usr/src# cd cacti-spine
root@testflow:/usr/src/cacti-spine-0.8.8b# ./configure
root@testflow:/usr/src/cacti-spine-0.8.8b# make
root@testflow:/usr/src/cacti-spine-0.8.8b# make install

Generamos el fichero de configuración:

root@testflow:/# cd /usr/local/spine/etc/
root@testflow:/usr/local/spine/etc# cp spine.conf.dist spine.conf
root@testflow:/usr/local/spine/etc# nano spine.conf

Editamos el fichero spine.conf y configuramos la BBDD

# +-------------------------------------------------------------------------+
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cacti
DB_Port 3306
DB_PreG 0

Entramos en la web del cacti y configuramos Spine:

spine

Añadimos al cron

# crontab -e
*/1 * * * * php5 /var/www/cacti/poller.php > /dev/null 2>&1

en mi caso, el poller.php lo tengo situado en esa carpeta.

Netflow: nfsen + nfdump en Debian (1)

Otra entrada que es un apunte para recordar la instalación / configuración.

Netflow, es un protocolo creado por cisco y usado por varios fabricantes, para exportar fuera del router / firewall, el detalle del tráfico…. de esta manera, tendremos un histórico para hacer accounting, ver ataques y en definitiva, para tener controlado todo un poco en nuestros routers.

Existen herramientas de pago fantásticas, tipo Netflow Analyzer, pero su precio, hace que nos lo pensemos bien si lo queremos tener en casa, para jugar o una pequeña empresa, así que, la alternativa libre, pasa por usar nfsen (frontend) y nfdump.

Partimos de la base de una debian recién instalada …

Instalamos unas dependencias básicas:

# apt-get install gcc make flex librrd-dev mtr htop autoconf bison
# apt-get install apache2 libapache2-mod-php5 php5-common libmailtools-perl rrdtool librrds-perl
# apt-get install rrdtool libio-socket-ssl-perl
# perl -MCPAN -e 'install Socket6'

Descargamos en /usr/src el programa para compilarlo:

wget -c http://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.12/nfdump-1.6.12.tar.gz/download

Descomprimes…

# tar -zxvf nfdump-1.6.12.tar.gz

Install….

#./configure --enable-nfprofile
# make
# make install

Una vez instalado, vamos por el nfsen….. descargamos la última versión disponible

wget -c http://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.6p1/nfsen-1.3.6p1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnfsen%2Ffiles%2Fstable%2Fnfsen-1.3.6p1%2F&ts=1415459147&use_mirror=heanet

Descomprimimos nfsen….


# tar -zxvf nfsen-1.3.6p1.tar.gz

Yo, suelo crearme un directorio para tener ordenados los ficheros y me suelo copiar la instalación del nfsen allí:

# mkdir /etc/nfsen
# mv /usr/src/nfsen-1.3-6p1 /etc/nfsen

Nos creamos el fichero de configuración para nuestros cacharros..

# cd /etc/nfsen
# cp nfsen-dist.conf nfsen.conf

Editamos / cambiamos unos valores y añadimos nuestro primer dispositivo:


# nano /etc/nfsen/nfsen.php

# BASEDIR unrelated vars:
#
# Run nfcapd as this user
# This may be a different or the same uid than your web server.
# Note: This user must be in group $WWWGROUP, otherwise nfcapd
# is not able to write data files!
$USER = "www-data";

# user and group of the web server process
# All netflow processing will be done with this user
$WWWUSER = "www-data";
$WWWGROUP = "www-data";

%sources = (
'asav254' => { 'port' => '9995', 'col' => '#0000ff', 'type' => 'netflow' },
);

Añadimos un link simbólico para /var/www y cambiamos permisos…


# ln -s /var/www/nfsen/nfsen.php /var/www/nfsen/index.php
# chown -R www-data:www-data /data/nfsen
# chown -R www-data:www-data /var/www/nfsen

Creamos el directorio para almacenar:

# mkdir -p /data/nfsen
# /var/www/nfsen/install.pl /etc/nfsen/nfsen.conf

Añadimos al inicio el nfsen:

# ln -s /data/nfsen/bin/nfsen /etc/init.d/nfsen
# update-rc.d nfsen defaults 20

Y lo iniciamos:

# /etc/init.d/nfsen start

Virtualizando cisco asa 55xx

Esta vez toca ampliar el laboratorio de prácticas de networking… ya tengo varios routers virtuales mikrotik, pero nunca había podido hacer un cisco asa.

Hay que decir, que no es legal, no está soportado por cisco y que cada uno que haga lo que quiera….

Yo lo he usado para practicar el cambio que ha hecho cisco; de la versión 8.2.x a la 8.3 en adelante, ha modificado todo el tema de nat y

La guia original aqui

Primero de todo, nos bajamos la versión 8.4.2 de cisco asa, junto con el ASDM

http://software.cisco.com/download/release.html?mdfid=280582808&softwareid=280775065&release=9.2.1.ED

Luego nos bajamos el script que extrae los ficheros de imagen y nos hace la ISO:

https://gist.github.com/anonymous/c3225054e6681a39be16

Para preparar la ISO, tengo una fedora x86 y los siguientes paquetes:

vim-minimal vim-common mkisofs

Y los instalamos tal que así:

yum -y install vim-minimal vim-common mkisofs

Yo, modifiqué el script para que el firewall arranque solo y tenga que darle al intro cada vez que se reinicia…. aquí cada uno que haga lo que quiera:


#!/bin/bash
# FILENAME: repack.v4.1.sh
# AUTHOR: dmz
# SOURCE: http://7200emu.hacki.at/viewtopic.php?t=9074
# DISCLAIMER: All information provided here are solely for self-education and investigation purposes. Provided AS-IS without any warranties.

VERSION=4.1

IMAGE=$1
CWD=`pwd`
[ -z "$IMAGE" ] && IMAGE=$CWD/asa842-k8.bin

echo "Repack script version: $VERSION"

if [ ! -f "$IMAGE" ]; then
echo "USAGE: repack.sh /path/to/asa/image"
exit 1;
fi

XXD=`which xxd`
ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin
MKISOFS=`which mkisofs`

if [ ! -x "$XXD" ]; then
echo "ERROR: xxd command not found"
echo "Install 'vim' or 'vim-enhanced' package to get it"
exit 1;
fi

CREATEISO=no

if [ -x "$MKISOFS" -a -e "$ISOLINUX_BIN" ]; then
echo "Detected syslinux/cdrtools - ISO will be created"
CREATEISO=yes
else
echo "no syslinux/cdrtools - ISO creation skipped"
fi

BASE_NAME=`basename "$IMAGE"`
case "$BASE_NAME" in
'asa842-k8.bin') # ASA 8.4(2)
dd skip=102400 if="$IMAGE" of="$CWD/asa842-vmlinuz" bs=1 count=1359344
dd skip=1461744 if="$IMAGE" of="$CWD/asa842-initrd-original.gz" bs=1
TMP_DIR=`mktemp -d`
pushd $TMP_DIR
gunzip -c "$CWD/asa842-initrd-original.gz" | cpio -i --no-absolute-filenames --make-directories
find . | cpio -o -H newc | gzip -9 > "$CWD/asa842-initrd-original.gz"
sed -i -e "s/(VERBOSE=).*/1yes/" etc/init.d/rcS
sed -i -e "s/echo -n/echo/" etc/init.d/S10udev
sed -i -e "s#^fi$#fingrep -q shell /proc/cmdlinen[ $? == 0 ] && echo '/bin/sh' >> /tmp/run_cmd#" asa/scripts/rcS
sed -i -e "/mount/d" asa/scripts/format_flash.sh
sed -i -e "s#mount=0#if [ ! -e /dev/hda1 ]; then /asa/scripts/format_flash.sh /dev/hda1 0 0 /dev/hda; finmount=0#" asa/scripts/rcS.common
xxd -r -g 2 -c 16 - asa/bin/lina < "$CWD/asa842-initrd.gz"
popd
rm -rf $TMP_DIR
if [ "$CREATEISO" == "yes" ]; then
TMP_DIR=`mktemp -d`
pushd $TMP_DIR
mkdir isolinux
cp $ISOLINUX_BIN isolinux/
cp $CWD/asa842-vmlinuz .
cp $CWD/asa842-initrd.gz .
cp $CWD/asa842-initrd-original.gz .
cat >isolinux/isolinux.cfg <isolinux/boot.txt < is not supported!"
exit 1;
;;
esac

al script, le damos permisos de ejecución :

[root@localhost home]# chmod +x repack.v4.sh

y ahora lo ejecutamos…..

[root@localhost home]# ./repack.v4.sh ./asa842-k8.iso
Repack script version: 4
Detected syslinux/cdrtools - ISO will be created
Version is not supported!
[root@localhost home]# ./repack.v4.sh ./asa842-k8.iso
Repack script version: 4
USAGE: repack.sh /path/to/asa/image
[root@localhost home]# ./repack.v4.sh ./asa842-k8.bin
Repack script version: 4
Detected syslinux/cdrtools - ISO will be created
1359344+0 registros leídos
1359344+0 registros escritos
1359344 bytes (1,4 MB) copiados, 9,43295 s, 144 kB/s

23697936+0 registros leídos
23697936+0 registros escritos
23697936 bytes (24 MB) copiados, 165,249 s, 143 kB/s
/tmp/tmp.mHaYlsi8ln /home

gzip: /home/asa842-initrd-original.gz: decompression OK, trailing garbage ignored
114476 blocks
114476 blocks
114476 blocks
/home
/tmp/tmp.bkRPw31Byc /home
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
21.05% done, estimate finish Fri May 23 22:18:54 2014
42.01% done, estimate finish Fri May 23 22:18:54 2014
63.01% done, estimate finish Fri May 23 22:18:54 2014
83.97% done, estimate finish Fri May 23 22:18:54 2014
Total translation table size: 2048
Total rockridge attributes bytes: 0
Total directory bytes: 2048
Path table size(bytes): 26
Max brk space used 0
23823 extents written (46 MB)
/home

Y ahora, al ver el directorio…

[root@localhost home]# ls -l
total 119496
-rw-r--r--. 1 root root 23518187 may 23 22:18 asa842-initrd.gz
-rw-r--r--. 1 root root 23517694 may 23 22:18 asa842-initrd-original.gz
-rw-r--r--. 1 root root 25159680 may 23 22:12 asa842-k8.bin
-rw-r--r--. 1 root root 1359344 may 23 22:15 asa842-vmlinuz
-rw-r--r--. 1 root root 48789504 may 23 22:18 asa.iso
-rwxr-xr-x. 1 root root 4301 may 23 22:11 repack.v4.sh
[root@localhost home]#

Tenemos el fichero asa.iso, que lo copiaremos a nuestro vmware.

Creamos una máquina virtual con los siguientes requisitos:

1) Disco ide de 256 Mb (no necesitamos más)
2) Tarjetas de red “e1000”
3) 1 sola cpu

Y nos queda tal que:


vmware1

Y ahora, para hacerlo más realista, asignaré el puerto serie a la máquina física:
vmware2

Ahora, arrancamos la máquina y conectamos el puerto serie …. 🙂


asaTest# sh ver

Cisco Adaptive Security Appliance Software Version 8.4(2)
Device Manager Version 7.2(1)

Compiled on Wed 15-Jun-11 18:17 by builders
System image file is "Unknown, monitor mode tftp booted image"
Config file at boot was "startup-config"

asaCraem up 1 day 9 hours

Hardware: ASA 5520, 1024 MB RAM, CPU Pentium II 3000 MHz
Internal ATA Compact Flash, 256MB
BIOS Flash unknown @ 0x0, 0KB

0: Ext: GigabitEthernet0 : address is 000c.29a2.705e, irq 0
1: Ext: GigabitEthernet1 : address is 000c.29a2.7068, irq 0
2: Ext: GigabitEthernet2 : address is 000c.29a2.7072, irq 0
3: Ext: GigabitEthernet3 : address is 000c.29a2.707c, irq 0
4: Ext: GigabitEthernet4 : address is 000c.29a2.7086, irq 0

Licensed features for this platform:
Maximum Physical Interfaces : Unlimited perpetual
Maximum VLANs : 100 perpetual
Inside Hosts : Unlimited perpetual
Failover : Disabled perpetual
VPN-DES : Disabled perpetual
VPN-3DES-AES : Disabled perpetual
Security Contexts : 0 perpetual
GTP/GPRS : Disabled perpetual
AnyConnect Premium Peers : 5000 perpetual
AnyConnect Essentials : Disabled perpetual
Other VPN Peers : 5000 perpetual
Total VPN Peers : 0 perpetual
Shared License : Disabled perpetual
AnyConnect for Mobile : Disabled perpetual
AnyConnect for Cisco VPN Phone : Disabled perpetual
Advanced Endpoint Assessment : Disabled perpetual
UC Phone Proxy Sessions : 2 perpetual
Total UC Proxy Sessions : 2 perpetual
Botnet Traffic Filter : Disabled perpetual
Intercompany Media Engine : Disabled perpetual

This platform has an ASA 5520 VPN Plus license.

Serial Number: 123456789AB
Running Permanent Activation Key: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
Configuration register is 0x0
Configuration has not been modified since last system restart.

enjoy your virtual asa

Monitorizar hardware ESXI nagios

Esta vez vamos a monitorizar el estado del hardware HP de un ESXI

Tengo, para frikear, unos HP DL380 G5 y DL360G5, de los cuales, debido al tiempo que tienen, se han estropeado algunas fuentes de alimentación y algunos discos.

Primero de todo, de la página www.hp.com de EEUU, descargamos:

http://h20566.www2.hp.com/portal/site/hpsc/template.PAGE/public/psi/swdHome/?sp4ts.oid=3288134&spf_p.tpst=swdMain&spf_p.prp_swdMain=wsrp-navigationalState%3DswEnvOID%253D4115%257CswLang%253D%257Caction%253DlistDriver&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken


* RECOMMENDED * HP ESXi Utilities Offline Bundle for VMware ESXi 5.0 and vSphere 5.1

* RECOMMENDED * HP NMI Sourcing Driver for VMware ESXi 5.x

HP ESXi Offline Bundle for VMware ESXi 5.x

Copiamos estos 3 ficheros por SFTP al directorio /TMP de nuestro ESXI...... una vez copiados, los instalamos:


#esxcli software vib install -d /tmp/ficheroainstalar

Una vez instalados los 3, nos pedirá reiniciar. Volvemos a entrar con el cliente de ESXI y nos vamos a la pestaña de [configuration]

estadoesxi

Ahora vamos a la parte de nagios y descargamos el siguiente plugin.


http://exchange.nagios.org/directory/Plugins/Operating-Systems/%2A-Virtual-Environments/VMWare/Check-hardware-running-VMware-ESXi/details

Y lo copiamos en:
/usr/local/nagios/libexec

Una vez copiado, editamos el fichero commands.cfg y añadimos al final de todo:

define command{
command_name check_esx_wbem
command_line $USER1$/check_esx_wbem.py https://$HOSTADDRESS$:5989 $ARG1$ $ARG2$ verbose
}

Y ahora definimos los servicios a monitorizar:


define host {
use esxi-server
host_name olimpo_craem_net
alias olimpo_craem_net
address 192.168.2.203
icon_image linux_server.gif
statusmap_image linux_server.gd2
hostgroups esxi-home
}

define service{
use generic-service
host_name olimpo_craem_net
service_description ESXi Hardware Monitor
check_command check_esx_wbem!readuser!password
}

Y ahora en nuestro nagios, parte web, tendremos ésto:
captura2

Ahora podremos dormir tranquilos con nuestro servidor monitorizado 🙂

Tunnel IPIP mikrotik + ip dinámicas

En esta ocasión, he tenido la necesidad de tumbar un tunel PPTP en una mikrotik, para hacer el cambio contra un tunnel IPIP.

Recordemos que, el tunnel PPTP, aunque sencillo de configurar, tiene los siguientes incovenientes:

– La MTU del tunnel, queda a 1460 bytes; tenemos una sobrecarga de cabeceras considerable.
– El rendimiento de tunnel en general, no es muy bueno.
– Consumo medio de recursos en los routers; requiere cifrado.

el uso de IPIP, viene justificado por:

– La mtu del tunnel, queda en 1480 bytes.
– El rendimiento del tunnel, es muy bueno, en comparación con pptp
– El consumo de cpu en el router, al no llevar cifrado, es casi nulo.

Una vez explicado, tengo el inconveniente de que, en uno de los extremos es ip dinámica…. el tunnel IPIP, recordemos que, va de extremo a extremo… fijado de ip pública a ip pública…… Mirando mikrotik, veo que soporta scripts.

Nos ponemos manos a la obra:

:global ip_nueva [:resolve midominio.dyndns.org]
:global ip_actual [ /interface ipip get 1 remote-address]
if ($ip_nueva!=$ip_actual) do={/interface ipip set 1 remote-address=$ip_nueva }

En el extremo que tenemos ip dinámica, usamos un servicio de dyndns gratuito.

Definimos variables:
1º Línea definimos variable global ip_nueva y le asignamos el valor que tiene el dyndns
2º Consultamos el valor actual de la ip en el tunnel. El número 1 significa el número de tunnel.
3º Si la ip nueva es diferente a la actual….. sorpresa… actualizamos la ip del tunnel.

Esto está muy bien, pero ahora, para ejecutarlo cada minuto…. en la consola de nuestra mikrotik:


add comment="Script ipip Dynamic" disabled=no interval=1m name=ipip1 on-event=":global ip_nueva [:resolve midominio.dyndns.org]r
n:global ip_actual [ /interface ipip get 1 remote-address]r
nif ($ip_nueva!=$ip_actual) do={/interface ipip set 1 remote-address=$ip_nueva }" policy=ftp,read,write,policy,test,winbox,api start-date=feb/13/2014
start-time=14:18:26

Enjoy you dynamic IP 😉

Protegiendo nuestro gateway SIP

Desde hace tiempo, en los gateways SIP, proxys o centralitas que tengo publicados en internet, he visto un aumento importante de los ataques y escaneos…. no me quita el sueño, pero siempre me queda la “intranquilidad” de .. ¿y si un día acaban entrando ?.

Capturando paquetes con ngrep, veo la siguiente traza …

#
U +113.591586 46.251.228.241:5065 -> 192.168.10.17:5060
OPTIONS sip:100@192.168.2.17:5060 SIP/2.0
Via: SIP/2.0/UDP 46.251.228.241:5065;branch=z9hG4bK-3879111841;rport
Content-Length: 0
From: "sipvicious"<sip:100@1.1.1.1>;tag=3664343530613930313363340131333838313931323031
Accept: application/sdp
User-Agent: friendly-scanner
To: "sipvicious"<sip:100@1.1.1.1>
Contact: sip:100@46.251.228.241:5065
CSeq: 1 OPTIONS
Call-ID: 1162121562622760871341331
Max-Forwards: 70

46.251.228.241 = es uno de los amigos que me intenta atacar
192.168.10.17 = La ip interna de un asterisk
From: “sipvicious” = El identificador del software que hace el ataque
User-Agent: friendly-scanner = Cadena que identifica el software, que el caso de los teléfonos, por ejemplo un snom 320 es : User-Agent: snom320/8.7.3.7

Investigando el iptables y googleando veo ésto, así que manos a la obra y hago este script:

iptables -N SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sundayddr" --algo bm --to 65535 -m comment --comment "deny sundayddr" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sipsak" --algo bm --to 65535 -m comment --comment "deny sipsak" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sipvicious" --algo bm --to 65535 -m comment --comment "deny sipvicious" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "friendly-scanner" --algo bm --to 65535 -m comment --comment "deny friendly-scanner" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "iWar" --algo bm --to 65535 -m comment --comment "deny iWar" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sip-scan" --algo bm --to 65535 -m comment --comment "deny sip-scan" -j SIPDDOS
iptables -A SIPDDOS -j LOG --log-prefix "firewall-sipddos: " --log-level 6
iptables -A SIPDDOS -j DROP

Para ver si es efectivo, esperamos un rato y de mientras miramos en /var/log/syslog ……. y encontramos ya un intento 🙂

..
poseidon kernel: [1710588.138605] firewall-sipddos: IN=eth0 OUT= MAC=00:0c:29:2d:1e:1f:00:0e:38:d5:26:0f:08:00 SRC=183.87.140.226 DST=192.168.2.17 LEN=438 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5069 DPT=5060 LEN=418

Nuestro IPTABLES, ya se ha encargado de filtrar este intruso… ahora a seguir con ngrep….

Recordamos el comando :

ngrep -d any -P ' ' -W byline -T port 5060

Y enjoy your rules 😉

Añadir a inicio Flash Operator Panel, en debian

Una pequeña entrada, que me sirve para recordar cómo añadir al inicio de mi Debian, que autoarranque el Flash Operator Panel, aunque esto se aplique a cualquier cosa que queramos.

Primero, dentro del directorio /etc/init.d creamos el siguiente fichero, suponiendo que lo hayamos instalado en /etc/op_panel


root@pbx:/etc/init.d# nano operator_panel

Y le añadimos:

/etc/op_panel/op_server.pl -d

Nota: -d es para lanzarlo como daemon

Y ahora le damos los permisos de ejecución y lo añadimos:

root@pbx:/etc/init.d# chmod a+x operator_panel
root@pbx:/etc/init.d# update-rc.d operator_panel defaults

Y con ésto, ya lo tenemos todo. 😉

Squid3 + openLdap Debian

Hace unos días, me tocó usar squid contra openLdap para autentificar los usuarios. A priori, es bastante más fácil que contra un active directory, ya que no hace falta ni kerberos, samba ni windbind.

Partimos de la base que ya tenemos el openLdap funcionando correctamente y nuestro squid también… así que ahora, editamos el fichero /etc/squid3/squid.conf y lo dejamos tal que:


auth_param basic program /usr/lib/squid3/squid_ldap_auth -b "dc=craem,dc=net" -f "uid=%s" -h 192.168.2.5
auth_param basic children 30
auth_param basic realm Servidor Proxy cRAeM
auth_param basic credentialsttl 6 hours
auth_param basic casesensitive off

acl usuariosLdap proxy_auth REQUIRED
http_access allow usuariosLdap
http_access deny all

Antes de todo, miraremos si tenemos el fichero /usr/lib/squid3/squid_ldap_auth y probamos si el ldap funciona correctamente, haciendo la siguiente prueba:

root@proxy:/etc/squid3# /usr/lib/squid3/squid_ldap_auth -b "dc=craem,dc=net" -f "uid=%s" 192.168.2.5

Le damos al intro y ponemos un user y password:

root@netflow:/etc/squid3# /usr/lib/squid3/squid_ldap_auth -b "dc=craem,dc=net" -f "uid=%s" 192.168.2.5
usuario password
OK

Si sale Ok, entonces es que funcionará.. sinó, pues es que faltará alguna librería o similar

El primer parámetro: auth_param basic children
Indica el número máximo de procesos de auth concurrentes… ojo si tenemos muchos usuarios y colocamos un número bajo, aunque no debería ser problema.

auth_param basic realm Servidor Proxy cRAeM
Es lo que saldrá en la ventanita de user / pass … me gusta tenerlo personalizado 😉

auth_param basic credentialsttl 6 hours
Básicamente, el tiempo que tendrá cacheada nuestras credenciales

auth_param basic casesensitive off
Pues eso

El resto:

acl usuariosLdap proxy_auth REQUIRED
http_access allow usuariosLdap
http_access deny all

acl usuariosLdap proxy_auth REQUIRED
Definimos la acl usuariosLdap con autenticación requerida

http_access allow usuariosLdap
http_access deny all

Permitimos el acceso a los usuarios autentificados y el resto… deny

Enjoy your ldap + squid