Ubiquiti Edgerouter como cliente OpenVPN de Zentyal (modo túnel Zentyal-2-Zentyal)

edgerouterÚltimamente estoy usando los aparatos de Ubiquiti ya que la relación calidad/precio me parece muy buena. En este caso se trata de EdgeRouter que tiene que reemplazar a una máquina con Zentyal en modo comunicaciones. Es una instalación multisede y tenemos una VPN montada con Zentyal y su opción de montar un tunel OpenVPN de zentyal a zentyal. Vamos a ver como podemos configurar el edgerouter para que se conecte a esa VPN.

  1. Vamos a suponer que ya tenemos el EdegeRouter con su configuración básica, tenemos salida a internet, sabemos acceder a el vía ssh, etc
  2. Primero nos conectamos al Zentyal que hace de server OpenVPN y nos bajamos el tar.gz con los archivos necesarios (necesitamos los certificados).
  3. Copiamos vía scp los certificados al edgerouter en /config/auth
  4. Nos conectamos por ssh al EdgeRouter, entramos en modo configuración y configuramos la vpn:
configure
edit interfaces openvpn vtun1
set mode client
set device-type tap
set openvpn-option --comp-lzo
set remote-host alava.sartu.org
set remote-port 1194
set tls ca-cert-file /config/auth/ca.crt
set tls cert-file /config/auth/cert.crt
set tls key-file /config/auth/privateKey.crt
commit
save

Ya debería funcionar. En el dashboard nos aparecerá la nueva interfaz (sin posibilidad de configuración) y podremos realizar el resto de tareas que necesitemos (routing, nat, ….)

Breves notas para instalar Zentyal 3.0 en Proxmox (OpenVZ)

Dicen que a la 3ª va la vencida y Zentyal 3.0 parece que confirma el refrán. Es una versión que va realmente fina, la interfaz es mucho más agradable y fluida. Vamos a ver como ponerlo en marcha dentro de un entorno OpenVZ/PROXMOX

  1. Bajarse un template de Ubuntu 12.04 (http://download.openvz.org/template/precreated/ubuntu-12.04-x86.tar.gz)
  2. Crear el contenedor como siempre.
  • Crear el grupo admin y añadir root a el (addgroup admin && adduser root admin)
  • Hacer sudo suid (chmod +s /usr/bin/sudo)
  • Desinstalar samba (dpkg -P samba)
  • Activar soporte acl en el contenedor (en punto de montaje del contenedor debe tener la opcion acl en el fstab) si vamos a usar el módulo SAMBA4
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
  • Para la vpn y el firewall tenemos que hacer lo mismo que con un Zentyal 2.2
    • Hay que añadir a la configuración (/etc/vz/conf/VEID.conf) lo siguiente:
      IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"
    • Si queremos usar la VPN (ya sea para subscribir nuestro Zentyal al cloud o para montar una VPN)
vzctl set VEID --devnodes net/tun:rw --save

Zentyal en PROXMOX usando OpenVZ

Algunos tips para instalar Zentyal en un contenedor OpenVZ en PROXMOX

  • Creamos un contenedor de tipo Ubuntu Lucid (10.04) y la misma arquitectura que el host.

 

  • Para la red podemos usar venet, pero luego no funcionará el módulo zentyal-network, así que lo más recomendable es usar el tipo “Bridged Ethernet”

 

sudo apt-get install -y python-software-properties && sudo add-apt-repository ppa:zentyal/2.2 && sudo apt-get update
sudo apt-get install zentyal
  • Si queremos usar la VPN (ya sea para subscribir nuestro Zentyal al cloud o para montar una VPN)
vzctl set VEID --devnodes net/tun:rw --save
  •  Y para que funcione zentyal-firewall hay que añadir a la configuración (/etc/vz/conf/VEID.conf) lo siguiente:
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"

Como modificar entradas LDAP desde python

En un server que corre Zenntyal necesitaba cambiar el interprete de comandos que se les habñia asignado a todos los usuarios creados en el LDAP. Para ello me he decidido a usar python (porque es lo que mejor controlo y por el magnífico interprete iPython). El resultado a sido este:

#importamos el módulo LDAP y nos conectados
import ldap
l = ldap.initialize('ldap://localhost')
l.simple_bind('cn=ebox,dc=cajacomun,dc=es','misecreto')

#importamos modlist y creamos el cambio
from ldap import modlist
old = {'loginShell':'/bin/false'}
new = {'loginShell':'/bin/bash'}
cambios = modlist.modifyModlist(old,new)

#buscamos personas y aplicamos el cambio
for person in l.search_s('ou=Users,dc=cajacomun,dc=es',ldap.SCOPE_SUBTREE,'(uid=*)',['loginshell']):
    print person
    l.modify_s(person[0],cambios)

Más info:

howto: integrando subversion con zentyal ( el antiguo ebox )

En el trabajo usamos bastante el software Zentyal para gestionar servidores, de hecho me saqué la certificación (otro día hablaré de eso, porque está bastante bien).

Una de las cosas que más me gusta es que usa LDAP y es sencillo de integrar con muchas apps. En etse caso os propongo una receta para integrar un repositiorio SVN con el sistema de usuarios de Zentyal. Continue reading