Translate

jueves, noviembre 06, 2014

-AWSTAS: Gráficas con estadísticas de accesos al servidor Apache (Serie Apache I):

En debian 5.0 "lenny":

Lo primero instalamos awstats con apt-get:

#apt-get install awstats

Una vez instalado tenemos que editar el fichero /etc/awstats/awstats.conf y cambiar los siguientes parámetros:
LogFile debe ser igual a la ubicación de nuestro fichero access.log, por ejemplo:
LogFile=”/var/log/apache2/access.log”
Cambiamos tambien SiteDomain, aquí tenemos que poner nuestro nombre de dominio, por ejemplo:
SiteDomain=”MiSrvApache”

Con estos párametros de momento es suficiente, podemos cambiar más para personalizar como se muestran las estadísticas.
Una vez hecho esto tenemos que actualizar la base de datos de estadísticas para este dominio, para ello lanzamos:
perl /usr/lib/cgi-bin/awstats.pl -config=MiSrvApache-update


La primera vez tenemos que hacerlo de forma manual (tarda un poco) después podemos programarlo en crontab.
Ejecutarlo a las 12 de la noche cada día

0 0 * * * /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -config=MiSrvApache -update

Se pueden generar los informes de forma dinámica accediendo al script cgi en el servidor web:
http://MiSrvApache/cgi-bin/awstats.pl?config=MiSrvApache

Os pongo en modo "desglosado" una instalación en debian 5.0 "lenny:"
Bien, pues dicho y hecho. Se supone que ya estamos conectados al servidor mediante ssh. Nos vamos al directorio opt con
cd /opt
y desde allí descargamos el paquete con
wget http://surfnet.dl.sourceforge.net/sourceforge/awstats/awstats-6.7.tar.gz
(la dirección indicada es un mirror con la versión 6.7. Lo mejor es ir a la página http://awstats.sourceforge.net y escoger desde allí la versión más reciente y el mejor mirror según nuestra localización.)
Seguidamente lo descomprimimos:
tar zxf awstats-6.7.tar.gz
Tendremos un directorio llamado awstats-6.7 que renombraremos a awstats a secas:
mv awstats-6.7 awstats
Ahora tenemos que conseguir que Apache permita ejecutar archivos perl en el directorio donde se encuentra el programa principal de Awstats. Para esto tenemos que modificar la configuración de Apache. Aviso de que en mi caso he creado un sitio virtual al que solo se puede acceder mediante SSL, y es ahí y solo ahí donde voy a permitir la ejecución de Awstats. Además protegeré el programa mediante usuario y contraseña.
Evidentemente se puede hacer de forma que Awstats sea accesible desde otros sitios o todos los sitios con o sin SSL. En ese caso habría que añadir el código que pongo más abajo en /etc/apache2/apache2.conf Yo he preferido hacerlo disponible en un solo sitio, autenticado y mediante SSL porque lo considero más seguro.
En /etc/apache2/sites-available/default-ssl añadir al final (repito que default-ssl es un sitio que he creado yo, si no lo tienes, tendrás que crearlo:
ScriptAlias /awstats/ /opt/awstats/wwwroot/cgi-bin/
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Con ésto permitimos la ejecución del programa en el servidor Apache. Pero necesitamos crear unos “alias” para algunos directorios de Awstats, de lo contrario, entre otras cosas, no cargarían las imágenes. También en /etc/apache2/sites-available/default-ssl tras el código anterior, pegamos éste:
Alias /classes “/opt/awstats/wwwroot/classes/”
Alias /css “/opt/awstats/wwwroot/css/”
Alias /icon “/opt/awstats/wwwroot/icon/”
Alias /js “/opt/awstats/wwwroot/js/”
Options None
AllowOverride None
Order allow,deny
Allow from all
Y, finalmente, es ese mismo archivo, si queremos proteger Awstats con usuario y contraseña, pegamos tras lo anterior:
AuthUserFile /opt/awstats/.htpasswd
#AuthGroupFile /path/to/.group
AuthName “AWStats”
AuthType Basic
require valid-user
Lo guardamos y refrescamos la configuración de Apache:
/etc/init.d/apache2 reload
Bien, ahora necesitamos crear un directorio donde Awstats guarde las estadísticas:
mkdir /opt/awstats/data
Y, por supuesto, crearemos un usuario para poder acceder mediante Web a Awstats:
htpasswd -bcm /opt/awstats/.htpasswd “usuario” “contraseña”
Por ahora todo perfecto. Seguidamente tenemos que crear un archivo de configuración para cada sitio Web del que deseemos conseguir estadísticas. Creamos un directorio donde se guardarán estas configuraciones:
mkdir /etc/awstats
Y copiamos allí el archivo de muestra de configuración que viene con Awstats:
cp -p /opt/awstats/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/
Este archivo hay que editarlo y configurarlo correctamente. En la directiva LogFile pondremos
LogFile=”/var/log/apache2/access.log”
En SiteDomain pondremos el dominio principal de nuestro sitio
SiteDomain=”www.pacosanchez.com”
En HostAliase volvemos a poner nuestro dominio, por ejemplo, con y sin “www” y cualquier otro subdominio que utilicemos con ese dominio.
HostAliases=”www.pacosanchez.com pacosanchez.com REGEX[^.*\.pacosanchez\.com$]“
En DirData indicamos el directorio de datos que hemos creado anteriormente:
DirData=”/opt/awstats/data”
El resto de las opciones se pueden dejar por defecto o las podemos personalizar leyendo en la documentación para qué sirve cada una. Por cada Web de la que deseemos obtener estadísticas por separado, tenemos que crear un archivo de configuración.
Ya solo nos falta ejecutar el script para actualizar las estadísticas:
perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=pacosanchez.com -update



Para que la ejecución de scripts perl sea más segura, vamos a crear un usuario llamado awstats cuyo directorio sea /opt/awststs:
[root@servidor ~]# useradd -d /opt/awstats awstats
Ahora entramos como usuario awstats:
[root@servidor ~]# su – awstats
Editamos el crontab del usuario awstats con nano:
[awstats@servidor ~]# EDITOR=nano crontab -e
Y añadimos lo siguiente en una sola línea para que awstats actualice las estadísticas cada hora en punto:
0 * * * * /opt/awstats/tools/awstats_updateall.pl now -confdir=”/etc” -awstatsprog=”/opt/awstats/wwwroot/cgi-bin/awstats.pl” >/dev/null
A partir de ahora podremos consultar las completas estadísitcas que nos ofrece este programa desde la dirección https://www.dominio.com/awstats/awstats.pl?config=pacosanchez.com
Lo que sigue tras “awstats.pl?config=” será el nombre del dominio del cual queremos consultar las estadísticas, y tiene que coincidir exactamente con el nombre que le hemos dado a su archivo de configuración en /etc/awstats quitándole awstats y conf. Por ejemplo, para el dominio debian.org el archivo de configuración se llamaría awstats.debian.org.conf y lo llamaríamos desde “…awstats.pl?config=debian.org
Mas adelante haremos algunos cambios que ampliarán la información mostrada por Awstats, pero eso será en otra ocasión.






miércoles, noviembre 05, 2014

Nos creamos un servidor NAS casero con Linux



Nos interesa sacar partido a las principales herramientas de Linux para que nos baje los torrent y nos mande un mail cuando finalice la bajada de nuestros ficheros.

Correo y cron


Para instalar un servidor de correo y que envie mails a nuestra direcion de correo tenemos que tener instalado mailx y exim4


#apt-get install mailx exim4-config


Despues tenemos que configurar el servidor de correo para que envie desde nuestra maquina:


#dpkg-reconfigure exim4-config


despues de eso añades como "internet site, mail recibed and send by smtp
le das solo a la loopback interface para que escuche peticiones
entrantes y listo, aceptara cualquier smtp de tu maquina. Si quieres de
tu red interna añades por ejemplo 192.168.0.0/88 o tu rango extenso de

ip. Eso si, sin autentificacion.


Para sacar el listado de un directorio y mandarmelo por mail usamos el siguiente comando:

#ls /home/carlos/.aMule/Incoming/ | mailx -s "Listado de bajadas en emule" mimail@gmail.com

Para efectuar un test a una direccion de red que le pasemos con un ping ( ping de una sola respuesta) le damos el siguiente script:

#!/bin/bash

MALO=`ping -rc 1 $1|grep Unreachable`

if `test "$MALO" != ""`
then echo "No existe"
else echo "OK"
fi
prueba llamándolo con la IP, por ejemplo, si lo llamas prueba.sh:

$ prueba.sh 192.168.1.2
$ prueba.sh 192.168.1.5

El mismo ejercicio pero generando una pagina web con formato:

#!/bin/bash
echo "" > /root/index.html
MALO=`ping -rc 1 $1| grep Unreachable`

if `test "$MALO" != ""`
then echo "NAS-micasa Caido" >> /root/index.html

else echo "NAS-micasa OK" >> /root/index.html
fi

echo "
" >> /root/index.html

El ejercicio adaptado a mi red para vigilar un servidor:
#!/bin/bash

MALO=`ping -rc 1 192.168.2.105 | grep Unreachable`

if `test "$MALO" != ""`
then echo "Estado servidor NAS: Caido" | mail -s "Estado del Servidor NAS" rompeola@gmail.com
else echo "Nas levantado, no mando mail, no hace falta"  > /dev/null
fi


Podemos agregar una entrada cron para que automáticamente mande los mails con la frecuencia que deseemos:

-metemos el comando anterior en un script (script.sh y le damos permisos de ejecucion chmos +x script.sh)
-agregar la entrada cron:
#crontab -e ---->Entramos en modo edicion de cron

  0,10,20 * * * * /bin/script.sh     --->> se ejecuta todos los dias a todas las horas durante los minutos 0, 10 y 20


Servidor NAS, necesitaremos un cliente torrent que permita administración vía web como

 torrentflux,


192.168.2.105 --- administracion web puerto 80
192.168.2.105:9091  -->> Pagina de descargas torrent
192.168.2.105:4080  -->> Pagina de descargas emule
   


martes, noviembre 04, 2014

Comandos Imprescindibles del Usuario Linux:

/bin    :aqui estan todos los comandos importantes de la consola de Linux.


$tail -F /../../syslog.glog | grep jose > fichero --> mira en la cola del fichero syslog.log buscando el texto jose y lo deja en un fichero llamado "fichero" 
$df -h    ------> mirar el espacio en las unidades del sistema
$du -h ---> nos dice que pesa cada carpeta y espacio en kb, mb que usa
$tar cvzf /var/log/backup.tgz /etc/home/ ----->crear ficheros comprimidos
$tar xzvf xxx.tgz ...    ----------> descomprimir ficheros
$cat /var/log/syslog | grep error | wc -l    -----> Mirar los logs y saca solo aquellos que tengan la palabra "Error"
$top ---> para mirar el rendimiento en linux(uso de cpu, procesos en ejecución, memoria libre, etc ...)
$ps aux ---> lista todos los procesos en ejecución del sistema
$ps aux | grep java --> lista solo los procesos que contengan el literal java
$kill -9 "proceso por pid" --> paramos el procesos que nos interese parar, hay que conocer el pid usando ps aux | grep...
$lsof para ver que no hay ficheros abiertos, comando importantisimo, visualiza fichero abiertos incluso por conexiones remotas dentro de TODO el sistema operativo
$top comando para ver el uso de CPU, ram etc.. en memoria.

Administración Linux

freshmeat.net: (todas las descargas de software libre)
Open Filer (para compartir ficheros (Samba, FTP,NFS, permite definir cuotas, auditar carpetas y ficheros, etc ...) Sistema FS transacional, guarda un diario de todos los cambios.
Zimbra: Clon libre de Microsoft Exchange (es de Yahoo)
Nagios: Software para monitorizar intranets, auditar equipos, etc ...
MailWatch: Se coloca antes del servidor de correo para realizar AntiSpam, Realiza filtros de virus,  spam, todo con graficas.


Para administrar los paquetes de la distro debian (versiones de software, etc..) aptitude
Para administrar los paquetes de la distro debian (versiones de software, etc..) yum

Para comprobar la version del sistema operativo y distribución instalada: #lsb_release -a