miércoles, 26 de mayo de 2010

Material para LPI





Material para la Certificacion de Linux:

* En Ingles:

http://www.ibm.com/developerworks/linux/lpi/

* En Español:

http://www.ibm.com/developerworks/ssa/linux/edu/lpi/index.html

jueves, 20 de mayo de 2010

Hacer capturas de pantalla con Shutter

Shutter

viernes, 14 de mayo de 2010

du

El comando du

Este comando informa al usuario de la cantidad de almacenamiento utilizado por los archivos especificados, posee varias opciones, su sintaxis es la siguiente:

du [opciones] [archivo...]

Sus opciones más significativas son:

-s

Muestra únicamente los tamaños de los archivos especificados en la línea de comandos.
-h

Muestra los tamaños de archivo en un formato más legible.
-c

Muestra en pantalla el espacio total ocupado por los archivos especificados.
-x

Omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos.

Ejemplo 8. Uso administrativo del comando du

El administrador de un servidor necesita saber el espacio en disco ocupado por los distintos directorios del sistema, para hacer limpieza. Para esto, se tiene en cuenta que no se deberán contar aquellos directorios que estén en su propio sistema de archivos, entonces se puede ejecutar de esta forma:

# du -sxh /*
6.8M /bin
6.7M /boot
351k /dev
34M /etc
2.8G /home
43M /lib
3.0k /mnt
0 /proc
15M /root
7.3M /sbin
512 /swap
281k /tmp
5.3G /usr
758M /var

Crontab

Columnas del crontab
m minutos 0-59
h horas 0-23
dom dia del mes 1-31
mon mes 1-12 (o nombre del mes en ingles, como jan, feb, etc)
dow dia de la semana 0-6 siendo 6 el dia domingo
command El comando que sera ejecutado


Como ejemplo podemos pensar en:

0 1 24 5 0 /scripts/comando.sh



La linea anterior correra el comando a la 1:00AM, el dia lunes 24 de Mayo. Que es lo mismo si lo escribimos asi:

0 1 24 may mon /scripts/comando.sh



Ahora bien, que pasa si queremos correr un comando cada hora sin importar la fecha? Un asterisco * es interpretado por el cron como ejecutar el comando especificado toda vez que sea posible segun la columna. Asi que para correr un comando automaticamente via cron cada hora, escribimos en el crontab lo siguiente:

0 * * * * /scripts/comando.sh



Lo cual sera ejecutado todos los dias, cada hora en el minuto 0, en otras palabras a la hora en punto.

Esto permite especificar una variacion de los campos. Digamos que necesitamos ejecutar un comando cada dos horas, para esto escribimos en el campo de hora */2, lo cual sera ejecutado a las 2, 4, 6, 8 etc.

Tambien es posible la utilizacion de comas para indicar la ejecucion mas de una vez. Digamos que queremos ejecutar el comando treinta minutos despues de la hora en punto, y luego cuarenta y cinco minutos despues. Especificamos en el campo minuto asi: 30,45.

Si se escribe un gion – entre dos valores, esto incluira todos los valores en ese intervalo de tiempo. Como ejemplo podemos imaginar correr un comando la primera semana del mes. Con este fin en el dia del mes escribimos: 1-7.

Asi que para correr el comando cada 2 horas, treinta minutos despues de la hora en punto y quince minutos antes de la siguiente hora en punto durante los 7 primeros dias del mes, escribimos en el crontab:

30,45 */2 1-7 * * /scripts/comando.sh



Para guardar la salida del comando en un archivo de texto, podemos escribirlo asi en el crontab:

0 * * * * /scripts/comando.sh >> /home/user/crontab.log



Por default, la salida es enviada por correo a la cuenta del administrador del sistema, para evitarnos esto agregamos lo siguiente al comando:

0 * * * * /scripts/comando.sh >> /home/user/crontab.log 2>&1



Igualmente, si no se requiere ninguna salida del comando, esta puede ser redirigida a /www.null:

0 * * * * /scripts/comando.sh >> /www.null 2>&1



Obviamente la idea del cron es tener alguna informacion de lo que ha ejecutado, de lo contrario es bastante inutil. Pero a veces esta de mas tener guardada la misma informacion.

Creo que se me habia olvidado mencionar la forma de usar crontab para hacer que crond ejecute nuestros comandos. Para crear o editar las entradas del cron, utilizamos el comando crontab -e, lo cual abrira un editor de texto en el cual podemos agregar las entradas al cron, una por linea.

El comando crontab -e ejecuta vi por default. Si se quiere utilizar otro editor de texto se puede cambiar la variable de entorno VISUAL.

deathbian:~# export VISUAL='pico -w'



Para ver todas las entradas creadas en el cron tecleamos el siguiente comando:

deathbian:~# crontab -l



Si queremos borrar todas las entradas al crontab de un usuario tecleamos crontab -r, con el usuario que deseamos borrar sus entradas en el cron.
Nota: El superusuario root puede editar los crontabs de otros usuarios tecleando: crontab -e -u usuario

jueves, 13 de mayo de 2010

Instalar y Configurar Nginx, FastCGI, PHP5 y MySQL




Primer punto: Instalar NGINX en Ubuntu de cero.

La verdad es que su instalación es relativamente fácil, solamente con un sudo aptitude install nginx ya se instala. Pero nos aseguramos si realmente los repositorios que tenemos agregados en nuestro Karmic Koala contienen Nginx:


sudo aptitude search nginx

#Salida de la ejecución del comando
p nginx - small, but very powerful and efficient web server and mail proxy


Después de cerciorarnos que tenemos disponible el paquete nginx pasamos a su instalación, por lo tanto:


sudo aptitude install nginx

#Tendría que aparece algo similar a esto:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
nginx
0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 160 sin actualizar.
Necesito descargar 329kB de ficheros. Después de desempaquetar se usarán 803kB.
Escribiendo información de estado extendido... Hecho
Des:1 http://es.archive.ubuntu.com karmic/universe nginx 0.7.62-4ubuntu1 [329kB]
Descargados 329kB en 1s (313kB/s).
Seleccionando el paquete nginx previamente no seleccionado.
(Leyendo la base de datos ... 00%
126264 ficheros y directorios instalados actualmente.)
Desempaquetando nginx (de .../nginx_0.7.62-4ubuntu1_i386.deb) ...
Procesando disparadores para man-db ...
Procesando disparadores para ufw ...
Procesando disparadores para sreadahead ...
Configurando nginx (0.7.62-4ubuntu1) ...

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho


En fin, hemos tardado ¿3 -5 minutos? No está mal. Para arrancar el server o pararlo, es parecido al servidor apache, pero cambiando el nombre del script:


sudo /etc/init.d/nginx start

#Salida en pantalla tras la ejecución del script
Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
nginx.


IMPORTANTE: este servidor utiliza por defecto el puerto 80, al igual que Apache2. No podemos pretender tener configurado el servidor apache en el puerto 80 y querer también el Nginx, por lo tanto, hay que cambiar el puerto del Apache, desinstalarlo, … eso ya va a vuestro gusto :P
Segundo punto: Instalación de PHP5 y los paquetes adicionales

Os pongo todos los paquetes que se deben instalar, algunos porque son dependecias u otros porque son plugins… en fin que se deben instalar. El comando completo es:


sudo aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Se descargarán bastantes kbytes de información.

Justo después de esto, debemos modificar el php.ini incluyendo el siguiente texto al final del fichero:
ACTUALIZACIÓN = el php.ini lo encontramos en /etc/php5/cgi/php.ini

cgi.fix_pathinfo = 1

Esta línea es necesaria para que el PHP funcione correctamente como CGI.
Tercer punto: Instalación del FastCGI

En la instalación de este paquete tenemos un grave problema. En Ubuntu no tenemos ningún paquete explícito para instalar FastCGI, para ello necesitaremos instalar el lighttpd.
Debemos tener en cuenta que el lighttpd también es un servidor web y en su configuración está especificado que el puerto de escucha es el 80. Upss, pero el puerto 80 ya esta siendo utilizado, por lo tanto, fijáos bien en la salida por pantalla de la ejecución del siguiente comando:


sudo aptitude install lighttpd

#Salida de la instalación
........
Se instalarán los siguiente paquetes NUEVOS:
libterm-readline-perl-perl{a} lighttpd
0 paquetes actualizados, 2 nuevos instalados, 0 para eliminar y 160 sin actualizar.
Necesito descargar 371kB de ficheros. Después de desempaquetar se usarán 1245kB.
¿Quiere continuar? [Y/n/?] y
Escribiendo información de estado extendido... Hecho
Des:1 http://es.archive.ubuntu.com karmic/universe libterm-readline-perl-perl 1.0302-1 [52,0kB]
Des:2 http://es.archive.ubuntu.com karmic/universe lighttpd 1.4.22-1ubuntu4 [319kB]
Descargados 371kB en 1s (326kB/s).
Seleccionando el paquete libterm-readline-perl-perl previamente no seleccionado.
(Leyendo la base de datos ... 00%
126682 ficheros y directorios instalados actualmente.)
Desempaquetando libterm-readline-perl-perl (de .../libterm-readline-perl-perl_1.0302-1_all.deb) ...
Seleccionando el paquete lighttpd previamente no seleccionado.
Desempaquetando lighttpd (de .../lighttpd_1.4.22-1ubuntu4_i386.deb) ...
........
update-alternatives: usar /usr/bin/spawn-fcgi.lighttpd para proporcionar /usr/bin/spawn-fcgi (spawn-fcgi) en modo automático
Syntax OK
* Starting web server lighttpd
lighttpd
2010-02-27 10:50:38: (network.c.300) can't bind to port: 80 Address already in use
[fail]
invoke-rc.d: initscript lighttpd, action "start" failed.

.......


He señalado dos frases importantes:

* La primera: la he remarcado por la siguiente palabra, spawn-fcgi, que es lo que utilizaremos como el fast-CGI
* La segunda: importante porque nos indica que el puerto 80 ya está en uso :P

Para utilizar el spawn-cgi antes deberemos eliminar del fichero de arranque el lighttpd, que realmente no utilizaremos. Entonces, ejecutamos el comando:


sudo update-rc.d -f lighttpd remove

#Salida por pantalla
Removing any system startup links for /etc/init.d/lighttpd ...
/etc/rc0.d/K09lighttpd
/etc/rc1.d/K09lighttpd
/etc/rc2.d/S91lighttpd
/etc/rc3.d/S91lighttpd
/etc/rc4.d/S91lighttpd
/etc/rc5.d/S91lighttpd
/etc/rc6.d/K09lighttpd

Con la ejecución de este último comando, el cual necesita permisos de superusuario, elimina del inicio del sistema, el arranque del lighttpd.
Cuarto paso: Configuración del FastCGI (concretamente Spawn-cgi)

Principalmente este paso es importante porque tenemos que modificar scripts, crear de nuevos, etc.

1. Para que el funcionamiento del PHP FastCGI sea correcta necesitaremos indicar: puerto de escucha, usuario y grupo. Se puede realizar mediante la siguiente línea de código:


/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

2. Pero esto TIENE UN PROBLEMA, cada vez que reiniciamos el servidor o mejor dicho el PC, necesitaremos ejecutar la línea anterior. Por ello, lo que haremos será modificar el fichero de administración local, llamado rc.local, incluyendo en el fichero la línea anterior. Esto nos permitirá no tener que añadir esta misma línea cada vez.
El fichero lo encontraremos en: /etc/rc.local, y tendría que quedar una cosa así:


.......
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

exit 0

3. Ahora tenemos que crear un script con el nombre php-fastcgi en el siguiente directorio:


/etc/init.d/php-fastcgi

4. Contenido del fichero deber ser el siguiente:


1 #! /bin/sh
2 ### BEGIN INIT INFO
3 # Provides: php-fastcgi
4 # Required-Start: $all
5 # Required-Stop: $all
6 # Default-Start: 2 3 4 5
7 # Default-Stop: 0 1 6
8 # Short-Description: Start and stop php-cgi in external FASTCGI mode
9 # Description: Start and stop php-cgi in external FASTCGI mode
10 ### END INIT INFO
11
12 # Author: Kurt Zankl <[EMAIL PROTECTED]>
13
14 # Do NOT "set -e"
15
16 PATH=/sbin:/usr/sbin:/bin:/usr/bin
17 DESC="php-cgi in external FASTCGI mode"
18 NAME=php-fastcgi
19 DAEMON=/usr/bin/php-cgi
20 PIDFILE=/var/run/$NAME.pid
21 SCRIPTNAME=/etc/init.d/$NAME
22 PHP_CONFIG_FILE=/etc/php5/cgi/php.ini
23
24 # Exit if the package is not installed
25 [ -x "$DAEMON" ] || exit 0
26
27 # Read configuration variable file if it is present
28 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
29
30 # Load the VERBOSE setting and other rcS variables
31 . /lib/init/vars.sh
32
33 # Define LSB log_* functions.
34 # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

Puedes descargar el fichero php-fastcgi.
El fichero tiene la extensión .txt para que el Wordpress no lo detectase como corrupto, por ello, cuando copiéis el fichero en la ruta /etc/init.d/ debéis eliminar la extensión .txt
5. Necesitamos que este script tenga permisos de ejecutable, por lo tanto, la ejecución del siguiente comando nos permitirá que lo sea:


chmod +x /etc/init.d/php-fastcgi

Quinto paso: Configuración de Nginx para que funcione con FastCGI

Ahora le toca a Nginx…debemos configurar a este servidor web, para que los ficheros php los pueda servir mediante FasfCGI. Pasemos entonces a configurar el virtualhost default de ngnix:


sudo vim /etc/nginx/sites-available/default

#Necesitamos añadir el texto siguente:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

Con todo esto ya tenemos instalado nginx – php5 – FastCGI, como prueba podríamos crear un fichero info.php en el directorio raix de nginx, que según el ejemplo y el virtualhost, lo encontraremos en: /var/www/nginx-default/

Samba Recurso compartido de Linux a Windows

En el archivo smb.conf

Crear lo siguiente:


[Nombre_del_recurso_compartido]
comment = Site de xxxxxxxxxxxxxxxxx
path = /var/www/xxxxxxxxxxx
public = yes
browseable = yes
writable = yes
read only = no
valid users = Nombre_del_usuario_creado
create mask = 0777
directory mask = 0777
# valid users = %S
# guest only = yes

Autentica , crear usuario y password correspondientes

Verificar modulos cargados de PHP





Guardar esto como testphp.php luego browsearlo

Sugar CRM

Preparing your system

Install all the required packages using the following commands

sudo apt-get install libapache2-mod-php5 libapache2-mod-perl2

sudo apt-get install php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-ldap unzip

sudo apt-get install php5-mhash php5-mysql php5-odbc curl libwww-perl imagemagick

Creating SugarCRM Database

$ mysql -u root -p

mysql> create database sugarcrm;

mysql> exit

Installing SugarCRM

Now you need to go to your webserver document root directory (default location is /var/www)

cd /var/www

Download SugarCRM community edition from here or using the following command (at the time of writing this article sugarCRM Community edition 5.1.0b

wget http://www.sugarforge.org/frs/download.php/4742/SugarCE-5.1.0b.zip

Now you should be having SugarCE-5.1.0b.zip file and unzip using the following command

unzip SugarCE-5.1.0b.zip

Move all the contents from SugarCE-5.1.0b directory to sugarcrm

sudo mv SugarCE-5.1.0b sugarcrm

Give Apache Ownership Over SugarCRM Files (apache-user: www-data)

sudo chown www-data -vR /var/www/sugarcrm

Give Write Permitions for Apache on Some of SugarCRM Files

cd /var/www/sugarcrm

sudo chmod 766 config.php

sudo chmod 766 custom

sudo chmod -R 766 data

sudo chmod -R 766 cache

sudo chmod -R 766 modules

Configuring php.ini file

You need to edit the php.ini file using the following command

sudo gedit /etc/php5/apache2/php.ini

Change

;memory_limit = 16M

to

memory_limit = 50M

Change

;upload_max_filesize = 2M

to

upload_max_filesize = 10M

Restart apache server using the following command

sudo /etc/init.d/apache2 restart

Configure sugarCRM

Now open your webbrowser and enter the following address

http://serverip/sugarcrm/install.php

Follow the on-screen instructions and Enjoy your sugarcrm.

miércoles, 12 de mayo de 2010

Gufw firewall sencillo para Ubuntu

Gufw es un front-end para ufw (uncomplicated firewall), el firewall que trae por defecto ubuntu, basicamente permite interactuar con el firewall de manera muy sencilla, podemos optar por bloquear/permitir un puerto, un servicio, o un rango de IP's y puertos.

WIFI Configuracion a mano

Para una IP Estatica

auto wlan0 or your wifi device
iface wlan0 inet static
wireless-essid NOMBRE_DE_LA_RED
wireless-key CLAVE
address IP_PRIVADA
netmask MASCARA_DE_RED
gateway PUERTA_DE_ENLACE
nameserver SERVIDORES DE NOMBRES

Para una IP Dinamica

auto wlan0 or your WIFI device
iface wlan0 inet dhcp
wireless-essid NOMBRE_DE_LA_RED
wireless-key CLAVE
wireless-mode managed

Acabando esto se reinicia la red

sudo /etc/init.d/networking restart

GTALK UBUNTU......

En el siguiente link encontraran a gtalk para ubuntu se encuentra en etapa de prueba , pero bue habra que verlo.

http://sites.google.com/site/jozsefbekes/Home/gtalx

Download Videos de Youtube

aptitude install youtube-dl


1. Para descargar un vídeo cuya dirección es http://www.youtube.com/watch?v=wr9MvcQ9p7A&NR=1 con una calidad normal y con el nombre del archivo de salida video1.flv hacemos lo siguiente:
$youtube-dl -o video1.flv http://www.youtube.com/watch?v=wr9MvcQ9p7A&NR=1

2. A veces Youtube ofrece vídeos en una calidad superior a la habitual apareciendo un enlace que pone . En este caso podemos poner la opción -b y se descargará el vídeo en formato MP4 en lugar de FLV. Por ejemplo:
$youtube-dl -b -o '%(title)s.%(ext)s' http://www.youtube.com/watch?v=sua0alORXGI&feature=dir
descargaría un vídeo con el título que tenga en Youtube y la extensión mp4




Bajar video

youtube-dl -o ubuntu9_10_instalacion http://www.youtube.com/watch?v=NUhy8W-mgAM

martes, 11 de mayo de 2010

openvpn

Instalación:

Bueno la instalación es bastante simple:

apt-get install openvpn openssl

Una vez instalado se deben generar las claves de servidor y de los clientes, pero antes se deben organiza los scripts de generación de estas llaves lo cuales en Debian se encuentran en:

/usr/share/doc/openvpn/examples/easy-rsa

En lo personal recomiendo copiar estas llaves a una hubicación de mas fácil acceso:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/

Luego:

cd /etc/openvpn/easy-rsa/

Vamos a editar el archivo var, esto para personalizar la futura generación de certificados y de identificar nuestra VPN. En si lo que vamos a editar son los últimos cinco datos:

export KEY_COUNTRY=nuestro_pais
export KEY_PROVINCE=nuestra_provincia
export KEY_CITY=nuestra_ciudad
export KEY_ORG="Nuestr_Organización"
export KEY_EMAIL="email_de_contacto

Luego de esto vamos a generar las claves del servidor:

. ./vars
./clean-all
./build_ca

Se nos haran varias preguntas, en al que hay que manternet la misma respuesta es en:

Common Name (eg, your name or your server's hostname)


Ahora vamos a crear un certificado de servidor firmado con la CA recien creada:

./build-key-server server

Se nos haran unas preguntas, recordando mantener Common Name como lo hemos hecho desde el principio y a las demas preguntas deberemos responder "y"

Ahora generaremos los parámetros Deffie Hellman, utilizados en el tunel SSL y únicos para nuestro servidor:

./build-dh

Una vez terminado este proceso los archivos generados estaran en:

/etc/openvpn/easy-rsa/keys

Ahora lo que sigue es configurar el tunel en si, esto se hace editando el archivo server.conf que en debian en un principio esta hubicado en:

cd /usr/share/doc/openvpn/examples/sample-config-files

Se encuentra comprimido asi que :

gunzip server.conf.gz

Lo ponemos en su debida hubicación y nos preparamos a editarlo:

cp server.conf /etc/openvpn/

luego

cd /etc/openvpn/

luego

vim server.conf

Los valores signifcativos son, la mayoria ya estan como los necesitamos, pero si debemos especificar la hubicación de los certificados, en este caso seria:

/etc/openvpn/easy-rsa/keys

La sentencia push según este link dice:

Provocará que el cliente cuando se conecte agregue una ruta adecuada para alcanzar la red de la oficina



Y la sentencia route:

Agregará una ruta del lado del servidor para alcanzar la red de la casa



En nuestro caso lo dejemos comentado.

Para habilitar que cliente de ambas redes se "vean" entre si, y no solamente al servidor, debemos descomentar la siguiente sentencia:

client-to-client

A las demas sentencias no hay necesidad de hacerles cambios.

Ahora lo que resta es crear los usuarios que se van a conectar a nuestro servidor:

cd /etc/openvpn/easy-rsa/

. ./vars

./build-key-pass usuario1

Igual que antes, se nos haran varias preguntas de las cuales recomiendo mantener Common Name, como se ha hecho desde el pricipio.

Luego en cada uno de nuestros clientes, en caso de ser Windows, desda aca podemos bajar el cliente VPN.

Una vez instalado este software en un cliente windows deberemos copiar en ej: c:/Archivos de Programa/OpenVpn/config los siguientes archivos

ca.crt
usuario1.crt
usuario1.key

Además de estos archivos el GUI trae unos archivos de ejemplo de los cuales debemos extrar el de cliente y editarlo de manera que apunte a la dirección IP de nuestro server, ademas de que apunte al nombre y hubicación correctos de los archivos ca,usuario1.crt y usuario1.key.


Luengo abajo al lado dercho del escritorio de Windows se nos creará un icono de OpenVPN, le damos "conectar" y todo debiria andar bien.
Haciendo ping hacia 10.8.0.1 podemod probar la conectividad con el servidor.

WordPress




http://es.wordpress.org/

Backup Bases

http://ilmaistro.com/hacer-backups-automaticos-base-datos-wordpress/

lunes, 10 de mayo de 2010

Recuperando el password de root para mysql

Cambiar el password de root en mysql

Paramos mysql
#>/etc/init.d/mysql stop
Entramos en mysqld_safe… sin password
#>/usr/bin/mysqld_safe --skip-grant-tables &
#>mysql
Cambiamos a la base de datos mysql
mysql>use mysql;
Ponemos un nuevo password
mysql>update user set password = PASSWORD("nuevo_pass") where User = "root";
mysql>quit
y reiniciamos mysql
#>killall mysqld
#>/etc/init.d/mysql start

instalando DNS, Bind 9. Chroot

Por fin me he decido a gestionar yo mismo el dns de los dominios que tengo. Los servicios de dns que usado, aunque normalmente no me han dado demasiados problemas, son un poco engorrosos y no te dan la libertad que tienes al hacerlo tú mismo.

El primer problema que nos encontramos al gestionar un servicio que ofreceremos a internet es el de la seguridad y Bind y el DNS es un servicio con comunes problemas de seguridad con lo que hay que tener el máximo cuidado posible. La instalación de Bind en un chroot no es complicada una vez conoces los pasos adecuados y la gestión es idéntica a su instalación normal. Así que por el mismo precio lo instalamos en una jaula.

No voy a explorar el tema de bind y el firewall, quizás para otra ocasión.

El primer paso es instalar los paquetes de nuestra distribución Debian .

nahia:~# aptitude install bind9 bind9-doc dnsutils

Esto habrá instalado la última versión disponible en nuestro sistema, pararemos el servicio de dns para poder cer los cambios y crear el chroot.

nahia:~# /etc/init.d/bind9 stop

Crearemos la estructura de directorios del chroot y haremos al usuario bind dueño de estos directorios.

nahia:~#mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run}
nahia:~# chown -R bind:bind /var/chroot/bind9/var/*

Con mknod crearemos los devices que necesitaremos y le daremos los permisos adecuados:

nahia:~# mknod /var/chroot/bind9/dev/null c 1 3
nahia:~# mknod /var/chroot/bind9/dev/random c 1 8
nahia:~# chmod 666 /var/chroot/bind9/dev/{null,random}

Ahora copiaremos la configuración previa (si la teníamos) a la estructura del chroot:

nahia:~# mv /etc/bind /var/chroot/bind9/etc
nahia:~# ln -s /var/chroot/bind9/etc/bind /etc/bind

De esta manera podremos seguir configurando bind como lo hacíamos hasta ahora.

Nos toca crear la parte de configuración de log. En mi caso, estoy usando Debian Lenny, la versión testing de Debian en el momento de escribir estas notas. Debian ha cambiado syslogd por rsyslog.
Nota: en el sistema donde hice la instalación, una debian testing “dist-upgradeada” desde la stable “etch” tuve que instalar rsyslog a mano.

Crearemos el siguiente fichero:

nahia:~# vi /etc/rsyslog.d/bind-chroot.conf

con el siguiente contenido:

$AddUnixListenSocket /var/chroot/bind9/dev/log

Ahora sólo nos queda indicarle al arranque de bind cómo arrancar:

Dejaremos el fichero /etc/default/bind9 así:

OPTIONS=”-u bind -t /var/chroot/bind9″
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Con esto le estamos diciendo que arranque bind con el usuario (-u) bind con pocos privilegios y (-t) el directorio del chroot. Si el nombre del group al que pertenece bind es diferente del usuario -u bind tendremos que especificarlo también con (-g).

Ya podemos arrancar el servicio y veremos si todo ha ido bien:

nahia:~# /etc/init.d/bind9 start
Starting domain name service…: bind9.

nahia:~# ps -ef | grep named
bind 8577 1 0 19:15 ? 00:00:00 /usr/sbin/named -u bind -t /var/chroot/bind

Ya está, ya tenemos instalado bind9 en un entorno chroot. La configur
ación de las zonas y de los esclavos lo dejo para otros artículos.

Ve la TV en tu Gnu/Linux Ubuntu



DESPUES DE QUE MI PROGRAMA FAVORITO PARA VER TV EN GNU/LINUX Y GÜINDOWS, ZATTOO SE VOLVIERA DE PAGO, HE ENCONTRADO ESTE OTRO QUE ESTA BASTANTE BIEN, EL PROGRAMA SE LLAMA LIVESTATION:

LA INSTALACION ES SENCILLA Y LA DETALLO A CONTINUACION:

http://www.livestation.com/downloads DESCARGAMOS LA VERSION DE LINUX DE SU PAGINA

ABRIMOS UN TERMINAL

VAMOS AL DIRECTORIO DONDE LO HALLAMOS DESCARGADO: cd Escritorio

LE DAMOS PERMISOS DE EJECUCION: chmod +x Livestation-2.3.0.run

Y LO EJECUTAMOS: dpkg -i Livestation-2.3.0.run


PARA EJECUTAR EL PROGRAMA PONER livestation EN UN TERMINAL, O CREAR UN LANZADOR DE APLICACION CON EL COMANDO livestation

NOTA: PARA BUSCAR LOS CANALES EN ESPAÑOL, ME FUI A SEARCH Y PUSE spanish Y LE DI A BUSCAR Y LOS AGREGE EN FAVORITOS

Salvapantallas en consola estilo Matrix




Esta tarde se me ocurrio buscar, ya sabia que habia desde hace años un salvapantallas de Matrix disponible en Ubuntu / Debian y tengo la consola o terminal con los colores de matrix (verde sobre negro), pero mi pregunta era?

Habrá algo parecido a un salvapantallas para la terminal / consola?

Pues despues de unos minutos investigando, la respuesta es si (hay gente mas friki que yo), ademas esta en los repositorios, para instalar:

sudo apt-get install cmatrix

Para ejecutarlo, en un terminal o mejor en una sesion sin entorno grafico (ctrl+alt+F1) (ctrl+alt+F7 para volver a gnome):

cmatrix

Para ver las opciones:

cmatrix -man

recomiendo:

cmatrix -l -b

La -l utiliza las fuentes de matrix (me funciona solamente fuera de gnome) y la -b resalta algunas fuentes como en la peli.

( Para cerrar la aplicacion CTRL + C )

viernes, 7 de mayo de 2010

Comando netstat en Linux

El comando netstat (Network status) nos informa sobre la configuración y actividad de la red. Veamos las principales opciones de este comando:

* configuración de las interfaces de red: la opción -i nos mostrará la configuración de las interfaces de red activas y con la opción -e obtendremos información extendida (obtendremos la misma salida que con el comando ifconfig):

$ netstat -ie
eth0 Link encap:Ethernet HWaddr 00:4F:49:01:E9:91
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::24f:49ff:fe01:e991/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:141 errors:0 dropped:0 overruns:0 frame:0
TX packets:71 errors:96 dropped:0 overruns:0 carrier:192
collisions:1632 txqueuelen:1000
RX bytes:17043 (16.6 KiB) TX bytes:10292 (10.0 KiB)
Interrupt:10 Base address:0xe000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:244 errors:0 dropped:0 overruns:0 frame:0
TX packets:244 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16432 (16.0 KiB) TX bytes:16432 (16.0 KiB)

Si tenemos activa una conexión PPP (modem), veremos la interfaz ppp0:

ppp0 Link encap:Point-to-Point Protocol
inet addr:80.103.4.222 P-t-P:62.36.214.19 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:2151 (2.1 KiB) TX bytes:63 (63.0 b)

Si añadimos la opción -a mostrará también las interfaces que no estén up.
* enrutamiento: la opción -r nos mostrará la tabla de enrutamiento (obtendremos la misma salida que con el comando route):

$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

Vemos que netstat usa el mecanismo de resolución de nombres: en vez de la IP de red 192.168.1.0 usa localnet, el nombre que figura en /etc/networks. El contenido de /etc/networks es:

localnet 192.168.0.0

Para evitar el mecanismo de resolución de nombres y ver el enrutamiento con las direcciones IP añadiremos la opción -n:

$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

* conexiones activas: para ver las conexiones activas TCP (-t) y UDP (-u) haremos:

$ netstat -tu
Active Internet Connections (servers)
Proto R S Local Address Foreign Address State
tcp 0 0 pc450.fransbern:50053 212.23.37.8:www ESTABLISHED
tcp 0 0 pc450.fransbern:46854 uned.es:https ESTABLISHED
tcp 0 0 pc450.fransberns.com:1024 192.168.0.3:telnet ESTABLISHED

Por ejemplo, vemos que tenemos una conexión Telnet activa con origen en nuestra máquina y destino la máquina 198.168.0.3. Vemos también que netstat usa los nombres de puertos que figuran en /etc/services. Para evitarlo y ver el número de puerto usaremos la opción -n:

$ netstat -tun
Active Internet Connections (w/o servers)
Proto R S Local Address Foreign Address State
tcp 0 0 192.168.0.2:50053 212.23.37.8:80 ESTABLISHED
tcp 0 0 192.168.0.2:46854 62.204.192.164:443 ESTABLISHED
tcp 0 0 192.168.0.2:1024 192.168.0.3:23 ESTABLISHED

* puertos que están escuchando: para ver los puertos TCP y UDP que están esperando una conexión (escuchando), usaremos la opción -l:

$ netstat -tul
Active Internet connections (only servers)
Proto R S Local Address Foreign Address State
tcp 0 0 *:npmp-gui *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 localhost.localdom:smtp *:* LISTEN
tcp6 0 0 *:ssh *:* LISTEN
tcp6 0 0 *:ipp *:* LISTEN
udp 0 0 *:netbios-ns *:*
udp 0 0 *:netbios-dgm *:*
udp 0 0 *:ipp *:*
udp 0 0 *:xdmcp *:*

miércoles, 5 de mayo de 2010

Grub 1 hasta Ubuntu 8.10

GRUB (GRand Unifier Bootloader) es un gestor de arranque: es lo primero que se carga cuando se inicia la computadora. Permite tener diferentes sistemas operativos, y diferentes versiones de ellos, en el mismo disco duro. Por ejemplo podemos tener Windows y GNU/Linux en la misma computadora, GRUB se cargará antes que cualquiera de éstos permitiéndonos elegir cuál iniciar.

El gestor de arranque GRUB viene preinstalado en la mayoría de las distribuciones de GNU/Linux modernas, entre ellas Debian, Ubuntu y sus derivadas. Anteriormente, el gestor de arranque más usado era LILO.

Los errores en las modificaciones de GRUB pueden llevar a problemas con el arranque. Por esto es recomendable hacer una copia de seguridad del archivo menu.lst antes de realizar algún cambio. Se puede hacer con el siguiente comando:

Antes que todo nos loguiamos como root

$ su
(cable super vaca)

copia de seguridad(recomendada)

# cp /boot/grub/menu.lst /boot/grub/menu.lst.77

Luego, para restaurar la copia de seguridad, hacemos lo siguiente:

# cp /boot/grub/menu.lst.77 /boot/grub/menu.lst



Cambiar el sistema operativo por defecto

Si tenemos Windows instalado y después hemos instalado Ubuntu, la configuración de GRUB por defecto hará que arranque Ubuntu. Si por algún motivo necesitamos que arranque Windows por defecto, veamos los pasos a seguir.

* Editamos el archivo de configuración del menú de arranque de GRUB:

# vim /boot/grub/menu.lst

* Buscamos la siguiente línea:

default 0

* Cambiamos el 0 por el número que ocupe el sistema operativo en la lista que queremos que se inicie por defecto, empezando por 0.
* Guardamos los cambios y cerramos el editor.

Cambiar el tiempo de espera

En Ubuntu, GRUB deja por defecto 10 segundos para permitir la selección del sistema operativo o versión del kernel. Este tiempo puede parecer excesivo o demasiado breve. Para modificarlo basta con seguir los siguientes pasos:

* Editamos el archivo de configuración del menú de arranque de GRUB:

# vim /boot/grub/menu.lst

* Buscamos la siguiente línea:

timeout 10

* Modificamos el valor 10 por el deseado, teniendo en cuenta que se trata de segundos.
* Guardamos los cambios y cerramos el editor.

Ocultar el menú

Si utilizamos normalmente sólo un sistema operativo o una versión del kernel, es molesto que nos aparezca el menú en cada arranque del sistema. GRUB permite configurar el menú de modo que no se muestre al arranque salvo que presionemos la tecla Escape (Esc) durante el mismo. Para hacer esto, seguimos los siguientes pasos:

* Editamos el archivo de configuración del menú de arranque de GRUB:

# vim /boot/grub/menu.lst

Buscamos la siguiente línea:

#hiddenmenu

* Borramos la almohadilla o numeral (#) de la línea, haciendo esto la descomentaremos. Debe quedar así:

hiddenmenu

* Guardamos los cambios y cerramos el editor.


Proteger con contraseña

Para que ningún usuario no autorizado pueda modificar los valores de GRUB en tiempo de ejecución, podemos establecer una contraseña, de esta forma sólo pulsando la tecla 'p' e introduciendo la contraseña se podrán cambiar los parámetros del programa.

* Editamos el archivo de configuración del menú de arranque de GRUB:

# vim /boot/grub/menu.lst

Buscamos la siguiente línea:

#password topsecret

* Borramos la almohadilla o numeral (#) de la línea, haciendo esto la descomentaremos. Debe quedar así:

password topsecret

* Guardamos el archivo y cerramos el editor.

Ahora la contraseña es topsecret, se puede cambiar e introducir la que se desee.

Codificar contraseña

Si queremos que nadie pueda leer la contraseña en el archivo de configuración de GRUB, el programa también ofrece la posibilidad de codificarla en formato md5:

# grub update

* Aparece la consola de GRUB, entonces escribimos:

grub> md5crypt

* Introducimos la palabra a codificar, en este caso topsecret, el programa devolvería el valor:

$1$ddTCc1$8v3fWFR4m5kDfuRG5LUHo/'

* Lo copiamos y volvemos a la consola de Ubuntu:

grub> quit

* En el archivo de configuración del menú de GRUB, borramos la siguiente línea:

# password topsecret'

En su lugar, escribimos:

password --md5 $1$ddTCc1$8v3fWFR4m5kDfuRG5LUHo/

Y ya tenemos nuestro GRUB protegido por contraseña cifrada.

* Guardamos los cambios y cerramos el editor.

Si queremos restringir el acceso a algún elemento del menú de GRUB, basta con añadir después del título del menú una línea con la contraseña, por ejemplo:

title Ubuntu, kernel 2.6.15-26-386 (recovery mode)
password --md5 $1$ddTCc1$8v3fWFR4m5kDfuRG5LUHo/
root (hd1,0)
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hdb1 ro single
initrd /boot/initrd.img-2.6.15-26-386
boot

* Guardamos los cambios y cerramos el editor.

Cambiar colores

Por defecto, en Ubuntu el menú del GRUB tiene un fondo negro con letras blancas. Para cambiar los colores del menú de arranque por otros más atractivos, seguimos los siguientes pasos.

* Editamos el archivo de configuración del menú de arranque de GRUB:

# vim /boot/grub/menu.lst

* Buscamos la siguiente línea:

# color cyan/blue white/blue

* * Borramos la almohadilla o numeral (#) de la línea, haciendo esto la descomentaremos. Debe quedar así:

color cyan/blue white/blue

* Guardamos los cambios y cerramos el editor.

Ahora nos aparecerá un menú con fondo azul, al estilo de varias aplicaciones con interfaz de línea de comandos. Si queremos, podemos cambiar los colores reemplazando las palabras cyan, blue y white por otras, que representen los nombres de distintos colores en inglés.


Colocar una imagen de fondo

En vez de cambiar sólo los colores del menú, GRUB nos brinda la posibilidad de colocar una imagen de fondo para hacerlo aún más atractivo.

La imagen que se puede colocar en GRUB tiene que tener un máximo de 14 colores y un tamaño de 640 × 480 píxeles. Tiene que estar grabada en formato .xpm y conviene que esté comprimida con gzip (extensión .gz), aunque no es imprescindible.

* Para saber desde GIMP cuántos colores tiene nuestra imagen ve a Colores -> Info -> Análisis del cubo de color...
* Si tiene más de 14 colores, podemos reducir el número con Imagen -> Modo -> Indexado.
* Una vez tenemos la imagen, para ponerla de fondo editamos el archivo de configuración del menú de GRUB:

# vim /boot/grub/menu.lst

* Añadimos al principio la línea:

splashimage (hd0,2)/ruta imagen/imagen.xpm.gz

Donde (hd0,2) identifica el disco y partición donde se encuentra la imagen. Esto varía según el equipo. Si tienes un solo disco duro, antes de la coma irá hd0; si tienes Ubuntu en una sola partición, pero compartiendo el disco con otro sistema operativo, posiblemente irá después de la coma un 1. Puede ayudarte ejecutar:

# fdisk -l

teniendo en cuenta que GRUB numera las particiones desde 0 (por ejemplo, (hd0,1) se corresponde con sda2; (hd1,2) con sdb3).

* Reiniciamos y listo, ya tendremos una imagen de fondo en el menú de arranque.

martes, 4 de mayo de 2010

Copias de seguridad

Copias de seguridad

Con rsnapshot podremos hacer copias de seguridad automáticas y periódicas, optimizando al máximo el espacio ocupado mediante el uso de enlaces simbólicos:

apt-get install rsnapshot

Para configurar las copias editamos /etc/rsnapshot.conf para indicar donde se guardaran los scripts:

snapshot_root /var/cache/rsnapshot/

Además, en este mismo fichero vamos a establecer nuestra política de backups: Se almacenaran las últimas 6 horas, los últimos 7 días, las últimas 4 semanas y los últimos 6 meses. Por otra parte, también indicaremos que directorios queremos copiar y que scripts ejecutar:

...
#rsync_short_args -a
rsync_long_args --delete --numeric-ids --relative --delete-excluded --stats --timeout=10
...

#########################################
# BACKUP INTERVALS #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc. #
#########################################

## Tendremos backup de las últimas 6 horas, los últimos 7 días, las últimas 4 semanas y los últimos 6 meses:
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 6

...
# Excluimos algunos ficheros para hacer más pequeños los backups
exclude access.log
exclude access.log.*
exclude access_log
exclude error.log
exclude error.log.*
exclude .bash_history
...

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

# LOCALHOST
backup /etc/ localhost/
backup /home/ localhost
backup /var/www/ localhost
backup /usr/local/ localhost
backup /var/lib/awstats/ localhost
backup /var/lib/bandwidthd/ localhost
backup /var/lib/cacti/ localhost
backup /var/cache/nagios2/ localhost
backup /var/lib/nagios2/ localho
backup_script /usr/local/bin/backup_dpkg.sh localhost/dpkg/
backup_script /usr/local/bin/backup_mysql.sh localhost/mysql/
backup_script /usr/local/bin/backup_info.sh localhost/info/

backup rsnapshot@webserver:/etc/ webserver/ ssh_args=-p 22
backup rsnapshot@webserver:/usr/local/ webserver/ ssh_args=-p 22
backup rsnapshot@webserver:/var/www/ webserver/ ssh_args=-p 22
backup_script /usr/bin/ssh -i /root/.ssh/id_rsa rsnapshot@webserver /home/rsnapshot/.ssh/backup_mysql_all.sh > db.sql webserver/mysql/all/

En este ejemplo estamos haciendo backup tanto de directorios locales (p.ej. /etc) como remotos del servidor ‘webserver’.

Es importante que los parámetros de este fichero de configuración se encuentren separados por tabulaciones y no por espacios, de lo contrario rsnapshot no podrá procesarlo correctamente. Comprobamos que el archivo de configuración sea correcto:

# rsnapshot configtest
Syntax OK

Simula la creación de un snapshot:

# rsnapshot -t hourly

El snapshot más reciente siempre se encontrará en el número más bajo, en el caso de los snapshots realizados cada hora: /var/cache/rsnapshot/hourly.0/

Es recomendable evitar que slocate indexe el backup, editamos /etc/updatedb.conf:

FINDOPTIONS='-ignore_readdir_race'
export FINDOPTIONS
PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"
export PRUNEFS
PRUNEPATHS="/tmp /usr/tmp /var/tmp /var/spool /media /var/cache/rsnapshot /var/cache/rsnapshot-tar"
export PRUNEPATHS
NETPATHS=""
export NETPATHS
LOCALUSER="nobody"
export LOCALUSER
NICE=10
export NICE
IONICE_CLASS=2
export IONICE_CLASS
IONICE_PRIORITY=7
export IONICE_PRIORITY

Utilidades rsnapshot

A la hora de hacer backup, además de especificar directorios concretos podemos hacer que se ejecuten scripts (p.ej. que realicen volcados de las BBDD) para que también se efectue una copia de su resultado (en el fichero de configuración de ejemplo anterior, se puede observar como hay varios scripts especificados).
Información de estado

A modo de ejemplo, podemos crear un script a medida /usr/local/bin/backup_info.sh que genere varios ficheros con el estado de la máquina en el momento de realizar la copia:

#!/bin/bash
# Date
/bin/date -R > date.out
# Host name and kernel
/bin/uname -a > uname.out
# Interfaces
/sbin/ifconfig -a > ifconfig.out
# Disk space
/bin/df -h > df.out
# Processes
/bin/ps aux > ps.out
# Open ports & conections
/bin/netstat -atunp > netstat.out
/usr/bin/lsof -i > lsof-i.out
# Processes with lots of files open
/usr/bin/lsof +c 15 | awk '{printf("%15s (%s)n", $1, $2)}' | sort | uniq -c | sort -rn | head > losf-processes-with-lots-of-open-files.out
# Mounted filesystems
/bin/mount > mount.out
# Connected users
/usr/bin/who > who.out
# Firewall rules
/sbin/iptables -L > iptables.out
# Daemons & init scripts
/usr/sbin/sysv-rc-conf --list > sysv-rc-conf.out
# Files with special permissions
#/usr/bin/find / -path /proc -prune -o -perm -2 ! -type l -ls > find-world-writable.out
#/usr/bin/find / -path /proc -prune -o -nouser -o -nogroup > find-files-without-owner.out
#/usr/bin/find / -path /proc -prune -o -type f -perm +6000 -ls > find-suid-guid.out

dpkg y mysql

Scripts que copian el listado de paquetes instalados en Ubuntu y un volcado de la MySQL:

cp /usr/share/doc/rsnapshot/examples/utils/backup_dpkg.sh /usr/local/bin/
cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

Editamos ‘/root/.my.cnf’ para establecer el password de root y así poder realizar volcados sin necesidad de interaccionar con la máquina:

[client]
user = root
password = secret
host = localhost

Ejecutamos:

chmod 600 /root/.my.cnf

En el fichero de configuración especificaremos los scripts a ejecutar y el destino de su resultado:

backup_script /usr/local/bin/backup_dpkg.sh localhost/dpkg/
backup_script /usr/local/bin/backup_mysql.sh localhost/mysql/

Backups remotos

Si queremos hacer backup de directorios remotos o incluso ejecutar scripts remotos (p.ej. volcado mysql), en el servidor donde tenemos rsnapshot debemos generar una clave SSH con ssh-keygen (ver sección correspondiente) para el usuario root (/root/.ssh/).

En la máquina a la que queremos conectarnos para hacer las copias, crearemos un usuario bloqueado:

useradd -d /home/rsnapshot -m -K PASS_MAX_DAYS=-1,PASS_MIN_DAYS=0,PASS_WARN_AGE=0,UMASK=0022 -s /bin/bash rsnapshot
passwd -l rsnapshot
mkdir -p /home/rsnapshot/.ssh

Además, permitiremos que el usuario ejecute ‘rsync’ como root mediante ’sudo’ sin necesidad de contraseña. Para ello ejecutamos ‘visudo’ y añadimos al final:

rsnapshot ALL=NOPASSWD: /usr/bin/rsync

Para que rsnapshot funcione se conecte remotamente sin intervención, necesitamos copiar la clave pública a ‘/home/rsnapshot/.ssh/authorized_keys’ y conviene establecer todas las limitaciones posibles (ver sección SSH):

from="71.21.5.19",command="/home/rsnapshot/.ssh/validate-ssh.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAUTQEbt7GOcR4jZ2bTgzxpgABIwAAAQEAwAQKRBv+ABDyOgvHfAxSVcWOEzhieC7rwrBjquLJw0W+U9vD7QgmffmuKDZksI7bAAB3NzaC1yc2EAAAdbHBOGg/zgXcrCNsuJ5IJoDw== root@server.com

En este ejemplo, el usuario solo podrá ser utilizado desde una IP concreta, siempre que tenga la clave privada y únicamente podrá ejecutar el script ‘/home/rsnapshot/.ssh/validate-ssh.sh’:

#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
*&*)
echo "Rejected"
;;
*(*)
echo "Rejected"
;;
*{*)
echo "Rejected"
;;
*;*)
echo "Rejected"
;;
*< *)
echo "Rejected"
;;
*`*)
echo "Rejected"
;;
rsync --server*)
# the calling user HAST TO BE in the sudoers list for executing rsync!
sudo $SSH_ORIGINAL_COMMAND
;;
mysqldump *)
$SSH_ORIGINAL_COMMAND
;;
/home/rsnapshot/.ssh/backup_mysql_all.sh)
/home/rsnapshot/.ssh/backup_mysql_all.sh
;;
*)
echo "Rejected $SSH_ORIGINAL_COMMAND"
;;
esac

Este script permitirá al usuario ejecutar únicamente 'rsync' (con permisos de root mediante 'sudo'), 'mysqldump' y el script '/home/rsnapshot/.ssh/backup_mysql_all.sh':

#!/bin/bash
/usr/bin/mysqldump --all-databases --add-drop-table --password=secret -u miusuario

El script anterior realiza un volcado de todas las BBDD de MySQL utilizando un usuario/password determinado. Dado que contiene información sensible, el script debe tener permisos restrictivos:

chown -R rsnapshot:rsnapshot /home/rshapshot
chmod 700 /home/rshapshot/.ssh/*.sh

Con esto ya tenemos preparado todo el montaje. Rsnapshot podrá conectarse al servidor (ver fichero de configuración de ejemplo anterior, donde se definían copias del servidor ‘webserver’) sin contraseña y hacer backups de directorios y MySQL. Adicionalmente, hemos establecido controles adicionales para minimizar la posibilidad de que un atacante pueda intentar aprovecharse de la configuración (cifrado SSH, autenticación por clave asimétrica limitada a una IP y a unos comandos concretos).
Tars semanales

De forma semanal, haremos que se cree un tar con la última copia para poder enviarlo cómodamente a otro ordenador:

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/
mkdir /var/cache/rsnapshot-tar/

Editamos /usr/local/bin/rsnaptar para especificar el lugar donde guardaremos los tar, comentamos GPG y añadimos info al mail que se genera automaticamente.

# DIRECTORIES
TAR_DIR="/var/cache/rsnapshot-tar"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0/"
...
#GPG="/usr/bin/gpg"
...
${CAT} << EOF | ${SENDMAIL}
To: ${TO_EMAIL}
Subject: [rsnapshot] Tar backup job complete - ${HOSTNAME}

Now is the time to backup the latest files from rsnapshot on ${HOSTNAME}

Tar files created on ${TAR_DIR}/${DATE}/
EOF

Editamos ‘/etc/cron.d/rsnapshot’ para que se ejecute cada semana:

# Weekly
# At 5:00 every monday
0 5 * * 1 root /usr/local/bin/rsnaptar marble@localhost

Reportes

Si queremos recibir un reporte del backup cada cierto tiempo como medida para saber que se están efectuando:

cp /usr/share/doc/rsnapshot/examples/utils/rsnapreport.pl.gz /usr/local/bin/
gzip -d /usr/local/bin/rsnapreport.pl.gz
chmod 755 /usr/local/bin/rsnapreport.pl

Establecemos en /etc/rsnapshot.conf el nivel de verbose a 3 y añadimos –stats al comando rsync_long_args:

# Verbose level, 1 through 5.
# 1 Quiet Print fatal errors only
# 2 Default Print errors and warnings only
# 3 Verbose Show equivalent shell commands being executed
# 4 Extra Verbose Show extra verbose information
# 5 Debug mode Everything
#
verbose 3

...

# Default rsync args. All rsync commands have at least these options set.
#
#rsync_short_args -a
rsync_long_args --delete --numeric-ids --relative --delete-excluded --stats --timeout=10

# this script prints a pretty report from rsnapshot output
# in the rsnapshot.conf you must set
# verbose >= 3
# and add --stats to rsync_long_args
# then setup crontab 'rsnapshot daily 2>&1 | rsnapreport.pl | mail -s"SUBJECT" backupadm@adm.com
# don't forget the 2>&1 or your errors will be lost to stderr

Editamos /etc/cron.d/rsnapshot para hacer que el reporte se genere una vez a la semana:

# 4 times per day
0 */4 * * * root /usr/bin/rsnapshot hourly > /dev/null
# At 3:30 every day
30 3 * * * root /usr/bin/rsnapshot daily > /dev/null
# At 3:00 every monday
0 3 * * 1 root /usr/bin/rsnapshot weekly > /dev/null
# At 2:30 every 1st of month
30 2 1 * * root /usr/bin/rsnapshot monthly > /dev/null

# Run rsnapshot once a week as it were hourly but with rsnapreport (send report by mail)

# I use it only to validate that backups are being done.
# When we execute rsnapshot daily/weekly/... rsync is not called, only a move is done and rsnapreport can not generate a report with that info.
# At 1:00 every monday
0 1 * * 1 root /usr/bin/rsnapshot hourly 2>&1 | /usr/local/bin/rsnapreport.pl | mail -s"[rsnapshot] Weekly report" marble@localhost

Análisis de logs de Apache mediante Awstats

Análisis de logs de Apache mediante Awstats

Con awstats podremos ver las visitas, tráfico y otros aspectos relacionados con cada uno de los dominios virtuales que tengamos configurados en Apache. Para su instalación presuponemos que ya tenemos configurado Apache y que awstats va ser accesible únicamente de forma local:

apt-get install awstats
mkdir /var/lib/awstats/localhost
chown www-data:www-data /var/lib/awstats/localhost

Creamos ‘/etc/awstats/awstats.localhost.conf’ apuntando al log que queramos analizar:

LogFile="/var/log/apache2/localhost/access.log"
LogFormat=1
DNSLookup=1
DirData="/var/lib/awstats/localhost"
DirCgi="/cgi-bin"
DirIcons="/icon"
SiteDomain="localhost"
AllowToUpdateStatsFromBrowser=1
AllowFullYearView=3

Copiamos iconos básicos:

cp -r /usr/share/awstats/icon /var/www/localhost/

Actualizamos output HTML:

/usr/lib/cgi-bin/awstats.pl -config=localhost -update

Creamos el fichero ‘/etc/apache2/conf.d/awstats.conf’ con el siguiente contenido:

ScriptAlias /cgi-bin/awstats.pl /usr/lib/cgi-bin/awstats.pl

Reiniciamos apache:

/etc/init.d/apache2 restart

Y accedemos a la web mediante ‘http://localhost:8080/cgi-bin/awstats.pl?config=localhost’.

Para que se actualice periódicamente el análisis de Awstats, editamos /etc/cron.d/awstats (cada noche):

0 1 * * * www-data /usr/lib/cgi-bin/awstats.pl -config=localhost -update >/dev/null

Rotación y conservación de logs

Rotación y conservación de logs

En el sistema debemos tener instalado anacron o cron, si tenemos ambos simultaneamente (aunque uno de los dos demonios esté parado) no se ejecutaran las tareas de /etc/cron.daily, weekly, etc.. (debido a como viene por defecto /etc/crontab). En nuestro caso, al ser un servidor y estar siempre en marcha usaremos cron:

apt-get purge anacron
apt-get install cron

La política de gestión de logs será:

* Rotación mensual
* Mantenimiento de las últimas 24 copias (2 años de log)
* Incorporar la fecha de creación al nombre del fichero

Preparamos las tareas de rotacion de log a ejecutar por cron de forma mensual:

chmod 644 /etc/cron.daily/sysklogd
chmod 644 /etc/cron.weekly/sysklogd
cp /etc/cron.weekly/sysklogd /etc/cron.monthly/
chmod 755 /etc/cron.monthly/sysklogd

Editamos ‘/etc/cron.monthly/sysklogd’ y modificamos la linea que llama a save_log para incluir en la rotación todos los ficheros log gestionados por syslogd:

logs=$(syslogd-listfiles --weekly)

por:

logs=$(syslogd-listfiles --all)

También modificaremos:

savelog -g adm -m 640 -u ${USER} -c 4 $LOG >/dev/null

por:

# Rotate monthly (script placed at /etc/cron.monthly/)
# Keep 24 copies: -c 24
# Clean older copies than 24: -C
# Add date instead of .0 .1: -d
# Create a new file owned by adm and syslog with permission 640
savelog -g adm -m 640 -u ${USER} -c 24 -d -C $LOG >/dev/null

De esta forma, syslogd cumplirá con la política de gestión de logs que hemos definido.

Mediante ’syslogd-listfiles –all’ podemos ver todos los ficheros que serán rotados, por ejemplo:

/var/log/mail.warn
/var/log/uucp.log
/var/log/user.log
/var/log/daemon.log
/var/log/messages
/var/log/debug
/var/log/auth.log
/var/log/mail.err
/var/log/syslog
/var/log/mail.log
/var/log/mail.info
/var/log/kern.log
/var/log/lpr.log

El resto de logs que no son generados por syslogd, los gestionaremos a través de logrotate.

Editamos /etc/logrotate.conf y establecemos la política general de logs:

# rotate log monthly
monthly
# keep 24 months of backlog
rotate 24

# uncomment this if you want your log files compressed
compress

# Postpone compression of the previous log file to the next rotation cycle
delaycompress

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
compress

# Postpone compression of the previous log file to the next rotation cycle
delaycompress

# Archive old versions of log files adding a daily extension like YYYYMMDD instead of simply adding a number.
dateext

# Rotate the log file even if it is empty
ifempty

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
# monthly
create 0664 root utmp
# rotate 1
}

/var/log/btmp {
missingok
# monthly
create 0664 root utmp
# rotate 1
}

En ‘/etc/logrotate.d’ tenemos ficheros con los logs a rotar y en algunos casos, con políticas concretas diferentes a la global. Para nos aseguramos que no haya políticas diferentes a la global para logs específicos podemos ejecutar:

find /etc/logrotate.d/ -type f -exec sed -i 's/daily/#daily/g' {} ;
find /etc/logrotate.d/ -type f -exec sed -i 's/weekly/#weekly/g' {} ;
find /etc/logrotate.d/ -type f -exec sed -i 's/monthly/#monthly/g' {} ;
find /etc/logrotate.d/ -type f -exec sed -i 's/rotate/#rotate/g' {} ;

find /etc/logrotate.d/ -type f -exec sed -i 's/post#rotate/postrotate/g' {} ;
find /etc/logrotate.d/ -type f -exec sed -i 's/pre#rotate/prerotate/g' {} ;

find /etc/logrotate.d/ -type f -exec sed -i 's/notifempty/#notifempty/g' {} ;
find /etc/logrotate.d/ -type f -exec sed -i 's/size/#size/g' {} ;

Cabe destacar que es necesario revisar la configuración existente en ‘/etc/logrotate.d’ por si faltase realizar alguna modificación extra (p.ej. logs extra de apache como ‘/var/log/apache2/localhost/*.log’).

Del resto de logs del sistema que queramos rotar y no estén ya incluidos, tendremos que crear un fichero nuevo en ‘/etc/logrotate.d’ indicándolo (en general, todo paquete de Ubuntu ya viene preparado para que sus logs sean gestionados automáticamente por syslogd o logrotate). Es importante tener en cuenta que no debemos rotar:

* Binarios como /var/log/faillog o /var/log/lastlog
* Logs de nagios dado que romperíamos el historial interno. Mejor que lo gestione la propia aplicación directamente.
* Logs generados directamente por syslogd (como hemos visto antes). Visualizar con syslogd-listfiles –all

Monitorizar desde la consola

Monitorizar desde la consola
Espacio en disco

Para la monitorización del espacio en disco podemo usar los comandos:

df -h
du -ms

El primero muestra el estado de todas las particiones, el segundo presenta los megas que ocupa el directorio actual.

Puede que nos interese ordenar los directorios en función de su tamaño, para ello podemos descargar un script específico:

cd /usr/local/bin
wget http://www.pixelbeat.org/scripts/dutop
chmod 755 /usr/local/bin/dutop

Que al ejecutar facilita la siguiente información:

# dutop
27% 183.8M ./Fotos
26% 180.5M ./Fotos.zip
19% 135.0M ./Documentos
5% 37.4M ./Trabajo
5% 35.6M ./Musica

CPU

La monitorización de la CPU (más otros parámetros) podemos llevarla a cabo mediante ‘top’ o ‘htop’:

apt-get install htop

Ancho de banda / Bandwidth

Aplicaciones recomendadas:

apt-get install bwm-ng

Y también:

apt-get install jnettop

Para este último debemos crear el fichero ‘~/.jnettop’:

#interface "eth0"
# Show IP and Ports per separate
local_aggregation none
# I don't care about remote port
remote_aggregation port
# Do not generate more traffic resolving every IP
resolve off

Al ejecutar jnettop podemos interactuar con la aplicación para cambiar los parámetros establecidos. Por ejemplo:

* ‘l’: cambia la agregación local
* ‘r’: cambia la agregación remota

/usr/local/bin

Colocar .sh en esta ruta logra ejecutarlo desde cualquier ruta

/usr/local/bin

Envío por correo de los eventos más significativos con logcheck

Envío por correo de los eventos más significativos con logcheck

Con logcheck podremos resumir los eventos del sistema registrados en los logs y enviarlos a nuestro correo de forma diaria:

apt-get install logcheck logcheck-database

Editamos ‘/etc/logcheck/logcheck.logfiles’:

# Estos 2 ficheros incluyen todos los mensajes enviados a syslog ()/etc/syslog.conf)
/var/log/syslog
/var/log/auth.log
# Apache
/var/log/apache2/error.log
/var/log/apache2/localhost/error.log
# MySQL
#/var/log/mysql/mysql.log # En debian, si descomentas la linea de log de /etc/mysql/my.cnf, el log va por syslog
#/var/log/mysql/mysql-slow.log

La tarea cron que se encarga de la ejecución diaria es ‘/etc/cron.d/logcheck’.

Por otra parte, la configuración de logcheck se encuentra en ‘/etc/logcheck/logcheck.conf’:

# Controls the address mail goes to:
# *NOTE* the script does not set a default value for this variable!
# Should be set to an offsite "emailaddress@some.domain.tld"

SENDMAILTO="miusuario"

# Send the results as attachment or not.
# 0=not as attachment; 1=as attachment
# Default ist 0
MAILASATTACH=1

Una vez configurado, podemos probar su funcionamiento ejecutando:

sudo -u logcheck logcheck

Logcheck incorpora por defecto toda una serie de reglas para la selección o el descarte de las lineas del log a enviar en el resumen. Es posible que nos interese refinar estas reglas, haciendo que sean descartadas cadenas que no nos aporten nada. Por ejemplo, veamos como ignorar las lineas generadas por el firewall o nagios (ver secciones correspondientes), dado que esa información ya la analizamos con otras herramientas.

Creamos ‘/etc/logcheck/ignore.d.server/000-custom’ y añadimos:

^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...

Si queremos incluir más reglas, podemos validarlas contra el log que nos interese:

sed -e 's/[[:space:]]*$//' /var/log/ulog/syslogemu.log | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...'


Con logcheck podremos resumir los eventos del sistema registrados en los logs y enviarlos a nuestro correo de forma diaria:

apt-get install logcheck logcheck-database

Editamos ‘/etc/logcheck/logcheck.logfiles’:

# Estos 2 ficheros incluyen todos los mensajes enviados a syslog ()/etc/syslog.conf)
/var/log/syslog
/var/log/auth.log
# Apache
/var/log/apache2/error.log
/var/log/apache2/localhost/error.log
# MySQL
#/var/log/mysql/mysql.log # En debian, si descomentas la linea de log de /etc/mysql/my.cnf, el log va por syslog
#/var/log/mysql/mysql-slow.log

La tarea cron que se encarga de la ejecución diaria es ‘/etc/cron.d/logcheck’.

Por otra parte, la configuración de logcheck se encuentra en ‘/etc/logcheck/logcheck.conf’:

# Controls the address mail goes to:
# *NOTE* the script does not set a default value for this variable!
# Should be set to an offsite "emailaddress@some.domain.tld"

SENDMAILTO="miusuario"

# Send the results as attachment or not.
# 0=not as attachment; 1=as attachment
# Default ist 0
MAILASATTACH=1

Una vez configurado, podemos probar su funcionamiento ejecutando:

sudo -u logcheck logcheck

Logcheck incorpora por defecto toda una serie de reglas para la selección o el descarte de las lineas del log a enviar en el resumen. Es posible que nos interese refinar estas reglas, haciendo que sean descartadas cadenas que no nos aporten nada. Por ejemplo, veamos como ignorar las lineas generadas por el firewall o nagios (ver secciones correspondientes), dado que esa información ya la analizamos con otras herramientas.

Creamos ‘/etc/logcheck/ignore.d.server/000-custom’ y añadimos:

^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...

Si queremos incluir más reglas, podemos validarlas contra el log que nos interese:

sed -e 's/[[:space:]]*$//' /var/log/ulog/syslogemu.log | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...'

Multitail

Multitail una vuelta mas de tuerca sobre el comando tail

application-x-shellscriptEn linea con el tema anterior presentamos Multitail que es una vuelta mas de tuerca sobre el comando tail. Para los que no lo conocen tail permite ver el contenido de los archivos de logs en tiempo real.

En cambio multitail tiene la ventaja de que nos permite ver múltiples archivos al mismo tiempo y en la misma ventana.

Otra de las ventajas de Multitail es que presenta el contenido de los logs en colores lo que facilita muchísimo la interpretación.

Para instalarlo en Unbuntu usamos el comando

sudo apt-get install multitail

Mostar dos archivos en dos ventanas

multitail /var/log/apache/access.log /var/log/apache/error.log

Para mezclar dos archivos en una sola ventana:

multitail /var/log/apache/access.log -I /var/log/apache/error.log

Para mostrar tres archivos en dos columnas:

multitail -s 2 /var/log/apache2/access.log /var/log/messages /var/log/mail.log

Mostar 5 archivos mezclando 2 y poniendolos en dos columnas con solo uno en la columna izquierda

multitail -s 2 -sn 1,3 /var/log/apache2/access.log -I /var/log/apache2/error.log /var/log/messages /var/log/mail.log /var/log/syslog

Una vez que estamos en la aplicación si presionamos la techa N (Mayuscula) limpiamos todas las ventanas y con n (Minuscula) nos preguntara cual queremos limpiar.

lunes, 3 de mayo de 2010

Herramientas para Bind

Herramientas de búsqueda y consulta.
Mandato host.

El mandato host una herramienta simple para hacer búsquedas en Servidores DNS. Es utilizada para convertir nombres en direcciones IP y viceversa.

De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar.

host www.linuxparatodos.net

Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema, devolviendo como resultado una dirección IP.

host www.linuxparatodos.net 200.33.146.217

Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217, devolviendo una dirección IP como resultado.
Mandato dig.

El mandato dig (domain information groper) es una herramienta flexible para realizar consultas en Servidores DNS. Realiza búsquedas y muestra las respuestas que son regresadas por los servidores que fueron consultados. Debido a su flexibilidad y claridad en la salida es que la mayoría de los administradores utilizan dig para diagnosticar problemas de DNS.

De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar. La sintaxis básica sería:

dig @servidor nombre TIPO

Donde servidor corresponde al nombre o dirección IP del Servidor DNS a consultar, nombre corresponde al nombre del registro del recurso que se está buscando y TIPO corresponde al tipo de consulta requerido (ANY, A, MX, SOA, NS, etc.)

Ejemplo:

dig @200.33.146.209 linuxparatodos.net MX

Lo anterior realiza una búsqueda en el Servidor DNS en la dirección IP 200.33.146.209 para los registros MX para el dominio linuxparatodos.net.

dig linuxparatodos.net NS

Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema para los registros NS para el dominio linuxparatodos.net.

dig @200.33.146.217 linuxparatodos.net NS

Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217 para los registros NS para el dominio linuxparatodos.net.
Mandato jwhois (whois).

El mandato jwhois es una herramienta de consulta a través de servidores WHOIS. La sintaxis básica es:

jwhois dominio

Ejemplo:

jwhois linuxparatodos.net

Loa anterior regresa la información correspondiente al dominio linuxparatodos.net.
Sustento lógico necesario.
Paquete. Descripción.
• bind Incluye el Servidor DNS (named) y herramientas para verificar su funcionamiento.
• bind-libs Biblioteca compartida que consiste en rutinas para aplicaciones para utilizarse cuando se interactúe con Servidores DNS.
• bind-chroot Contiene un árbol de ficheros que puede ser utilizado como una jaula chroot para named añadiendo seguridad adicional al servicio.
• bind-utils Colección de herramientas para consultar Servidores DNS.
• caching-nameserver Ficheros de configuración que harán que el Servidor DNS actúe como un caché para el servidor de nombres.

Migracion de Linux A Linux Base

mkdir /root/migracion

export UGIDLIMIT=500

##migrar /etc/passwd

awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/migracion/passwd.mig

##migrar /etc/group

awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/migracion/group.mig

##migrar /etc/shadow

awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/migracion/shadow.mig

##migrar /etc/gshadow

cp /etc/gshadow /root/migracion/gshadow.mig



##backup home

tar -zcvpf /root/migracion/home.tar.gz /home


##Pasar

scp -r /root/migracion root@192.168.131.198:/root/



##IMPORTANDO

Bacapear usuario del sistema

mkdir /root/users.bk
cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/users.bk


##Restaurar

cd /root/migracion
cat passwd.mig >> /etc/passwd
cat group.mig >> /etc/group
cat shadow.mig >> /etc/shadow
/bin/cp gshadow.mig /etc/gshadow


## Parado en el /

tar -zxvf /root/migracion/home.tar.gz


reboot