Los “ayudadores” del calamar
El título les parecerá que este entrada sería una mera perdida de tiempo, que sería un off-topic total o una entrada de la GreenPeace, pero no es así es que quería ser nacionalista y escribir en Español (Squid helpers).
Hoy en día necesité autenticar un Squid-cache contra el Active Directory de Windows, y como a la primera no me funcionó el helper LDAP que viene por defecto escribí un pequeño script en python que funciona, capaz a alguien le sea útil.
#!/usr/bin/env python
import ldap, sys
from syslog import *
LDAP_SERVER='ldap://' + sys.argv[1]
try:
ldap_client = ldap.initialize(LDAP_SERVER)
except:
syslog(LOG_ERR,"Couldn't connect to the LDAP")
sys.exit()
while (1):
try:
(user,passwd) = sys.stdin.readline().strip().split(" ")
ldap_client.simple_bind_s(user,passwd)
syslog(LOG_INFO,"%s login" % user)
# Login success
print "OK"
except:
syslog(LOG_INFO,"%s login failed" % user)
# Sorry, an error
print "ERR"
sys.stdout.flush() # Requerido en algunas distros
ldap_client.unbind()
Es un simple script como lo ven, puede estar escrito en cualquier lenguaje (que tenga stdin y stdout) como PHP, C, Ruby, Haskell, Bash, pero elegí python para mostrar que tambíen hablo otro lenguajes (aparte de PHP y C). Tambíen pueden autenticar contra cualqueir cosa (ejemplo contra una DB como hacen acá) y por ejemplo asignar usuario por tiempos. Por último, para configurar el helper (asumiendo que el 192.168.1.1 es el servidor de ActiveDirectory):
auth_param basic program /path/to/login.py 192.168.1.1 # Aquí vi que algunos muggles que ponian 20, es muy alto, y no vale la pena # a no ser que se tenga miles de usuarios. auth_param basic children 5 auth_param basic realm Type your password # tiempo que será valido el login, para no hacer # overhead tendría que ser un tiempo razonable auth_param basic credentialsttl 5 minutes
Espero que mis días como sysadm lleguen a su fin, extraño los días de programar para vivir, no es lo mismo que pase a ser solo un hobbie.
Read more at Los “ayudadores” del calamar
