lunes, 17 de septiembre de 2012

MySQL: ERROR 1194 (HY000)

Estaba realizando unos trabajos con MySQL y de prontono podia hacer consultas, me salia el siguiente mensaje:


ERROR 1194 (HY000): Table 'cdr' is marked as crashed and should be repaired

Navegando encontre la siguiente sentencia que me permitio repararlo y seguir trabajando, ademas muestra la causa del "error"


# mysqlcheck --auto-repair asteriskcdrdb cdr -p
Enter password: 
asteriskcdrdb.cdr
warning  : 15 clients are using or haven't closed the table properly
error    : Wrong bytesec: 0-0-0 at linkstart: 781414504
error    : Corrupt

Repairing tables
asteriskcdrdb.cdr
info     : Wrong bytesec:   0-  0-  0 at 781414016; Skipped
info     : Wrong bytesec:   0-  0-  0 at 781450184; Skipped
info     : Wrong bytesec:   0-  0-  0 at 781451280; Skipped
warning  : Number of rows changed from 4767817 to 4767552
status   : OK


domingo, 16 de septiembre de 2012

ERROR! Libpcap library version >= 1.0.0 not found


En mi caso, salio ese mensaje cuando trataba de instalar el daq, todo esto para implementar el IDS con Snort

# cd daq-1.1.1/

# ./configure


Compilar el libpcap del siguiente modo:

# cd /usr/local/src
# wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
# tar xzf libpcap-1.3.0.tar.gz
# cd /usr/local/src/libpcap-1.3.0/

# ./configure --prefix=/usr
# make
# make install

... Posterior a ello continuar con la instalacion del daq, snort ..etc.

viernes, 3 de agosto de 2012

Error MySQL: Couldn't execute 'show fields from

Este es un error que me salio en un servidor, el error exacto es el siguiente:


mysqldump: Couldn't execute 'show fields from `Backup`': Got error 28 from storage engine (1030)

Donde Backup es mi base de datos:

El problema es un tema de espacio en el disco duro. Solo hay que liberar espacio y listo.

miércoles, 1 de agosto de 2012

Error en OpenSUSE: symbol lookup error


Este es un error que me encontré en el camino luego de actualizar OpenSUSE de 11.1 a 11.3

Luego de actualizar al ejcutar yast o yast2 me salia el siguiente mensaje:

# yast
/usr/lib/YaST2/bin/y2base: symbol lookup error: /usr/lib/libstdc++.so.6: undefined symbol: _ZNSt7num_getIcSt19istreambuf_iterator IcSt11char_traitsIcEEE2idE, version GLIBCXX_3.4

La version del glibc era:

# rpm -q glibc
glibc-2.9-2.13.1

Entonces tenia que bajar la version de glibc para 11.3

# mkdir GLIBC
# cd GLIBC/
# wget ftp://ftp.ntua.gr/pub/linux/opensuse/update/11.3/rpm/i586/glibc-2.11.2-3.7.1.i586.rpm
# wget ftp://ftp.ntua.gr/pub/linux/opensuse/update/11.3/rpm/i586/glibc-devel-2.11.2-3.7.1.i586.rpm
# wget ftp://ftp.ntua.gr/pub/linux/opensuse/update/11.3/rpm/i586/glibc-locale-2.11.2-3.7.1.i586.rpm
# rpm -Uvh *

Finalmente acutalizamos el yast-ncurses

# mkdir YAST
# cd YAST/
# wget ftp://bo.mirror.garr.it/pub/1/opensuse/distribution/11.3/repo/oss/suse/i586/yast2-ncurses-2.19.5-1.6.i586.rpm
# rpm -Uvh yast2-ncurses-2.19.5-1.6.i586.rpm

Listo

martes, 31 de julio de 2012

Whitelist & Blacklist en Zimbra

La interfaz de administracion del Zimbra version OpenSource no tiene Blacklist ni Whitelist, por lo tanto solo queda manejarlo a nivel de archivos, para lo cual se creo el siguiente script para un manejo mas rapido de dichas listas, asi como un pequeño filtro en los correos por asunto.

Creamos el siguiente archivo

#  touch /opt/zimbra/conf/custom_header_checks

# chown zimbra:zimbra /opt/zimbra/conf/custom_header_checks

Ahora nos ponemos como usuario zimbra y ejecutamos lo siguiente:
# su - zimbra
# zmlocalconfig -e postfix_header_checks="pcre:/opt/zimbra/conf/postfix_header_checks, pcre:/opt/zimbra/conf/custom_header_checks"

Listo hecho lo de arriba, creamos nuestro script al cual llamaremos zimbralist


# vi /usr/local/sbin/zimbralist


#!/bin/bash
echo ""
echo "*****************************************"
echo "********  Whitelist & Blacklist  ********"
echo "*****************************************"
echo ""
echo "Menu de opciones"
echo "----------------"
echo ""
echo "Mostrar lista blanca          : opcion 1"
echo "Mostrar lista negra           : opcion 2"
echo "Agregar a lista blanca        : opcion 3"
echo "Agregar a lista negra         : opcion 4"
echo "Borrar de ambas listas (w/b)  : opcion 5"
echo "Lista de filtros por asunto   : opcion 6"
echo "Agregar filtros por asunto    : opcion 7"
echo "Borrar filtros por asunto     : opcion 8"
echo "Aplicar cambios               : opcion 9"
echo ""
echo -n "Ingrese opcion : "
read opcion
if [ $opcion -eq 1 ]; then
echo ""
echo "Lista blanca"
echo "------------"
grep "whitelist_from " /opt/zimbra/conf/salocal.cf.in
echo ""
else
if [ $opcion -eq 2 ]; then
echo ""
echo "Lista Negra"
echo "-----------"
grep blacklist_from /opt/zimbra/conf/salocal.cf.in 
echo ""
else
if [ $opcion -eq 3 ]; then
echo "Ingrese la cuenta o dominio:"
echo -n "Dominio/cuenta: "
read dom
echo "whitelist_from $dom" >> /opt/zimbra/conf/salocal.cf.in
echo "Dominio/cuenta agregada"
echo ""
else
if [ $opcion -eq 4 ]; then
echo "Ingrese la cuenta o dominio:"
echo -n "Dominio/cuenta: "
read dom
echo "blacklist_from $dom" >> /opt/zimbra/conf/salocal.cf.in
echo "Dominio/cuenta agregada"
echo ""
else
if [ $opcion -eq 5 ]; then
echo "Ingrese la cuenta o dominio:"
echo -n "Dominio/cuenta: "
read dom
sed -i -e "/$dom/d" /opt/zimbra/conf/salocal.cf.in
echo "Dominio/cuenta borrada"
echo ""
else
if [ $opcion -eq 6 ]; then
echo ""
echo "Lista de filtros por asunto"
echo "---------------------------"
echo ""
cat /opt/zimbra/conf/custom_header_checks
echo ""
else
if [ $opcion -eq 7 ]; then
echo ""
echo "Ingrese palabra a filtrar :"
echo -n "palabra: " 
read pal
echo "/^Subject:.*($pal)/ DISCARD La palabra $pal esta bloqueada" >> /opt/zimbra/conf/custom_header_checks
echo "La palabra $pal fue agregada"
echo ""
else
if [ $opcion -eq 8 ]; then
echo ""
echo "Ingrese la palabra a eliminar del filtro:"
echo -n "Palabra: "
read pal
sed -i -e "/$pal/d" /opt/zimbra/conf/custom_header_checks
echo "La palabra $pal fue eliminada"
echo ""
else
if [ $opcion -eq 9 ]; then
echo ""
echo "Aplicando los cambios ..."
echo ""
su - zimbra -c "zmmtactl restart && zmamavisdctl restart"
echo ""
echo "Cambios aplicados : [ OK ]"
echo ""
else
echo "opcion no valida"
fi
fi
fi
fi
fi
fi
fi
fi
fi


Ahora solo queda darle permisos de ejecucion

# chmod +x /usr/local/sbin/zimbralist


Listo, ahora con ejecutar ya podemos manejar de forma mas rapida las listas

Algo adicional que agregare es lo siguiente:

Alguna palabras que vienen en el asunto como PUBLÏCÏDAD no podia bloquearlas ya que por temas de formatos no hacia el match , entonces hize un script para que se agregue el filtro en todas las cuentas del servidor

Cree un archivo de nombre /usr/local/sbin/FilterAsunto, con el siguiente contenido

#!/bin/bash
Asunto=$1
NombreFiltro=$2
ACC=`/opt/zimbra/bin/zmprov -l gaa`
for i in $ACC
do
/opt/zimbra/bin/zmmailbox -z -m $i addFilterRule "$NombreFiltro" active any header "subject" contains "$Asunto" discard stop
done

Le di permisos de ejecucion

#chmod +x /usr/local/sbin/FilterAsunto

Listo, ahora ejecutando del siguiente modo se puede agregar los filtros en todas las cuentas

#FilterAsunto PUBLÏCÏDAD PalabraFiltrada1

Ahora si queremos agregar al script seria del siguiente modo:

echo "Ingrese palabra a filtrar :"
echo -n "palabra: " 
read pal
echo -n "Nombre del Filtro: "
read filtro
echo "Agregando filtro ... "
echo "/^Subject:.*($pal)/ DISCARD La palabra $pal esta bloqueada" >> /opt/zimbra/conf/custom_header_checks
/usr/local/sbin/FilterAsunto $pal $filtro
echo "La palabra $pal fue agregada"

Por ahora lo estare trabajando asi ....






Dominio Samba con OpenLDAP sobre CentOS 6

Este es un resumen de los pasos a seguir para poder configurar un PDC con Samba y OpenLDAP. Los conceptos tanto de Samba como LDAP se pueden encontrar ampliamente explicados en la web.

Datos:
Dominio: pamplona.local
IP del Linux: 172.16.0.24
SO: CentOS 6.2 de 64 bits

Primero empezamos con la configuracion de OpenLDAP

# yum -y install openldap-servers openldap-clients

Nos aseguramos que en el archivo /etc/sysconfig/ldap tengamos habilitado lo siguiente:


SLAPD_LDAPI = yes


Creamos el archivo slapd.conf dentro del directorio /etc/openldap



# vi /etc/openldap/slapd.conf

pidfile     /var/run/openldap/slapd.pid
argsfile    /var/run/openldap/slapd.args


Eliminamos todo el contenido dentro del directorio /etc/openldap/slapd.d/
# rm -rf /etc/openldap/slapd.d/* 
Generamos nuestros archivos de configuracion ldif
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
Editamos el archivo generado, modificar la linea 4 quedando del siguiente modo 
# vi /etc/openldap/slapd.d/cn=config/olcDatabase\={0}config.ldif
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
#olcAccess: {0}to *  by * none
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: TRUE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=config
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
entryUUID: 54a95934-67a4-1031-9c0b-6b11c7427936
creatorsName: cn=config
createTimestamp: 20120721172202Z
entryCSN: 20120721172202.648710Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120721172202Z
Creamos el archivo sigiente

# vi /etc/openldap/slapd.d/cn=config/olcDatabase\={1}monitor.ldif

dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
modifiersName: cn=config

Configuramos el usuario propietario y permisos ...

# chown -R ldap. /etc/openldap/slapd.d
# chmod -R 700 /etc/openldap/slapd.d
# /etc/rc.d/init.d/slapd start 
# chkconfig slapd on
Realizamos las configuraciones iniciales

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=core,cn=schema,cn=config"

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"

#slappasswd
New password: 
Re-enter new password: 
{SSHA}XAmVut5MmHJLyK4ooNh4bVsBEOzkFIUy


Creamos los siguientes archivo ldif con los datos de nuestro dominio(pamplona.local)

# vi backend.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: back_hdb

dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcSuffix: dc=pamplona,dc=local
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=pamplona,dc=local
olcRootPW: {SSHA}XAmVut5MmHJLyK4ooNh4bVsBEOzkFIUy
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcMonitoring: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=pamplona,dc=local" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=pamplona,dc=local" write by * read
...

# ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
adding new entry "olcDatabase=hdb,cn=config"
En el siguiente archivo poner la clave generada con el comando slappasswd
# vi frontend.ldif

dn: dc=pamplona,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: pamplona local
dc: pamplona

dn: cn=admin,dc=pamplona,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {SSHA}XAmVut5MmHJLyK4ooNh4bVsBEOzkFIUy

dn: ou=people,dc=pamplona,dc=local
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=pamplona,dc=local
objectClass: organizationalUnit
ou: groups
...

# ldapadd -x -D cn=admin,dc=pamplona,dc=local -W -f frontend.ldif
Enter LDAP Password: 
adding new entry "dc=pamplona,dc=local"
adding new entry "cn=admin,dc=pamplona,dc=local"
adding new entry "ou=people,dc=pamplona,dc=local"
adding new entry "ou=groups,dc=pamplona,dc=local"
Ahora configuraremos el cliente LDAP
# yum -y install openldap-clients nss-pam-ldapd
Editamos los siguientes archivos con los datos de nuestro dominio
# vi /etc/openldap/ldap.conf

URI     ldap://172.16.0.24/
BASE    dc=pamplona,dc=local
TLS_CACERTDIR   /etc/openldap/certs

# vi /etc/nslcd.conf

uri ldap://172.16.0.24/
base dc=pamplona,dc=local
ssl no
tls_cacertdir /etc/openldap/certs
# vi /etc/pam_ldap.conf

#host 127.0.0.1
base dc=pamplona,dc=local

Agregar al final del archivo pam_ldap.conf lo siguiente:
uri ldap://172.16.0.24/
ssl no
tls_cacertdir /etc/openldap/certs
pam_password md5

Agregar al archivo system-auth las lineas con ##
# vi /etc/pam.d/system-auth

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass ##
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so ##
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok  ##
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so ##
session     optional      pam_mkhomedir.so skel=/etc/skel umask=077 ##


Agregamos la fuente ldap a nuestro archivo nsswitch.conf

# vi /etc/nsswitch.conf

passwd:     files ldap
shadow:     files ldap
group:      files ldap

netgroup:   ldap
publickey:  nisplus
automount:  files ldap

# vi /etc/sysconfig/authconfig

USELDAP=yes

# chkconfig nslcd on
Reiniciamos nuestro servidor ...
# reboot
Ahora instalamos samba
# yum -y install samba
#cd /tmp
#vi schema_convert.conf

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

# mkdir ldif_output

slapcat -f schema_convert.conf -F ./ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > ./cn=samba.ldif
Eliminar el '{12}' del archivo cn=samba.ldif y quedar del siguiente modo
# vi cn=samba.ldif

dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: samba
Eliminar las siguientes 7 lineas del archivo cn=samba.ldif

structuralObjectClass: olcSchemaConfig
entryUUID: e24790da-67a9-1031-9ca2-7f12861cadca
creatorsName: cn=config
createTimestamp: 20120721180147Z
entryCSN: 20120721180147.725827Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120721180147Z

# ldapadd -Y EXTERNAL -H ldapi:/// -f cn=samba.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=samba,cn=schema,cn=config"
Creamos el sguiente archivo...
# vi samba_indexes.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

# ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

# cd
# rm -rf /tmp/*
# /etc/rc.d/init.d/slapd restart
Stopping slapd:                                            [  OK  ]
Starting slapd:                                            [  OK  ]

Agregamos la fuente epel para instalar el smbldap-tools
# vi /etc/yum.repos.d/CentOS-epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&amp;arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&amp;arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&amp;arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

# rpm --import https://fedoraproject.org/static/0608B895.txt
# yum -y install smbldap-tools


mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cp /usr/share/doc/smbldap-tools-0.9.6/smb.conf /etc/samba/smb.conf

vi /etc/samba/smb.conf

...
# Global parameters
[global]
        workgroup = PAMPLONA
        netbios name = PDC01
        security = user
        enable privileges = yes
        #interfaces = 192.168.5.11
        #username map = /etc/samba/smbusers
        server string = Samba Server %v
        #security = ads
        encrypt passwords = Yes
        #min passwd length = 3
        #pam password change = no
        #obey pam restrictions = No

        # method 1:
        #unix password sync = no
        #ldap passwd sync = yes

        # method 2:
        unix password sync = yes
        ldap passwd sync = yes
        passwd program = /usr/sbin/smbldap-passwd -u "%u"
        passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n"

        log level = 0
        syslog = 0
        log file = /var/log/samba/log.%U
        max log size = 100000
        time server = Yes
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        mangling method = hash2
        Dos charset = CP932
        Unix charset = UTF-8

        logon script = logon.bat
        logon drive = H:
        logon home =
        logon path =

        domain logons = Yes
        domain master = Yes
        os level = 65
        preferred master = Yes
        wins support = yes
        passdb backend = ldapsam:ldap://172.16.0.24/
        ldap admin dn = cn=admin,dc=pamplona,dc=local
        ldap suffix = dc=pamplona,dc=local
        ldap group suffix = ou=Groups
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
        #ldap idmap suffix = ou=Idmap
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        #ldap delete dn = Yes
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        delete group script = /usr/sbin/smbldap-groupdel "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
        admin users = sysadmin
        ldap ssl = no
        # printers configuration
        #printer admin = @"Print Operators"
        load printers = Yes
        create mask = 0640
        directory mask = 0750
        #force create mode = 0640
        #force directory mode = 0750
        nt acl support = No
        printing = cups
        printcap name = cups
        deadtime = 10
        guest account = nobody
        map to guest = Bad User
        dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd
        show add printer wizard = yes
        ; to maintain capital letters in shortcuts in any of the profile folders:
        preserve case = yes
        short preserve case = yes
        case sensitive = no

... 

# mkdir /home/netlogon
# /etc/rc.d/init.d/smb restart
Shutting down SMB services:                                [FAILED]
Starting SMB services:                                     [  OK  ]

# /etc/rc.d/init.d/nmb restart
Shutting down NMB services:                                [FAILED]
Starting NMB services:                                     [  OK  ]

[root@pdc01 ~]# chkconfig smb on
[root@pdc01 ~]# chkconfig nmb on

# smbpasswd -W
Setting stored password for "cn=admin,dc=pamplona,dc=local" in secrets.tdb
New SMB password:
Retype new SMB password:
Ahora vamos a configurar el smbldap a traves del archivo perl
# perl /usr/share/doc/smbldap-tools-0.9.6/configure.pl

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       smbldap-tools script configuration
       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Before starting, check
 . if your samba controller is up and running.
 . if the domain SID is defined (you can get it with the 'net getlocalsid')

 . you can leave the configuration using the Ctrl-c key combination
 . empty value can be set with the "." character
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Looking for configuration files...

Samba Configuration File Path [/etc/samba/smb.conf] > Enter

The default directory in which the smbldap configuration files are stored is shown.
If you need to change this, enter the full directory path, then press enter to continue.
Smbldap-tools Configuration Directory Path [/etc/smbldap-tools] > 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Let's start configuring the smbldap-tools scripts ...

. workgroup name: name of the domain Samba acts as a PDC for
  workgroup name [PAMPLONA] > Enter
. netbios name: netbios name of the samba controller
  netbios name [PDC01] > Enter
. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'
  logon drive [H:] > Enter
. logon home: home directory location (for Win95/98 or NT Workstation).
  (use %U as username) Ex:'\\PDC01\%U'
  logon home (press the "." character if you don't want homeDirectory) [\\PDC01\%U] > Enter
. logon path: directory where roaming profiles are stored. Ex:'\\PDC01\profiles\%U'
  logon path (press the "." character if you don't want roaming profiles) [\\PDC01\profiles\%U] > .
. home directory prefix (use %U as username) [/home/%U] > Enter
. default users' homeDirectory mode [700] > Enter
. default user netlogon script (use %U as username) [logon.bat] > Enter
  default password validation time (time in days) [45] > Enter
. ldap suffix [dc=pamplona,dc=local] > Enter
. ldap group suffix [ou=Groups] > Enter
. ldap user suffix [ou=Users] > Enter
. ldap machine suffix [ou=Computers] > Enter
. Idmap suffix [ou=Idmap] > Enter
. sambaUnixIdPooldn: object where you want to store the next uidNumber
  and gidNumber available for new users and groups
  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=PAMPLONA] > 
. ldap master server: IP address or DNS name of the master (writable) ldap server
  ldap master server [172.16.0.24] > Enter
. ldap master port [389] > Enter
. ldap master bind dn [cn=admin,dc=pamplona,dc=local] > Enter
. ldap master bind password [] > Ingresamos la clave
. ldap slave server: IP address or DNS name of the slave ldap server: can also be the master one
  ldap slave server [172.16.0.24] > Enter
. ldap slave port [389] > Enter
. ldap slave bind dn [cn=admin,dc=pamplona,dc=local] > Enter
. ldap slave bind password [] > Ingresamos la clave
. ldap tls support (1/0) [0] > Enter
. SID for domain PAMPLONA: SID of the domain (can be obtained with 'net getlocalsid PDC01')
  SID for domain PAMPLONA [S-1-5-21-3173375413-340090289-266529731] > Enter
. unix password encryption: encryption used for unix passwords
  unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > Enter
. default user gidNumber [513] > Enter
. default computer gidNumber [515] > Enter
. default login shell [/bin/bash] > Enter
. default skeleton directory [/etc/skel] > Enter
. default domain name to append to mail address [] > Enter
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
backup old configuration files:
  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old
  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old
writing new configuration file:
  /etc/smbldap-tools/smbldap.conf done.
  /etc/smbldap-tools/smbldap_bind.conf done.

Ejecutamos lo siguiente:

# smbldap-populate
Populating LDAP directory for domain PAMPLONA (S-1-5-21-3173375413-340090289-266529731)
(using builtin directory structure)

entry dc=pamplona,dc=local already exist. 
adding new entry: ou=Users,dc=pamplona,dc=local
entry ou=Groups,dc=pamplona,dc=local already exist. 
adding new entry: ou=Computers,dc=pamplona,dc=local
adding new entry: ou=Idmap,dc=pamplona,dc=local
adding new entry: uid=root,ou=Users,dc=pamplona,dc=local
adding new entry: uid=nobody,ou=Users,dc=pamplona,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=pamplona,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=pamplona,dc=local
entry sambaDomainName=PAMPLONA,dc=pamplona,dc=local already exist. Updating it...

Please provide a password for the domain root: 
Changing UNIX and samba passwords for root
New password: 
Retype new password: 

Creamos el usuario y grupo sysadmin

# smbldap-groupadd -a sysadmin
[root@pdc01 ~]# smbldap-useradd -am -g sysadmin sysadmin
[root@pdc01 ~]# smbldap-passwd sysadmin
Changing UNIX and samba passwords for sysadmin
New password: 
Retype new password: 
[root@pdc01 ~]# su - sysadmin
[sysadmin@pdc01 ~]$ exit
logout

Creamos un usuario de prueba
# smbldap-useradd -am fruiz
[root@pdc01 ~]# smbldap-groupmod -m fruiz "Domain Users"
adding user fruiz to group Domain Users
[root@pdc01 ~]# smbldap-passwd fruiz
Changing UNIX and samba passwords for fruiz
New password: 
Retype new password: 

Deshabilitamos el selinux
# vi /etc/sysconfig/selinux

SELINUX=disabled

En el firewall podemos habilitar los puertos correspondientes(TCP: 139,389,445 y UDP: 137,138 ), para el ejemplo lo deshabilitamos ...

# /etc/init.d/iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]

Listo, ahora podemos empezar a unir las maquinas al dominio pamplona. Debemos tener en cuenta lo siguiente para los Windows 7

Modificar los siguientes registros:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
LanmanWorkstation -> parameters

DomainCompatibilityMode : 1
DNSNameResolutionRequired : 0

Netlogon -> parameters

RequireSignOrSeal 0
RequireStrongKey 1
SealSecureChannel 1
SignSecureChannel 1


Tcpip -> parameters

NameServer : pamplona
NV Domain : pamplona

En la configuracion de red la PC seccion TCP/IP nos dirigimos a opciones avanzadas, en la pestaña WINS le agregamos la IP de nuestro PDC (172.16.0.24)
Ahora si, ya podemos unir al dominio las PCs con Windows 7.
















Luego de ingresar al dominio pedira reinicar la PC.

Para la administracion una buena herramienta es la siguiente: LDPAdmin lo pueden bajar de aqui

Luego de bajar ejecutar el programa y crear una nueva conexion































Este es una primera guia del PDC...



Fuentes:
http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=1

viernes, 27 de julio de 2012

CDR de Asterisk a MS SQL via ODBC

Este es un pequeño resumen para instalar y configurar el driver en Linux para poder registrar las llamadas de Asterisk en la base de datos de un MS SQL


Primero vamos a instalar el los drivers para la conexion al SQL de Windows

# yum install freetds unixODBC -y

Luego de instalar el driver freetds lo agregamos a unixODBC, para ello editamos el archivo odbcinst.ini de la siguiente manera

# vim /etc/odbcinst.ini
...
[FreeTDS]
Description    = FreeTDS ODBC driver for MSSQL
Driver         = /usr/lib/libtdsodbc.so.0
Setup          = /usr/lib/libtdsS.so.1
FileUsage      = 1
...

Luego de esto configuramos el ODBC para la conexion del Asterisk a la base datos del SQL

# vim /etc/odbc.ini
...
[ODBC Data Sources]
MSSQL = MSSQL Log-Server for Asterisk


[MSSQL-asterisk2]
description         = Asterisk ODBC for MSSQL
driver              = FreeTDS
server              = 172.16.0.42
port                = 1433
database            = Central
tds_version         = 8.0
language            = us_english
...


Donde:
driver -> Es el driver freetds que se configuro en odbcinst.ini
server -> Es la direccion IP del servidor SQL
database -> La base de datos donde se almacenara los registros de las llamadas

Hacemos una prueba de conexion, para ello ejecuatmos lo siguiente:

# isql -v MSSQL-asterisk2 sa 1234567
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+


Datos:
sa -> usuario administrador de la base de datos
1234567 -> clave de sa

Listo, ahora en el archivo cdr_odbc.conf     del Asterisk configuramos de la siguiente manera

# vim cdr_odbc.conf
...
[global]
dsn=MSSQL-asterisk2
username=sa
password=1234567
loguniqueid=yes
dispositionstring=yes
table=cdr              ;"cdr" is default table name
usegmtime=no
...


Ahora en el servidor SQL debemos crear la base de datos Central con la tabla cdr, la estructura de la tabla es la siguiente

CREATE TABLE cdr (
                        [calldate]      [datetime]              NOT NULL ,
                        [clid]          [varchar] (80)          NOT NULL ,
                        [src]           [varchar] (80)          NOT NULL ,
                        [dst]           [varchar] (80)          NOT NULL ,
                        [dcontext]      [varchar] (80)          NOT NULL ,
                        [channel]       [varchar] (80)          NOT NULL ,
                        [dstchannel]    [varchar] (80)          NOT NULL ,
                        [lastapp]       [varchar] (80)          NOT NULL ,
                        [lastdata]      [varchar] (80)          NOT NULL ,
                        [duration]      [int]                   NOT NULL ,
                        [billsec]       [int]                   NOT NULL ,
                        [disposition]   [varchar] (45)          NOT NULL ,
                        [amaflags]      [int]                   NOT NULL ,
                        [accountcode]   [varchar] (20)          NOT NULL ,
                        [uniqueid]      [varchar] (150)         NOT NULL ,
                        [userfield]     [varchar] (255)         NOT NULL
                )

Listo con esto ya tendremos registrados en el SQL las llamadas de nuestra central Asterisk

viernes, 13 de julio de 2012

Lightsquid sobre SuSE

Lightsquid es una herramienta que analiza los logs del Squid y nos muestra un reporte gráfico a través de una interfaz web.

En este caso vamos a instalar dicha herramienta en SLES 11.

Descargamos el archivo del siguiente enlace:
http://downloads.sourceforge.net/project/lightsquid/lightsquid/1.8/lightsquid-1.8.tgz

Luego de descargarlo hacemos lo siguiente:

# tar xzf lightsquid-1.8.tgz
# mv lightsquid-1.8 /srv/www/htdocs/lightsquid
# cd /srv/www/htdocs/lightsquid/

Cambiamos las rutas en el archivo lightsquid.cfg

# vim lightsquid.cfg
...

$cfgpath             ="/srv/www/htdocs/lightsquid";
$tplpath             ="/srv/www/htdocs/lightsquid/tpl";
$langpath            ="/srv/www/htdocs/lightsquid/lang";
$reportpath          ="/srv/www/htdocs/lightsquid/report";
$logpath             ="/var/log/squid";
$ip2namepath         ="/srv/www/htdocs/lightsquid/ip2name";
...

Podemos revisar si nos falta algún modulo de perl ejecutando lo siguiente:

# perl /srv/www/htdocs/lightsquid/check-setup.pl

Ahora editamos el archivo default-server.conf, para esto se sobrentiendo que tenemos instalado el apache2

# vim /etc/apache2/default-server.conf
...
<Directory "/srv/www/htdocs/lightsquid">
        AddHandler cgi-script .cgi
        Options None
        AllowOverride all
         Order allow,deny
        Allow from all
</Directory>
...

Listo, ahora reiniciamos el servicio del apache2

# rcapache2 restart

Ejecutamos 

#  /usr/bin/perl /srv/www/htdocs/lightsquid/lightparser.pl

Dejamos un cron para que se ejecute periodicamente ..

# crontab -e

*/50 * * * * /usr/bin/perl /srv/www/htdocs/lightsquid/lightparser.pl

Reiniciamos el servicio del cron

# rccron restart

Ahora podemos acceder via web y vere los reportes del squid ...

http://IPdelservidor/lightsquid/

martes, 5 de junio de 2012

Asterisk VoiceMail Smarthost Gmail

Los pasos descritos fueron realizados debido a la necesidad de un amigo de querer enviar los buzones de voz a varias cuentas por cada anexo .... hasta donde recuerdo no se puede poner directamente en el voicemail.conf  si se pudiera imagino que los que lean esto me lo harán saber .. en fin ...

En el archivo voicemail.conf dejo lo siguiente:

502 => 502,,doscuentas@dominiolocal,,attach=yes|saycid=no|envelope=no|delete=no

En este caso mi pata tenia Debian y Exim para los envíos de correo ... haciendo unos ajustes a su configuración deje lo siguiente:

#vim /etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='dominiolocal'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

No explicare el proceso de configuracion del Gmail ...eso no me pidio mi pata jeje ...

Dentro del archivo /etc/aliases hacemos lo siguiente:

# vim /etc/aliases
doscuentas: cuenta1@dominiodestino.com,cuenta2@dominiodestino.com

Ejecutamos

#newaliases

Listo, con esto ya tenemos listo lo solicitado ..!!




Plugin DAM Google Ghrome

Un tiempo instale el DAM en mi PC, y mi navegador predeterminado es Google Ghrome, cada ves que quería realizar una descarga lo hacia mediante el DAM y cuando desinstale dicho programa igual seguía buscando el DAM ....

Para esto en el mismo navegador puse:

chrome://plugins/

Ahi deshabilite el DAM ...

sábado, 2 de junio de 2012

Linksys SPA3102 con Asterisk

Debido a la necesidad de poner una linea analógica a la central Asterisk vamos a configurar una troncal SIP entre un SPA3102 y la Central, tal ves no sea la mejor forma de hacerlo pero hasta el momento me funciona bien.

Para esto ya tenemos instalado Asterisk con FreePBX.

Datos:

  • IP Asterisk : 192.168.1.5
  • IP SPA3102 : 192.168.1.240
  • Numero de linea analógica 485107 
En el FreePBX nos dirigimos a la sección Trunk, Add SIP Trunk y llenamos los siguientes datos ...






















Ahora accederemos al SPA3102 para esto ya tengo configurado con la IP 192.168.1.240, ambos (Asterisk y ATA) estan en la misma red ... pondré una secuencia de imágenes que se tendrá en cuenta para la configuración ...















El numero 485107 es el que enviara al Asterisk para poder enrutar la llamada ..





















Con esto ya tenemos listo la troncal, ahora para las llamadas entrantes por ejemplo ... dentro de FreePBX configuramos en Inbound Routes ... del siguiente modo









Lo demás se entiende que uno ya lo deriva al IVR o Anexo ...etc .. Para el caso de llamadas salientes, basta con poner el dialplan y seleccionar la troncal creada. Espero no haber omitido algún paso ...

martes, 29 de mayo de 2012

Servidor FTP con VSFTPD sobre CentOS

En esta pequeña guía se mostrara la instalación de un servidor FTP con usuarios virtuales.

La plataforma es CentOS 6.2

Datos:
IP del FTP : 172.16.0.84

El proceso sera sencillo, comenzamos instalando el programa

# yum install vsftpd -y

Editamos el archivo /etc/vsftpd/vsftpd.conf

# vi /etc/vsftpd/vsftpd.conf

background=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd-virtual
xferlog_file=/var/log/vsftpd.log
user_sub_token=$USER
local_root=/var/www/html/$USER
anon_root=/var/www/ftp
chroot_local_user=YES
hide_ids=YES
listen=YES
listen_port=21
ftp_data_port=20
pasv_min_port=65500
pasv_max_port=65535
connect_from_port_20=YES
local_umask=022
max_clients=20
max_per_ip=10
secure_chroot_dir=/usr/share/empty


Guardamos los cambios y listo ahora falta la creación de usuarios ....

Elabore un pequeño script para la creación de los usuarios ... lo llamaremos ftpadduser

# vi /usr/local/sbin/ftpadduser


#!/bin/bash
if [ -z "$1" ]; then
        echo "Ingrese el usuario ..."
        exit 1
fi
if [ -z "$2" ]; then
        echo "Ingrese la clave ..."
        exit 1
fi
echo "$1" >> /opt/virtual-users.txt
echo "$2" >> /opt/virtual-users.txt
db_load -T -t hash -f /opt/virtual-users.txt /etc/vsftpd/virtual-users.db
mkdir /var/www/html/$1
chown -R ftp:ftp /var/www/html/$1

Listo ejecutando ese script se podra crear las cuentas FTP

Ahora debemos ver el selinux, podriamos deshabilitarlo pero por temas de seguridad lo conservamos(Enforcing) y ejecutamos lo siguiente

setsebool allow_ftpd_full_access on
setsebool ftp_home_dir on

Ahora el servidor FTP ya esta operativo ... En nuestro Firewall(iptables) haremos el respectivo NAT

Dentro de nuestro script de iptables, cargaremos algunos módulos

#Definiendo variables
IPT="/sbin/iptables"
EXT_IP="IP Externa"
FTP="172.16.0.84"

# Cargando módulos 
...
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
...

#Realizando el NAT

$IPT -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to-destination $FTP
$IPT -A FORWARD -d $FTP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $FTP -p tcp --sport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Listo ... con esto ya debería estar operativo al 100% ... se entiende que falta el enmascaramiento en el script del firewall ...
 


Servidor de correo Zimbra sobre Centos 6

En mi trabajo por temas de licencia me pidieron instalar un servidor de correo bajo Linux, por temas de facilidad de administracion se escogio la version OpenSource de Zimbra.

Para esto en mi red, ya se contaba con un Active Directory y servidor DNS en el mismo equipo, escogi Cent0S 6.2 de 64 bits como plataforma para la instalacion de Zimbra, la version de Zimbra que use es 7.2

Datos:

  • IP del AD : 172.16.0.33
  • Dominio: mydominio.com
  • IP de Zimbra: 172.16.0.55
  • Hostname de Zimbra: mail.mydominio.com

Pasos iniciales:
  1. En el servidor DNS se creo el registro MX apuntando a mail.mydominio.com
  2. En el archivo hosts del Linux se puso lo siguiente:
cat /etc/hosts

127.0.0.1 localhost.localdomain localhost
172.16.0.55 mail.mydominio.com mail

Desactivamos el selinux

vi /etc/sysconfig/selinux
SELINUX=disabled

Comentamos la siguiente seccion dentro del archivo sudoers

vi /etc/sudoers
#Defaults    requiretty

Instalacion de dependencias:

yum install -y perl bind-utils sysstat nc file sudo

Luego de descomprimir el archivo tar.gz, ingresamos al directorio y ejecutamos lo siguiente:

[root@mail zcs-7.2.0_GA_2669.RHEL6_64.20120410002025]# ./install.sh --platform-override

De aqui solo queda responder las preguntas ...

Le damos Y a modificar la plataforma ...

En una seccion me sale la siguiente pregunta
Change domain name?[yes]

Esto debido a que detecta como dominio lo siguiente: mail.mydominio.com

Le respondo que si (Y) y pongo mi dominio

Change domain name?[yes] Y
mydominio.com

Listo .. el resto es terminar de responder algunas preguntas que hara .. de hecho habra que ponerle una clave para el acceso del admin ...

Luego de esto accedo:

https://mail.mydominio.com:7071/zimbraAdmin/


Cuando voy a la seccion de Mail Queues ... me sale algunos mensajes de error, las cuales las he resuelto gracias a este blog http://blog.spanger.org/?p=501

Por ahora estoy creando los usuarios tanto en el servidor de correo como en el Active Directory para la validacion. Para esto sigo los siguientes pasos:
  • Seleccionar el dominio, debajo de Domains
  • Ir a la seccion de Autenticacion
  • Configure Autenticacion
  • Escoger external active directory
  • Pongo la IP 172.16.0.33
  • En username pongo administrator@mydominio.com, ingreso la clave y ya esta ....
Luego de esto hago lo siguiente:
  • Server Settings 
  • MTA  
  • Dentro de MTA Trusted Network, dejo lo siguiente: 127.0.0.1/32 172.16.0.55/32
Por ahora lo he dejado asi ... ya estare haciendo mas ajustes y mas cosas que las ire publicando ....




domingo, 29 de abril de 2012

Proxy Squid con autenticacion en Active Directory


Configuraremos un servidor Proxy con Squid sobre OpenSUSE 11.0, las politicas de acceso hacia internet sera por grupos de usuarios cada grupo con diferentes privilegios, los usuarios se autenticaran contra un Windows Server 2003 con Active Directory.
Datos usados:
Dominio: angeles.com
Controlador de dominio: dc.angeles.com
el controlador de dominio (dc.angeles.com) tiene la ip 192.168.1.2
el proxy tiene la ip 192.168.1.9
Instalacion de paquetes necesarios:
yast2 -i samba samba-winbind squid
Con esto tenemos las herramientas necesarias, ahora empezamos a configurar
Archivo krb5.conf ubicado en /etc/krb5.conf
[libdefaults]
default_realm = ANGELES.COM
clockskew = 300
[realms]
ANGELES.COM = {
kdc = 192.168.1.2
default_domain = angeles.com
admin_server = 192.168.1.2
}
angeles.com = {
kdc = 192.168.1.2
default_domain = angeles.com
admin_server = 192.168.1.2
}
angeles = {
kdc = 192.168.1.2
default_domain = angeles
admin_server = 192.168.1.2
}
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.angeles = angeles
.angeles.com = ANGELES.COM
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}
Archivo nsswitch.conf ubicado en /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
hosts: files dns
networks: files dns
services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files nis
publickey: files
bootparams: files
automount: files nis
aliases: files
Archivo ntp.conf ubicado en /etc/ntp.conf
driftfile /var/lib/ntp/drift/ntp.drift
logfile /var/log/ntp
server dc.angeles.com
#Nota: se entendera que en el dc.angeles.con esta corriendo el servicio ntp
Archivo smb.conf ubicado en /etc/samba/smb.conf
[global]
workgroup = angeles
security = ads
password server = *
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users =yes
winbind enum groups = yes
winbind use default domain = yes
realm = ANGELES.COM
netbios name = proxy
server string = proxy
#Nota: proxy es el hostname del servidor Proxy
iniciamos los servicios smb y winbind
proxy:~#rcntp start
proxy:~#rcsmb start
proxy:~#rcwinbind start
Ahora si todo ha salido bien, es decir todos los servicios smb y winbind estan corriedo, uniremos la maquina al controlador de dominio.  Iniciar los servicios en ese orden.
proxy:~#net ads join -S dc.angeles.com -U Administrador
password:
Ingresamos la constraseña y listo, ahora vamos a comprobar, para ello ejecutamos
proxy:~#wbinfo -t
Para listar a los usuarios y grupos del dominio
proxy:~#wbinfo -u
proxy:~#wbinfo -g
Si nos ha listado los usuarios y grupos, quiere decir que todo esta correcto
Ahora editamos el archivo squid.conf ubicado en /etc/squid/squid.conf
#Configuraremos unas reglas simples, crearemos 3 grupos, cada grupo con privilegios diferentes, el primero tendra acceso total el segundo tendra algunas restricciones como el msn y el tercer grupo solo podra acceder a ciertas paginas, para el ejemplo le daremos acceso solo a www.sunat.gob.pe y www.mtc.gob.pe
http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_dir ufs /var/cache/squid 500 16 256
cache_access_log /var/log/squid/access.log
cache_mem 64 MB
cache_swap_low 70
cache_swap_high 85
# parametros que nos permitiran autentcar contra el Active Directory
auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param basic program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
auth_param basic children 15
auth_param basic realm angeles.com
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#—–
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl rednueva src 172.16.0.0/16
acl SSL_ports port 81 443 563 8080 8040
acl Safe_ports port 80 81 443 8080 # http
acl Safe_ports port 20 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl msn1 url_regex -i gateway.dll
acl msn2 dstdomain messenger.msn.com gateway.messenger.hotmail.com
acl msn3 req_mime_type ^application/x-msn-messenger$
acl grupo1 proxy_auth “/etc/squid/reglas/grupo1.txt”
acl grupo2 proxy_auth “/etc/squid/reglas/grupo2.txt”
acl grupo3 proxy_auth “/etc/squid/reglas/grupo3.txt”
acl domgrupo3 dstdomain .sunat.gob.pe .mtc.gob.pe
no_cache deny QUERY
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow grupo1
http_access deny msn1 !grupo1
http_access deny msn2 !grupo1
http_access deny msn3 !grupo1
http_access allow grupo2
http_access allow grupo3 domgrupo3
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname proxy.angeles.com
coredump_dir /var/cache/squid
Inciamos el servicio y listo
proxy:~#rcsquid start
Nota: en el archivo winbindd_privileged el usuario propietario debera ser squid, para ello hacemos lo siguiente, ojo no hacerlo de manera recursiva
proxy:~#chown squid winbindd_privileged
Ahora solo nos queda probar desde una maquina guindos que este en el dominio, el usuario podra acceder a internet de acuerdo a los privilegios del grupo en que se encuentra. cuando trate de acceder a internet ya no le pedira que se autentique, el proxy usara los datos de la sesion.
Nota1: Tener cuidado si se copia y pega la parte de “–helper-protocol=squid-2.5-ntlmssp” en el putty directo, sale con un punto adelante  “.helper-protocol=squid-2.5-ntlmssp” en lugar de dos guiones – -
Nota2: tener cuidado con los DNS’s
se puede probar haciendole un ping a dc.angeles.com
proxy:~#ping dc.angeles.com
ping dc.angeles.com (192.168.1.2) …
Deberia resolver a la ip del controlador de dominio