Automatizar añadir varias máquinas debian al ldap

Esta vez, tenía que automatizar la entrada anterior y añadir varias máquinas al ldap para login.

Como no me hacía especial ilusión modificar todos los ficheros a mano, tenemos al amigo bash + sed.

al lío:


#!/bin/bash

# ########################
# ### by craem ###########
# ########################
# ########################

function instala_paquetes(){
echo "------------------------------------------------------------"
echo "aptitude -y install libnss-ldap libpam-ldap ldap-utils sudo "
aptitude -y install libnss-ldap libpam-ldap ldap-utils sudo
}

function modifica_ficheros(){
echo "--- modificamos fichero nsswitch.conf -----------------------"
sed -ie 's/compat/ldap compat/g' /etc/nsswitch.conf
echo "--- modificamos el fichero common-session -------------------"
echo "session required pam_mkhomedir.so skel=/etc/skel umask=0022" >> /etc/pam.d/common-session
echo "--- reiniciamos el servicio nscd ----------------------------"
/etc/init.d/nscd restart
echo "--- modificamos el sudoers ----------------------------------"
echo "%admin_users ALL=(ALL) ALL" >> /etc/sudoers
echo "--- modificamos el fichero common-auth ----------------------"
echo "auth required pam_access.so" >> /etc/pam.d/common-auth
echo "--- modificamos el access.conf ------------------------------"
echo "-:ALL EXCEPT root (admin_users):ALL EXCEPT LOCAL" >> /etc/security/access.conf
echo "--- modificamos el fichero ldap.conf ------------------------"
sed -ie 's/#BASE dc=example,dc=com/BASE dc=craem,dc=net/g' /etc/ldap/ldap.conf
echo "--- modificamos el ldap.conf --------------------------------"
echo "URI ldap://ldap.craem.net" >> /etc/ldap/ldap.conf
echo "--- fin del script ------------------------------------------"

}
instala_paquetes
modifica_ficheros

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.

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 😉

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

Cliente cisco ipsec Debian / Ubuntu

Esta entrada es otro apunte.

Cisco, con su política de licencias y demás, está dejando en desuso su cliente ipsec… para windows 8 funciona con algunos retoques… pero para los que afortunadamente podemos usar linux, el soporte se quedó estancado en el 2009, con lo que, en los últimos kernels, el cliente vpn no funciona.

Como me niego usar windows para conectarme a mis clientes y a mi casa, busqué la compatibilidad…. de hecho, es ipsec y no debería de haber más problema… así que investigando, descubrí que en los repositorios de debian / ubuntu, hay un cliente compatible… así que, a instalar:


craem@music2:~$ sudo apt-get install vpnc vpnc-network-manager
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
...

Y ahora, para configurar el cliente:
icono

Y en las conexiones de red:
conexionesdered

Y añadimos una nueva:
nuevavpn

Y la configuramos:
configVPN

Y una vez lo tenemos hecho….. a conectarnos desde aquí, con el botón derecho del ratón :

icono

Y nada, enjoy your VPN 😉

Wake On Lan Raspberry Pi raspbian

Estos días, he tenido la necesidad de encender algún pc en remoto, mediante wake on Lan y aprovechando que tenía una raspberry Pi, decidí meterle mano.

Primero de todo, decir que la raspberry la tengo con Raspbian, así que buscamos el paquete WakeOnLan y lo instalamos…


pi@prometheus ~ $ sudo apt-get install wakeonlan
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
libblas3gf liblapack3gf mtools
Use 'apt-get autoremove' to remove them.
Se instalarán los siguientes paquetes NUEVOS:
wakeonlan
0 actualizados, 1 se instalarán, 0 para eliminar y 8 no actualizados.
Necesito descargar 11,5 kB de archivos.
Se utilizarán 57,3 kB de espacio de disco adicional después de esta operación.
Des:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main wakeonlan all 0.41-11 [11,5 kB]
Descargados 11,5 kB en 0seg. (18,5 kB/s)
Seleccionando el paquete wakeonlan previamente no seleccionado.
(Leyendo la base de datos ... 58698 ficheros o directorios instalados actualmente.)
Desempaquetando wakeonlan (de .../wakeonlan_0.41-11_all.deb) ...
Procesando disparadores para man-db ...
Configurando wakeonlan (0.41-11) ...

Y ahora a ver la estructura….

pi@prometheus ~ $ wakeonlan
Usage
wakeonlan [-h] [-v] [-i IP_address] [-p port] [-f file] [[hardware_address] ...]

Options
-h
this information
-v
displays the script version
-i ip_address
set the destination IP address
default: 255.255.255.255 (the limited broadcast address)
-p port
set the destination port
default: 9 (the discard port)
-f file
uses file as a source of hardware addresses

See also
wakeonlan(1)

pi@prometheus ~ $

Por lo que para enviar la órden, es tan fácil como:

pi@prometheus ~ $ wakeonlan xx:xx:xx:xx:xx:xx

Sustituimos las xx por la mac address del equipo a endender y listo 😉

Añadir usuarios nagios

Otra entrada que es un pequeño apunte.

Recientemente, para un proyecto que estoy haciendo, necesitaba tener un usuario en el nagios que pudiese ver determinados hosts…. no todos…. no me interesan que vean el estado de mis máquinas o otras cosas.

Bien, tras leer varios manuales y hacer bastantes pruebas, aquí está la solución:

Primero de todo, en el fichero contacts.cfg, añadimos el user y el group:


define contact{
contact_name usuario2
use generic-contact
alias Nagios usuario2
email usuario2@email.com
service_notifications_enabled 1
host_notifications_enabled 1
service_notification_period 24x7
host_notification_period 24x7
service_notification_options c,w,r
host_notification_options d,u,r
}

define contactgroup{
contactgroup_name usuarios2Admins
alias Grupo usuarios 2
members usuario2
}

Ahora en los objetos que nos haga falta que puedan consultar….

define host {
use generic-router
host_name dispositivoX
alias dispositivoX
contact_groups usuarios2Admins
address ip.del.dispositivo.2
icon_image router.gif
statusmap_image router.gd2
hostgroups rLan
}

define service{
use generic-service
host_name dispositivoX
contact_groups nagiosadmin,usuarios2Admins
service_description PING
check_command check_ping!200.0,20%!600.0,60%
normal_check_interval 4
retry_check_interval 3
max_check_attempts 4
notification_interval 1
notifications_enabled 1
}

Y ahora, que sea sólo lectura 😉

en el fichero cgi.cfg de nuestro nagios:

# READ-ONLY USERS
# A comma-delimited list of usernames that have read-only rights in
# the CGIs. This will block any service or host commands normally shown
# on the extinfo CGI pages. It will also block comments from being shown
# to read-only users.

authorized_for_read_only=usuario2

Y por último, añadimos el user para auth en el webinterface:

# htpasswd2 -c /usr/local/nagios/etc/htpasswd.users usuario2

Esto añade usuario2 y le ponemos el password.

Y con estos sencillos pasos, ya tenemos listo el nuevo user 😉

Rutas estáticas fijas en debian

Otra entrada que es un apunte.

Normalmente, para añadir una ruta estática en nuestro GNU/Debian, basta con teclear en la consola:

route add -net red.de.destino.0 netmask mascara.a.poner.0 gw gateway

Por ejemplo, si queremos enrutar la red 192.168.5.0 por la 192.168.2.251, tendremos que añadir:

route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.2.251

Ahora, si la queremos hacer permanente, editaremos el fichero /etc/network/intefaces y lo dejaremos tal que:


allow-hotplug eth0
iface eth0 inet static
address 192.168.x.x
netmask 255.255.255.0
gateway 192.168.x.x
network 192.168.2.0
broadcast 192.168.2.255
dns-nameserver 192.168.x.x 192.168.x.x
dns-namesearch craem.net
post-up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.2.251

Siendo la línea con post-up route …. la encargada en cuestión.

Enjoy your routes 😉