P0L0's Blog Opensource Projects and IT experiences

18Apr/070

Mysql Replication

Aqui voy a explicar como poder montar un sistema de maestro-esclavo(s) en mysql. La idea es que hay un servidor principal, que es en el que se modifican los datos y los esclavos solo estan ahi para tenerlo todo duplicado, esto es perfecto para hacer copias de seguridad. Si la idea es tener transferencia de datos bidireccional, hay que montar un "MySQL Cluster"

La replicacion funciona por medio de los binary log de mysql, asi que lo primero sera configurar correctamente el servidor maestro. Asi que añadimos estas opciones en el fichero my.cnf si aun no estan.

[mysql]
#Activamos el log binario
log-bin=mysql-bin
#Establecemos un id para el servidor, el maestro SIEMPRE sera 1
server_id=1
#Esto ayuda por si el master tiene un cuelgue y no haya problemas en la replicacion al volver a arrancarlo
sync_binlog=1
#Si trabajamos con INNODB, hay que activar esto
innodb_flush_log_at_trx_commit=1

IMPORTANTE: Hay que comprobar que la linea skip-networking no este puesta en el master, ya que sino no abrira el puerto

Tagged as: , No Comments
23Jan/070

PHP5 eAccelerator

Hacia tiempo que queria poner esto, pero nunca me he puesto. eAccelerator es un modulo de php que compila y carga en memoria las aplicaciones php, y con esto consigue que haya una mejora de respuesta y descarga bastante el servidor. Aqui os explico como instalar eAccelerator con PHP5 en una debian.

Lo primero que hay que hacer es descargarse la ultima version de eAccelerator, tambien necesitaremos en el server las utilidades de desarrollo de php

apt-get install php5-dev

La instalacion es realmente muy sencilla, solo tenemos que descomprimir, compiler, instalar y configurar.

  • Descomprimimos
tar xvfj eaccelerator-0.9.5.tar.bz2
  • Compilamos
cd eaccelerator-0.9.5
phpize
./configure
make
  • Instalamos (nos pondra el modulo en la carpeta de modulos de php)

62d325ab54ae209efd61e06c4a916a87013

Tagged as: , , No Comments
11Dec/060

hacker::quiz

Ya ha acabado la bkp 7ª edicion, y para quien le interese aqui os cuelgo aqui el codigo del hacker::quiz de este año. Realmente es muy sencillo, pero aun asi os colgare las soluciones.

Descargar hacker::quiz

  • Level1
  • Aparentemente no parece que hay ningun error de programacion, pero si pruebas de buscar los .bak, *~... encuentras el fichero login.php~ y en el aparece la contraseña en md5. Con un cracker de md5 como por ejemplo lcrack. En pocos minutos saldra la contraseña del nivel.
  • Level2
  • Aqui hay que fijarse que en el codigo hay un "src=javascript" y que el codigo bueno esta en el fichero javascript. Aqui se una un algoritmo de encriptacion super sencillo, que se puede desencriptar facilmente cambiando la funcion generatePass para sacar la contraseña.
Tagged as: , No Comments
5Dec/060

MRTG Total

MRTG es una utilidad para monitorizar y generar graficos por medio de snmp. Para los que tengan como yo limite de consumo de trafico mensual, va muy bien tener un contador del total de consumo por dias y por meses.

Lo primero que tenemos que hacer es instalar los paquetes necesarios:

apt-get install mrtg libgd-graph-perl libgd-graph3d-perl snmpd

Una vez instalado, configuramos MRTG (/etc/mrtg.cfg):

#################################################
# Multi Router Traffic Grapher -- Sample Configuration File
#################################################
# This file is for use with mrtg-2.5.4c
 
# Global configuration
WorkDir: /var/www/mrtg
 
#General title
Title[^]: Traffic Analysis for Atlantis
 
#We dont need Ipv6
EnableIPV6: no
#Count in bits, grow from right to left, log unknow data as zero
Options[_]: bits,growright,unknaszero
 
#Target to monitor
Target[atlantis]: 2:atlantis@localhost
 
#Page title
Title[atlantis]: Traffic Analysis for Atlantis
PageTop[atlantis]: <H1>Our 100mbps link to the outside world</H1>
#100mb
MaxBytes[atlantis]: 12500000
WithPeak[atlantis]: ymw
AbsMax[atlantis]: 1000000000000
 
#MRTG Total config (Title, Unit = M(Bytes))
#-#Total[atlantis]: Traffic Totals for Atlantis
#-#Total-Unit[atlantis]: M
#-#Total:Ratio[atlantis]: yes

Configurar SNMP (/etc/snmp/snmpd.conf):

com2sec local localhost atlantis
com2sec atlantis 66.111.52.100 atlantis
 
group MyROGroup v1         local
group MyROGroup v1      atlantis
 
view all-nibs included .1 80
 
access MyROGroup ""      v1       noauth    exact  all-nibs    none   none
 
syslocation altantis
syscontact Root

Configuramos iptables para que no puedan acceder al SNMP desde fuera

#SNMPD Solo Local
$IPTABLES -A INPUT -s 127.0.0.1 -p tcp --dport 199 -j ACCEPT
$IPTABLES -A INPUT -s 127.0.0.1 -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -s 85.17.1.127 -p tcp --dport 199 -j ACCEPT
$IPTABLES -A INPUT -s 85.17.1.127 -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 199 -j DROP
$IPTABLES -A INPUT -s 0/0 -p udp --dport 161 -j DROP

Descargamos mrtg_total y lo descomprimimos:

tar xvfj mrtg_total.tar.bz2
cd mrt_total
unzip mrtg_total.zip

El script importante es mrtg_total.pl, y hay que añadirle en la primera linea del fichero #!/usr/bin/perl

Ahora añadimos al crontab que ejecute mrtg_total, por ejemplo cada 3 horas (/etc/crontab):

Tagged as: , No Comments
3Oct/060

Multiples proyectos con trac y svn usando HTTPS

Voy a explicar como montar el sistema de gestion de proyectos trac y subversion usando https para trabajar con subversion. Yo lo he montado en una debian usando apache2, asi que lo primero que necesitamos es instalar todo lo necesario

apt-get install trac subversion apache2 subversion libapache2-svn libapache2-mod-python2.3

Una vez descargado e instalado creamos el certificado necesario para usar tanto trac y subversion bajo https. Entra en el directorio /etc/apache2/ssl y ejecuta lo siguiente:

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Ahora ya tenemos listo los certificados, asi que ahora solo nos queda configurar el apache. Yo he creado un trac.dominio.ext y un svn.dominio.ext para hacer esto, pero esto va a gusto de cada uno. Yo como uso dos subdominios distintos, lo tengo en ficheros separados.