domingo, 12 de junio de 2011

Monitoreo de visitas con Apache


Esta vez vamos a utilizar un programa para analizar de forma fácil y rápida los logs de Apache para ver cuantos usuarios se han conectado a nuestro servidor Web. utilizaremos la interfaz web que provee el mismo programa. Esta aplicación se llama visitors y esta en los repositorios de Debian y Ubuntu.

Más información en:http://packages.debian.org/unstable/web/visitors

Instalémoslo

$ aptitude -y install visitors graphviz

$ mkdir /var/www/visitors

Editemos el archivo /etc/apache2/sites-available/default
añadiendo lo siguiente:
# Para configuración de visitors


Order Deny,Allow
Deny from all
Allow from localhost
Allow from 192.168.1.0/24 #Para permitir acceso al log en todo el segmento 1 de mi red local.
# IP address you allow


Cámbialo por las direcciones que necesites.

Reiniciemos apache: /etc/init.d/apache2 restart

Usos!

Generemos el reporte:

$ visitors -A /var/log/apache2/access.log -o html > /var/www/visitors/index.html

Generar reporte de páginas visitadas

$ visitors -A -m 30 /var/log/apache2/access.log -o html --trails --prefix http://TUSERVIDOR > /var/www/visitors/trails.html

Generar gráfica de páginas visitadas

$ visitors /var/log/apache2/access.log --prefix http://TUSERVIDOR -V > /var/www/visitors/graph.dot

Utiliza el programa graphviz
$ dot -Tpng /var/www/visitors/graph.dot > /var/www/visitors/graph.png

¿Qué routers visitamos antes de conectarnos con un servidor?

La internet es una red hipercompleja por donde pasa todo tipo de información. Para conectarnos a un servidor particular (e.g www.duckduckgo.com) nuestros paquetes viajan por varias máquinas que van encaminando estos paquetes por la red hasta llegar al destino requerido. Para saber por donde va pasando esta información, se puede utilizar el comando traceroute.

Este comando esta en los repositorios de Debian y Ubuntu. Para más información visita: http://traceroute.sourceforge.net/

Una vez instalado su utilización es muy fácil.
Aquí les muestro la salida del comando haciendo una consulta para el servidor www.gmail.com

traceroute to www.gmail.com (74.125.224.214), 30 hops max, 60 byte packets
1 home (192.168.1.254) 4.878 ms 5.503 ms 5.775 ms
2 dsl-servicio-l200.uninet.net.mx (200.38.193.226) 19.806 ms 22.386 ms 27.846 ms
3 reg-mex-roma-13-ge2-0-0.uninet.net.mx (201.125.67.188) 29.120 ms 31.808 ms 32.177 ms
4 bb-la-onewilshire-10-pos0-4-2-0.uninet.net.mx (201.154.119.230) 68.827 ms 72.369 ms 72.704 ms
5 * * *
6 * 64.233.174.41 (64.233.174.41) 63.324 ms 51.401 ms
7 72.14.236.13 (72.14.236.13) 53.271 ms 55.641 ms 57.164 ms
8 74.125.224.214 (74.125.224.214) 59.162 ms 62.871 ms 63.266 ms

Con este comando nos podemos dar cuenta de posibles ataques de de suplantación de identidad.

sábado, 11 de junio de 2011

Dar permisos de administrador sólo a ciertos programas ejecutados por ciertos usuarios

En ocasiones, muchos programas necesarios para el trabajo de ciertos usuarios o grupos de usuarios necesitan ser ejecutados como root. Sin embargo debido a la política de seguridad de nuestra organización no podemos darle acceso a todo el sistema. Para solucionar esto, Linux cuenta con un comando llamado SUDOERS. Que una vez configurado nos ayudará a especificar permisos especiales para grupos o usuarios.

Descripción
SUDOERS es una lista en donde se agregan usuarios asociados a ciertos comandos qué sin esta configuración sólo podrían ser ejecutados por el root.
Básicamente se componen por aliases de comandos.

Hay cuatro tipos de alias:
User_Alias, Runas_Alias, Host_Alias y Cmnd_Alias.

User_Alias ::= NAME '=' User_List

Runas_Alias ::= NAME '=' Runas_List

Host_Alias ::= NAME '=' Host_List

Cmnd_Alias ::= NAME '=' Cmnd_List

NAME ::= [A-Z]([a-z][A-Z][0-9]_)*

Donde NAME es el nombre del comando a invocar.
User_List la lista de usuarios permitidos.
Host_List la lista de servidores permitidos.
Cmnd_List la lista de comandos.

Para mayor información revisa el manual de SUDOERS.
http://linux.die.net/man/5/sudoers

Ejemplo.
Tengo un servidor web con DNS dinámico. Para que asocie el ip dinámico que me da mi provedor de internet con un nombre (harpia.no-ip.org) debo estar ejecutando un comando llamado noip2 .
Sin embargo, estoy cansado de tener que ejecutar ese comando como root. Se puede solucionar de muchas formas pero dado todo lo que vimos con SUDOERS lo vamos a hacer así.

Práctica
Lo primero que pensamos es modificar el archivo sudoers ubicado en:
/etc/sudoers (cómo superusuario obviamente!)
ATENCION: el archivo originalmente no se podrá editar porque ni siquiera el dueño (root) tiene permisos de escritura. Si los cambiamos (sudo chmod o+w sudoers) habremos cambiado la configuración de sudoers y no podremos volver a utilizar el comando sudo! Por tanto ni siquiera podremos volver a editar sudoers para regresarlo a su forma original. Si te pasó esto revisa lo siguiente: http://kubuntuforums.net/forums/index.php?topic=3114059.0
También puedes volver a editar el archivo entrando al kernel a prueba de fallos.
Para realizar esto necesitaremos del comando visudo, un editor de texto que sólo modifica al archivo sudoers.

Ejemplo para apagar la computadora sin ser root
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification
User_Alias USERS = juan, juanlternate
# Cmnd alias specification
Cmnd_Alias APAGAR = /sbin/shutdown -h now, /sbin/halt, /sbin/reboot
Cmnd_Alias IP = /usr/local/bin/noip2
# User privilege specification
# Especificaciones de los usuarios
root ALL=(ALL) ALL
USERS ALL=NOPASSWD: APAGAR,/usr/local/bin/noip2
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Nueva etapa del blog

El curso de administración de servidores se ha terminado, pero el blog sigue. A partir de ahora agregaremos más información referente a configuraciones, instalaciones y noticias relacionadas al mundo del software libre.

martes, 10 de mayo de 2011

Apache public\_html por usuarios

Sacado de:

Si tenemos una instlación de apache default. Deberemos de tener privilegios de superusuario para modificar el archivo userdir.conf ubicado en la carpeta: /etc/apache2/mods-available/


Ahi deberemos agregar la siguiente línea.

UserDir disabled
UserDir enable usuario1 usuario2

Esto permitirá un sitio web sólo para los usuarios 1 y 2 exclusivamente.
Una vez hecho esto procederemos a cargar los módulos. Para esto debemos crear un enlace simbólico entre mods-available y mods-enabled

sudo ln -s ../mods-available/userdir.load .
sudo ln -s ../mods-available/userdir.conf .

Una vez hecho esto reiniciamos el servidor apache con:

sudo /etc/init.d/apache2 restart

Listo!

jueves, 14 de abril de 2011

Logearse como root en una partición externa al sistema operativo.

Hoy vamos a ver como montar un sistema operativo Linux y administrarlo de forma externa con el comando chroot.

Consideremos el siguiente escenario.

Alguien desconfiguró el grub principal de la máquina sobre la que trabajamos.
La solución es simple, utilizar el comando grub-install. Sin embargo dado que no podemos montar la partición, deberemos utilizar un usb (cd) rescue (live-cd) y una vez funcionando el sistema en vivo. Procederemos a montar la partición donde tengamos instalado el sistema que contiene el grub a reconfigurar.

Para esto utilizaremos los siguientes comandos:

#Root
:~/$ sudo mkdir /mnt/c
:~/$ sudo mount /dev/sda5 /mnt/c/
sudo mount --bind /dev/ /mnt/c/dev/
:~/$ sudo mount --bind /sys/ /mnt/c/sys/
:~/$ sudo mount --bind /proc/ /mnt/c/proc
# :~/$ sudo chroot /mnt/c/
# :~/$ sudo chroot /mnt/c/ bash
# :~/$ sudo umount /mnt/c/dev
# :~/$ sudo umount /mnt/c/proc
# :~/$ sudo umount /mnt/c/sys
# :~/$ sudo umount /mnt/c/
# :~/$ sudo grub-install /dev/sda9 -f
# :~/$ sudo reboot
Listo!

martes, 12 de abril de 2011

Compilación del Kernel

Una vez bajado el kernel de kernel.org
debemos modificar el archivo de configuración.

lo que vamos a hcer primero es ir al directorio de las fuentes y dar los siguientes comandos.

make mrproper

cp .config

make oldconfig

make menuconfig

make

make modules

sudo make modules_install

make install