Tabla de contenidos Tabla de contenidos Guía de Estudio LPI Acerca de la certificación LPI 1. Arquitectura del Sistema Determinar y establecer la configuración de hardware Introducción Firmware El sistema de archivos /proc IRQs Direcciones I/O (Direcciones de entrada y salida) Direcciones DMA (Direct Memory Addressing) Dispositivos coldplug y hotplug Utilidades para detectar dispositivos hotplug Configuración de placas PCI Comando lspci Comando setpci Configuración de Dispositivos USB Módulos del Kernel Comando lsmod Cargar módulos de kernel en tiempo de ejecución Comando modprobe Remover módulos Proceso de Arranque Introducción Inicio de ejecución con el Firmware Proceso arranque con BIOS Proceso de Arranque con UEFI Gestores de Arranque Inicio de Linux con init Obteniendo información acerca del proceso de arranque Niveles de ejecución, apagado y reinicio del sistema Concepto de niveles de ejecución Modo Monousuario Scripts de Inicio de SysV Gestión de los servicios de los niveles de ejecución Ajuste del nivel de ejecución por defecto Cambiando el nivel de ejecución con init o telinit Comando Shutdown Sistemas de Inicio alternativos Upstart
2
systemd
2. Instalacion del sistem a y m anejo de paquetes Diseño del Disco Duro Introducción Escenario 1: Espacio de disco limitado Escenario 2: Sistemas grandes Función del sistema Copias de resguardo Espacio de SWAP Recomendaciones generales de diseño Instalación de un gestor de arranque Introducción MBR GRUB GRUB 2 Superbloque Gestión de Librerías Introducción Tipo de Librerías Gestión de Librerías Compartidas Configurando la ruta global a librerías Cambiar temporalmente la ruta a librerías Comandos para Gestionar Librerías Gestión de Paquetes en Debian Introducción Concepto de Paquetes Sistemas de Gestión de Paquetes Gestión de Paquetes en Debian Comando dpkg APT Apt-cache Apt-Get dselect Aptitude dpkg-reconfigure Gestión de paquetes con RPM y Yum RPM Nombres de paquetes en RPM Uso de RPM Yum Yumdownloader Rpm2cpio
3. Com andos GNU y UNIX Trabajando en la línea de comando
3
Introducción a Bash ¿Que shell estoy ejecutando? Comandos Internos Comando history Explorando la configuración del shell Variables de ambiente Obteniendo ayuda Comando man Comando info Filtrado de flujos de texto Introducción Comandos para combinar archivos Comando cat Comando join Comando paste Comandos de transformación de archivos Comando expand Comando unexpand Comando od Comando sort Comando split Comando tr Comando uniq Comandos para formatear archivos Comando fmt Comando nl Comando pr Comandos para visualizar archivos Comando head Comando tail Comando less Comandos para resumir archivos Comando cut Comando wc Manejo básico de archivos Introducción ¿Cómo son los nombres de archivos en Linux? Reglas de expansión con uso de comodines Inodos Comandos de manejo de archivos Comando ls Comando cp Comando rm Comando mv Comando touch
4
Comando mkdir Comando file Código de tipo de archivos Comando tar Comando cpio Comando dd Ventajas de dd Desventajas de dd Compresión con gzip Compresión con bzip 2 Flujos de datos, tuberías y redirecciones Introducción STDIN, STDOUT Y SDTERR Redirigiendo entradas y salidas Tuberías Comando tee Usar la salida como argumento Crear, monitorear y matar procesos Introducción Procesos en primer y segundo plano Traer un proceso al primer plano con fg Reanudar un proceso en segundo plano con bg Ejecutar en segundo plano con & Ver los procesos asociados con nuestra sesión con jobs. Ver la memoria libre del sistema con free Ver el estado básico del sistema con uptime Correr un comando independiente del estado de la terminal Matando Procesos con kill Comando killall Modificar la prioridad de procesos en ejecución Introducción Comando ps Interpretación de la salida de ps Top: Una variante dinámica de ps Prioridad nice Comando nice Comando renice Uso de expresiones regulares para filtrar texto Introducción Metacaracteres Comando grep Comando egrep Comando fgrep sed Editar texto con Vi
5
Modos de Vi Trabajar con archivos Moverse en el archivo Insertar y sobrescribir texto Eliminación de texto Modo visual Edición de bloques de texto Deshacer y rehacer Buscar
4. Dispositivos, Filesystem s y el FHS Creación de Particiones y Filesystems Introducción Ventajas de usar particiones Esquema de particiones MBR Particiones GPT Proceso de particionado fdisk Preparar una partición para uso Sistemas de archivos nativos de Linux Comandos para crear filesystems Comando mke2fs Comando mkdosfs Comando mkswap Comando mkfs.xfs Comando mkfs.reiserfs Tipos de discos Verificar la integridad de Filesystems. Introducción Comando dumpe2fs Comando xfs_info Comando tune2fs Comando xfs_admin Comando debugfs Comando fsck Comando e2fsck (aka fsck.ext2) Monitoreo de uso de Disco Comando df Comando du Controlando el montaje y desmontaje de unidades Introducción Montaje temporal de un filesystem Comando mount Comando umount Opciones de Montaje
6
Montaje permanente de sistemas de archivos Campos: Manejo de Cuotas de Disco Introducción Habilitación del Soporte para Cuotas Fijación de las cuotas para los usuarios. edquota quotacheck quotaon quotaoff repquota Permisos y propiedad de archivos Introducción Control de acceso a archivos en Linux Listar los permisos Notación octal Fijar el modo por defecto con umask Permisos Especiales Cambiar la propiedad de un archivo con chown Cambiar la propiedad del grupo con chgrp Comando chmod Metodo Octal Método Simbólico Crear y cambiar vínculos duros y simbólicos Introducción Tipos de vínculos Uso para la administración del sistema Comando ln Comprender la ubicación correcta de los archivos del FHS El FHS Comando find Comando locate Comando whereis Comando which Comando type
5. Shells, Scripts y m anejo de datos con SQL Manejo del entorno de Shell Introducción Variables de entorno Variables de entorno mas comunes Modificación de los archivos de configuración de bash Archivos de esqueleto El comando set Alias Funciones
7
Crear y modificar de scripts Introducción Hola Mundo!!! Variables Parámetros Posicionales Comando source Expresiones Condicionales if case Sentencias de Iteración Sentencia for Sentencia while until Funciones Manejo de datos con SQL Introducción Tipos de Datos mas comunes MySQL Instalación Mostrar bases instaladas con “show databases” Crear una base con “create database” Crear de una tabla con “create table” Ver la estructura de una tabla con “describe“ Eliminar una tabla con “drop table” Insertar registros con “insert” Consultar registros con “select” Filtrar las consultas con “where” Consultar varias tablas con “join” Eliminar registros con “delete” Ordenar los resultados con “order by” Funciones de agregación y “group by”
6. Interfaces Graficas de Usuario Instalar y Configurar X11 Introducción Configuración básica de X Opciones para el servidor X en Linux Métodos para configurar X: Ubicación y nombre de los archivos de configuración El formato de los archivos de configuración Secciones de configuración de X Sección Module Sección InputDevice Sección Monitor Sección Device
8
Sección Screen Server Layout Configurando y testeando X Fuentes Instalar fuentes nuevas Configuración de fuentes Xft Gestores de Pantalla Introducción XDM KDM GDM Métodos para ejecutar un servidor XDMCP Arquitectura Cliente/Servidor de X Accesibilidad Introducción Configuraciones de Accesibilidad Orca Emacspeak
7. Tareas Adm inistrativas Usuarios y Grupos Introducción Cuentas de usuario y el archivo /etc/passwd Grupos y el archivo /etc/group El sistema shadow de contraseñas Comandos de gestión de usuarios y grupos Comando useradd Comando usermod Comando userdel Comando groupadd Comando groupmod Comando groupdel Comando passwd Comando chage Cron, Anacron y At Introducción Creando trabajos de Cron del Sistema Comando crontab Anacron Comando at Localización e internacionalización Introducción locale Cambiar el locale Codificación de caracteres Convertir archivos entre distintos formatos de codificación
9
8. Servicios esenciales del sistem a NTP Introducción Comando date Comando hwclock Uso de NTP Anatomía de NTP Logging Introducción Syslog, Syslogd, Rsyslog y Klogd Configuración Facilidades Prioridades Sintaxis Registro manual de datos Rotación de logs Revisando archivos de Log Correo electrónico Introducción Conceptos básicos de correo electrónico Gestión de Correo electrónico Servidores SMTP Uso del programa mail Envío de correo con mail Leer correo con mail Consultar la cola de correos Redirección de correo Programas complementarios Gestión de impresoras e impresión Introducción Conceptualización de la arquitectura de impresión en Linux Configuración PostScript: El lenguaje de Impresión de Facto GhostScript Configuración de CUPS
9. Fundam entos de redes Conceptos fundamentales de redes Introducción Hardware de red Paquetes de red Pila de protocolos Protocolo de control de transmisión (TCP) Protocolo de Datagramas de usuarios (UDP) Protocolos IP
10
Redes privadas según RFC-1918 Direccionamiento de Red Direcciones de Hardware Direcciones IP Mascara de red DNS Comando host Comando dig Puertos de red Puertos comunes Configuración DNS Configuración básica de red Introducción Configurar Linux para una red local DHCP Comando ifconfig Routers, Rutas y Default Gateway Comando route Archivos de configuración de interfaces de red Comandos ifup e ifdown Configuración DNS Comando ping Comando traceroute Resolución de Problemas Introducción Configuración manual de tabla de ruteo Comando ping Comando traceroute Comando Host Comando dig Configuración del cliente DNS Introducción Cambiar el orden de resolución de nombres Archivo /etc/hosts Establecer los servidores DNS en el /etc/resolv.conf
10. Seguridad Gestión de la seguridad Introducción Peligros de los archivos SUID y GUID Como encontrar archivos SUID y GUID Comando chage Comando usermod Monitoreo de puertos de red Comando lsof
11
Comando netstat Comando nmap Restringir el uso de el usuario root con Sudo Beneficios de usar Sudo Configuración de sudo con el archivo /etc/sudoers Comando su Ulimit Seguridad del Host Introducción Gestión de Contraseñas Súper Servidores TCP Wrappers Xinetd Bloquear el acceso a usuarios con /etc/nologin Desactivar los servicios que no estén en uso Técnicas de encriptado Criptografía con clave publica OpenSSH Configuración del servidor SSH Claves SSH Agente SSH (ssh_agent) Túneles SSH GPG GPG Keyring
12
Guía de Estudio LPI Adolfo Olivera
13
14
15
Acerca de la certificación LPI La certif icaciones son una manera estándar de tener un comprobante que acredite un determinado niv el de conocimiento acerca de cierta materia. Si bien tradicionalmente, el mundo Open Source no le dio may or importancia a las certif icaciones, esta tendencia está dando un giro. Ya que si bien no son garantía de que un indiv iduo pueda realizar un determinado trabajo, son un buen punto comienzo a la hora de buscar y f iltrar candidatos. En lo que respecta a los administradores Linux en general, las dos certif icaciones dominantes del mercado son las prov istas por el Linux Professional Institute y las prov istas por Red Hat. Los conocimientos que conf orman la currícula son f ruto de acabadas inv estigaciones realizadas por LPI y prof esionales acreditados de la industria. Es una certif icación neutral, lo que signif ica que no se orienta a ninguna distribución en particular, si no que trata de ser lo más general posible. Si bien la certif icación es neutral en cuanto a las distribuciones, uso como ref erencia las distribuciones Red Hat y Debian como ref erencia, y a que estas dos distribuciones son las que dieron lugar a la may oría de las distribuciones de uso general existentes en la actualidad. Las certif icaciones LPIC del Linux Professional Insititute están div ididas en tres niv eles, cada uno f undacional al otro: Nivel 1 (LPIC 1) Este niv el acredita un niv el Junior de conocimientos, la certif icación consta de dos exámenes, 101 y 102; y un prof esional que hay a pasado estos dos exámenes debería estar en condiciones de realizar tareas básicas de administración de un serv idor. Nivel 2 (LPIC 2) Este niv el de certif icación acredita conocimientos más específ icos en cuanto a los serv icios que suelen correr los serv idores. Como son los serv icios Web, los serv idores de archiv os, los serv icios av anzados de red, etc. Además de hacer un análisis más prof undo de la arquitectura del sistema operativ o. Nivel 3 (LPIC 3) Este es el niv el de acreditación más alta que otorga el LPI. Los prof esionales que acrediten esta certif icación son expertos en 16
dif erentes especialidades en Linux. Estas especialidades son Ambientes Híbridos (Redes con Windows y Linux) prov ista por el examen 300; Seguridad prov ista por el examen 303 y Alta Disponibilidad y Virtualización, prov ista por el examen 304. Este programa de certif icaciones proporciona una doble oportunidad a los prof esionales en administración Linux. Ya que no solo brinda las herramientas necesarias y una hoja de ruta para ser en experto en la materia; sino que además proporciona la oportunidad de obtener un diploma que sea prueba de esto.
17
18
1. Arquitectura del Sistema En esta primera unidad se v en los lineamientos generales que comparten los sistemas Linux. Explicando cómo es la arquitectura del sistema, como se relaciona Linux con los componentes de hardware y como comienza la ejecución del sistema cuando se enciende la máquina. La unidad estará div idida en tres subunidades: Determinar y establecer la configuración de hardware (101.1) En esta subunidad v eremos con que comandos y herramientas contamos a la hora de hacer un análisis del hardware con el que cuenta una computadora. También se v erán técnicas para establecer las conf iguraciones necesarias para lograr un f uncionamiento óptimo de este hardware. Proceso de arranque (101.2) El proceso de arranque de una maquina comprende todo lo que sucede desde que presionamos el botón de encendido del equipo hasta que tenemos un sistema ejecutándose y listo para serv ir a los usuarios. Si bien este proceso no suele generar problemas y puede pasar desapercibido, es importante saber que componentes interv ienen en el mismo para saber como proceder en el caso que se quiera modif icar este proceso o realizar una resolución de problemas. Niveles de ejecución, apagado y reinicio del sistema (101.3) En esta subunidad es realiza una introducción al concepto de niv eles de ejecución. Estos niv eles permiten determinar el comportamiento del sistema, def iniendo una serie de acciones y conf iguraciones para cada niv el. También v eremos una introducción a proceso de apagar y reiniciar la maquina; explicando con que herramientas se cuenta.
19
20
que está realizando y atienda un ev ento externo, como cuando se presiona una tecla del teclado. En x86, las interrupciones están numeradas del 0 al 15. Computadoras más modernas, como sistemas x86-64, prov een más de 16 interrupciones.
Listado de interrupciones 0 - Reserv ado para uso interno 1 - Teclado 2 - Interrupciones en cascada para IRQs 8-15 3 - Segundo puerto RS-232 (COM 2 en Windows) 4 - Primer puerto RS-232 (COM 1 en Windows) 5 - Placa de Sonido o segundo puerto paralelo 6 - Controladora de discos floppy 7 - Primer puerto paralelo 8 - Reloj de tiempo real 9-11 - Abierto 12 - PS/2 Mouse 13 - procesador matemático 14 - Controlador ATA primario 15 - Controlador ATA secundario Algunas interrupciones están reserv adas para propósitos particulares, como el teclado y el reloj de tiempo real, otras tienen usos comunes, pero pueden ser reasignados, y otros quedan libres para ser asignados. La lista de interrupciones de puede leer desde /proc/interrupts.
Direcciones I/O (Direcciones de entrada y salida) Las direcciones o puertos I/O son direcciones de memoria reserv adas para la comunicación entre la CPU y dispositiv os de hardware. Una v ez que el sistema se encuentra corriendo, las direcciones de I/O, se pueden consultar desde el archiv o /proc/ioports.
Direcciones DMA (Direct Memory Addressing) DMA es un método de comunicación alternativ o a los puertos I/O. En v ez de tener a la CPU como intermediaria entre un dispositiv o y la memoria, los DMA permiten a los dispositiv os mandar datos directamente a la memoria, sin uso de la CPU. Esto permite tener menos requerimientos de uso de CPU para activ idades de I/O. Para el uso de DMA, la arquitectura x86 implementa v arios canales DMA, los cuales pueden usar usados por dispositiv os. La inf ormación sobre los canales DMA se pueden encontrar en /proc/dma. 23
Dispositivos coldplug y hotplug Los dispositiv os hotplug son aquellos que pueden ser conectados mientras el sistema esta corriendo, mientras que los dispositiv os coldplug precisan que el sistema se encuentre apagado para ser conectados y desconectados, corriendo el riesgo de dañarse si así no se hiciese. Generalmente los componentes internos de la computadora como la CPU, la memoria y los discos internos son coldplug. Y los dispositiv os externos como dispositiv os USB, firewire y Ethernet son hotplug.
Utilidades para detectar dispositivos hotplug Demonio HAL: Las siglas HAL prov ienen Hardware abstraction layer, el demonio que opera esta capa de abstracción de hardware es llamado hald. Es un programa dentro del espacio del usuario y prov ee inf ormación sobre el hardware disponible. Se conecta a DBus y prov ee una API la cual las aplicaciones pueden utilizar para descubrir, monitorear e inv ocar operaciones en dispositiv os. D-Bus: Su nombre prov iene de Desktop Bus. Es un demonio que permite a los programas en ejecución comunicarse entre sí y ser notif icados de ev entos. Ya sean ev entos de otros procesos o de hardware, como por ejemplo la conexión de un disco USB. Es el v ínculo que conecta a las aplicaciones con el demonio HAL (hald). Udev: Tradicionalmente, Linux crea a los nodos de dispositiv os como archiv os en /dev . /dev se crea como un sistema v irtual de archiv os, que crea archiv os de dispositiv os dinámicamente a medida que los driv ers de esto son cargados y descargados. Udev se puede conf igurar desde /etc/udev/udev.conf. Se puede crear reglas de Udev dentro del directorio /etc/udev/udev.d/. Las reglas son básicamente archiv os dentro de este directorio, los cuales serán leídos por el demonio udev y utilizados cuando el Kernel notif ica a udev sobre algún ev ento. Sysfs (/sys) : El sistema v irtual de archiv os /sys exporta inf ormación de dispositiv os. En este sistema de archiv os v irtual se guarda una base de datos con todos los dispositiv os que están conectados al sistema. Los archiv os dentro de /sys generalmente están compuestos por un solo v alor.
24
30
el estándar. El f irmware del motherboard (placa madre) reside en una memoria flash o EEPROM (Electrically Erasable Programmable Read-Only Memory). Cuando uno enciende la máquina, esta realiza una prueba para rev isar que todo esté f uncionando correctamente, este prueba se llama POST (Power On Self Test). Una v ez f inalizado esto, carga el gestor de arranque desde el dispositiv o de arranque. Típicamente, este es el primer disco duro. El gestor de arranque toma control y carga el sistema operativ o.
Proceso arranque con BIOS Luego de iniciado el equipo, un programa llamado BIOS (Basic Input Output Service), que es guardado en memoria no v olátil, es ejecutado. El proceso seria así: 1. 2. 3.
4.
El BIOS prueba el correcto f uncionamiento del equipo con el programa POST. Se le indica al BIOS que dispositiv o de arranque usar (Disco Duro, CD-ROM, floppy, etc.), mediante la interf az de usuario. BIOS carga el código del gestor de arranque del MBR (Master Boot Record), localizado en el primer sector del disco duro. El MBR también guarda la tabla de particiones. El gestor de arranque dentro del MBR puede realizar a su v ez dos acciones dif erentes: 1. Examinar la tabla de particiones y localizar la partición que tenga la bandera de arrancable. El gestor de arranque primario llama a un gestor de arranque secundario, localizado en el sector de arranque de esa partición. Este ultimo continua el proceso localizando un kernel de sistema operativ o y cargándolo en memoria. 2. Localizar un Kernel y cargarlo directamente. Este enf oque se saltea el gestor de arranque secundario.
Tradicionalmente, los gestores de arranque de Windows necesitaban estar en el MBR del disco. Los gestores de arranque en Linux soportan estar en el sector de arranque de una partición. Por lo que se aconseja en el caso de tener una maquina con arranque dual, colocar el gestor de arranque de Windows en el MBR del disco y el de Linux en el MBR de la partición. Este es un resumen muy simplif icado del arranque basado en BIOS y MBR. En la práctica, esquemas mas complejos son posibles.
32
Proceso de Arranque con UEFI El proceso basado en BIOS, f ue diseñado en los años 80, cuando el espacio disponible para el BIOS era diminuto comparado con los estándares actuales. Por lo que el proceso de arranque del BIOS necesitaba ser simple, y la complejidad se trasladaba al sof tware dentro del disco. El f irmware UEFI es bastante mas complejo que el antiguo BIOS. En lugar de usar el código que esta en los sectores de arranque de los discos, EFI utiliza gestores de arranque almacenados como archiv os en una partición de disco, conocida como ESP (EFI System Partition). En Linux, generalmente el ESP se monta en /boot/efi. Los gestores de arranque residen en archiv os con la extensión .efi. Se nombran en subdirectorios con el nombre de la distribución y el nombre del archiv o es el nombre del gestor de arranque. Por ejemplo, /boot/efi/EFI/Ubuntu/grub.efi . Esta conf iguración permite tener un gestor de arranque dif erente para cada sistema operativ o que se instala en una computadora. El f irmware de EFI incluy e un programa propio, llamado boot manager que ay uda a elegir que gestor de arranque se quiere lanzar. EFI debe ser saber acerca de los gestores de arranque almacenados en el ESP del disco. Normalmente, esto se hace registrando los gestores de arranque con el f irmware, esto se puede hacer mediante una utilidad que v iene con el f irmware o con alguna otra herramienta como efibootmgr (http://linux.die.net/man/8/efibootmgr).
Gestores de Arranque Los gestores de arranque se ejecutan antes que cualquier sistema operativ o sea cargado, aunque normalmente son conf igurados desde Linux o algún otro sistema operativ o. De alguna u otra manera, el f irmware de la computadora lee y carga el código del gestor de arranque. El gestor de arranque, una v ez cargado, será responsable de llamar al kernel de Linux. Por lo que una correcta conf iguración del gestor de arranque es necesaria para poder dar inicio a Linux. Si bien las instalaciones de las distribuciones prov een métodos automáticos de conf iguración del gestor, es importante saber como f unciona. Ya que en ciertos casos, como en la re-complicación de un kernel, podría ser necesario hacer modif icaciones.
Inicio de Linux con init Una v ez que el Kernel pasa a controlar el sistema, se llama al proceso init. Por def ecto este programa se encuentra dentro de 33
/sbin/init. Este programa tomara el PID 1 y a que es el primer proceso que se ejecuta en el sistema. En un sistema Linux tradicional, /sbin/init leerá los contenidos del archiv o /etc/inittab para determinar que otros programas ejecutar. En sistemas mas modernos que usan otros sistemas de inicio como Upstart o Systemd, init leerá otros archiv os de conf iguración.
Obteniendo información acerca del proceso de arranque Cierta inf ormación acerca del Kernel y sus módulos se registra en el kernel ring buf f er. Esta inf ormación es la que se muestra en pantalla durante el proceso de arranque, aunque al pasar tan rápido es muy dif ícil su lectura. Se puede inspeccionar esta inf ormación con el comando dmesg.
34
35
sistema que actúa como un serv idor de archiv os o un serv idor web, el cambio de un niv el de ejecución sin notif icación podría ser un desastre para otros usuarios. Es imprescindible notif icar a los usuarios antes de realizar cualquier cambio importante del sistema. El comando init no proporciona automáticamente esta f uncionalidad, y en estas situaciones se pref iere el comando shutdown.
Comando Shutdown Cuando se inicia el comando shutdown, todos los usuarios que han iniciado sesión en sesiones de terminal son notif icados de que el sistema se está cerrando. Además, otros inicios de sesión se bloquean para ev itar a nuev os usuarios ingresar en el sistema, y a que se está cerrando.
Descripción El comando shutdown cierra el sistema de una manera segura y organizada. De f orma predeterminada, shutdown llev a al sistema a modo de usuario único. Se pueden utilizar otras opciones para apagar o reiniciar su lugar. El comando init utiliza con un argumento niv el de ejecución apropiado para af ectar el cambio de sistema. El argumento tiempo obligatorio indica al comando shutdown cuándo iniciar el procedimiento de apagado. Puede ser un momento del día en el f ormato hh:mm, o puede estar en la f orma + n, donde n es un número de minutos a esperar. El tiempo también puede ser la palabra now, en cuy o caso el cierre ocurre de inmediato. Si la hora especif icada es más de 15 minutos, shutdown espera hasta 15 minutos antes del cierre se mantienen antes de hacer su primer anuncio. Si se proporciona un mensaje de adv ertencia (una cadena de texto), que se utiliza en anuncios del sistema para los usuarios f inales. No son necesarias comillas para el mensaje de adv ertencia a menos que el mensaje incluy e caracteres especiales como * o &.
Sintaxis shutdown [opciones] tiempo [mensaje de advertencia]
Opciones de uso más frecuente: -f: Fast Boot, no realiza chequeos de los sistemas de archiv os en el próximo inicio. -F: Fuerza los chequeos de los sistemas de archiv os en el próximo inicio. -k: Solo manda los mensajes de adv ertencia y deshabilita los inicios de sesión, pero no apaga el sistema. 39
Muestra el estado actual de todas las unidades conf iguradas
42
43
2. Instalacion del sistema y manejo de paquetes Esta unidad describe como realizar la instalación del sistema, incluy endo la instalación de todos los paquetes necesarios para cumplir sus f unciones. También es necesario saber como mantener actualizado el sof tware dentro del sistema, por lo que también se explican los dif erentes métodos de actualización de paquetes. Esta unidad incluy e 5 subunidades: Diseño del Disco Duro (102.1) El diseño del disco duro implica entender el concepto de particiones. Las particiones nos permiten distribuir espacio de disco de una manera mas ordenada, ef iciente y segura. Gestores de Arranque (102.2) Los gestores de arranque son programas pequeños que cumplen con la f unción de cargar sistemas operativ os como Linux para utilizarlos. Los mas importantes a tener en cuenta son GRUB y GRUB 2. Gestion de librerías (102.3) Las librerías son los componentes de sof tware que en su conjunto conf orman todo el sof tware del sistema. Por razones de reutilización y f acilidad de mantenimento, el sof tware se div ide en unidades pequeñas llamadas librerías. Gestión de Paquetes en Debian (102.4) En esta unidad se explica el concepto de paquetes de sof tware y conocemos los dif erentes gestores de paquetes que existen para los sistemas Debian y sus deriv ados. Gestión de paquetes con RPM y Yum (102.5) RPM es el gestor de paquetes de paquetes en Red Hat y Yum es el gestor de paquetes que se utiliza para utilizar paquetes desde algún repositorio de Red Hat.
44
45
otras computadoras para que estas puedan hacer uso de los ejecutables que allí residen /v ar
2 GB
En este caso no se necesita un filesystem /var demasiado grande y a que solo se guardan logs dentro de /var. La situación seria dif erente en el caso de que el serv idor sea un serv idor web
/tmp
500 MB
Otorgándole a /tmp su propia partición, nos aseguramos que no causara problemas creciendo mas de lo debido
/home
90 GB
Teniendo en cuenta que el f in ultimo del sistema es presentar datos a usuario, /home se llev a la may or parte del espacio.
En los serv idores de producción, gran parte del sistema a menudo se coloca en los medios de almacenamiento redundantes, tales como discos duplicados. Grandes sistemas de archiv os, tales como / home, pueden ser almacenados en algún tipo de arreglo de discos utilizando un controlador de hardware.
Función del sistema El papel del sistema también puede dictar la distribución del disco. En una red de tipo UNIX tradicional con serv idores de archiv os NFS, la may or parte de las estaciones de trabajo no necesitará necesariamente la totalidad de sus propios archiv os ejecutables. En los días en que el espacio en disco era un bien escaso, esto representaba un ahorro signif icativ o en el espacio en disco. Mientras que el espacio en los discos de estaciones de trabajo no es el problema que una v ez f ue, manteniendo ejecutables en el serv idor todav ía elimina el dolor de cabeza administrativ a de distribución de actualizaciones a las estaciones de trabajo.
Copias de resguardo Algunos esquemas de backup, incluy en copias a disco local, por lo que de acuerdo a la f recuencia con la que se realizan estas copias y al periodo de tiempo por el que se mantienen, habría que reserv ar el 48
espacio suf iciente para realizar.
Espacio de SWAP Al instalar Linux, se le pedirá que conf igure un espacio SWAP o memoria v irtual. Este espacio de disco especial se utiliza para almacenar temporalmente partes de la memoria principal que contiene programas o datos de programa que no se necesitan constantemente, permitiendo que más procesos se ejecuten al mismo tiempo. Generalmente se reserv a el doble del tamaño de la memoria RAM.
Recomendaciones generales de diseño Aquí hay algunas pautas para particionar un sistema Linux: • Mantener el root f ilesy stem (/) pequeño mediante la distribución de porciones más grandes del árbol de directorio a otras particiones. • Separar una partición para /var y asegurarse de que sea lo suf icientemente grande como para manejar el esquema de rotación de logs. • Separar /tmp. Su tamaño depende de las demandas de las aplicaciones que se ejecutan. Debe ser lo suf icientemente grande como para manejar los archiv os temporales para todos sus usuarios de f orma simultánea. • Separar /usr y montarlo como solo lectura, sí es que se v a a compartir por medio de NFS. • Separar /home para máquinas con múltiples usuarios. Para su uso en producción, es conv eniente colocarlo en algún arreglo de discos (SAN). • Conf igurar el espacio SWAP con el doble de tamaño que la memoria RAM.
49
50
55
58
Sistemas de Gestión de Paquetes La manera en que se manejan estos paquetes de sof tware v aria mucho entre distribuciones. Las principales herramientas de manejo de paquetes son RPM para sistemas Red Hat y deriv ados y DPKG pata el manejo de paquetes en Debian y deriv ados. Generalmente, solo se usa un solo sistema de manejo de paquetes por cada computadora; aunque es útil tener conocimiento sobre los 2.
Un gestor de paquetes mantiene la siguiente información: Paquetes: La inf ormación mas básica que los sistemas de manejo de paquetes registran, es inf ormación sobre los paquetes. Los paquetes son colecciones de archiv os que están instalados en la computadora. Los paquetes son distribuidos como archiv os parecidos a los tarballs o los archiv os zip. Una v ez instalados, los paquetes consisten en docenas o cientos de archiv os, el sistema de paquetes tiene registro de todos. Base de Datos de Archivos Instalados: Esta base de datos mantiene inf ormación acerca de cada archiv o instalado por medio del sistema de manejo de paquetes, el nombre del paquete al que pertenece cada archiv o e inf ormación asociada adicional. Dependencias: Dependencias entre paquetes. Checksums: Esta inf ormación permite v erif icar la v alidez del sof tware instalado.
Tareas que ayudan a realizar: Instalación de Software: Permiten simplif icar el proceso de instalación de sof tware. Actualizaciones y desinstalaciones: Al registrar dependencias, el sistema de manejo de paquetes f acilita actualizaciones y desinstalaciones Creación de paquetes binarios: Tanto RPM como los paquetes Debian prov een herramientas para la creación de paquetes binarios desde código f uente. Esto es de extrema ay uda cuando se trabaja con CPUs extrañas. Esto prov ee v entajas f rente a la compilación conv encional y a que permite el uso de los sistemas de manejo de paquetes para registrar dependencias, etc.
Gestión de Paquetes en Debian Las principales herramientas que utilizaremos para gestionar paquetes en Debian son dpkg, la suite de programas APT y el 60
65
72
3. Comandos GNU y UNIX En general cuando trabajemos con serv idores Linux, la línea de comando v a a ser nuestra herramienta de trabajo principal. La f ilosof ía Linux es utilizar v arios pequeños programas específ icos para alguna f uncionalidad y combinarlos con otros para resolv er tareas complejas. Esta unidad comprende 3 subunidades: Trabajando en la línea de comando (103.1) Introducción a los shells (interpretes de comandos) y a Bash, el shell mas popular en Linux. Filtrado de flujos de texto (103.2) Uso de herramientas para manipular, f ormatear y f iltrar texto. Manejo básico de archivos (103.3) Herramientas para gestión de archiv os Flujos de datos, tuberías y redirecciones (103.4) Como dirigir los f lujos de datos a trav és de dif erentes programas utilizando tuberías y redirecciones. Crear, monitorear y matar procesos (103.5) Concepto de procesos y creación de los mismos. Modificar la prioridad de procesos en ejecución (103.6) Como darle may or o menos prioridad de ejecución a un proceso Uso de expresiones regulares para filtrar texto (103.7) Introducción a las expresiones regulares básicas y extendidas. Editar texto con Vi (103.8) Introducción a Vi/Vim y comandos básicos.
73
74
Algunos programas han migrado del uso de man hacia info. La v entaja de man sobre info es que este ultimo utiliza hipertexto para mov erse a trav és de la documentación. Estas 2 herramientas presentan inf ormación de una manera que puede resultar poco amigable para el usuario principiante. Por lo que en ocasiones conv iene ir a las web para buscar ay uda o tutoriales acerca de programas.
79
80
Sintaxis # wc [opciones] [archivos]
86
87
Sintaxis bzip2 [opciones] [nombre_archivos] bunzip2 [opciones] [nombre_archivos]
97
98
103
107
Mostar con orden jerárquico: -H, -f y –forest muestran la jerarquía de los procesos. Mostrar mas 80 caracteres: Las opciones w y -w muestran una salida mas amplia que la normal.
Interpretación de la salida de ps Usuario: El nombre del usuario que ejecuta el programa. Así como los archiv os tienen un usuario, un grupo y unos permisos determinados asignados, también los procesos pertenecen a usuarios. Un proceso contará de cara al sistema de archiv os con los mismos permisos que tenga el usuario que lo creó. ID del proceso: El PID es el numero de identif icación asociado al proceso. Es importante y a que en el caso de querer modif icar o matar el proceso, seguramente lo necesitemos. ID del proceso padre: El ppid identif ica al proceso padre que dio origen al proceso actual. TTY: Algunos procesos tendrán asociado un identif icador de terminal. No todos los procesos tienen un numero de terminal; los demonios y los programas de X no tienen terminal asociada. Tiempo de uso de CPU: Los encabezados TIME y %CPU muestran dos medidas de tiempo de uso de cpu. La primera nos muestra el tiempo que llev amos consumido, mientras que la segunda nos el porcentaje de CPU que consume el proceso al momento de ejecutar ps. Prioridad de CPU: La columna NI representa la prioridad de uso de CPU que tienen los procesos. El v alor por def ecto es 0. Valores positiv os representan menor prioridad, mientras que los negativ os representan may or prioridad. Consumo de memoria: %RSS (Resident Set Size) es el tamaño del proceso en la memoria principal del sistema y %MEM porcentaje de la memoria principal usada por el proceso. Comando: Generalmente la ultima columna muestra el comando que genero el proceso.
Top: Una variante dinámica de ps La herramienta top nos muestra en tiempo real los procesos que están en nuestro sistema, de una manera más gráf ica que como lo hace ps. Por def ecto, top nos ordena los procesos por uso de CPU.
Prioridad nice El niv el de prioridad nice es un v alor que mide la prioridad que uso 109
111
Ejemplo La expresión a[2-4]z concuerda con a2z, a3z y a4z. Cualquier carácter: El punto (.) representa cualquier carácter singular, excepto, una nuev a línea.
Ejemplo La expresión a.z concuerda con a2z, abz y aQz. Principio y fin de línea: ^ representa el principio de una línea y el signo de $, el f inal de la misma. Operadores de repetición: Estos operadores indican la cantidad de v eces que debe ocurrir una expresión. Una expresión regular, o alguna parte de ella, puede estar seguida por un símbolo especial, que denota cuantas v eces el ítem debe existir. Específ icamente, un asterisco (*) denota 0 o mas ocurrencias, un signo de pregunta (?) cero o una ocurrencia y un signo positiv o (+) indica 1 o mas ocurrencias.
Ejemplo La expresión C.*Gomes concuerdo con todo lo que empiece con tenga la letra C y Gomes, en ese Orden. Como Carlos Gomes, Cesar Gomes y Cristian Gomes. Múltiples posibles cadenas: La barra v ertical (|) separa dos posibles coincidencias.
Ejemplo La expresión peso | dólar concuerda con peso o con dólar. Paréntesis: Los paréntesis () se usan para agrupar subexpresiones.. Se pueden utilizar alrededor de un grupo de palabras que están concatenadas por una barra v ertical, para asegurarse que estas palabras sean tratadas como un grupo, sin inv olucrar las otras partes de la expresión regular env olv ente. Escape de caracteres: Si uno quiere buscar algún carácter especial, como el punto, se debe escapar, precediéndolo con una barra inv ertida \.
Ejemplo Para coincidir con el nombre de una computadora
113
117
123
4. Dispositivos, Filesystems y el FHS Creación de Particiones y Filesystems (104.1) En esta subunidad se analiza en prof undidad el concepto de particiones y Fylesystems (Sistema de archiv os). Verificar la integridad de Filesystems (104.2) En esta subunidad se hace una introducción a las dif erentes herramientas disponibles para v elar por la buena salud de un Filesystem. Controlando el montaje y desmontaje de unidades (104.3) Un filesytem solo puede ser utilizado una v ez que es sistema realiza un proceso de montaje. En esta subunidad inv estigamos ese proceso. Manejo de Cuotas de Disco (104.4) El sistemas de cuotas de disco permite tener un control del consumo de espacio en disco. Permisos y propiedad de archivos (104.5) En esta subunidad se explica como f unciona el sistema de permisos y propiedad de archiv os necesarios para controlar el acceso a los archiv os por parte de los usuarios. Crear y cambiar vínculos duros y simbólicos (104.6) Esta subunidad es bastante simple y escueta, se explica como usar v ínculos. Comprender la ubicación correcta de los archivos del FHS (104.7) La distribución de los archiv os a los largo de los f ilesy stems tienen un lógica de ser y esta es estandarizada en el Filesystem Hierarchy Standard. En esta subunidad v eremos como están organizados los Filesy stems según este estándar.
124
125
Borrar una partición La opción d nos permite borrar una partición. Si existe mas de una partición, f disk nos v a a preguntar que numero de partición quiero borrar
Cambiar el tipo de partición Cuando se crea una partición Linux le asigna un código de 0x83, que corresponde a un sistema de archiv os de Linux. Si se quiera cambiar a otro, por ejemplo, un swap de Linux (0x83), se ingresa t.
M arcar una partición como partición de arranque Ingresando la opción a, luego Linux me preguntara que partición quiero marcar como de arranque.
Preparar una partición para uso Una v ez que la partición se crea, se debe preparar para su uso. Este proceso se llama la creación de un sistema de archiv os o f ormatear una partición. Requiere la creación de estructura de datos de bajo niv el en la partición.
Sistemas de archivos nativos de Linux ext2fs: Es el sistema tradicional de archiv os en Linux. Fue el sistema dominante durante v arios años, pero en los últimos años f ue eclipsado por sistemas mas nuev os. Su código es ext2 ext3fs: Básicamente es ext2 con journaling. Su código es ext3. ext4fs: Agrega la posibilidad de trabajar con discos de gran tamaño. Por encima de los 16 TiB, que es el limite de los discos con ext2 y ext3. Implementa extensiones que mejoran la perf ormance. El código es ext4 ReiserFS: Es particular bueno para trabajar con un gran numero de archiv os pequeños (menores a 32 KB). XFS: Creado por Silicon Graphics, luego donado a Linux. Es muy robusto, técnico y sof isticado FAT: Su nombre es acrónimo de File Allocation Table. Es v iejo y primitiv o, pero v ersátil. Es el único sistema de archiv os que soporta DOS y Windows 9x/Me. Es un buen sistema para intercambiar datos en medios remov ibles. El código es msdos. NTFS: (del inglés New Technology File System) es un sistema de archiv os de Windows NT incluido en las v ersiones de Windows 2000, Windows XP, Windows Serv er 2003, Windows Serv er 2008, Windows Vista, Windows 7 y Windows 8. El soporte de Linux sobre el sistema es bastante rudimentario, se 130
mucho mas f inos que los PATA. Al igual que los PATA, son detectados por el f irmware. La may oría de las distribuciones modernas trata los discos SATA como si f ueran SCSI y algunas distribuciones v iejas como si f ueran PATA, por lo que es muy dif ícil encontrar nombres de dispositiv os SATA.
SCSI Hay v arias def iniciones de SCSI, se usan una v ariedad de cables y opera a dif erentes v elocidades. SCSI es tradicionalmente un BUS paralelo, como PATA, aunque la ultima v ariante, Serial Attached SCSI (SAS), es un bus serial, como SATA. Si bien el SCSI es un bus superior al PATA, tiene un precio considerablemente may or, por lo que solo se suele v er en sistemas de alto rendimiento. SCSI soporta hasta 8 o 16 dispositiv os por canal (bus), uno de estos dispositiv os es la controladora, que puede estar en el motherboard o como un placa de plugin. En la practica, el numero de controladores que se puede conectar es menor debido a los limites del cable. Cada dispositiv o tiene un id, que se f ija por medio de un jumper en el dispositiv o. Los discos SCSI se nombran /dev/sda , /dev/sdb , etc. Las cintas SCSI se nombran /dev/st0 , /dev/st1, etc. Y los CD-ROM y DVDROM se nombran /dev/scd0 o /dev/sr0. Generalmente los nombres se asignan teniendo en cuenta el ID del dispositiv o, y endo de menor a may or. Ambos lados del cable SCSI deben ser terminados mediante un terminador, para ev itar que queden señales rebotando por el BUS.
Discos Externos Los discos externos v ienen en v arias f ormas, los mas comunes son SCSI, USB y IEEE-1394 (Firewire). Linux trata los discos como SCSI, desde el punto de v ista del sof tware. Típicamente, se enchuf a el dispositiv o, y un nuev o nodo /dev/sdx debería aparecer. Esto se aplica también a los discos de estado solido.
134
135
soporta un archiv o por lo que la cantidad de inodos disponibles limite la cantidad de archiv os que puedo tener en un sistema. Esta utilidad se puede ejecutar mientras el sistema de archiv os esta montado.
Comando xfs_info Descripción Es similar a dumpe2f s, pero se utiliza para XFS. Esta herramienta requiere que el sistema este montado. La inf ormación que prov ee este comando es sumamente técnica, como ser el tamaño de los bloques o de los sectores.
Sintaxis xfs_info [dispositivo o punto de montaje]
Comando tune2fs Descripción Nos permite cambiar muchos de los parámetros que nos prov ee dumpe2f s.
Sintaxis tune2fs [opciones] dispositivo La complejidad de esta herramienta radica en la gran cantidad de opciones que el programa acepta. Cada parámetro que nos permite ajustar requiere su propia opción. El f ilesy stem no debe estar montado. Algunas de las operaciones que podemos realizar son las siguientes: Ajustar la cantidad máxima de montadas: -c max-mount-counts. Especificar la cantidad de veces que fue montado: -C mountcount. Ajustar el intervalo entre chequeos: -i intervalo, el interv alo es un numero seguido de d, w o m. Por día, mes y año, respectiv amente. Agregarle un journal (bitácora): La opción -j agrega el journal, conv irtiendo un sistema ext2 en uno ext3. Igualmente para que este journal sea ef ectiv o, se debe montar el sistema como ext3 en lugar de ext2. Fijar los bloques reservados: La opción -m porcentaje f ija de porcentaje de disco que queda reserv ado para uso de root. El v alor x def ecto es 5.
137
141
Sintaxis umount [opciones] [dispositivo | punto_de_montaje]
Opciones de Montaje defaults Usa todas las opciones por def ecto. loop permite montar un archiv o como si f uese un dispositiv o. auto o noauto Monta cada v ez que inicia el sistema o cuando se ejecuta el comando mount –a. user o nouser Permite a usuarios normales montar el sistema. El def ault es nouser, user es apropiado para medio extraíbles. users Similar a user, pero para el desmontaje. owner El usuario debe ser dueño del archiv o de dispositiv o para montarlo. ro read only. rw read write. uid=v alor Fija el owner para todos los archiv os. gid=v alor Fija el grupo para todos los archiv os. umask=Fija la mascara para los permisos de archiv os. dmask= Fija la mascara para los directorios. fmask= Fija una mascara solo para archiv os.
Montaje permanente de sistemas de archivos Se hace por medio del archiv o /etc/fstab, el cual esta compuesto por los siguientes campos.
Campos: Dispositivo: Se puede indicar el archiv o del dispositiv o, una etiqueta o un UUID. También se puede indicar un driv e de un serv idor remoto. Punto de Montaje: Es el directorio dentro del cual se podrá acceder al f ilesy stem que se monte, debe existir prev iamente. Tipo de sistema de archivos: El código de sistema de archiv os. Opciones de montaje: Son las opciones de montajes v istas en el punto anterior. Operación de Resguardo: Se f ija en 1 si la utilidad dump debe hacer un backup o 0 si debe ignorarlo. Orden de chequeo: Orden en el que se ubica para el chequeo de f sck, si es que lo debe hacer (0 indica que no se debe chequear).
143
144
147
(umask). Este comando toma un v alor octal que representa los bits a remov er cuando se crea un archiv o o un directorio. Para un archiv o se remuev e desde 666 y para un directorio desde 777.
Ejemplo Si tenemos una mascara de 022, los archiv os se crearan con 644 (rw-r--r--) y los directorios con 755 (rwxr-xr-x). Si tenemos una mascara de 002, los archiv os se crearan con 664 (rw-rw-r--) y los directorios con 775 (rwxrwxr-x). La mascara no es una simple substracción de los v alores 777 y 666, es una extracción bit a bit. Cualquier bit que este f ijado en la mascara, es remov ido de los permisos f inales para archiv os nuev os, pero si un bit no esta f ijado, su especif icación en la mascara no af ecta en nada.
Permisos Especiales Set User ID (SUID) Esta opción se usa en conjunto con archiv os ejecutables. Lo que hace es indicarle a Linux que ejecute el programa con los permisos de quien es dueño del archiv o en lugar de usar los permisos de quien lo ejecuta. Por ejemplo, si un archiv o del cual root es dueño, tiene el bit de SUID seteado, el programa se ejecuta con priv ilegios root. Los archiv os con SUID se indican con una s en el bit de ejecución del usuario.
Set Group ID (SGID) El SGID es similar al SUID, pero asigna el grupo del programa en ejecución al grupo del archiv o. Cuando el SGID esta f ijado en un directorio, los nuev os subdirectorios y nuev os archiv os creados en el directorio original heredaran la propiedad de grupo, en lugar de basarse en el def ault actual.
Sticky bit El sticky bit ha cambiado su signif icado a lo largo de la historia de UNIX. En implementaciones modernas de Linux (y v ersiones mas modernas de UNIX), es usado para proteger archiv os de no ser eliminados por quien no es dueño de estos archiv os . Hoy en día, el sticky bit se utiliza con directorios. Cuando se le asigna a un directorio, signif ica que los elementos que hay en ese directorio sólo pueden ser renombrados o borrados por el propietario 150
del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura y, por tanto, puedan modif icar el contenido de esos elementos. Se suele usar en el directorio /tmp.
Cambiar la propiedad de un archivo con chown El comando chown nos permite cambiar el usuario al cual pertenece un determinado archiv o.
Sintaxis chown [opciones] [nuevo_usuario]:[nuevo_grupo] archivo Una de las opciones mas usadas es –R, que permite realizar los cambios de manera recursiv a. Solo root puede cambiar la propiedad de un archiv o.
Cambiar la propiedad del grupo con chgrp El comando chgrp nos permite cambiar la propiedad de los archiv os niv el de grupo:
Sintaxis chgrp [opciones] nuevo_grupo nombre_archivo El comando chgrp acepta muchas de las mismas opciones que chown, incluy endo –R para que los cambios se apliquen de f orma recursiv as.
Comando chmod Descripción El comando chmod nos permite cambiar el modo de un archiv o, es decir, sus permisos. Este comando se puede ejecutar de v arias maneras dif erentes para conseguir el mismo ef ecto. La sintaxis básica es la siguiente:
Sintaxis chmod [opciones] modo nombre_archivo Acepta la opción –R para actuar en modo recursiv o. La may oría de la complejidad de chmod radica en la especif icación del modo del archiv o. Se puede especif icar el modo de dos maneras dif erentes, de manera octal o de manera simbólica.
Metodo Octal Se pasan 3 dígitos octales, uno por el usuario, otro por el grupo y el ultimo por el resto. 151
153
destinan una carpeta para los archiv os de conf iguración disponibles y otra para los archiv os habilitados, dentro de la carpeta de archiv os habilitados se crean v ínculos simbólicos a los originales. Esto f acilita agregar, quitar o modif icar las conf iguraciones que estos archiv os prov een.
Comando ln Descripción El comando ln se utiliza para crear links.
Sintaxis ln [opciones] fuente destino Donde f uente es el archiv o original y destino es el nombre del v inculo. Para crear un link simbólico se pasa la opción –s.
155
156
Este directorio es similar a /bin y a /sbin, pero contiene librerías de programas. El subdirectorio /lib/modules contiene módulos del kernel, driv ers que pueden ser cargados y descargados cuando se requieren.
/usr Almacena el grueso de los programas de Linux. Su contenido es compartible y estático, por lo que puede ser montando como solo lectura y compartido con otros sistemas Linux.
/usr/local Este directorio espeja la organización de /usr, así como también /usr/local/bin y /usr/local/lib. El directorio /usr/local contiene archiv os que el administrador de sistemas instala localmente, por ejemplo, paquetes que son compilados en la computadora local. La idea es tener un área que este libre de actualizaciones automáticas cuando el sistema operativ o es actualizado por completo. Algunos administradores separan esta partición para protegerla de una reinstalación en la que se borre la carpeta padre.
/opt Este directorio es muy similar a /usr/local de muchas maneras, pero esta pensado para paquetes listos que no se instalan directamente con el sistema operativ o, como procesadores de texto o juegos. Típicamente, estos programas residen en subdirectorios dentro de /opt nombrados en base a sí mismos.
/home Contiene datos de usuarios. Suele tener su propia partición.
/root Es el directorio perteneciente al súper usuario root, allí se guardarán distintos archiv os pertenecientes al mismo.
/var Prov iene de variable, contiene colas de impresión, cola de mails, algunos logs de serv icios, etc.
/tmp Archiv os Temporales.
/mnt Se usa para montar dispositiv os remov ibles.
Comando find 158
162
163
5. Shells, Scripts y manejo de datos con SQL Esta unidad contiene 3 subunidades: En las dos primeras v emos como conf igurar y usar el shell mediante el cual interactuamos con el sistema, en la segunda inv estigamos Cubre los siguientes objetiv os: Manejo del Entorno de Shell (105.1) Se realiza una explicación básica sobre el concepto de shell. Incluy endo el v ariables de entorno , aliases y archiv os de conf iguración. Manejo de Scripts (105.2) La habilidad de crear y modif icar scripts existentes en el sistema es importante para la gestión y la automatización de tareas. En este objetiv o se explica la sintaxis de scripting del shell. Manejo de datos con SQL (105.3) Este objetiv o cubre el concepto y el uso básico de SQL. Haciendo una rev isión de lo que es el Lenguaje Estructurado de Datos. Se hace una introducción al motor de base de datos MySQL.
164
165
Funciones Además de los aliases, Bash también prov ee f unciones. Las f unciones trabajan de manera parecida a los aliases, en el sentido en que un nombre de f unción, def inido por el usuario es asignado a uno o mas comandos mas complejos.
Sintaxis function nombre () { lista_de_comandos; }
Ejemplo Podemos agregar la siguiente f unción a nuestro archiv o ~/.bashrc. Es necesario iniciar una nuev a sesión de Bash para que los cambios surtan ef ecto. … function listartemp(){ echo “Estos son los contenidos de /temp”; ls –l /tmp; } …
170
171
if [ $numero = 1 ] then echo " El numero es 1" else echo " El numero es otro pero no 1 " fi
case Cuando hay mas de dos posibles resultados y caminos a seguir, se usa la sentencia case.
Sintaxis case expresión in patron1 ) acciones ;; patron2 ) acciones ;; ... esac
Ejemplo En el siguiente ejemplo, combinamos una sentencia de iteración (for) con la sentencia de control case; para iterar por todos los nombres de los archiv os dentro de un directorio y luego en base a la extensión de los mismo, mostrar en pantalla el tipo de archiv o al cual corresponde esa extensión. … #!/bin/sh for nombrearchivo in $(ls) do # Tomo la extension del archivo ext=${nombrearchivo##*\.} case "$ext" in c) echo "$nombrearchivo : C Programacion" ;; o) echo "$nombrearchivo : Archivo Objeto" ;; sh) echo "$nombrearchivo : Script de Shell" ;; txt) echo "$nombrearchivo : Archivo de texto" ;; *) echo " $nombrearchivo : Extension Desconocida" ;; esac done 175
…
Sentencias de Iteración Son estructuras que le indican al script repita una acción determinada hasta que se cumple una determinada condición.
Sentencia for El bucle for realiza una acción determinada, una v ez por cada elemento dentro de una lista que debemos prov eer.
Ejemplo En el siguiente ejemplo, utilizamos la sentencia f or para iterar por las v ariables que conf orman la lista (v 1, v 2, v 3 y v 4) y mostrar su contenido con el comando echo. … #!/bin/bash for i in v1 v2 v3 v4; do echo "Estas son las variables $i" done … Frecuentemente se usa en conjunto con el comando seq, el cual genera una secuencia. Por ejemplo: for `seq 1 10` Genera una secuencia de 10 números empezando por el 1 y terminando en el 10.
Sentencia while Se ejecuta mientras se cumple una determinada condición
Sintaxis while [condición] do comandos done
Ejemplo En el siguiente ejemplo, se inicializa un contador en 0, y se le v a sumando uno cada v ez que entra en el bucle. Se mostraran en pantalla 10 mensajes diciendo “ El contador es n”, donde es n es un numero entre 0 y 9. … #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do 176
echo The counter is $COUNTER let COUNTER=COUNTER+1 done …
until Es similar a while pero se ejecuta mientras una condición sea f alsa.
Funciones En Bash se pueden def inir f unciones. Una f unción en Bash (denominada subrutina o procedimiento en otros lenguajes de programación) se podría def inir como un script dentro de un script. Sirv e para organizar un script en unidades lógicas de manera que sea mas f ácil de mantener y programar. En Bash las f unciones se pueden def inir de la siguiente manera: function nombre_funcion(){ comandos_del_shell }
177
178
184
6. Interfaces Graficas de Usuario Si bien, para las tareas de administración de serv idores, la línea de comando es la herramienta de trabajo; es necesario saber como conf igurar interf aces graf icas de usuario. La siguiente unidad trata 3 subunidades: Instalación y configuración de X11 (106.1) X11 es la interf az graf ica de usuario mas utilizada hoy en dia en Linux. Si bien la may oría de la conf iguración se realiza automáticamente al momento de la instalación del sistema, es bueno saber la estructura de sus archiv os de conf iguración. Gestores de Pantalla (106.2) Los gestores de pantalla (Display Managers) nos prov een una serie de elementos que completan a la interf az graf ica que prov ee X11. Como ser los gestores de v entanas y los gestores de graf icos de inicios de sesión. Los mas importantes son XDM, KDM y GDM. Accesibilidad (106.3) Entre los usuarios de escritorios Linux, hay una población la cual tiene ciertas limitaciones f ísicas. En lo que respecta a la capacidad de v er bien, maniobrar el teclado y el ratón. Para ellos hay v arias herramientas que nos permiten conf igurar el sistema para que sea mas amigable a personas con limitaciones.
185
186
Ejemplo Section “Module” Load “dbe” Load “extmod” Load “freetype” Load “type1” Endsection Los módulos freetype y type1 se ocupan de renderizar las f uentes TrueType y Adobe Type1, respectiv amente. Si no entendemos un modulo, no deberíamos preocuparnos, seguramente esta ahí cumpliendo algún f unción útil.
Sección InputDevice Las secciones “InputDev ice” manejan el mouse y el teclado.
Teclado Section “Input Device” Identifier “Keyboard0” Driver “kbd” Option “XkbModel” “pc105” Option “AutoRepeat” “500 200” Endsection
Las líneas indican los siguiente: Identifier: Prov ee un identif icador que luego será usado por otra sección (Server Layout). Si bien, el texto a poner es arbitrario, es bueno poner algo descriptiv o. Driver: La línea donde dice driv er le indica a X que controlador usar para acceder al dispositiv o. Kbd y Keyboard son controladores específ icos para teclado, mientras que evdev es un controlador genérico para dispositiv os de entrada de datos de distinto tipo. Option: Las líneas donde dice opción f ijan las dif erentes opciones que ajustan la f uncionalidad del teclado, como ser, modelo, ratio de repetición y distribución de las teclas.
Ratón Section “Input Device” Identifier “Mouse0” Driver “Mouse” Option “Device” “/dev/input/mice” Option “Protocol” “IMPS/2” EndSection 190
El controlador puede ser mouse o evdev. Las líneas mas importantes son Device y Protocol. Device indica a X que dispositiv o de Linux debe leer para acceder al mouse. La opción protocol indica que señal debe esperar cuando se muev e el mouse y se aprietan botones.
Sección Monitor Uno de los aspectos mas dif íciles en la conf iguración de X es el ajuste de las v ariables del monitor. Esto se ajusta en la sección “Monitor”. Una v ersión modesta puede ser la siguiente: Section “Monitor” Identifier “Monitor0” ModelName “” HorizSync 30.0 – 83.0 VertRefresh 55.0 – 75.0 End Section HorizSync y VertRefresh def inen el rango de ref resco horizontal y v ertical, respectiv amente, que acepta el monitor. Data Display Channel: Es un protocolo que permite a los monitores comunicar el máximo ratio de ref resco horizontal y v ertical que soporta un monitor.
Sección Device El monitor generalmente manda la inf ormación a trav és de la tarjeta de v ideo. La v ersiones mas modernas de X.org-X11 pueden escoger el controlador de la placa de v ideo de manera automática, seleccionando el mas optimo. En otras ocasiones, se debe prov eer la inf ormación al archiv o de conf iguración XF86Config o xorg.conf . En particular, el modulo del controlador se ajusta mediante la línea Driver “valor” dentro de la sección Device. … Driver “nv” … Esta línea indica el nombre del controlador, que generalmente se encuentra en /usr/X11R6/lib/modules/drivers o /usr/lib/xorg/modules/drivers en general los nombres de los driv ers terminan en _drv.o .
191
Si se tipea Xorg –configure para crear una conf iguración inicial, el archiv o probablemente tenga múltiples secciones de Device, cada una para un driv er dif erente. Algunos de estos, como fdev y vesa, son driv ers genéricos que f uncionan en una gran v ariedad de placas de v ideo. Actualmente, se utilizan controladores nv o nouveau para placas nVidia, radeon para placas ATI/AMD y controladores Intel para placas Intel .
Opciones específicas de la placa de video … Section “Device” Identifier “Videocard0” Driver “nv” VendorName “nVidia” EndSection …
Sección Screen La sección Screen le indica a X sobre la combinación de monitores y placas de v ideo que se están utilizando. Section “Screen” Identifier “ Screen0 ″ Device “ Videocard0 ″ Monitor “ Monitor0 ″ DefaultDepth 16 SubSection “Display” Depth 24 Modes “ 1280 × 1024 ″ “ 1280 × 960 ″ “ 1152 × 864 ″ “ 1024 × 768 ″ “ 800 × 600 ″ “ 640 × 480 ″ EndSubSection SubSection “Display” Depth 16 Modes “ 1152 × 864 ″ “ 1024 × 768 ″ “ 800 × 600 ″ “ 640 × 480 ″ EndSubSection
Incluy e una o mas subsecciones de Display.
Server Layout La sección “server layout” v incula todos los otros componentes de la
192
196
id:5:initdefault: Cambiando el 5 al niv el de runlev el que se desea ejecutar por def ecto. La may oría de las distribuciones prov een métodos para determinar el serv idor XDMCP por def ecto. Existen dos métodos comunes:
Selección por medio de un archivo de configuración Algunas distribuciones ocultan la elección del serv idor, f recuentemente en el directorio /etc/sysconfig . En Fedora, el archiv o /etc/sysconfig/desktop f ija la v ariable DISPLAY MANAGER con el v alor de la ruta al ejecutable DISPLAY MANAGER=/bin/xdm. En openSUSE, /etc/sysconfig/displaymanager.
Selección por medio de los scripts de inicio En Debian y sus distribuciones deriv adas, como Ubuntu, el gestor de pantalla se elige por medio de un script de inicio de SysV, Upstart o Systemd.
Arquitectura Cliente/Servidor de X La may oría de la gente imagina a los serv idores como computadoras muy potentes dentro de centros de cómputos. Si bien este concepto es acertado a v eces, no aplica los serv idores X. El serv idor X se ejecuta en la computadora que el usuario utiliza, f ísicamente. Los clientes X, son los programas que el usuario ejecuta (xterm, KMail, LibreOffice, etc). En la may oría de los casos, el serv idor X y los clientes residen en la misma computadora, pero en los casos en que se usa X para acceso remoto, hay que tener en cuenta que el serv idor X se encuentra en la computadora del usuario. Supongamos que tenemos 2 computadores en la red, Zion y Lion. Zion es una computadora potente que contiene importantes programas y Lion es un sistema menos potente, pero que tiene un teclado, un mouse y un monitor. Queremos estar sentados en Lion y correr programas que se encuentran en Zion. 1. 2. 3.
Iniciamos una sesión con X en Lion. Abrimos una terminal Escribimos xhost + Zion en la terminal de Lion. Este comando le indica a Lion que muestre datos originados de Zion en 199
4. 5.
6.
pantalla. Iniciar una sesión ssh en Zion desde Lion. En Zion, escribir export DISPLAY =Lion:0.0 Este comando le indica a Zion que use Lion para mostrar programas basados en X. Lanzar un programa de Zion, como lof f ice (LibreOf f ice)
200
201
RepeatKeys: Permite a un usuario con coordinación limitada tiempo adicional para largar las teclas antes de empezar a repetir las teclas. BounceKeys: Inserta un tiempo muerto entre tecla y tecla, para ev itar pulsaciones no intencionadas.
Orca Orca es una tecnología de asistencia f lexible, extendible y potente para las personas con discapacidad v isual. Usando v arias combinaciones de síntesis de v oz, braille y magnif icación, Orca ay uda a proporcionar acceso a las aplicaciones GNOME y algunas otras.
Emacspeak Es similar a Orca, habilita a personas con discapacidad v isual a utilizar una computadora.
203
204
205
7. Tareas Administrativas En el siguiente capitulo v eremos como llev ar a cabo las rutinas de administración necesarias para administrar el sistema, como la administración de usuarios, la planif icación y programación de tareas recurrentes el f uturo y las conf iguraciones de localización e internacionalización. Esta unidad consiste de 3 subunidades: Gestión de usuarios y grupos (107.1) En esta unidad se explica como gestionar cuentas de usuario y grupos. Cuales son los archiv os de conf iguración y los comandos que interv ienen en la administración de usuarios. Programación de tareas futuras con Cron y At (107.2) La herramientas f undamental para que el sistema realice tareas programadas a f uturo es el demonio Cron. En esta subunidad examinaremos su f uncionamiento y conf iguración. También v eremos el comando at. Localización e Internacionalización (107.3) Es importante tener la habilidad de conf igurar el sistema para que se adapte a dif erentes lenguajes y locales. Para eso v eremos las dif erentes conf iguraciones que podemos realizar.
206
207
almacenada en este campo que se encuentra encriptado. A pesar de la encriptación, por razones de seguridad, la may oría de los sistemas almacena contraseñas en un archiv o separado, el /etc/shadow. Si no se incluy e la contraseña, su campo se rellena por la letra x, que indica que el sistema de contraseñas shadow está en uso.
ID de usuario Cada nombre de usuario requiere un identif icador de usuario único, o UID. El UID es simplemente un entero no negativ o. La cuenta root se le asigna el UID de 0. Por conv ención, los v alores de UID de 0 a 99 están reserv ados para uso administrativ o, los may ores de 99 son para los usuarios regulares del sistema. En algunos sistemas, se empiezan a asignar UID para usuarios regulares a partir del numero 500.
ID de grupo Cada usuario tiene un identif icador de grupo primario o GID. El GID es también un entero no negativ o. Los números de grupo y sus nombres asociados se especif ican en el archiv o /etc/group. El GID almacenado para cada usuario en /etc/passwd es su ID de grupo por def ecto, aunque el usuario puede pertenecer a v arios grupos.
El nombre completo del usuario o miscelánea El nombre del usuario u otra inf ormación se almacena como texto sin f ormato y por lo general contiene el nombre completo del usuario. Este campo puede contener espacios.
Directorio de inicio El directorio de inicio el directorio por def ecto en el sistema de archiv os para la cuenta. Si una cuenta es para una persona, probablemente se creará un directorio en el sistema de archiv os con archiv os de conf iguración estándar que el usuario puede personalizar. La ruta completa al directorio de inicio está aquí.
Shell por defecto Este campo especif ica el shell por def ecto para el usuario o el serv icio, que es el shell que se ejecuta cuando el usuario inicia sesión o abre una v entana de shell. En la may oría de los casos, el shell será /bin/bash o /bin/tcsh, pero puede ser cualquier shell, o incluso otro programa ejecutable.
Grupos y el archivo /etc/group Los grupos son similares a los usuarios en su administración y se
209
def inen en el archiv o /etc/group. Al igual que el archiv o passwd, el archiv o de grupo contiene campos separados por dos puntos:
Nombre del grupo Este campo indica el nombre del grupo. Cada grupo debe tener un nombre único.
Contraseña Al igual que las cuentas de usuario tienen contraseñas, los grupos pueden tener contraseñas para sus miembros. Si el campo de la contraseña está v acío, el grupo no requiere una contraseña. La contraseña en un grupo puede usarse para acceder temporariamente al grupo por medio el comando newgrp.
ID de grupo Cada grupo requiere un GID único. Como los UID, los GID son números enteros no negativ os.
M iembros del Grupo El último campo es una lista de los miembros del grupo por nombre de usuario, separados por comas.
El sistema shadow de contraseñas En los comienzos de Linux, las contraseñas se podían leer, de manera encriptado, desde el archiv o /etc/passwd. Eso los hacia susceptibles a ataques de f uerza bruta. Para corregir esa v ulnerabilidad, se trasladaron las contraseñas a los archiv os /etc/shadow para los usuarios y /etc/gshadow para los grupos. El único con permisos para leer estos archiv os debería ser root.
Comandos de gestión de usuarios y grupos Aunque es posible, rara v ez es necesario (ni aconsejable) manipular la cuenta y los archiv os de def inición de grupo manualmente con un editor de texto. En cambio, una f amilia de comandos está disponible para la gestión de cuentas, grupos y contraseñas.
Comando useradd Descripción Crea cuentas de usuarios en el sistema. Tanto los v alores por def ecto del sistema y las opciones especif icadas def inen cómo se conf igurara la cuenta. Una contraseña inicial debe ser establecida posteriormente. Una alternativ a a useradd es el comando adduser, el cual nos permite ingresar los parámetros de manera interactiv a.
210
214
219
Iconv –f formato [-t formato] [archivo_entrada] Las opciones f y t representan los f ormatos de codif icación de entrada y de salida. Si se omite el f ormato de codif icación de salida, iconv utiliza el que este como def ecto en las conf iguraciones de locale.
223
224
8. Servicios esenciales del sistema Mantener la hora del sistema (108.1) Esta subunidad analiza como Linux mantiene la f echa y la hora actualizadas. Se rev isa como realizar esta tarea manualmente y utilizando un serv idor NTP (Network Time Protocol). También se explica como conf igurar un serv idor para que prov ea el serv icio NTP a otras computadoras dentro de nuestra red. Registro de actividad del sistema o “Logging” (108.2) Es importante registrar lo que suceden a diario y hacen a la v ida del sistema. La inf ormación que se guarda en estos archiv os de registro de activ idad (log f iles) no serv irá para solucionar problemas y para estar al tanto de lo que sucede en nuestro sistema. Correo electrónico (108.3) El correo el electrónico es uno de los serv icios mas importante que prov ee un serv idor Linux. Si bien saber el detalle de todos los serv idores SMTP no es necesario para la certif icación LPIC-1, si es necesario saber como estos f uncionan. Además de los demás programas complementarios. Gestión de Impresoras (108.4) En esta subunidad se inspecciona como es la arquitectura de los sistemas de impresión en Linux. Algunos de los conceptos son PostScript, Ghostscript y el serv icio CUPS.
225
226
230
231
Logging Introducción Muchos de los ev entos que ocurren durante el f uncionamiento de un sistema v alen la pena de ser registrados. Para ellos se desarrollaron programas llamados loggers, los cuales gestionan los logs (registros de activ idad). El concepto detrás de un logger es prov eer una manera unif icada de manejar los archiv os de registros de activ idad. Este guarda mensajes que suelen tener inf ormación sobre la activ idad del sistema, junto con cada mensaje se incluy e la f echa y la hora del env ío.
Syslog, Syslogd, Rsyslog y Klogd Antes de empezar, v ale la pena tomarse el tiempo de aclarar ciertos términos para f acilitar la comprensión del resto del texto.
Syslog El termino Syslog puede resultar un tanto ambiguo, y a que se lo suele usar para ref erenciar dif erentes cosas. Antes que nada, syslog es un estándar, que def ine una arquitectura para manejar los mensajes que registran activ idad dentro de un sistema. También se usa syslog para ref erirse al demonio sy slogd, que def inimos a continuación.
Syslogd Hasta hace poco tiempo f ue el programa de syslog mas común dentro de la may oría de las distribuciones, se instala con un paquete llamado sysklogd.
Rsyslog Últimamente es mas común v er a rsyslogd instalado como serv idor de logging en las distribuciones mas populares. Si bien acepta una conf iguración tradicional (estilo sysklogd) , muchas de las mejoras que implementa necesitan un archiv o de conf iguración con los métodos nuev os.
Klogd Tanto syslogd como rsyslog generalmente f uncionan en paralelo con el demonio klogd, cuy a tarea es guardar un registro de la activ idad del kernel. En lo que respecta a los objetiv os de la certif icación LPI, solo hay 232
que conocer en detalle el f uncionamiento de sy slogd. Solo es necesario tener una noción básica acerca de rsy slogd.
Configuración Syslogd se conf igura a trav és de el archiv o/etc/syslog.conf . El concepto de este archiv o de conf iguración es muy simple y poderoso al mismo tiempo. El f ormato básico de las líneas que lo componen es el siguiente.
Línea de ejemplo syslog.conf facilidad.prioridad acción Facilidad: es una palabra que codif ica el tipo de programa o herramienta que genera el mensaje a ser registrado. Prioridad: este campo codif ica la importancia del mensaje. Acción: Representa el destino de los mensajes. Puede ser un archiv o, una computadora remota u otra locación que acepte el mensaje. La f acilidad y la prioridad muchas v eces son ref eridas en conjunto como el selector.
Facilidades auth: Autenticación. auth-priv: Autenticación que no son creados por el sistema. cron: Serv icio Cron. daemon: Serv icios de ejecución. Este código es utilizado por los demonios que no tienen asignado un código especif ico, como mail o cron. kern: kernel lpr: Serv icio impresión. mail: Serv icio de Mail news: Serv icio News. security (auth): Similar a auth. syslog: sy slog. user: Usuarios. uucp: Serv icios uucp. local0 a local7: Se pueden usar estas f acilidades para programas que creen los usuarios. Es posible que las distribuciones y a estén usando alguna de estas f acilidades para programas específ icos, así que, es conv eniente consultar la documentación de cada distribución antes utilizarlas.
Prioridades debug: depuración info: inf ormativ o 233
notice: notif icaciones warning: adv ertencias err: errores crit: críticos alert: alertas emerg: emergencia Las prioridades tienen un orden ascendente de importancia. emerg indica el niv el mas alto de importancia e indica serios problemas. El niv el de debug es el que registra la may or cantidad de inf ormación, se usa para depurar programas que no se comportan de la manera esperada.
Sintaxis Igual o mayor prioridad Cuando un programa env ía un mensaje al logger, incluy e un código de prioridad, el logger registra el mensaje a un archiv o si esta conf igurado para registrar esa prioridad o may or. Por cual, si se especif ica un código de prioridad de alerta, el sistema registrara mensajes de alerta, pero no mensajes crit o de menor prioridad.
Igual prioridad Si se quiere indicar una prioridad que solo se registre si coincide con esa prioridad, se utiliza el singo (=).
M enor o igual prioridad El signo de exclamación (!) indica un v alor de menor o igual propiedad.
Todas las facilidades Un asterisco (*) se ref iere a todas las f acilidades.
M últiples facilidades Se pueden especif icar v arias f acilidades en un solo selector separándolas por comas.
M últiples selectores Se pueden especif icar múltiples selectores para una acción particular separando los selectores con ";"
Registro manual de datos En la may oría de los casos, el sistema o algún serv idor generan las entradas de registros en el logger, aunque en ocasiones, un puedo llegar a querer generar una entrada manual o un script que se ocupe de ello. La herramienta para este trabajo es llamada logger. 234
237
usuario. El serv idor de correo almacena los mensajes para cada usuario dentro del directorio /v ar/spool/mail .
Servidores SMTP Linux soporta v arios serv idores de correo dif erentes. Probablemente, alguno de estos programas este instalado en nuestro sistema. Estos son los cuatro serv idores de correo mas populares en Linux.
Sendmail Durante un tiempo, f ue el paquete para gestionar correo electrónico mas usado en Internet. Sendmail tiene 2 def ectos importantes, el primero, es que su conf iguración suele ser bastante compleja; el segundo radica en la cantidad de v ulnerabilidades de seguridad que presenta. Como respuesta a estas def iciencias, con el tiempo, aparecieron v arios programas que f ueron ganándole terreno a Sendmail.
Postfix Postf ix f ue diseñado como un reemplazo modular a Sendmail, esta conf ormado por v arios programas, cada cual de ellos realiza tareas especif icas. Su conf iguración es mas simple que la de Sendmail y se ha conv ertido en el paquete de correo electrónico por def ecto para muchas distribuciones.
Exim Si bien tiene un diseño monolítico, al igual que Sendmail, pero no es tan dif ícil de conf igurar como este ultimo. Exim llego como una respuesta a los problemas de seguridad de Sendmail, por lo que tiene un buen niv el de seguridad. Muchas distribuciones, incluy endo Debian, usan Exim como MTA por def ecto.
Qmail Tiene un diseño modular, se f ocaliza en la seguridad y es mas f ácil de instalar que Sendmail. No tiene una licencia GPL, lo que limita un poco su uso.
Uso del programa mail El programa mail nos permite env iar correos y leer correos almacenados localmente en el serv idor. Vale la pena mencionar, que además del programa mail, existen una v ariación de el, llamada nail, la cual permite env iar archiv os adjuntos al mensaje de correo.
Envío de correo con mail Sintaxis 239
mail [-v] [s- asunto] dirección_destino
Opciones -v: Muestra mas inf ormación -s: Permite especif icar el asunto. -c: dirección: Env ía el mensaje con copia -b: dirección: Env ía el mensaje con copia oculta Para env iar un mail podemos ejecutar el comando mail seguido por una alguna dirección de correo electrónico o algún usuario del sistema. Si las opciones de asunto, copia y copia oculta no son prov istas, el programa nos dará la oportunidad de agregar estos parámetros. Luego el prompt desaparecerá y podremos escribir el cuerpo de nuestro mensaje. Una v ez que hay amos f inalizado escribiendo el mensaje, podemos f inalizar el proceso con Ctrl-D.
Leer correo con mail Sintaxis mail [-v] [f- [nombre | -u usuario] Se puede utilizar el programa mail para leer correos, pero solo aquellos almacenados en el spool local de Linux. Para hacerlo, solo tenemos que ejecutar la aplicación mail sin ninguna opción, a no ser que queramos especif icar otro archiv o de spool dif erente con la opción -f .
Consultar la cola de correos El serv idor SMTP debe gestionar una cola de correos electrónicos, la cual contiene mensajes que deben ser entregados. Para la gestión de la cola de correos, se utiliza el comando mailq. Este programa era originalmente parte de Sendmail, pero los programas que deriv aron Sendmail (Postfix, Qmail y Exim) implementan una capa de emulación de Sendmail, que prov ee con una serie de comandos de Sendmail a los usuarios y a los programas. Dentro de esta capa de emulación, todos los programas tienen una implementación de mailq.
Redirección de correo Los aliases de correo, permiten que una dirección represente a otra. Por ejemplo, todos los serv idores de correo deberían mantener una cuenta llamada postmaster. El correo dirigido a esta cuenta debería ser leído por alguien responsable por la administración de ese sistema. Una manera de realizar esto es v incular la cuenta postmaster a otra cuenta que se use en la realidad. Para implementar 240
ese v inculo, hay que editar el archiv o de aliases, que suele encontrarse dentro de /etc o también dentro de /etc/mail. La sintaxis es bastante simple … nombre: direccion1[, direccion2] … Donde nombre es el nombre de la cuenta local, como puede ser postmaster. Cada dirección puede ser el nombre de una cuenta local, el nombre de un archiv o local en el cual se guardan los mensajes o el nombre de una dirección de correo electrónico completa. Es normal encontrar conf iguraciones donde se redirige el correo de cuentas como postmaster y otras similares a root. No es aconsejable leer correo como root, por lo que root a su v ez puede estar redirigido a otra cuenta. Algunos programas de correo, requieren que se compile el archiv o /etc/aliases a un f ormato binario, para que pueda ser procesado mas rápido. Para realizar esto se utiliza el comando newaliases. Otra f orma de redirigir el correo es hacerlo desde las cuentas de usuarios, para eso se edita el archiv o ~/.forward dentro de los directorios de inicio de los usuarios.
Programas complementarios Además del serv idor SMTP, un serv idor de correo seguramente tenga mas sof tware. Como los programas para implementar los protocolos POP o IMAP. Fetchmail: Este programa rellena un agujero en la cadena de env ío de correos. Si se tiene un pequeño sitio que depende del ISP para env íos de correo, seguramente el ISP soporte nada mas que IMAP o POP. Si se quiere usar una v ariedad de clientes de correo, es posible que se quiera tener su propio serv idor SMTP, y tal v ez su propio serv idor POP o IMAP, para entregar correos localmente. Para hacer esto, se necesita un programa que saque el mail usando POP e IMAP y luego lo iny ecte dentro de una cola SMTP. Este es el trabajo que realiza Fetchmail. La may oría de los sitios no lo tiene, pero para los que lo necesitan, es indispensable. Cyrus Imap: Soporta tanto IMAP como POP. Dovecot: Es un MDA (Mail Delivery Agent)También soporta IMAP y POP, hace énf asis en la v elocidad y en la seguridad..
241
242
lpr env ía un trabajo de impresión a una cola especif ica. Esta cola corresponde a un directorio en el disco rígido, generalmente un subdirectorio dentro de /var/spool/cups/ . El demonio de CUPS corre en el segundo plano, esperando a trabajos de impresión que sean env iados. El sistema de impresión acepta trabajos de impresión de lpr o de otras computadoras remotas, monitorea colas de impresión.
Configuración En otros sistemas operativ os, como Windows o Mac, se utiliza un controlador de impresión, que se ubica en el medio de la aplicación y la cola de impresión. En Linux, el controlador, es parte de ghostscript, que es parte de la cola de impresión. No todas las aplicaciones o impresoras necesitan de ghostscript, Ghostscript sirv e como una manera de traducir a PostScript, un lenguaje de impresión común, en f ormas que sean entendidas por todas las computadoras. Entender la capacidad de ghostscript, y como encaja con la cola de impresión, es importante para entender como conf igurar impresoras.
PostScript: El lenguaje de Impresión de Facto Las impresoras PostScript se v olv ieron populares como accesorios de sistemas de Unix durante los años 80. Las colas de impresión de Unix no f ueron pensadas con driv ers del estilo Windows en mente. Por lo que las colas de Unix se construy eron en base a PostScript. El problema con PostScript es que las impresoras de precio bajo y medio generalmente no lo entienden, por lo que necesitan un traductor en el medio. Aquí es donde Ghostscript hace su aparición.
GhostScript Cuando una computadora utiliza una impresora tradicional de PostScript, esta le env ía una archiv o PostScript directamente a la impresora. PostScript es un lenguaje de programación, cuy o objetiv o principal es conseguir una pagina impresa como salida. Ghostscript es un interpretador de PostScript que corre en una computadora. Toma una entrada de PostScript y produce una salida en una v ariedad de f ormatos de mapas de bits, los cuales pueden ser entendidos por impresoras que no usen PostScript.
Configuración de CUPS CUPS utiliza v arios archiv os de conf iguración ubicados en /etc/cups y sus subdirectorios para manejar esta operación. Estos archiv os pueden ser editados directamente, y es probable que se necesario
244
hacerlo si se quiere compartir la impresora entre v arios subsistemas CUPS. La manera mas simple de agregar impresoras a CUPS es con la utilidad de conf iguración Web.
Archivos de configuración de CUPS. Se pueden agregar, quitar o editar impresoras a trav és de /etc/cups/printers.conf, el cual consiste de def iniciones de impresoras. Cada def inición empieza con el nombre de la impresora, identif icado por el string DefaultPrinter o Printer.
245
246
9. Fundamentos de redes Conceptos fundamentales de redes (109.1) Protocolos componentes de la pila TCP/IP Configuración básica de red (110.2) Comandos básicos para conf igurar la red Resolución de problemas de red (109.3) En esta subunidades se v en herramientas y consejos para solucionar problemas en la red. Configuración del cliente DNS (109.4) En esta subunidad rev isamos como realizar la conf iguración del cliente DNS.
247
248
Paquetes de red Las redes modernas operan en base a bloques de inf ormación conocidos como paquetes. Cuando se env ía un archiv o de 100KB desde una maquina hacia otra, la computadora div ide este archiv o en bloques mas pequeños. Si se div iden los 100KB en 20 paquetes de 5KB, en el caso de que un paquete se pierda en el camino, no es necesario retransmitir todo el archiv o de v uelta, sino que retransmitiremos solo los 5KB que perdimos.
Pila de protocolos El conjunto de protocolos que f orman parte del proceso que se da cada v ez que se intercambia un datos entre dos computadoras, se llama la pila de protocolos. Esta pila se div ide en v arias capas, cada una de las cuales cumple un determinado tipo de f unciones. Cada una de estas capas interactúa con las capas pares de la otra computadora para intercambiar datos y a su v ez hace uso de la capa que tiene abajo para que ella encapsule sus paquetes y los llev e a destino. Las capas de la pila TCP/IP son:
Capa de Aplicación Esta capa prov ee serv icios al sof tware de aplicaciones corriendo en una computadora. Algunos protocolos de capa de aplicación son FTP, HTTP, DNS y SMPT.
Capa de Transporte Es la capa que se ocupa de gestionar la entrega de los paquetes de datos entre la computadora que origina estos datos y la computadora que es la destinataria f inal de estos datos. Los dos protocolos f undamentales de esta capa son TCP y UDP.
Capa IP o de Internet Encuentra las rutas correctas para dirigirse a las direcciones IP de destino. El protocolo IP es el protocolo f undamental de Internet.
Capa de Acceso a Datos Def ine el protocolo y el hardware necesario para entregar datos por medio de una red f ísica. Incluy e todas las v ariaciones de los protocolos de Ethernet y otros estándares de LAN. También incluy e estándares de WAN como PPP y frame relay.
Protocolo de control de transmisión (TCP) TCP es el protocolo de capa de transporte mas usado. Como su 250
cima de esta jerarquía se encuentran los dominios de niv el superior, como son .ar, .com y .edu. Dentro de los dominios de niv el superior encontraremos dominios de segundo niv el, que corresponden a organizaciones, como uba.ar o google.com. Y dentro de esos dominios, podemos tener otros dominios de menor jerarquía o nombres de computadoras, asociados a direcciones IP. El sistema de Nombres de Dominio (DNS) es una base de datos distribuida que conv ierte direcciones IP en nombres de dominio. Cada dominio debe mantener al menos dos serv idores DNS que tengan la capacidad de prov eer los nombres de dominio de cada computadora dentro del dominio.
Comando host Descripción El comando host realiza búsquedas DNS y nos dev uelv e los resultados.
Comando dig Descripción Este comando puede realizar consultas DNS mas complejas que host.
Puertos de red Una v ez que se realiza la conexión con una computadora remota, se debe especif icar que programas queremos contactar. Por ejemplo, si se quiere conectar con el serv idor web o con un serv idor FTP. La manera que se dirige el traf ico a los programas correctos y a su v ez se restringe este traf ico es mediante puertos lógicos.
Puertos comunes TCP 20 FTP 21 FTP 22 SSH 23 Telnet 25 SMTP 53 DNS 80 HTTP 110 POP3 111 Portmapper 113 Auth/Ident 119 Network News Transf er Protocol 253
139 143 389 443 445 465 631 993
NetBios Session Imap Ldap HTTP ov er SSL Microsof t Directory Serv ices SMTP sobre SSL Internet Printing Protocol Imap sobre SSL
UDP 67 DHCP 161 SNMP 177 XDMCP
Configuración DNS Para resolv er nombres DNS podemos optar por 2 opciones o una combinación de las dos. La primera es usar un archiv o local que contenga los pares que v inculan direcciones IP y nombres DNS. Ese archiv o v iene por def ecto en todas las distribuciones y se llama /etc/hosts. La segunda es usar serv idores DNS, los cuales podemos listar dentro del archiv o /etc/resolv.conf . Lógicamente, hay que ref erenciar los serv idores DNS por su dirección IP, y a que Linux no podrá resolv er nombres si no puede ubicar a los serv idores DNS. Generalmente, se consulta primero al archiv os local hosts antes que a los serv idores DNS. En el caso de que queramos cambiar el orden en que Linux realiza consulta de DNS, podemos editar el archiv o /etc/nsswitch.conf .
254
255
261
265
Establecer los servidores DNS en el /etc/resolv.conf Este archiv o nos permite establecer cuales son los serv idores DNS que debemos consultar, podemos indicarle entre 1 y 3 serv idores. Aunque generalmente se suelen poner solo dos. La sintaxis es la siguiente: … nameserver 173.203.4.9 nameserver 173.203.4.8 … La dirección IP de los serv idores DNS v a precedida por la palabra clav e nameserver.
267
268
10. Seguridad Gestión de la seguridad (110.1) En esta subunidad se hace una introducción a los conceptos básicos de seguridad. También se v en como podemos usar algunos comandos para realizar tareas de seguridad. Seguridad del host (110.2) Esta subunidad detalla los pasos necesarios para aumentar la seguridad de un sistema Linux. Es importante entender esta tarea como un proceso recurrente el cual siempre puede ser mejorable. Técnicas de encriptado (110.3) En esta subunidad se hace una introducción a las técnicas de encriptado disponibles. Se hace f oco en las herramientas SSH y GPG.
269
270
Gestión de la seguridad Conceptos Claves Inspeccionar un sistema para encontrar archiv os con el bit SUID/SGID. Gestionar las contraseñas de usuarios y su política de expiración. Saber utilizar nmap y netstat para descubrir puertos abiertos. Establecer límites de inicios de sesión, uso de procesador y uso de memoria. Conf iguración y uso básico de sudo.
Términos y utilidades f ind passwd lsof nmap chage netstat sudo /etc/sudoers su usermod ulimit
Introducción Una buena gestión de la seguridad nos permitirá mantener nuestro sistema f uncionando sin interrupciones y mantener nuestros datos a salv o. Hay una serie de conceptos que hay que entender para poder utilizar las herramientas disponibles para gestionar la seguridad.
Peligros de los archivos SUID y GUID Recordemos que estos archiv os le otorgan al usuario los mismos permisos con los que cuenta el usuario que es dueño del archiv o. Si bien este esquema de delegación de permisos es importante para administrar el sistema, tiene sus consecuencias en cuanto a los riegos que genera. Es lógico que el programa passwd (/usr/bin/passwd) tenga estos permisos. Ya que para cambiar su propia contraseña, un usuario debe escribir en el archiv o /etc/shadow; sobre el cual solo root debería tener permisos de escritura. Por lo que este es un caso de uso adecuado de SUID. 271
Para v er un caso potencialmente muy peligroso, podemos v er los peligros que se generarían si el programa Vi tuv iera permisos de SUID. Recordemos que VI tiene la posibilidad de ejecutar comandos de Shell, los cuales toman los permisos que el proceso de Vi. Por lo tanto, si se ejecuta Vi con SUID de root, se obtienen todos los permisos para ejecutar comandos con los que cuenta root. Con la implicancia en materia de seguridad que esto trae. Es entendible, entonces, que debamos inspeccionar regularmente nuestro sistema, en busca de archiv os que utilicen este tipo de permisos especiales.
Como encontrar archivos SUID y GUID Para localizar estos archiv os se puede utilizar el comando find, aprov echando que este comando tiene la habilidad de buscar por modo (permisos de usuarios). Aquí se pueden v er algunos ejemplos de búsquedas con find.
Encontrar archivos con SUID # sudo find / -perm +4000
Encontrar archivos con GUID # sudo find / -perm +2000
Encontrar archivos con GUID o SUID # sudo find / -perm +6000
Encontrar archivos con GUID y SUID # sudo find / -perm -6000 Si se precede el modo con un signo más (+), find busca todos los archiv os en los que alguno de los bits de permisos especif icados este f ijado. En cambio si se utiliza un signo menos (-), solo trae los archiv os en los cuales los dos bits estén f ijados.
Comando chage Descripción El comando chage modif ica v arios parámetros relacionados a la expiración de las contraseñas y las cuentas de usuario.
Sintaxis chage [opciones] usuario
Opciones -E fecha_expiración: Establece la f echa de expiración de la contraseña. -d ultimo_día: Establece la f echa en el que la contraseña se 272
cambio por ultima v ez -I días_inactivo: Luego de cuantos días de expirada la contraseña se deshabilita la cuenta -m días: Establece mínimo de días que tienen que pasar desde el ultimo cambio de contraseña para poder v olv er a cambiar -M días: Estable máximo de días que un usuario puede mantener una mismo contraseña antes de cambiarla. -w días: La cantidad de días antes de que expire la contraseña que el usuario recibirá el mensaje de adv ertencia. -l: Lista las opciones de contraseña de un usuario.
Comando usermod Descripción Modif ica una cuenta de usuario existente. Como herramienta de seguridad, nos permitirá habilitar y deshabilitar cuentas de usuario.
Sintaxis usermod [opciones] usuario
Opciones de uso más frecuente -L: Bloquea la contraseña, deshabilitando la cuenta. -U: Libera la contraseña, habilitando la cuenta. -c Comentario: Establece el v alor del comentario (campo 5 del passwd) -d Directorio: Estable el directorio de inicio
Monitoreo de puertos de red Hay tres herramientas que nos permiten monitorear puertos abiertos en la red. Dos de ellas v ienen instaladas y la tercera hay que instalarla. Ellas son lsof, netstat y nmap.
Comando lsof Descripción Este programa nominalmente lista archiv os abiertos, pero también se puede usar para identif icar que serv icios están en uso, usando la opción -i.
Ejemplo # lsof –i
Comando netstat Se usa para listar conexiones de red, tablas de ruteo y otra inf ormación sobre la operaciones de red en general. Para v er las 273
conexiones de red, podemos usar las opciones –a y –p. # sudo netstat –ap
Comando nmap Nmap permite inspeccionar una red para encontrar puertos que estén abiertos, y a sea en la computadora local, en una computadora remota o en una red entera.
Sintaxis nmap [ Tipo Sondeo ] [Opciones ] IP_objetivo Nmap es una herramienta muy potente y compleja que permite dif erentes tipos de sondeos de red. Dif erentes escenarios requieren dif erentes tipos de sondeos, esta en la experiencia del administrador saber cual es el adecuado. Se usa tanto para examinar redes propias como redes ajenas, por lo que es una herramienta habitual entre las que suelen usar los crackers.
Ejemplo 1 Examinar la red para v er que hosts están activ os # nmap 192.168.0.0/24
Ejemplo 2 Ver que puertos están abiertos y que serv icios corren en ellos # nmap 192.169.0.20
Ejemplo 3 Intentar detectar sistema operativ o # nmap -O 192.169.0.20
Ejemplo 4 Ver que programas corren en los puertos # nmap -sV 192.169.0.20
Restringir el uso de el usuario root con Sudo Por el hecho de que el usuario root puede hacer cualquier cosa dentro de una computadora, es lógico restringir su acceso. Sudo es un programa que se utiliza para que los administradores de sistema permitan que ciertos usuarios ejecuten ciertos comandos como root (u otro usuario). 274
La f ilosof ía básica es dar la menor cantidad de priv ilegios, pero igualmente permitir que se realicen las tareas necesarias. Sudo también permite llev ar una auditoria de quien ejecuto que comando y cuando lo ejecuto.
Beneficios de usar Sudo Registro de Comandos: Se puede tener un registro de comandos. Los cuales pueden ser trazados al usuario que los emitió. Permitiendo realizar auditorias. Registro centralizado de comandos: Se puede usar en conjunto con el demonio de registros (sy slog) para centralizar los registros en una sola computadora. Restricción de comandos: Cada usuario o grupo puede ser limitado en cuanto a cuales comando podrá ejecutar Sistema de Tickets: El sistema de tickets establece un limite de tiempo cuando un usuario ingresa en modo sudo Administración centralizada de múltiples sistemas: Las conf iguraciones sudo son escritas al archiv o /etc/sudoers. Este archiv o puede ser usado en múltiples sistemas y permite la administración desde una computadora central.
Configuración de sudo con el archivo /etc/sudoers El f uncionamiento de sudo se conf igura a trav és del archiv o /etc/sudoers, el cual no debe ser editado directamente, debe ser editado con el programa v isudo. El contenido de este archiv o consiste en dos tipos de entradas: Aliases: Son básicamente v ariables, se pueden usar para def inir grupos de comandos, grupos de usuarios, etc. Especificaciones: Vinculan usuarios o aliases con computadoras y comandos.
Tipos de Aliases Aliases de Usuario: Se utilizan para especif icar grupos de usuarios. Se pueden especif icar nombres de usuario y grupos del sistema (con el pref ijo %). Aliases de “ejecutar como” : Son muy similares a los Aliases de usuario, con la dif erencia que se pueden indicar usuarios por UID. Aliases de Host: Es una lista de nombres de hosts, direcciones IP y redes. Alias de Comandos: Son listas de comandos y directorios.
Ejemplo # Comandos para apagar el sistema 275
Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt # Comandos de impresión Cmnd_Alias PRINTING_CMDS = /usr/sbin/lpc, /usr/sbin/lprm # Comandos administrativos Cmnd_Alias ADMIN_CMDS = /usr/sbin/passwd, /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/sbin/visudo # Comandos Web Cmnd_Alias WEB_CMDS = /etc/init.d/apache2
Comando su El comando su se utiliza para cambiar de usuarios, su nombre v iene de Switch User (Cambiar Usuario). En el caso de que se ingrese el comando si ningún parámetro, intentara iniciar sesión como root, por lo que se pedirá la contraseña de root. Si se le pasa como argumento el nombre de otro usuario, se intentara pasar a ese usuario. Para ejecutar un solo comando como otro usuario, se puede usar la opción -c.
Ulimit El comando ulimit limita el uso de recursos del sistema, es un comando interno de Bash, por lo que af ecta solo a Bash y los programas que se lanzan desde Bash.
Sintaxis ulimit [opción [limite]]
Opciones Opción
Descripción
-a
Muestra los limites actuales
-u numero
Numero máximo de procesos disponibles a un usuario.
-x numero
Numero máximo de bloqueo de archiv os
-v numero
Máxima memoria disponible para el shell, en kiloby tes.
-H
El limite es rígido.
-S
El limite es f lexible.
276
277
278
Seguridad del Host Conceptos Claves Conocimiento de contraseñas shadow y su f uncionamiento. Desactiv ar serv icios de red que no estén en uso. Comprender el rol de los TCP wrappers.
Términos y utilidades /etc/nologin /etc/passwd /etc/shadow /etc/xinetd.d/* /etc/xinetd.conf /etc/inetd.d/* /etc/inetd.conf /etc/inittab /etc/init.d/* /etc/hosts.allow /etc/hosts.deny
Introducción Para mantener segura nuestra computadora debemos tener en cuenta detalles como el uso apropiado de contraseñas, el monitoreo de puertos de red y el control sobre los serv icios que se ejecutan con acceso a la red.
Gestión de Contraseñas La may oría de las distribuciones de Linux implementa el sistema de contraseñas Shadow. En el cual, las contraseñas no son almacenadas en el archiv o /etc/passwd como se hacia en los comienzos sino que son almacenadas en un archiv o separado, el /etc/shadow. El /etc/shadow, además de contener las contraseñas de los usuarios, contiene la siguiente inf ormación, almacenada en 8 campos separados por dos puntos (:). Una línea del archiv o shadow se v ería así. … adolfo:$6$OTVKm:15786:0:99999:7::: … Los campos son: 279
Campo
Descripción
1
Nombre usuario
2
Contraseña
3
Ultimo Cambio de Contraseña
4
Mínimo de días que tienen que pasar desde el ultimo cambio de contraseña para poder v olv er a cambiar
5
Máximo de días que un usuario puede mantener una misma contraseña antes de cambiarla
6
La cantidad de días antes de que expire la contraseña que el usuario recibirá el mensaje de adv ertencia.
7
La cantidad de días después de que hay a expirado la contraseña, después de los cuales se deshabilitara la cuenta.
8
Fecha de expiración de la cuenta
Súper Servidores Muchos programas que son serv idores en una red, abren puertos y escuchan conexiones directamente. Algunos otros, usan un intermediario, llamado súper serv idor. Este programa escucha por conexiones en representación de otro programa y luego, una v ez iniciada la conexión le pasa el control al programa indicado. Estos trae v entajas desde el punto de v ista de perf ormance y seguridad. Históricamente el súper serv idor estándar era inetd, pero actualmente es mas f recuente encontrarse con su sucesor, xinetd.
Archivo Inetd.conf Este archiv o contiene la siguiente inf ormación.
Línea Típica … ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l 280
… Nombre del Servicio: El nombre del serv icio como aparece en el archiv o /etc/services. Tipo de Socket: Stream (f lujo), dgram(datagrama) o raw (conexión de bajo niv el). protocol: Si se utiliza tcp o udp como protocolo de capa de transporte. wait/no wait: Si se conecta y libera el socket o si procesa todos los paquetes y luego realiza un timeout (wait). Usuario: El usuario que corre el serv icio. root y nobody son opciones comunes. Servidor: El serv idor que corre el serv icio. Parámetros: Aquí se indica quien es quien realmente corre el serv icio.
TCP Wrappers Estos prov een un programa llamado tcpd. En lugar de que inetd inv oque al serv icio directamente, inetd llama a tcpd, que chequea si el programa esta autorizado a correr; si es así, lo inv oca. TCP wrappers se conf igura por medio de 2 archiv os, /etc/hosts.allow y /etc/hosts.deny . El primero especif ica computadoras que tienen permitido acceder al sistema de determinada manera, los sistemas no listados, no tienen acceso. El archiv o hosts.deny, en contraste, def ine todos los hosts con acceso denegado, si un host no f igura en la lista, tiene acceso permitido. Si existen los 2 archiv os, hosts.allow tiene precedencia.
Xinetd Xinetd es el sucesor tanto de inetd como de los wrappers tcp, y a que incorpora las f unciones de f iltrado de los wrappers. Se conf igura a trav és de el archiv o /etc/xinetd.conf. Este contiene las opciones globales por def ecto y una directiv a para incluir los archiv os dentro de el directorio /etc/xinetd.d. Cada serv icio que corre por medio de xinted instala un archiv o dentro de xinetd.d con sus propias opciones de conf iguración. El f ormato es distinto al inetd.conf, pero las opciones son similares, agrega un opción disable, para habilitar y deshabilitar el serv icio.
Bloquear el acceso a usuarios con /etc/nologin En el caso de que se necesite realizar tareas de mantenimiento durante las cuales sea necesario restringir el acceso a usuarios que no sean root. Lo que se puede hacer es crear un archiv o, llamado 281
/etc/nologin; el cual con su sola presencia, le indica a Linux que solo los usuarios normales no pueden iniciar sesión en el sistema. Si se ingresa algún texto en ese archiv o, los usuarios que intenten iniciar sesión, recibirán el mensaje ingresado en el /etc/nologin.
Desactivar los servicios que no estén en uso Es importante tener controlado la cantidad de serv icios que tengo ejecutándose en el sistema. Una manera de rev isar esto, es inspeccionar los directorios que contienen rutinas de inicio. Dependiendo si se trabaja con SysV, Upstart o . Estos directorios v ariaran.
282
283
Técnicas de encriptado Conceptos Claves Conf iguración básica del cliente SSH 2 Comprender el rol de OpenSSH Conf iguración y uso de GnuPG Comprender el f unción de los túneles SSH (Incluy endo túneles X11)
Términos y utilidades ssh ssh-keygen ssh-agent ssh-add ~/.ssh/id_rsa id_rsa.pub ~/.ssh/id_dsa id_dsa.pub /etc/ssh/ssh_host_rsa_key ssh_host_rsa_key.pub /etc/ssh/ssh_host_dsa_key ssh_host_dsa_key.pub ~/.ssh/authorized_keys /etc/ssh_known_hosts gpg ~/.gnupg/*
Criptografía con clave publica Una clav e es un archiv o que contiene una clav e utilizada para cif rar y descif rar inf ormación. Si se usa un esquema de clav e publica/clav e priv ada, hay dos tipos de clav es a tener en cuenta. clave publica: se guarda en un serv idor publico y se utiliza para encriptar. clave privada: se guarda secretamente, y es usada para decriptar cualquier mensaje encriptado con la clav e publica. Las clav es priv adas también se usan para f irmar mensajes digitalmente.
OpenSSH OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones encriptadas a trav és de una red, usando el protocolo SSH. Es un desarrollo de sof tware libre realizado por el proy ecto OpenBSD. La suite OpenSSH reemplaza a Telnet con 284
el programa ssh, a rcp con scp, a f tp con sftp.
Configuración del servidor SSH La misma se realiza editando el archiv o /etc/ssh/sshd_config
Opciones Protocol: Establece que protocolo SSH utilizar, 1 o 2. Lo ideal es soportar solo SSH 2, y a que la v ersión 1 ha demostrado v ulnerabilidades. PermitRootLogin: Esta opción sirv e para determinar si se aceptan inicios de sesión directamente como root. El v alor por def ecto es y es. X11Forwarding: Establece que los túneles para X11 están disponibles.
Claves SSH Un proceso de autenticación basado en contraseñas puede ser v ulnerable a ataques de f uerza bruta. Para mitigar esta v ulnerabilidad, ssh soporta autenticación por clav e publica. ~/.ssh/authorized-keys: guarda las clav es publicas de las maquinas objetiv o. Estas clav es no son inf ormación sensitiv a y pueden ser conocidas por cualquier persona, mientras que las priv adas pueden ser cuidadosamente protegidas. SSH-Agent recuerda la clav e decriptada para que no sea necesario recordarla. Parte de la seguridad de SSH inv olucra clav es de encriptación. Cada serv idor tiene una clav e única para identif icarse. SSH usa un sistema que inv olucra dos clav es, una publica y una priv ada. Las cuales están matemáticamente v inculadas de una manera que los datos encriptados con la clav e publica, solo pueden ser desencriptados con la clav e priv ada. Cuando se establece una conexión, cada parte le env ía su clav e publica a la otra. Después de eso, cada parte encripta los datos con la clav e publica de la otra parte. Los clientes SSH típicamente conserv an las clav es públicas de los serv idores que han contactado. Esto los habilita a reconocer cambios, los cuales pueden ser un indicio de alguna manipulación del serv idor. La may oría de los scripts de inicio de los serv idores SSH contienen código que busca clav es publicas y priv adas que estén 285
almacenadas, si no las encuentra, genera clav es nuev as. En total, entre 4 y 6 clav es son necesarias: clav es publicas y priv adas para 2 o 3 herramientas que encriptado que soporta SSH. Estas clav es generalmente se almacenan dentro de /etc/ssh y se llaman ssh_host_rsa_key y ssh_host_dsa_key para las clav es priv adas y el mismo nombre pero con la extensión .pub para las publicas. Algunos sistemas agregan ssh_host_rsa1_key y su respectiv a clav e publica. En el caso que no se tengan estas clav es, se pueden generar con el comando ssh-keygen. # ssh-keygen -q -t rsa1 -f /etc/ssh/ssh_host_rsa1_key -C '' -N '' # ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C '' N '' # ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' N '' Cuando se conf igura un sistema cliente, es una buena idea crear un cache global de clav es. Si bien cada usuario guarda las clav es conocidas dentro ~/.ssh/known_hosts, es bueno mantener el cache global. Para eso hay que popular el archiv o ssh_known_hosts que suele guardarse dentro de /etc o de /etc/ssh/
Ejercicio 1. 2.
Iniciar sesión en la maquina cliente Ejecutar el siguiente comando para generar una nuev a clav e SSH:
ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -C '' -N '' 3.
4. 5.
El paso anterior genera 2 archiv os, id_rsa y id_rsa.pub. Hay que transf erir el segundo al serv idor SSH, copiar el archiv o bajo un nombre temporal, como temp.rsa. Iniciar sesión en el serv idor SSH Agregar el contenido del archiv o que acabamos de transf erir al f inal del archiv o ~/.ssh/authorized_keys o ~/.ssh/authorized_keys2 .
Agente SSH (ssh_agent) El agente SSH nos permite gestionar nuestras conexiones SSH de una manera mas ef iciente. Este recuerda, mientras dure la sesión, todas las clav es priv adas del usuario, por lo que solo deberemos ingresar la contraseña una v ez.
286
Túneles SSH Los túneles SSH permiten que protocolos de red que no soportan encriptación, se monten encima de una conexión SSH para encriptar sus datos.
GPG GPG nos permite encriptar correos electrónicos. GPG GnuPG es una implementación de código abierto del sof tware propietario PGP (Pretty Good Privacy). GnuPG no solo permite encriptar mensajes, sino que también permite f irmar digitalmente estos mensajes. Para generar clav es, hay que ejecutar el comando gpg --gen-key gpg --export
[email protected] > gpg.pub
GPG Keyring El repositorio de clav es publicas de llama keyring y almacena todas las clav es priv adas y publicas que tengamos. Para agregar una clav e publica usamos el siguiente comando: gpg --import archivo.asc Para v er las clav es que tenemos en el key ring, podemos usar el comando: gpg --list-keys
287