14 de diciembre de 2015

Al actualizar a Debian Jessie desde Wheezy grub dañado

Al actualizar Debian a Jessie desde wheezy aparentemente todo iba normal hasta que se reinicia. El grub falló quedando la pantalla en blanco sin video y dependiendo del monitor que se conectara mandaba un error distinto: "VGA signal out of range" o "No signal supported (o algo así)".

Se arrancó con un livecd de Knoppix y se descomentó la variable GRUB_TERMINAL de "/etc/default/grub" y definiendo como valor "console" tal como lo indica la documentación oficial.       
GRUB_TERMINAL=console
Después de reiniciar seguía sin funcionar el grub pero ahora el grub mostraba un promp con el siguiente texto:
    GNU GRUB version 1.98+20100804-14

Minimal BASH like line editing is supported. For the first word, TAB
lists possible command completions. anywhere else TAB lists possible
device or file completions.

grub> _
Para lograr arrancar con Debian se ejecutó lo siguiente:
insmod normal
set prefix="(hd0,msdos7)/boot/grub"
set root=(hd0,msdos7)
linux /boot/vmlinuz-3.16.0-4-686-pae root=/dev/sda7 ro
initrd /boot/initrd.img-3.16.0-4-686-pae
boot
hd0 es el disco duro principal donde está instalado grub
msdos es el tipo de tabla de particiones
El 7 es el número de partición donde está instalado grub
sda7 es la partición raiz

Al arrancar debian se instala grub-pc:
# aptitude install grub-pc
Después de instalado grub-pc nos muestra un asistente con diversas opciones entre ellas la de instalar grub en el MBR o en la partición de linux. En este caso se instaló en el MBR del disco duro. Si se cancela el asistente y no se instala, se puede instalar ejecutando la siguiente orden:
# dpkg --configure grub-pc
O si se desea modificar el lugar donde se instaló grub se puede reconfigurar con:
# dpkg-reconfigure grub-pc
Luego se modifican algunas opciones de grub editando el archivo "/etc/default/grub":
# nano /etc/default/grub
Se modifican las siguientes lineas:
GRUB_DEFAULT=0
GRUB_TIMEOUT=false
GRUB_DEFAULT indica con que Sistema o Kernel se arrancará.
GRUB_TIMEOUT indica el tiempo que mostrará la lista de sistemas antes de arrancar con el sistema configurado por default. En este caso, se configura como "false" para que no arranque con ningún sistema y siempre tener que seleccionar uno.

Luego se ejecuta la siguiente orden para actualizar el archivo de configuración de grub "/boot/grub/grub.cfg"
# update-grub
Una vez actualizado, el archivo de configuración "/boot/grub/grub.cfg" reflejará los cambios en las siguientes variables:
set default="0"
set timeout=false

Fuente: 


12 de agosto de 2013

De Debian Squeeze a Wheezy

Como ya sabemos, instalar una nueva versión de Debian GNU/Linux no significa tener que formatear. A continuación se describen los pasos que se siguieron para pasar de Debian Squeeze a Debian Wheezy.

Editar el archivo "/etc/apt/sources.list" y cambiar "squeeze" por "wheezy" para indicar la versión que deseamos tener:
    # nano /etc/apt/sources.list

Se actualiza la lista de paquetes:
    # apt-get update

Se actualizan a las versiones más recientes los paquetes instalados actualmente. Hay que ejecutar la siguiente instrucción varias veces hasta que no haya paquetes por actualizar:
    # apt-get upgrade

Se actualiza la distribución:
    # apt-get dist-upgrade

En mi caso, me pidió desinstalar varios paquetes y marcaba un error en el proceso con el paquete apt-listbugs deteniéndose. Por lo que tuve que desinstalar apt-listbugs:
    # aptitude remove apt-listbugs

Se ejecuta de nuevo la siguiente orden las veces que sea necesario hasta que ya no haya paquetes por instalar:
    # apt-get dist-upgrade

Instalando los drivers Nvidia

Luego se instalan los drivers de Nvidia para tener aceleración gráfica:
    # aptitude install nvidia-kernel-$(uname -r) nvidia-glx nvidia-xconfig

Se ejecuta la siguiente orden para generar un archivo de configuración xorg:
    # nvidia-xconfig   

Se reinicia el equipo o se reinician las X en caso de que se hayan instalado los drivers de Nvidia después de reiniciar el equipo:
    # /etc/init.d/gdm3 restart

Mejorando el aspecto de Gnome
Siempre he sido usuario de Gnome (he probado varios entornos de escritorio) y no me gustó nada Gnome Shell. Así que para que se asemeje Gnome Shell a Gnome 2 se realizó lo que explico a continuación.

Se instaló el paquete "gnome-core" que no estaba instalado porque siempre hago instalaciones personalizadas y minimalistas:
    # aptitude install gnome-core
El paquete gnome-core agrega a GDM una opción para arrancar un Gnome más parecido a Gnome 2 y un poco más ligero que Gnome Shell llamado GNOME Classic (fallback). Al parecer al instalar los drivers de Nvidia esta opción no aparece si no se tiene instalado el paquete gnome-core.

Los paquetes gnome-shell-extensions y gnome-tweak-tool permiten agregar extensiones a Gnome Shell para que se parezca un poco a Gnome 2: Como el menú de aplicaciones, Lugares, mostrar iconos en el escritorio, entre otros.
    # aptitude install gnome-shell-extensions y gnome-tweak-tool
Una vez instalado se configura desde el menú "Aplicaciones / Herramientas del Sistema / Configuración avanzada" o ejecutando el comando "gnome-tweak-tool" desde la consola.


Configurar VirtualBox

Al actualizar el sistema VirtualBox no arranca. Al intentar ejecutar una maquina virtual marcaba un error y pedía ejecutar el comando "/etc/init.d/vboxdrv setup".  Al ejecutar tratar de reiniciar el servicio marcaba el siguiente error:
    # /etc/init.d/virtualbox restart
    [FAIL] Starting VirtualBox kernel modules[....] No suitable module for running kernel found ... failed!
Se soluciona instalando los fuentes del kernel:
    # aptitude install linux-headers-$(uname -r)

Listo. Ya tenemos la última versión de Debian sin necesidad de formatear.

NOTA: No se usó aptitude para actualizar el sistema porque al ejecutar "aptitude safe-upgrade" aparecían unos números que se incrementaban y nunca terminaba el proceso:
    Resolviendo las dependencias...                 
    abierto: 24340; cerrado: 44732; diferido: 522; conflicto: 2233     

24 de julio de 2013

Aplicaciones recomendadas para Android

A continuación presento una lista de aplicaciones útiles para dispositivos móviles con Android:

Bloqueo de App (DoMobile Lab).- Permite bloquear el acceso a cualquier aplicación instalada en el móvil solicitando una contraseña o patrón. Probé varios, pero esta me pareció la mejor.  Muy útil cuando prestas el Cel a otra persona para que realice una llamada y no quieres que tenga acceso al correo y otras cosas.

ScanLife Lector de QR Codigos.- Lector QR que funciona correctamente con mi Cel para mis facturas y con todas las facturas de mis proveedores.

QR Droid Private.- Otro lector de códigos QR pero que no lee los códigos de mis facturas en un Cel Sony Xperia Tipo ST21a.

WhatsApp Messenger.- Mensajería instantánea.

Linterna Led HD - Flashlight.- Linterna.

Documents To Go 3.0 Main App.- Lector de documentos de Word, hojas de cálculo de Excel y presentaciones de PowerPoint.

OpenDocument Reader.- Lector de documentos ODF (OpenOffice.org).

Android Terminal emulator (Jack Palevich).- Terminal de comandos.

ConnectBot (Kenny Root and Jeffrey Sharkey).- Cliente SSH.

JuiceSSH - SSH Client (Sonelli Ltd).- Otro cliente SSH.

Link2SD.- Permite mover aplicaciones a la memoria externa. Ideal para móviles que tienen poca memoria interna.

Router keygen.- Base de datos con las contraseñas por default de muchos ruteadores inalámbricos.

GPS Navigation.- Muy buena aplicación GPS que permite navegar offline (sin wifi y sin uso de datos) una vez descargados los mapas.

22 de julio de 2013

Instalar Adobe flash player

Hay varias formas de instalar Adobe flash player en Debian. A continuación describo como hacerlo manualmente para Iceweasel.

Sólo para el usuario actual:
  • Descargar Adobe flash player de la página de Adobe (archivo tar.gz)
  • Descomprimir
  • Copiar el archivo "libflashplayer.so" recién descomprimido a la  ruta ~/.mozilla/firefox/XXXXXXXX.default/plugins. Es posible que la carpeta "plugins" no exista y sea necesario crearla.
    $ cd ~/.mozilla/firefox/XXXXXXXX.default/plugins
    $ mkdir plugins
    $ cp install_flash_player_11_linux.i386/libflashplayer.so plugins
También se puede copiar a alguna de las siguientes rutas y el plugin estará disponible para todos los usuarios del sistema:
    /usr/lib/firefox/plugins
    /usr/lib/mozilla/plugins

15 de julio de 2013

Configuración básica de grub

Grub nos permite elegir que sistema deseamos arrancar entre distintos sistemas instalados en el equipo. Para indicarle a grub que sistema o versión del Linux deseamos arrancar por default se recomienda editar el archivo de configuración "/etc/default/grub" y luego actualizar el archivo de configuración grub. Esto se hace de la siguiente manera:
    # nano /etc/default/grub
Se modifican las siguientes lineas:
    GRUB_DEFAULT=0
    GRUB_TIMEOUT=false
GRUB_DEFAULT indica con que Sistema o Kernel se arrancará.
GRUB_TIMEOUT indica el tiempo que mostrará la lista de sistemas antes de arrancar con el sistema configurado por default. En este caso si se configura como "false" no arrancará con ningún sistema y habrá que seleccionar manualmente uno.

Luego ejecutar la siguiente orden para actualizar el archivo de configuración de grub "/boot/grub/grub.cfg"
    # update-grub

Una vez actualizado, el archivo de configuración "/boot/grub/grub.cfg" reflejará los cambios en las siguientes variables:
    set default="0"
    set timeout=false
Cabe mencionar que se puede actualizar directamente el archivo de configuración "/boot/grub/grub.cfg", sin embargo lo recomendable es hacerlo de la manera descrita en este artículo pues un error de configuración y el sistema no arrancará.

4 de julio de 2013

Reparar Sistema de archivos dañado ext3

Después de más de 9 años de usar GNU/Linux en distintos sabores, es la primera vez que me falla el sistema de archivos ext3 aparentemente sin motivo alguno. Lo bueno es que se pudo solucionar fácilmente con el comando fsck.ext3 (sin ningún parámetro, excepto el de la partición):
    # fsck.ext3 /dev/sdxy

Esto me pasó hoy 4 de julio del 2013 en Debian GNU/Linux Squeeze en la partición raíz (/).  Sé que ya fue liberada Wheezy como estable pero he estado retrasando la actualización pues ocupo probar que funcionen correctamente unas aplicaciones en la nueva estable.

Esto me recuerda que ningún sistema es completamente estable y seguro, pero por supuesto Debian se acerca a ello.

24 de noviembre de 2011

Emesene no se conecta

Desde principios de noviembre del presente año emesene ha dejado de conectarse en todas sus versiones (comprobado por mi en la versión 1.6.3-1). Según comentan en su página oficial y en la página de Debian, el problema es  por unos cambios realizados en lo servidores de Windows Live Messenger.

En la página de emesene recomiendan descargar una versión en desarollo para solucionar el problema. Sin embargo, en la de Debian proporcionan otra solución que a continuación les explico.

Reemplazar "contacts.msn.com" (sólo el subdominio contacts.msn.com) por "local-bay.contacts.msn.com" en los siguientes archivos:
  • /usr/share/emesene/emesenelib/soap/templates.py
  • /usr/share/emesene/emesenelib/soap/requests.py
Una vez realizados dichos cambios, emesene volverá a conectarse. Cabe mencionar que aMSN no presentó dichos problemas y ha estado funcionando adecuadamente.

23 de junio de 2011

Guardar pestañas en Firefox/Iceweasel 4 y 5


Al salir la versión 4 de Firefox vinieron varios cambios, uno de ellos es que la opción de guardar las pestañas al cerrar la aplicación viene desactivada. Para activarse hay que teclear lo siguiente en la barra de direcciones de Firefox o Iceweasel:
about:config


Luego en el campo filtro se teclea lo siguiente:
browser.showquitwarning

Finalmente se cambia el valor a true dando doble clic en dicha función.

Funciona en la versión 4 y 5 de Firefox.

15 de junio de 2011

Cancelar fsck del arranque en Debian Squeeze


fsck es una herramienta de gran ayuda para prevenir fallos en discos duros. Se instala por default en Debian y se ejecuta de manera automática cuando se enciende el equipo. Si se instala el sistema base de Debian Squeeze, por default no puede saltarse el chequeo del arranque. Se puede cancelar (Ctrl + C) pero el equipo se reinicia y al arrancar de nuevo se vuelve a ejecutar. Esto es muy molesto, sobre todo cuando se tiene prisa y el disco duro es una capacidad elevada.

Para poder cancelar el fsck se requiere tener instalado los paquetes:

e2fsck-static
e2fsprogs


Una vez instalado cuando se encienda la computadora e inicie el fsck se podrá cancelar con Ctr + C y se continúa el arranque con Ctrl + D. Luego de realizar las tareas urgentes, la próxima vez que se encienda el equipo se deja que se termine el chequeo.

En algunos sitios mencionan que se debe editar el siguiente archivo, sin embargo en Debian no existe, por lo que no hice nada. Sin embargo dejo la información por si en alguna otra distro se requiera realizar:
# nano /etc/e2fsck.conf
[options]
allow_cancellation = true

26 de marzo de 2011

Enjaular a algunos usuarios de SFTP

El siguiente artículo muestra como permitir el acceso a algunos usuarios del sistema por SFTP usando SSH para la transferencia de archivos de forma segura impidiendo el acceso a directorios fuera de su home (Chroot). Además, los usuarios no podrán conectarse al sistema por SSH desde linea de comandos.

¿Porque usar SFTP con SSH en lugar de usar el servicio vsftpd?
Porque toda la información viajara encriptada (incluyendo la contraseña) impidiendo que alguien pueda acceder a la información durante la transferencia.

En Debian Squeeze, la configuración de SSH por default permite el acceso a todos los usuarios del sistema y recorrer todo el árbol de directorios incluyendo /. Sin embargo, se puede restringir el acceso a ciertos usuarios al Servidor y enjaularlos en su propio home (el usuario se podrá conectar al servidor pero no podrá salir fuera de su directorio personal).

Preparando el Sistema

Primeramente se crea un directorio donde se ubicaran los home de los usuarios del grupo:
   # mkdir /home/usersjaula 

Luego se crea un grupo de usuarios y los usuarios deseados:
 # groupadd usersjaula
# useradd -g usersjaula -d /home/usersjaula/nombreUsuario -m -s /bin/false nombreUsuario
# passwd nombreUsuario

Con los comandos anteriores se creó el grupo "usersjaula" y el usuario "nombreUsuario" sin shell perteneciente al grupo recién creado.

Luego se cambian los permisos de los siguientes directorios:
 # chmod 755 -R /home/usersjaula
# chmod 755 -R /home/usersjaula/nombreUsuario
# chown root.root -R /home/usersjaula

Con los comandos anteriores el usuario no podrá escribir en su propio home. Por ello se crea un directorio en su home para que pueda almacenar sus archivos.
 # mkdir /home/usersjaula/nombreUsuario/archivos
# chown nombreUsuario.nombreUsuario -R /home/usersjaula/nombreUsuario/archivos

Los permisos que se modificaron en los pasos anteriores se realizaron para que funcione el enjaulado SFTP. El propietario del directorio jaula y los directorios sobre este, debe ser root con permisos 755. Esta es una restricción del ChrootDirectory en OpenSSH.

Configuración de SSH

El archivo de configuración de SSH es /etc/ssh/sshd_config. Por lo que todas las configuraciones se realizaran en este archivo.

Por seguridad se recomienda deshabilitar el acceso a root por SSH con la siguiente directiva:
   PermitRootLogin no 

Para limitar el acceso al servicio SSH a ciertos usuarios se usa la directiva AllowUsers:
   AllowUsers nombreUsuario nombreUsuario2 etc 

Para limitar el acceso a ciertos grupos se puede usar:
   AllowGroups usersjaula 

Verificar que se tiene la siguiente linea para enjaular el servicio SFTP:
   Subsystem sftp /usr/lib/openssh/sftp-server 

Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un usuario:
  Match User nombreUsuario
ChrootDirectory /home/usersjaula/nombreUsuario
ForceCommand /usr/lib/openssh/sftp-server
# AllowTCPForwarding no ## opcional
# X11Forwarding no ## opcional

Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un grupo de usuarios:
  Match group usuariossftp
ChrootDirectory /home/usersjaula
ForceCommand /usr/lib/openssh/sftp-server
# AllowTCPForwarding no ## opcional
# X11Forwarding no ## opcional

Para que los cambios surjan efecto se reinicia el servicio:
   # /etc/init.d/ssh restart 

Si se tiene un firewall se deben de abrir el puerto correspondiente.

Acceder remotamente

Para acceder remotamente al servicio SFTP se puede usar el navegador de archivos tecleando en la barra de direcciones "sftp://IP".

Desde Windows se puede usar cualquier cliente que se indica en esta lista. De los que vienen en la lista, yo recomiendo FileZilla pues con este al subir archivos con acentos y Ñ se mostrarán correctamente en GNU/Linux.

Si se intenta acceder desde linea de comandos a SSH marcara el error:
   This service allows sftp connections only. 

FUENTE:
http://www.esdebian.org/wiki/enjaulado-sftp
http://linuxsix.blogspot.com/2009/03/tutorial-para-hacer-una-jaula-chroot.html
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config

18 de marzo de 2011

Alargar cable USB a más de 12 metros

Introducción
En este artículo se explica como alargar un cable USB a una distancia superior al estándar de 5 metros y que funcione adecuadamente una cámara Web. Yo alargue un cable superando los 12 metros y lograr hacer funcionar correctamente memorias USB, impresoras y dispositivos Wireless USB. Para poder hacer funcionar las cámaras Web tuve que utilizar un HUB USB con alimentación eléctrica entre la cámara USB y el cable UTP pues éstas requieren de mayor electricidad (que se pierde al alargar el cable) para funcionar.

La idea surgió después de montar un sistema de vigilancia y conocer el costo de las cámaras IP, tarjetas capturadoras, cámaras de CCTV, etc. El costo de montar un sistema de vigilancia usando dichas cámaras es bastante elevado. Así que empecé a buscar en Internet sobre la posibilidad de ampliar la distancia del cable USB de una Webcam sin que afectara el funcionamiento de esta para usarlas con ZoneMinder. Me encontré con este sitio (en ingles) en donde comentaban que era posible y explican como hacerlo cortando un cable de extensión USB (con conector macho en un extremo y hembra en el otro) por la mitad. Yo decidí hacer una extensión usando conectores USB en lugar de cortar un cable porque leí en varias páginas que funcionaba mejor.

A continuación explico crear una extensión USB.


Material necesario
  • Cable UTP
  • 1 conector USB hembra y 1 macho por cada cable que se desea alargar
  • Cautín y soldadura
  • Tubo o funda termoretráctil (opcional) para la unión del cable con el conector USB
  • Cinta negra

Procedimiento:

El cable/conector USB se compone de 4 pines, 2 para la corriente y 2 para los datos. El Pin 1 y 4 se usan para la corriente y el 2 y 3 para los datos como se muestra en la siguiente tabla:
Pin  Nombre    Color cable    Descripción
1 VCC Rojo +5v
2 D− Blanco Data −
3 D+ Verde Data +
4 GND Negro Tierra

Tomando en cuenta la tabla anterior, lo que se hará es soldar los cables blanco-naranja y naranja del cable UTP en el Pin 1 del conector USB. El blanco-verde en el Pin 2, el verde en el Pin 3 y el resto (café, blanco-café, azul y blanco-azul) en el Pin 4. Como se muestra en la siguiente tabla:
PIN USB    COLOR
1 blanco-naranja y naranja
2 blanco-verde
3 verde
4 resto (azul, blanco-azul, café, blanco-café)
Si se desea usar un cable USB cortado a la mitad en lugar de los conectores se soldaran los cables como se indica a continuación:
PIN    USB        UTP
1 rojo blanco-naranja y naranja
2 blanco blanco-verde
3 verde verde
4 blanco resto

Primeramente se corta un pedazo de funda termoretráctil y coloca dentro de cada extremo del cable. Luego se separan los cables del UTP y se pelan las puntas.

Luego se soldan los cables en cada conector USB como se explicó anteriormente:

Luego se coloca la funda termoretráctil en la parte del cable que está descubierto el cobre y se calienta para cubrirlo.

Probando que funcione:

Una vez soldado los conectores conecté una cámara Web a la extensión recién creada y ésta a una computadora, la reconocía pero marcaba un error. Luego conecté una memoria USB y esta funcionaba bien, pudiendo acceder a los archivos y copiar información en ella. Luego probé una impresora, un dispositivo USB Wireless y una cámara digital para descargar las fotos. Todo funcionaba bien, excepto la cámara Web. Luego compré un HUB USB con alimentación eléctrica y lo coloque entre el CPU y la extensión marcando el mismo error al conectar una Cámara Web. Pero al colocar el HUB USB entre la cámara Web y el la extensión USB la WebCam funcionó correctamente.

Gracias a esta extensión de más de 12 metros tengo funcionando correctamente una cámara USB con Zoneminder. En el HUB puedo conectar más cámaras, incluso puedo conectar cualquier dispositivo USB que desee.

Conclusiones:

En base a las pruebas realizadas se puede concluir que al alargar el cable USB más allá de los 5 metros, este no es capaz de proporcionar el voltaje suficiente para que funcione una cámara Web. Por ello es necesario proporcionarle de alguna manera electricidad. Una forma es con un Hub USB con alimentación eléctrica.


FUENTE:
Wikipedia
http://www.instructables.com/id/How-to-Extend-yout-USB-using-UTP/
http://wiki.buenosaireslibre.org/HowToAlargueUSB

15 de marzo de 2011

Solucionar problema de vizualización de camaras en ZoneMinder


En días pasados sin motivo alguno no se podía visualizar las cámaras en ZoneMinder (lo que estaban grabando en ese momento, ni tampoco se visualizaban los eventos). Sin embargo, si se estaban generando eventos y por consiguiente grabando las imágenes. Incluso si accedías a los eventos se podía generar un video sin ningún problema.

Investigando un poco me doy cuenta que al tratar de acceder a una cámara messages (tail -f /var/log/messages) indicaba algo interesante:

Libgcrypt warning: missing initialization - please fix the application


Buscando en Internet encuentro la solución:
Cambiar el valor a none de la variable AUTH_RELAY ubicada en la pestaña System(Sistema) de las opciones de la consola de administración
Yo tenía la opción hashed.

FUENTE:
http://www.zoneminder.com/forums/viewtopic.php?p=62138
http://www.zoneminder.com/forums/viewtopic.php?p=57610

20 de febrero de 2011

Migrando correo de Hotmail a Gmail


He decidido dejar de utilizar definitivamente una cuenta de correo electrónico de Hotmail que llevaba usando por casi 10 años para usar solamente una de Gmail preservando los correos electrónicos y contactos.

Antes que nada, es importante tener bien organizado el correo de Hotmail para que no se haga un desorden cuando los correos sean importados por Gmail. Esto es, tener los correos en carpetas y cuyos nombres se recomienda no sea el mismo que el de alguna etiquete de Gmail. De esta forma se podrá preservar la organización que se tenía en Hotmail e identificar fácilmente los correos que vienen de Hotmail para organizarse de mejor manera. En mi caso a todas las carpetas les antepuse las letras Hot_ (Hot_algunNombreDeCarpeta).

Primeramente hay que configurar Hotmail para que reenvíe los correos a la cuenta de Gmail. Esto se hace desde "Opciones", "Mas opciones", "Reenviar correo electrónico".

Luego desde Gmail, nos dirigimos a "Configuración", "Cuentas e importación", en la sección "Importar correo y contactos" dar clic en el botón "Importar desde otra dirección". El resto de pasos a realizar se explican en el enlace Más información ubicado a un costado del botón mencionado.

El proceso durará algunas horas dependiendo de la cantidad de correos a importar. Los correos importados tendrán como etiqueta el nombre de la carpeta en la que estaban ubicados. El resto ya depende de como se desee organizar los correos. Se puede crear un filtro para ponerle una etiqueta a los correos que lleguen a la cuenta de Hotmail.

13 de febrero de 2011

Instación y configuración de Sarg en Debian Squeeze


Sarg (Squid Analysis Report Generator) es una herramienta que permite a los administradores de sistemas ver de una manera sencilla y amigable que sitios de Internet visitan (incluso se puede saber hasta la hora en que la visitó) los usuarios de la red local usando los logs de Squid. Genera una lista diaria, semanal, mensual o personalizada con los sitios de Internet que visita cada usuario, cuanto consumió (MB), etc. También genera una lista de los sitios más visitados (Top Sites).

Por una razón que desconozco, Sarg no se encuentra en los repositorios de Squeeze. Pero eso no significa que no se pueda instalar. Para instalarlo, primeramente hay que checar cuales son sus dependencias e instalarlas (libc0.1, libc0.3, libc6, libapache2-mod-php5, apache2, squid). Luego se descarga el paquete de Sid y se instala con:
# dpkg -i sarg_2.3-1_arquitectura.deb

Una vez instalado, hay que configurarlo para que se generen diariamente los reportes y estadísticas. Los archivos de configuración se encuentran en "/etc/sarg/". El archivo de configuración principal es "/etc/sarg/sarg.conf" y algunos de sus parámetros son los siguientes:

1 access_log /var/log/squid/access.log
2 output_dir /var/lib/sarg
3 exclude_hosts /etc/sarg/exclude_hosts
4 date_format e
5 index yes
6 topsites_num 100

1 Indica la ubicación del log de Squid
2 Directorio donde se guardarán los reportes
3 Lista de equipos que no se incluiran en los reportes
4 Formato de la fecha usada en los reportes
5 Genera una página principal index.html
6 Número total de sitios del TopSites

El archivo /etc/sarg/exclude_users contiene los usuarios que no formarán parte de los reportes.
El archivo /etc/sarg/exclude_hosts contiene los equipos que no se desea formen parte de los reportes de SARG. Pudiendo contener direcciones IP (Ejemplo: 192.168.1.10), una red completa (192.168.1.0/24), el nombre de un equipo (equipo.red.local) o todos los equipos de una red (*.red.local)

Configuración de apache

Para poder acceder a los reportes generados por Sarg es necesario configurar apache y es muy recomendable restringir el acceso a dichos reportes. A continuación se explica como hacerlo:

Se crea el archivo /etc/apache2/conf.d/sarg con el siguiente contenido:
Alias /sarg /var/lib/sarg
<Directory /var/lib/sarg>
DirectoryIndex index.html
order deny,allow
deny from all
allow from 127.0.0.1 192.168.1.10
AuthName "Solo usuarios autorizados."
AuthType Basic
require valid-user
AuthUserFile /var/www/claves-users-sarg
</Directory>


Se crea el archivo donde se almacenarán las claves, se limitan permisos de lectura y escritura sólo al dueño, se asigna a www-data como propietario del archivo:
# touch /var/www/claves-users-sarg
# chmod 0600 /var/www/claves-users-sarg
# chown www-data.www-data /var/www/claves-users-sarg

Se genera el usuario y se asigna el password:
# htpasswd /var/www/claves-users-sarg usuario

Luego se reinicia apache para que los cambios surjan efecto:
# /etc/init.d/apache2 restart

En Squeeze hay un problema que impide que se generen los reportes diarios. El problema es que se realiza una rotación diaria de los logs de Squid y dicha rotación se realiza justo antes de que Sarg genere los reportes. Esto es el scrip /etc/cron.daily/logrotate se ejecuta antes que /etc/cron.daily/sarg y cuando éste último se ejecuta el log /var/log/squid/access.log está vacío. Esto se soluciona muy sencillo cambiando el nombre de /etc/cron.daily/sarg:
# mv /etc/cron.daily/sarg /etc/cron.daily/0sarg

Ahora solo hay que esperar a que pase el tiempo para que se ejecuten los scripts que se encuentran en /etc/cron.daily/ a la hora programada en /etc/crontab.

Una vez generados los reportes se accede a http://IP-del-Server/sarg/ con el usuario y el password generados.

15 de noviembre de 2010

Acceder a equipos con IP públicas dinámicas usando DNS Dinámico


NOTA: En México, sólo el ISP Telmex (que yo sepa) ofrece direcciones IP públicas dinámicas a sus usuarios por default. Los demás ISP, en su mayoría cableras (Megacable, Cablevisión, etc), proporcionan por default direcciones IPs privadas no pudiéndose hacer lo que a continuación se explica.

En ocasiones necesitamos acceder desde Internet a nuestro equipo en casa. Aunque podemos hacerlo usando la dirección IP pública que nos brinda nuestro ISP, ésta al ser dinámica puede cambiar en cualquier momento dejándonos incomunicados. Hay una solución a esto y se llama DNS Dinámico.

DynDNS.com permite asociar una dirección IP dinámica a uno o varios subdominios de una gran lista de nombres de dominios disponibles, entre ellos dyndns.org. Pudiendo acceder desde Internet a nuestro servidor casero usando el subdominio minombre.dyndns.org. Para ello, se requiere instalar un cliente DynDNS en nuestro servidor que se encargue de informar y actualizar la configuración en DynDNS.com cuando la IP pública cambie.

Primeramente hay que registrarse en DynDNS.com. Una vez registrado, recibiremos un correo de confirmación, nos logueamos y dirigimos a "My Account", luego en "My services", en "Host Services" se elige "Add Hostname" y se sigue el asistente.

Después hay que configurar el router de Telmex redirigiendo los puertos o servicios deseados a nuestro servidor. Esto se hace desde la "Configuración del bloqueo de intrusos", se elige el equipo al que se desea redirigir el puerto y se agrega el servicio deseado (Web, SSH, etc). Si no viene el servicio en la lista, se puede agregar uno personalizado dando clic en "Agregar una nueva aplicación definida por el usuario".

Luego, en nuestro servidor, hay que instalar ddclient que es un cliente de DynDNS:
# aptitude install ddclient

Durante la instalación nos preguntará el proveedor del Servicio DNS Dinámico, eligiendo www.dyndns.com, colocando el usuario y la contraseña de DynDNS. Luego se responde que Si a la pregunta sobre si deseamos que se obtenga la dirección IP mediante checkip.dyndns.com. Luego se elige la opción De una lista como el Métodos de selección para nombres actualizados.

Si durante el proceso marca algún error producto de algún error en contraseña o usuario de DynDNS, puede ejecutarse el siguiente comando para reconfigurar ddclient.
# dpkg-reconfigure ddclient

También puede configurarse manualmente mediante el archivo /etc/ddclient.conf:
protocol=dyndns2
use=web, web=checkip.dyndns.com, web-skip='IP Address'
server=members.dyndns.org
login=usuariodeDynDNS
password='passwd'


Si se modifica manualmente hay que reiniciar el servicio Web y el servicio ddclient:
/etc/init.d/apache2
/etc/init.d/ddclient


El archivo /etc/default/ddclient también tiene opciones de configuración:
run_ipup="false"
run_daemon="true"
daemon_interval="1800"


Otra opción de DNS Dinámico es usar No-IP.com y el cliente noip2 que está en los repositorios de debian.

14 de noviembre de 2010

Usar Gmail para enviar correos mediante exim


En el siguiente articulo se explicará como usar una cuenta de correo de Gmail en un servidor para enviar correos al exterior (cualquier dirección de correo) y a los usuarios del sistema. La ventaja es que no se requiere comprar un dominio ni configurar el servicio de correo como MTA. Para ello se usará exim4.

Primeramente, se instala exim4:
# aptitude install exim4 exim4-config mailx

Para configurar exim adecuadamente se ejecuta la siguiente orden:
# dpkg-reconfigure exim4-config

Se inicia un asistente de configuración, en el que se preguntarán algunos datos,respondiendo lo siguiente:
Tipo de configuración general del correo: El correo se envía mediante un «smarthost»; se recibe a través de SMTP o fetchmail
Nombre del sistema de correo: localhost
Direcciones IP en las que recibir conexiones SMTP entrantes: 127.0.0.1
Otros destinos para los que se acepta el correo: Se deja en blanco
Máquinas para las cuales reenviar correo: Se deja en blanco
Dirección IP o nombre de equipo para el «smarthost» saliente: smtp.gmail.com::587
¿Desea ocultar el nombre de correo local en los mensajes salientes?: No
¿Limitar el número de consultas de DNS (marcación bajo demanda)?: No
Mecanismo de entrega para el correo local: formato mbox en «/var/mail»
¿Dividir la configuración en pequeños ficheros?: No

La información proporcionada en el asistente se almacena en "/etc/exim4/update-exim4.conf.conf" y en "/var/lib/exim4/config.autogenerated".

Luego hay que configurar la cuenta de usuario de gmail que se usará para el envío de correos. se edita el archivo /etc/exim4/passwd.client y se agregan las siguientes lineas modificando el nombre de usuario y el password de la cuenta de Gmail que se desea usar:
gmail-smtp.l.google.com:NombreDeCuenta@gmail.com:Password
*.google.com:NombreDeCuenta@gmail.com:Password
smtp.gmail.com:NombreDeCuenta@gmail.com:Password


Hay que verificar que el archivo /etc/exim4/passwd.client pertenezca al usuario root y grupo Debian-exim y que sólo pueda ser leido por ellos (por default, así está). En caso contrario hay que ejecutar:
# chown root:Debian-exim /etc/exim4/passwd.client
# chmod 640 /etc/exim4/passwd.client


Reiniciar el servicio de correo para que se apliquen los cambios:
# /etc/init.d/exim4 restart

Para ver o monitorizar el funcionamiento de exim (pudiendo apreciar cuando se envían mails o problemas posibles problemas), se ejecuta:
# tail -f /var/log/exim4/mainlog

Para probar que funciona se puede enviar un mail desde la consola
echo 'Contenido del mail de Pruebas' | mail usuarioDestinatario@unDominio.com -s "Asunto del correo"

También se puede enviar un correo que indique el espacio en disco duro disponible:
df -h | mail usuarioDestinatario@unDominio.com -s "Espacio en el disco"

En los correos enviados aparecerá como FROM el nombre del usuario del sistema que envío dicho correo. Es decir, si se envía un mail con el usuario root, el campo FROM del mensaje de correo dirá: root (NombreDeCuenta@gmail.com)

Hasta el momento se puede enviar correos a cualquier cuenta de correo externa (Gmail.com, hotmail.com, cualquierDominio.com, etc) y a los usuarios locales. Los usuarios locales podrán recibir sus mensajes de manera normal usando el comando mail, mutt o cualquier cliente de correo.

Para que los correos de los usuarios locales del Sistema se envíen a una cuenta de correo externa hay que editar el archivo /etc/aliases y crear un alias a los usuarios locales que se deseen enviar a una cuenta externa. Quedando algo similar a:
root: usuarioDelSistema
usuarioDelSistema: CualquierCuentaDeUsuario@gmail.com


Lo anterior indica que los correos que se envíen a usuarioDelSistema los recibirá CualquierCuentaDeUsuario@gmail.com.

Se reinicia el servicio de correo para que se apliquen los cambios:
# /etc/init.d/exim4 restart

En algunas páginas mencionan que se debe modificar el archivo "/etc/email-addresses", pero no es necesario.

FUENTE:
http://wiki.debian.org/GmailAndExim4
http://mail.google.com/support/bin/answer.py?answer=78799

13 de noviembre de 2010

Espacio en disco duro reservado para root


Los sistemas de archivos ext3 y ext4 por default reservan el 5% del espacio en disco de la partición para el usuario root reduciendo el espacio en disco que se puede utilizar. Esto es muy útil en las particiones raiz (/), /var y /root pues si en algún momento la partición se llena, gracias a ese espacio que se reserva el usuario root puede acceder al sistema liberar espacio y solucionar el inconveniente. Sin embargo, las particiones cuyo destino sea almacenar datos (como /home) no tiene mucho sentido desperdiciar ese %5 de espacio. Si sólo se tiene una sola partición para todo el sistema es recomendable dejar dicho espacio de reserva.

El comando tune2fs sirve para visualizar y modificar el espacio reservado para root.

Con el siguiente comando se puede ver la información detallada sobre el espacio asignado para los procesos que se ejecuten como root:
# tune2fs -l /dev/sda1

Mostrará varios datos, entre ellos:
Block count: 48584560
Reserved block count: 2429228


Como se puede ver el %5 de la partición esta reservado. También mostrará la fecha en que se creó dicho sistema de archivos (Filesystem created)

Con el siguiente comando se modifica a %1 el porcentaje de espacio reservado para root de una partición ext3/ext4:
# tune2fs -m 1 /dev/sda1

Si no se desea asignar un porcentaje de espacio reservado al formatear una partición con Ext3/Ext4 se puede ejecutar el siguiente comando:
# mkfs.ext3 -m 0 /dev/sda1

También se puede modificar el tiempo en que debe es analizado automáticamente el sistema de archivos (Por default cada 30 montajes o 180 días, lo que suceda primero) para prevenir fallos. Con el siguiente comando se modifica a 50 montajes máximos:
# tune2fs -c 50 /dev/sda1

Con el parámetro -i se modifican los días máximo.

Particiones en GNU/Linux


GNU/Linux puede instalarse en una sola partición, sin embargo en ocasiones es recomendable usar particiones diferentes para determinados directorios. Por ejemplo puede separarse el area de intercambio (swap), /boot, /home, /mnt, /opt, /root, /tmp, /usr, /var, etc en particiones diferentes.

Si se desea particionar, el tamaño a asignar a cada partición varia dependiendo del uso que se le dará. A continuación se muestra las particiones más comunes en que se puede dividir un disco duro y el espacio recomendado para dichas particiones:
/ Depende del numero de particiones en que se particionará el disco duro y de la cantidad de aplicaciones que se instalaran. Para un servidor con /var y /home separadas con 10GB es más que suficiente, incluso con 5GB basta y sobra.
/boot 100MB
/home Depende del uso que se le dará al equipo. Si los usuarios almacenaran mucha información se recomienda un valor grande.
/var Depende del uso que se le dará al equipo. Si es para un server se recomienda un valor grande, de lo contrario unos 5 o 20GB es suficiente
/usr Depende de la cantidad de paquetes que se vayan a instalar, pues este directorio contiene todos los programas para usuarios (/usr/bin), bibliotecas (/usr/lib), documentación (/usr/share/doc), etc.

Para un equipo de escritorio no hay mucha utilidad crear muchas particiones. Con /, /home y la de intercambio es suficiente. Para un servidor es muy recomendable separar al menos /home, /var y /boot de /.

11 de noviembre de 2010

Modificar Zona horaria de un equipo


Introducción

Para Sinaloa, México el tiempo de la montaña o zona Pacífico es el huso horario oficial correspondiente en México al UTC -7, es decir, siete horas menos que en el tiempo universal coordinado o UTC, también conocido como horario GMT.

Durante el horario de verano, este huso horario cambia al de la Zona Centro (del UTC -7 al UTC -6).


Modificación de la zona horaria

Si por alguna razón durante el proceso de instalación se eligió una zona horaria errónea se puede corregir editando el archivo "/etc/timezone" que es donde se almacena la zona horaria. O lo más recomendable ejecutando la siguiente orden:
# dpkg-reconfigure tzdata

Si deseamos que la hora sea exacta, se puede sincronizar la hora con un servidor:
# ntpdate -s pool.ntp.org
o
# ntpdate-debian

9 de noviembre de 2010

Software para monitorizar y verificar estado de discos duros


Verificar estado del disco duro

Hay varias herramientas que permiten verificar el estado en que se encuentra un disco. Una de ellas es el comando smartctl. Smartctl se encuentra en el paquete smartmontools y está en los repositorios de Debian por lo que su instalación es sencilla:
# aptitude install smartmontools

Para una mejor lectura se puede ejecutar smartctl de la siguiente forma para revisar el estado de un disco duro (en este caso sda):
# smartctl -a /dev/sda | less

Mostrará información del disco duro como marca, modelo, No de Serie, etc. También mostrará estadísticas de uso y errores que se hayan presentado.

SMART overall-health self-assessment test result indica el estado del disco duro. Si dice PASSED significa que el disco duro está en buen estado.
Power_Cycle_Count indica el número de veces que ha arrancado el disco duro
Power_On_Half_Minutes indica el tiempo total que ha trabajado el disco duro
Reallocated_Sector_Ct indica los sectores dañados

Más información en su manual:
# man smartctl


Reparar sectores dañados

Si se encuentran algunos sectores dañados, se pueden reparar con el comando badblocks:
# badblocks -s -v -n -f /dev/sdb1

Los parámetros:
-s significa que nos muestra el proceso de escaneo del disco, mostrandonos los sectores ya checados.
-v modo verbose
-n nos pone en modo no destructivo, esto significa que si se recuperaran los sectores dañados la información en el disco duro no sera dañada o eliminada.
-f repara los sectores dañados.

Una alternativa a badblocks es HDD Regenerator que aunque no es Software libre funciona bien.

Monitorizar estado del disco duro

Hay otra herramienta llamada smart-notifier que manda un mensaje cuando el disco duro este propenso a fallar. Incluso cuando el disco duro cambia de temperatura y se calienta más de lo normal manda un mensaje en pantalla. Su instalación es sencilla como todos los paquetes en Debian:
# aptitude install smart-notifier

Una vez instalado, se ejecutará cuando se inicie sesión en el entorno gráfico. Para verificar que se ejecutará en Gnome hay que ir al menú Sistema, Preferencias, Sesiones. En la pestaña Programas al inicio se encontrará la lista de programas y entre ellas "Smart Notifier". En caso de que no se encuentre se agrega y en el comando se coloca "smart-notifier".

Ahora sólo hay que verificar que el demonio smartmontools se ejecute en el arranque del sistema (puede hacerse fácilmente con el comando rcconf).