Blogs Teoriza

Caché generada y soportada por Blogs Teoriza al servicio de la Blogosfera. (+herramientas)
Página cacheada: http://hgeorge123.blogspot.com/ (autor original).
Fecha exacta captura: 2009-10-30 23:11:16 (GMT/UTC).


Software Libre Linux

SO Linux

Loading...

lunes 27 de abril de 2009

Instalar rdiff-backup

Muchas veces queremos hacer respaldo de nuestros servidores pero no sabemos como hacer una manera es usar un rsync lo cual hace una copia diaria de todos nuestros archivos pero si pasado el tiempo queremos restaurar un respaldo vamos a tener que buscar los respaldos que tengamos guardado hay una manera de hacer esto mas facil y es con rdiff con este software podemos hacer los respaldos diarios y llegado el momento decirle al software que restaure los archivos o carpeta hasta la fecha que necesitamos.

Para instalarlo desde el codigo fuente se hace de la siguiente manera esta instalacion fue echa en slackware 12.1 en otras distribuciones debe de ser igual execto debian y ubuntu que lo traen entre sus repositorios.

Primero que nada tenemos que instalar las librerias rsync

wget http://internap.dl.sourceforge.net/sourceforge/librsync/librsync-0.9.7.tar.gz

tar xzf librsync-0.9.7.tar.gz

cd librsync-0.9.7

./configure

make AM_CFLAGS=-fPIC # Importante: Sin este flag, da un error al compilar rdiff-backup en sistemas de 64bits

make install

cd ..

Con esto ya tenemos instaladas las librerias necesarias ahora viene el rdiff

wget http://savannah.c3sl.ufpr.br/rdiff-backup/rdiff-backup-1.1.5.tar.gz

tar -xzf rdiff-backup-1.1.5.tar.gz

cd rdiff-backup-1.2.2

python setup.py install

domingo 12 de abril de 2009

Enviar correo cuando se conectan por ssh

Existen muchas herramientas y técnicas que podemos usar para estar al tanto de las conexiones que se producen en un servidor desatendido (TCP wrappers, swatch, etc.). En lugar de usar alguna de estas técnicas ideé este método tan simple porque no requiere instalar ningún paquete que no tenga ya instalado. En mis sistemas la utilizo para que, en el momento en el que cualquier persona entre, enviar un mensaje SMS a mi correo. En caso de que esa persona no sea yo, tengo una oportunidad de echar al intruso o apagar la máquina ;-).
Requisitos previos

Se asume que los siguientes paquetes están ya instalados y funcionando:

* OpenSSH (net-misc/openssh).
* El cliente de correo mailX (mail-client/mailx), para enviar correos desde scripts de shell o desde línea de comandos.
* Un MTA ("mail transfer agent" o "agente de transferencia del correo") para mailX, como pueden ser Qmail, Postfix o Sendmail.
* Opcional: el sistema de ventanas X Window. No es obligatorio, pero debe de tenerse en cuenta a la hora de configurar SSH.

En caso de no cumplir alguno de los requisitos existen un montón de recursos para ayudarte, incluyendo los excelentes foros de Gentoo. Cómo configurar SSH o un servidor de correo está fuera del alcance de esta guía, que cubre solamente cómo conectar ambos.

Cómo funciona

En caso de que exista el script /etc/ssh/sshrc, SSH lo ejecuta después de cargar el entorno de un usuario pero antes de iniciar su intérprete de comandos. Este archivo nos proporciona las inicializaciones globales necesarias "antes de que el directorio /home del usuario llegue a ser accesible" (consultar # man 8 sshd). En mi caso, lo utilizo para enviar el correo con los detalles de la conexión.
Qué hacer

1. Hacer login como root.
2. Crear /etc/ssh/sshrc tal y como se muestra a continuación. En caso de que ya exista no sobreescribirlo, simplemente añadir en el punto adecuado los comandos que aparecen a partir de "Enviar una alerta con los detalles de la conexión".

# Establecer XAuthority usando el protocolo X desde stdin
# (ejemplo sacado de: man 8 sshd)
# Puedes omitir esta seccion si X (y por tanto xauth) no estan instalados.
#
if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -
fi

# Enviar una alerta con los detalles de la conexión
#

cuando=`/usr/bin/date`
donde=`echo $SSH_CONNECTION|cut -f1 -d' '|cut -f4 -d:`
if [ -z "$SSH_TTY" ] ; then
que="Conexion de $USER"
else
que="Login de $USER en $SSH_TTY"
fi

mailto=""
cc_to=""
bcc_to=""
while read direccion mode
do
if [ -z "$direccion" -o "${direccion:0:1}" = "#" ] ; then continue; fi
if [ "x$mode" = "xcc" -o "x$mode" = "xCC" ] ; then
cc_to=${cc_to:+${cc_to},}$direccion
elif [ "x$mode" = "xbcc" -o "x$mode" = "xBCC" ] ; then
bcc_to=${bcc_to:+${bcc_to},}$direccion
else
mailto=${mailto:+${mailto},}$direccion
fi
done
mailto=${mailto:-operator}
cc_to=${cc_to:+"-c $cc_to"}
bcc_to=${bcc_to:+"-b $bcc_to"}
mail ${cc_to} ${bcc_to} -s "Alerta SSH" ${mailto} >&2 <<-EOM
${que} desde ${donde} el ${cuando}
EOM

#

Este archivo debe tener permisos de lectura para todos los usuarios (# chmod 644 /etc/ssh/sshrc) puesto que se ejecuta con los privilegios del usuario que conecta. No es necesario, ni recomendado, establecer permiso de ejecución en el archivo. Las direcciones de los destinatarios de las alertas se encuentran en otro archivo para facilitar el mantenimiento.

Lo anterior sigue la sintaxis de Bash y asume que en tu sistema /bin/sh es equivalente a /bin/bash (SSH ejecuta este archivo usando /bin/sh). Si no es ése tu caso entonces me temo que no puedo ayudarte, pero se aceptan contribuciones de algún script de shell equivalente :-). Para los detalles de los trucos usados en el script puedes consultar la página del manual del Bash, especialmente la sección "Extensión de parámetros".
# Crear el archivo con la lista de destinatarios, /etc/ssh/notify.

# Lista de destinatarios para las alertas de acceso SSH
#
# Formato:
# direccion[,direccion] [cc|bcc]
#
# Se pueden indicar varias direcciones en distintas lineas o separadas por comas
# Las opciones "cc" y "bcc" marcan la direccion(es) de destino como "Cc:" or
# "Bcc:", respectivamente.
#
# Las lineas en blanco o con # en la columna 1 son ignoradas.
#
# Es importante que la ultima linea del fichero sea una linea en blanco
#
123456789@pagina-de-sms.foo
root@localhost,yomismo@oficina.com bcc

3.

También en este caso el archivo debe tener permisos de lectura para todos los usuarios (# chmod 644 /etc/ssh/notify). Sustituye las direcciones del ejemplo por las direcciones que quieras que reciban las alertas de conexión.

Cuando alguno de los destinatarios sean direcciones SMS, es posible que te interese evitar la opción CC en favor de BCC. De esta forma no se incluyen en el mensaje las direcciones del resto de destinatarios y el SMS se mantiene breve.

Eso es todo. No es necesario reiniciar el servicio SSH.
Comprobación

Conéctate a la máquina vía SSH usando tu método preferido (ssh, PuTTY, sftp, etc.). En poco tiempo, los destinatarios listados en /etc/ssh/notify deberían recibir un mensaje similar a este:

Asunto: Alerta SSH De: stolz@foo.bar Para: admin@midominio.foo Fecha: Hoy 21:42:05 Login de stolz en /dev/pts/2 desde 216.16X.XX.XX el Wed Dec 21 21:42:05 CET 2005

Hay que tener en cuenta que los mensajes SMS pueden tardar varios minutos en llegar, dependiendo de la red de tu proveedor y de la propia disposición del MTA. En caso de ser una intrusión real, sabrías a quién "perseguir" y de dónde vino.

jueves 9 de abril de 2009

Mandar correos desde la consola de linux

A veces programamos una tarea y no tenemos tiempo de verificar que dicha tarea se cumplio sin ningun error una buena solucion para esto seria programar que el servidor nos mandara un correo con la confirmacion de que la tarea se llevo a cabo sin errores o que dio errores y que errores dio.

Primero que nada instalamos el paquete y lo configuramos

apt-get --reinstall install exim4 exim4-config mailx
dpkg-reconfigure exim4-config

Como lo que nos interesa, de momento, solo es enviar e-mails, y no queremos convertirnos en una fuente de spam, activamos lo mínimo:

- Elegimos NO para no dividir la configuración en pequeños archivos
- Elegimos enviar los correos mediante un SMARTHOST y recibir via SMTP
- Como nombre del sistema elegimos el de nuestra máquina, si queremos.
- Como no vamos a recibir correo dejamos 127.0.0.1 como receptor de SMTP
- Dejamos en blanco otros destinos como correos aceptados
- Dejamos en blanco las máquinas a las que renviamos correo
- En el nombre del smarthost ponemos smtp.gmail.com::587
- En el nombre del correo saliente ponemos en de nuestra máquina, otro que queramos o ninguno.
- NO limitamos las consultas de DNS salientes

Editamos la cuenta de Gmail que hará el relay:

vim /etc/exim4/passwd.client

Añadimos:

gmail-smtp.l.google.com:TuNombreDeCuenta@gmail.com:TuPassword
*.google.com:TuNombreDeCuenta@gmail.com:TuPassword
smtp.gmail.com:TuNombreDeCuenta@gmail.com:TuPassword

/etc/init.d/exim4 restart

Y listo!

Una buena manera de empesar seria por ejemplo esta

cat archivo | mail -s "Asunto" correo@dominio.com

Aqui le estamos diciendo que haga un cat del archivo llamado archivo y lo mande por correo, tambien se le podria decir que mande el resultado de un comando un ejemplo serai el siguiente

df -h | mail hgeorge123@gmail.com -s "Espacio en el disco"

En la linea anterior le estamos diciendo que ejecute la sentencia df -h y el resultado lo mande por correo, si quieren mandar un archivo adjunto aqui les dejo el ejemplo de como deberia de funcionar.

mutt -s "Título del mensaje" -a /ruta/documento.pdf usuario@dominio.com < /ruta/archivodetexto.txt

En este caso, el usuario que posee el correo electrónico usuario@dominio.com recibirá un correo titulado “Título del mensaje”, el texto de este correo será el contenido de archivodetexto.txt, y se incluirá un PDF, documendo.pdf como archivo adjunto.

martes 3 de febrero de 2009

Compilar servidor web con source code en linux

Aveces nesecitamos un servidor web y tenemos dos manera de hacerlo utilizando los paquetes precompilado o compilando tu propia paqueteria en este ejemplo les voy a mostrar como instalar un servidor web con extensiones oci8 para oracle y base de datos mysql ademas de las librerias graficas gd, freetype, t1, jpeg y gif

Primero que nada hay que instalar el apache nos descargamos la ultima version del mismo en formato .tar.gz

tar zxvf httpd-2.2.11.tar.gz

cd httpd-2.2.11

./configure --prefix=/etc/apache2 --exec-prefix=/etc/apache2 --bindir=/usr/sbin --sbindir=/usr/sbin --libexecdir=/etc/apache2/libexec --sysconfdir=/etc/apache2/conf --sharedstatedir=/etc/apache2/com --localstatedir=/etc/apache2/var --libdir=/etc/apache2/lib --datarootdir=/etc/apache2/share --datadir=/etc/apache2/share --infodir=/etc/apache2/share/info --localedir=/etc/apache2/share/locale --mandir=/etc/apache2/man --docdir=/etc/apache2/share/doc/PACKAGE --enable-authn-alias --enable-authn-anon --enable-authn-dbm --enable-auth-digest --enable-ext-filter --enable-deflate --enable-log-config --enable-env --enable-mime-magic --enable-cern-meta --enable-expires --enable-headers --enable-usertrack --enable-unique-id --enable-setenvif --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-ssl --enable-dav --enable-status --enable-autoindex --enable-asis --enable-info --enable-cgi --enable-dav-fs --enable-vhost-alias--enable-negotiation --enable-dir --enable-actions --enable-speling --enable-userdir --enable-alias --enable-rewrite --enable-so --enable-mods-shared=all --enable-substitute --enable-echo

make

make install

Con esto ya tenemos nuestro apache instalado y listo para funcionar ahora procedemos a instalar las librerias necesarias para los graficos y el oci8

tar zxvf jpegsrc.v6b.tar.gz

cd jpeg-6b

./configure --prefix=/usr/local/jpeg --exec-prefix=/usr/local/jpeg --bindir=/usr/local/jpeg/bin --sbindir=/usr/local/jpeg/sbin --libexecdir=/usr/local/jpeg/libexec --datadir=/usr/local/jpeg/share --sysconfdir=/usr/local/jpeg/etc --sharedstatedir=/usr/local/jpeg/com --localstatedir=/usr/local/jpeg/var --libdir=/usr/local/jpeg/lib --enable-shared --enable-static

make

make install

Cuando esta ejecutando el make install el da uns errores pero esos errores es porque no puede crear los directorios a donde se va a instalar lo uq ehay que hacer es agarrar las direcciones de los directorios y crearlas hasta que deje de dar error

tar zxvf t1lib-5.1.2.tar.gz

cd t1lib-5.1.2

./configure --prefix=/usr/local/t1 --exec-prefix=/usr/local/t1 --bindir=/usr/local/t1/bin --sbindir=/usr/local/t1/sbin --libexecdir=/usr/local/t1/libexec --datadir=/usr/local/t1/share --sysconfdir=/usr/local/t1/etc --sharedstatedir=/usr/local/t1/com --localstatedir=/usr/local/t1/var --libdir=/usr/local/t1/lib --with-x --with-gnu-ld --with-pic

make

make install

tar zxvf freetype-2.3.8.tar.gz

cd freetype-2.3.8

./configure --prefix=/usr/local/freetype --exec-prefix=/usr/local/freetype --bindir=/usr/local/freetype/bin --sbindir=/usr/local/freetype/sbin --libexecdir=/usr/local/freetype/libexec --sysconfdir=/usr/local/freetype/etc --sharedstatedir=/usr/local/freetype/com --localstatedir=/usr/local/freetype/var --libdir=/usr/local/freetype/lib --enable-biarch-config --with-old-mac-fonts --with-fsspec --with-fsref --with-quickdraw-toolbox --with-quickdraw-carbon --with-ats --with-pic --with-gnu-ld

make

make install

unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip

Luego creas una carpeta en la siguiente ruta mkdir -p /opt/oracle/instantclient que es donde el oci8 va a leer las liberias después de esto el procedimiento es el siguiente:

mv instantclient_10_2/* /opt/oracle/instantclient/
cd /opt/oracle/instantclient/
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so

echo /opt/oracle/instantclient >> /etc/ld.so.conf
ldconfig

tar zxvf oci8-1.3.4.tgz

cd oci8-1.3.4

phpize

./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient

make

make install

Con esto ya tenemos todas las librerias graficas necesarias las gd no las vamos a compilar porque ella vienen nativas en casi todas las distribuciones entonces procedemos a compilar el php

tar zxvf php-5.2.8.tar.gz

cd php-5.2.8

./configure --with-apxs2=/usr/sbin/apxs --enable-mod-charset --enable-fastcgi --enable-debug --enable-sigchild --enable-magic-quotes --with-oci8=instantclient,/opt/oracle/instantclient --with-zlib-dir --with-jpeg-dir=/usr/local/jpeg --enable-ftp --with-gd --enable-gd-native-ttf --enable-sysvshm --enable-sysvsem --with-mysql --with-freetype-dir=/usr/local/freetype --with-zlib --with-mm --with-curl --enable-debug --enable-safe-mode --enable-sigchild --enable-libgcc --disable-ipv6 --enable-dba --enable-calendar --enable-dbase --enable-exif --enable-gd-jis-conv --enable-mbstring --enable-shmop --enable-soap --enable-sqlite-utf8 --enable-zip --enable-magic-quotes --enable-wddx --with-iconv --with-gettext --enable-bcmath --with-bz2 --with-t1lib=/usr/local/t1/ --with-mime-magic --with-openssl --with-pdo-mysql --with-mysqli --enable-sysvmsg

make

make install

Con esto ya tenemos nuestro servidor web casi listo solo nos falta cagarles las extensiones de php al apache y lo hacemos de la siguiente manera

vi /etc/apache2/conf/httpd.conf

Agregamos al final del archivos las siguientes lineas

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Ya con esto esta listo nuestro servidor si queremos revisar si cargo todos los modulos creamos un info.php de la siguiente manera

vi /etc/apache2/share/htdocs/info.php

dentro de este archivo agregamos estas lineas

phpinfo();
?>

abrimos un navegador y escribes eta direccion http://tuip/info.php

domingo 1 de febrero de 2009

Cambiar ruta de base de datos de mysql

A veces se llena el filesystem donde tenenmos alojada la base de datos aqui les pongo una manera de como cambiar la ruta de la base de datos con sus respectivos permisos y usuarios

mysql_install_db --datadir=/ruta/donde/quieras
chown -R mysql.mysql /ruta/donde/quieras
mysqld_safe --datadir=/ruta/donde/quieras --user=root &

Con esto ya tendremos nuestra base de datos en otro filesystem y funcionando correctamente.

viernes 30 de enero de 2009

Configurar fecha y hora normal del equipo y fecha UTC en Linux

Cuando se instalar un servidor web y una base de datos algunos programadores juegan con el formatipo o tipo de fechas para guardar y hacer busquedas en la base de datos la manera para solucionar esto es la siguiente primero verificamos la fecha y la hora actual del sistema de la siguiente manera

date

Esto nos arrojar la hora y fecha actual del sistema en que caso de que este mala la cambiamos de la siguiente manera

date --set "2009-01-30 22:35"

El orden en el cual esta es año-mes- dia hora:minutos

Despues de esto verificamos la fecha y hora UTC de la siguiente manera

date -u

Esto nos va fecha y hora del sistema operativo pero en realidad nos interesa es la fecha nada mas en caso de estar mala la modificamos de la siguiente manera

date --utc 01302236

El orden de esto es MMDDhhmm que es igual a mes dia hora y minuto.

miércoles 28 de enero de 2009

Borrar la clave de root de base de datos mysql

Para borrar la clave del root del mysql

killall mysqld
mysqld_safe --skip-grant-tables &
mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('nueva_contraseña') \
WHERE User='root'; FLUSH PRIVILEGES; \q
killall mysqld

Con esto ya esta listo solo vasta con arrancar el servico nuevamente y ya.

martes 13 de enero de 2009

Hacer ssh sin clave

Cuando tenemos varios servidores y tenemos que pasarnos de uno a otro a cada rato resulta molesto tener que estar metiendo la clave a cada rato o simplemente para programar un rsync para esto podemos poner que para pasarnos de unservidor a otro no nos pida clave pero esto es bueno hacerlo en un solo centido no poner que que se pase de un servidor a otro y despues de eso servidor tambien pueda retornar por ssh sin clave.

Una manera de hacerlo seria la siguiente

ssh-keygen -t rsa

En este punto nos hara una serie de preguntas el cual le damos a todas enter sin escribir nada, luego de haber terminada con este paso copiamos la clave publica al otro o otros servidores a los cuales queremos acer ssh sin tener que estar escribinedo la clave de la siguiente manera

ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx

Hay nos va a pedir una clave esa clave es la del servidor a donde estamons intentando copiar el archivo con esto ya deberiamos de poder hacer ssh sin que nos pida clave.

viernes 9 de enero de 2009

Saber que modulos estan cargados en el apache de nuestro servidor web

Para saber que modulos estan cargados en tu servidor web solo vasta con crear un archivo en el home del apache info.php el cual va a conetener algo como esto

// Muestra toda la información, por omisión INFO_ALL
phpinfo();

?>

Luego te metes en un explorador y escribes http://tuip/info.php y listo.

viernes 26 de diciembre de 2008

Cambiarle la clave a root si se te olvido

En lilo
Al encender la maquina y cuando aparece el menu gráfico de lilo en pantalla, teclea control+x ó control+c para ir al modo texto; verás lo siguiente:

boot:

escribe linux single y presiona enter.
boot: linux single

Esto cargará los elementos minimos del sistema, te dejará en el prompt del bash# y ahí podrás ejecutar passwd

bash# passwd
Passwd: NuevoPasswordDeRoot

Con eso estarás asignando un nuevo password a la cuenta de root, ya tienes cuenta de root.
Reincia el sistema y ten en cuenta que el resto depende de ti... ya sea bueno o malo.

En grub
El cargador por excelencia [desde mi punto de vista] es grub, veamos primero como se explota el agujero:

Cuando sale el menu de opciones, dice algo asi:
Use the ↑ and ↓ keys to select which entry is highligted. Press 'e' to edit the commands before booting....

Selecciona la entrada de Linux y presiona la tecla e para editar la entrada, te mostrará algo asi:

grub editing>
root (hd0,0)
kernel /vmlinuz-2.4.18.3 ro root=/dev/hda3
initrd /initrd-2.4.18-3.img

Elige la linea del kernel; al final agrega lo siguiente: single y presionas enter.

Quedaría así:
kernel /vmlinuz-2.4.18.3 ro root=/dev/hda3 single

Presiona b para bootear.

Esto cargará los elementos minimos del sistema, te dejará en el prompt del bash# y ahí podrás ejecutar passwd bla bla bla.. igual que en el anterior.

Muy bien, ya vimos como pedir prestada la cuenta de root.

martes 23 de diciembre de 2008

GRUB - protegido con contraseña

El gestor de arranque GRUB permite hacer operaciones muy sensibles, como por ejemplo, modificar el dispositivo desde el que arranca el sistema o arrancar sin tener la contraseña de root (administrador). Para evitar esto, tienes la posibilidad de protoger GRUB con su propia contraseña.

Grub soporta dos formas diferentes para añadir una contraseña de acceso a su fichero de configuración. La primera usa texto sin cifrado, mientras que la segunda utiliza cifrado md5

Para ponerle una contraseña debes hacer lo siguiente (como root):

La primera opción usa texto sin cifrado

En el parámetro password escribimos la contraseña
que queramos usar,en este ejemplo usamos cambiame.

password cámbiame
Lo pegamos en el fichero /boot/grub/menu.lst antes de la lista de entradas de arranque,
o bien lo podemos poner en una entrada de arranque para proteger dicha entrada.

Ejemplo real :
password cambiame

Ejemplo en el grub en una entrada de arranque protegida:
title Debian GNU/Linux, con barra de progreso kernel 2.6.18-4-k7
password cambiame
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-k7 root=/dev/hdb1 ro quiet splash vga=792
initrd /boot/initrd.img-2.6.18-4-k7
savedefault

La segunda opción utiliza cifrado --md5

En una consola y como root escribimos el siguiente comando
# grub-md5-crypt

Te pedirá una contraseña y su verificación (en nuestro ejemplo es cambiame), como resultado te dará un puñado de caracteres, los copias, los pegas en el fichero /boot/grub/menu.lst antes de la lista de entradas de arranque añade:
password --md5 $1$QJ.y0$KZfBdWPyEOPwd6vnsX77H/

Ahora cuando arranque grub sólo te permitirá seleccionar una entrada de arranque,
o pulsar 'p' para introducir la clave y a partir de ahí
tendrás acceso total para hacer lo que quieras.

Por cierto, si en alguna entrada de arranque pones 'lock'
te pedirá la misma contraseña del grub para poder usar dicha entrada,
o bien ponemos una entrada -md5 diferente,
eso es a gusto de cada uno.

Lo pegamos en el fichero /boot/grub/menu.lst
antes de la lista de entradas de arranque,
o bien lo podemos poner en una entrada de arranque
para proteger dicha entrada.

Ejemplo en el grub antes de la lista de entradas de arranque:

password --md5 $1$xf3y0$ak/xghHtCR0Z2RDRixnwS.

Ejemplo en el grub en dos entradas de arranque:

title Debian GNU/Linux, con barra de progreso kernel 2.6.18-4-k7
password --md5 $1$QJ.y0$KZfBdWPyEOPwd6vnsX77H/
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-k7 root=/dev/hdb1 ro quiet splash vga=792
initrd /boot/initrd.img-2.6.18-4-k7
savedefault

title Debian GNU/Linux, con barra de progreso kernel 2.6.18-4-k7
lock
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-k7 root=/dev/hdb1 ro quiet splash vga=792
initrd /boot/initrd.img-2.6.18-4-k7
savedefault

viernes 19 de diciembre de 2008

Detectar mas de 3 Gigas de ram en debian o ubuntu

Cuando instalas un servidor o estacion de trabajo con linux debian este no detecta mas de 3 o 4 gigas de memoria ram y si tienes mas pierdes el resto una manera facil de resolver eso en debian o ubuntu es de la siguiente manera

Instálate otro kernel que soporte para más de 4 Gigas que tienes:

apt-get install linux-image-2.6-686-bigmem

Normalmente, con el Etch a secas sin haber actualizado el paquete del kernel, te va a instalar el linux-image-2.6-486, que es el que te indica que tengas tan sólo un giga de RAM.


Una vez hecho eso, borra ese kernel:


apt-get --purge remove linux-image-2.6-486


Con esto ya tenemos listo nuestro servidor o equipo para verificar que eso sea cierto escribe lo siguiente orden en la consola

cat /proc/meminfo

Hay veras cuanta memoria ram esta detectando tu equipo y para verificar el procesador o procesadores

cat /proc/cpuinfo

En caso de que tengas mas de uno y no lo detecte instalar el soporte smp para el kernel.

jueves 4 de diciembre de 2008

Servidor DHCP

El siguiente texto trata de explicar como configurar un servidor dhcp en linux cualquier distribucion debian y ubutu si los instalas basico sin nada basta solo con hacer apt-get install dhcp o apt-get install dcpd y se instala el software las otras distribuciones seleccionas el paquete cuando estas instalando el sistema operativo o lo compilar en el suspuesto de que ya este instalado el sistema operativo.

Para poner a funcionar nuestro servidor dhpc solo hay que configurar un archivo que se encuentra en /etc/dhcpd.conf ó /etc/dhcpd/dhcpd.conf con modificar este archivo vastara.

Aqui le pongo a continuacion el archivo ya configurado como quedaria

#
# Configuración del Servidor DHCP
# HECHO POR: GEORGE
# VERSIÓN DEL DHCP: "PIENSALO BIEN ANTES DE HACER ALGO"

ddns-update-style none;

# Identificador de dominio y resolución de DNS
##option domain-name tc.com.ve;
option domain-name-servers 192.168.0.253;

default-lease-time 600;
max-lease-time 7200;

# Intervalo de prioridad de registro de Eventos (LOG)

log-facility local7;

# Especificación de sub-redes en EMPRESA X (DHCP)

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.10.250;
option routers 192.168.0.253;
}

# Opción del broadcast para las PC'S

option broadcast-address 192.168.0.255;



#############################################################################
# Estrcutura de las maquinas en Red fijas en DHCP #
# Esta es la parte donde se especifica los equipos que van a tener IP FIJA #
#############################################################################

host nombre_de_equipo {
fixed-address 192.168.0.166;
hardware ethernet 0:0:c0:5d:bd:95;

lunes 3 de noviembre de 2008

Crear Raid por software

Crear RAID 0 y RAID 1 con mdadm

Preparar el disco duro

Se va a crear un RAID-0 o un RAID-1. Para RAID-5 necesitará añadir más discos. Cree una particion en cada disco con el máximo tamaño:

Hay que hacer los mismos pasos para todos los discos que vayan a formar el RAID:

#fdisk /dev/dispositivo (hda, hdb, sda,sdb, etc...)
d y nº partición para borrar todas las existentes.
n para crear una nueva, p para decirle que es primaria y
1 para decirle que es la1ª.
t para indicar el tipo, fd que es el que corresponde a Linux RAID autodetect
w para escribir los cambios en la tabla del disco y salir

Device Boot Start End Blocks Id System
/dev/hda1 1 79780 40209088+ fd Linux raid autodetec

RAID-0 (¡sin redundancia!)

Use mdadm para crear un RAID-0:

mdadm --create /dev/md0 --chunk=64 --level=raid0 --raid-devices=2 /dev/hda1 /dev/hdc1

# cat /proc/mdstat
Personalities : [raid0]
read_ahead 1024 sectors
md0 : active raid0 hdc1[1] hda1[0]
80418048 blocks 128k chunks

RAID-1 (¡con redundancia!)

Use mdadm para crear un RAID-1:

mdadm --create /dev/md0 --chunk=64 --level=raid1 --raid-devices=2 /dev/hda1 /dev/hdc1

# cat /proc/mdstat
Personalities : [raid0] [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[1] hda1[0]
40209024 blocks [2/2] [UU]
[>....................] resync = 0.7% (301120/40209024) finish=17.6min speed=37640K/sec

Antes de reiniciar tiene que esperar a que se complete la sincronización

Guarde la información de los arrays recien creados

# mdadm --detail --scan >> /etc/mdadm.conf
# cat /etc/mdadm.conf
DEVICE /dev/hd* /dev/sd*
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=d876333b:694e852b:e9a6f40f:0beb90f9

Obtener información sobre los dispositivos RAID y los discos
Mostrar el estado actual de los dispositivos raid

cat /proc/mdstat

Salida de un RAID-1 degradado con un disco que falla:

Personalities : [raid0] [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[2](F) hda1[0]
40209024 blocks [2/1] [U_]
unused devices:

Salida de un RAID-1 degradado con un disco quitadoi:

Personalities : [raid0] [raid1]
read_ahead 1024 sectors
md0 : active raid1 hda1[0]
40209024 blocks [2/1] [U_]
unused devices:

Salida de un RAID-1 recostruyéndose:

Personalities : [raid0] [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[2] hda1[0]
40209024 blocks [2/1] [U_]
[=======>.............] recovery = 37.1% (14934592/40209024) finish=11.7min speed=35928K/sec
unused devices:

Obtener más detalles sobre los dispositivos RAID

# mdadm --query /dev/md0
/md0: 38.35GiB raid1 2 devices, 3 spares. Use mdadm --detail for more detail.
/dev/md0: No md super block found, not an md component.

# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.00
Creation Time : Mon Jan 20 22:53:28 2003
Raid Level : raid1
Array Size : 40209024 (38.35 GiB 41.22 GB)
Device Size : 40209024 (38.35 GiB 41.22 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Jan 21 00:49:47 2003
State : dirty, no-errors
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0


Number Major Minor RaidDevice State
0 3 1 0 active sync /dev/hda1
1 22 1 1 active sync /dev/hdc1
UUID : d876333b:694e852b:e9a6f40f:0beb90f9

Obtener más detalles sobre los discos

# mdadm --query /dev/hda1
/dev/hda1: is not an md array
/dev/hda1: device 0 in 2 device active raid1 md0....

# mdadm --query /dev/hdc1
/dev/hdc1: is not an md array
/dev/hdc1: device 1 in 2 device active raid1 md0....

Administrar dispositivos RAID (RAID-1 y superiores)

Configurando el fallo de un disco:

# mdadm --fail /dev/md0 /dev/hdc1

Quitando un disco que falla de un array:

# mdadm --remove /dev/md0 /dev/hdc1

Borrando cualquier información de un raid anterior de un disco

# mdadm --zero-superblock /dev/hdc1

Agragar un disco al array

# mdadm --add /dev/md0 /dev/hdc1

lunes 21 de julio de 2008

Programar tareas en linux crontad

Al igual que en linux existe un programador de tares que se llama crontad solo que es un poco distinto la manera de trabajar con el esto con respecto a windows que es mucho mas facil de entender aqui es un poco mas complejo aqui les pongo un ejemplo de tareas con crontad

0 4 * * * /usr/bin/date # Todos los días a las 04:00 de la mañana

Este muestra la hora y fecha todos los dias a las cuatro de la mañana

Los parametros para trabajar con el crontad son los siguientes

mm : Minuto dentro de la hora (0-59)
hh : Hora del día (0-23)
dd : Día del mes (1-31)
MM : Mes del año (1-12)
ss : Día de la semana (0-6, Domingo=0)
Comandos : Secuencia de comandos a ejecutar, deben ir separados con ";", pudiéndose redireccionar tanto la salida estándar como la de errores hacia algún archivo (2>&1).

$ crontab -l # lista las tareas en el cron del usuario
$ crontab -e # edita el archivo cron del usuario
$ crontab mi_archivo # activa mi_archivo como archivo cron del usuario

Con esto ya debemos de tener para programar nuestras tareas en linux

domingo 20 de julio de 2008

Cómo ocultar la versión de PHP y apache en un servidor web

Para poner un pocos mas de seguridad en nuestro web server podriamos hacer unos pequeños ajustes

Para ocultar la version e apache seria modificar o agregar en el caso de que no existan estas dos lineas en el archivo de configuracion de apache en debian es /etc/apache2/apache2.con

ServerSignature Off
ServerTokens Prod

Con esto esta listo ya no veran la versión de apache que se muestra con algunos errores o cuando entran por ip o algo parecido

Para ocultar la versión de php es muy simple tambien

Para ocultarlo, basta con ir al fichero php.ini, y poned a “off” la línea “expose_php = On”. Esta línea viene activada en la mayoría de las distribuciones, y en las compilaciones de PHP.

Configuración de servidor https Debian etch 4.0 ó Ububtu Server 7.0

Muchas veces queremos poner que las paginas de nuestro servidor web sean https pero no contamos con dinero suficiente para para comprar los certificados entonces recurrimos a los gratuits aqui les pongo un buen ejemplo de como implanar uno suponiendo que ya tenemos el servidor andando sino aqui tambien hay una manual de como montarlo.

Instalaremos openssl:

apt-get install openssl ssl-cert

Para activar el mod ssl tecleamos:

a2enmod ssl

Esto nos dira que debemos reiniciar el apache lo hacemos de la siguiente manera

/etc/ini.d/apache2 forece-reload

Con esto ya esta activado el mod ssl

openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Con esto le estamos diciendo que cree un certificado el cual durara 365 dias se va a llamar apache.pem y los va a guardar en /etc/apache2/ luego cambiamos los permisos del fichero

chmod 600 /etc/apache2/apache.pem

Y por útlimo editamos la configuración del servidor Apache, primero el fichero /etc/apache2/ports.conf y añadimos la siguiente línea:

Listen 443

Luego creamos los host virtuales de la siguiente manera para que cuando lso usuarios entren http los redireccione a https


Redirect / https://midominio.com
ServerName midominio.com



SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
DocumentRoot /var/www/mipagina
ServerName midominio.com


Reiniciamos el apache

/etc/init.d/apache2 restart

Y listo ya tenemos nuestro servidor web montado con https.

jueves 17 de julio de 2008

Configurar servidor dns bind con vistas

La nueva versión 9 del tal vez el programa mas popular de dns en linux bind tienes muchas mejoras y nuevas herramientas, una de las que mas me impresiono gratamente es la de las vistas con esta opción podemos configurar un servidor dns para que sirva en la red interna y a la ves en la red publica

Escenario del ejemplo
En el ejemplo a continuación se muestran los archivos de configuración para el programa named que representan el
siguiente escenario:
Red Interna (clientes): 172.31.0.0/16 (segmento de direcciones privadas)
Red DMZ (servidores): 172.31.0.0/16 (segmento de direcciones privadas)
Red Externa (Internet): 200.122.271/29 (segmento de direcciones públicas)

Todos los servidores en la red privada DMZ son accesados desde la Internet gracias a NAT estáticos configurados
en el Firewall.
Los servidores en la red DMZ son accesados desde la red Interna directamente a su dirección DMZ sin NAT,
ruteados eso si por el FireWall

Archivos de configuración

/etc/named.conf ó /etc/bind/named.conf

options {
directory "/var/named";
version " Piensalo Bien antes de hacer algo";
query-source address * port 53;
auth-nxdomain yes;
allow-query { any; };
// DNS Hecho por: hgeorge123
};

view "internal" {
match-clients { 172.31.0.0/16; 127.0.0.0/8; };
recursion yes;

zone "dominio.com" IN {
type master;
file "named.dominio.com";
allow-transfer { any; };
allow-update { none; };
};

zone "10.31.172.in-addr.arpa" {
type master;
file "named.dominio.com.rev";
allow-transfer { any; };
allow-update { none; };
};

view "external" {
match-clients { any; };

zone "tudominio.com" IN {
type master;
file "named.tudominio.com";
allow-transfer { none; };
allow-update { none; };
};

zone "271.122.200.in-addr.arpa" IN {
type master;
file "named.tudominio.com.rev";
allow-transfer { none; };
allow-update { none; };
};

Esta es la configuracion que tiene que tener el named.conf estan declaradas las dos vistas la vista que ve la red internet y la que ve la red externa, ahora declaramos las zonas

/var/named/named.dominio.com

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071300 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN A 172.31.10.1
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
IN MX 5 mail
dns1 IN A 172.31.10.1
dns2 IN A 172.31.10.1
www IN A 172.31.0.1
mail IN A 172.31.0.1

/var/named/named.dominio.com.rev

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008052202 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
dns1 IN NS 172.31.10.1
dns2 IN NS 172.31.10.1
1 IN PTR mail
1 IN PTR www

/var/named/named.tudominio.com

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071300 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN A 200.122.271.89
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
IN MX 5 mail
dns1 IN A 200.122.271.89
dns2 IN A 200.122.271.89
www IN A 200.122.271.89

/var/named/named.tudominio.com.rev

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071001 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
@ IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
89 IN PTR dns1.dominio.com.
89 IN PTR mail
89 IN PTR www

Con esto ya tenemos el nuestro servidor dns listo iniciamos el servico o reiniciamos si ya lo tenemos listo esto solo funciona en bind 9 en el 8 no, como información adicional les digo que cada ves que hagana algun cambio en los archivos de zona actualizen el serial el cual esta en el siguiente formato año/mes/dia/numero de modificacion un ejemplo es:
288071001 Esto dice año 2008 mes 07 dia 10 modificacion 1 del dia.

miércoles 16 de julio de 2008

Instalacion y configuracion de zimbra en debian etch 4.0

Muchos administradores se matan la cabeza montando un servidor de correo debido a que no es nada facil a pesar de postfix que ha humanisado mas los archivos de configuración porque sendmail es otro nivel, bueno para quitarse muchos dolores de cabeza yo recomiendo instalar zimbra como gestor de correo y aqui les pongo un ejemplo facil de como montarlo a mi me funciono perfecto.

Primero revisamos el /etc/hosts que este hay el el nombre del equipo y dominio para el que va a ser servidor de correo, deberia haber algo parecido a esto

127.0.0.1 localhost.localdomain localhost
192.168.0.110 server1.example.com server1

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

En caso de que no este el nombre del equipo y el dominio borramos lo que este hay y agregamos el dominio con nombre de host de etsa manera

echo server1.example.com > /etc/hostname

luego reiniciamos para que surtan efecto los cambios en todo el sistema

Al cargar ejecutamos hostname -f y no debe arrojar como resultado esto
server1.example.com

Luego revisamos el archivo /etc/resolv.conf qu eesten configurado los ip de nuestro servidor dns en el caso de que el servidor de correo este detras un firewall o gateway en una red privada, luego de esto desintalamos los paquetes innecesarios para nuestra instalación y que ademas dan problemas con el zimbra

apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light

acto seguido instalamos los que si necesitamos

apt-get install libc6-i686 sudo libidn11 curl fetchmail libgmp3c2 libexpat1 libgetopt-mixed-perl libxml2 libstdc++6 libpcre3 libltdl3 ssh
ya con esto tenemos el sistema listo para em pesar con la instalación del zimbra nos cambiamos de directorio y nos descargamos la ultima versión que para el momento es 5.0.8

cd /tmp/
wget http://files.zimbra.com/downloads/5.0.8_GA/zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452.tgz

Acto seguido que lo hemos descargado empezamos con la instalación

tar xvfz zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452.tgz
cd zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452
./install.sh -l

En este paso nos hara una serie de preguntas

Checking for prerequisites...
NPTL...FOUND
sudo...FOUND sudo-1.6.8p12-4
libidn11...FOUND libidn11-0.6.5-1
fetchmail...FOUND fetchmail-6.3.6-1etch1
libpcre3...FOUND libpcre3-6.7+7.4-2
libgmp3c2...FOUND libgmp3c2-2:4.2.1+dfsg-4
libxml2...FOUND libxml2-2.6.27.dfsg-2
libstdc++6...FOUND libstdc++6-4.1.1-21
openssl...FOUND openssl-0.9.8c-4etch1
libltdl3...FOUND libltdl3-1.5.22-4
Prerequisite check complete.
Checking for standard system perl...
perl-5.8.8...FOUND standard system perl-5.8.8

Install zimbra-ldap [Y] Y
Install zimbra-logger [Y] Y
Install zimbra-mta [Y] Y
Install zimbra-snmp [Y] Y
Install zimbra-store [Y] Y
Install zimbra-apache [Y] Y
Install zimbra-spell [Y] Y
Install zimbra-proxy [N] N

The system will be modified. Continue? [N] Y

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
+Create Admin User: yes
+Admin user to create: admin@server1.example.com
******* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: spam.m0bqyoayc@server1.example.com
+Non-spam(Ham) training user: ham.ygch0qyz1@server1.example.com
+Global Documents Account: wiki@server1.example.com
+SMTP host: server1.example.com
+Web server HTTP port: 80
+Web server HTTPS port: 443
+Web server mode: http
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://server1.example.com:7780/aspell.php

4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

Address unconfigured (**) items (? - help)

Aqui tienes que elegir la opción numero 3 y ponerle una clave al usuario admin no menor de 6 digitos, cn este usuario es que vamos a trabajar siempre para administrar nuestro servidor

Store configuration

1) Status: Enabled
2) Create Admin User: yes
3) Admin user to create: admin@server1.example.com
** 4) Admin Password UNSET
5) Enable automated spam training: yes
6) Spam training user: spam.m0bqyoayc@server1.example.com
7) Non-spam(Ham) training user: ham.ygch0qyz1@server1.example.com
8) Global Documents Account: wiki@server1.example.com
9) SMTP host: server1.example.com
10) Web server HTTP port: 80
11) Web server HTTPS port: 443
12) Web server mode: http
13) IMAP server port: 143
14) IMAP server SSL port: 993
15) POP server port: 110
16) POP server SSL port: 995
17) Use spell check server: yes
18) Spell server URL: http://server1.example.com:7780/aspell.php

Select, or 'r' for previous menu [r]

Enter "4" (without the quotes) and press "Enter" to modify the admin password. Now you'll be asked for the new password.

Password for admin@server1.example.com (min 6 characters): [TR9Fm7uD]

Aqui introduces el password para el usuario admin

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help)

Con esot ya tenemos casi listo nuestro servidor de correo nos hara una preguna sobre donde y en que archivo va a sarvar los cambio le damos a todo enter

Save configuration data to a file? [Yes] Enter
Save config in file: [/opt/zimbra/config.5422]
Saving config in /opt/zimbra/config.5422...done.
The system will be modified - continue? [No] Y

Operations logged to /tmp/zmsetup.02062008-135354.log
Setting local config values...done.
Setting up CA...done.
Creating SSL certificate...done.
Initializing ldap...done.
Setting replication password...done.
Setting Postfix password...done.
Setting amavis password...done.
Deploying CA to /opt/zimbra/conf/ca ...done.
Creating server entry for server1.example.com...done.
Setting spell check URL...done.
Setting service ports on server1.example.com...done.
Adding server1.example.com to zimbraMailHostPool in default COS...done.
Installing skins...
hotrod
lavender
waves
steel
sky
bones
yahoo
sand
lemongrass
beach
bare
done.
Setting zimbraFeatureIMEnabled=FALSE...done.
Setting zimbraFeatureTasksEnabled=TRUE...done.
Setting zimbraFeatureBriefcasesEnabled=TRUE...done.
Setting zimbraFeatureNotebookEnabled=TRUE...done.
Setting MTA auth host...done.
Setting TimeZone Preference...done.
Creating domain server1.example.com...done.
Creating user admin@server1.example.com...done.
Creating postmaster alias...done.
Creating user wiki@server1.example.com...done.
Creating user spam.m0bqyoayc@server1.example.com...done.
Creating user ham.ygch0qyz1@server1.example.com...done.
Setting spam training accounts...done.
Initializing store sql database...done.
Setting zimbraSmtpHostname for server1.example.com...done.
Initializing logger sql database...done.
Initializing mta config...done.
Configuring SNMP...done.
Setting services on server1.example.com...done.
Setting up zimbra crontab...done.
Setting up syslog.conf...done.

After all you'll be asked if you want to notify Zimbra of your installation. Press "Enter" if you want to do that, or enter "N" (without the quotes) and press "Enter" if you disagree to that. Afterwards the system will be initialized - it should look like this:

Starting servers...done.
Checking for deprecated zimlets...done.
Installing zimlets...
com_zimbra_date
com_zimbra_url
com_zimbra_cert_manager
com_zimbra_phone
com_zimbra_search
com_zimbra_local
com_zimbra_email
done.
Initializing Documents...done.
Restarting mailboxd...done.

Moving /tmp/zmsetup.02062008-135354.log to /opt/zimbra/log

Por ultimo para verificar que todo este bien nos cambiamos al usuario zimbra y verificamos que todos los servicios esten arriba de la siguiente manera

su - zimbra
zmcontrol status Esto nos deberia de arrojar como resultado lo siguiente
Host server1.example.com
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Running
mta Running
snmp Running
spell Running
stats Running

En caso de no arrojar un resultado parecido a este intentamos levantar los servicios asi

zmcontrol start

Si todo ha ido bien tenemos listo nuestro servidor de correo sino es porque te slataste algun paso del manual.

Para empezar a administrar nuestro servidor entramos a la consola administrativa de la siguiente manera https://server1.example.com:7071/zimbraAdmin/ impotante que "A" de Admin este en mayuscula si no esta en mayuscula no va a entrar en la consola aqui nos pide un usuraio y una clave el usuario es admin y la clave es la uqe pusimos hace ratos atras, la consola no la voy a explicar porque ella se explica sola es muy facil y eficiente, todo lo que resta es crear los usuarios y los dominios si vas a hacer el servidor multidominio y listo.

Para entrar en modo usuario entras de la siguiente manera http://server1.example.com introduces el usuario en este formato usuario@midominio.com y la clave si no le pones el @dominio no va a entrar debido a que puede ser servidor multi dominio, como información adicional les digo que antes de empezar a instalar el zimbra tienen que tener el DNS bien configurado apuntando hacia la ip de nuestro servidor de correo porque sino el zimbra les va a dar error en la instalación.

viernes 11 de julio de 2008

Limitar intentos fallidos de ssh o brute force

Hay muchos administradores de red que necesitan conectarse desde fuera a los servidores del trabajo pero no saben como hacen para abrir el puerto ssh sin ser tan vulnerable una opción seria configurar un vpn u otra seria limitar las conexiones de ese puerto por tiempo y numero de conexiones una herramienta ideal para eso seria el iptables el firewall por excelencia de linux aqui les pongo un ejemplo de como hacerlo

iptables -N pqtes-tcp-permitidos
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -m recent --set
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -m recent --pdate --seconds 60 --hitcount 4 -j DROP
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -j ACCEPT

la primera regla crea la cadena de paquetes, la segunda regla agrega el número IP que inicia una conexión SSH a una lista, la tercera regla actualiza la lista y prueba que no hayan más de 4 requerimientos nuevos en un lapso de 60 segundos, Si los hay, la regla descarta el requerimiento. De esta manera limitamos la tasa a máximo 3 requerimientos por minuto por IP

Otra cosa interesante seria bloquear los broadcast aqui dejo la linea de como bloquearlos

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Con esto ya tenemos el ssh seguro y prevenimos el brute force de ssh.

domingo 11 de mayo de 2008

Servidor web con oci8

Existen muchas personas que se rompen la cabesa instalando un servidor web con oci8 que es el drivers para leer las base de datos en oracle a continuación les mostrare como se instala en un servidor con debían o ubuntu.

Primero que nada necesitamos descargar las siguientes librerías de la pagina oficial de oracle solo hay que registrarse es totalmente gratuito el registro. Ojo no importa la versión de las librerías si son mas nuevas o mas viejas es indiferente.

instantclient-basic-linux32-10.2.0.1-20050713.zip
instantclient-sdk-linux32-10.2.0.1-20050713.zip

Luego que tienes las librerías las descomprimes de la siguiente manera

unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip

Luego creas una carpeta en la siguiente ruta mkdir -p /opt/oracle/instantclient que es donde el oci8 va a leer las liberias después de esto el procedimiento es el siguiente:

mv instantclient_10_2/* /opt/oracle/instantclient/
cd /opt/oracle/instantclient/
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so

echo /opt/oracle/instantclient >> /etc/ld.so.conf
ldconfig

Con esto ya tenemos las librerías lista e incluidas en el path del linux ahora abrimos el asistente de instalación aptitude con apt-get no funciona dice que los paquetes no existen cuando si existen e instalamos los siguientes paquetes

apt-get install build-essential php5-dev php-pear apache2 apache2-doc apache2-utils apache2.2-common libapache2-mod-bt libapache2-mod-php5 libapache2-mod-proxy-html libapache2-mod-ruby libapache2-mod-scgi php5-apache2-mod-bt php5-dev php5-uuid php5-ming php5 php5-cgi php5-cli php5-common php5-curl php5-gd php5-imagick php5-json php5-mcrypt php5-memcache php5-odbc php5-snmp

Aparte tienes qie unstalar esto pero abriendo la consola de aptitude porque si no te dice que no existe

aptitude install build-essentials

Con esto ya tenemos sificiente para instalar el oci8 si quiere adicionarle algo mas ya queda de parte de ustedes, ahora a instalar el oci8

mkdir -p /usr/local/src/
cd /usr/local/src/
pear download oci8
tar xzf oci8-1.1.1.tgz
cd oci8-1.1.1
./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient
make
make install

Ya tenemos el oci8 instalado en el sistema solo falta decirle al php que lo lea y lo hacemos de la siguiente manera

echo extension=oci8.so >> /etc/php5/apache2/php.ini
echo extension=oci8.so >> /etc/php5/cli/php.ini

/etc/init.d/apache2 restart

Con esto ya tenemos listo nuestro servidor web con las librerias para que lea base de datos oracle

Despues de tener el servior listo si te da problemas con los caracteres especiales en la base de datos tienes que quitar esta linea en ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin" /etc/init.d/apache2 y colocas esto ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin ORACLE_HOME=/opt/oracle/instantclient NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252".

Sincronizar archivos con rsync

Existe muchas personas que hacer respaldos diarios de archivos o sistemas y copiar todo el sistema a diario en el sitio donde respaldan esto si no usan ningun sistema de respaldos com rdiff o muchos otros que existen en linux hay otra manera de hacerlo con rsyn lo cual hace una comparacion de las dos carpetas y copia solo los archivos modificados sin tener que traspasar otra vez toda la data un ejemplo de esto seria de la siguiente manera.

rsync -a -p -v -L -e ssh /carptea_que_ha_sido_modificada root@IP_del_servidor_de_respaldo:/carpeta_a_donde_guarda_respaldo