Servidor syslog centralizado debian jessie

Desde hace tiempo, me gusta centralizar los logs en una sola máquina…. por ejemplo, donde tengo el nagios.

la máquina base es una debian jessie pelada y instalamos el syslog-ng:

apt-get install syslog-ng

Y ahora modificamos el fichero /etc/syslog-ng/syslog-ng.conf

options { chain_hostnames(yes); flush_lines(0); use_dns(no); use_fqdn(no);
owner("root"); group("adm"); perm(0640); stats_freq(0);
create_dirs(yes); bad_hostname("^gconfd$");
};

########################
# Sources
########################
# This is the default behavior of sysklogd package
# Logs may come from unix stream, but not from another machine.
#
source s_src {
system();
internal();
};

# If you wish to get logs from remote machine you should uncomment
# this and comment the above source line.
#
#source s_net { tcp(ip(127.0.0.1) port(1000)); };

source syslog_udp {
udp(port(514));
};

.
.
.
.
.
# Debian only
destination d_ppp { file("/var/log/ppp.log"); };

# Destí logs Mikrotiks
destination clientslogs {
file("/var/log/logscraem/$YEAR$MONTH$DAY/$HOST.auth");
};

.
.
.
.
log {
source(syslog_udp);
destination(clientslogs);
};

Nos crearemos un directorio por día y un fichero por dispositivo.

Reiniciamos el syslog-ng y listo.

Upgrade zarafa 7.2.x a 7.2.4.29

Otra entrada que es un apunte.

Hace dos años aprox, actualicé mi server de correo zarafa a a 7.2 Beta, por unos problemas con la 7.2.1 y allí se quedó.

Hace unos meses, decidí volver a actualizar el server… prefiero actualizar el zarafa, ya que instalar de nuevo y migrar el sql / certificado, es muy pesado.

Primero de todo, descargamos la última versión disponible:

cd /usr/src

wget -c https://download.zarafa.com/community/final/7.2/7.2.4.29/zcp-7.2.4.29-debian-7.0-x86_64-opensource.tar.gz

Y extraemos los archivos:

# tar -zxvf zcp-7.2.4.29-debian-7.0-x86_64-opensource.tar.gz
# cd zcp-7.2.4.29-debian-7.0-x86_64-opensource

Ahora empieza el follón……

Primero de todo, nos hacemos una copia de todos los ficheros situados en:

/etc/zarafa
/usr/share/zarafa-webaccess/

Y ahora vamos a actualizar de la siguiente manera:

dpkg --auto-deconfigure -i *.deb

Dará bastantes errores, pero seguimos adelante cuando acabe el dpkg y corregimos los errores de dependencias:

#apt-get -f install
#dpkg --auto-deconfigure -i *.deb

Ahora reestablecemos los ficheros de la copia de seguridad en /usr/share/zarafa-webaccess y modificamos el seguiente fichero:

root@zeus:/etc/zarafa# nano dagent.cfg

Y cambiamos las siguientes líneas:

server_socket = file:///var/run/zarafa

Y ahora en server.cfg

root@zeus:/etc/zarafa# nano server.cfg

Y cambiamos la línea:

local_admin_users = root vmail zarafa

Reiniciamos los servicios de zarafa/apache y listo.

NAT 1:1 Mikrotik + firewall

Otra entrada que es un apunte.

Estos días he tenido que aplicar nat 1:1 con los routers mikrotik y proteger máquinas con el firewall del router…. a priori es sencillo, pero el tema del firewall se me atascó un poco.

Imaginamos que tenemos una conexión a internet con un NAT GLOBAL, un /29 para repartir entre nuestros servicios. Para hacerlo más sencillo, aplicaremos el nat 1:1

Nuestro proveedor nos entrega la subred 1.1.1.0/29 y como gateway, hemos de usar la 1.1.1.1…. asignaremos a nuestro server de correo la 1.1.1.2 y deberá tener permitido ICMP, WWW y HTTPS

Empezamos:

/ip address
add address=1.1.1.1/29 comment=wan interface=outside network=1.1.1.0
add address=192.168.1.254/24 interface=inside network=192.168.41.0
add address=1.1.1.2/29 comment="nat to 192.168.1.2" interface=outside network=1.1.1.0

El interfaz externo, lo llamaremos outside, el interno inside y el rango local de la lan: 192.168.1.0/24

Asignaremos la ip pública en el outside y la ip del mailserver también.

Ahora añadimos las reglas del firewall para permitir el tráfico deseado:

/ip firewall filter
add chain=forward comment="ip 2" connection-mark=ip_2 protocol=icmp
add chain=forward comment="ip 2" connection-mark=ip_2 port=25 protocol=tcp
add chain=forward comment="ip 2" connection-mark=ip_2 port=80 protocol=tcp
add chain=forward comment="ip 2" connection-mark=ip_2 port=443 protocol=tcp
add chain=forward comment="ip 2" connection-mark=ip_2 port=53 protocol=udp
add action=drop chain=forward comment="ip 2" connection-mark=ip_2

La última línea es importante… si no la incluyes y tu server es un windows, te lo dejarán como un colador xDDDD.

Seguimos con las reglas mangle para identificar las ip’s:

/ip firewall mangle
add action=mark-connection chain=prerouting comment="ip 2" dst-address=1.1.1.2 log-prefix=ip_2 new-connection-mark=ip_2 \
passthrough=no
add action=mark-connection chain=prerouting comment="ip 2" new-connection-mark=publicas passthrough=no src-address=\
192.168.1.2

Y ahora el NAT en cuestión:

/ip firewall nat
add action=dst-nat chain=dstnat comment="nat to 1.1.1.2" dst-address=1.1.1.2 in-interface=outside to-addresses=\
192.168.1.2
add action=src-nat chain=srcnat comment="nat to 1.1.1.2" out-interface=outside src-address=192.168.1.2 to-addresses=\
1.1.1.2

Y con ésto, ya tenemos todo hecho ;).

el proceso es:

– Asignamos la IP al interfaz público.
– Añadimos las reglas de firewall, marcando los paquetes.
– Aplicamos el nat.

Cisco ASA 8.2 to 9.x :: migrando :: parte 4

Seguimos migrando….

Ahora toca añadir ssh para acceder a la config desde el exterior… los pasos:


asa(config)#username pix password password privilege 15
asa(config)#aaa authentication ssh console LOCAL
asa(config)#crypto key generate rsa
WARNING: You have a RSA keypair already defined named .

Do you really want to replace them? [yes/no]: yes
Keypair generation process begin. Please wait...
asa(config)#ssh 1.1.1.0 255.255.255.0 outside

Y ahora ordenamos los nats….. en las configs anteriores no estaba del todo claro:

suponemos que tenemos los servers siguientes:

server11, server12 y server13 y hemos de abrir varios puertos con cada uno de ellos:


object network srv-192.168.0.13_3389
host 192.168.0.13
description server13_3389
object network srv-192.168.0.12_21
host 192.168.0.12
description server12_21
object network srv-192.168.0.12_20
host 192.168.0.12
description server12_20
object network srv-192.168.0.12_20_udp
host 192.168.0.12
description server12_20
object network srv-192.168.0.11_80
host 192.168.0.11
description server11_80
object network srv-192.168.0.11_443
host 192.168.0.11
description server11_443
object network srv-192.168.0.11_110
host 192.168.0.11
description server11_110
object network srv-192.168.0.11_143
host 192.168.0.11
description server11_143
object network srv-192.168.0.11_587
host 192.168.0.11
description server11_587

access-list outside_in extended permit tcp any object server13 eq 444
access-list outside_in extended permit tcp any object server13 eq 3389
access-list outside_in extended permit tcp any object server12 eq ftp
access-list outside_in extended permit tcp any object server12 eq ftp-data
access-list outside_in extended permit udp any object server12 eq 20
access-list outside_in extended permit tcp any object server11 eq www
access-list outside_in extended permit tcp any object server11 eq https
access-list outside_in extended permit tcp any object server11 eq pop3
access-list outside_in extended permit tcp any object server11 eq imap4
access-list outside_in extended permit tcp any object server11 eq 587

object network srv-192.168.0.13_444
nat (inside,outside) static interface service tcp 444 444
object network srv-192.168.0.13_3389
nat (inside,outside) static interface service tcp 3389 3389
object network srv-192.168.0.12_21
nat (inside,outside) static interface service tcp ftp ftp
object network srv-192.168.0.12_20
nat (inside,outside) static interface service tcp ftp-data ftp-data
object network srv-192.168.0.12_20_udp
nat (inside,outside) static interface service tcp ftp-data ftp-data
object network srv-192.168.0.11_80
nat (inside,outside) static interface service tcp www www
object network srv-192.168.0.11_443
nat (inside,outside) static interface service tcp https https
object network srv-192.168.0.11_110
nat (inside,outside) static interface service tcp pop3 pop3
object network srv-192.168.0.11_143
nat (inside,outside) static interface service tcp imap4 imap4
access-group outside_in in interface outside

Es bastante más engorroso, pero supongo que tendrá una explicación 😉

Protegiendo nuestro gateway sip, parte 2

Como ya he comentado en otras ocasiones, la mayoría de ataques a pbx SIP abiertas a internet, están realizados por software tipo sipVicious y similares.

Si tenemos la posibilidad de usar un firewall con inspección a layer 7, podemos filtrar los User-Agent, tal y como expliqué en la entrada anterior.

Ahora, supongamos que tenemos un mikrotik, con RouterOS 6.x…


/ip firewall layer7-protocol
add name=sip regexp="^.+(sundayddr).*\$"
add name=sip1 regexp="^.+(sipsak).*\$"
add name=sip2 regexp="^.+(sipvicious).*\$"
add name=sip3 regexp="^.+(friendly-scanner).*\$"
add name=sip4 regexp="^.+(iWar).*\$"
add name=sip5 regexp="^.+(sip-scan).*\$"
add name=sip6 regexp="^.+(Ozeki).*\$"
add name=sip8 regexp="^.+(sip-cli).*\$"
add name=sip7 regexp="^.+(VaxSIPUserAgent).*\$"
add name=sip9 regexp="^.+(sipcli).*\$"

/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related
add chain=forward connection-state=established,related
add action=drop chain=forward connection-state=invalid
add action=drop chain=forward comment=voip_sundayddr_deny dst-address-list=AUTH layer7-protocol=sip
add action=drop chain=forward comment=voip_sipsak_deny dst-address-list=AUTH layer7-protocol=sip1
add action=drop chain=forward comment=voip_sipvicious_deny dst-address-list=AUTH layer7-protocol=sip2
add action=drop chain=forward comment=voip_friendly-scanner_deny dst-address-list=AUTH layer7-protocol=sip3
add action=drop chain=forward comment=voip_iWar_deny dst-address-list=AUTH layer7-protocol=sip4
add action=drop chain=forward comment=voip_sip-scan_deny dst-address-list=AUTH layer7-protocol=sip5
add action=drop chain=forward comment=voip_Ozeki_deny dst-address-list=AUTH layer7-protocol=sip6
add action=drop chain=forward comment=voip_VaxSIPUserAgent_deny dst-address-list=AUTH layer7-protocol=sip7
add action=drop chain=forward comment=voip_sip-cli_deny dst-address-list=AUTH layer7-protocol=sip8
add action=drop chain=forward comment=voip_sipcli_deny dst-address-list=AUTH layer7-protocol=sip9

hay que tener activado el connection Tracking activado.

enjoy 😉

Cisco ASA 8.2 to 9.x :: migrando :: parte 3

Hoy toca la parte de NATP en los cisco asa 9.x

Recordemos, que a partir de la versión 8.3 en adelante, cambia todo el tema del nat en los firewalls asa.

En esta ocasión, queremos abrir el puerto 3389 y 443 para una máquina 192.168.1.3. En la versión 8.2 quedaría de la siguiente manera:


access-list outside_in permit tcp any any eq 3389
access-list outside_in permit tcp any any eq 443
access-group outside_in in interface outside

static (inside,outside) tcp interface 3389 192.168.1.3 3389 netmask 255.255.255.255
static (inside,outside) tcp interface 443 192.168.1.3 443 netmask 255.255.255.255

Las 2 primeras líneas, indica que dejamos pasar desde cualquier sitio externo, a nuestra lan, el puerto tcp 3389 y 443.

El access-group es para aplicar las reglas en el interface y, los statics, es para hacer las traducciones de nat directamente…. sin las 3 primeras líneas, el tráfico será denegado.

Ahora vamos a aplicarlo en la versión 9.x y veremos que es un poco más engorroso y que nos han cambiado la sintáxis para que estemos algo más atentos y no nos relajemos 😉

Esta es la config:


object network hst-192.168.1.3
host 192.168.1.3
description Server1.3
object network hst-192.168.1.3_3389
host 192.168.1.3
description server1.3_3389
object-group service svcgrp-192.168.1.3 tcp
port-object eq 443
object-group service svcgrp-192.168.1.3_3389 tcp
port-object eq 3389
object-group service svcgrp-192.168.1.3_443 tcp
port-object eq 443
object network hst-192.168.1.3-tcp443
host 192.168.1.3
description Server 443 Static PAT Object

access-list outside_in extended permit tcp any object hst-192.168.1.3 object-group svcgrp-192.168.1.3_443
access-list outside_in extended permit tcp any object hst-192.168.1.3 object-group svcgrp-192.168.1.3_3389
access-group outside_in interface outside

object network 192.168.1.3-tcp443
nat (inside,outside) static interface service tcp 443 443
object network hst-192.168.1.3_3389
nat (inside,outside) static interface service tcp 3389 3389

Tengo pendiente de probar si 1 group-object lo puedo usar en más de 1 linea y aprovechar.

configurar Cisco 881G 3G

Ahora que proliferan las conexiones 3g profesionales, se pueden tener backups por un precio asequible y una calidad razonable.

Tenemos una flamante sim 3G de movistar con un cisco 881G, el cual nos vamos a disponer a configurar….

Primero de todo, tenemos la conexión de Vomistar:


apn: movistar
user: movistar
pass: movistar

Ahora, creamos el profile en el cisco:


rBackup#cellular 0 gsm profile ?
create Create/Edit a Profile
delete Delete a profile

rBackup#cellular 0 gsm profile create 3 movistar chap movistar movistar

Explicación:

cellular 0 gsm profile create NUMPERFIL APN AUTH usuario password

ahora el script para el dialer..

multilink bundle-name authenticated
chat-script movistar "" "ATDT*99*1#" TIMEOUT 15 CONNECT

Y modificamos el interface cellular0 con la sim:

interface Cellular0
ip address negotiated
ip nat outside
ip virtual-reassembly
encapsulation ppp
dialer in-band
dialer idle-timeout 300
dialer string movistar
dialer-group 1
async mode interactive
ppp chap refuse
ppp pap sent-username movistar@movistar password movistar

Y ahora las rutas / access-list / nat

ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 Cellular0
!
!
ip nat inside source list 100 interface Cellular0 overload
!
access-list 1 permit any
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
dialer-list 1 protocol ip permit

No nos olvidemos de guardar la config (wr mem) y ya está…

Bloquear skype con cisco ASA

Esta vez, me ha tocado bloquear el skype en una empresa… con el cisco asa, a diferencia del iptables, la inspección a nivel 7, es un poco limitada.

He iniciado el skype y veo que las conexiones son a varias ip’s y, no puedo bloquear todas, ya que iba haciendo y aparecían nuevas.

Lo más sencillo… he mirado los AS que tiene skype:


http://www.tcpiputils.com/search?q=skype

198015 Skype Communications Sarl LU 1 17 0
198097 Skype Communications Sarl LU 2 27 0

Con estos datos, miramos los rangos de ip’s de cada uno:


http://www.tcpiputils.com/browse/as/198015
http://www.tcpiputils.com/browse/as/198097

resumiendo…. hacemos una regla para aplicar en el interface inside del asa


object-group network redesSkype
network-object 91.190.216.0 255.255.255.0
network-object 91.190.217.0 255.255.255.0
network-object 91.190.218.0 255.255.255.0
network-object 91.190.219.0 255.255.255.0
network-object 91.190.220.0 255.255.255.0
access-list aplicarInside extended deny ip any object-group redesSkype
access-group aplicarInside in interface inside

Y con ésto, ya tenemos bloqueado el skype 😉

VoIP jazztel ftth y asterisk pjsip

En esta ocasión, registraremos nuestro servicio de VoIP de fibra Jazztel en nuestro asterisk.

Requisitos:

1º) Capturar el proceso de register del router de jazztel contra sus SBC. Para ello, mediante un hub colocado entre el router y la ONT, colocaremos nuestro pc capturando el paquete deseado.

En las capturas, deberás ver un paquete tal que:


Via: SIP/2.0/UDP x.x.x.x:5060;branch=asdfgsdfgsdfgsdfgsd
To:
From: ;tag=d2derwerqwer19-f45ffrr
Call-ID: xxxxxxxxxxx-xxxxxxxxx@x.x.x.x
CSeq: 46360 REGISTER
Contact:
Authorization: Digest username="misuperusuario007@ims.jazztel.net",realm="ims.jazztel.net",nonce="elsuperNonce",uri="sip:ims.jazztel.net",response="idRespuestaasfasdfasdfwererer",algorithm=MD5,cnonce="sdferelcenoncd",qop=auth,nc=00000001
Expires: 3600
Max-Forwards: 70
Supported: 100rel
User-Agent: ZXHN H218N/V2.0.0_JAZZT7
Content-Length: 0

En vez de las ‘x’, saldrán tus valores xDDD; no preguntes

2º) HTTPBrute, que nos servirá para sacar el password con el paquete SIP.

Pantallazo

Rellena cada casilla con lo que toca…. es bastante clarito todo. Le das a crack y calculate y te esperas unas horas (en mi caso)

3º) Asterisk 12 o 13 con pjSip. Yo en mi caso tengo una 12 con poca ram y cpu.

La versión 12 o 13 tiene su razón bastante obvia…… Para poder hacer una llamada, tienes que tener activada la opción 100rel…. en el chan_sip de asterisk, esta opción no está, pero en pjsip si, así que ya sabéis.

El user-agent, debe ser igual al que os proponga el router.

4º) Configuración del pjsip.conf

[global]
user_agent=ZXHN H298N/V1.1.4_JAZZT15

[endpoint]
100rel=yes --> Importante definir el endpoint con el 100rel=yes
sdp_session=ZXHN H298N/V1.1.4_JAZZT15

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
local_net=192.168.0.0/16 --> tu red local
local_net=127.0.0.1/32

[Jazztel]
type=registration
transport=transport-udp
outbound_auth=Jazztel
server_uri=sip:212.106.212.22:5060
client_uri=sip:+349xxxxxxxx@ims.jazztel.net --> tu número de teléfono con el +34
retry_interval=60
expiration=3600
support_path=yes

[Jazztel]
type=auth
auth_type=userpass
password=PasswordQueHayasCalculado
username=tuUsuari0DeJazttel@ims.jazztel.net
realm=ims.jazztel.net

[Jazztel]
type=aor
contact=sip:ip.del.sbc.jazztel:5060

[Jazztel]
type=endpoint
transport=transport-udp
context=Tu_Contexto_De_Llamadas_Entrantes
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g729
outbound_auth=Jazztel
aors=Jazztel
from_user=+349xxxxxxxx --> tu número de teléfono de jazztel
from_domain=ims.jazztel.net
aors=Jazztel
direct_media=no

[Jazztel]
type=identify
endpoint=Jazztel
match=ip.del.sbc.de.jazztel

Y a partir de aquí…. enjoy your VoIP FTTH Service 😉

Añadir schema zarafa a openLdap

Otra entrada que es un apunte.

Recientemente he tenido que volver a instalar otro zarafa y necesitaba añadir el esquema en el openLdap.

Tras intentar importar el schema con zcat:

zcat /usr/share/doc/zarafa/zarafa.ldif.gz | ldapadd -H ldapi:/// -Y EXTERNAL

Y ver los múltiples errores con las comillas, atributos y demás gaitas, googleando he visto este post:


http://www.linuxquestions.org/questions/linux-server-73/how-to-add-a-new-schema-to-openldap-2-4-11-a-700452/

Resumiendo……. para poder importar el schema de manera correcta, los pasos:

1º) Generamos el fichero schema_convert.conf con el siguiente contenido:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/pmi.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/zarafa.schema

2º) Creamos el directorio temporal

# mkdir /tmp/ldif_output

3º) Generamos los ldif

# slaptest -f schema_convert.conf -F /tmp/ldif_output

4º) Nos vamos al directorio donde hemos generado los ficheros

cd tmp/ldif_output/cn=config/cn=schema

Y creamos el fichero fixit.sed con el siguiente contenido:

s~dn: cn=\{([0-9]+)\}(.*)$~dn: cn=\2,cn=schema,cn=config~g
s~cn: \{([0-9]+)\}(.*)$~cn: \2~g
s~^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp):.*$~~g

5º) Una vez creado el fichero, creamos el directorio fixed y ejecutamos el siguiente script:

for f in *ldif; do sed -rf fixit.sed "$f" > fixed/$f; done

Llegados aquí, en el directorio fixed, tendremos los directorios:

root@radius:/tmp/ldif_output/cn=config/cn=schema/fixed# ls -l
total 96
-rw-r--r-- 1 root root 15267 Aug 24 10:39 cn={0}core.ldif
-rw-r--r-- 1 root root 1091 Aug 24 10:39 cn={10}openldap.ldif
-rw-r--r-- 1 root root 6212 Aug 24 10:39 cn={11}pmi.ldif
-rw-r--r-- 1 root root 3073 Aug 24 10:39 cn={12}ppolicy.ldif
-rw-r--r-- 1 root root 11121 Aug 24 10:39 cn={13}zarafa.ldif
-rw-r--r-- 1 root root 1289 Aug 24 10:39 cn={1}collective.ldif
-rw-r--r-- 1 root root 1051 Aug 24 10:39 cn={2}corba.ldif
-rw-r--r-- 1 root root 11129 Aug 24 10:39 cn={3}cosine.ldif
-rw-r--r-- 1 root root 4253 Aug 24 10:39 cn={4}duaconf.ldif
-rw-r--r-- 1 root root 1461 Aug 24 10:39 cn={5}dyngroup.ldif
-rw-r--r-- 1 root root 2623 Aug 24 10:39 cn={6}inetorgperson.ldif
-rw-r--r-- 1 root root 2357 Aug 24 10:39 cn={7}java.ldif
-rw-r--r-- 1 root root 1280 Aug 24 10:39 cn={8}misc.ldif
-rw-r--r-- 1 root root 6259 Aug 24 10:39 cn={9}nis.ldif

6º) Importamos el ldif de zarafa:

# ldapadd -Y EXTERNAL -H ldapi:/// -f cn\=\{13\}zarafa.ldif

Esto se puede aplicar, como me ha pasado a mi, con el schema de freeradius o otros schemas.

enjoy 🙂