Me mudo , pero no quiero estar solo.
Después de mucho sin escribir nada por aqui. sigo vivo ahora estoy metido en un wiki , por que desde un buen principio busco algo mas col.laborativo , tambien doy la oportunidad a todo aquel que este interesado en colaborar en el proyecto el blog no lo eliminare ya que hay bastante contenido.
pero seguire en
http://tuxed.kenjy.net
Esta vez el contenido del blog sera mixto entre varios sistemas.
Tanto windows , Linux , BSD y sistemas que toco en el dia a dia
Quien quiera colaborar en el nuevo proyecto que envie un mail a tuxedlinux@gmail.com
Gracias y espero colaboracion
Servicios de Hosting Con IP Dinamica
![]()
Holas después de un largo tiempo sin publicar nada , aquí os dejo un pequeño manual para montar hosting casero usando ip dinamica y los servicios de 1and1.
Primero de Todo debemos crear un dominio dinamico en algun servicio como no-ip.com
para el caso de no-ip nos registramos en la web y añadimos un nuevo host

Una vez añadido el host debemos configurarlo en nuestro servidor o router para ello instalaremos el cliente
de no-ip que se encuentra en los repositorios de debian.
para ello ejecutaremos
# aptitude install no-ip
Una vez instalado ejecutamos
# no-ip -C
Please enter the login/email string for no-ip.com: tu_cuenta@domain.com
Please enter the password for user tu_password
Please enter an update interval:[30] //Dejalo en Default dale 30//
Do you wish to run something at successful update?[N] (y/N) //Presiona N//
Ejectando el servio si se reinicia la maquina.
# update-rc.d -f no-ip defaults
Adding system startup for /etc/init.d/no-ip ...
/etc/rc0.d/K20no-ip -> ../init.d/no-ip
/etc/rc1.d/K20no-ip -> ../init.d/no-ip
/etc/rc6.d/K20no-ip -> ../init.d/no-ip
/etc/rc2.d/S20no-ip -> ../init.d/no-ip
/etc/rc3.d/S20no-ip -> ../init.d/no-ip
/etc/rc4.d/S20no-ip -> ../init.d/no-ip
/etc/rc5.d/S20no-ip -> ../init.d/no-ip
Preparando toda la paqueteria.
Software necesario para nuestro Servidor:
- php
- mysql ( en los repos como mysql-client )
- mysql-server
- httpd (o apache2 en debian)
- perl
- bash ( La shell de linux este ya lo tenemos )
Modulos de Perl:
- POSIX
- Socket
- DBI
- DBD::mysql
- File::Basename
- MIME::Base64
- Sys::Syslog
Estos modulos puede que ya los tengas instalados en tu servidor si no puedes instalarlo desde cpan así:
# cpan
cpan> install Sys::Syslog
…..
cpan > bye
Paqueteria para Servicios web
- mod_ssl # Modulo SSL para apache, lo usaremos para crear paginas seguras
- openssl # Generar Certificados SSL
- php-imap # para que el webmail funcione
- php-mysql # para que phpMyAdmin funcione
- net-snmp # para obtener información con mrtg
Paqueteria para Servicios de Correo:
- postfix # servidor de correo
- postgrey # listas grises
- dovecot # Servidor POP3/IMAP
- vsftpd #Servidor FTP
- bind #Servidor DNS
- amavisd-new # Controlar anti-spam/virus
- spamassassin # Anti-spam para el correo
- clamd # Anti-virus para el correo
- mrtg # Gráficos de red
Instalando Todo
Para Debian:
# apt-get install apache2 php5 mysql-server apache-ssl openssl postfix postgrey dovecot-common vsftpd spamassassin clamav amavisd-new bind mrtg
Para CentOS: # yum install httpd php mysql-server mod_ssl openssl postfix postgrey dovecot vsftpd spamassassin clamd amavisd-new bind mrtg
Instalando Panel Control Usuarios
Una vez instaladas todas las dependencias es el momento de instalar un Panel para administrar todo.
Para ello descargamos la versión estable de Ravencore.
# wget http://garr.dl.sourceforge.net/sourceforge/ravencore/ravencore-0.3.3.tar.gz
# tar zxvf ravencore-0.3.3.tar.gz # cd ravencore-0.3.3 # make build # make install Con esto ya tenemos el Panel Instalado y listo para funcionar. # /etc/init.d/ravencore start Iniciado el servicio , asignamos una password al usuario admin # /usr/local/ravencore/sbin/run_cmd passwd Ahora ya podemos logearnos al panel conectándonos a la ip de la maquina al puerto 8000 http://x.x.x.x:8000
Click en la imagen para ver capturas
Una vez logeado podremos crear servicios web desde el panel.
Configuración DNS Proveedor.
En el caso de 1and1 iremos ha
Dominios
Seleccionamos nuestro Dominio . Pestaña DNS / Modificar Configuración DNS
Configuración general
| Alias * | tu_dominio.no-ip.org |
|---|---|
| [X]Conozco y acepto que toda configuración DNS, direcciones de e-mail y configuraciones para el reenvío actuales se desactivarán. |
Remplazar tu_dominio.no-ip.org por dominio Virtual creado en no-ip.com
Creación de VirtualHosts dinamicos
De esta forma con un solo virtualhost cubriremos todos los dominios.
# vi /etc/httpd/conf.d/dinamicos.conf
# Configuracion para virtualhost dinamicos: # UseCanonicalName Off <VirtualHost *:80> ServerName %1 VirtualDocumentRoot /users/%0/httpdocs
#VirtualScriptAlias /users/%0/cgi-bin
#ScriptAlias /cgi-bin/ /var/www/default/cgi-bin
<Directory /var/www/%0/httpsdocs>
AllowOverride All
Options FollowSymLinks
Order allow,deny
Allow from all
php_admin_value safe_mode 0
php_admin_value open_basedir /users/%0/httpdocs
php_admin_value sendmail_from webmaster-%0@%2+
#Include ./conf.d/php.conf
DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml
</Directory>
#
# rewrite
#
Rewritelog /var/log/httpd/rewrite_log
RewritelogLevel 0
RewriteEngine on
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{REQUEST_URI} !^/\_(MYADMIN|MYSQL|ERROR)
#RewriteCond %{REQUEST_URI} !^/\_(CORREO|MAIL|MYADMIN|MYSQL|ADMINCORREO|ERROR|SERVERGFX|STATS|GESTION)
#RewriteCond %{REQUEST_URI} !^/awstats
RewriteCond %{HTTP_HOST} ^www
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^(.+) /users/%1/httpdocs/$1
#
# Logs:
#
LogFormat “%V %{X-Forwarded-For}i %{%d-%m-%Y@%I:%M:%S(%Z)}t \”%r\” %s %b” vcommon
CustomLog /var/log/httpd/vcommon-access.log vcommon
</VirtualHost>
Nota:Remplazar /users/ por la ruta marcada en la instalación del panel.
Descargar Configuración
Cada vez que añadimos un virtual host tendremos de añadirlo en 1and1 y modificar el CNAME. Espero que les haya gustado si teneis alguna duda comentario.
Bash + OpenVZ (ejecución multi maquina)

Aqui un sencillo tip para ejecutar comandos a todos los VPS a la vez
# ./vzexec-all uptime 12:57:12 up 2 days, 15:14, 0 users, load average: 0.00, 0.00, 0.00 3:57pm up 2 days 15:14, 0 users, load average: 0.00, 0.00, 0.00 3:57pm up 2 days 15:14, 0 users, load average: 0.00, 0.00, 0.00 3:57pm up 2 days 15:14, 0 users, load average: 0.03, 0.01, 0.00 12:57:13 up 2 days, 15:14, 0 users, load average: 0.00, 0.00, 0.00 12:57:13 up 2 days, 15:13, 0 users, load average: 0.00, 0.00, 0.00 12:57:13 up 2 days, 15:13, 0 users, load average: 0.00, 0.00, 0.00 12:57:13 up 2 days, 15:13, 0 users, load average: 0.00, 0.00, 0.00
El script se usa para ejecutar comandos a todas las maquinas que estan funcionando
- vzlist Saca las lista de maquinas
- grep running las maquinas que estan funcionando
- cut -d ” ” -f -12 Nos muestra solo el VEID
- grep -v VEID Elimina la palabra VEID de la lista
- vzctl exec $start $1 Ejecuta el comando en las maquinas
modo empleo:
vzexec-all.sh comando
El script puede usarse para hacer copias de las paginas web alojadas de los VPS.
Podrias usar rsync para hacer backups de los directorios y guardarlos en el NAS comprimidos y como nombre usar `hostname`.$DATE.tar.gz
ssmtp en gmail

ssmtp es una pequeña herramienta que nos permitira enviar correos usando el comando mail o mutt desde la linea de comandos , de hecho ssmtp actua como un smtp relay reenviando nuestros correos a nuestra cuenta de gmail.
Esta herramienta puede ser util por ejemplo en scripts donde queremos enviar datos desde mail sin disponer de un MTA instalado localmente.
Tambien puede ser util en la configuración de las notificaciones de Nagios (Sistema de Monitorización) , para permitir la notificación en los servidores de correo de nuestra empresa.
Instalando ssmtp
En este how-to uso gentoo aunque puede ser adaptado facilmente a tu distribución favorita.
Para instalar ssmtp en gentoo usaremos el siguiente comando.
# USE=”ipv6 -mailwrapper -md5sum ssl” emerge ssmtp
Una vez instalado simplemente es configurar ssmtp:
necesitaremos dos archivos
$ ls -l /etc/ssmtp/
total 16
-rw-r–r– 1 root root 89 feb 9 01:39 revaliases
-rw-r–r– 1 root root 192 feb 9 01:38 ssmtp.conf
Configurando ssmtp.conf
root=usuario@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=usuario@gmail.com
UseSTARTTLS=YES
AuthUser=usuario
AuthPass=tu_password
FromLineOverride=YES
Los datos que debes remplazar por los datos de tu cuenta estan marcados en negrita.
El AuthUser= debe escribirse sin @gmail.com
Configurando revaliases
root:name@gmail.com:smtp.gmail.com:587
mainuser:name@gmail.com:smtp.gmail.com:587
Con esto asocia un usuario local a nuestra cuenta de gmail , logicamente tendremos de remplazar name@gmail.com por nuestra cuenta que configuremos en ssmtp.conf
Probando si funciona
Si todo funciona bien podremos enviar correos usando
$ echo “esto es una prueba” | mail -s “PRUEBA” destinatario@domain.com
Permisos con ACL

Los permisos de linux están bien siempre que no dispongamos de un grupo muy grande de usuarios , si es asi se haria muy lioso ya que tendríamos un /etc/group muy grande. Una forma Elegante de arreglar este problema es usando las ACL (Listas de Control de Acceso)
A groso modo una ACL es una lista de usuarios o grupos Linux y sus correspondientes permisos de acceso que tienen a un fichero o directorio.
Instalando y activando las ACL
Para aumentar la granularidad de los permisos en tu sistema debes tener en cuenta:
- El nucleo debe soportar y estar compilado para soportar atributos extendidos y ACL
- El sistema de ficheros tiene de montarse con atributos extendidos y ACL
- Se tienen de instalar las utilidades de espacio de usuario (chacl,getfacl y setfacl) para establecer el ACL.
Una vez claros estos conceptos pasamos a activar ACL.
Soporte ACL del núcleo de sistema
La gran mayoría de distros actuales ya soportan ACL puedes comprobar si tienes soporte con este comando.
# grep POSIX_ACL /boot/config-`uname -r`
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_TMPFS_POSIX_ACL is not set
Como podéis tenemos activados en el kernel si no es asi recompilamos el kernel marcando estas opciones.
File systems —>
[*] ReiserFS extended attributes
[*] ReiserFS POSIX Access Control Lists
Soporte ACL en /etc/fstab
Una vez que tengamos soporte ACL necesitaremos configurar /etc/fstab para activar los susodichos permisos .
Los sistemas de ficheros montados con acl tendrán la palabra clave “acl” en las porciones de opciones de montaje de sus entradas en el fichero.
Ejemplo
/dev/sda6 /usr reiserfs noatime,acl,user_xattr 1 2
/dev/hda1 /opt ext3 defaults 0 0
Como podéis ver sda6 tiene soporte acl en el punto de montaje , si quisiéramos dar soporte acl a hda1 seria tan fácil como al punto de montaje acl
/dev/hda1 /opt ext3 defaults,acl 0 0
Una vez actualizado el fichero /etc/fstab debemos remontar el sistema de fichero.
Ejemplo para hda1
# mount -o remount,acl /dev/hda1
Soporte ACL en el espacio de usuario
El último paso para usar ACL asegurarse de que las aplicaciónes de espació de usuario estén presentes en el sistema
En Debian o Ubuntu puedes comprobar asi
# dpkg -l |grep acl
ii acl 2.2.42-1ubuntu1 Access control list utilities
ii libacl1 2.2.42-1ubuntu1
Tambien puedes comprobar buscando las herramientas
# type -a getfacl
getfacl is /usr/bin/getfacl
Si ACL no esta instalado puedes instalarlo desde el manejador de paquetes de tu distribución en debian por ejemplo.
# apt-get install acl
Formato ACL
Linux soprta 2 tipos básicos de ACL:
- ACL de control de directorios y ficheros
- ACL de directorio (Mascaras) ACL que toman por defecto los ficheros creados en ese directorio.
La ACL se representa por tres campos separados por “:”
Campo 1
Entrada
- “u” Ususario
- “g” Grupo
- “o” Otro
- “m” Mascara
Campo 2
El segundo campo esta formado por:
- UID (ID numérico de usuario)
- GID (ID numérico de grupo)
- Vacío (Asume UID,GID del Creador)
Campo 3
- El tercer campo es el de acceso y puede ser representado de 2 maneras.
- Cadena estándar RWX (las cadenas se pueden remplazar por – sino queremos dar acceso de ese tipo)
- Cadena simbólica + ^
Herramientas
- chacl : Permite cambiar,examinar o eliminar ACL
- getfacl : Permite examinar acl para encontrar archivos o directorios
- setfacl : Establece ACL a fichero o directorio.
Mostrar ACL
Para el ejemplo usare un directorio con archivos que he creado con touch.
> ls -l
total 0
-rw-r–r– 1 tuxed tuxed 0 2008-01-26 03:03 lerele
-rw-r–r– 1 root root 0 2008-01-26 03:03 pass
-rw-r–r– 1 root root 0 2008-01-26 03:02 user
La acl para el directorio siguiente es
> getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::rwx
other::rwx
La acl por defecto para el fichero lerele es esta
> getfacl lerele
# file: lerele
# owner: tuxed
# group: tuxed
user::rw-
group::r–
other::r–
La acl para el directorio el qual no se le ha asignado coje los de umask.
Establecer ACL
Hay tres maneras de establecer un ACL
- Usando el comando setfacl el qual sobrescribe qualquier ACL anterior.
- Usando el comando setfacl con la opción -m (Modifica ACL)
- Usando chacl para modificar una ACL existente.
En esta ocasión mostrare como se cambian las acl con chacl , ya que este no sobrescribe la ACL existente, y ademas proporciona algo mas de información de como realmente funcionan las acl
Ejemplo
Añadiremos al usuario aitor como alguien que puede leer el fichero lerele , usaría chacl (cambiar la ACL) del siguiente modo:
$ chacl u::rw-,g::r–,o::—,u:aitor:r–,m::rw- lerele
Esta es la forma en la que se ve una acl en la vida real , el hecho de que sea una comando tan largo es que se debe definir los puntos ya nombrados anteriormente el propietario de fichero, grupo propietario y otros
para entendernos mejor la porción u::rw,g::r–,o::— es la ACL existente y la porción u:aitor:r–,m::rw- especifica el nuevo usuario el nuevo usuario que quiero añadir a dicha acl y la mascara de derechos efectivos cuando se añada.
La mascara de derechos efectivos es la unión de todos los permisos ya existentes de UGO para un fichero o directorio. esta se tiene al añadir un usuario a la ACL.
Para comprobar que hemos sido añadidos a la acl usaremos
$ getfacl lerele# file: lerele
# owner: tuxed
# group: tuxed
user::rwx group::r– other::— user:aitor:r– mask::rw-
Ahora que ya sabemos como funciona acl podriamos poner que aitor tenga permisos de lectura y escritura a lerele
$ chacl u::rw-,g::r–,o::—,u:aitor:rw-,m::rw- lerele
como veis le hemos añadido permisos de escritura
$ getfacl lerele# file: lerele
# owner: tuxed
# group: tuxed
user::rwx group::r– other::— user:aitor:rw-
Pues espero que hos guste.
IP detras de Proxys en los logs de apache
Mucha gente que se dedica a hacer gamberradas por internet suelen usar proxys pensandose que asi estan protegidos aqui un simple tip para los logs de apache en apache2.conf
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" xcombined
CustomLog /var/log/apache2/tuxed.es-access.log xcombined
Justamente la cabecera X-Forwarded-For es la que contiene nuestra ip
Solución Para Monitorización de Servidores
![]()
Bixdata es un completo sistema de monitorización formado:
- BixDesktop
- BixServer
- BixAgend
BixDesktop nos permite conectarnos a los diferentes Agentes (BixAgent) o a los Servidores (BixServer) y mostrar los graficos de una forma entendedora en nuestro escritorio en forma de aplicacion.
BixServer nos será bien útil para monitorizar los servidores web http, servidores de correo POP3 y SMTP, y hacer ping.Adicionalmente, BixData envía notificaciones en situaciones críticas, generalmente mediante el e-mail, en caso de emergencias HTTP, ping, CPU, memoria; hasta puede crear informes de diagnostico SMART. La consola gráfica soporte gráficos dinámicos en tiempo real, y es fácil de manipular.
BixAgent , se trata basicamente de un daemon que pone en ejecucion los medios para monitorizar la maquina ejecutando un servicio en el puerto 17070 udp
Screenshoots:

Monitorizando Servidores Virtuales

Instalación de BixDesktop
Descargamos el BixDesktop http://www.bixdata.com/downloads?reg=skipped
La instalación es realmente sencilla descargamos el archivo para nuestra plataforma y ejecutamos el archivo runbixdesktop.sh
Script de instalación en maquinas Debian
Descargar
Instalación del script
Usando clusterssh puedes instalar en mas de 20 maquinas al mismo tiempo.
# wget http://lnx.titoworld.com/uploads/bixdata-installer ; chmod +x bixdata-installer ; sh bixdata-installer
Información simple con ps
0.0 0.0 ksoftirqd/0
0.0 0.0 watchdog/0
0.0 0.0 events/0
0.0 0.0 khelper
0.0 0.0 kthread
0.0 0.0 kblockd/0
0.0 0.0 kacpid
Script para Backups de DB Mysql

Pues sii , estoy vivo despues de un tiempo sin escribir nada aqui os dejo un script para hacer copias del usuario que le indiques con la posibilidad de enviar por correo el backup.
#!/bin/bash
# Ruta en la que se guarda el log de la operacion de backup.
logfile=”/var/log/mysql-backup.log”
# Ruta en la que guardar los backups
backup_dir=”/opt/mysqlbackup”
# Usuario
username=”"
password=”"
# Creamos un nuevo log del proceso de backup
rm -rf $logfile
touch $logfile
# Mediante esta instruccion, generamos un nombre de fichero con el dia y la hora del proceso de backup.
timeslot=`date +%Y%m%d_%H%M`
cd $backup_d
# Iteramos a traves de la lista de bases de datos a la que el usuario tiene acceso.
for BBDD in $( mysql -u $username –password=$password -h localhost -Bse ’show databases’ ); do
echo “Creando copia de seguridad de $BBDD”
# Volcamos la base de datos en un fichero temporal
mysqldump –user=$username –password=$password $BBDD > datos.sql
# Y lo comprimimos en un tar.bz2 para ocupar lo mínimo. Util en bases de datos grandes.
tar cvjf mysql-$BBDD-$timeslot.tar.bz2 *.sql
# El nombre del fichero resultante contiene el nombre de la base de datos y la fecha de la copia.
# De esta manera, cuando sea necesaria su restauracion sera mas sencillo de localizar.
echo “Backup completo en la base de datos: $BBDD (mysql-$BBDD-$timeslot.tar.bz2)” >> $logfile
# Borramos el fichero temporal
rm datos.sql
done
#————————————————-
# Deja la linea siguienete si quereis recibir los backups en el correo
#
cat $logfile|mail -s “Proceso Backup $HOSTNAME = MySQL” tuemail@dominio.com
