Mostrando entradas con la etiqueta Debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta Debian. Mostrar todas las entradas

miércoles, 16 de octubre de 2013

Actualización de Debian Wheezy 7.2

El día 12 de octubre de 2013 el proyecto Debian anunció la disponibilidad inmediata de la segunda actualización de la versión 7, Debian Wheezy 7.2, la cual de por sí no representa una nueva versión del sistema operativo, sino una actualización estable propiamente dicha de varios paquetes contenidos en Wheezy.
Esta publicación muestra los pasos que seguí para actualizar mi server a partir de las instrucciones que se brindan en el sitio oficial del proyecto.
Primero mostramos la versión actual del sistema operativo:


Agregamos las siguientes fuentes al archivo /etc/apt/sources.list (líneas 9 y 10):


Tras lo cual procedemos a actualizar la lista de los paquetes disponibles con el comando aptitude update y el sistema en sí con aptitude dist-upgrade (el cual por razones históricas todavía continúa siendo un sinónimo de aptitude full-upgrade, de acuerdo al man page de aptitude):

Luego de llevar a cabo el proceso, volvemos a consultar la versión actual del sistema operativo:

lunes, 29 de julio de 2013

Administración de usuarios en Linux (Parte 1): Agregar usuarios y análisis de los archivos /etc/passwd y /etc/shadow

Para agregar un usuario en un sistema Linux, nos logueamos como root y utilizamos el comando
adduser <nombre_de_usuario>
A continuación, podemos llenar la información solicitada (la cual es opcional salvo la contraseña) para identificar mejor al usuario que estamos creando (es decir, para poder relacionarlo con una persona real):


Dicha información es almacenada en dos archivos:
/etc/passwd

Como podemos ver, cada línea de este archivo representa el registro que contiene la información correspondiente a cada usuario, y está compuesta por 7 campos (separados por ":"), a saber:
1) Nombre de usuario
2) ¿Encriptar la clave y guardar la versión encriptada en el archivo /etc/shadow? (Una "x" indica que este proceso se lleva a cabo, mientras que cualquier otro caracter -generalmente "*" se utiliza para deshabilitar la cuenta). Cabe destacar que por razones de seguridad, solamente se guarda la contraseña encriptada. Cuando un usuario intenta loguearse en el sistema se encripta la clave que ingresa y se compara con la almacenada en /etc/shadow; si ambas son iguales se permite el acceso al mismo.
En mi experiencia, quitar la "x" del segundo campo es una forma de permitir el login sin contraseña de un usuario local del sistema (se puede utilizar este método para recuperar el acceso como root si no se conoce la contraseña del superusuario. Para esto obviamente es necesario disponer de acceso físico al equipo y utilizar una herramienta de booteo tal como un LiveCD/DVD/USB que permita montar los sistemas de archivos locales y modificar la línea correspondiente en el archivo /etc/passwd).
¡CUIDADO CON ESTO! Ya que cuando se cambie la contraseña del usuario en cuestión, ya sea que lo haga él mismo utilizando el comando passwd o que lo haga el superusuario, la nueva contraseña se almacenará encriptada en el archivo /etc/passwd (el cual pueden leer todos los usuarios). Esto representa un serio problema de seguridad:

Si se llegase a utilizar el método descrito para cambiar la contraseña de root, o si se desea permitir el login local sin contraseña, antes de cambiar la contraseña del usuario en cuestión, se debe volver a colocar la "x" en su lugar, para luego proceder a cambiar la clave normalmente:


3) ID de usuario. El UID 0 es el perteneciente a root, desde el 1 hasta el 999 están reservados para usuarios del sistema (procesos o daemons), y desde 1000 en adelante se utilizan para los usuarios "comunes" o locales del sistema.
4) ID de grupo primario (GID). El GID 0 es el perteneciente a root, desde el 1 hasta el 999 están reservados para usuarios del sistema (procesos o daemons), y desde 1000 en adelante se utilizan para los usuarios "comunes" o locales del sistema. Se guarda en el archivo /etc/group. En Linux, los grupos representan un segundo anillo de seguridad en lo que a permisos respecta.
5) Información del usuario
6) El home (directorio personal) del usuario. Este es el directorio en el que se encontrará el usuario cuando ingrese al sistema. Si este campo está vacío, "/" (raíz del sistema de archivos) se convierte en el directorio personal del usuario.
7) Ruta absoluta a un comando o shell que utilizará el usuario al loguearse (no tiene que ser precisamente un shell, pero de no ser así el sistema no tendrá mucha utilidad).
Podemos ver en la línea n° 6 del primer paste que durante el proceso de creación de un usuario, se copian a su home los archivos que se encuentran en el directorio /etc/skel, que se utilizarán para guardar las preferencias del perfil del usuario (.profile), de su entorno de shell (.bashrc), y de las acciones a realizar cuando cierra sesión (.bash_logout). Adicionalmente se creará dentro del home del usuario el archivo .bash_history en el que se registrará el historial de comandos del mismo:

/etc/shadow
En este archivo se guardan, entre otras cosas (como veremos a continuación) las contraseñas encriptadas de los usuarios:


Otra vez nos encontramos con un registro por línea, con campos separados por ":". El significado de los mismos es el siguiente:
1) Nombre de usuario
2) Contraseña encriptada. Un signo "$" al comienzo es indicador que el cifrado se llevó a cabo utilizando el algoritmo MD5.
3) Días transcurridos desde el 1 de enero de 1970 hasta la fecha correspondiente al último cambio de contraseña.
4) Cantidad mínima de días entre cambios de contraseña, es decir, la cantidad de días que restan hasta la fecha en que se permitirá un cambio de contraseña.
5) Cantidad máxima de días (duración) de la contraseña, luego de la cual el usuario tendrá que cambiarla. 6) Advertencia, número de días antes del vencimiento (expiración) de la contraseña en el que se comenzará a mostrar un mensaje de advertencia avisando de la necesidad de cambiarla.
7) Deshabilitación de cuenta, número de días luego del vencimiento de la clave en que se deshabilitará la cuenta.
8) Cuenta deshabilitada, número de días transcurridos desde el 1 de enero de 1970 hasta el día que la cuenta fue deshabilitada.

¿Por qué los datos de los usuarios se guardan en un archivo y las contraseñas en otro? La razón es que si el archivo en el que se guardan las claves pudiera ser leído por cualquier usuario, se tendría acceso a las contraseñas (encriptadas, sí, pero acceso al fin) y eso representaría un grave problema de seguridad ya que eventualmente podrían ser descifradas con relativa facilidad si no se cuenta con una política de cambio y fortaleza de claves adecuada.
Para demostrar este hecho, utilizando la herramienta john the ripper intentamos crackear la contraseña del usuario recién creado, y vemos que el proceso consume una gran parte de los recursos del sistema (cosa que no es mayor problema si se cuenta con un equipo dedicado a esta tarea).

Precisamente en el segundo campo se puede ver la contraseña del usuario jperez (1234):
(aunque el proceso para crackear una contraseña tan simple duró 44 minutos, hay que tener en cuenta que esto demuestra que SÍ SE PUEDE LOGRAR, y el tiempo se puede disminuir utilizando un equipo que cuente con mayores recursos de hardware). Esta prueba fue realizada en PC Compaq Presario ("modelo" 2000) con 256 MB de RAM y procesador Intel Celeron de 566 MHz.

sábado, 22 de junio de 2013

Convertir un archivo .nrg (creado con Nero) en una imagen .iso

Dos posibilidades:

1) Usar el comando dd. La diferencia entre una imagen nrg y una iso es un header de 300KB que Nero agrega a un archivo iso. Por este motivo, podemos "cortar" ese encabezado y tendremos la imagen iso original.
dd bs=1k if=cd-image.nrg of=cd-image.iso skip=300
2) Utilizar una herramienta llamada nrg2iso, disponible desde repositorios:


nrg2iso cd-image.nrg cd-image.iso

Instalar y compartir un escáner en red con xsane

En un post anterior escribí sobre la instalación de la impresora Epson CX-3900 en Debian Squeeze. Esa impresora en particular es una AIO y esa publicación solamente detallaba cómo instalar la funcionalidad de impresión.

Como complemento, se puede instalar también el escáner y compartirlo en red.

PRIMER PASO: Instalar el paquete xsane tanto en el servidor como en los equipos desde los que se desee acceder al escáner:

SEGUNDO PASO: Configurar el servidor para aceptar conexiones. Editar el archivo /etc/default/saned:
# Set to yes to start saned                                                     
RUN=yes
TERCER PASO: Especificar las direcciones IP que podrán utilizar el escáner (en /etc/sane.d/saned.conf):
192.168.1.0/24
CUARTO PASO: En el cliente, indicar la IP del servidor al cual está conectado el escáner (en /etc/sane.d/net.conf):
192.168.1.10
Adaptado de: https://help.ubuntu.com/community/ScanningHowTo

martes, 4 de junio de 2013

Crear imagen iso de una unidad flash y extraer sus contenidos

Window$ no ofrece soporte de manera nativa para crear imágenes iso ni para extraer los contenidos de una generada previamente. Hay muchos programas que ofrecen más o menos esta funcionalidad, pero como dije, ninguno viene instalado junto con el sistema operativo. Si no se cuenta con una conexión a Internet o con el ejecutable de uno de esos programas, no hay manera de realizar esta tarea.
GNU/Linux, por otra parte, permite realizar ambas tareas de manera muy fácil desde la línea de comandos:
1) Para crear la imagen iso con los contenidos de la unidad /dev/sdb, en el directorio actual:
dd if=/dev/sdb of=usb-imagen.iso
2) Para extraer los contenidos:
  • Crear el directorio /mnt/iso que se utilizará para montar la imagen iso:
mkdir /mnt/iso
mount -o loop usb-imagen.iso /mnt/iso
(La opción -o junto con el argumento loop permite montar un archivo (usb-imagen.iso en este caso) como si fuera un dispositivo de bloques).
  • Ir al punto de montaje del pseudo-dispositivo y copiar sus contenidos a otro directorio:
cd /mnt/iso
cp -r * /tmp
Nota: Si el comando mount devuelve un mensaje diciendo que se debe especificar el tipo de sistema de archivos para llevar a cabo el montaje, utilizar la opción -t seguida del argumento iso9660.

martes, 7 de mayo de 2013

Actualizando GNU/Linux Debian de 6.0.x Squeeze a 7.0.0 Wheezy

INTRODUCCIÓN

Como es costumbre, las versiones de Debian siempre llevan el nombre de un personaje de las películas Toy Story, y el equipo de desarrollo de Debian anunció la semana pasada que la versión 7.0 (llamada Wheezy) entraba en estado estable a partir del día domingo 5 de mayo de 2013, y se publicaron las notas de la versión junto con la guía de actualización. Dicen las "malas lenguas" que por ahí es conveniente hacer una reinstalación en vez de una actualización, pero siendo que mi servidor es de pruebas, y que voy a tratar de seguir al pie de la letra las instrucciones, me voy a animar a actualizar ;).

[Imagen tomada de aquí]

Los primeros tres capítulos de la guía se refieren, respectivamente a: 1) Introducción, 2) Qué hay de nuevo en Wheezy, y 3) Novedades del sistema de instalación. Es interesante ver que Wheezy incluye alrededor de 12800 (sí, doce mil ochocientos!) nuevos paquetes, haciendo un total de 37493 paquetes en total disponibles en los DVDs de instalación y desde los repositorios. Otro detalle importante es ver nuevas arquitecturas soportadas.

Habiendo dicho esto, paso a repasar el capítulo 4, el cual detalla las instrucciones para actualizar desde Debian 6.0.x Squeeze.

EL BACKUP

Como solamente necesito hacer un backup de mi home, de /etc/squid, /etc/postfix, /etc/cups, y de /var/www :
tar -cpvzf BKP.tgz /home/gacanepa /etc/squid /etc/cups /etc/postfix /var/www

REVISAR LAS ACCIONES PENDIENTES EN EL GESTOR DE PAQUETES

Según el apartado 4.2.1:
En algunos casos, utilizar apt-get para instalar paquetes en lugar de aptitude puede hacer que aptitude considere que un paquete no está siendo utilizado (marcado como «unused») y lo marcará para su eliminación... Por ello, es necesario que revise si existe alguna acción pendiente en el gestor de paquetes aptitude. El procedimiento de actualización puede verse afectado negativamente si algún paquete está marcado para eliminarse o actualizarse... Para realizar esta revisión debería ejecutar el interfaz de usuario en “modo visual” de aptitude y pulsar g (“Go”). Si se muestra cualquier acción, debería revisarla y o bien arreglarlas o llevar a cabo las acciones que se le sugieran. Se le presentará el mensaje “No hay ningún paquete planificado para instalar, eliminar o actualizar” si no hay ninguna acción pendiente.
Ejecuté
aptitude safe-upgrade
para actualizar los paquetes que tengan disponibles nuevas versiones, sin desinstalar ningún paquete a menos que no se esté usando. Entonces aptitude sí entrega el resultado deseado:


PREPARAR LAS FUENTES PARA APT
El método recomendado para actualizar desde versiones anteriores de Debian es usar la herramienta de gestión de paquetes apt-get. En versiones anteriores, se recomendaba la orden aptitude para este propósito, pero las versiones más recientes de apt-get ofrecen la misma funcionalidad y se ha demostrado que proporcionan los resultados deseables para una actualización de forma más consistente.Asegúrese de que las entradas con las fuentes de APT (en el archivo /etc/apt/sources.list) hacen referencia a la distribución “wheezy” o a estable (“stable”). No debería haber ninguna entrada que haga referencia a “squeeze”.
El contenido de mi archivo /etc/apt/sources.list:


GRABAR LA SESIÓN DE ACTUALIZACIÓN
script -t 2>~/upgrade-wheezystep.time -a ~/upgrade-wheezystep.script

ACTUALIZAR LA LISTA DE PAQUETES
apt-get update

ACTUALIZACIÓN MÍNIMA DEL SISTEMA

Se actualizan los paquetes que se puedan actualizar en el sistema sin que sea necesario eliminar ni instalar ningún otro paquete:
apt-get upgrade

ACTUALIZAR EL SISTEMA
Se realizará una actualización completa del sistema, esto es, se instalarán las versiones más recientes de los paquetes y se resolverán todos los posibles cambios de dependencias entre los paquetes de diferentes versiones. Si fuera necesario, se instalarán nuevos paquetes (normalmente, nuevas versiones de las bibliotecas o paquetes que han cambiado de nombre), y se eliminarán los paquetes obsoletos conflictivos.
apt-get dist-upgrade

Por suerte no hubo ningún problema durante la actualización. Al terminar se puede constatar la nueva versión de Debian y del kernel:
root@debian:~# cat /etc/issue
Debian GNU/Linux 7.0 \n \l
root@debian:~# uname -r
3.2.0-4-686-pae

Lo único que tuve que arreglar fue quitar la referencia al módulo php5-suhosin -el cual ha sido eliminado en Wheezy- de PHP5 para que el servidor web Apache arrancara correctamente:
dpkg --purge php5-suhosin

miércoles, 1 de mayo de 2013

Volviendo a instalar la impresora multifunción Epson Stylus CX3900 en Debian Squeeze

1) Instalé los paquetes cups y cups-pdf:
aptitude install cups cups-pdf
2) Para poder acceder a la interfaz web de CUPS es necesario configurar el servicio para que escuche en la interfaz de red y dar los permisos necesarios (conviene primero hacer una copia de seguridad del archivo original):
root@debian:~# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
root@debian:~# vi /etc/cups/cupsd.conf
Listen 192.168.0.10:631
# Restrict access to the server
<Location />
Order allow,deny
Allow 192.168.0.0/24
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow 192.168.0.0/24
</Location> 
# Default authentication type, when authentication is required...
DefaultAuthType Basic
3) Tipear en el navegador: <IPdelServidor>:631, en mi caso 192.168.0.10:631:


4) Ir a la pestaña "Administration" y hacer clic en el botón "Add printer":


5) Comienza a buscar impresoras conectadas:


6) Detectó la Epson Stylus CX3900 (elegir la opción correspondiente para indicar que esa es la que se desea instalar):


7) Indicar el nombre deseado para la impresora y si se desea compartirla, así como su ubicación:


8) Si el driver de la impresora no está incluido en CUPS, elegir "Select Another Make/Manufacturer":


9) Mientras tanto, habrá que bajar el driver (archivo .deb) desde la página de soporte de EPSON: http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX:


10) Instalo el paquete recién bajado:
dpkg -i epson-inkjet-printer-escpr_1.2.2-1lsb3.2_i386.deb
11) Me avisa que tiene dependencias no resueltas:
dpkg: dependency problems prevent configuration of epson-inkjet-printer-escpr:
 epson-inkjet-printer-escpr depends on lsb (>= 3.2).
12) ¿Qué es lsb?
aptitude show lsb
Package: lsb                             
State: not installed
Version: 4.0-0ubuntu26.1
Priority: extra
Section: misc
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Uncompressed Size: 45.1 k
Depends: lsb-core, lsb-graphics, lsb-cxx, lsb-desktop, lsb-printing
Suggests: lsb-multimedia, lsb-languages
Description: Linux Standard Base 4.0 support package
 The Linux Standard Base (http://www.linuxbase.org/) is a standard core system that third-party applications written for Linux can depend upon. 

 This package provides an implementation of all modules of version 4.0 of the Linux Standard Base for Debian on the Intel x86, Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with the Linux kernel. Future revisions of the specification and this package may support the LSB on additional architectures and kernels. 

 The intent of this package is to provide a best current practice way of installing and running LSB packages on Debian GNU/Linux. Its presence does not imply that Debian fully complies with the Linux Standard Base, and should not be construed as a statement that Debian is LSB-compliant.
Homepage: http://www.linux-foundation.org/en/LSB
13) Entonces instalamos lsb:
aptitude install lsb
14) Para luego retomar la instalación del driver de la impresora. Entonces el server "no se queja" de nada y el driver se instala sin problemas. Retomo la instalación de la impresora desde la interfaz web:


15) Tiro 3 impresiones de prueba:


16) Los trabajos de impresión resultantes quedan "registrados" en /var/spool/cups:


17) Y luego de borrar el contenido del directorio mencionado anteriormente, el registro de los trabajos de impresión en la interfaz web desaparece:

18) Para poder conocer el porcentaje de tinta restante en los cartuchos hay que presionar -estando la impresora apagada- por al menos 3 segundos los botones de encendido y de carga de tinta. La impresora se encenderá e imprimirá una hoja con datos parecidos a los siguientes:
C:030%    Y:030%    M:030%    Bk:100%
(cartuchos Cyan, Yellow, Magenta, y Black, respectivamente)

martes, 2 de abril de 2013

Cuando no se puede escribir a un dispositivo de bloques particionado con NTFS...

Intentando hacer un backup de mi /home, esta mañana me encontré con que no podía escribir a mi disco rígido portátil. Este último estaba formateado como NTFS, tal como muchos dispositivos extraíbles hoy en día.
Cuando esto sucede, se puede montar el dispositivo y ver sus contenidos, pero no escribir en el mismo, salvo que... se tenga el paquete ntfs-3g instalado:
 gacanepa@Gabriel-PC:~$ aptitude show ntfs-3g  
 Package: ntfs-3g               
 State: not installed  
 Version: 1:2010.3.6-1  
 Priority: optional  
 Section: otherosfs  
 Maintainer: Adam Cécile (Le_Vert) <gandalf@le-vert.net>  
 Uncompressed Size: 209 k  
 Depends: libc6 (>= 2.3), libntfs-3g75  
 Description: read-write NTFS driver for FUSE  
  The ntfs-3g driver is an open source, GPL licensed, third generation Linux NTFS  
  driver which was implemented by the Linux-NTFS project. It provides full  
  read-write access to NTFS, excluding access to encrypted files, writing  
  compressed files, changing file ownership, access right.   
  Technically it's based on and a major improvement to the third generation Linux  
  NTFS driver, ntfsmount. The improvements includes functionality, quality and  
  performance enhancements.   
  ntfs-3g is based on FUSE (userspace filesystem framework for Linux), thus you  
  will have to prepare fuse kernel module to be able to use it.   
  Fuse is available in any recent kernel. No need to prepare a kernel module if  
  you are already running Debian Etch kernel or newer.  
 Homepage: http://www.ntfs-3g.org/  
De otra manera, el dispositivo es montado con el módulo NTFS del kernel, que no brinda permisos de escritura.
Después de instalar dicho paquete, pude proceder a hacer el backup necesario en mi disco portátil.