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 🙂

Freeradius stop on logger rotate

Otra entrada que es un apunte.

Cuando instalas el freeradius y lo dejas tal cual configurado, cuando hace el log rotate, se queda parado….. aquí explican el bug:

Freeradius stop

Para impedir que se quede parado, tras hacer el logrotate, hemos de modificar el siguiente fichero:


# nano /etc/logrotate.d/freeradius

Y ha de quedar tal que:

/var/log/freeradius/*.log {
weekly
rotate 52
compress
delaycompress
notifempty
missingok
postrotate
/etc/init.d/freeradius restart > /dev/null
endscript
}

Hemos de cambiar la línea

/etc/init.d/freeradius reload > /dev/null

a

/etc/init.d/freeradius restart > /dev/null

enjoy 😉