jueves, 4 de marzo de 2010

Recuperar Clave de Acceso a MySQL

Son solamente unos pasos muy sencillos

- Detener el servicio de MySQL
# /etc/rc.d/mysql stop

- Iniciar el servicio sin lees las tablas de privilegios; de una forma segura!
# /usr/bin/mysqld_safe --skip-grant-tables &

- Conectarse al MySQL
# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

- Cambiarse a la tabla de configuracion del mysql
mysql> use mysql;

- Modificar la tabla de usuarios de mysql para cambiar la clave.
mysql> update user set password=PASSWORD("NUEVA-CLAVE-ACCESO") where User='root';

- Releer los privilegios
mysql> flush privileges;
mysql> quit;

- Detener el servicio para volver a iniciarlo luego
# /etc/rc.d/mysql stop

- Iniciar el Servicio de forma normal.
#
/etc/rc.d/mysql start

luego de esto ya nos podemos conectar al mysql con la nueva clave!

vaya, esto resuelve un tremendo problema!

domingo, 26 de octubre de 2008

Sistema de correo MultiPOP con Postfix+FetchMail

para que nuestro postfix funcione como servidor de cuentas multipop, tenemos que decirle que todo lo que llegue hasta el para un dominio definido, lo ponga en una cuenta local, destinada a almacenar la mensajería de este dominio, o sea, decirle que todo lo que venga para @ejemplo.com lo guarde en buzon@dominio.org, para decirle esto al postfix se deben usar los mapas para usuario virtuales, con la directiva

virtual_alias_maps =

la cual obtiene como valor una tabla con el listado de dominios o usuarios virtuales de los cuales el postfix se encargara de procesarle los correos; podria quedar asi

virtual_alias_maps = hash:/usr/local/etc/postfix/virtual_maps

donde virtual_maps, puede contener esto

@dominio.org @dominio.org
@ejemplo.com ccejemplo
manager@dominio.org juan
manager@ejemplo.com juan


la segunda linea le esta indicando al postfix que todos los correos que lleguen con destino al dominio @ejemplo.com los guarde en el buzon correspondiente al usuario ccejemplo.

la 3ra y 4ta linea le estan indicando que los correos con destino al usuario manager en cualquiera de los dos dominios, se lo ponga en el buzon al usuario juan, con esta tabla podemos, para decirlo de alguna manera, "enrutar" los correos para ponerlos en el destino que se nos antoje

NOTA: esto no sobreescribe para nada los encabezados de los correos, ni nada por el estilo, esto solo implica el lugar en donde se van a guaradar los correos en nuestro servidor.

a esta tabla (virtual_maps), cada vez que se le haga una modificacion, hay que crear la base de datos correspondiente con el utilitario `postmap`

# postmap virtual_maps

con esto, ya nuestro postfix esta configurado para que brinde el servicio de multipop para el dominio ejemplo.com

Ahora vamos a configurar el cliente multipop, para que descargue los correos y los distribuya en los buzones de los usuarios destinatarios.

en el lado del cliente para el servicio de multipop, necesitamos fundamentalmente dos servicios.

1.- FetchMail [encargado de revisar el buzón y descargar los correos del servidor]
2.- Postfix [sera quien distribuye los correos en los buzones de usuarios]

Como funciona esta mezcla; el fetchmail es un cliente POP que recolecta los correos de un usuario especifico de un servidor, y al recibirlos, hace con ellos SMTP a un MTA [postfix] que existe local, el cual se encargara de colocar en los buzones los correos de los usuarios.

entonces, para terminar con el trabajo, vamos a comenzar por configurar el fetchmail, en nuestro caso como estamos hablando de la configuración de un multipop, vamos a crear un archivo general para la descarga de correo de los usuarios.

# cat /etc/fetchmailrc
set daemon 60
poll pop.dominio.org
proto pop3
via dominio.org
no dns
localdomains ejemplo.com
user "ccejemplo"
pass "KlaV3.#j3mpl0"
is *


set daemon -> es el valor en segundo de la frecuencia con la cual se va a chequear el buzón en el servidor.
poll -> servidor del cual se va a descargar el correo
localdomains -> dominio local del cual se van a descargar los correos en el servidor
user -> usuario que se autenticara en el buzón
pass -> clave para autenticación

con esta configuración ya el fetchmail se ejecutara y recogerá los correos del servidor, y cuando encuentre alguno, se lo enviara al postfix en este servidor, local, que se configura de la forma clásica, no implica ninguna configuracion especifica para este escenario.

espero sirva de ayuda ;)

jueves, 17 de julio de 2008

Configurando WCCPv2 en un cisco 3725 con squid-2.7.STABLE3 corriendo sobre FreeBSD-6.3

Este how-to describe los pasos necesarios para la configuración de WCCP versión 2.0 con un router CISCO 3725 en combinación con un Squid-2.7.STABLE3 ejecutándose sobre un FreeBSD-6.3.

El WCCP (Web Cache Control Protocol) versión 2 de Cisco es usado para el envío de peticiones Web desde los clientes a uno o mas servidores proxy. La función del WCCP es que nos permite redireccionar el trafico de la web hacia nuestros servidores proxies, en los que prestaremos de servicios de cache, filtros de contenidos, políticas de consumo de ancho de banda, u otros servicios, lo cual nos ayudaría a economizar nuestros enlaces.

Con WCCP, podemos crear un "cluster de cache" para lograr un mejor balance de carga. Por ejemplo, en el caso de tener dos servidores proxies, si uno de los dos falla, por alguna razón, el WCCP redireccionara todo el trafico hacia el segundo, evitando así interrupciones en el servicio. En el caso extremo que los dos servidores de cache, fallen, el WCCP determinara los proxies como "muertos" y enrrutara directamente todas las peticiones a través de sus interfaces.
NOTA: Solo la versión CISCO IOS Release 12.1 o anteriores permiten usar las versiones 1.0 (WCCPv1) o la 2.0 (WCCPv2) de WCCP.


Como funciona WCCP y navegación transparente con Squid?

- Un cliente hace una petición hacia la web, esta va directo al router.
- El router intercepta la peticion.
- El router redirecciona la petición a una nueva ubicación dentro de un marco de enrrutamiento de encapsulamiento genérico (generic routing encapsulation GRE) para prevenir cualquier modificación en el paquete original.
- El túnel (GRE) se establece entre el servidor proxy y el router cisco.
- Todas las peticiones redireccionadas desde el router son encapsuladas bajo el túnel hacia la cache en el FreeBSD.
- El FreeBSD desencapsula el trafico en el GRE y redirecciona los paquetes de WCCP hacia el Squid.
- El redireccionamiento se logra transparentemente usando el Reenvío de Paquetes (IP Forwarding) y el cortafuegos IPFW.
- El squid separa la petición y entonces la reenvía, así sea a un servidor cache padre o directamente a al destino.
- La respuesta a la petición es enviada a través del router al cliente que la origino.

Ahora para armar todas las piezas para el funcionamiento del WCCP, en conjunto con el Squid, se seguirán los siguientes pasos:

- inicialmente necesitamos incluir las fuentes de nuestro kernel en el sistema.

# sysintall
Entrar en la Opción
Configure
Distributions
src
sys
Chose Media
CD/DVD

deje que termine el proceso de inclusión de las fuentes de lo relacionado a "sys", cuando este proceso termine entonces haremos lo siguiente

1.- lo primero sera configurar y recompilar el kernel, para adicionarle soporte para el ip_forward, ipfw.

# cd /usr/src/sys/i386/conf/

hacer una copia del archivo original para modificarlo y ponerlo a nuestro gusto
# cp GENERIC SQUID_WCCP

# nano SQUID_WCCP

2.- con el editor preferido editar el archivo que creamos y adicionarle las siguientes lineas

options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE #enable logging to syslogd(8)
options IPFIREWALL_FORWARD #enable transparent proxy support
options IPFIREWALL_VERBOSE_LIMIT=500 #limit verbosity
options IPSTEALTH #support for stealth forwarding
options DUMMYNET
options NETGRAPH
options DEVICE_POLLING
options HZ=1000

options SHMSEG=128
options SHMMNI=256
options SHMMAX=50331648 # max shared memory segment size (bytes)
options SHMALL=16384 # max amount of shared memory (pages)
options MSGMNB=16384 # max # of bytes in a queue
options MSGMNI=48 # number of message queue identifiers
options MSGSEG=768 # number of message segments
options MSGSSZ=64 # size of a message segment
options MSGTQL=4096 # max messages in system

3.- Configurar y compilar el nuevo kernel
(a.) config SQUID_WCCP
(b.) cd ../compile/SQUID_WCCP/
(c.) make cleandepend
(d.) make depend
(e.) make
(f.) make install
(g.) reboot
Si no hubo errores en nada, entonces todo salio bien, reinicie el servidor con su nuevo kernel.
4.- crear en el FreeBSD el túnel hacia el router.
ifconfig gre0 create
ifconfig gre0 IP.DE.SQUID.BOX 10.20.30.40 netmask 255.255.255.255 link2 tunnel IP.DE.SQUID.BOX IP.DE.CISCO.ROUTER up

4.) compilar squid y configurarlo para que trabaje con WCCP.

(a.) descargar los fuentes del squid desde el sitio oficial
# cd /usr/local/src/
# wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE3.tar.gz
(b.) descompactar el paquete
# tar -zxf squid-2.7.STABLE3.tar.gz
(c.) configurar y compilar
# ./configure --prefix='/usr/local' --sbindir='/usr/local/sbin' --bindir='/usr/local/sbin' --datadir='/usr/local/etc/squid' --sysconfdir='/usr/local/etc/squid' --libexecdir='/usr/local/libexec/squid' --localstatedir='/usr/local/squid' --enable-removal-policies='lru heap' --enable-basic-auth-helpers='NCSA PAM SMB' --enable-auth='basic ntlm digest' --enable-digest-auth-helpers='password' --enable-external-acl-helpers='ip_user session unix_group wbinfo_group' --enable-ntlm-auth-helpers='SMB' --enable-storeio='ufs diskd null' --disable-ident-lookups --enable-kqueue --enable-default-err-language='Spanish' --enable-snmp --enable-largefile --enable-ipfilter --enable-wccpv2 --enable-icmp --enable-arp-acl --enable-delay-pools --disable-wccp
# make all
# make install
(d.) editar el archivo de configuración del squid y poner estas lineas
# nano /usr/local/etc/squid/squid.conf

wccp2_router IP.DE.CISCO.ROUTER
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0

(4.) Crear las reglas del firewall para redireccionar las peticiones web que llegan vía GRE hacia el puerto de trabajo del squid (3128).
Vamos crear un archivo llamado rc.firewall para salvar las reglas del IPFW. Se puede usar el script siguiente, ajustando sus direcciones IP.

#!/bin/sh
##### Inicio de rc.firewall ######
NET_IF="rl0"
IPFW="/sbin/ipfw -q"
#IP del Proxy
IF_ADDR="192.168.1.2"
ROUTER_IP="192.168.1.1"
PROXY_NET="192.168.1.0/24"
PROXY_PARENT="192.168.0.1"
ALL_NET="192.168.2.0/24"
CLIENT_NET="192.168.3.0/24"
ADMIN_NET="192.168.1.10"
SSH_PORT="4554"
LOCALHOST="127.0.0.1"
$IPFW -f flush
$IPFW add allow all from any to any via lo0
#$IPFW add allow all from any to any
$IPFW add allow gre from any to any frag
#$IPFW add deny ip from any to any frag
$IPFW add fwd 127.0.0.1,3128 tcp from any to any 80 via gre0 in
$IPFW add fwd 127.0.0.1,3128 ip from any to any via gre0 in
$IPFW add fwd 127.0.0.1,3128 tcp from any to any 80 in
$IPFW add fwd 127.0.0.1,3128 tcp from any to any http in via gre0
$IPFW add allow tcp from any 80 to $PROXY_NET in
$IPFW add allow all from $ROUTER_IP to $IF_ADDR
$IPFW add allow all from $IF_ADDR to $ROUTER_IP
$IPFW add allow gre from $ROUTER_IP to $IF_ADDR
$IPFW add allow all from $IF_ADDR to any
#Allow local DNS caching
$IPFW add allow udp from $ALL_NET to any 53
$IPFW add allow udp from any 53 to $IF_ADDR
$IPFW add allow tcp from any 53 to $IF_ADDR
$IPFW add allow all from any to any out via $NET_IF

#Permitir Consultas DNS
$IPFW add allow udp from $ALL_NET 53 to $IF_ADDR
#For Proxy access
$IPFW add allow tcp from $ALL_NET to any 3128 in via $NET_IF

##### Permitir Conexiones Establecidas
$IPFW add allow tcp from any to any in via $NET_IF established
# Para consultas ICP
$IPFW add allow UDP from $PROXY_PARENT to $PROXY_NET 3130
$IPFW add allow UDP from $PROXY_NET to $PROXY_PARENT 3130
####### Para SSH
$IPFW add allow tcp from $ADMIN_NET to $IF_ADDR $SSH_PORT
#Para SNMPWALK desde el administrador
$IPFW add allow udp from $ADMIN_NET to me 3001
$IPFW add allow udp from $ADMIN_NET to me 161
$IPFW add allow udp from $ADMIN_NET to me 161
$IPFW add allow udp from $LOCALHOST to me 3001
$IPFW add allow udp from $LOCALHOST to me 161
###########
$IPFW add allow ICMP from $ALL_NET to any
#################################################
# Permitir TODO desde el administrador
$IPFW add allow all from $ADMIN_NET to me
$IPFW add allow all from me to $ADMIN_NET
$IPFW add 65533 deny log all from any to any
############# End of rc.firewall ###############

5.- Habilitar WCCP en el router Cisco
Global Configuration
Router (config)# ip wccp version 2
Router (config)# ip wccp web-cache redirect-list 160
Access-List 160
permit ip 192.168.0.0 0.0.0.255 any
Router (config)# interface fastethernet 0/0
Router(config-if)# ip wccp web-cache redirect in
Router# write
Final de la configuracion de WCCP para router Cisco

6.- Habilitar el ip_forwarding en systcl.conf

agregar estas lineas en /etc/sysctl.conf

net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=1

7.- Reiniciar el squid y recargar las reglas del IPFW. Si no hay ningun error, entonces ya tiene trabajando su servidor proxy resondiendo peticiones a traves del GRE y usando el WCCP de su router Cisco

Happy Proxying with Squid + FreeBSD + Cisco WCCP !!!