Manual de Implementacion de Beakos GNU2
description
Transcript of Manual de Implementacion de Beakos GNU2
Manual de Implementacio n de Beakos GNU/Linux Versio n 2 03/03/2011
Fondo de Información y documentación para la Industria Infotec
Autor: Francisco Sosa Romero
Beakos GNU/Linux: Manual de Implementación de Beakos GNU/Linux 1.0
Este manual de implementación documenta toda la información relacionada a la configuración y administración de Beakos GNU/Linux en ambientes de producción.
Fondo de Información y
Documentación para la Industria
Av. San Fernando #37
Col. Toriello Guerra Del. Tlalpan
México D. F.
Colaboradores
Francisco Sosa Romero
Jesús Arriola Villarreal
Antonio Moreno Herrera
Carlos Torres Arcega
Ángel Ruiz Rosas
Información sobre los derechos reservados relacionados a esta publicación.
Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0
Usted es libre de:
Copiar, distribuir y comunicar públicamente la obra. Hacer obras derivadas.
Bajo las condiciones siguientes:
Reconocimiento — Debe reconocer y citar al autor original de esta obra. No comercial — No puede utilizar esta obra para fines comerciales. Compartir bajo la misma licencia — Si altera o transforma esta obra, o genera una
obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta.
Tabla de contenido
Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 .................................. 4
Usted es libre de:............................................................................................................... 4
Bajo las condiciones siguientes: ........................................................................................ 4
Introducción .......................................................................................... 15
Convenciones para este documento ....................................................................................... 15
Capítulo 1 Instalación de Beakos GNU/Linux ......................................... 17
Instalación guiada de Beakos GNU/Linux ............................................................................... 17
1.2 Instalación personalizada .................................................................................................. 25
1.3 Arranque del sistema operativo Beakos GNU/Linux ......................................................... 39
1.3.1 Cargador de inicialización GRUB ................................................................................ 39
1.3.2 Proceso INIT ............................................................................................................... 40
1.3.3 Secuencia de arranque en Beakos GNU/Linux ........................................................... 40
Capítulo 2 Configuración de la red ......................................................... 41
2.1 Archivos de configuración de la red .................................................................................. 41
2.2 Asistente de la configuración de la red ............................................................................. 42
2.2.1 Asignación de dirección IP estática ............................................................................ 43
2.2.2 Asignación de la dirección IP a través de DHCP ......................................................... 46
2.2.3 Parámetros de DNS ................................................................................................... 47
2.2.4 Configuración del nombre del sistema ...................................................................... 49
2.3 Administración de hosts .................................................................................................... 50
Capítulo 3 Control de servicios de Beakos GNU/Linux ........................... 51
3.1 Niveles de ejecución .......................................................................................................... 51
3.2 Administración de servicios con chkconfig ....................................................................... 53
3.3 Administración de servicios a través de Webmin ............................................................. 54
Capítulo 4 Línea de comandos ............................................................... 57
4.1 Intérprete de comandos BASH ......................................................................................... 57
4.1.1 Control de tareas ........................................................................................................ 60
4.1.2 Variables de entorno .................................................................................................. 60
4.1.3 Redirección ................................................................................................................. 61
4.1.4 Páginas del manual ..................................................................................................... 62
4.1.5 Textinfo ...................................................................................................................... 62
4.1.7 Listar archivos ............................................................................................................. 62
4.2 Manipulación de archivos y directorios ............................................................................ 64
4.2.1 Tipos de ficheros y directorios ................................................................................... 64
4.2.3 Archivos, propiedades y permisos ............................................................................. 64
4.2.2 Cambio de un usuario a un archivo o directorio ........................................................ 65
4.2.3 Copiar archivos ........................................................................................................... 66
4.2.4 Mover archivos directorios ....................................................................................... 66
4.2.5 Crear enlaces simbólicos ............................................................................................ 67
4.2.6 Buscar archivos y directorios...................................................................................... 67
4.2.7 Compresión de archivos y directorios con GZIP y BZIP2 ............................................ 68
4.2.8 Crear y eliminar directorios ....................................................................................... 68
4.2.9 Concatenar archivos ................................................................................................... 69
4.2.10 Uso de espacio en disco ........................................................................................... 69
4.2.11 Localizar comandos .................................................................................................. 70
4.3 Edición de textos ............................................................................................................... 70
4.4 Lectura de archivos ........................................................................................................... 71
4.5 Utilerías del sistema .......................................................................................................... 71
4.5.1 Mostrar el directorio de ubicación actual .................................................................. 71
4.5.2 Espacio libre del disco ................................................................................................ 71
4.5.3 Mostrar un archivo mientras crece ............................................................................ 72
4.5.4 Sincronización de archivos y copias de respaldo con RSYNC ..................................... 72
4.5.5 Listar procesos ............................................................................................................ 73
4.5.6 Matar procesos .......................................................................................................... 73
Capítulo 5 Administración de usuarios y grupos .................................... 74
5.1 ¿Qué constituye a un usuario? .......................................................................................... 74
5.2 El archivo /etc/passwd ...................................................................................................... 74
5.2.1 Campo del nombre de usuario ................................................................................... 74
5.2.2 Campo de la contraseña ............................................................................................. 75
5.2.3 Campo del ID del usuario (UID) .................................................................................. 75
5.2.4 Campo de la ID del grupo (GID) .................................................................................. 75
5.2.5 Campo del nombre completo .................................................................................... 75
5.2.6 Campo del directorio .................................................................................................. 75
5.2.7 Campo del intérprete de comandos .......................................................................... 75
5.4 El archivo /etc/shadow ..................................................................................................... 76
5.4.1 Políticas de expiración de contraseñas ...................................................................... 76
5.5 El archivo /etc/group ......................................................................................................... 77
5.6 Administrando usuarios .................................................................................................... 78
4.6.1 Agregar usuarios......................................................................................................... 78
5.6.2 Borrar usuarios ........................................................................................................... 79
5.6.3 Modificar usuarios ...................................................................................................... 79
5.6.4 Agregar grupos .......................................................................................................... 79
5.6.5 Borrar grupos ............................................................................................................. 79
5.6.6 Modificar grupos ........................................................................................................ 79
5.7 Administración de usuarios a través de Webmin ............................................................ 80
5.8 Usuarios y permisos de acceso ......................................................................................... 80
4.9 Comprensión de SetUID, SetGID y Sticky bit ..................................................................... 80
5.10 Listas de accesos (ACL) .................................................................................................... 82
5.10.1 Activación del uso de listas de acceso sobre sistemas de archivos. ........................ 82
5.10.2 Implementación de listas de acceso en archivos y directorios. ............................... 83
5.11 Configuración y administración de cuotas ...................................................................... 85
5.11.1 Activación del uso de cuotas sobre sistemas de archivos. ....................................... 85
5.11.2 Administración de cuotas de disco. ......................................................................... 86
Capítulo 6 Planificación de tareas con Cron ........................................... 88
6.1 Configuración de una tarea con cron ............................................................................ 88
6.2 Control de acceso a cron ............................................................................................... 91
6.3 Administración de tareas planificadas a través de Webmin ......................................... 91
6.3.1 Editar una tarea programada ..................................................................................... 92
6.3.2 Control de acceso de los usuarios a cron ................................................................... 92
Capítulo 7 Administración de sistemas de archivos ............................... 93
7.1 Administración de particiones .......................................................................................... 93
7.1.2 ext3 y ReiserFS ........................................................................................................... 93
7.1.3 Creación de una partición .......................................................................................... 93
7.2 Utilización de etiquetas en sistemas de archivos.............................................................. 97
7.3 Montando y desmontando sistemas de archivos ............................................................. 98
7.4 Puntos de montaje y el archivo /etc/fstab ........................................................................ 99
7.5 Software RAID ................................................................................................................. 100
7.5.1 Niveles de RAID más comunes ................................................................................. 100
7.5.1 Configuración de software RAID .............................................................................. 101
7.5.2 Pruebas y recuperación ............................................................................................ 103
7.6 Administración de volúmenes lógicos ............................................................................. 104
7.6.1 Creación de Grupos de volúmenes y volúmenes lógicos ........................................ 106
7.6.2 Redimensionando volúmenes lógicos ...................................................................... 109
7.7 Crear un área de intercambio (SWAP) utilizando un archivo ......................................... 110
Capítulo 8 Configuración del firewall de Beakos GNU/Linux ................ 112
9.1 Netfilter ........................................................................................................................... 112
8.2 Funcionamiento de IPtables ............................................................................................ 112
8.3 Manejo de IPtables .......................................................................................................... 114
8.4 Opciones de comandos de IPtables ................................................................................ 116
8.4.1 Destinos de las reglas (target) .................................................................................. 118
8.4.2 Especificaciones de las reglas ................................................................................... 118
8.4.3 Seguimiento de conexiones ..................................................................................... 119
8.4.4 Persistencia de las reglas .......................................................................................... 120
8.5 Network Address Translation (NAT) ................................................................................ 121
8.5.1 Compartir Internet en una red LAN ......................................................................... 124
8.5.2 Configuración de un firewall simple ......................................................................... 125
8.6 Configuración del firewall con Webmin .......................................................................... 127
Capítulo 9 Sistema de archivos /proc ................................................... 129
10.1 Archivos dentro del directorio /proc ............................................................................. 129
9.1.1 buddyinfo ................................................................................................................. 130
9.1.2 cmdiline .................................................................................................................... 130
9.1.3 cpuinfo ...................................................................................................................... 130
9.1.4 crypto ....................................................................................................................... 131
9.1.5 devices ...................................................................................................................... 131
9.1.6 dma ........................................................................................................................... 132
9.1.7 filesystems ................................................................................................................ 132
9.1.8 interrupts .................................................................................................................. 132
9.1.9 loadavg ..................................................................................................................... 133
9.1.10 meminfo ................................................................................................................. 133
9.1.11 modules .................................................................................................................. 134
9.1.12 mounts ................................................................................................................... 134
9.1.13 partitions ................................................................................................................ 135
9.1.14 stat .......................................................................................................................... 135
9.1.15 swaps ...................................................................................................................... 135
9.2 Ajustes dentro de /proc .................................................................................................. 135
9.3 Uso del comando sysctl ................................................................................................... 136
Capítulo 10 Gestión de paquetes ......................................................... 138
11.1 Instalación y desinstalación de paquetes ...................................................................... 138
10.1.1 Comando installpkg ................................................................................................ 138
10.1.2 Comando removepkg ............................................................................................. 138
10.2 Administración de paquetes con SWARET .................................................................... 139
10.2.1 Archivo de configuración swaret.conf ................................................................... 139
10.2.2 Opciones del comando swaret ............................................................................... 141
10.3 Compilación de software desde el código fuente ......................................................... 142
10.3.1 Creación de paquetes con la herramienta Checkinstall ......................................... 144
Capítulo 11 Sistema de logs ............................................................ 145
11.1 El demonio Syslogd ....................................................................................................... 145
11.2 Configuración del demonio syslogd .............................................................................. 145
11.3 Enviar registros a otro sistema remoto ......................................................................... 146
Capítulo 12 Servicios sobre demanda .................................................. 148
12.1 Extended Internet Daemon ........................................................................................... 148
12.2 Instalación del Demonio Xinetd .................................................................................... 148
12.3 Configuración del demonio Xinetd ................................................................................ 148
12.3.1 Variables para servicios de Xinetd ......................................................................... 149
12.3.2 Ejemplos de servicios a través de Xinetd ............................................................... 150
Capítulo 13 Open SSH .......................................................................... 151
13.1 Ventajas de SSH ............................................................................................................. 151
13.2 Versiones de SSH ........................................................................................................... 151
13.3 Configuración del servidor SSH ..................................................................................... 151
13.4 Administración del servidor SSH a través de Webmin .................................................. 152
13.5 Cliente SSH .................................................................................................................... 154
13.5.1 Comando ssh .......................................................................................................... 154
13.5.2 Comando scp .......................................................................................................... 155
13.5.3 Comando sftp ......................................................................................................... 156
13.5.4 Clientes con interfaz grafica para SSH .................................................................... 156
Capítulo 14 Servicios de impresión ...................................................... 158
14.1 Sistema de impresión cups ............................................................................................ 158
14.1.1 Características ........................................................................................................ 158
14.2 Funcionamiento ............................................................................................................ 158
14.3 Planificador.................................................................................................................... 159
14.4 Instalación de CUPS ....................................................................................................... 159
14.4.1 Archivos de Trabajo ................................................................................................ 160
14.4.2 Archivos de registro ............................................................................................... 160
14.5 Comandos Berkeley ....................................................................................................... 161
14.5.1 El comando LPC ...................................................................................................... 161
14.5.2 El comando LPQ ..................................................................................................... 161
14.5.3 El comando LPR ...................................................................................................... 162
14.5.4 El comando LPRM ................................................................................................... 162
14.6 Comandos SYSTEM V ..................................................................................................... 163
14.6.1 El comando LP ........................................................................................................ 163
14.6.2 El comando LPADMIN ............................................................................................ 163
14.7 Comandos CUPS ............................................................................................................ 164
14.7.1 El comando CUPSADDSMB ..................................................................................... 164
14.7.2 El comando LPINFO ................................................................................................ 165
14.8 Configuración de impresoras ........................................................................................ 165
14.8.1 Uso de la interfaz web ............................................................................................ 166
14.8.2 Agregado de impresoras con la interfaz Web ........................................................ 167
14.8.3 Agregar una impresora desde la línea de comandos ............................................. 169
14.8.4 Configuración de la impresora predeterminada .................................................... 170
14.8.5 Privilegios de impresión ......................................................................................... 171
14.8.6 Eliminar impresoras ............................................................................................... 171
Capítulo 15 Network File System (NFS) ................................................ 172
15.1 Historia de NFS .............................................................................................................. 172
15.2 Instalación de NFS ......................................................................................................... 172
15.3 Acceso y montaje de las particiones ............................................................................. 173
15.4 Configuración del servidor NFS ..................................................................................... 173
15.4.1 El archivo de configuración /etc/exports ............................................................... 174
15.4.2 Comando exportfs .................................................................................................. 174
15.4.3 Comando showmount ............................................................................................ 175
15.5 Configuración del cliente NFS ....................................................................................... 175
Capítulo 16 SAMBA (CIFS) .................................................................... 178
16.1 Características ............................................................................................................... 178
16.1.2 Lo que puede y no puede hacer Samba ................................................................. 179
16.2 Demonios de Samba...................................................................................................... 179
16.3 Nombres de usuarios y contraseñas ............................................................................. 179
16.3.1 Motores de usuarios y contraseñas ....................................................................... 180
16.4 Instalación de Samba .................................................................................................... 180
16.5 Configuración de Samba ............................................................................................... 181
16.5.1 Configuración del grupo de trabajo ....................................................................... 181
16.5.2 Seguridad a nivel de usuarios ................................................................................. 181
16.5.3 Seguridad a nivel de red ......................................................................................... 182
16.5.4 Compartir impresoras en un entorno de red de Windows .................................... 182
16.5.5 Compartir archivos en un entorno de red de Windows ........................................ 183
16.6 Samba como controlador de dominio primario usando tdbsam. ................................. 185
16.7 Uso de samba para autenticar contra un servidor Windows........................................ 187
16.7.1 El demonio Winbind ............................................................................................... 187
16.7.2 Integración al active directory ............................................................................... 187
16.8 SWAT (Samba Web Administration Tool) ..................................................................... 192
16.8.1 Menús de SWAT ..................................................................................................... 193
16.9 El comando SMBCLIENT ................................................................................................ 194
16.9.1 Explorar un servidor ............................................................................................... 194
16.9.2 Acceder a un archivo remoto ................................................................................. 195
16.10 Montaje de un recurso compartido de Samba ........................................................... 196
Capítulo 17 LDAP ................................................................................. 198
17.2 Conceptos básicos de LDAP ........................................................................................... 198
17.2.1 Jerarquía de LDAP .................................................................................................. 198
17.2.2 Funcionamiento de LDAP ....................................................................................... 199
17.2.3 Implementaciones de LDAP ................................................................................... 199
17.2.4 Términos empleados en LDAP ............................................................................... 200
17.3 Open LDAP..................................................................................................................... 201
17.3.1 Los demonios Slapd y Slurpd. ................................................................................. 201
17.3.2 Utilidades del Cliente de OpenLDAP ...................................................................... 201
17.4 Instalación de OpenLDAP .............................................................................................. 202
17.5 Configuración de OpenLDAP ......................................................................................... 202
17.5.1 El archivo de configuración slapd.conf................................................................... 202
17.5.3 Administración del servicio de OpenLDAP ............................................................. 204
17.5.4 Configuración del cliente de OpenLDAP ................................................................ 205
17.6 Creación de objetos en OpenLDAP ........................................................................... 205
17.6.1 Consultas en un directorio LDAP ............................................................................ 206
17.7 Implementación de una libreta de direcciones en un directorio LDAP ........................ 207
17.7.1 Agregar los esquemas. ........................................................................................... 208
17.7.2 Instalación de PHPLDAPADMIN.............................................................................. 208
17.7.3 Creación de Objetos con PHPLDAPADMIN ............................................................ 210
17.7.4 Configuración del cliente de Correo ....................................................................... 211
Capítulo 18 DHCP ................................................................................ 214
18.1 Funcionamiento del servicio de DHCP .......................................................................... 214
18.2 Instalación del servidor DHCP ....................................................................................... 214
18.2.1 Administración del Servicio de DHCP ..................................................................... 215
18.3 Configuración del servidor DHCP .................................................................................. 215
18.3.1 Declaraciones ......................................................................................................... 216
18.3.2 Parámetros ............................................................................................................. 217
18.3.3 Opciones ................................................................................................................. 218
18.4 Ejemplo de un archivo de configuración ................................................................... 218
Capítulo 19 Copias de seguridad .......................................................... 220
19.1 Amanda ......................................................................................................................... 220
19.2 Instalación de Amanda .................................................................................................. 220
19.3 Configuración de un servidor amanda .......................................................................... 221
19.3.1 Modificar Amanda Daemons para usar auth bsdtcp ............................................. 221
19.3.2 Configuración del respaldo .................................................................................... 222
19.3.3 Configuración de Cintas Virtuales .......................................................................... 224
19.3.4 Definición de las rutas de respaldos ...................................................................... 225
19.4 Configuración del Cliente .............................................................................................. 226
19.4.1 Solo para otras distribuciones ................................................................................ 227
Capítulo 20 Berkeley Internet Name Domain (BIND) ........................... 233
20.1 Historia del DNS ............................................................................................................ 233
20.2 La tabla de hosts ............................................................................................................ 233
20.3 Dominios y conceptos sobre los nombres de hosts .................................................. 234
20.3.1 Dominio raíz ........................................................................................................... 234
20.3.2 Dominios de primer nivel ....................................................................................... 235
20.3.3 Dominios de segundo nivel .................................................................................... 235
20.3.4 Dominios de tercer nivel ....................................................................................... 235
20.3.5 El dominio in-addr.arpa .......................................................................................... 236
20.4 Tipos de servidores de DNS ........................................................................................... 236
20.4.1 Servidores DNS primarios ....................................................................................... 236
20.4.2 Servidores DNS secundarios ................................................................................... 237
20.4.3 Servidores DNS de caché ........................................................................................ 237
20.5 Instalación de un servidor DNS .................................................................................... 237
20.6 Archivo de configuración de named.conf ..................................................................... 237
20.6.1 Comentarios ........................................................................................................... 238
20.6.2 Palabras reservadas para los enunciados .............................................................. 238
20.6.3 El enunciado include .............................................................................................. 238
20.6.4 Enunciado logging .................................................................................................. 239
20.6.5 Enunciado server .................................................................................................... 239
20.6.6 Zonas ...................................................................................................................... 239
20.6.7 Enunciado Key ........................................................................................................ 240
20.7 Configuración de BIND .................................................................................................. 240
20.7.1 Definición de una zona primaria ............................................................................ 240
20.7.2 Definición de una zona secundaria ........................................................................ 242
20.7.3 Definición de una zona de caché ............................................................................ 242
20.8 Tipos de registros DNS .................................................................................................. 243
20.8.1 Inicio de autoridad (SOA) ...................................................................................... 243
20.8.2 Servidor de nombres (NS) ...................................................................................... 244
20.8.3 Registro de dirección (A) ....................................................................................... 244
20.8.4 Registro apuntador (PTR) ....................................................................................... 244
20.8.5 Intercambio de correo (MX) ................................................................................... 245
20.8.6 Nombre canónico (CNAME) ................................................................................... 245
20.8.7 Registros de documentación RP y TXT ................................................................... 245
20.9 Configuración de un servidor DNS completo ................................................................ 246
20.9.1 Configuración de la zona en el servidor primario .................................................. 246
20.9.2 Configuración de la zona en el servidor secundario .............................................. 247
20.9.3 Configuración de la zona inversa en el servidor primario ...................................... 247
20.10 Consultas a servidores DNS ......................................................................................... 248
20.10.1 Comando host ...................................................................................................... 248
20.10.2 El comando dig ..................................................................................................... 248
Capítulo 21 File Tranfer Protocol (FTP) ................................................ 250
21.1 Funcionamiento de FTP ................................................................................................. 250
21.1.1 Accesos a un servidor FTP ...................................................................................... 250
21.1.2 FTP activo ............................................................................................................... 250
21.1.3 FTP pasivo ............................................................................................................... 251
21.2 Instalación de VSFTPD ................................................................................................... 251
21.3 Configuración de VSFTPD .............................................................................................. 251
21.3.1 El archivo vsftpd.conf ............................................................................................. 251
20.3.2 Ejemplo de un archivo de configuración vsftpd.conf ............................................. 253
Referencias ......................................................................................... 254
Libros ..................................................................................................................................... 254
Manuales y tutoriales en línea .............................................................................................. 254
Información general .............................................................................................................. 255
Índice .......................................................... ¡Error! Marcador no definido.
Introduccio n
Bienvenido al manual de implementación de Beakos GNU/Linux, este documento contiene
información sobre la instalación, personalización y tareas de mantenimiento de su sistema
Beakos GNU/Linux.
El proyecto de la distribución Beakos GNU/Linux, nace de analizar la tendencia de otras
distribuciones de GNU/Linux que en su intento de acercarse más al usuario final, incluyen
soporte para una gran cantidad de hardware y módulos de Kernel innecesarios, lo que eleva el
consumo del CPU y memoria RAM de manera considerable.
Beakos GNU/Linux es un sistema de desarrollo de software libre impulsado por Infotec para
desempeñarse en ambientes de producción.
El software libre se refiere directamente a la Libertad que el usuario tiene de emplear y
modificar el software a sus necesidades, no tiene nada que ver con el precio. El equipo de
desarrollo de Beakos GNU/Linux espera que esta distribución le sea de utilidad y lo invita a
participar de forma activa con la misma.
Convenciones para este documento Este manual de Beakos GNU/Linux contiene palabras que varían en tamaño y tipo de letra para
diferenciar su inclusión en una categoría específica, ejemplos de palabras con este tipo de
características son:
comandos
Cuando encuentre texto con este tipo de estilo (Courier New negrita 11)significa que deberá
teclear tal cual el comando directamente en la consola.
Ejemplo:
Introduzca el comando cat archivo para leer su contenido
nombres de archivos
Los nombres de archivos, rutas específicas, directorios, enlaces simbólicos utilizarán el mismo
estilo sin negrita, esto significa que los archivos o directorios mencionados existen con el
mismo nombre en el sistema operativo.
Ejemplo:
El archivo /etc/fstab contiene datos sobre los puntos de montaje de los sistemas de
archivos.
Aplicaciones
Cuando se haga mención de una aplicación de un usuario se utilizará este estilo (Calibri 11,
negrita).
Ejemplo:
Puede acceder a la interfaz de administración Webmin a través un navegador web como
firefox.
El intérprete de comandos se mostrara bajo la siguiente forma (Courier New 11), sombreado
en gris
root [ ~ ]#
De forma adicional se utilizan algunas imágenes para resaltar información importante.
Nota Tenga en cuenta que Beakos es sensible a
letras mayúsculas por lo que escribir network no es
lo mismo que Network
Sugerencia No olvides de usar el usuario root lo
menos posible, crea un usuario habilitado para usar
el comando sudo.
Capí tulo 1 Instalacio n de Beakos GNU/Linux
Instalación guiada de Beakos GNU/Linux La instalación guiada permite a los usuarios con pocos conocimientos instalar Beakos
GNU/Linux de una manera fácil, este método creará tres particiones:
/boot para alojar la imagen del Kernel y archivos de configuración para el arranque del
sistema operativo, tendrá un tamaño 130 Mb.
/ donde residirán todos los directorios del sistema, utilizará todo el espacio restante del
disco duro.
swap área de intercambio, tendrá el doble de tamaño que la memoria RAM de el
ordenador donde será instalado.
Pasos para llevar a cabo una instalación de Beakos.
Insertar el disco en la unidad DVD/ROM que contiene la imagen de Beakos GNU/Linux e
iniciar el equipo en modalidad de arranque desde unidad de CD-ROM/DVD-ROM. La
imagen ISO se puede obtener de la página oficial del proyecto Beakos
www.beakos.com.mx
Seleccionar la opción “Instalar Beakos GNU/Linux”.
Ingresar el nombre del login “root” y password “toor” que se indica en el submenú del
instalador de Beakos.
Teclear en el prompt la palabra “setup” para inicializar el instalador.
Seleccionar el botón “EXIT” y presionar la tecla “enter” una vez que haya terminado de
leer la licencia GPL.
Seleccionar la modalidad de instalación “AUTOMÁTICA”.
Elegir el disco duro donde se llevará a cabo la instalación.
Una vez seleccionada la unidad correcta para continuar con la instalación automática, el
instalador procederá a definir el particionamiento adecuado.
Confirmar que desea continuar con la instalación.
Seleccionar la opción ―Yes‖ para proceder con la instalación de GRUB.
Elegir la opción ―No‖ deseo crear un Floppy de GRUB.
Ingresar el password que será asignado al super usuario “root” de 6 caracteres como
mínimo, posteriormente confirmar dicha contraseña ingresada.
Capturada correctamente la contraseña que será establecida para el usuario “root”,
seleccionar ―OK‖ para proceder en reiniciar el equipo y finalizar la instalación de Beakos
GNU/Linux.
1.2 Instalación personalizada Dentro de este apartado se mencionaran los pasos a seguir para realizar una correcta instalación de sistema operativo dentro de la modalidad manual.
Insertar el disco que contiene la imagen (ISO) de BeakOS GNU/Linux e iniciar el equipo en modalidad de arranque desde unidad de CD-ROM/DVD-ROM. la imagen se puede obtener del sitio oficial del proyecto Beakos www.beakos.com.mx.
Seleccionar “Instalar Beakos GNU/Linux”.
Ingresar el nombre del login “root” y password “toor” que se indica en el submenú
del instalador de Beakos.
Teclear en el prompt la palabra “setup” para inicializar el instalador.
Presionar “enter” y salir una vez que haya terminado de leer la licencia.
Seleccionar la modalidad de instalación ―MANUAL‖.
Teclear “enter” al aviso que se muestra previo a la creación del esquema de
particionamiento.
Una vez posicionados en la siguiente ventana, seleccionar la opción ―PARTICIONAR‖
para personalizar nuestro esquema de particionamiento.
Elegir el disco duro donde se llevará a cabo la instalación.
Seleccionada la unidad correcta para continuar con la instalación personalizada, el
instalador pasara al menú de opciones previo a la creación del esquema de
particionamiento.
Para crear las particiones que necesitamos utilicemos la herramienta fdisk (véase el tema
7.1 Administración de particiones), necesitamos crear mínimamente las siguientes
particiones.
/ (raiz) que almacenará todos los archivos necesarios para el funcionamiento de beakos. Su tamaño mínimo debe ser de 4GB.
swap área de intercambio, su tamaño debe ser del doble de la memoria RAM, si es un servidor de más de 4 GB de RAM lo conveniente es que su tamaño no exceda los 4 GB.
Concluida la creación de las particiones necesarias para poder instalar Beakos,
procedemos a configurar la partición SWAP.
El instalador detectará automáticamente la partición SWAP creada previamente con la
herramienta fdisk, seleccionemos la opción ―Yes‖ para utilizar esa partición.
Si ya hemos activado alguna partición SWAP lo adecuado es reiniciar el sistema para no
corromper la memoria de las páginas que se encuentren actualmente, si está seguro de
que no hay particiones SWAP activas. Seleccionemos la opción ―OK‖.
El instalador de Beakos dará formato a las particiones SWAP, seleccione la opción ―Yes‖
para continuar.
Una vez que la partición tenga formato adecuado para actuar como área de intercambio el
instalador nos mostrará el guión que tendrá en el archivo /etc/fstab. Seleccionamos
―EXIT‖ para continuar.
Cuando se ha añadido la partición SWAP al archivo /etc/fstab seleccionamos la opción
―Yes‖ para configurar la tabla de particiones.
El instalador de Beakos nos mostrará las particiones disponibles creadas con fdisk,
seleccionaremos en primera instancia la destinada a / (raiz) y seleccionamos ―OK‖, si
creaste mas particiones de Linux puedes utilizarlas para fijar mas puntos de montaje.
Selecciona la partición donde se instalará el sistema.
Como la partición no ha sido formateada seleccionemos la opción ―Format‖, se le
asignará el sistema de archivos ext3.
Seleccionar la densidad del los inodos, por defecto el instalador selecciona el valor de 4096
bytes si desea conservar ese valor seleccione ―OK‖.
Una vez formateada nos indicará la partición que ya ha sido habilitada y el punto de
montaje asignado. Si estamos conformes seleccionamos ―Cancel‖ para continuar.
Ahora se mostrará como ha sido configurado el archivo /etc/fstab previo a la
instalación de Beakos. Selecciona ―EXIT‖ para ir al confirmación de la instalación.
Los parámetros han sido configurados a nuestra necesidad, seleccione ―Yes‖ para
concluir la instalación.
Concluida la instalación debemos configurar el gestor de arranque, Beakos utiliza el gestor
de arranque GRUB, este se instala en el primer sector del disco duro.
Beakos puede crear un floppy con información acerca de la configuración de GRUB en
caso de que el gestor se dañe, para fines prácticos seleccionamos la opción ―No‖.
Ingresar contraseña que será asignada al super usuario “root” de 6 caracteres como
mínimo, posteriormente confirmar dicha contraseña ingresada.
Capturada correctamente la contraseña que será establecida para el usuario “root”,
seleccionar ―OK‖ para proceder en reiniciar el equipo y finalizar la instalación de Beakos
GNU/Linux.
1.3 Arranque del sistema operativo Beakos GNU/Linux Es importante conocer la fases de arranque en sistema operativo GNU/Linux. Conforme
evolucionan los sistemas operativos su complejidad va en aumento. En esta sección
analizaremos la inicialización de Beakos con el gestor de arranque GRUB, describiremos los
procesos de arranque y los scripts que automatizan los procesos subsecuentes.
1.3.1 Cargador de inicialización GRUB Todos los sistemas operativos necesitan un gestor de arranque o inicialización incluso los
sistemas operativos de la Familia de Microsoft también utilizan su gestor de arranque, su
principal función es pasarle el control al sistema operativo en cuestión, algunos gestores de
arranque como GRUB, permiten incluso seleccionar con que sistema operativo deseamos
iniciar.
El cargador de arranque se instala por lo general en el primer sector del disco duro llamado
Master Boot Record (MBR), para los ambientes GNU/Linux e incluso para otras variantes de
UNIX, existen dos principales opciones de gestores de arranque GRUB (Grand Unified
Boortloader) y LILO (Linux Loader), sólo hablaremos de GRUB porque es el gestor más común
pues cuenta con muchas más opciones que LILO.
En las distribuciones más modernas de GNU/Linux se utiliza GRUB como es el caso de Red Hat,
SuSE, Mandriva, Ubuntu y por supuesto Beakos.
El proceso de arranque de GRUB consiste en dos etapas, existen dos archivos dentro de
/ boot , que se encargan de cada una de ellas, estos archivos son stage1 y stage2.
Etapa 1: este archivo se encarga del arranque del GRUB y está incrustado en el MBR.
Etapa2: este archivo contiene el código y los parámetros para cargar el núcleo que
inicia el sistema operativo, presenta el menú de inicialización y cuenta además con
una consola para añadir parámetros al gestor de arranque.
El GRUB de Beakos consta de dos entradas:
Beakos: Inicia el sistema operativo en modo de ejecución 3 (ver tema 3.1 Niveles de
ejecución), con todos los servicios por defecto.
Beakos a prueba de fallos: Inicia el sistema operativo en modo monousuario con la
cuenta de root, ideal para realizar tareas de mantenimiento sin usar servicios de red.
1.3.2 Proceso INIT Es el primer proceso ajeno al núcleo que arranca, este proceso lee la información del archivo
/etc/inittab y determina el nivel de ejecución, los valores de ejecución que se verán mas
a detalle en el capítulo3 son los siguientes:
0 Apagar el sistema.
1 Modo monousuario.
2 Modo multiusuario sin servicio de NFS.
3 Modo de operación normal sin interfaz gráfica.
4 Sin aplicación.
5 Modo multiusuario con X Windows.
6 Modo de reinicio.
1.3.3 Secuencia de arranque en Beakos GNU/Linux En resumen la secuencia de arranque consiste en:
Inicialización del BIOS: El BIOS define de que dispositivo desea leer primer información
en este caso leerá el disco duro que contiene la imagen del GRUB.
Cargador de arranque: Una vez que el BIOS cede el control al disco duro este lee la
información del disco duro y carga el gestor de arranque, que presenta un menú para
seleccionar el sistema operativo en cuestión y las opciones con las que arrancará.
Inicialización del Kernel: Seleccionado el sistema operativo el GRUB cede el control al
Kernel que se encargará de detectar el hardware y cargar los drivers necesarios para el
sistema operativo, montar los sistemas de archivos y cargar el proceso init.
Inicio del proceso INIT: Este proceso lee el archivo /etc/inittab y arranca en el
nivel de ejecución definido en este archivo.
Lectura de los los rc Scripts:
/etc/rc.d/rcsysinit.d: esta carpeta contiene scripts indispensables para
arrancar el sistema.
/etc/rc.d/rc[0-6]: contiene enlaces simbólicos al directorio /etc/init.d donde se define
en que niveles de arranque de los servicios.
Capí tulo 2 Configuracio n de la red
2.1 Archivos de configuración de la red En Beakos GNU/Linux podemos localizar los dispositivos de red que nuestro sistema operativo
ha detectado en el directorio /sys/class/net, tecleando el siguiente comando:
root [ ~ ]# ls /sys/class/net/
eth0 eth1 eth2 eth3 lo
podemos observar cuatro interfaces Ethernet y el looback.
La configuración de las interfaces de red reside en el siguiente directorio
/etc/sysconfig/network-devices. Este directorio debe contener un subdirectorio
para cada dispositivo de red a configurar, con la estructura ifconfig.xxx, donde “xxx”
corresponde al nombre de una interfaz de red. Dentro de este directorio se debe crear un
fichero con el nombre de i pv4 y es su contenido la definición de su dirección IP, mascaras de
subred, Gateway, Broadcast etc..,
El siguiente es un ejemplo de la configuración manual que se debe aplicar a Beakos GNU/Linux
Cambiamos de directorio a la ruta donde debe residir el script root [ ~ ]# cd /etc/sysconfig/network-devices
Creamos el directorio correspondiente a la interfaz “eth0” root [ ~ ]# mkdir -v ifconfig.eth0
Creamos el contenido del fichero “ipv4”, para configuración de IP estática. root [ ~ ]# cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
Configuración correspondiente utilizando el cliente de DHCP.
root [ ~ ]# cat > /etc/sysconfig/network-
devices/ifconfig.eth0/dhclient << "EOF"
ONBOOT="yes"
SERVICE="dhclient"
DHCP_START="-q "
DHCP_STOP="-q -r "
PRINTIP="no"
PRINTALL="no"
EOF
Adicionalmente creamos el siguiente fichero en el directorio /etc
root [ ~ ]# cat > /etc/dhclient.conf << "EOF"
# dhclient.conf
interface "eth0"{
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
}
# end dhclient.conf
EOF
2.2 Asistente de la configuración de la red Beakos GNU/Linux cuenta con una herramienta de configuración de red para facilitar la
administración de dispositivos relacionados, configuración de dns, nombres de equipo etc.
Para utilizarla ejecutamos el siguiente comando:
root [ ~ ]# network
Opciones:
NETWORK Muestra interfaces de red configuradas en el sistema.
CONFIG Configura interfaces de red o modifica las interfaces configuradas.
NAME configura el nombre de equipo.
DNS configura los servidores de DNS para nuestro equipo.
SALIR cerrar la herramienta de configuración.
2.2.1 Asignación de dirección IP estática Asignar una dirección IP estática en Beakos se realiza de la siguiente forma:
Seleccionar en el asistente la opción ―CONFIG‖.
Seleccionar la interfaz a configurar.
Seleccionar la opción “Estática‖.
Asignar la dirección correspondiente .
Asignar máscara de subred.
Asignar puerta de enlace (Gateway).
Asignar Broadcast.
Presione “OK‖ para finalizar la configuración.
Aviso Al terminar de configurar una interfaz el
servicio de red se reiniciará, esto puede causar
intermitencia en algunos servicios dependientes de
la red.
2.2.2 Asignación de la dirección IP a través de DHCP Asignar una dirección IP a través del protocolo DHCP en Beakos se realiza de la siguiente
forma:
Seleccionar en el asistente la opción “CONFIG‖.
Seleccionar la interfaz a configurar.
Seleccionar la opción “DHCP‖.
Presionar “OK‖ para completar la configuración
2.2.3 Parámetros de DNS La configuración de los servidores DNS que utilizará Beakos GNU/Linux se realiza de la
siguiente forma:
Seleccionar la opción ―DNS‖ del menú de configuración.
La ventana de configuración nos mostrará los servidores DNS configurados en nuestro equipo
seleccionamos la opción “Yes‖ en caso de editar los servidores DNS.
Ingresamos la dirección IP del servidor DNS primario.
Ingresamos la dirección del servidor DNS secundario.
Seleccionamos la opción OK para completar la configuración.
En caso de requerir agregar o modificar un servidor DNS de forma directa en el archivo
/etc/resolv.conf podemos utilizar el editor de textos vim agregando la línea siguiente:
nameserver <nombre_servidor_dns o dirección_IP>
2.2.4 Configuración del nombre del sistema La configuración del nombre del sistema se realiza de la siguiente forma:
Seleccionamos la opción ―NAME‖ del menú de configuración.
Nos mostrará el nombre actual del equipo seleccionamos la opción ―Yes‖ para realizar el
cambio.
Ingresamos el nombre de equipo en el campo de captura y seleccionamos la opción ―OK‖ para
concluir la configuración.
En caso de requerir la modificación del nombre de equipo forma directa en el archivo
/etc/sysconfig/network podemos utilizar el editor de textos vim agregando la línea
siguiente:
HOSTNAME=<nombre_equipo>
Posteriormente procedemos a reiniciar la red local con el siguiente comando para aplicar los
cambios anteriores.
root [ ~ ]# /etc/init.d/localnet restart
2.3 Administración de hosts El archivo principal para la configuración de hosts es /etc/hosts, su función es resolver los
nombre de equipo y nombre de dominio que no pueden ser resueltos por un servidor DNS.
Ejemplo:
127.0.0.1 localhost
200.38.189.20 www.beakos.org.mx beakos
207.248.177.128 www.infotec.com.mx
Capí tulo 3 Control de servicios de Beakos GNU/Linux
3.1 Niveles de ejecución El proceso de arranque se basa en la ejecución de diversas fases o etapas que consisten en la
búsqueda del sector de arranque (MBR), cargar el kernel para después iniciar los servicios. En
los sistemas GNU/Linux existen definidos siete niveles de ejecución o “runlevels” sobre los que
puede trabajar el sistema operativo, el sistema SysV Init controla que aplicaciones de tipo init
ejecuta o detiene cuando se inicia un nivel de ejecución determinado, los archivos de
configuración se encuentran en /etc/rc.d y dentro de este directorio encontramos los
subdirectorios: init.d/, rcsysinit.d/, rc0.d/, rc1.d/, rc2.d/,
rc3.d/, rc4.d/, rc5.d/, rc6.d/, y el script rc.iptables. Beakos 1.03 define por
default el Nivel 3, declarado en el script /etc/inittab: “id:3:initdefault: ”
/etc
rc.d/
rc.0/
rc.1/
rc.2/
rc.3/
rc.4/
rc.5/
rc.6/
init.d/
rcsysinit.d
rc.iptables
inittab/
Nivel de ejecución
por defecto
Descripción de los siete niveles de ejecución manejados en Beakos GNU/Linux:
Nivel 6
rc.6/ Nivel de ejecución que reinicia el sistema.
Nivel 5
rc.5/ Nivel de ejecución Multiusuario con interfaz gráfica X window.
Nivel 4
rc.4/ No usado
Nivel 3
rc.3/ Nivel de ejecución multiusuario con soporte para servicios de red.
Nivel 2
rc.2/ Nivel de ejecución multiusuario, sin soporte para sevicios de red.
Nivel 1
rc.1/ Nivel de ejecución monousuario, inicia como usuario root, sin soporte para red. Permite realizar pruebas, reparar problemas o dar mantenimiento al sistema.
Nivel 0
rc.0/ Nivel de ejecución conocido como halt, detiene todos los procesos activos en el sistema, para efectuar el apagado del equipo.
3.2 Administración de servicios con chkconfig El comando chkconfig permite realizar actualizaciones y consultas de los parámetros de los
niveles de arranque del sistema operativo, así como controlar la ejecución de servicios entre
reinicios del equipo. Este comando se encarga de administrar los scripts alojados en el
directorio /etc/rc.d
La sintaxis de las diferentes opciones es la siguiente:
--list
Muestra una lista de los servicios que están iniciados o apagados (on/off) en el sistema. Sintaxis:
chkconfig --list [nombre del servicio]
Ejemplo: root [ ~ ]# chkconfig --list
iptables 0:off 1:off 2:on 3:on 4:on 5:on
6:off
postfix 0:off 1:off 2:off 3:on 4:on 5:on
6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on
6:off
--add Esta opción añade un nuevo servicio para ser administrado por chkconfig. Cuando un nuevo servicio es agregado, chkconfig se asegura de que el servicio tenga entradas para los estados de encendido (start) y apagado (kill) para cada uno de los niveles de ejecución.
Sintaxis: chkconfig --add [nombre_servicio]
Ejemplo:
root [ ~ ]# chkconfig --add respaldos
Automáticamente cuando agregamos un servicio se crean los vínculos simbólicos.
--del Esta opción nos permite cancelar la ejecución de un servicio al arranque del sistema operativo, y los enlaces simbólicos son destruidos. Sintaxis: chkconfig --del [nombre_servicio]
Ejemplo: root [ ~ ]# chkconfig --del respaldos --level La opción level permite definir el estado de los servicios de acuerdo al nivel de arranque del sistema operativo.
Sintaxis: chkconfig [--level niveles] nombre del servicio
<on|off|reset>
Ejemplo: root [ ~ ]# chkconfig --level 35 squid on
3.3 Administración de servicios a través de Webmin
Webmin permite administrar los siete niveles de arranque del sistema (runlevels) a través de
diferentes módulos que se describen a continuación:
Módulo Bootup y Shutdown
Este módulo permite editar y crear los scripts que son ejecutados al momento de arrancar o
detener el sistema, como ya se ha visto anteriormente estos scripts son administrados por
SystemV el cual también es utilizado por Webmin. En la página principal del módulo aparece
una lista con los servicios, los niveles de arranque con los que se inician y una breve
descripción.
Configurar un servicio para que inicie al arranque del sistema.
Si algún servicio, por ejemplo un servidor web no es iniciado automáticamente en el arranque
del sistema, es posible modificar su script de configuración con ayuda de webmin para
cambiar sus parámetros, cada servidor viene con sus scripts de configuración los cuales
permiten especificar entre otros parámetros el arranque automático ó bootup del servidor.
Para modificar dicho parámetro en webmin se requiere seguir los siguientes pasos:
En la página principal de este módulo dar click en el servicio que se deseé activar y enseguida
aparecerá una ventana para editar el script correspondiente.
Cambiar el parámetro “¿Iniciar al momento de arrancar el sistema?” de “No” a “Sí”.
Una vez hecho esto hay que guardar los cambios dando click en el botón “Guardar”, lo cual
regresará al menú principal del módulo.
Iniciar y detener servicios
Aunque en muchas ocasiones los servicios se inician cuando arranca el sistema y se detienen al
momento que se apaga, también es indispensable realizar este encendido y apagado en el
momento que el administrador del sistema lo requiera, dichos estados pueden ser modificados
en Webmin en cualquier momento, a continuación se describen los pasos que hay que seguir:
En la página principal del módulo dar click en el nombre del servicio.
En seguida aparece una venta de edición con los botones de:
Iniciar ahora.- Esta acción inicia el servicio seleccionado, por ejemplo un servidor, por lo
regular esta acción suele ser neutral si el servicio ya se encuentra en ejecución.
Reiniciar ahora.- Esta acción detiene y arranca el servicio seleccionado, de igual forma esta
acción suele ser neutral si el servicio no se ha iniciado previamente.
Mostar el estado.- Esta acción muestra el estado actual en el que se encuentra el servicio
seleccionado, es decir si está corriendo o no, así como su PID.
Detener ahora.- Esta acción detiene el servicio seleccionado, si el servicio se encuentra
apagado, simplemente mandará un mensaje de que no se puede apagar dicho servicio ya que
no se encuentra corriendo en ese momento.
Agregar un nuevo servicio o acción
Si se requiere estar iniciando un servicio constantemente lo recomendable sería crear un script
que ejecute el determinado servicio. Por lo regular en los servidores Apache cuando son
compilados e instalador de forma manual no vienen con scripts de acciones que se mencionan
en el subtema anterior (iniciar, detener, reiniciar, estado), por lo que es necesario también
crearlos de forma manual con ayuda de Webmin:
En la página principal del módulo dar click en el enlace “Crear nuevo bootup y shutdown”
En el camp de Nombre ingresar el nombre (se recomienda un nombre corto) de la acción o
servicio, el cual debe ser único.
En el campo Descripción ingresar una breve descripción de la acción o servicio que estamos
creando, esta descripción se mostrara en la página principal del módulo a lado del nombre del
servicio o acción.
En el campo comandos de Bootup ingresar el o los comandos que se ingresan desde la consola
cuando se inicia el servicio o acción de forma manual.
En el campo comandos de Shutdown ingresar los comandos necesarios para detener el servicio
o acción, tal y como se hace desde la línea de comandos.
Asumiendo que se deseé iniciar el servicio o la acción al momento de arrancar el sistema
seleccionamos “Sí” en el campo “¿Iniciar al momento de arrancar el sistema?”
Finalmente guardar los cambios dando click en “Crear”
Reiniciar o Apagar el sistema
Beakos se puede reiniciar o apagar usando los comandos apropiados, aunque también se
puede hacer presionando los botones de la computadora esta vía no es muy recomendable ya
que no se detienen de forma adecuada los servicios lo que puede ocasionar pérdida de
información. Webmin permite realizar el reinicio y/o apagado del sistema de forma segura, a
continuación se describen los pasos para hacerlo:
Para reiniciar:
Colocarse en la página principal de este módulo (Bootup y Shutdown).
En la parte inferior de la página dar click en el botón “Reiniciar Sistema” enseguida aparecerá
una ventana de diálogo para confirmar si de verdad se quiere reiniciar el sistema, dar click en
el botón reiniciar sistema de la ventana de confirmación, e inmediatamente comenzará el
proceso de apagado del sistema.
Configuración de rcsysinit.d
Como ya se ha explicado anteriormente en el arranque del sistema después de que se haya
cargado el Kernel, los scripts del directorio /etc/rc.d/rcsysinit.d/ son los primeros
en ejecutarse y los que determinan cuales servicios van a ser iniciados, es decir, aquellos que
se encuentren declarados en /etc/inittab. En Webmin se puede modificar son los Niveles de
Arranque así como el Nivel de arranque por defecto que se cargar al iniciar el sistema. Este
módulo podemos ubicarlo en la categoría de Sistemas de Webmin.
Para configurar Niveles de Arranque:
Posicionarse en la página principal del módulo, esta desplegará una lista de servicios,
comandos o acciones que están definidas en cada uno de los Niveles de Arranque.
Dar click en el campo de la columna ID, después de esto se desplegará una venta con los
parámetros de edición.
En la columna “Nivel de Arranque de Bootup” seleccionamos entre 0 y 6 para especificar en
qué Nivel de Arranque iniciara el servicio, comando o acción, o también se puede seleccionar
“Ninguno”.
Por último hay que guardar los cambios dando click en el botón “Guardar”.
Ahora se puede reiniciar el sistema para comprobar que los cambios se hayan guardado
Capí tulo 4 Lí nea de comandos
4.1 Intérprete de comandos BASH Es una aplicación basada en el Shell de Unix y cumple la función de un intérprete de comandos su sintaxis incluye algunas características de Korn Shell y el C Shell como son:
Edición de la línea de órdenes
La pila de directorios
Las variables $RANDOM y $PPID
Sintaxis de sustitución de órdenes POSIX
Otra característica del bash es que proporciona autocompletado de nombres de programas, nombres de archivos, nombres de variables, etc.
Acceso a los parámetros
La programación de scripts en Shell resulta muy útil y práctica para ejecutar tareas repetitivas y tediosas en cierto momento. Un script no es más que un fichero de texto plano que contiene una lista de comandos de cierto lenguaje dichos lenguajes son interpretados a diferencia de los compilados que generan un código objeto ejecutable los intérpretes se van ejecutando conforme se van leyendo directamente del código fuente algunos de estos lenguajes son:
Perl
Python
Php
El intérprete de comandos Bash nos permite ejecutar los scripts pasándole como parámetro el script:
root [ ~ ]# bash script.sh
root [ ~ ]# sh script.sh
Más adelante se describirá la sintaxis para crear un script, así como, los comandos más usuales para crear dichos scripts. A continuación se muestra un breve script de la programación en Shell:
#!/bin/bash
FECHA=$(date)
echo "Hola mundo"
echo "Hoy es:"; echo $FECHA
echo "Tienes una reunión de trabajo"
Como se puede observar en es script es que se especifica el intérprete a utilizar (bash),
también es posible indicar otros como /bin/sh.
En seguida se almacena en una variable el resultado de ejecutar el comando date, hay que identificar qué FECHA es el nombre de la variable y $FECHA es su contenido para asignar un
valor o contenido a una variable utilizamos el signo “=”. El comando ECHO imprime en pantalla una cadena de texto o bien el contenido de una variable.
Si se requiere un script en donde el usuario ingrese datos es necesario utilizar el comando READ.
#!/bin/bash
echo -n "Introduce tu Nombre: \t"
read nombre
echo "Tu nombre es: $nombre"
SELECT
Permite al usuario seleccionar una opción de una lista previamente creada.
CONTROLES DE FLUJO
En la mayoría de los scripts es necesario utilizar estructuras de control que nos ayuden a manipular el flujo de un programa, algunas de estas estructuras son las que se describen a continuación:
IF
Esta es una de las más básicas en donde si se cumple determinada condición ejecuta cierta tarea de lo contrario ejecuta otra.
if [condición]
then
comandos si se cumple la condición
else
comandos si no se cumple la condición
fi
WHILE
Con esta estructura de control repetimos una serie de comandos siempre y cuando la condición sea cierta, cabe mencionar que cuando se utiliza esta estructura de control se comprueba primero la condición antes de ser ejecutada lo cual indica que tal vez no se ejecuten ni una sola vez.
Sintaxis:
while [condición]
do
comandos a ejecutar cuando se cumple la condición
done
FOR
La estructura de control for permite indicar un número máximo de iteraciones, los scripts de bash utilizan los parámetros obtenidos de la Shell como $1, $2, $3…$n. Esta estructura de control a diferencia de las demás requiere de varios parámetros los que se detallan a continuación.
Variable de control.- Comúnmente se acostumbra utilizar como variable de control el carácter i (iterador)
Inicialización de la variable de control.- Esta variable debe se declarada en el inicio de la estructura de control, en este caso del for por ejemplo: i=0.
Condición de control.- Aquí se declaran las condiciones que se deseen ejecutar durante las iteraciones del for.
Incremento.- Aquí se define la otra parte de la variable de control, es decir, definir cómo se va a ir incrementando dicha variable conforme vayan pasando las iteraciones, por ejemplo: i++. Esto quiere decir que el valor de “i” va incrementar de uno en uno.
Cuerpo.- Aquí van una serie de comandos o instrucciones a ejecutar durante cada iteración.
Sintaxis:
for [variable_control] in expresión1,expresión2…expresiónN
do
[comandos o tareas a ejecutar];
done
Ejemplo:
root [ ~ ]# for n in {1,2,3,4};
do echo “Numero” $n;
done
La sintaxis de órdenes de bash incluye ideas tomadas desde el Korn Shell (ksh) y el C Shell
(csh), como la edición de la línea de órdenes, el historial de órdenes, la pila de directorios, las
variables $RANDOM y $PPID, y la sintaxis de substitución de órdenes POSIX: $(...). Cuando se
utiliza como un intérprete de órdenes interactivo, bash proporciona autocompletado de
nombres de programas, nombres de archivos, nombres de variables, etc, cuando el usuario
pulsa la tecla TAB.
4.1.1 Control de tareas Existe un comando que permite realizar monitoreo y control de tareas en tiempo real llamado
top dicho comando cuenta con varias opciones.
Ejemplo:
root [ ~ ]# top
La ejecución del comando anterior nos mostrará en tiempo real los procesos que se
encuentran ejecutando en nuestro sistema, describiendo % del uso del CPU, la cantidad de
memoria RAM y memoria SWAP utilizada y los usuario que ejecutan el proceso.
Tabla 4-1. Opciones más comunes para el comando Top
Opciones Descripción
-c Visualiza de forma completa la ruta del comando que se está ejecutando.
-d Intervalo de tiempo en el que se actualizará la información, se le asigna un valor numérico (segundos).
-U Monitorear los procesos de un determinado UID.
-p Monitorear los procesos especificados por ID.
-n Número de veces que se actualizará la información antes definalizar el comando top.
4.1.2 Variables de entorno Son un conjunto de valores dinámicos cargados en la memoria que pueden ser utilizados por
distintas tareas o aplicaciones de forma simultánea y que afectan su comportamiento, las
variables de entorno pueden ser modificadas en cualquier momento para que cada usuario las
utilice con los parámetros que se adecuen a sus aplicaciones, con esto se quiere decir, que
cada aplicación se ejecuta sobre su propio entorno, lo que le da un aspecto, ajustes y
comportamiento particulares y son precisamente las variables de entorno las que modifican
estos parámetros. Algunas variables de entorno ya viene definidas por defecto en el shell,
además cada usuario puede agregar tantas como sea necesario y usarlas para labores
específicas .
Los comandos env, set, printenv muestran un listado de todas las variables de
entorno junto con sus respectivos valores. A continuación se muestra la forma en cómo
asignar un nuevo valor a una variable.
variable = value
Donde variable es el nombre de la variable de entorno y value es el valor que se desea
asignarle.
Ejemplo:
root [ ~ ]# PATH=USERS
root [ ~ ]# export PATH
Para ver el valor de las variables se utiliza el comando printenv [nombre_variable]
Ejemplo:
root [ ~ ]# printenv PATH
/bin:/usr/bin:/sbin:/usr/sbin
También es posible eliminar las variables de entorno usando el comando unset.
unset [nombre_variable]
Ejemplo:
root [ ~ ]# unset PATH
4.1.3 Redirección Todos los comandos en GNU/Linux tienen tres tuberías: Entrada estándar, salida estándar y salida de error estándar estas opciones pueden ser redireccionadas a ficheros con los símbolos < y > o también se puede redireccionar a otros comandos (con el símbolo |). A continuación se muestran ejemplos con el uso de estos símbolos.
Esto enviaría la salida del comando ls –a al archivo usuarios.txt.
root [ ~ ]# ls -la > /home/admin/usuarios.txt
Para añadir la salida de un comando a un archivo utilizamos >>
root [ ~ ]# ls –la >>/home/admin/usuarios.txt
•Contiene una lista de direcctorios separados por ":" en la cual l sistema buscará los archivos ejecutables
PATH
•Únicamente contiene los directorios del usuario root para cuando este introduzca un comando
ROOTPATH
•Contiene una lista de direcctorios en la cual el enlazador dinámico busca para encontrar una librería
LDPATH
•Contiene una lista de directorios en la cual el comando man localiza las páginas del manual.
MANPATH
•Esta variable es utilizada por el comando info para localizar las páginas de info
INFODIR
•Contiene la ruta del progrma encargado de mostrar el contenido de los archivos
PAGER
•Contiene la ruta del programa encargado de modificar el contenido de los archivos.
EDITOR
Obsérvese que en ambos ejemplos se utiliza la ruta absoluta, sin embargo también es posible utilizar rutas relativas.
Para especificar que un archivo sea la entrada de un comando se utiliza el símbolo <.
root [ ~ ]# sort < usuarios.txt
4.1.4 Páginas del manual Las páginas man son documentos que se encuentran en línea ó en el sistema local y que son
un apoyo para el uso de diversas herramientas y configuraciones del sistema, el formato del
comando man es el siguiente:
man [programa o comando]
En donde programa es cualquier programa que se desee conocer su sintaxis y opciones que
maneja.
Se pueden realizar consultas a los manuales de forma más específica para cada aplicación ya
que las páginas de los manuales se encuentran seccionadas en varias partes las cuales se
pueden ser identificadas por un número.
4.1.5 Textinfo Otra alternativa que existe para consultar documentación es textinfo, establecida como el
estándar de GNU, textinfo es una estructura de documentación que se basa en el uso de
hipervínculos que existen en la World Wide Web, esto quiere decir, que los documentos se
pueden enlazar entre sí por medio de hipervínculos.
A continuación se muestra un ejemplo de cómo usar este comando:
root [ ~ ]# info mkdir
4.1.7 Listar archivos El comando ls nos permite listar los archivos de un directorio este comando maneja diversas
opciones entre las cuales está ls –l esta opción permite además de listar los archivos de un
directorio ver sus propiedades y permisos. El siguiente esquema ayuda a interpretar la salida
de dicho comando.
El uso simple del comando ls muestra un listado de todos los archivos no ocultos de un
directorio, ls cuenta con gran variedad de opciones dentro de las cuales se describen a
continuación las más comunes.
Tabla 4-2. Opciones más comunes para el comando ls
Opción Descripción
-l Lista además del nombre del archivo o directorio se muestra el tamaño, la fecha de modificación, permisos, propiedad e información del grupo.
-a Muestra todos los archivos que se encuentran en un directorio incluyendo los archivos ocultos.
-t Genera una lista en orden del momento de la última modificación.
-r Muestra una lista de archivos ordenada de forma inversa.
-1 Lista en una sola columna los archivos y directorios.
-R Hace una lista en forma recursiva de todos los archivos y directorios.
Ejemplo:
root [ ~ ]# ls –l
-rw-r--r-- 1 root root 56797881 Nov 25 08:39 ISPConfig.tar.gz
drwxr-xr-x 5 1000 1000 4096 Mar 8 07:39 baifox_1.0
Analicemos la salida del comando anterior que indica que existen dos archivos en el directorio
de inicial del usuario “root”.
La primera letra en la primera columna señala si se trata de un fichero (-), de un directorio (d),
de un enlace simbólico (l) o un dispositivo de bloques (b), los nueve caracteres siguientes en la
primera columna describen los permisos del propietario, del grupo y de otros usuarios que
detallaremos más adelante.
La segunda columna indica el número de vínculos de un determinado archivo, se trata de un
dato poco relevante para una administrador de sistemas GNU/Linux
En la tercera columna aparece de ambas líneas el nombre de “root” refiriéndose al
propietario del archivo o directorio. A continuación vuelve a parecer el nombre de “root” que
indica el grupo al cual pertenece el archivo o directorio.
En la quinta línea aparece un número, se trata de la cantidad de espacio en disco que ocupa un
archivo o directorio, este valor está indicado en bytes.
Después del tamaño, las siguientes tres columnas indican la fecha en que el archivo o
directorio se modificó por última vez, si el archivo se modificó en este año aparecerá el mes, el
día y la hora, si se modificó por última vez en años pasados, sólo se indicará el mes el día y el
año.
Por último aparecerá el nombre del archivo o directorio o bien si se trata de un enlace
simbólico se indica la ruta del enlace.
4.2 Manipulación de archivos y directorios La administración de archivos bajo GNU/Linux es distinta a la Windows, en esta sección se
describirán herramientas y comandos útiles para la administración de los archivos y
directorios.
4.2.1 Tipos de ficheros y directorios Existen diferentes tipos de ficheros y directorios dentro de las distribuciones GNU/Linux, en un
principio esto se hizo con la finalidad de simplificar el trabajo del programador, para evitar
tener que comunicarse en forma directa con los controladores de dispositivos, se usan
archivos especiales o scripts, dentro de las distribuciones GNU/Linux tenemos los siguientes
archivos:
Archivos normales Simplemente contienen datos o ejecutables que el sistema no
ocupa de forma especial.
Directorios Son un caso especial de archivos normales se hace una lista de las
ubicaciones de otros archivos incluso pueden ser otros directorios
Vínculos Fuertes Cada archivo tiene su propio nodo i. Estos nodos se actualizan
diariamente sobre los cambios que hay en los atributos de un archivo y de su ubicación
en el disco. Si se requiere referirse a un solo archivo usando dos nombres separados
de archivo, se puede crear un vínculo fuerte.
Vínculos simbólicos A diferencia de los vínculos fuertes los cuales apuntan a un
archivo por su nodo i, un vínculo simbólico apunta a otro archivo por su nombre, esto
permite apuntar a archivos ubicados en otras particiones, incluso en otras redes.
4.2.3 Archivos, propiedades y permisos En la administración de Linux, los archivo y directorios tienen siempre permisos y dueños
asociados con ellos, de forma predeterminada los permisos se fijan al propietario del archivo,
el grupo al cual pertenece y otros usuarios que pueden accesar al él(propietario, grupo y
otros). Cuando se hace una lista de archivos y directorios esto se puede notar (ver sección
4.1.7 Listar archivos). Se utiliza el comando chmod para fijar los valores relacionados con los
permisos (lectura escritura y ejecución).
Tabla 4-3. Valores relacionados para permisos
Símbolo Permiso Valor numérico
r Lectura 4
w Escritura 2
x Ejecución 1
Este modo numérico se le conoce como octal, el valor puede variar de 0 hasta 7. Para cambiar
estos permisos sencillamente agregue los valores numéricos después del comando chmod y el
nombre de archivos o directorio.
Ejemplo:
root [ ~ ]# chmod 700 xorg
El comando anterior hará que sólo el dueño del archivo tenga permisos totales sobre él. Es
importante notar que este modo reemplaza cualquiera de los permisos antes fijados.
El otro modo de emplear el comando chmod es la forma simbólica, por ejemplo si queremos
agregarle permisos de ejecución al dueño de un archivo bastará con teclear lo siguiente:
root [ ~ ]# chmod u+x rsync-3.0.7.tar.gz
Si deseamos quitarle el permiso de escritura al mismo archivo podemos teclear lo siguiente:
root [ ~ ]# chmod u-w rsync-3.0.7.tar.gz
Si deseamos darle permisos de escritura al grupo del archivo tecleamos:
root [ ~ ]# chmod g+w rsync-3.0.7.tar.gz
Se queremos asignar permiso de lectura a otros usuarios tecleamos:
root [ ~ ]# chmod o+r rsync-3.0.7.tar.gz
Tabla 4-4. Combinaciones más comunes
Símbolo Permiso Valor numérico
--- Sin permisos 0
r-- Sólo lectura 4
rw- Lectura y escritura 6
rwx Lectura, escritura y ejecución 7
r-x Lectura y ejecución 5
--x Sólo ejecución 1
4.2.2 Cambio de un usuario a un archivo o directorio La forma más común de cambiar al propietario de un archivo o directorio en las distribuciones
GNU/Linux es mediante el comando chown, cada fichero tiene asignado un propietario y un
grupo, es decir el usuario y el grupo de quien lo creo. El súper usuario (root) es quien tiene los
privilegios para modificar al propietario y el grupo de los archivos Beakos, sin embargo, esto
se puede modificar para que otros usuarios también puedan utilizar chown, pero en la
mayoría de los casos es más recomendable por cuestiones de seguridad que lo haga el súper
usuario.
A continuación se muestra la sintaxis para utilizar dicho comando:
chown [-R] usuario nombre_archivo
Una opción que permite chown es la recursividad con –R, es decir si se trata de un directorio
todo lo que contenga dentro de él se asignará al nuevo usuario.
Ejemplo:
root [ ~ ]# chown -R antonio rsync-3.0.7
El comando anterior hará que la carpeta rsync-3.0.7 y todo su contenido pase a ser propiedad
del usuario “antonio”.
Si deseamos cambiar al mismo tiempo el usuario y grupo tecleamos lo siguiente:
root [ ~ ]# chown -R antonio:beakos rsync-3.0.7
Si deseamos cambiar sólo el grupo utilizamos el comando chgrp, de la siguiente forma:
root [ ~ ]# chgrp -R laboratorio rsync-3.0.7
4.2.3 Copiar archivos El comando utilizado para copiar archivos es cp, dispone de varias opciones para revisar
todas consulte la página del manual.
Tabla 4-5. Opciones más comunes para el comando cp
Opción Descripción
-f Fuerza la copia sin realizar verificación.
-r Recursivo, copia un directorio y lo que hay dentro de él.
-v Muestra los archivos copiados.
-b Hace un respaldo si el existen archivos con el mismo nombre en la ruta destino.
-i Copiado interactivo, antes de que se realice la copia verifica con el usuario.
Ejemplo:
root [ ~ ]# cp -v webmail_php.zip webmail_php.zip.bak
cp -v webmail_php.zip webmail_php.zip.bak
`webmail_php.zip' -> `webmail_php.zip.bak'
4.2.4 Mover archivos directorios Se utiliza el comando mv para mover archivos de una ubicación a otra, también se utiliza para
cambiar de nombre a un archivo.
Tabla 4-6. Opciones más comunes para el comando mv
Opción Descripción
-f Fuerza el movimiento sin realizar verificación.
-r Recursivo copia un directorio y lo que hay dentro de él.
-v Muestra los archivos movidos.
-i Interactivo, antes de que se realice la operación verifica con el usuario.
Ejemplo:
root [ ~ ]# mv -v gnuhh-admin-2.05.tar.gz /opt/
`gnuhh-admin-2.05.tar.gz' -> `/opt/gnuhh-admin-2.05.tar.gz'
4.2.5 Crear enlaces simbólicos El comando ln permite establecer enlaces fuertes y enlaces simbólicos, este comando
dispone de varias opciones pero la más usual es –s, que nos permite crear un enlace simbólico
en lugar de un enlace fuerte.
Ejemplo:
root [ ~ ]# ln -sv /opt/gnuhh-admin-2.05.tar.gz ./enlace
`./enlace' -> `/opt/gnuhh-admin-2.05.tar.gz'
El comando anterior creó un enlace simbólico llamado enlace en el directorio inicial de
“root” que apunta al archivo `/opt/gnuhh-admin-2.05.tar.gz'.
4.2.6 Buscar archivos y directorios El comando find permite buscar archivos utilizando varios criterios, como los comandos
anteriores find cuenta con varias opciones que son descritas en su página del manual.
Sintaxis del comando find:
find directorio_busqueda [opciones]
Ejemplos:
Buscar archivos y directorios cuyo nombre sea “webmail”, dentro del directorio inicial de root.
root [ ~ ]# find ./ -name webmail
./webmail/adminpanel/plugins/webmail
Encontrar los archivos que tienen dos días de antigüedad dentro del directorio de root.
root [ ~ ]# find ./ -ctime 2
./ede
./.viminfo
Encontrar un archivo que tenga un tamaño de 1024 K o mayor en el directorio /root
root [ ~ ]# find ./ -size 1024k
./ innodb.result
Otro comando útil es locate, es fácil de usar, para ejecutarlo sólo se escribe el comando
seguido del archivo que se desee buscar, y nos mostrara todos los archivos y directorios que
contengan esa palabra.
Ejemplo:
root [ ~ ]# locate rsync
4.2.7 Compresión de archivos y directorios con GZIP y BZIP2 La herramienta gzip se creó como una alternativa al programa compress, los archivos gzip
tienen la extensión .gz , es de resaltar que después de comprimir un archivo, la utilidad gzip
borra el archivo original y sólo queda el archivo comprimido.
Ejemplo:
root [ ~ ]# gzip archivo1
Para descomprimirlo teclee:
root [ ~ ]# gunzip archivo1.gz
La herramienta bzip2 proporciona una mejor compresión que la anterior, como resultado
genera archivos más pequeños.
Ejemplo:
root [ ~ ]# bzip2 archivo1
Para descomprimirlo teclee:
root [ ~ ]# bunzip2 archivo1.bz2
4.2.8 Crear y eliminar directorios Para crear un directorios utilizamos el comando mkdir, este comando se usa a menudo con
la opción –p, esta opción generará directorios si aun no existen por ejemplo si se requiere
crear varios subdirectorios dentro de un directorio.
Ejemplo:
root [ ~ ]# mkdir -p directorio/subdirectorio1/subdirectorio2
Para eliminar un directorio vacio utilizamos el comando rmdir, borrará el subdirectorio2.
root [ ~ ]# rmdir directorio/subdirectorio1/subdirectorio2
Aviso Se puede emplear también para borrar
directorios el comando rm –rf, pero esto borrará
todos los archivos y directorios dentro de él de
forma permanente, usar con precaución.
4.2.9 Concatenar archivos El comando cat entre otras funciones permite visualizar archivos pequeños, crear un archivo
a partir de dos archivos y hasta generar archivos.
Ejemplos:
Visualizar el contenido de un archivo
root [ ~ ]# cat /etc/hosts
# Begin /etc/hosts (network card version)
127.0.0.1 localhost localhost.localdomain
Visualizar el contenido de dos archivos.
root [ ~ ]# cat /etc/hosts /etc/hosts.allow
# Begin /etc/hosts (network card version)
# End /etc/hosts (network card version)
192.168.0.182 example.com
sshd: 127.0.0.1
Redirigir el contenido de dos archivos y generar uno nuevo.
root [ ~ ]# cat /etc/hosts /etc/hosts.allow > hosts.txt
4.2.10 Uso de espacio en disco Es muy común que con frecuencia necesitemos saber el espacio en disco que ocupan los
archivos. El comando du nos permite saber el espacio en disco que ocupa cada archivo o
directorio.
du -[opciones] archivo/directorio
Tabla 4-7. Opciones más comunes para el comando du
Opción Descripción
-c Muestra el total al final, en bloques.
-h Muestra el total en un formato legible
-k Muestra el tamaño en kilobits
-s Muestra el total resumido.
Ejemplo:
root [ /opt/MailRoot/bin ]# du -chs *
96K CtrlClnt
8.0K MkMachDep
12K MkUsers
4.0K XMCrypt
368K XMail
4.0K sa_filter.pl
16K sendmail
508K total
4.2.11 Localizar comandos El comando whereis, busca la ubicación de un comando y muestra el nombre del
comando, su directorio y la página del manual si está disponible.
Ejemplo:
root [ ~ ]# whereis mkdir
mkdir: /bin/mkdir /usr/man/man2/mkdir.2 /usr/man/man1/mkdir.1
/usr/share/man/man2/mkdir.2 /usr/share/man/man1/mkdir.1
4.3 Edición de textos Los editores de textos son las principales herramientas para trabajar desde la consola de Linux,
uno de los más habituales es vi, este editor existente en los sistemas UNIXfue desarrollado en
la década de 1970, es el editor de textos utilizado en Beakos, cuya versión es la 7.2.25.
Para utilizar vi teclee de la siguiente forma:
root [ ~ ]# vi nombre_archivo
Si el archivo no existe lo crea, si existe lo edita.
Vim cuenta con un buen manual, para acceder a él simplemente teclee:
root [ ~ ]# vimtutor
Tabla 4-8. Opciones más comunes para el edito Vi
Opción Descripción
dd Borra una línea.
i Pasar al modo edición (insertar texto).
a Inserta texto antes del carácter sobre el que está el cursor.
I Inserta texto después del carácter sobre el que está el cursor.
A Inserta texto al comienzo de la línea en la que está el cursor.
o Inserta texto al final de la línea en la que está el cursor.
O Abre espacio para una nueva línea después de la línea en la que está el cursor y permite insertar texto en la nueva línea.
/[palabra ] Busca una palabra o una serie de ellas.
:w Guarda los cambios realizados.
:q Sale del programa Vi.
:wq Guarda los cambios y sale del programa.
:q! Forzar la salida sin guardar cambios.
:set number
Muestra los números de línea en el archivo editado.
:help Muestra la ayuda de Vi.
4.4 Lectura de archivos El comando more presenta un archivo por pantalla, es uno de los comunes, su forma de uso es
la siguiente:
root [ ~ ]# more nombre_archivo
Otro comando útil en Beakos para la lectura de archivo es less, con mayor funcionalidad que
more, permitiendo regresar a líneas a anteriores y avanzar línea por línea. Su forma de uso
es :
root [ ~ ]# less nombre_archivo
4.5 Utilerías del sistema Beakos cuenta con varias utilerías que nos muestran información importante, para un
administrador de Linux es indispensable conocer las herramientas con las que se puede apoyar
a menudo para realizar sus labores.
4.5.1 Mostrar el directorio de ubicación actual El Comando pwd nos indica el directorio actual donde nos encontramos ubicados, no obstante
la consola de Beakos siempre indica el directorio de trabajo.
Ejemplo:
root [ /opt/directorio1 ]# pwd
/opt/directorio1
4.5.2 Espacio libre del disco El comando df nos permite obtener información no sólo del espacio libre en los discos y
particiones del sistema, también nos permite saber el tamaño y el punto de montaje.
Ejemplo:
root [ /opt/directorio1 ]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 7.0G 1.1G 5.5G 17% /
tmpfs 126M 0 126M 0% /dev/shm
/dev/sda1 130M 15M 108M 12% /boot
/dev/sdb1 1004M 19M 935M 2% /opt
Sin la opción –h nos mostrará el tamaño de los discos en bloques.
4.5.3 Mostrar un archivo mientras crece El comando tail nos mostrará las últimas líneas de un archivo, empleando opción –f nos
mostrará si un archivo ha crecido en tamaño imprimiendo en pantalla las últimas líneas que
han sido agregadas, esto es especialmente útil en el análisis de las bitácoras del sistema.
Ejemplo:
root [ ~ ]# tail -f /var/log/kern.log
Jun 1 08:13:52 Beakos kernel: [ 6.342343] EXT3-fs: mounted
filesystem with ordered data.
Jun 1 08:13:52 Beakos kernel: [ 6.344137] kjournald
starting. Commit interval 5 seconds
Jun 1 08:13:52 Beakos kernel: [ 6.348307] EXT3 FS on sdb1,
internal journal
4.5.4 Sincronización de archivos y copias de respaldo con RSYNC Rsync permite la transferencia de archivos incrementales, permite sincronizar ficheros y
directorios dentro de un mismo equipo, o bien a través de dos equipos utilizando una conexión
por SSH.
Tabla 4-9. Opciones más comunes para el comando rsync
Opción Descripción
-n Modo de prueba, no hace copia, sólo nos muestra el resultado.
-a Modo archivo. Respeta todos los permisos y propiedad del archivo de origen.
-r Modo recursivo, copia las carpetas y lo que haya dentro de ellas.
-l Respeta enlaces blandos
-p Respetar permisos
-t Respetar fecha/hora
-g Respetar grupo
-D Respetar dispositivos (solamente con usuario root)
-v Modo verboso, para mayor verbosidad usar -vv
-z Comprimir para una transmisión más rápida.
-C Ignora archivos como hace CVS.
-u Modo update, mantiene archivo en el destino si es posterior.
-b Backup renombrar archivos existentes a extensión.
Ejemplo en un mismo equipo:
rsync [opciones] [Dir-origen] [Dir-destino]
root [ ~ ]# rsync archivo1 /opt
Ejemplo entre dos equipos a través de SSH.
root [ ~ ]# rsync -e ssh -avrlptg 192.168.0.190:/opt/directorio1
/opt
4.5.5 Listar procesos El comando ps hace una lista de procesos en GNU/Linux, indica su estado, su terminal
controladora, el tiempo de CPU entre otros. Se dispone de varias opciones, enlistamos las mas
utilizadas.
Tabla 4-10. Opciones más comunes para el comando ps
Opción Descripción
a Muestra todos los procesos controlados por una terminal.
r Muestra sólo los procesos que se encuentran en ejecución.
x Muestra los procesos que no están controlados por una terminal.
u Muestra los propietarios de los procesos.
f Presenta la relación entre los procesos.
l Lista los procesos con mayor detalle.
w Muestra la ruta completa de los comandos que generan procesos.
Ejemplo:
root [ / ]# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:02 init [3]
2 ? S< 0:00 [kthreadd]
4.5.6 Matar procesos El comando utilizado para matar procesos es kill, en realidad lo que hace es enviar una
señal a un proceso, se emplea con varios manejadores de señales predeterminados para un
sistema Linux(consulte la página de man), el más utilizado por los administradores de sistemas
GNU/Linux es 9, que anula y termina un proceso respectivamente.
Ejemplo:
root [ / ]# kill -9 2228
Donde el número 2228 es el número de proceso que se desea terminar.
Sugerencia Para obtener un listado de las señales
posibles a utilizar junto con el comando kill, teclee
kill -l
Capí tulo 5 Administracio n de usuarios y grupos
5.1 ¿Qué constituye a un usuario? En Beakos como en cualquier otra distribución de GNU/Linux cada archivo y cada binario son
propiedad de un usuario. Cada usuario se distingue por tener un identificador único llamado
UID. Cada usuario debe pertenecer a un grupo primario y a su vez puede pertenecer a más
grupos, así como los usuarios tienen identificadores únicos los grupos también tienen
identificadores únicos llamados GID.
El acceso y el control de seguridad se basa principalmente en sus UID y GID, los derechos de
los usuarios se delimitan de dos maneras, el usuario raíz o “superusuario” o el usuario
“normal”, los usuarios normales sólo tienen acceso a lo que poseen o a lo que se les ha dado
privilegios de ejecutar, estos privilegios se obtienen ya sea por pertenecer a un grupo o que se
trate de un archivo accesible a todos los usuarios. El usuario raíz tiene accesos a todos los
archivos y binarios en el sistema, sin importar si les pertenece o no.
5.2 El archivo /etc/passwd
Beakos GNU/Linux conserva toda la información del usuario en archivos de texto, esto
representa una ventaja debido a que permite hacer cambios a la información de los usuarios
sin necesidad de herramientas distintas a un simple editor de textos, el archivo principal donde
se almacena la información de los usuarios es /etc/passwd.
Figura 5-1. Estructura del archivo /etc/passwd
5.2.1 Campo del nombre de usuario En este campo se almacena el nombre con el que el usuario ingresará al sistema, este debe ser
único, una forma común de dar de alta un nombre es usar la primera letra del nombre seguida
del primer apellido, por ejemplo un usuario que se llame Juan Pérez se le podría asignar el
nombre de usuario “jperez” .
amoreno : * : 501 : 501 : Antonio Moreno : /home/amoreno : /bin/bash
Nombre del usuario
Contraseña
ID usuario
ID grupo
Nombre completo
Directorio
Interprete de comandos
5.2.2 Campo de la contraseña Este campo contiene la contraseña cifrada del usuario, en Beakos este campo contiene la letra
x, lo cual indica que la contraseña es almacenada en el archivo /etc/shadow, lo cual se
explica más adelante. Todos los usuarios deben tener una contraseña que cumpla con los
siguientes requisitos:
Compuesta por más de 8 caracteres .
Mezclar caracteres alfabéticos y numéricos.
No derivarse de palabras existentes en el diccionario.
No derivarse del nombre de usuario.
No derivarse de información personal (domicilio, teléfono, etc.)
5.2.3 Campo del ID del usuario (UID) En este campo se almacena el número único que utiliza el sistema operativo y otras
aplicaciones para diferenciar a cada usuario y sus respectivos privilegios de acceso. La UID
debe ser única para cada usuario con excepción del UID 0 (cero). Cualquier usuario con UID 0
tiene privilegios de “root”, por consecuencia el control total del sistema.
5.2.4 Campo de la ID del grupo (GID) El campo del ID del grupo es el equivalente numérico al nombre del grupo primario al que
pertenece cada usuario. Es importante recordar que además de pertenecer a un grupo
primerio un usuario puede pertenecer a más grupos, lo cual se describe más adelante.
5.2.5 Campo del nombre completo Este campo almacena comúnmente el nombre completo de usuario, aunque también se
pueden almacenar más datos como el número telefónico etc. Este campo es opcional, se
puede dejar en blanco.
5.2.6 Campo del directorio En este campo se describe la ruta del directorio inicial del usuario, cada usuario dado del alta
necesita un lugar destinado para almacenar los archivos que le pertenecen, este directorio le
permite al usuario trabajar en un ambiente personalizado.
En Beakos GNU/Linux al generarse un nuevo usuario por defecto su carpeta inicial se generará
sobre /home con el nombre del usuario correspondiente, esto se hace por sentido de
organización aunque no es necesario, pues se puede designar otra carpeta inicial para un
usuario.
5.2.7 Campo del intérprete de comandos Cuando los usuario son admitidos en el sistema, se deben de encontrar con un entorno que les
permita ingresar instrucciones (comandos) este entorno se denomina Shell, el Shell por default
que se integra en Beakos como en la mayoría de las distribuciones es BASH (Bourne Again
Shell).
5.4 El archivo /etc/shadow Este archivo es el que contiene las contraseñas cifradas. En él se almacena la información de
las contraseñas cifradas para las cuentas de los usuarios. Además de la contraseña cifrada, en
este archivo también se guarda información referente acerca de la expiración de la misma. Así
como el archivo /etc/passwd, cada línea del archivo /etc/shadow representa
información acerca del usuario, los campos del archivo son:
Nombre para obtener acceso.
Contraseña cifrada.
Días transcurridos a partir del primero de enero de 1970 en que la contraseña se
cambió por última vez.
Días antes de los cuales la contraseña puede ser cambiada.
Días después de los cuales debe cambiarse la contraseña.
Días antes de que expire la contraseña en que debe avisarle al usuario.
Días después de que expire la contraseña para desactivar la cuenta.
Días transcurridos a partir del primero de enero de 1970 en que se desactiva esa
cuenta.
Campo reservado
Muestra de una línea del archivo /etc/shadow
root:$1$w0UReMgg$N/BQspuvJqE1lLiKjBLLb/:14635:0:99999:7:::
5.4.1 Políticas de expiración de contraseñas De forma predeterminada una contraseña no expira, forzar a que una contraseña expire es
una forma mejorar las políticas de seguridad, los parámetros por defecto para la expiración de
contraseñas se definen en el archivo /etc/login.defs.
El comando chage es usado para administrar la expiración de las contraseñas. Su sintaxis es
la siguiente.
chage [opciones] nombre_usuario
Tabla 5-1. Opciones más comunes para el comando chage
Opción Descripción
-m Mínimo de días entre cambio de password.
-M Máximo de días entre cambio de password.
-I Número de días desde que el password expiró para bloquear la cuenta.
-E fecha
Expiración de la cuenta
-W Número de días antes de requerir un cambio de contraseña para enviar avisos al usuario.
-l Enlista configuración
5.5 El archivo /etc/group El archivo /etc/group contiene una lista de grupos primario y secundarios, cada grupo en
una línea. Todos los usuarios del sistema pertenecen por lo menos a un grupo, considerándose
a ese grupo como el primario, de ser necesario se pueden asignar grupos adicionales. Los
campos por línea del archivo /etc/group son:
Nombre de grupo
Contraseña de grupo
ID del grupo
Miembros del grupo
Muestra de una línea del archivo /etc/group
clamav:x:20006:daemon,amavis
5.6 Administrando usuarios En esta sección se describen las herramientas para administrar usuarios a partir de la línea de
comandos.
4.6.1 Agregar usuarios El comando utilizado para agregar usuarios en Beakos es useradd.
useradd [opciones] nombre_usuario
Tabla 5-2. Opciones más comunes para el comando useradd
Opción Descripción
-c comentario Permite agregar el nombre completo del usuario (GECOS), si el valor incluye espacios será necesario poner el valor entre comillas. Por ejemplo: -c “Antonio Moreno”.
-d directorio inicial
De forma predeterminada el valor del directorio inicial es /home/nombre_usuario, cuando un nuevo usuario se crea su directorio inicial lo hace al mismo tiempo.
-e expiración Es posible que la cuenta de un usuario pueda expirar, de forma predeterminada una cuenta nunca expira, para especificar una fecha correctamente se debe hacer bajo el siguiente formato. -e 2010 10 26
-f tiempo inactivo
Esta opción especifica el número de días después de que expire que la cuenta seguirá activa. Por ejemplo –f 3 la cuenta seguirá activa tres días después de que caducó.
-g grupo primario
Esta opción sirve para especificar el grupo primario al cual el usuario estará enrolado, de no especificar esta opción, se creará un grupo con el mismo nombre de usuario. Si usa un nombre de grupo este debe de estar previamente registrado en el archivo /etc/group.
-G grupos secundarios
Esta opción permite especificar grupos adicionales a los cuales pertenecerá el nuevo usuario. Si usa la opción –G debe especificar por lo menos un grupo adicional que debe existir en en el archivo /etc/group. Por ejemplo: -G sistemas,desarrollo
-m skel-dir De forma predeterminada los archivos de configuración del usuario se toman del directorio /etc/skel, esta opción permite tomar los archivos de configuración (.bash_logout, .bash_profile, .bashrc)de otra ubicación.
-M Esta opción permite no crear un directorio inicial para el usuario.
-s Shell De forma predeterminada el interprete de comandos de Beakos es /bin/bash, esta opción permite utilizar otra Shell para el usuario.
-u id usuario De forma predeterminada al crear un usuario, el sistema usará la siguiente UID disponible y se la asignará al nuevo usuario. Si se requiere que la UID de un usuario tenga un valor particular esta opción se debe emplear. Ejemplo -u 10098
5.6.2 Borrar usuarios El comando userdel, como su nombre lo indica elimina usuarios existentes, su sintaxis es
la siguiente:
userdel [-r] nombre_usuario
La opción –r borra el directorio del usuario y todo su contenido.
5.6.3 Modificar usuarios El comando para este propósito es usermod, funciona con prácticamente los mismos
parámetros que useradd (refiérase a la tabla anterior), la opción que utilice modificará al
usuario en ese parámetro en particular.
5.6.4 Agregar grupos El comando destinado para dicha tarea es groupadd, este comando agrega los grupos en el
archivo /etc/group. Sus opciones se describen en la tabla siguiente.
Tabla 5-3. Opciones más comunes para el comando groupadd
Opción Descripción
-g GID Especifica la GID para el nuevo grupo como gid. Este valor debe ser único, de forma predeterminada se elige el siguiente valor disonible
-r De forma predeterminada Beakos asigna números GID mayores a 20000, esta opción le dice a Beakos que el grupo es uno grupo del sistema y le asigna un número inferior a 20000.
-f Esta opción hará que groupadd se ejecute sin error si se intenta agregar un grupo que ya existe en el sistema.
5.6.5 Borrar grupos El comando groupdel es el encargado de esta tarea, elimina grupos existentes en el archivo
/etc/group. Su sintaxis de uso es la siguiente:
groupdel nombre_grupo
5.6.6 Modificar grupos El comando groupmod es el encargado de realizar la modificación de parámetros de grupos.
Sus posibles usos son los siguientes:
groupmod –g gid
groupmod –n nombre_grupo grupo
La opción –g le permite cambiar la GID del grupo y la opción –n permite especificar un nuevo
nombre de grupo.
5.7 Administración de usuarios a través de Webmin La aplicación Webmin proporciona una herramienta muy intuitiva para la administración de
usuarios, que permite crear, modificar y eliminar usuario y grupos entre otras opciones.
Para accesar a la herramienta debemos ingresar a Webmin por el puerto 10000 en un
navegador ingresando la dirección IP del servidoro el dominio correspondiente,
posteriormente seleccionar el menú System y la opción Users and Groups.
Figura 5-2. Administración de usuarios con Webmin.
5.8 Usuarios y permisos de acceso Beakos GNU/Linux determina si un usuario o grupo tienen acceso o no a los archivos,
programas u otros recursos del sistema al revisar los permisos que este posee. El modelo
tradicional en UNIX y Linux es bastante sencillo, se basa en 4 reglas de acceso:
(r) Lectura
(w) Escritura
(x) Ejecución
(-) Permiso de acceso denegado
Además existen 3 tipos de usuarios:
(Propietario) Dueño del archivo
(Grupo) Grupo que posee el archivo
(Otros) Todos los usuarios del sistema que no entren en los anteriores
4.9 Comprensión de SetUID, SetGID y Sticky bit Los programas se pueden etiquetar con lo que se conoce como bit de setUID, esto permite que
el programa se ejecute con los privilegios del dueño de ese programa no con los privilegios del
usuario, es decir al realizar la siguiente operación:
root [ ~ ]# chmod 4775 /bin/ls
root [ ~ ]# chmod u+s /bin/ls
El comando ls se ejecutará con los privilegios del usuario “root” que es el dueño del archivo.
El bit de setGID funciona de forma similar, con la diferencia de que en lugar de aplicarlo al
propietario del archivo se aplica al grupo del archivo. Con SGID podemos crear directorios
colaborativos para varios usuarios, es decir los archivos creados en el directorio se crearán con
el grupo por default al cual pertenece el directorio.
Ejemplo:
root [ ~ ]# mkdir /compartidos
root [ ~ ]# ls -ld /compartidos
drwxr-xr-x 2 root root 4096 Apr 21 06:34 /compartidos
root [ ~ ]# touch /compartidos/archivo1
root [ ~ ]# ls -l /compartidos
total 0
-rw-r--r-- 1 root root 0 Apr 21 06:34 archivo1
En el ejemplo anterior se observa que el archivo es creado por el usuario raíz y hereda los
mismo dueño y mismo grupo. Ahora bien cambiamos el grupo de la carpeta y le agregamos el
setGID.
root [ ~ ]# chgrp mail /compartidos
root [ ~ ]# ls -ld /compartidos
drwxr-xr-x 2 root mail 4096 Apr 21 06:34 /compartidos
root [ ~ ]# chmod g+s /compartidos
root [ ~ ]# ls -ld /compartidos
drwxr-sr-x 2 root mail 4096 Apr 21 06:34 /compartidos
Creamos un archivo que llamado “archivo2”
root [ ~ ]# touch /compartidos/archivo2
root [ ~ ]# ls -l /compartidos/
total 0
-rw-r--r-- 1 root root 0 Apr 21 06:34 archivo1
-rw-r--r-- 1 root mail 0 Apr 21 06:40 archivo2
Nótese que el archivo2 se guardó con el grupo “mail” aunque el usuario no lo tenga como su
grupo primario.
Normalmente usuarios con permisos de escritura en un directorio pueden borrar archivos, el
bit pegajoso (sticky bit) permite que otros usuarios con permisos de escritura sobre él puedan
editar el archivo pero sólo el dueño podrá borrarlo.
Muchos usuarios necesitan tener permisos para crear y borrar archivos en el directorio /tmp,
configurando esta carpeta con “sticky bit” se previene que los usuarios borren archivos que no
les pertenecen.
El directorio /tmp está configurado con “sticky bit” por defecto, se puede observar una “t” en
los permisos de acceso.
root [ ~ ]# ls -ld /tmp
drwxrwxrwt 4 root root 4096 Apr 21 22:26 /tmp
La asignación del bit pegajoso se hace de la siguiente forma:
root [ ~ ]# chmod o+t /home/compartidos
o bien:
root [ ~ ]# chmod 1777 /home/compartidos
5.10 Listas de accesos (ACL) Las listas de acceso permiten la aplicación de permisos para los usuarios sobre ficheros y
carpetas con mayor exactitud, el sistema tradicional de permisos resulta insuficiente en gran
cantidad de situaciones donde es necesario crear permisos para usuarios y grupos en
específico. Es aquí donde se utilizan las listas de acceso para GNU/Linux.
Características:
Las ACL´s permiten compartir archivos con otros usuario sin el riesgo de utilizar el
comando chmod 777.
Se pueden implementar sobre un punto de montaje en específico.
El sistema de archivos implementado en Beakos (ext3)cuenta con soporte para ACL´s.
5.10.1 Activación del uso de listas de acceso sobre sistemas de
archivos. Para habilitar el uso de listas de acceso es indispensable que el sistema de archivos esté
montando con la opción acl, modificando el archivo /etc/fstab en la columna options.
#filesystem mount-point type options dump fsck
/dev/sdb1 /opt ext3 defaults,acl 0 0
Realizados los cambios anteriores ejecutamos la siguiente instrucción para habilitar los
cambios previamente realizados al punto de montaje.
root [ ~ ]# mount –a
Validamos los cambios aplicados al sistema de archivos tecleando el comando mount.
root [ ~ ]# mount
/dev/sda2 on / type ext3 (rw)
/dev/sdb1 on /opt type ext3 (rw,acl)
Otra forma de realizarlo es la siguiente, no recomendable porque no persistirá a un reinicio.
root [ ~ ]# mount -o remount,acl /opt
Podemos observar en el ejemplo anterior que al sistema de archivos /dev/sdb1 se le ha
definido el punto de montaje /opt habilitado para el uso de listas de acceso.
5.10.2 Implementación de listas de acceso en archivos y directorios. Para la aplicación, modificación y consulta de listas de acceso se utilizan dos comandos
getfacl y setfacl, el primero muestra información sobre los permisos de lectura,
escritura y ejecución de un grupo o un usuario sobre un fichero o directorio; el segundo se
utiliza para aplicar y modificar permisos.
Sintaxis:
getfacl [archivo/directorio]
setfacl [opciones] u:nombreusuario:permisos [archivo/directorio]
Ejemplos:
Obtener los permisos vigentes que posee el archivo1.
root [ /opt ]# getfacl archivo1
# file: archivo1
# owner: root
# group: root
user::rw-
group::r--
other::r--
Sugerencia Si desea habilitar el uso de ACL´s para el
sistema de archivos raíz, edítelo directamente en el
archivo /etc/fstab para que persista a un posible
reinicio del sistema.
En el ejemplo anterior podemos observar que el archivo1 pertenece al usuario y grupo root,
para el usuario tiene permisos de escritura y lectura. para el grupo solo de lectura. Asignamos
permisos de lectura y escritura para el usuario francisco.
root [ /opt ]# setfacl -m u:francisco:rw archivo1
root [ /opt ]# getfacl archivo1
# file: archivo1
# owner: root
# group: root
user::rw-
user:francisco:rw-
group::r--
mask::rw-
other::r--
Hacer que los archivos nuevos agregados a un directorio hereden la ACL por defecto, que hará
que el usuario francisco sea el usuario por defecto con permiso de lectura y escritura.
root [ /opt ]# setfacl -m d:u:francisco:rw directorio1
root [ /opt ]# getfacl directorio1/
# file: directorio1/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:francisco:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
Podemos observar claramente que el usuario por defecto ha sido fijado como francisco con
permisos de lectura y escritura para los archivos que se coloquen en esta carpeta.
Remover la lista de acceso asignada al usuario francisco sobre el archivo1.
root [ /opt ]# setfacl -x u:francisco archivo1
root [ /opt ]# getfacl archivo1
# file: archivo1
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r—
5.11 Configuración y administración de cuotas En ambientes GNU/Linux con gran cantidad de usuarios, pueden enfrentarse a problemas
como el espacio de almacenamiento, la implementación de “cuotas” permite limitar el espacio
en disco que puede utilizar cada usuario, las cuotas se pueden implementar de dos formas.
Por Inodos: Un Inodo indica en que bloques del disco duro se localizan los datos de un
archivo. Para administrar cuotas a través de Inodos debemos determinar el número de
Inodos al que un usuario tiene derecho, un Inodo equivale a un archivo.
Por Bloques: Un bloque es el equivalente a a 1Kb, administrar quotas a través de
bloques , es decir 1 Mb ocupará 1000 bloques en el disco duro.
Otro punto importante a tomar en cuenta son los límites, se emplean dos para la
administración de cuotas.
Hard: Es el límite absoluto que el usuario puede ocupar.
Soft: Su valor debe ser menor que hard, se puede exceder tanto por Inodos como por
bloques, puede interpretarse como el límite máximo antes de que el usuario reciba
mensajes de aviso.
Cuando se usa el límite SOFT, dos situaciones pueden suceder.
Si no se ha establecido un periodo de gracia, el usuario podrá seguir usando bloques o
Inodos hasta llegar al límite HARD que será su límite absoluto de uso.
Si se estableció el periodo de gracia, que puede ser en días, horas, minutos o
segundos, el usuario podrá seguir usando bloques o inodos hasta que termine el
tiempo de gracia o llegue al límite HARD, cualquiera que ocurra primero.
5.11.1 Activación del uso de cuotas sobre sistemas de archivos. Para llevar a cabo la implementación de quotas sobre los sistemas de archivos es necesario
montar la partición con la opcion usrquota para quotas por usuarios o bien con la opción
grpquota.
Editamos el archivo /etc/fstab, para habilitar estas opciones, quedando la estructura de
la siguiente forma:
#filesystem mount-point type options dump fsck
/dev/sdb1 /opt ext3 defaults,usrquota 0 0
Sugerencia Si desea preservar los atributos de ACL
de los archivos y directorios al mover o copiar
utilice la opción -p
Para activar los puntos de montaje con sus nuevas opciones tecleamos:
root [ /opt ]# mount –a
Verificamos que el uso de cuotas se haya activado de forma correcta.
root [ /opt ]# mount
Salida truncada…
/dev/sdb1 on /opt type ext3 (rw,acl,usrquota)
El siguiente paso consiste en verificar con el comando quotacheck, si el sistema de
archivos está preparado para soportar cuotas de usuarios creará el archivo aquota.user,
se anexan algunas opciones para el uso de quotacheck, para mayor referencia consulte la
página del manual.
Tabla 5-4. Opciones más comunes para el comando quotacheck
Opción Descripción
-a Verifica que sistemas de archivos soportan el uso cuotas.
-u Verifica el soporte de cuotas para usuarios.
-g Verifica el soporte de cuotas para grupos.
-m Evita que el sistema se remonte como sólo lectura
-v Modo verboso, muestra el resultado de la ejecución del comando.
-c No lee el archivo aquota.user si este ya existe.
root [ /opt ]# quotacheck -cu /opt
Procedemos a activar el uso de cuotas sobre el sistema de archivos.
root [ / ]# quotaon /opt
5.11.2 Administración de cuotas de disco. El uso del sistema de cuotas ya ha sido habilitado, pero ningún usuario por defecto tiene
establecidas cuotas. Para la administración de cuotas utilizamos el comando edquota del
siguiente modo.
edquota nombre_usuario
Ejemplo:
root [ /opt ]# edquota francisco
Nos mostrará la siguiente información
Disk quotas for user francisco (uid 1008):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
Podemos observar que se puede editar el numero de bloques e inodos, así como el límite
blando y límite duro respectivamente. Los únicos valores que se editan son “soft” y “hard”,
dejando “blocks” e “inodes” con valor igual a cero.
Otra forma de realizarlo es utilizando el comando setquota del siguiente modo.
setquota [usuario] soft_bloques hard_bloques soft_inodos
hard_inodos [punto_montaje]
Ejemplo:
root [ /opt ]# setquota francisco 512 1024 40 50 /opt
El comando anterior asignará al usuario “francisco” un límite blando de 512 bloques, un límite
duro de 1024 bloques, un límite blando de 40 inodos y un limite duro de 50 inodos en la
partición /opt.
Establecer el tiempo de gracia de forma global se realiza con el siguiente procedimiento.
root [ /opt ]# edquota –t
Establecer el tiempo de gracia de forma individual.
root [ /opt ]# edquota -u francisco -T
Por defecto el tiempo de gracia para los inodos y los bloques es de 7 días en la configuración
global, en la configuración individual por defecto no está definida.
Podemos obtener un reporte del estado de las cuotas de los usuarios con el siguiente
comando:
root [ /opt ]# repquota /opt
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard
grace
----------------------------------------------------------------
root -- 17692 0 0 6 0 0
francisco +- 1024 512 1024 7days 1 0 0
Capí tulo 6 Planificacio n de tareas con Cron
6.1 Configuración de una tarea con cron Existe una aplicación utilizada en los sistemas Unix GNU/Linux llamada cron o crontab que es
un administrador regular de procesos en segundo plano mejor conocido como demonio, que
ejecuta procesos o scripts a intervalos regulares, debido a que cron es un demonio (crond) solo
necesita ser iniciado una vez, en Beakos GNU/Linux este demonio es iniciado desde el
arranque del sistema y como la mayoría de las distribuciones GNU/Linux se puede cambiar
esta opción con el comando chkconfig, para mayor información sobre este comando consulte
el Capítulo 3: “Control de Servicios de Beakos GNU/Linux”. Para saber cuál es el estado actual
del programa teclear cualquiera de los siguientes comandos:
root [ ~ ]# /etc/rc.d/init.d/cron status
root [ ~ ]# /etc/init.d/cron status
root [ ~ ]# ps –ef | grep crond
Para detener o iniciar cron se utiliza:
root [ ~ ]# /etc/rc.d/init.d/cron start
root [ ~ ]# /etc/rc.d/init.d/cron stop
En el caso de que cron no iniciara desde el arranque del sistema se hace uso de chkconfig:
root [ ~ ]# chkconfig –level 35 crond on
También en /etc podemos encontrar los siguientes archivos:
cron.hourly
cron.daily
cron.weekly
cron.monthly
Desde estos archivos también es posible definir tareas programas, sin embargo, es más
recomendable hacerlo con el comando crontab más adelante se especificará como usar este
comando.
Otros archivos importantes son:
cron.allow
cron.deny
En Beakos dichos archivos se encuentran en la ruta /etc/cron.d/cron.allow en este
archivo es donde se encuentran los usuarios permitidos para ejecutar el comando cron, así
mismo, en /etc/cron.d/cron.deny están los usuarios que tienen restringido ejecutar
dicho comando.
El siguiente diagrama muestra los parámetros de los que se compone una tarea programada
en cron.
Donde los valores de tiempo pueden tener el siguiente formato:
Para definir todos los valores se utiliza un asterisco (*).
Para definir un único valor se utiliza un entero que este dentro de los parámetros de
cada variable.
Para definir una lista de valores se hacen separaciones por comas: (1,2,4,6).
Para definir un rango se utiliza el guión :(1-5).
Es usado normalmente para comandos de tareas administrativas, es decir, que ejecuta
programas agendados en el sistema. La versión normalmente utilizada de esta aplicación es la
“Vixie Cron”.
Minuto
• Minuto en que se ejecuta el proceso
• Parámetros: 0-59
Hora
• Hora en que se ejecuta el proceso
• Parámetros: 0-23
Día
• Día del mes en que se ejecuta el proceso
• Parámetros: 1-31
Mes
• Mes en que se ejecuta el proceso
• Parámetros: 1-12
Día de la Semana
• Día de la semana en que se ejecuta el proceso
• Parámetros: 0-6
A continuación se describe el formato para realizar una tarea programada con ayuda de cron:
Como ya se ha mencionado el script que contiene los procesos que se tienen programados es
crontab y para editarlo se debe escribir el siguiente comando:
root [ ~ ]# crontab -e
Ejemplo de cómo agregar una nueva tarea programada:
30 12 * * 1-5 /usr/bin/top >> /home/top.txt
En este ejemplo, se ejecutará el comando “top” de Lunes a Viernes a las 12:30 am durante
todos los meses y la salida la guardará en el archivo “top.txt”.
Para verificar que la nueva tarea haya sido agregada correctamente al archivo crontab se
puede teclear el siguiente comando:
crontab [–u usuario] -l
Con esto veremos todas las tareas o procesos que hay programadas con cron. Y si se desean
eliminar bastará con escribir:
crontab [-u usuario] -r
Minuto Hora Día del
Mes Mes
Día de la Semana
• Minuto
30
• Hora
12 • Día del
Mes
*
• Mes
* • Día de la semana
1-5
•Se ejecuta el comando "top" y
se guarda la salida en "top.txt"
/usr/bin/top >> /home/top.txt
6.2 Control de acceso a cron Como ya se mencionó anteriormente existen dos scripts que permiten o deniegan a los
usuarios la ejecución de cron dichos scripts son: cron.allow y cron.deny. A
continuación se describe como utilizar estos scripts:
Para impedir que un usuario utilice el comando crontab es necesario agregar su nombre de
usuario al archivo /etc/cron.deny, por el contrario si se desea permitir el uso de crontab
hay que agregar los nombres de usuarios en /etc/cron.allow. También se puede permitir
o denegar el uso de crontab a todos los usuarios agregando “ALL” al final del script y
comentando o eliminando el nombre de los usuarios.
6.3 Administración de tareas planificadas a través de Webmin A través de Webmin también es posible llevar a cabo la administración de la aplicación cron y
el módulo que se requiere es: Scheduled Cron Jobs (trabajos programados de cron). Este
módulo se encuentra en la sección de sistema del sitio oficial de Webmin. A continuación se
explicará como programar tareas desde este módulo:
Al ingresar en la página principal se muestra un listado de todas las tareas programadas
actualmente en el sistema, en dicha se tabla se pueden observar los campos de:
Usuario
Estado (Activo/Desactivo)
Comando
Si esta ejecutándose actualmente
Para agregar una nueva tarea, desde la página principal dar clic en el enlace “Crear una nueva
tarea programada” a continuación se mostrará un formulario para ingresar los datos de la
nueva tarea:
En el campo “Ejecutar tarea como”, todas las tareas en cron deben ser ejecutadas por un
usuario, así que en este campo se ingresa el nombre del usuario que va a ejecutar dicha tarea.
Esto es para que la tarea programada sea ejecutada con los privilegios del usuario que se le
configure.
En el campo “Activo?” presenta dos opciones “No” y “Si ” con ello se determina el estado de
la tarea programada, esto permite posponer dicha tarea hacia una nueva fecha y hora de
ejecución.
En el campo de “Comandos” hay que escribir los comandos de Shell necesarios para que se
ejecute la tarea programada. De forma predeterminada, cualquier salida del comando será
enviada por correo electrónico al propietario de la tarea, para modificar esta opción hay que
redirigir la salida hacia otro archivo.
Dentro de la página de creación de una nueva tarea programada también aparece un la lista
para configurar los horarios y fechas de ejecución:
Minutos
Horas
Días
Meses
Días de Semana
Después de ajustar estos parámetros simplemente queda por dar clic en el botón “Crear”, para
que la nueva tarea sea agregada.
6.3.1 Editar una tarea programada Desde Webmin también se pueden modificar los parámetros de una tarea previamente
programada siguiendo los pasos que a continuación se describen:
Desde la página principal del módulo, dar clic en la tarea que se deseé modificar.
En seguida aparecerá un formulario para modificar los parámetros y realizar los ajustes
necesarios.
Después de que se hayan hecho las modificaciones deseadas dar clic en el enlace
“Guardar”.
6.3.2 Control de acceso de los usuarios a cron Este módulo también permite controlar el acceso de usuarios al crontab o a la creación y/o
ejecución de tareas programadas, por lo general de forma predeterminada todos los usuarios
tienen permiso para crear nuevas tareas programadas esto pude ser modificado de la siguiente
forma:
En la parte inferior de la página principal dar clic en la opción “Control de acceso a
usuarios para tareas programadas “
En seguida se muestra un formulario con las opciones para permitir o denegar el
acceso a determinados usuarios, aquí se presentan tres opciones: “Permitir a todos los
usuarios”, “Permitir solo a los usuarios listados”, “Denegar solo a los usuarios listados”,
dependiendo de las necesidades y requerimientos se optará por cualquiera de estas
opciones.
Capí tulo 7 Administracio n de sistemas de archivos
7.1 Administración de particiones Los sistemas de archivos son los mecanismos mediante los cuales se organizan los datos en
medio de almacenamiento.
7.1.2 ext3 y ReiserFS Ext3 y Reiserfs son los sistemas de archivos soportados en Beakos, son usados en la mayor
parte de las distribuciones. El sistema ext3 es el versión mejorada de ext2 ofrece grandes
mejores en rendimiento y estabilidad. Tanto en sistemas ext3 y Reiserfs se ha implementado el
método de journaling (registro diario). El journaling es un mecanismo por el cual un sistema
operativo puede realizar transacciones, se basa en un registro en el que se almacena la
información necesaria para establecer datos afectados en caso de que una transacción falle.
En lo que se refiere a los sistemas de archivos el Journaling se encarga de las operaciones que
afectan a:
Estructuras de directorios.
Bloques libres de disco.
Descriptores de archivos (tamaño, fecha de modificación, etc..).
El journaling de sistemas de archivos tiene como objetivo evitar los engorrosos y largos
chequeos de disco (fsck) que efectúan los sistemas al apagarse bruscamente, ya que el sistema
al arrancar solo deberá deshacer el journal para tener un sistema coherente de nuevo. Tener
que esperar un chequeo en un sistema de archivos de 200 megas en un sistema de producción
puede ser una pérdida significativa de tiempo para los usuarios.
Para poder visualizar una tabla de particiones podemos hacer uso de los siguientes comandos:
root [ ~ ]# cat /proc/partitions
root [ ~ ]# fdisk –l
7.1.3 Creación de una partición La herramienta que proporciona GNU/Linux para la administración de discos es fdisk
suponiendo que está agregando al sistema un disco IDE, este lo reconocerá como hda, si está
agregando al sistema un disco SATA o SCSI, este lo reconocerá como sda. En cuanto a las
particiones, la primer partición de un disco si se trata de un IDE, el sistema operativo la
nombrará hda1 y así sucesivamente, lo mismo para un disco SATA será sda1.
El núcleo compilado para Beakos en estos momentos es la versión 2.6.26, el cuál soporta una
gran cantidad de controladoras de disco incluyendo SCSI, pero puede darse el caso de que la
controladora no esté soportada.
Una vez que se ha colocado el disco, inicie el sistema operativo y para asegurarse de que el
disco ha sido reconocido ejecute el comando dmesg, que muestra los mensajes del kernel.
root [ ~ ]# dmesg | less
Supongamos que hemos agregado un disco duro a nuestro sistema y el sistema lo ha instalado
con sus respectivos controladores. Ejecute fdisk para corroborar los discos disponibles y la
tabla de particiones que se encuentra en cada uno.
root [ ~ ]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 17 136521 83 Linux
/dev/sda2 18 981 7743330 83 Linux
/dev/sda3 982 1044 506047+ 82 Linux
swap / Solaris
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Con la ejecución del comando anterior podemos observar que el sistema ha detectado un
nuevo disco en nuestro sistema (/dev/sdb) pero aun no contiene una tabla de particiones.
Ejecute fdisk /dev/sdb para comenzar con el particionamiento del disco.
root [ ~ ]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun,
SGI or OSF disklabel
Salida truncada…..
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be
corrected by w(rite)
Command (m for help):
Se presentará la opción de presionar m para obtener ayuda. La cual le ofrecerá distintas
opciones:
a Conmuta el indicador de iniciable
b Modifica la etiqueta de disco bsd
c Conmuta el indicador de compatibilidad con DOS
d Suprime una partición
l Lista los tipos de particiones conocidos
m Muestra opciones posibles
n Agrega una nueva partición
o Crea una nueva tabla de particiones DOS vacía
p Imprime la tabla de particiones
q Sale sin guardar los cambios
s Crea una nueva etiqueta de disco Sun
t Cambia el tipo de partición a crear
u Cambia las unidades de visualización/entrada
v Verifica la tabla de particiones
w Escribe la tabla en el disco y sale
x Funciones adicionales (sólo para usuarios avanzados)
Una vez ejecutando la opción anterior seleccione la opción p para visualizar la tabla de
particiones existente.
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xaeb28e04
Device Boot Start End Blocks Id System
Como podemos ver no existe aún una tabla de particiones definida, seleccionemos la opción n
para crear una nueva partición.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
El menú nos solicita crear una partición primaria o extendida. Presionamos la letra p y
seleccionamos el número de partición que se le asignará, seleccionamos la opción 1.
Para definir el tamaño seleccionamos el primer cilindro del disco en cuestión, podemos definir
el tamaño en Megabytes o Gigabytes, crearemos para cuestiones de ejemplo una partición de
2 GB. De la siguiente forma teclee +2G
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default
1044): +2G.
De forma predeterminada, fdisk crea particiones del tipo ext3 (es decir 83 en su equivalente
hexadecimal, puede ver una lista de código presionando la letra L mayúscula). Para cambiar el
tipo de partición por ejemplo a RAID o Linux LVM presionamos la tecla t. Dejaremos de forma
predeterminada el tipo de partición ext3 así que escribiremos 83.
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
Tecleamos de nueva forma la opción p para volver a visualizar la tabla de particiones,
observaremos que ya no está vacía como en un principio. Contiene una partición /dev/sdb1
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
Salida truncada….
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
Una vez seguros que la partición creada cumple con las características requeridas, procedemos
a escribir los cambios teclee w, al finalizar nos regresará a la línea de comandos.
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Sugerencia GNU/Linux sólo permite la creación de
tres particiones primarias, si se va a crear más de 4
particiones se recomienda que la cuarta sea
extendida.
Ejecute el comando partprobe para que el sistema esté informado de los cambios hechos
en la tabla de particiones. Procedemos a formatear el disco que se ha generado, Beakos
soporta los sistemas de archivos ext3 y reiserFS. Se realiza de la siguiente forma si se quiere
darle formato con ext3.
root [ ~ ]# mkfs.ext3 /dev/sdb1
Si se requiere dar el formato con sistema de archivos reiserFS se realiza de la siguiente forma.
root [ ~ ]# mkfs.reiserfs /dev/sdb1
Posterior a esto debemos definir un punto de montaje para nuestro sistema de archivos,
supongamos que hemos creado la carpeta /data el comando sería el siguiente.
root [ ~ ]# mount /dev/sdb1 /data
Podemos ver detalles del sistema de archivos ya montado a través del siguiente comando.
root [ ~ ]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 7.0G 4.2G 2.5G 64% /
tmpfs 126M 0 126M 0% /dev/shm
/dev/sda1 130M 15M 109M 12% /boot
/dev/sdb1 2.1G 33M 2.0G 2% /data
El cual nos muestra información sobre el tamaño, uso y disponibilidad de nuestros sistemas de
archivos.
7.2 Utilización de etiquetas en sistemas de archivos Las etiquetas son útiles para utilizar un nombre alterno al de una partición, resulta más factible
recordar un nombre que un dispositivo de almacenamiento, Beakos sólo soporta el uso de
etiquetas en disco para particiones ext3.
Existen dos formas de asignar una etiqueta un disco, la primera al mismo tiempo de dar
formato a la partición.
mkfs.ext3 [dispositivo] –L [etiqueta]
Ejemplo:
root [ ~ ]# mkfs.ext3 /dev/sdb1 -L data
La segunda opción es hacerlo con una partición ya formateada.
e2label [dispositivo] [etiqueta]
Ejemplo:
root [ ~ ]# e2label /dev/sdb1 datos
El sistema de archivos puede ser montado utilizando su etiqueta de la siguiente forma:
mount [opciones] LABEL=[etiqueta] [punto de montaje]
Ejemplo:
root [ ~ ]# mount LABEL=datos /data
7.3 Montando y desmontando sistemas de archivos El comando para el montaje y desmontaje de unidades de disco es mount y umount de
manera relativa. Su forma de uso es la siguiente:
mount [opciones] [dispositivo] [directorio]
En donde opciones pueden las que se muestran en la tabla, en la segunda tabla se anexan las
opciones para usarse con el comando mount –o .
Si ejecutamos el comando mount sin ninguna opción, presentará una lista de todos los
sistemas de archivos montados hasta el momento. Por ejemplo:
root [ ~ ]# mount
/dev/sda2 on / type ext3 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=4,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext3 (rw)
/dev/sdb1 on /data type ext3 (rw)
Tabla 7-1. Opciones más comunes para el comando mount
Opción Descripción
-a Monta todos los sistemas de archivos que han sido declarados en el
archivo /etc/fstab
-t [sistema archivo] Especifica el sistema de archivos que será montado. Beakos está habilitado para montar ext3 y reiserFS y NFS. Si no se define el tipo de sistema de archivos el comando mount por si sólo puede saber esta información.
-o [opciones] Aplica opciones que se definen en la siguiente tabla, por lo general son opciones para un sistema de archivos en específico.
Tabla 7-2. Opciones más comunes para el comando mount -o
Opciones para mount -o
Descripción
ro Monta la partición como sólo lectura.
rw Monta la partición con permisos de lectura y escritura, esta es la opción predeterminada.
exec Permite ejecutar binarios, opción predeterminada.
noauto Desactiva el montaje automático cuando se ejecuta mount –a
(aplicable para el archivo /etc/fstab).
nosuid No permite la aplicación de los bits del programa SetUID a la particón montada.
acl Permite la implementación de listas de acceso en la partición.
quota Permite la implementación de cuotas de disco en la partición.
Ejemplo:
root [ ~ ]# mount -o rw,acl /dev/sdb1 /data
El comando anterior montará la partición /dev/sdb1 en el punto de montaje /data con
permisos de lectura y escritura, además del soporte para listas de acceso.
7.4 Puntos de montaje y el archivo /etc/fstab Este archivo contiene una lista de particiones que el sistema ha de utilizar durante su proceso
de inicialización, el sistema lee esta lista y monta las particiones que se encuentren en ella de
forma automática y con las opciones especificadas.
Formato de entradas en el archivo /etc/fstab
[partición][punto_montaje][tipo_fs] [parametros][bakup][fsck]
Ejemplo de un archivo /etc/fstab de Beakos GNU/Linux
root [ ~ ]# cat /etc/fstab
#filesystem mount-point type options dump fsck
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
/dev/sda2 / ext3 defaults 1 1
/dev/sda1 /boot ext3 defaults 1 1
/dev/sda3 swap swap default 0 0
La primer línea descomentada se refiere evidentemente a un sistema de archivos proc, que
mantiene de forma dinámica los procesos del sistema.
La segunda línea es para el sistema de archivos sysfs, este sistema es requerido en los Kernel
versión 2.6, al igual que proc es un sistema de archivos temporal y especial. Proporciona una
visión estructurada del árbol de dispositivos del sistema operativo.
La tercer línea declara al sistema de archivos de memoria virtual, el cual utiliza la memoria
RAM y el área de intercambio (SWAP), se utiliza para solicitar páginas del subsistema de
memoria virtual para almacenar archivos.
La cuarta línea corresponde al sistema de archivo raíz, la primer columna define la partición en
un disco SATA, la segunda columna define el punto de montaje (/), la tercer columna declara
que el sistema de archivos en uso es ext3, la siguiente columna especifica que sólo utilice las
opciones de montaje de archivos por defecto (véase tablas del tema “Montando y
desmontando archivos”), la quinta columna se refiere al respaldo con la herramienta dump y
su prioridad y la sexta determina si este sistema necesita verificación (fsck) y el nivel de
prioridad.
La quinta línea corresponde al punto de montaje /boot. Básicamente los campos de esta
línea corresponden al del directorio raíz, en esta partición se almacenan los archivos del gestor
de arranque así como la imagen del kernel y la imagen del disco de RAM (initrd).
La última línea corresponde a la partición de intercambio (SWAP), es altamente recomendable
tener una partición de este tipo ya que mejora el rendimiento del sistema, se recomienda que
sea el doble de tamaño que se tiene de memoria RAM. En la instalación de Beakos si se elige la
instalación automática, el instalador se encargará de definir el tamaño adecuado para la
partición de intercambio.
7.5 Software RAID RAID significa conjunto redundante de discos independientes (en inglés Redundant Array of
Independent Disks). Es un sistema de almacenamiento que hace uso de múltiples discos duros
entre los que distribuye la información o la réplica para obtener redundancia de datos. Entre
las ventajas de implementación de RAID están:
Mejor rendimiento.
Mejor tolerancia a fallas a nivel físico del disco duro.
Mayor capacidad de almacenamiento.
7.5.1 Niveles de RAID más comunes
RAID 0
También llamado volumen dividido, distribuye los datos equitativamente entre dos o más
discos pero sin redundancia. Su principal uso es incrementar el rendimiento, aunque también
es utilizado para sumar varios discos físicos y crear uno o más discos virtuales.
RAID 1
Crea una copia exacta de la información de un disco en otro(s), esto representa mayor
velocidad de lectura pero un menor espacio de almacenamiento. Un ejemplo clásico de RAID 1
es la implementación de dos disco en espejo, lo que proporciona fiabilidad de modo que si se
presenta un fallo en uno de ellos para lograr perder el arreglo sería necesario que los fallaran.
En este tipo de arreglo la velocidad de lectura se duplica porque el sistema puede estar
leyendo información de ambos discos a la vez.
RAID 5
El RAID 5 se divide en bloques distribuyendo la información de paridad entre todos los discos
miembros del conjunto. El RAID 5 requiere al menos 3 unidades de disco para ser
implementado, preferentemente del mismo tamaño, al fallar un disco el arreglo se conserva, la
perdida completa de datos sucederá si falla un segundo disco.
7.5.1 Configuración de software RAID Creación de un arreglo (RAID 5)
Para este ejemplo, utilizaremos tres particiones de 512 M cada una simulando que son dos
discos duros físicos, los creamos con la herramienta fdisk (refiérase al apartado 7.1.3), del
tipo Linux auto detect (código hexadecimal fd).
root [ ~ ]# fdisk -l
Salida truncada....
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xaeb28e04
Device Boot Start End Blocks Id System
/dev/sdb1 1 66 530113+ fd Linux
raid autodetect
/dev/sdb2 67 132 530145 fd Linux
raid autodetect
/dev/sdb3 133 198 530145 fd Linux
raid autodetect
No olvidar ejecutar el comando partprobe para que el sistema operativo reconozca la tabla
de particiones.
Inicializamos y activamos el arreglo de RAID 5, el comando utilizado en esta tarea es mdadm
su forma de uso es la siguiente:
root [ ~ ]# mdadm -C /dev/md0 --chunk=64 --level=5 --raid-
devices=3 /dev/sdb{1,2,3}
mdadm: array /dev/md0 started.
La opción –C indica al comando que cree un nuevo arreglo llamado /dev/md0, la opción
--chunk se refiere al número de bloques le asignamos un numero de 64, --level
representa el tipo de RAID que ha de generar, --raid-devices representa el número de
discos, en este caso de particiones que se han de utilizar, recordemos que para RAID se
requieren mínimo 3 discos.
Crear un sistema de archivos ext3 para el dispositivo de almacenamiento.
root [ ~ ]# mkfs.ext3 /dev/md0
El RAID de Linux puede ser monitoreado con el comando mdadm –detail también nos sirve
para ver una descripción detallada del arreglo.
root [ ~ ]# mdadm --detail /dev/md0
mdadm --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Wed Apr 28 06:05:02 2010
Raid Level : raid5
Array Size : 1060096 (1035.42 MiB 1085.54 MB)
Used Dev Size : 530048 (517.71 MiB 542.77 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Wed Apr 28 06:09:22 2010
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : ed26dad0:2c353a94:9688d056:0b76f4fc
Events : 0.4
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
2 8 19 2 active sync /dev/sdb3
7.5.2 Pruebas y recuperación Para este ejemplo simularemos la falla del disco disco /dev/sdb3 perteneciente al arreglo de
RAID 5 que creamos anteriormente. Ejecutemos el siguiente comando.
root [ ~ ]# mdadm /dev/md0 -f /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md0
La acción anterior hará que el disco /dev/sdb3 falle, pero el arreglo conservará los datos no
olvidemos que si un segundo disco falla el arreglo se perderá.
Nuevamente utilicemos el comando mdadm --detail /dev/md0, observemos que el
arreglo se conserva, pero el disco sdb3 se encuentra dañado.
root [ ~ ]# mdadm --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Wed Apr 28 06:05:02 2010
Raid Level : raid5
Array Size : 1060096 (1035.42 MiB 1085.54 MB)
Used Dev Size : 530048 (517.71 MiB 542.77 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Wed Apr 28 06:36:31 2010
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : ed26dad0:2c353a94:9688d056:0b76f4fc
Events : 0.6
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
2 0 0 2 removed
3 8 19 - faulty spare /dev/sdb3
Supongamos que hemos removido el disco dañado y hemos conectado uno nuevo, debemos
crearle una partición de RAID con fdisk y agregarlo al arreglo con el comando siguiente:
root [ ~ ]# mdadm /dev/md0 -a /dev/sdb5
mdadm: added /dev/sdb5
7.6 Administración de volúmenes lógicos La administración de discos a través de volúmenes lógicos permite visualizar un disco o
dispositivo de almacenamiento como un conjunto, sobre el cual se pueden crear espacios de
almacenamiento, es decir se pueden conjuntar varios discos de diferentes tecnologías como
SCISI, IDE y SATA, sumar su capacidad de almacenamiento, crear volúmenes físicos y con ello
crear un grupo de volúmenes cuya capacidad sea la suma de los dispositivos de
almacenamiento y a partir de ahí crear volúmenes lógicos del tamaño que se desee con la
característica de redimensionar su capacidad de almacenamiento según nuestras necesidades.
Las características más notables de la administración de volúmenes lógicos son:
Redimensionamiento de grupos de volúmenes lógicos.
Mayor flexibilidad para las particiones del disco.
Redimensionamiento de volúmenes lógicos.
Fácil aumento de espacio de almacenamiento al agregar nuevos discos.
Definiciones referentes a la administración de volúmenes lógicos.
Volumen físico (PV, en inglés physical volume). Cuando hablamos de los volúmenes físicos
nos estamos refiriendo a los discos o dispositivos de almacenamiento como tal, como un disco
SCSI, un RAID por hardware, un disco SATA etc.
Grupo de volúmenes (VG, en inglés volumen group). Los grupos de volúmenes permiten
administrar un conjunto de volúmenes físicos en una sola unidad. Estos no se pueden montar,
se pueden definir como discos virtuales.
Volumen lógico (LV en inglés Logical volume). Los volúmenes lógicos son el equivalente a las
particiones en un esquema donde no se utiliza la administración de volúmenes lógicos. El
volumen lógico se crea a partir del espacio disponible en un grupo de volúmenes. A este se le
asigna un sistema de archivos y un punto de montaje.
En resumen los pasos para la creación de un volumen lógico son los siguientes:
Creación de una partición.
Creación de un volumen físico.
Agregar de un volumen físico a un grupo de volúmenes.
Creación de un volumen lógico.
Figura 7-1. Esquema de la administración de volúmenes lógicos
Tabla 7-3. Comandos más comunes para la administración de Volúmenes Lógicos.
Comando LVM
Descripción
pvcreate Inicializa una partición para convertirla en un volumen físico que pueda ser integrado a un grupo de volúmenes.
pvdisplay Muestra los volúmenes físicos existentes en el sistema operativo y sus respectivas características.
vgcreate Usado para crear un grupo de volúmenes a partir de uno o varios volúmenes físicos.
vgextend Usado para agregar uno o más volúmenes físicos a un grupo existente de volúmenes para ampliar su tamaño.
vgdisplay Muestra grupos de volúmenes existentes y sus respectivas características.
lvcreate Crea un nuevo volumen lógico a partir de un grupo de volúmenes.
lvdisplay Muestra los volúmenes lógicos existentes en el sistema operativo y sus respectivas características.
lvremove Elimina un volumen lógico del grupo de volúmenes para esta operación debe desmontarlo y los datos se perderán.
7.6.1 Creación de Grupos de volúmenes y volúmenes lógicos Supongamos que hemos agregado un disco duro nuevo nuestro sistema y tiene un tamaño de
8 GB, utilizando la herramienta fdisk (refiérase al tema Creación de una partición), crear una
partición de 8 GB del tipo LVM (en código hexadecimal corresponde a 8e). No olvidar ejecutar
el comando partprobe para que el sistema reconozca la tabla de particiones.
Ejecutemos el comando fdisk –l para corroborar que se ha creado la partición de forma
exitosa.
root [ ~ ]# fdisk -l /dev/sdb
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x4edd0986
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 8e Linux LVM
El siguiente paso es inicializar el volumen físico creado en el paso anterior con el comando
pvcreate, hacerlo de la siguiente forma.
root [ ~ ]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
Usar el comando pvdisplay para ver los cambios teclee:
root [ ~ ]# pvdisplay
"/dev/sdb1" is a new physical volume of "8.00 GB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 8.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID D9S3Rt-rs2i-5rAm-8rG8-yAXg-K3ZK-SOte8X
Una vez que hemos corroborado que el volumen físico se ha creado con éxito, lo asignaremos
a un grupo de volúmenes (VG) que también será creado con el nombre de “vg0”, el comando a
usar será vgcreate.
root [ ~ ]# vgcreate vg0 /dev/sdb1
Volume group "vg0" successfully created
Tecleamos el comando vgdisplay para ver las características y tamaño del grupo de
volúmenes.
root [ ~ ]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
Salida truncada……
VG Size 8.00 GB
PE Size 4.00 MB
Total PE 2047
Alloc PE / Size 0 / 0
Free PE / Size 2047 / 8.00 GB
VG UUID CAxcc1-XA9L-8tGX-xjDT-y3Hd-yJb0-oOQ31Q
Ahora tenemos 8 GB de espacio libre para crear volúmenes lógicos. Con esta información
procedemos a crear un volumen lógico, utilizaremos en comando lvcreate. Su sintaxis es la
siguiente:
lvcreate –L [tamaño en MB o GB] –n [nombre] [Volume Group]
Crearemos un volumen lógico con un tamaño de 4G llamado “data”, a partir del grupo de
volúmenes previo.
root [ ~ ]# lvcreate -L 4G -n data vg0
Logical volume "data" created
Tecleamos el comando lvdisplay para corroborar que el volumen lógico se ha creado con
éxito, recordemos que este volumen lógico es el equivalente a una partición en un
particionado de forma convencional.
root [ ~ ]# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/data
VG Name vg0
LV UUID nxF2pu-Basx-6qaj-x8Dd-UGqX-qlps-kI7iN4
LV Write Access read/write
LV Status available
# open 0
LV Size 4.00 GB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
Con el volumen creado es necesario asignarle un sistema de ficheros, para fines prácticos
formatearemos el volumen lógico con el sistema ext3 utilizando el comando mkfs.ext3 de
la siguiente forma:
root [ ~ ]# mkfs.ext3 /dev/vg0/data
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Salida truncada....
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to
override.
Concluyendo los pasos anteriores el volumen lógico está listo para definirle un punto de
montaje, se lo definiremos en “/data”.
root [ ~ ]# mount /dev/vg0/data /data
7.6.2 Redimensionando volúmenes lógicos Supongamos que el volumen lógico llamado “data” se ha quedado sin espacio suficiente, es
necesario agregarle más espacio recordemos que al grupo de volúmenes sólo le quedan 4 GB
de los 8GB inicialmente disponibles, para aumentar su tamaño no es necesario desmontar el
volumen lógico, no así para una reducción. El procedimiento es el siguiente:
Extender el volumen lógico a 6 GB con el comando lvextend
root [ ~ ]# lvextend -L +2G /dev/vg0/data
Extending logical volume data to 6.00 GB
Logical volume data successfully resized
Ajustar el sistema de archivos correspondiente al volumen lógico.
root [ ~ ]# resize2fs -p /dev/vg0/data
resize2fs 1.41.3 (12-Oct-2008)
Filesystem at /dev/vg0/data is mounted on /data; on-line
resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg0/data to 1572864 (4k)
blocks.
The filesystem on /dev/vg0/data is now 1572864 blocks long.
Supongamos que ahora nuestras necesidades nos exigen que el tamaño del volumen lógico
vuelva a ser de 4 GB. El procedimiento es el siguiente:
Desmontar el volumen lógico con uso del comando umount
root [ ~ ]# umount /data
Realizar una comprobación de la estructura e integridad del sistema de ficheros.
root [ ~ ]# e2fsck -f /dev/vg0/data
e2fsck 1.41.3 (12-Oct-2008)
Salida truncada...
/dev/vg0/data: ***** FILE SYSTEM WAS MODIFIED *****
/dev/vg0/data: 11/393216 files (0.0% non-contiguous),
59535/1572864 blocks
Asignamos el tamaño deseado al sistema de archivos con el comando rezise2fs
root [ ~ ]# resize2fs /dev/vg0/data 4G
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/vg0/data to 1048576 (4k) blocks.
The filesystem on /dev/vg0/data is now 1048576 blocks long.
Asignamos el tamaño deseado al volumen lógico con el comando lvreduce, esta
operación podría destruir los datos así que debe realizarse con precaución, el comando nos
pedirá una confirmación para ejecutarse.
root [ ~ ]# lvreduce -L 4G /dev/vg0/data
WARNING: Reducing active logical volume to 4.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: y
Reducing logical volume data to 4.00 GB
Logical volume data successfully resized
Concluida la operación podemos verificar que se efectuado con éxito con el comando
lvdisplay
root [ ~ ]# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/data
Salida truncada...
LV Size 4.00 GB
Salida Truncada...
- currently set to 256
Block device 254:0
Montamos el volumen lógico en ―/data‖
root [ ~ ]# mount /dev/vg0/data /data
7.7 Crear un área de intercambio (SWAP) utilizando un archivo En ocasiones pude resultar útil generar una nueva área de intercambio (SWAP), esta se genera
normalmente en el proceso de instalación de Beakos y la regla nos dice que debe ser del doble
de tamaño que la memoria RAM, pero puede darse el caso en ambientes de producción que
algunas aplicaciones no exigan aumentar este tamaño una alternativa adecuada es la
utilización de un archivo como memoria SWAP, el procedimiento es el siguiente:
Creamos el archivo, este ejemplo lo haremos con 256 megas.
root [ ~ ]# dd if=/dev/zero of=/data/espacioswap bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes (268 MB) copied, 1.20527 s, 223 MB/s
El comando anterior creó un archivo de 265 Megas. Le asignamos un sistema de archivos
SWAP, de la siguiente forma:
root [ ~ ]# mkswap /data/espacioswap
Setting up swapspace version 1, size = 262140 KiB
no label, UUID=9688c1d7-812b-4789-8bc3-17a0bb5a8e38
Activamos el archivo SWAP
root [ ~ ]# swapon /data/espacioswap
Verificamos el archivo /proc/swaps
root [ ~ ]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 506036 8612 -1
/data/espacioswap file 262136 0 -2
Podemos observar que nuestro archivo SWAP se encuentra activo. Por último agregamos la
línea correspondiente al archivo /etc/fstab con el objetivo de que esté disponible al
arranque del sistema operativo.
root [ ~ ]# echo "/data/espacioswap swap swap defaults 0
0">> /etc/fstab
Capí tulo 8 Configuracio n del firewall de Beakos GNU/Linux
9.1 Netfilter Netfilter es un framework dentro del Kernel de Linux disponible desde la versión 2.4, su
función es interceptar, manejar y redireccionar paquetes de red entre otras funciones.
Netfilter está disponible en prácticamente todas las distribuciones de GNU/Linux en la
actualidad su componente más popular es el comando iptables, que facilita la creación,
modificación y eliminación de reglas según sea requerido en un sistema.
Firewall
Iptables
Internet
Red local
eth0 eth1
Figura 8-1. Configuración general básica de un firewall con IPtables
8.2 Funcionamiento de IPtables IPtables se denomina normalmente a la herramienta para la administración de paquetes del
firewall de Linux, pero en realidad se trata de un complejo sistema de componentes como
Netfilter, Conntrack, NAT y por supuesto el comando iptables.
Uno de los principales componentes de IPtables es el filtrado de paquetes (packet filtering), su
función es la de analizar el encabezado del paquete (header) a medida que pasa por el núcleo y
el sistema operativo en general y decide qué hacer con este. Según las reglas configuradas en
nuestro sistema operativo este puede decidir aceptar el paquete (ACCEPT), descartar el
paquete (DROP) o bien reenviar el paquete (FORWARD ) entre otras opciones más complejas.
IPtables nos ofrece la posibilidad de crear reglas para el filtrado de paquetes, estas reglas se
agrupan para formar cadenas y estas a su vez conforman tablas, cada una de estas tablas se
asocia a un determinado procesamiento de paquetes. Cada regla de IPtables contiene
información específica como la dirección IP, el puerto de destino del paquete y lo que se va a
decidir hacer con él (TARGET) , todos los paquetes que ingresan o egresan en el sistema
operativo atraviesan por lo menos una cadena y los paquetes deben de coincidir por lo menos
con alguna de ellas. Si un paquete llega al final de la cadena sin coincidir con ninguna regla
este será descartado o acepta según la política por defecto.
Trafico saliente
Trafico entrante
Pa
qu
ete
reglaDROP
Pa
qu
ete
regla ACCEPT
Ca
de
na
s
regla
Pa
qu
ete
regla
Pa
qu
ete
DROP
ACCEPT
Figura 8-2. Esquema general del manejo de paquetes en IPtables.
Aviso Existen disponibles 65535 puertos, ya sea UDP
o TCP, en los sistemas basados en UNIX como
BeakOS el usuario root solo puede escuchar del 1 al
1023.
Existen tres tipos de cadenas básicas en la tabla Filter (filtrado de paquetes): INPUT, OUTPUT y
FORDWARD, se puede generar la cantidad de cadenas que se requieran, pata la tabla NAT
(traducción de direcciones): OUTPUT, PREROUTING y POSTROUTING.
Tabla 8-1. Tablas de Netfilter.
Cadena Tabla
Filter Nat Mangle
INPUT X X
FORDWARD X X
OUTPUT X X X
PREROUTING X X
POSTROUTING X X
8.3 Manejo de IPtables Beakos GNU/Linux incluye la instalación de Netfilter y de la herramienta IPtables, la sintaxis
correcta para utilizar el comando iptables esta siguiente:
iptables –t [TABLA] COMANDO [REGLA] [OPCIONES]
TABLA puede ser cualquiera de las tablas siguientes:
filter: destinada al filtrado de paquetes
nat: destinada a generar reglas para traducción de direcciones
mangle: destinada a efectuar marcados de paquetes
COMANDO se refiere a la acción que realizará iptables con la regla, es decir agregarla (-A),
insertarla (–I), borrarla (–D) ó reemplazarla (-R), etc..
Ejemplos con el comando –A, --append:
iptables –t filter –A INPUT –s 192.168.1.0 –j DROP
Bloquear todos los paquetes que vengan de la red 192.168.1.0 (agregará la regla al final de la
cadena).
iptables –t filter –A OUTPUT –s 192.168.3.20 –j ACCEPT
Aviso de no especificar cualquiera de las anteriores,
la tabla por defecto que utilizará el comando
iptables será filter.
Aceptar todos los paquetes que vengan de la dirección IP 192.168.3.20 (agregará la regla al
final de la cadena).
Ejemplos con el comando –I, --insert:
iptables –t filter –I INPUT –s 192.168.1.0 –j DROP
Bloquear todos los paquetes que vengan de la red 192.168.1.0 (agregará la regla al principio
de la cadena).
iptables –t filter –I OUTPUT –s 192.168.3.20 –j ACCEPT
Aceptar todos los paquetes que vengan de la dirección IP 192.168.3.20 (agregará la regla al
principio de la cadena).
Ejemplos con el comando –D, --delete:
iptables –t filter –D INPUT –s 192.168.1.0 –j DROP
Borrara la regla que bloquee los paquetes provenientes de la red 192.168.1.0.
iptables –t filter –D OUTPUT –s 192.168.3.20 –j ACCEPT
Borrará la regla que acepte los paquetes salientes a la dirección 192.168.3.20.
Ejemplos con el comando –R, --replace:
iptables –t filter –R INPUT 1 –s 192.168.1.0 –j DROP
Reemplazará la regla 1 que bloquee los paquetes provenientes de la red 192.168.1.0.
iptables –t filter –R OUTPUT 3 –s 192.168.3.20 –j ACCEPT
Reemplazará la regla 3 que acepte los paquetes salientes a la dirección 192.168.3.20.
Ejemplos con el comando –L, --list:
iptables –L –n
Muestra todas las reglas de iptables.
iptables –t filter –L
Muestra todas las reglas de iptables correspondientes a la tabla FILTER.
iptables –t nat –L
Muestra todas las reglas de iptables correspondientes a la tabla NAT.
iptables –t nat –L PREROUTING
Muestra todas las reglas de iptables correspondientes a la tabla NAT en la cadena
PREROUTING.
Ejemplos con el comando –F, --flush:
iptables –t filter –F INPUT
Borra todas las reglas de la cadena INPUT de la tabla FILTER
Ejemplos con el comando –Z, --zero
iptables –Z input
Los contadores de reglas para la cadena INPUT de la tabla filter de reinicializarán a cero.
8.4 Opciones de comandos de IPtables A algunos de los comandos antes descritos podemos añadir las siguientes opciones:
Opción 1: -v, --verbose
Ejemplo:
iptables –t nat –L –v
iptables –L –v
Comandos que permiten verbosidad:
-L, --list
-A, --append
-I, --insert
-D, --delete
-R, --replace
Esta opción al ser utilizada con –L , mostrará en pantalla los contadores de paquetes y las
interfaces de entrada y salida para cada regla.
Figura 8-3. Visualización de reglas a detalle aplicadas en Beakos
Al utilizarla con los demás comandos nos mostrará información más detallada de la regla en
cuestión.
Opción 2: -x, --exact
Ejemplo:
iptables –t filter –L –v –x
iptables –L –x
Comandos que la aceptan esta opción:
-L, --list
Esta opción no muestra el valor de los contadores en bytes de manera exacta.
Opción 3: -n, --numeric
Ejemplo:
iptables –t nat –L PREROUTING –n –v
Comandos que aceptan esta opción:
-L, --list
Esta opción mostrará en pantalla todas las reglas de la cadena
POSTROUTING de la tabla de nat con los contadores de paquetes y
los bytes para cada regla sin resolver las direcciones IP o los
puertos y los mostrará en formato numérico.
Figura 8-4. Visualización de reglas resumidas aplicadas en Beakos.
8.4.1 Destinos de las reglas (target) Podemos determinar el destino de un paquete que atraviesa por una regla, por ejemplo
podemos aceptarlo, denegarlo, procesarlo por alguna otra cadena, para la asignación del
target se utiliza el parámetro –j o –jump, la sintaxis sería la siguiente:
iptables –t [TABLA] COMANDO MATCH [-j TARGET] [OPCIONES]
Opciones más comunes:
DROP hace que Netfilter descarte el paquete sin nigún otro tipo de procesamiento.
ACCEPT hace que netfilter acepte el paquete.
LOG conecta el sistema con el sistema de log del kernel
REJECT envía una notificación de que el paquete ha sido rechazado al origen del mismo.
QUEUE hace que netfilter encole el paquete en el espacio de un usuario.
RETURN Hace que el paquete en cuestión deje de circular por la cadena en cuya regla se
ejecutó el destino return.
8.4.2 Especificaciones de las reglas
-i, --in-interface
Específica la interfaz de red por donde el paquete será recibido.
Ejemplo:
iptables –A INPUT –i eth0 –j ACCEPT
-o, --out-interface
Específica la interfaz de red por la cual un paquete será enviado.
Ejemplo:
iptables –A OUTPUT –o eth1 –d 192.168.0.4 –j DROP
-p, --protocol
Específica el protocolo de un determinado paquete, las opciones posibles son icmp, udp y tcp
Ejemplo:
iptables –I INPUT –s 200.38.146.24 –p tcp –j ACCEPT
iptables –A INPUT -i eth1 –p tcp –j DROP
-s,--source
Especifica el origen de una dirección Ip o un grupo de direcciones IP especificadas por un
sufijo.
Ejemplo:
iptables –A INPUT –s 192.168.2.0/24 –j ACCEPT
--sport
Especifica los puertos de donde proviene un paquete, puede ser tcp o udp dependiendo de la
opción –p.
iptables –I INPUT –-sport 1000 –s 192.168.4.32 -J ACCEPT
iptables –A INPUT –p tcp –-sport 23:27 –j ACCEPT
--dport
Especifica el puerto destino de un paquete, puede ser tcp o udp dependiendo de la opción –p.
iptables –A INPUT –p tcp -–dport 80 –j ACCEPT
iptables –I INPUT –p udp –-dport 161 –j DROP
8.4.3 Seguimiento de conexiones Esta es una de las características más importantes de Netfilter (connection traking), le permite
al kernel llevar la cuenta de las conexiones de red y de esta forma relacionar los paquetes que
pueda llegar a ser parte de la conexión, esta información se clasifica en 4 estados.
NEW
Intentando crear una nueva conexión.
ESTABLISHED
Parte de una conexión ya existente.
RELATED
Relacionada, no necesariamente parte de una conexión existente.
INVALID
No es parte de una conexión existente ni puede crear una conexión nueva.
Ejemplo:
iptables –A INPUT –m state -–state ESTABLISHED,RELATED –j ACCEPT
iptables – I INPUT –m state --state NEW –p tcp –-dport 25 –j ACCEPT
iptables –A INPUT –m state –-state NEW –j DROP
8.4.4 Persistencia de las reglas Iptables no se ejecuta sobre Beakos como un demonio, las reglas se almacenan en la
memoria y estas no persisten a un reinicio del sistema. Para que las reglas persistan al reinicio
del sistema deben almacenarse en el archivo /etc/rc.d/rc.iptables
Figura 8-5. Archivo de configuración del firewall de Beakos.
Comando para aplicar la configuración una vez modificado el archivo.
root [ ~ ]#/etc/init.d/iptables start
Comando para borrar la configuración y dejar el firewall sin reglas aplicadas
root [ ~ ]#/etc/init.d/iptables clear
Comando para mostrar la configuración y las reglas aplicadas
root [ ~ ]#/etc/init.d/iptables status
Bloquear todo el tráfico entrante y saliente
root [ ~ ]#/etc/init.d/iptables lock
8.5 Network Address Translation (NAT) La NAT (Network Address Translation) permite proteger a los anfitriones de la red interna del
router, esto tiene como ventaja que los equipos de la red interna permanezcan ocultos al
exterior. Implementando Netfilter, NAT se divide en las siguientes categorías:
Source NAT (SNAT)
Destination NAT (DNAT)
Masquerading
SNAT es el responsable de cambiar las direcciones IP y puerto origen, para que un paquete
aparezca como proveniente de la puerta de enlace por donde sale el paquete en cuestión. Ésta
es la de mayor uso para el caso en que una red privada necesite utilizar una dirección IP desde
el exterior. Para utilizar un SNAT es necesario conocer la dirección IP origen al momento de
definir la regla, otro uso de SNAT es cuando se requiere que un host aparezca con otra
dirección IP generalmente pública.
DNAT es responsable de cambiar la dirección IP y puertos destino, con el objetivo de que el
paquete se dirija a otra dirección IP diferente de la que originalmente se tenía destinada, esto
resulta útil para redireccionar todo el tráfico web hacia un servidor proxy por ejemplo.
MASQUERADING, es sencillamente un caso especial de SNAT, esto resulta útil cuando existen
múltiples sistemas en el interior de una red LAN que requieren salir a internet a través de una
sola dirección IP pública.
NAT
Eth0 192.168.1.1
Eth1 207.249.24.254
Cliente: 192.168.1.2
Gateway: 192.168.1.1
Figura 8.6 Diagrama de SNAT en una conexión
NAT
Eth0 192.168.1.1
Eth1 207.249.24.254
Cliente: 207.249.161.19
Servidor: 192.168.1.7
Gateway: 192.168.1.1
De: 207.249.161.19:1025
A:192.168.1.7:80
De: 207.248.161.19:49100
A:207.249.24.254:80
Figura 8-7. Diagrama de DNAT en una conexión
8.5.1 Compartir Internet en una red LAN Script de ejemplo para compartir Internet con una Red LAN a través de un equipo con dos
interfaces de red. Eth0 es la interfaz conectada al router y eth1 es la interfaz conectada a la red
local.
#!/bin/sh
# Modulos de firewall para Iptables
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe iptable_mangle
## Borrado de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Políticas por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
# Todo lo que venga de una red externa con destino al
#puerto 80 lo redireccionamos a una IP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
DNAT --to 192.168.10.12:80
# Permitir conexiones entrantes a localhost
iptables -A INPUT -i lo -j ACCEPT
# Permitir el acceso local desde el firewall
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT
# Abrir el acceso al servicio de correo SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
# Abrir el acceso al servicio de correo POP3
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
# Permitir el acceso a servidores web
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --
dport 80 -j ACCEPT
# Permitir el acceso a servidores web seguros
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --
dport 443 -j ACCEPT
# Permitir consultas a servidores DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --
dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --
dport 53 -j ACCEPT
#Enmascarar la red local para que los equipos de la red
#local puedan salir la interfaz eth0
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0
-j MASQUERADE
#Activar el bit para el reenvío de paquetes a nivel de
#kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
#Permitir conexiones entrantes y sus respectivos puertos
iptables –A INPUT –m state -–state NEW,ESTABLISHED,RELATED
–j ACCEPT
#Denegar los servicios no utilizados
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP
8.5.2 Configuración de un firewall simple Configuración de un firewall simple para protección de servicios en Beakos GNU/Linux
#!/bin/sh
# Modulos de firewall para Iptables
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe iptable_mangle
# Borrado de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Políticas por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#Aceptar conexiones al localhost
iptables –A INPUT –i lo –j ACCEPT
#Permitir la entrada de ping al sistema
iptables –A INPUT –p icmp –j ACCEPT
#Permitir conexiones existentes y relacionadas
#(indispensable)
iptables –A INPUT –m state –state ESTABLISHED,RELATED –j
ACCEPT
#Permitir conexiones al protocolo SSH desde el exterior
#Podemos permitir más puertos como se requiera
iptables –A INPUT –p tcp --dport 22 –j ACCEPT
#Activar el uso de syslog para iptables
iptables –A INPUT –j LOG
#Rechazar todo lo demás
iptables –A INPUT –j REJECT
Aviso Al terminar de ingresar los comandos
anteriores al archivo /etc/rc.d/rc.iptables
no olvidemos iniciar el servicio.
8.6 Configuración del firewall con Webmin Beakos GNU/Linux cuenta con una interfaz de configuración para el cortafuegos a través de la
aplicación Webmin, para accesar a ella debemos utilizar un navegador web tecleando la url
siguiente:
https://direccion_ip:10000
Una vez que ingresemos al conjunto de menús seleccionaremos la opción red y el submenú
Cortafuegos Linux.
Figura 8-8. Interfaz de Webmin para la administración del firewall.
Con la interfaz de configuración podemos definir configuraciones por defecto:
Permitir todo el tráfico.
Hacer una traducción de dirección de red en la interfaz externa.
Bloquear todo el tráfico excepto SSH e IDENT en una interfaz externa.
Bloquear todo el tráfico excepto SSH , IDENT y ping en una interfaz.
Bloquear todo el tráfico excepto los puertos usados para servicios de internet.
Además de estas plantillas prediseñadas podemos agregar reglas personalizadas a cada una de
ellas. Seleccionando la opción añadir reglas dentro de las políticas por defecto (INPUT,
OUTPUT, FORWARD).
Figura 8-9. Creación de reglas de Iptables a través de Webmin.
A diferencia de la configuración manual las reglas creadas con la interfaz de webmin se
almacenarán en el archivo /etc/webmin/firewall/iptables.save
Capí tulo 9 Sistema de archivos /proc
10.1 Archivos dentro del directorio /proc El sistema de archivos proc contiene información acerca de la configuración del sistema,
dentro de este se puede observar el estado actual del Kernel y los procesos que se estén
ejecutando, además también se puede encontrar información detallada sobre dispositivos de
hardware, algunos archivos que se encuentran dentro de /proc pueden ser modificados por
usuarios que tengan permiso de escritura en este directorio. Como ya se ha estudiado en los
sistemas GNU/Linux todo se maneja como archivo y los hay de tres tipos:
Binarios
De texto
Virtuales
Los que se encuentran dentro de /proc son archivos virtuales sus principales características
son:
Son de tamaño 0 bytes
El Sistema Operativo los genera conforme se consultan
Son constantemente modificados por el Sistema Operativo
Algunos archivos solo pueden ser leídos por el usuario “root”
Como ya se ha mencionado algunos archivos pueden ser modificados, esto con la finalidad de
ajustar la configuración del kernel, comúnmente esto ocurre con los archivos que están dentro
de /proc/sys. Para modificar un archivo virtual, se debe hacer de la siguiente forma:
echo [texto_nuevo] > [ruta_del_archivo]
Ejemplo:
root [ ~ ]# echo beakos.com.mx > /proc/sys/kernel/hostname
Los archivos que comúnmente se pueden encontrar dentro de /proc pueden variar ya que los
directorios con número hacen referencia a los procesos que se están ejecutando en esos
momentos. A continuación se listan algunos de los directorios más importantes dentro de este
sistema de archivos:
A continuación se describen algunos de los directorios más importantes:
9.1.1 buddyinfo
Este archivo utiliza un algoritmo llamado buddy para diagnosticar los problemas de
fragmentación que ocurren en memoria.
root [/proc]# cat buddyinfo
Node 0, zone DMA 4 5 3 3 3 2 2 1 1
1 2
Node 0, zone Normal 13 4 1 3 2 17 15 9
3 2 4
9.1.2 cmdiline
Este archivo permite visualizar los parámetros pasados al kernel en el momento en que este se
inicia.
root [/proc]# cat cmdline
root=/dev/sda2 ro quiet splash vga=788
9.1.3 cpuinfo
Este archivo identifica las características principales del procesador utilizado por el sistema.
Processor: Enumera cada uno de los procesadores que reconoce el sistema empezando por 0
para el primer procesador, 1 para el segundo y así sucesivamente.
cpu-family: Proporciona el tipo de procesador que se encuentra en el sistema.
model
model name: Muestra el nombre del procesador.
cpu Mhz: Muestra la velocidad del procesador indicada en Mhz
cache size: Muestra la cantidad de memoria
root [ /proc ]# cat cpuinfo
processor :0
vendor_id :GenuineIntel
cpu family :6
model :23
model name :23
stepping :6
cache size :0 KB
fdiv_bug :no
hlt_bug :no
f00f_bug :no
coma_bug :no
fpu :yes
fpu_exception :yes
cpuid level :5
wp :yes
flags :fpu vme de pse tsc msr pae cx8 apic sep mtrr
pge mca cmov pat
bogomips :3497.67
clflush size :64
9.1.4 crypto
Este archivo muestra en forma de listado los códigos de cifrado utilizados por el kernel de
Linux.
root [ ˜ ]# cat /proc/crypto
name :md5
driver :md5-generic
module :kernel
priority :0
refcnt :1
type :digest
blocksize :64
digestsize :16
9.1.5 devices
Muestra los diferentes dispositivos tanto de caracteres como de bloque que se encuentran
configurados (no incluye dispositivos cuyos módulos no están cargados). A continuación se
muestran los datos que contiene este archivo.
root [ /proc ]# cat devices
1 mem
4 /dev/vc/0
4 tty
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
116 alsa
128 ptm
136 pts
9.1.6 dma
Este archivo muestra los canales registrados DMA ISA en uso.
root [ /proc ]# cat dma
4: cascade
9.1.7 filesystems Lista los sistemas de archivos que están soportados por el kernel.
root [ /proc ]# cat filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev debugfs
nodev securityfx
nodev sockefs
nodev pipefs
nodev amon_inodefs
nodev tmpfs
nodev inotifyfs
nodev devpls
9.1.8 interrupts
Muestra la interrupciones que están siendo utilizadas y cuantas de cada tipo ha habido.
root [ /proc ]# cat interrupts
0: 95 XT-PIC-XT timer
1: 602 XT-PIC-XT i8042
2: 0 XT-PIC-XT cascade
5: 0 XT-PIC-XT Intel 82801AA-ICH
9: 0 XT-PIC-XT acpi
10: 0 XT-PIC-XT ehci_hcd:usb2, eth0
11: 0 XT-PIC-XT ohci_hcd:usb1
12: 2896 XT-PIC-XT i8042
14: 1103 XT-PIC-XT ata_piix
15: 162 XT-PIC-XT ata_piix
NMI: 0 XT-PIC-XT ata_piix
...
9.1.9 loadavg
El nivel medio de carga del sistema; tres indicadores significativos sobre la carga de trabajo del
sistema en cada momento.
root[ /proc ]# cat loaddavg
0.02 .0.00 2/38 149
9.1.10 meminfo
Información acerca de la utilización de la memoria física y del archivo de intercambio.
root [ /proc ]# cat meminfo
MemTotal: 4027012 kB
MemFree: 3935932 kB
Buffers: 1092 kB
Cached: 19088 kB
SwapCached: 0 kB
Active: 70288 kB
Inactive: 3340 kB
HighTotal: 3145664 kB
HighFree: 3068876 kB
LowTotal: 881348 kB
LowFree: 867056 kB
SwapTotal: 4200988 kB
SwapFree: 4199620 kB
Dirty: 136 kB
Writeback: 0 kB
AnonPages: 53460 kB
Mapped: 15820 kB
Slab: 8136 kB
SReclaimable: 2348 kB
SUnreclaim: 5788 kB
PageTables: 1140 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6214492 kB
Committed_AS: 378096 kB
VmallocTotal: 114680 kB
VmallocUsed: 6596 kB
VmallocChunk: 107876 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 4096 kB
9.1.11 modules
Indica los módulos del núcleo que han sido cargados hasta el momento.
root [ /proc ]# cat modules
ipv6 232636 12 - Live 0xf04c9000
iptable_mangle 3584 0 - Live 0xf044c000
ipt_REJECT 3584 0 - Live 0xf044a000
ipt_LOG 5764 0 - Live 0xf0435000
ipt_MASQUERADE 3456 0 - Live 0xf0438000
nf_nat_ftp 3456 0 - Live 0xf034f000
iptable_nat 5640 0 - Live 0xf043d000
nf_nat 16408 3 ipt_MASQUERADE,nf_nat_ftp,iptable_nat, Live
0xf0444000
xt_state 2944 1 - Live 0xf02af000
nf_conntrack_ftp 7716 1 nf_nat_ftp, Live 0xf043a000
nf_conntrack_ipv4 12940 4 iptable_nat,nf_nat, Live 0xf040e000
nf_conntrack 55892 7
ipt_MASQUERADE,nf_nat_ftp,iptable_nat,nf_nat,xt_state,nf_co
nntrack_ftp,nf_conntrack_ipv4, Live 0xf046c000
iptable_filter 3456 1 - Live 0xf0031000
ip_tables 11024 3 iptable_mangle,iptable_nat,iptable_filter,
Live 0xf0414000
x_tables 14084 6
ipt_REJECT,ipt_LOG,ipt_MASQUERADE,iptable_nat,xt_state,ip_table
s, Live 0xf041f000
parport_pc 22548 0 - Live 0xf0418000
parport 31572 1 parport_pc, Live 0xf0376000
pcspkr 3200 0 - Live 0xf0057000
snd_intel8x0 26652 0 - Live 0xf0368000
snd_ac97_codec 90404 1 snd_intel8x0, Live 0xf0454000
ac97_bus 2560 1 snd_ac97_codec, Live 0xf0019000
snd_pcm 63108 2 snd_intel8x0,snd_ac97_codec, Live 0xf0424000
snd_timer 18440 1 snd_pcm, Live 0xf0370000
…
9.1.12 mounts Muestra las particiones y lo puntos de montaje activos.
root [ /proc ]# cat mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,size=10240k,mode=755 0 0
/dev/hda1 / ext3 rw,errors=continue,data=ordered 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,gid=4,mode=620 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/hda2 /root/distro ext3 rw,errors=continue,data=ordered 0 0
9.1.13 partitions Muestra las particiones existentes
root [ /proc ]# cat partitions
major minor #blocks name
3 0 39082680 hda
3 1 19923592 hda1
3 2 17826480 hda2
22 0 39082680 hdc
22 1 10490413 hdc1
22 2 1060290 hdc2
120 60 8 : slabdata 1 1 0
9.1.14 stat
Muestra varias estadísticas acerca del sistema, tales como el número de fallos de página que
han tenido lugar desde el arranque del sistema.
root [ /proc ]# cat stat
cpu 250 48 294 628400 384 6 2 0 0
cpu0 250 48 294 628400 384 6 2 0 0
intr 31558 67 8 0 0 0 0 0 0 1 0 0 0 0 0 1311 259 0 0 0 29912 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
9.1.15 swaps
Muestra las particones SWAP activas en el sistema.
root [ /proc ]# cat swaps
Filename Type Size Used Priority
/dev/sda3 partition 506036 0 -1
9.2 Ajustes dentro de /proc Muchos de los archivos virtuales que residen dentro de /proc tienen un modo de lectura y
escritura, archivos residentes en /proc/sys/net/ipv4 se pueden modificar de forma
muy dinámica, la mayoría de los archivos contienen sólo números, muchos de ellos valores
booleanos que si son modificados cambian el comportamiento del sistema, para ver los
cambios que es posible realizar consulte la documentación del Kernel en cuestión.
Ejemplo:
root [ /proc ]# echo 1 >/proc/sys/net/ipv4/ip_forward
La instrucción anterior habilitó (1 activado), el reenvio de paquetes, esto resulta útil si nuestro
sistema se utilizará como un router.
9.3 Uso del comando sysctl Como se ha mencionado el sistema de archivos /proc es virtual y por consecuencia los
cambios aplicados a este no seguirán vigentes después de haber aplicado un reinicio al
sistema. la herramienta sysctl, permite hacer que los cambios en el sistema de archivos
/proc. Sysctl cuenta con un archivo de configuración en /etc/sysctl.conf, que es
donde se almacenan los parámetros que el sistema modificará en /proc al iniciarse. Se
recomienda revisar las entradas del archivo /etc/sysctl.conf, y la documentación del
Kernel.
Archivo de configuración de sysctl en Beakos
root [ /proc ]# cat /etc/sysctl.conf
#Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the
kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core
filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
La sintaxis correspondiente al comando sysctl corresponde a:
sysctl [opciones] variable=[valor]
Nota Los cambios realizados en /proc, no
persistirán a un reinicio, para ello debe guardarlos
en el archivo /etc/sysctl.conf
La variable es utilizada para fijar el valor fijar un valor.
Ejemplos:
root [ ~ ]# sysctl kernel.core_uses_pid=0
kernel.core_uses_pid = 0
root [ ~ ]# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Tabla 10-1. Opciones más comunes para el comando sysctl.
Opción Descripción
-n No muestra el nombre de la variable, sólo el valor.
-e Ignora errores referentes a claves desconocidas.
-w Se utiliza para cambiar la un ajuste de sysctl.
-p Carga la configuración que está escrita en el archivo de configuración de sysctl.
-a Presenta todos los valores disponibles que están configurados.
Capí tulo 10 Gestio n de paquetes
11.1 Instalación y desinstalación de paquetes Beakos GNU/Linux implementa la administración de paquetes en formato “.tgz”que no es más
que un archivo tar comprimido con GZIP, aunque soporta otros formatos como RPM de Red
Hat y Pacman de Arch Linux de forma complementaria.
Un paquete de software es un conjunto de archivos que mantienen una relación entre si y que
han sido compilados para poder funcionar luego de que se instalen en el sistema, esto
representa la ventaja de que no es necesario compilar el software desde el código fuente para
utilizarse, esto ya se ha hecho con anticipación.
10.1.1 Comando installpkg El comando installpkg permite instalar paquetes (.tgz) de forma directa, es importante
mencionar que esta aplicación no resuelve dependencias, por lo que es un poco difícil saber si
el paquete que instalemos requerirá de algún otro, la lista de paquetes instalados se almacena
en la ruta /var/log/packages, su sintaxis es la siguiente:
installpkg <paquete_con_extensión_.tgz>
Ejemplo: root [ ~ ]# installpkg iproute2-2.6.26-i386-1.tgz
+---------------------------------------------------------------
----------------+
| Installing package iproute2-2.6.26-i386-1.tgz...
|
+---------------------------------------------------------------
----------------+
Executing install script for iproute2-2.6.26-i386-1.tgz...
PACKAGE DESCRIPTION:
Programas básicos y avanzados para ipv4
10.1.2 Comando removepkg Este comando nos permite desinstalar un paquete previamente instalado su sintaxis es la
siguiente:
removepkg <nombre_paquete_sin_extension>
Ejemplo:
root [ ~ ]# removepkg iproute2-2.6.26-i386-1
Removing package iproute2-2.6.26-i386-1...
Removing files:
--> Deleting ./etc/iproute2/ematch_map
--> Deleting ./etc/iproute2/rt_dsfield
--> Deleting ./etc/iproute2/rt_protos
--> Deleting ./etc/iproute2/rt_realms
--> Deleting ./etc/iproute2/rt_scopes
--> Deleting ./etc/iproute2/rt_tables
…Salida truncada…
Es importante notar que para la desinstalación de un paquete no es necesario poner su
extensión “.tgz”, la lista de paquetes instalados se obtiene del archivo
/var/log/packages.
10.2 Administración de paquetes con SWARET Swaret es un administrador de paquetes creado inicialmente para la distribución de GNU/Linux
Slackware que ha sido adaptado para funcionar con Beakos, esta herramienta facilita la
instalación de paquetes porque nos permite comprobar las dependencias de los paquetes e
instala las faltantes.
Swaret permite la interacción con repositorios de software bajo los protocolos http, ftp, rsync,
sistemas de ficheros locales y NFS.
10.2.1 Archivo de configuración swaret.conf El archivo de configuración de Swaret se ubica en /etc/swaret.conf, analicemos las
opciones más importantes de este fichero.
VERSION=1.06.001
Indica la versión de Beakos correspondiente al repositorio de software.
LANGUAGE=ESPANOL
Define el lenguaje con el cual se mostrarán los mensajes de error y los mensajes de estado de
la aplicación.
ROOT=http://www.beakos.com.mx/paquetes/beakos-1.05.001
Permite indicar el repositorio de software donde están almacenados los paquetes.
REPOS_ROOT=BEAKOS_PACKAGES%http://www.beakos.com.mx/paquetes/bea
kos-1.06.001
Define el nombre del repositorio del cual vamos a hacer uso, estas opciones están
previamente configuradas, no es recomendable modificarlas, ni agregar repositorios de
software que no correspondan a la distribución de Beakos GNU/Linux.
DEP_ROOT=http://www.beakos.com.mx/paquetes/beakos-1.06.001
Especifica la ruta donde se encuentra el archivo con la lista de dependencias.
RANDOMR=0
Permite elegir de manera aleatoria entre varios repositorios de software. por defecto está
deshabilitada (0).
EXCLUDE=MANIFEST.bz2$
Este parámetro permite excluir nombres de paquetes disponibles en los repositorios que no
deseamos instalar ni actualizar.
DEPENDENCY=1
Permite activar o desactivar el soporte de dependencias, por defecto se encuentra activado.
DSEARCHLIB=1
Realizará un búsqueda de librerías faltantes por todo el sistema.
MD5CHECK=1
Comprueba la integridad de los paquetes.
DESC=0
Muestra una descripción de los paquetes mientras se instalan o actualizan.
CACHE_DIR=/var/swaret
Ruta donde se almacenarán los paquetes que se descarguen de los repositorios.
10.2.2 Opciones del comando swaret El comando swaret permite instalar, actualizar, borrar y consultar si un paquete está
instalado o no. Su sintaxis se describe a continuación.
swaret [opciones] [nombre del paquete] [opción adicional]
Tabla 11-1. Opciones para el comando swaret (sin nombre del paquete).
Opción Descripción
--update Actualiza la lista de archivos disponibles.
--purge Borra los archivos descargados repositorio. Recomendable antes de actualizar.
--list Muestra una lista de paquetes disponibles instalados y no instalados.
--changelog Muestra el archivo de registro de cambios.
--log Muestra los registros generados en la bitácora.
--config Muestra el archivo de configuración de swaret.
--help Muestra las opciones disponibles para el comando.
--morehelp Muestra las opciones disponibles para el comando de forma compleja.
--version Muestra la versión de swaret actual.
Tabla 11-2. Opciones para el comando swaret (con nombre del paquete).
Opción Descripción
--install Instala un paquete.
--reinstall Reinstala un paquete.
--remove Desinstala un paquete.
--get Obtiene un paquete y lo almacena en /var/swaret, pero no lo instala.
--dep Comprueba dependencias de un determinado paquete.
--search Busca si un paquete existe en el repositorio, si está instalado o no.
--show Muestra la descripción de un paquete.
Ejemplos:
Actualizar la lista de paquetes
root [ ~ ]# swaret --update
Instalar paquetes que coincidan con la palabra bash
root [ ~ ]# swaret --install bash
Instalar los paquetes relacionados con la interfaz gráfica (-a) no solicita confirmación.
root [ ~ ]# swaret --install xorg –a
Reinstalar todos los paquetes existentes.
root [ ~ ]# swaret --reinstall –a
Borra los paquetes almacenados en el caché.
root [ ~ ]# swaret –purge
Remover los paquetes que coincidan con la palabra glib.
root [ ~ ]# swaret --remove glib
Instalar los paquetes para desarrollo.
root [ ~ ]# swaret –install developer -a
10.3 Compilación de software desde el código fuente El equipo desarrollo de Beakos se esfuerza por ofrecer una mayor cantidad de software cada
vez para la distribución, sin embargo es probable que algún paquete que usted necesite no se
encuentre dentro de los repositorios de software, la mayoría del software requerido para
implementar Beakos está disponible en los repositorios, es importante describir la forma de
compilar e instalar software desde el código fuente, compilar un programa permite elegir las
opciones más adecuadas para su compilación, lo que no se puede hacer con un paquete ya
construido y distribuido a través de los repositorios.
El software en código fuente está disponible en un archivo tar, comprimido normalmente con
GZIP o BZIP2.
Para poder construir el software desde el código fuente es necesario contar con el compilador
GCC, los encabezados del Kernel (Linux headers) y la utilidad make. Podemos instalarlos a
través de los repositorios. Dependiendo del software a compilar, este puede requerir paquetes
adicionales que quizá ya se encuentren dentro de los repositorios listos para instalarse.
root [ ~ ]# swaret --install gcc
root [ ~ ]# swaret --install linux-headers
root [ ~ ]# swaret –install make
Procedemos para fines didácticos a compilar el editor de textos nano.
El primer paso es obtener una copia del código fuente del software que vamos a compilar.
root [ ~ ]# wget http://www.nano-editor.org/dist/v2.2/nano-
2.2.5.tar.gz
Una vez que hemos descargado una copia del software procedemos a descomprimirla.
root [ ~ ]# tar -xf nano-2.2.5.tar.gz
Terminado el paso anterior, nos cambiamos a la carpeta que se genero tras la descompresión y
revisamos el contenido.
root [ ~ ]# cd nano-2.2.5 ; ls
Es importante observar si dentro de los documentos se encuentra alguno que nos brinde
información especial sobre la instalación del programa (poner especial atención a los archivos
INSTALL y README o similares).
El siguiente paso consiste en la configuración del paquete, la mayoría del software GNU provee
un script llamado configure, este script permite establecer la ruta donde se instalarán los
binarios, los archivos de configuración, las bitácoras, el software contra el que se compilará
entre otras opciones.
Para ver las opciones del script configure ejecutamos:
root [ ~/nano-2.2.5 ]# ./configure --help
Nos mostrará una lista extensa de diversas opciones para compilar el software, una de las
conocidas y más empleadas es la opción prefix, nos permite elegir la ruta donde se
instalará el programa, por ejemplo:
root [ ~/nano-2.2.5 ]# ./configure --prefix=/usr
En esta acción entra en acción un archivo llamado makefile, estos archivos son la base de la
compilación si el script configure falla, no obtendremos un archivos de este tipo, el
siguiente paso consiste en ejecutar el comando make.
root [ ~/nano-2.2.5 ]# make
El comando make busca todos los makefiles que se crearon con el comando configure y
obtiene de ellos la información sobre los archivos que deben ser compilados y en qué orden, si
la compilación se lleva a cabo con éxito (dependiendo de su hardware este proceso puede
tardar algunos minutos) no observará mensajes de error, quizá algunos warnings se muestren
en pantalla, la mayoría de los errores que se presentan en esta fase, están relacionados a la
falta de algún archivo, permisos de usuario y algunos también se deben a la versión del
compilador GCC que se está empleando.
El paso final consiste en la instalación del paquete, si no obtuvo un error en los pasos
anteriores proceda a ejecutar el siguiente comando:
root [ ~/nano-2.2.5 ]# make install
Una vez terminado el proceso, es importante verificar que el software instalado se ejecuta
adecuadamente.
10.3.1 Creación de paquetes con la herramienta Checkinstall Checkinstall es una herramienta que nos permite crear paquetes RPM, DEB y TGZ a partir
del código fuente de las aplicaciones. Empaquetaremos el editor nano compilado en el paso
anterior para dar un ejemplo de su uso. Tecleamos el comando checkinstall:
root [ ~/nano-2.2.5 ]# checkinstall
El programa nos solicitará seleccionar el tipo de paquete que deseamos crear a partir del
código fuente de nano:
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]?
Beakos GNU/Linux utiliza por defecto el sistema de ficheros de Slackware tecleamos la tecla
“S”.
Nos mostrará la siguiente información, revisamos si es que deseamos modificar algún
parámetro, si estamos conformes con la información que nos muestra tecleamos ENTER
This package will be built according to these values:
1 - Summary: [ Editor de textos de consola. ]
2 - Name: [ nano ]
3 - Version: [ 2.2.5 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ nano-2.2.5 ]
9 - Alternate source location: [ ]
Enter a number to change any of them or press ENTER to continue:
El paquete se almacenará en la siguiente ruta con extensión tgz:
/root/nano-2.2.5/nano-2.2.5-i386-1.tgz
Este paquete se puede distribuir a otros usuarios sin necesidad de que lo vuelvan a compilar,
sólo se requiere instalar con el comando installpkg
Capí tulo 11 Sistema de logs
11.1 El demonio Syslogd El Kernel cómo otros demonios y aplicaciones en sistemas GNU/Linux generan registros que se
almacenan en archivos con el objetivo de llevar un control de los sucesos, detectar errores,
mal funcionamiento o situaciones críticas. Estos registros son imprescindibles para cuando se
presenta una falla, son de gran ayuda para detectar y corregir inconsistencias en el sistema.
Syslogd es un demonio que se encarga de recibir los registros del Kernel y de otros demonios
del sistema, syslog viene con parámetros por defecto, pero se puede personalizar su
funcionamiento a través del archivo /etc/syslog.conf.
11.2 Configuración del demonio syslogd El archivo de configuración de syslogd, contiene información necesaria para que el demonio
puede ejecutarse y generar registros de ciertos servicios, por lo general la información
contenida es suficiente para un buen funcionamiento, pero puede darse el caso de que se
requiera configurar Syslog para que envíe mensajes de registro hacia otros sistemas remotos y
que estos pueda recibirlos y almacenarlos.
Tabla 11-1. Parámetros para configuración de syslog.conf
Opción Descripción
auth Mensajes de autenticación de usuarios.
cron Mensajes generados por el demonio cron.
daemon Mensajes de demonios y servicios.
kern Mensajes del núcleo de Linux.
Lpr Mensajes del sistema de impresión.
Mail Mensajes del sistema de correos.
syslog Mensajes relacionados al propio syslog.
User Mensajes relacionados a programas de usuarios.
emerg Situación de emergencia.
alert Mensajes considerados importantes.
crit Mensajes críticos.
err Mensajes de error.
warning Situación potencialmente peligrosa.
notice Informes trascendentes pero no peligrosos.
info Información diversa
debug Informe de corrección de errores.
Nota La mayoría de los archivos log se generan en el
directorio /var/log, aunque en la mayoría de
las aplicaciones se puede modificar este valor
Las opciones por defecto que contiene el archivo de configuración syslogd son las siguientes:
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
cron.* -/var/log/cron.log
# End /etc/syslog.conf
Como podemos observar el archivo de configuración de syslogd la información se canaliza a
diversos archivos.
Información relacionada a la autenticación se canaliza a /var/log/auth.log y
/var/log/sys.log
Información relacionadas con otros demonios del sistema se registra en
/var/log/daemon.log
Mensajes generados por la actividad del Kernel se registran en /var/log/kern.log
Mensajes relacionados al correo electrónico se registran en /var/log/mail.log
Mensajes relacionados a aplicaciones ejecutadas por usuarios del sistema se almacenan en
/var/log/user.log
Registros generados por el sistema de tareas planificadas se almacenan en
/var/log/cron.log
11.3 Enviar registros a otro sistema remoto Syslog nos permite centralizar los logs y enviarlos a un sistema remoto, esto resulta útil porque
en caso de presentarse una falla que no nos permita revisar el sistema local, podemos revisar
los resgitros en el sistema remoto. Supongamos que deseamos enviar los logs relacionados a
los demonios del sistema de un equipo cuya dirección IP es la 192.168.0.128 a un equipo que
tiene la dirección 192.168.0.132. Debemos configurar el archivo de configuración del
/etc/syslog.conf del primer equipo agregando la siguiente línea.
daemon.* @192.168.0.132
El símbolo “@”, nos indica los registros se enviarán a un servidor remoto.
Procedemos con el reinicio del servicio.
root [ ~ ]# /etc/init.d/sysklogd restart
Deteniendo demonio de logs del kernel... [ OK ]
Deteniendo demonio de logs del sistema... [ OK ]
Iniciando demonio de logs del sistema... [ OK ]
Iniciando demonio de logs del kernel... [ OK ]
Ahora bien Beakos GNU/Linux está configurado para sólo recibir logs del propio sistema, en el
sistema que recibirá los logs (192.168.0.132), debemos modificar el script de arranque ubicado
en /etc/init.d/sysklogd agragándole la opción “–r” al demonio syslogd.
Cambiar la línea (21)
loadproc syslogd -m 0
Por
loadproc syslogd -r -m 0
Reiniciar el servicio para aplicar el cambio
root [ ~ ]# /etc/init.d/sysklogd restart
Deteniendo demonio de logs del kernel... [ OK ]
Deteniendo demonio de logs del sistema... [ OK ]
Iniciando demonio de logs del sistema... [ OK ]
Iniciando demonio de logs del kernel... [ OK ]
Los cambios deben verse reflejados en los logs generados por el Kernel, donde se puede
observar la dirección IP de donde provienen los registros.
root [ /var/log ]# tail -f /var/log/kern.log
Sep 23 08:24:31 192.168.0.129 kernel: Kernel logging (proc)
stopped.
Sep 23 08:24:31 192.168.0.129 kernel: Kernel log daemon
terminating.
Capí tulo 12 Servicios sobre demanda
12.1 Extended Internet Daemon Xinetd (eXtended InterNET Daemon) es un servicio muy difundido en ambientes UNIX,
reemplazo de inetd, los sistemas Linux y UNIX como Beakos pueden funcionar perfectamente
sin este servicio, pero en ocasiones es viable utilizarlo para optimizar los recursos.
Xinetd, es un demonio (programas que se ejecutan en segundo plano, una vez iniciados se
liberan de la terminal) que funciona como un administrador de servicios relacionados con el
servidor como FTP, TFTP, Samba SWAT, HTTP, TELNET, etc. No todos los servicios del sistema
se utilizan con tanta frecuencia, en lugar de mantener muchos demonios en ejecución
esperando responder solicitudes; Xinetd se encarga de escuchar esas peticiones y levantar los
servicios correspondientes, esto es útil para servicios como Telnet o algún sistema de
respaldo, no así para servicios como HTTPD, que necesitan estar escuchando peticiones
constantemente.
En resumen, Xinetd recibe la petición y levanta el demonio correspondiente, una vez
terminada la petición desactiva el servicio con el objetivo de optimizar recursos del sistema.
12.2 Instalación del Demonio Xinetd Beakos proporciona en su repositorio de paquetes el demonio Xinetd, para instalarlo
simplemente teclee.
root [ ~ ]# swaret –update
root [ ~ ]# swaret --install xinetd
Swaret instalará el demonio, por defecto Xinetd está configurado para iniciar con el sistema,
podemos corroborarlo tecleando el siguiente comando:
root [ ~ ]# chkconfig --list xinetd
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Xinetd se habilita en los niveles de ejecución 2,3,4 y 5, para iniciar el servicio de forma manual
tecleamos:
root [ ~/servers ]# /etc/init.d/xinetd start
12.3 Configuración del demonio Xinetd Xinetd consta de un archivo de configuración ubicado en /etc/xinetd.conf, donde sólo
se encuentra la configuración por default, si deseamos agregar más servicios debemos crear
un archivo con el nombre del servicio dentro del directorio /etc/xinexd.d/ el formato
que debe tener un archivo de configuración es el siguiente:
bloque
{
variable = valor
}
Cada bloque puede contener múltiples variables definidas dentro de él, el bloque llamado
defaults en el archivo de configuración principal hereda esos parámetros a los demás bloques
definidos en el directorio /etc/xinetd.d
12.3.1 Variables para servicios de Xinetd Para definir un bloque de servicio no se requiere declarar todas las variables, solo son
requeridas las siguientes:
socket_type
user
server
wait
Tabla 12-1. Variables para servicios Xinetd
Variable Descripción
id Especifica un nombre para el servicio, con el objetivo de no duplicarse, de modo predeterminado el id, es el mismo que el nombre del servicio.
type Se puede especificar los siguientes valores RPC si se trata de un servicio RPC, INTERNAL si es un servicio provisto por xinetd, o bien UNLISTED si no es un servicio enlistado en el fichero /etc/services.
socket_type Los valores válidos son los siguientes:
stream: servicio basado en flujo de datos.
dgram: servicio basado en datagramas.
raw: datagramas IP en bruto.
protocol Determina si es protocolo UDP o TCP.
wait Correspondes dos valores:
yes: procesa un conexión por vez.
no: permite múltiples conexiones si el demonio en cuestión también lo permite.
disable Valores:
yes: habilita el servicio para ser utilizado.
no: servicio no disponible para ser usado.
user Nombre del usuario con el que se ejecutará el demonio.
group Nombre del grupo con el que se ejecutará el demonio.
instances Número máximo de conexiones simultáneas permitidas.
log_type Determina como se generaran las bitácoras de registro. Se dispone de dos opciones:
SYSLOG: establecido por defecto, xinetd enviará los archivos log al demonio syslogd.
FILE: enviará los registros de los logs a un archivo especificado. Ejemplo: FILE /var/log/bitacora
server El nombre del programa a ejecutar cuando se solicita este servicio.
server_args Argumentos adicionales al comando a ejecutar.
only_from Especifica las redes o los hosts desde los cuales se puede solicitar una conexión.
no_access Lo contrario de only_from, especifica las redes o hosts desde los cuales no se puede establecer conexión.
cps Especifica el número de conexiones máximas por segundo para el servicio, si se excede de este parámetro el servicio se deshabilitará los segundo declarados en el segundo parámetro. Ejemplo: cps = 10 20
interface Especifica por cual interface responderá el servicio.
port Especifica el puerto por el cual escuchará el servicio, debe estar declarado en el archivo /etc/services.
12.3.2 Ejemplos de servicios a través de Xinetd service ftp
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l
instances = 4
log_on_success += DURATION USERID
log_on_failure += USERID
access_times = 2:00-8:59 12:00-23:59
nice = 10
}
service echo
{
disable = yes
type = INTERNAL
id = echo-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
Una vez creados los bloques dentro del directorio /etc/xinetd.d, sólo basta reiniciar el
servicio de xinetd.
root [ ~ ]# /etc/init.d/xinetd restart
Capí tulo 13 Open SSH
OpenSSH es una versión libre de las herramientas de conexión SSH en la que los usuarios de
Internet confían por su algoritmo de seguridad implementado. Los usuarios de telnet, rlogin, y
ftp no se dan cuenta de que su información se transmite a través de Internet sin cifrar.
OpenSSH cifra todo el tráfico (incluyendo de contraseñas) para neutralizar efectivamente
programas sniffer, secuestro de conexiones y otros ataques. Además, OpenSSH ofrece
creación segura de túneles y varios métodos de autenticación, y soporta todas las versiones
del protocolo SSH. Fue creado como una alternativa libre y abierta al programa Secure Shell,
que es software propietario. El proyecto está liderado por Theo de Raadt, residente en Calgary.
Su seguridad se debe a la buena reputación que han ganado de sus desarrolladores (OpenBSD)
con código limpio y perfectamente auditado, otro factor es el hecho de que su código fuente
se distribuya libremente con una licencia BSD.
13.1 Ventajas de SSH Permite a los usuarios conectarse a un servidor remoto tal como lo estarían haciendo con
Telnet, rlogin, FTP, etc.; excepto que la sesión esta 100% encriptada, si se llegan a capturar los
paquetes, debido a que estos viajan con una encriptación robusta de 128 bits los hace
extremadamente difícil de leer y escribir. Esta es la ventaja principal que presenta Secure Shell
(SSH), esto ocasiona también se pueden ejecutar aplicaciones gráficas de forma segura. Ya
que este protocolo recibe y envía información cifrada se puede utilizar para asegurar
protocolos inseguros mediante el “reenvío por puerto” por ejemplo POP con lo que se
incrementa la integridad de los datos.
13.2 Versiones de SSH Existen actualmente dos versiones de SSH, SSH1 y SSH2. La primera versión (SSH1) propuesta
en 1995 hace uso de diferentes algoritmos de encriptación, debido a que estos algoritmos son
de patentes expiradas es vulnerable a un hueco de seguridad, lo cual permite a intrusos
insertar paquetes en la transmisión de información, en cambio la versión 2 (SSH2) propuesta
en 1997 utiliza un algoritmo de intercambio de llaves dicho algoritmo es la solución al hueco
que presenta la primera versión. Sin embargo dicha versión aún se mantiene vigente por
cuestiones de compatibilidad, aunque siempre se debe considerar usar SSH2.
13.3 Configuración del servidor SSH El servidor SSH maneja un archivo de configuración, el directorio donde se encuentra alojado es: /etc/ssh, aquí encontraremos algunos archivos de configuración: sshd_config: Archivo de configuración del servidor. ssh_config: Archivo de configuración del cliente.
ssh_host_RSA/DSA_key.- Clave privada de la máquina. ssh_host_RSA/DSA_key:pub.- Clave pública de la máquina.
A continuación se describen los parámetros del archivo sshd_config: Port.- Específica el número de puerto que va a ser utilizado por el servidor. Comúnmente suele definirse el puerto 22, sin embargo puede elegirse cualquier otro entre el 1025 y el 65535. Sintaxis: Port [N° que se va a definir]
ListenAddress.- Por defecto SSH responde a peticiones a través de todas las interfaces del sistema. Sin embargo, esta opción puede ser modificada para que se pueda acceder únicamente por la red local a través de una sola interfaz. Sintaxis: ListenAddress [dirección IP]
PermitRootLogin Este parámetro especifica si se va a permitir el acceso al servidor SSH mediante el usuario “root”. Sintaxis: PermitRootLogin [yes/no]
AllowUsers Permite el acceso a los usuarios que se encuentren definidos en este parámetro y restringe a todos a que ellos que queden excluidos. Sintaxis: AllowUsers [usuario1] [usuario2]…
Adicionalmente AllowUsers también permite el acceso a determinados usuarios desde
determinada dirección IP.
Sintaxis:
AllowUsers [[email protected]] [[email protected]]
[[email protected]]...
13.4 Administración del servidor SSH a través de Webmin Una vez instalado OpenSSH es necesario verificar algunas configuraciones previas para que el servidor pueda ser administrado desde webmin:
Que el servidor se inicie al arrancar el sistema.
Que este permitido el acceso a cualquier usuario. Generalmente estos parámetros ya vienen definidos por default en la instalación. El módulo de Webmin que se encarga de administrar tanto al servidor como al cliente ssh se llama SSH Server y se puede descargar del sitio oficial de Webmin en la categoría de servidores.
Como ya se ha visto en otro subtema OpenSSH manejan dos archivos (scripts) para configurar tanto al cliente (ssh) como al servidor (sshd), ssh_config y sshd_config respectivamente ubicados en /etc/ssh, estos archivos son utilizados de igual manera por webmin para la efectuar las configuraciones que el Administrador defina en la aplicación. La página principal del módulo ssh muestra seis íconos:
Autenticación
Redes
Control de Acceso
Opciones Diversas
Opciones del Host Cliente
Administración de las llaves de usuario SSH Cada uno de ellos enlaza a un formulario para editar cada una de las opciones. Restringir el acceso al servidor Seleccionar la opción control de acceso: Para bloquear a todos los usuarios excepto algunos, ingresar una lista con los usuarios permitidos separados por un espacio dentro del único campo que se encuentra activo. También se pueden especificar algunos tipos de usuario en particular por ejemplo: an* Permite el acceso a cualquier usuario que comience con “an”. Otra forma puede ser permitir el acceso a usuarios de determinado grupo, habilitando las opciones Denegar usuarios ó denegar miembros de grupos. Para guardar los cambios realizados damos click en el botón “Guardar” y “Aplicar cambios”. Configuración de la red Seleccionamos la opción de Red en la página principal del módulo: Por defecto el servidor ssh acepta todas las peticiones de conexión, para cambiar esta opción se debe seleccionar el botón “Escuchar en” y en el campo de dirección introducimos las direcciones IP permitidas así como los puertos. Para cambiar el puerto por el que el servidor ssh escucha editar el campo “Escuchar en el puerto”. En la opción “Aceptar Protocolos” seleccionamos las casillas de la versión del protocolo SSH debe aceptar (SSH1 y SSH2). Para que el servidor ssh desconecte automáticamente a los host clientes que se hayan apagado o que no haya cerrado la sesión adecuadamente, existe la opción “Desconectar si el cliente se ha roto” la cual podemos marcar con la opciones “Sí” y “No”. Para configurar el tiempo de espera que el servidor da a los host clientes para autenticarse después de que se hayan conectado modificar el parámetro “Tiempo de espera” en el campo inicio de sesión. Una de las opciones de SSH es que permite el reenvío de puerto, el cual permite a los host clientes acceso a los puertos del servidor que normalmente tendrían bloqueados, esto puede ocasionar una vulnerabilidad al momento de un ataque, para deshabilitar esta opción modificamos el campo “Permitir el reenvío TCP” seleccionando “No”. Para que el servidor busque los nombres de host por su dirección de cliente y bloqueé todas aquellas que no coincidan seleccionamos la opción “Sí” en “validar-reverso de las direcciones IP de los clientes?”. Esta opción viene incluida a partir de la versión 2.3 de OpenSSH.
Siempre que hagamos alguna modificación en la configuración del servidor debemos guardar los cambios dando click en el botón “Guardar” y “Aplciar”. Configuración de la autenticación Seleccionamos la opción de autenticación en la página principal del módulo: Para informar a los usuarios si tienen correo nuevo cuando inicien sesión seleccionar la opción “Sí” en el campo “Notificar al usuario de correo Nuevo”. Para especificar si los usuarios acceden con o sin contraseña modificamos el campo “Permitir la autenticación por contraseña?” Para denegar que los usuarios se autentiquen como root modificar la opción “Permitir inicio de sesión de root” con el parámetro “No”. Para evitar que los usuarios utilicen certificados para autenticarse, modificar la opción “Permitir la autenticación RSA?” con el parámetro “No”. Configuración de SSH para los nuevos usuarios Seleccionamos la opción Configuración de claves de usuario SSH en la página principal del módulo: Marcar la casilla de “Clave de configuración de SSH para nuevos usuarios Unix” esto permitirá que ssh-keygen se aplique para todas las cuentas nuevas. Para que la clave pública del usuario nuevo se agregue a la lista de claves que están autorizados para utilizar su cuenta, marcar la opción “Copiar nuevo identify.pub a las claves autorizadas” .
13.5 Cliente SSH SSH se basa en la arquitectura cliente-servidor donde el flujo de datos se divide en procesos independientes que interactúan para el intercambio de información servicios o recursos, es decir, las transacciones se reparten entre un host cliente y otro host servidor, este tipo de arquitectura ha servido de modelo para el desarrollo de múltiples sistemas. Se le denomina cliente al host que inicia sesión en un host remoto posteriormente realiza solicitudes para determinados servicios y el host servidor es el encargado de atender dichas solicitudes. A continuación se mencionan algunas funciones del cliente:
Manejo de la interfaz de usuario.
Validación de los datos de entrada.
El intercambio de información es independiente de las características físicas de los equipos y del entorno de sistema operativo.
Consultas sobre Bases de Datos
13.5.1 Comando ssh El comando ssh reemplaza a los comandos rlogin, rsh y telnet. Permite iniciar sesiones y ejecutar comandos en máquinas remotas. La sintaxis general es la siguiente: ssh <usuario>@<hostname>
Otra forma también puede ser:
ssh –l <usuario><hostname>
Cuando se ejecuta por primera vez este comando aparece el siguiente mensaje:
The authenticity of host 'mail.Beakos.com.mx' can't be established.
DSA key fingerprint is
94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)?
Después de escribir “yes” se añadirá el servidor en su lista de hosts conocidos: ~/.ssh/known_hosts/ . En seguida aparecerá un intérprete de comandos donde debe ingresar la contraseña del usuario con el que se desea conectar una vez ingresada la contraseña correcta aparecerá el intérprete de comandos del host remoto. Otra opción que tiene el comando ssh es: ssh <usuario>@<hostname> ls <path>
Este comando permite ejecutar instrucciones en un host remoto sin acceder al mismo, es decir, a su intérprete de comandos. Para conocer las demás opciones que tiene este comando se puede consultar el manual de ayuda escribiendo en el intérprete de comandos: man ssh
13.5.2 Comando scp El comando scp permite copiar ficheros entre dos máquinas, debido a que utiliza ssh para la transmisión de información ofrece una seguridad robusta; es similar al comando rcp. A continuación se muestra la sintaxis general para copiar archivos desde una máquina local a una máquina remota: scp <archivo-local> usuario@hostname:<archivo-remoto>
<archivo-local> define la ruta origen del archivo a copiar, ej. /etc/hosts.allow. <archivo-remot> define la ruta destino donde se va a copiar el archivo, ej. /home/usuario/hosts.allow
Para copiar un archivo de un host remoto a un host local: scp usuario@hostname:<archivo-remoto><archivo-local>
<archivo-remoto> define la ruta origen del archivo a copiar. <archivo-local> define la ruta destino donde se va a copiar el archivo. Para copiar archivos entre dos máquinas remotas:
scp usuario@hostname:<archivo-remoto-origen> \
usuario@hostname:<archivo-remoto-destino>
13.5.3 Comando sftp El comando sftp es una utilidad que permite iniciar sesiones de forma interactiva similar a ftp pero con la seguridad de conexión por ssh. La sintaxis es la que a continuación se muestra: sftp <nombre-usuario@hostname>
sftp> get <fichero>
Tabla 8-1. Comandos más comunes para en una sesión sftp.
Comando Descripción
cd [path] Cambia el directorio remoto a la ruta especificada.
lcd [path] Cambia el directorio local a la ruta especificada (path).
get remote-path [local-path] Descarga el archivo.
lmkdir [path] Crea un directorio en el host local.
mkdir [path] Crea un directorio en el host remoto.
Put local-path [remote-path] Carga un archivo en el host remoto. Por lo regular suele usarse para subir archivos al servidor sftp.
help Despliega ayuda en modo texto.
pwd Despliega el directorio de trabajo en el host remoto
rename [oldpath] [newpath] Renombre un archivo del host remoto.
rmdir [path] Elimina un directorio del host remoto.
rm [path] Elimina un archivo del host remoto.
13.5.4 Clientes con interfaz grafica para SSH Los clientes SSH con interfaz gráfica son de gran ayuda para aquellos usuarios que no están familiarizados con un entorno en modo comando y que requieren una forma de navegación más gráfica por el sistema de archivos con ayuda del puntero. Existen diferentes clientes SSH con estas características.
Tabla 8-2. Clientes para sesiones SFTP.
Entorno de SO Cliente SSH (gráfico) Sito Oficial
GNU/LINUX
Konqueror.- Este
navegador permite
conexiones mediante ssh,
tecleando en la barra de
direcciones lo siguiente:
sftp://username@host
http://www.konqueror.org
Nautilus.- Navegador que
ofrece conexiones gráficas
por ssh tecleando en la
barra de direcciones:
ssh://username@host
http://live.gnome.org/Nautilus
KNetAttach.- Esta
aplicación permite
conexiones SSH gráficas,
integra diversas carpetas
de red con el entorno KDE.
Sujeta a los términos de la
Licencia Pública General
GNU.
http://docs.kde.org/stable/es/kdebase-
runtime/knetattach/index.html
WINDOWS
WinSCP.- Es una aplicación
de Software Libre. Facilita
la transferencia segura de
archivos entre dos sistemas
local-remoto soporta la
autenticación por medio de
SSH, soporta conexiones
por SSH1 y SSH2.
http://winscp.net/eng/docs/lang:es
Capí tulo 14 Servicios de impresio n
14.1 Sistema de impresión cups Es el sistema de impresión basado en estándares de código abierto desarrollado por Easy
Software Products para brindar una solución de impresión estándar a todas las empresas que
ofrecieran soluciones de Sistema Operativo basadas en UNIX, así como para usuarios, además
de que provee las interfaces de línea de comando de System V y Berkerley.
14.1.1 Características CUPS utiliza como base el protocolo IPP pero también cuenta con el soporte para otros
protocolos como Line Printer Daemon (LPD), Server Message Block (SMB) y AppSocket, sin
embargo, la funcionalidad de estos protocolos está un tanto reducida. CUPS cuenta con una
imagen del archivo RIP que soporta impresión de archivos de imagen en impresoras non-
PostScript.
Existen varias interfaces de usuario destinadas a diferentes plataformas para la configuración
de CUPS, también cuenta con una aplicación web desde la cual poder administrar todos los
recursos.
A continuación se describen las principales características de CUPS:
CUPS utiliza el protocolo de impresión de Internet (“IPP”) por default para administrar las colas impresión entre otras tareas.
Proporciona búsquedas de impresoras y algunas opciones de impresión basadas en archivos de descripción de impresora PostScript(“PPD”)
Es un sistema de impresión estandarizado, además de modular es capaz de admitir distintos formatos de datos que son enviados al servidor de impresión.
Provee un mecanismo el cual permite que los formatos de impresión sean leídos por las impresoras de manera estándar.
Facilita la creación de nuevos controladores tanto a los desarrolladores como a los fabricantes para que dichos controladores puedan ser implantados en el servidor de impresión.
14.2 Funcionamiento Cups está diseñando bajo la arquitectura cliente/servidor, en la cual existe una impresora
central que se encarga de atender los trabajos de impresión que se van solicitando, así como el
procesamiento de comandos, también provee información sobre el estado de las impresoras
mediante aplicaciones locales o remotas, además de informes o notificaciones cuando el
usuario lo requiera.
La arquitectura de CUPS se divide en tres partes principales:
14.3 Planificador El planificador de CUPS (cupsd) es un servidor de HTTP (Hypertext Transfrer Protocol) e IPP
(Internet Printing Protocol) que administra las peticiones a dichos protocolos, las impresoras,
clases, trabajos de impresión, suscripciones y las notificaciones del sistema. El planificador
utiliza una serie de interfaces web dinámicas basadas en CGI que pueden ser configuradas
mediante scripts.
El número máximo de conexiones de clientes y trabajos de impresión simultáneos depende de
las características del hardware del servidor de impresión, velocidad de procesador y de
memoria RAM principalmente.
14.4 Instalación de CUPS Para la instalación del demonio CUPS y los driver para impresoras del paquete Gutenprint
tecleamos el siguiente comando:
root [ ~ ]# swaret --install print
Iniciar el demonio CUPS
root [ ~ ]# /etc/init.d/cups start
Planificador
Filtros
Backends
Iniciar CUPS al arranque con el sistema
root [ ~ ]# chkconfig --add cups
root [ ~ ]# chkconfig --list
cups 0:off 1:off 2:off 3:on 4:off 5:on
6:off
Por defecto el servidor CUPS iniciará en los niveles de ejecución 3 y 5.
El servidor utiliza el archivo de configuración cupsd.conf ubicado en /etc/cups.
Algunas de las opciones del archivo de configuración de CUPS más importantes son:
Browsing Establece si es posible o no administrar las funciones de impresión en red por medio
de la interfaz web, es decir, desde algún navegador de internet.
BrowseProtocols Específica que protocolos utilizar al momento de compartir impresoras a
través de la red local.
BrowseInterval Específica el tiempo límite transcurrido entre las actualizaciones de
navegación.
BrowseAddress Específica una dirección a la cual se enviará información de navegación. Varias
directivas de BrowseAddress pueden ser especificadas para enviar información a diferentes
redes o sistemas.
Limit (Location) Limit especifica los grupos de control de acceso y autenticación para
determinados tipos de peticiones HTTP.
ServerName La directiva de ServerName especifica el nombre del host anfitrión que será
notificado a los host clientes. Por defecto dicho nombre es “hostname”.
14.4.1 Archivos de Trabajo Una de las tareas del planificador es la de almacenar los archivos en un directorio de
impresión, usualmente en /var/spool/cups. Dentro del directorio spool se pueden
encontrar dos tipos de archivos distintos: archivos de control los cuales inician con la letra “c” y
los archivos de datos que comienzan con la letra “d”.
14.4.2 Archivos de registro La ruta donde por lo regular se localizan estos archivos es /var/log/cups. El planificador
cuenta con tres tipos de logs (archivos de registro) los cuales se describen a continuación:
El archivo acces_log.lista todas las peticiones HTTP e IPP que son procesadas por el planificador.
El archivo error_log contiene los mensajes del planificador y aplicaciones de ayuda que son de utilidad para localizar problemas.
El archivo page_log contiene el registro de las páginas que se van imprimiendo lo que permite llevar un conteo y mostrarlo al usuario cuando lo requiera. Los log de
registro son girados* por el planificador cuando es rebasado el límite de almacenamiento que por defecto es de 1MB, si se establece que el tamaño sea de 0 entonces no se realiza la rotación de los archivos, esto a menudo es utilizado por los administradores de Linux para que ellos utilicen el logrotated.
14.5 Comandos Berkeley CUPS provee algunos comandos de Berkeley para su administración.
14.5.1 El comando LPC El comando lpc permite un control limitado sobre la impresora y las colas de clase que
proporciona CUPS. También permite realizar consultas sobre el estado de las colas de
impresión. Si no se especifica algún comando, lpc desplegará un prompt y aceptara
comandos desde la entrada estándar.
Sintaxis
lpc [ comando [ parámetros ] ]
Tabla 14-1. Opciones para el comando LPC
Opción Descripción
status Nos muestra el estado de las impresoras.
help Nos muestra una lista de comandos disponibles.
quit Cierra el programa lpc y nos regresa a la consola.
exit Lo mismo que quit
Ejemplo:
root [ ~ ]# lpc
lpc> help
Commands may be abbreviated. Commands are:
exit help quit status ?
14.5.2 El comando LPQ Muestra el estado del trabajo a imprimir dentro de las colas de impresión, este comando es de
utilidad para saber si la impresión se llevo a cabo o si permanece activa en la cola.
Sintaxis:
lpq [-E] [-U nombre_usuario] [-h servidor:[puerto]] [-P
destino] [-a] [-l]
Tabla 14-2. Opciones para el comando LPQ
Opción Descripción
-E Encripta las conexiones al servidor.
-P Especifica una impresora.
-U Especifica un nombre de usuario alterno.
-a Señala los trabajos en todas las impresoras.
-h Especifica un servidor alterno.
-I Pide un formato de reportes más extenso y detallado.
14.5.3 El comando LPR La mayoría de los documentos PostScript, así como documentos de texto puede imprimirse en
forma directa utilizando el comando lpr. Este comando imprime los archivos o trabajos que
son especificados con la sintaxis y opciones válidas.
Sintaxis
lpr [-E] [-H servidor [:puerto]] [-U nombre_de_usuario] [-P
destino] [-#copias ]
Tabla 14-3. Opciones para el comando LPR
Opción Descripción
-#copias Número de impresiones, el valor puede ir de 1 hasta 1000.
-T Establece el nombre del trabajo de impresión.
-P Permite imprimir en la impresora seleccionada.
-U Especifica un nombre de usuario alterno.
-I Especifica que el archivo a imprimir se encuentra en un formato correcto para que no sea necesario filtrarlo.
-m Envía un correo después de que se ha completado la impresión.
-p Especifica que archivo de la cola de impresión debe ir con un formato sombreado de fecha, hora, nombre del trabajo y número de página.
-q Mantiene en espera el trabajo para imprimirse.
-r Especifica los nombres de los archivos que deben ser eliminados después de la impresión.
14.5.4 El comando LPRM Cancela los trabajos de impresión, es decir que lprm retira los trabajos de la cola de
impresión.
Sintaxis
lprm [-E] [-U usuario] [-h servidor[:puerto]] [-P destino]
[ID del trabajo]
Tabla 14-4. Opciones para el comando LPRM
Opción Descripción
-E Forzar la encriptación cuando hay una conexión al servidor.
-U Especifica un nombre de usuario alterno.
-h Especifica un servidor de impresión alterno.
-P Especifica la impresora.
14.6 Comandos SYSTEM V Además de los comandos Berkeley CUPS también permite la utilización de los siguientes
comandos de System V.
14.6.1 El comando LP El comando lp permite imprimir un archivo.
Sintaxis
lp [archivo] [-P #paginas] [-n #copias] [-d impresora]
Tabla 14-5. Opciones para el comando LP
Opción Descripción
-d Especifica la impresora donde se enviarán los trabajos.
-n Número de copias del trabajo de impresión, máximo 100
-P Determina el número de páginas a imprimir (1,5,80-100).
Ejemplo:
root [ ~ ]# lp –n 28 –p impresora_color documento.txt
14.6.2 El comando LPADMIN Configura las colas de las clases e impresoras proporcionadas por CUPS. También se puede
usar para poner la clase o impresora predeterminada del servidor. Cuando se usa la opción
-E antes de las opciones -d, -p, o -x, hace que se use encriptación en la conexión con
el servidor.
Sintaxis
lpadmin [ -E ] [ -h servidor ] -d impresora_destino
lpadmin [-h servidor] -p impresora[-c clase] [-i interfaz]
[-m modelo] [-r borrar_clase] [-v dispositivo] [-D descripción]
[-P archivo ppd] [-o name=valor] [-u allow:user] [-u deny:user]
Tabla 14-6. Opciones para el comando LPADMIN
Opción Descripción
-E Encripta las conexiones al servidor.
-h Especifica el servidor de impresión.
-d Indica la impresora destino.
-p indica la impresora a utilizar.
Tabla 14-7. Opciones para utilizar con lpadmin –p [impresora]
Opción Descripción
-c Agrega la impresora especificada a la clase. Si la clase no existe se crea automáticamente.
-i Establece para la impresora un guión (script) de interfaz estilo SYSTEM V Esta opción no puede ser especificada con la opción –P, y está pensada para dar soporte a controladores de impresora legados.
-m Establece un guión (script) de interfaz estándar System V o archivo PPD desde el directorio modelo.
-r Elimina la impresora especificada de la clase.
-u allow:usuario Establece el control de acceso a nivel usuario.
-D Proporciona una descripción de la impresora.
-L Proporciona una ubicación de la impresora.
-P Especifica un archivo de impresión de la impresora PostScript para usar con la impresora.
14.7 Comandos CUPS CUPS proporciona los siguientes comandos para la administración.
14.7.1 El comando CUPSADDSMB cupsaddsmb exporta las impresoras de Samba para utilizarlas con clientes de Windows.
Dependiendo de la configuración de Samba se debe proporcionar una contraseña además de la
instalación de un driver.
Sintaxis
cupsaddsmb [ -H servidor-samba ] [ -U usuario-samba [
%contraseña-samba ] ] [ -h servidor-cups [:puerto] ] [ -v ]
printer [ impresora… ]
Tabla 14-8. Opciones para el comando CUPSADDSMB
Opción Descripción
-H Especifica el servidor SAMBA que se tomara por defecto en el servidor CUPS.
-U Especifica el nombre de usuario del administrador de impresión.
-a Exporta todas las impresoras. En caso contrario solo las impresoras nombradas son exportadas.
-h Especifica un servidor CUPS diferente a usar.
-v Especifica que se despliegue un informe más detallado sobre la acción que se esté ejecutando. Esto es de utilidad para identificar problemas de configuración en el servidor SAMBA.
14.7.2 El comando LPINFO Lista los dispositivos o controladores disponibles conocidos dentro del servidor CUPS. La
primera forma con –m muestra los controladores disponibles y la segunda forma con –v
muestra los dispositivos disponibles.
Sintaxis
lpinfo [-E] [-U usuario] [-h servidor[:puerto]] [-l]
[--id-dispositivo id-dispositivo-string] [--idioma_local]
[--marca_y_modelo] [--nombre_producto] –m
lpinfo [-E] [-U usuario] [-h servidor[:puerto]] [-l] –v
14.8 Configuración de impresoras CUPS cuenta con una interfaz web desde el cual se pueden monitorizar las impresoras y
trabajos, así como ejecutar tareas para la administración del sistema. La interface web es
soportada por cinco programas CGI. La siguiente tabla especifica cada uno de ellos:
Tabla 14-9. Programas CGI de la interfaz web de CUPS
PROGRAMA UBICACIÓN DESCRIPCIÓN admin.cgi /admin Proporciona todas las
funciones administrativas, por ejemplo: Añadir impresora Editar archivo de configuración Mostrar el archivo de registro de accesos Añadir clase Administrar clases Administrar trabajos
classes.cgi /classes Lista las clases y proporciona la función de búsqueda para la administración de clases.
help.cgi /help Proporciona documentación y ayuda en línea.
jobs.cgi
/jobs Enumera los trabajos y proporciona funcionalidades para la administración, como son las búsquedas y mostrar resultados detallados de dichas búsquedas.
printers.cgi /printers Muestra un listado de las impresoras y proporciona funciones para la administración, como son: Imprimir páginas de prueba Modificar las opciones de
impresora Eliminar impresora Detener impresora Rechazar trabajos Establecer como predeterminada Modificar usuarios permitidos
14.8.1 Uso de la interfaz web La interfaz web de CUPS es accesible a través de un navegador por el puerto
631(localhost:631). La página de inicio contiene tres menús principales:
CUPS para usuarios. Este apartado contiene documentación técnica acerca del
sistema CUPS, contiene información de cómo imprimir desde la línea de
comandos, las novedades que presenta la versión instalada respecto a otras
anteriores y el foro de usuarios donde se comparten problemas y soluciones
relacionados al sistema de impresión.
CUPS para administradores. Este apartado contiene información sobre como
agregar impresoras y clases, políticas de funcionamiento, contabilidad básica,
autenticación con Kerberos y el manual de referencia del archivo de
configuración de CUPS.
Cups para desarrolladores. Este apartado contiene información sobre el
desarrollo de CUPS y cómo modificar su código fuente, además de una liga al
foro de desarrollo.
La pagina de administración permite realizar las siguientes tareas:
Impresoras
Agregar impresora.
Encontrar nuevas impresoras.
Administrar impresoras.
Clases
Añadir clases.
Administrar clases.
Trabajos
Administrar trabajos.
Servidor
Editar archivo de configuración.
Ver archivo de registro de accesos.
Ver archivo de registro de errores.
Ver archivo de registro de páginas.
Figura 14-1. Interfaz web para la administración de CUPS.
14.8.2 Agregado de impresoras con la interfaz Web CUPS permite agregar impresoras locales, las que están directamente conectadas o remotas,
las que se encuentran en la red (IPP). Para comunicarse con los dispositivos de impresión CUPS
hace uso de URI Uniform Resource Information, el cual es un identificador que consiste en una
secuencia de caracteres que permiten la identificación uniforme de los recursos. A
continuación se muestran los dispositivos que se pueden configurar dependiendo del tipo de
conexión que se tenga:
Conectados directamente.- Se encuentran conectados por puerto paralelo, puerto
serial o puerto USB. Por lo que estos dispositivos se encuentran especificados de la
siguiente manera:
parallel:/dev/lp* Para impresoras conectadas al puerto paralelo.
serial:/dev/ttyS* Para impresoras conectadas al puerto serial.
usb:/dev/usb/lp* Para impresoras conectadas al puerto USB.
Conectados en red (IPP).- IPP o Internet Printing Protocol, gracias a este protocolo
CUPS permite que se puedan utilizar impresoras a través de internet o en una intranet.
Dispositivos IPP en CUPS:
LPD Line Printer Daemon, CUPS soporta conexiones de este tipo, permitiendo establecer una impresora compartida en red para que puedan ser utilizada por otros equipos que no cuenten con LPD. La sintaxis URI para dirigirse a una impresora LPD:
―lpd://nombreanfitrion/cola‖, donde nombreanfitrion es el
nombre de la máquina.
SMB Service Message Block este protocolo es muy común para compartir impresoras en redes Windows, CUPS permite a sus clientes el acceso a una impresora que se encuentre en un servidor SAMBA o SMB. La sintaxis URI para dirigirse a una impresora compartida por SMB:
―smb://nombreservidor/recursocompartido‖, donde
recursocompartido es el nombre con el que se identifica la impresora que ha
sido compartida.
Impresora compartida en red Son impresoras que por sus características técnicas tienen la capacidad de conectarse a una red ya sea por Ethernet, inalámbrica, etc. La sintaxis URI para dirigirse a una impresora:
socket://dirección_ip:puerto
A continuación se describen los pasos para agregar una impresora imaginaria a través de la
interfaz Web de CUPS con las siguientes características:
Nombre: impresora-1
Ubicación: administración
Descripción: Impresora imaginaria de pruebas
Tipo de conexión: Socket
Marca: HP
Modelo: Laser Jet
Procedimiento
1. Ejecutar en el navegador de nuestro sistema la URL http://localhost:631, de los menús
superiores seleccionar la opción “Administración” , le pedirá introducir el nombre de usuario y
contraseña, utilice la cuenta de root y su respectiva contraseña.
2. Después de ingresar al sistema seleccionamos el vínculo “Añadir impresora”.
3. En el menú “Otras impresoras de red”, seleccionamos la opción Appsocket/HP JetDirect y
damos click en el vínculo “siguiente”.
4. En el campo “conexión” escribimos socket://localhost y damos un click en el
vínculo “siguiente”.
5. CUPS nos mostrará un formulario donde debemos introducir la información relacionada a la
impresora (Nombre, Ubicación, Descripción, etc).
6. Dar click en el botón “siguiente” cuando termine de introducir los datos.
7. Seleccionamos la marca de la impresora (HP), y damos un click en siguiente.
8. Seleccionamos el modelo “HP DeskJet Series” y damos un click en siguiente.
9 Nos mostrará algunas opciones para la configuración del papel, color, resolución, etc.
Podemos modificar las opciones a nuestras necesidades y damos un click en “cambiar
opciones prederminadas” para finalizar con la configuración. Al terminar debe mostrar la
siguiente pantalla.
Figura 14-2. Descripción de la impresora configurada por socket.
14.8.3 Agregar una impresora desde la línea de comandos Cómo es habitual en ambientes GNU/Linux las tareas que se pueden realizar a través de la
interfaz gráfica o interfaz web, se pueden realizar a través de la línea de comandos, es
importante aprender este método, pues no siempre se dispone de una interfaz que nos ayude
a realizar este tipo de tareas. Vamos a proceder a dar de alta una impresora imaginaria en el
sistema CUPS de forma sencilla pero bien detallada, esta impresora tendrá las mismas
opciones de configuración que el ejercicio anterior con excepción del nombre, esta se llamará
impresora-2.
Procedimiento
1. Abrir una terminal del sistema con el usuario root y enlistar las colas de impresión del
sistema actualmente configuradas, para esto utilizamos el comando lpstat, escribir:
root [ ~ ]# lpstat -a
impresora-1 accepting requests since Tue Sep 28 06:24:03 2010
2. Con el comando lpadmin que analizamos en temas anteriores agregaremos una impresora
imaginaria con los parámetros siguientes:
root [ ~ ]# lpadmin -p "impresora-2" -E \
-v socket://192.168.0.132 -D "Impresora de prueba" \
-L "Administracion"
3. Utilizamos el comando lpstat para listar las impresoras configuradas.
root [ ~ ]# lpstat -a
impresora-1 accepting requests since Tue Sep 28 06:24:03 2010
impresora-2 accepting requests since Tue Sep 28 07:12:08 2010
4. Podemos también visualizar la impresora que acabamos de configurar a través de la interfaz
web.
Figura 14-3. Impresoras configuradas en nuestro sistema.
14.8.4 Configuración de la impresora predeterminada Si tenemos un sistema con múltiples impresoras configuradas, es adecuado establecer alguna
de ellas como predeterminadas, para que los usuarios que no especifiquen explícitamente una
impresora de las que están configuradas. Por ejemplo para establecer la impresora-2
configurada en el tema anterior como impresora predeterminada utilizar el siguiente
comando.
root [ ~ ]# lpadmin -d impresora-2
14.8.5 Privilegios de impresión Como hemos configurado nuestro sistema, cualquier usuario puede enviar a imprimir trabajos
a cualquier impresora administrada por CUPS. En ambientes productivos quizá resulte útil
delimitar a ciertos usuarios a utilizar ciertas impresoras, esto puede suceder por políticas de la
organización o simple seguridad.
Por ejemplo si deseamos que el usuario “francisco” pueda imprimir en la impresora-1
tecleamos el siguiente comando:
root [ ~ ]# lpadmin -p impresora-1 -u allow:francisco
Si deseamos denegar el acceso a la impresora-2 al usuario “angel”, tecleamos:
root [ ~ ]# lpadmin -p impresora-2 -u deny:angel
Para quitar todas las restricciones y permitir que todos los a la impresora-1 tecleamos:
root [ ~ ]# lpadmin -p impresora-1 -u allow:all
14.8.6 Eliminar impresoras Para eliminar impresoras desde el intérprete de comandos tecleamos:
root [ ~ ]# lpadmin -x impresora-2
Capí tulo 15 Network File System (NFS)
Network File System (NFS), es un protocolo a nivel de aplicación que permite compartir
archivos y directorios a través de la red en ambientes UNIX y GNU/Linux e incluso Servidores
Windows, si disponemos de una red con varios sistemas operativos basados en UNIX, NFS
representa una buena opción, podemos montar un directorio de un sistema remoto y trabajar
en él como si estuviera en nuestro equipo.
Servidor NFS
/media/datos
Cliente NFS
servidor:/media/datos
Figura 15-1. Podemos observar como el servidor comparte un directorio con un host remoto
y este lo monta como un directorio local.
15.1 Historia de NFS NFS fue desarrollado en sus inicios por la empresa SUN Microsystems, la primera versión sólo
fue experimental. La versión 2 del protocolo se basó en UDP con mejoras significativas
respecto a su antecesora. En 1995 salió a la luz la versión 3, implementada sobre el protocolo
TCP en lugar de UDP. En el año 2000 surgió NFS versión 4 que incluye como principales
mejoras la seguridad con Kerberos, interacción con cortafuegos y Listas de acceso (ACL). Es
importante mencionar que NFS puede interactuar incluso con sistemas no basados en UNIX
como Microsoft Windows, pero para ello existe una aplicación más adecuada como Samba
que abordaremos en el siguiente capítulo.
15.2 Instalación de NFS Beakos GNU/Linux en sus repositorios cuenta con soporte para la versión 4 de NFS a través del
paquete NFS Utils, que necesitamos tener instalado en nuestro sistema. Instalaremos el
paquete ejecutando en la terminal los siguientes comandos:
root [ ~ ]# swaret --update
root [ ~ ]# swaret --install nfs-utils
Antes de iniciar el servicio de NFS debemos iniciar el servicio Portmap, Beakos ya tiene este
servicio instalado y configurado para arrancar con el sistema, verificamos que este en
ejecución tecleando:
root [ ~ ]# /etc/init.d/portmap status
portmap is running with Process ID(s) 2103.
Si el servicio Portmap está en ejecución procedemos a iniciar el servicio NFS tecleando el
siguiente comando:
root [ ~ ]# /etc/init.d/nfs-server start
Iniciando NFS mountd... [ OK ]
Iniciando NFS nfsd... [ OK ]
Iniciando NFS statd... [ OK ]
Montando nfsd sistema de archivos virtuales... [ OK ]
Exportando sistemas de archivos NFS... [ OK ]
Si deseamos habilitar el servicio de NFS para que arranque en automático cuando inicia el
sistema tecleamos:
root [ ~ ]# chkconfig --add nfs-server
root [ ~ ]# chkconfig –-list nfs-server
nfs-server 0:off 1:off 2:off 3:on 4:on 5:on 6:off
15.3 Acceso y montaje de las particiones Explicaremos de forma breve el proceso que se lleva a cabo para acceder y montar una
partición NFS:
El cliente se conecta al servicio portmap para saber el puerto que está asignado al
servicio de montajes NFS.
El cliente solicita al servidor NFS el uso de una partición, el servidor verifica los
permisos del cliente para accesar a la partición en el archivo /etc/exports, si el
cliente tiene permiso se otorga el servicio de montaje.
El cliente contacta de nuevo al servicio portmap para saber el puerto que tiene
asignado el servidor NFS (2049 generalmente).
Cuando el cliente solicita leer un directorio envía una señal RPC al servidor.
Cuando finaliza el cliente actualiza su propia tabla de montajes pero no informa al
servidor, aunque esto no es relevante ya que el servidor no lleva el control de los
clientes conectados.
15.4 Configuración del servidor NFS Una vez que hemos verificado que el servidor NFS se encuentra funcionando podemos
proceder a compartir particiones a otros equipos, el primer paso es crear el archivo
/etc/exports en este archivo se define que particiones se compartirán a una
determinada red y los permisos que tendrán otros anfitriones de lectura y escritura.
15.4.1 El archivo de configuración /etc/exports Este archivo de configuración es el principal para un servidor NFS, en el se declaran varias
opciones para compartir particiones a otros hosts, su sintaxis es muy sencilla:
directorio_a_exportar direccionIP_cliente(permisos)
Ejemplo de una carpeta compartida con un cliente por NFS:
root [ ~ ]# cat /etc/exports
/opt/prueba 192.168.0.128(rw)
El archivo muestra el directorio /opt/prueba, compartido con el host con dirección IP
192.168.0.128, otorgándole permisos de lectura y escritura.
Tabla 15-1. Permisos posibles para un servidor NFS
Opción Descripción
secure Opción configurada por defecto para indicar que el número de puerto por el cual el cliente solicita un montaje debe ser menor a 1024, si se desea desactivarlo especificar la opción insecure.
rw Permisos al cliente de lectura y escritura.
ro Permisos al cliente de sólo lectura.
no_root_squash Permite que el usuario root del cliente, conserve los mismos privilegios que el usuario local en el servidor tendría normalmente.
root_squash Lo contrario al anterior, evita que el usuario root del cliente NFS acceda con los mismos derechos que el usuario raíz local.
all_squash Asigna los UID y los GID de los archivos al usuario anónimo.
15.4.2 Comando exportfs La función del comando exportfs es volver a leer el contenido del archivo
/etc/exportfs, las opciones a utilizar con el comando se describen en la siguiente tabla.
Tabla 15-2. Opciones para el comando exportfs
Opción Descripción
-a Exporta todas las particiones declaradas en el archivo /etc/exportfs
-u cliente:/directorio Deja de exportar el directorio a un cliente determinado.
-o (opciones) Utiliza las opciones descritas en la tabla anterior
-v Muestra mayor cantidad de información.
-r Restaura todas las conexiones.
Ejemplos del comando exportfs.
Exportar todas las entradas disponibles en /etc/exports
root [ ~ ]# exportfs -a
Exportar el directorio /opt/dir1 al host cliente1, con permisos de lectura y escritura y
conservando los permisos de root del directorio local.
root [ ~ ]# exportfs -o rw,no_root_squash cliente1:/opt/dir1
15.4.3 Comando showmount El comando showmount, nos permite obtener información sobre el funcionamiento de
nuestro servidor NFS, luego de haber exportado las particiones deseadas podemos ver un
listado de los sistemas de archivos compartidos tecleando el siguiente comando:
root [ ~ ]# showmount -e localhost
Export list for localhost:
/opt/prueba 192.168.0.13,192.168.0.130,192.168.0.128
/opt/directorio1 192.168.0.130
La opción –e, permite muestra una lista de exportaciones del servidor NFS.
15.5 Configuración del cliente NFS La configura del cliente se supone más sencilla que la configuración del servidor, ya que no se
requiere de la instalación de ningún software adicional en nuestro sistema, el Kernel de Beakos
soporta nativamente sistemas de archivos NFS.
Tabla 15-3. Opciones del comando mount –o para NFS
Opción Descripción
bg Montaje del sistema de archivos en segundo plano, en caso de que un montaje falle al inicio, seguirá intentando establecer conexión, esto es útil porque permite que el sistema no se inmovilice esperando establecer una conexión.
intr Especifica si el montaje se puede interrumpido aun cuando hay transferencia de datos.
hard Es una opción predeterminada, si se cae una conexión y el servidor no responde, el cliente seguirá persistiendo de forma indefinida.
soft Habilita el montaje suave de un sistema de archivos NFS, permite que el cliente desista de una conexión después de un cierto número de intentos especificados en la opción retrans.
retrans=n Número máximo de intentos que un cliente intentará conectarse a un servidor NFS.
rsize=n Número máximo de bytes que un cliente utiliza para leer archivos de una partición NFS.
sec=valor Ajusta el modo de seguridad para autenticar usuarios y operaciones.
sec=sys Utiliza UID y GID locales para autenticar operaciones de NFS (valor por defecto).
sec=krb5 Utiliza Kerberos 5 en lugar del UID y GID locales.
sec=krb5i Utiliza Kerberos 5 para autenticar usuarios y lleva acabo verificaciones de integridad de datos con el uso de sumas seguras (MD5sum) para prevenir la alteración de datos.
sec=krb5p Utiliza Kerberos para la autenticación además de llevar a cabo la encriptación de datos.
nfsvers=n Permite seleccionar la versión del sistema NFS que puede corresponder a 2 o 3, no está habilitado para esta opción, en lugar de ello sería necesario especificar el tipo como nfs4 como sistema de archivos.
proto=n Especifica el protocolo a utilizar, podemos seleccionar entre UCP y TCP, la versión de NFSv4 sólo trabaja con TCP.
wsize=n Número máximo de bytes que utiliza NFS para escribir datos en un sistema de archivos, el valor por defecto corresponde a 4096 bytes.
Ejemplo utilizando el comando mount con sistemas de archivos NFS
root [ ~ ]# mount -o rw,bg,soft 192.168.0.132:/opt/dir1
/opt/dir1
El comando anterior montará el sistema de archivos NFS en el directorio /opt con permisos
de lectura y escritura, si falla se intentará conectar en segundo plano y hará un montaje suave.
Si deseamos que el montaje sea permanente debemos crear la siguiente entrada en el fichero
/etc/fstab
192.168.0.132:/opt/dir1 /opt/dir1 nfs defaults,soft,bg,rw 0 0
Ejecutamos el siguiente comando para que monte las particiones definidas en el archivo
/etc/fstab
root [ ~ ]# mount –a
Validamos tecleando
root [ ~ ]# mount
/dev/sda2 on / type ext3 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=4,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /proc/fs/nfsd type nfsd (rw)
192.168.0.132:/opt/prueba on /opt type nfs
(rw,soft,bg,addr=192.168.0.132)
Si no recibimos mensajes de error, podemos ver que en la última línea aparece el sistema de
archivos compartido.
NFS es una herramienta muy útil para poder compartir sistemas de archivos con otros
anfitriones, ampliamente recomendada para compartir discos en red con otros sistemas
operativos UNIX y Linux.
Capí tulo 16 SAMBA (CIFS)
Samba es una implementación del protocolo CIFS (Common Internet File System)
anteriormente llamado SMB(Server Message Block), permite a sistemas UNIX y LINUX
interactuar con sistemas Windows compartiendo ficheros y directorios. Samba también
permite actuar como un controlador principal de dominio (PDC), administrar colas de
impresión para usuario de Windows incluso como un sencillo director activo.
16.1 Características Samba fue desarrollado en sus inicios por Andrew Tridgell, el nombre proviene de insertar dos
vocales a SMB que es el protocolo estándar de Microsoft.
Samba es una implementación de varios protocolos entre los que destacan:
NetBIOS sobre TCP/IP
SMB ahora conocido como CIFS
MSRPC
WINS servidor de nombres de NetBIOS
Protocolos del dominio NT
Samba configura los directorios y subdirectorios incluyendo los archivos para poder
compartirlos en la red con otros usuarios Windows u otros usuarios de GNU/Linux que
ejecuten Samba.
Los usuarios de GNU/Linux pueden montar particiones Samba como si fueran discos del
sistema o utilizar la herramienta smbclient para conectarse a ellas e interactuar con las
información como se realiza con un cliente de FTP.
Sugerencia Este capítulo pretende brindarle la
información necesaria para la configuración de Samba,
sin embargo recomendamos leer ampliamente la
documentación oficial.
16.1.2 Lo que puede y no puede hacer Samba Es importante antes de comenzar comprender las limitaciones que tiene samba así como sus
funciones.
Lo que Samba puede hacer:
Compartir archivo, directorios e impresoras a clientes Linux, UNIX y Windows .
Asistir en la navegación de la red a través de NETBIOS.
Autenticar usuarios a dominios Windows.
Proporcionar resolución de nombres de Windows Internet Name Service (WINS)
Funcionar como un Controlador de Dominio Primario.
Funcionar un BDC para un PDC basado en Samba.
Actuar como un miembro del directorio activo de Microsoft.
Une un Windows NT/2000/2003 PDC.
Lo que Samba no puede hacer:
Funcionar como un BDC para un Windows PDC .
Funcionar como un controlador de Directorio Activo.
16.2 Demonios de Samba Samba está compuesto por tres demonios smbd, nmbd, windbind.
SMBD Este demonio suministra servicios para compartir archivos e impresoras a
clientes Windows, también es el encargado de autenticar usuarios, compartir datos a
través del protocolo CIFS. Los puertos predeterminados para este demonio son TCP
139 y 445.
NMBD Interpreta y responde a peticiones de servicio de Nombres de NETBIOS
producidas por el protocolo CIFS, también participa en los protocolos de navegación
que forman la vista de entorno de red de Windows.
WINDBIND Resuelve la información de los usuarios y grupos en un servidor NT, este
demonio permite que los usuarios del dominio NT puedan aparecer como usuarios de
UNIX y operar de la misma forma. Su uso se puede ampliar mediante un módulo de
PAM (pam_windbind) a fin de que pueda proporcionar servicios de autenticación, este
servicio se controla aparte del servicio SMB y puede funcionar de forma
independiente.
16.3 Nombres de usuarios y contraseñas La última versión de Samba 3.0 proporciona varias formas de almacenar usuarios y
contraseñas, para un administrador de sistemas es muy importante mantener una consistencia
en los registros, los usuarios no se preocuparán por recordar varias contraseñas, por lo que es
importante diseñar un modelo adecuado a las necesidades de cada organización.
Entre algunas opciones que disponemos para administrar nombres de usuarios y contraseñas
están las siguientes:
Módulos PAM (Módulos de autenticación enchufables) de GNU/Linux. Esta opción
permite la autenticación de usuarios en un PDC. Su desventaja es que aun habrá que
mantener una lista de usuarios locales y una en el PDC, pero los usuarios sólo tendrán
que preocuparse de las contraseñas del PDC.
Samba como un PDC (Controlador de dominio primario). Esta opción permite
mantener los usuarios y sus contraseñas de forma local y que las máquinas se
autentiquen en Samba utilizando alguno de los motores de contraseñas (smbpasswd,
tdbsam, ldapsam, etc.).
16.3.1 Motores de usuarios y contraseñas Algunos de los motores más importantes para la administración de cuentas en Samba son:
smbpasswd Motor utilizando anteriormente con otras versiones de Samba, utiliza un
formato de texto ASCII, no se recomienda este motor porque no escala ni guarda bien
información de Windows.
tdbsam Ideal para servidores locales que no requieren replicar la información que
contienen a otros y que no necesitan la complejidad de LDAP, se recomienda para su
uso en organizciones menores a 250 usuarios.
ldapsam Este motor proporciona una solución escalable que permite replicar sus
cuentas a otros servidores LDAP o que varios servidores Samba consulten la
información de las cuentas en un servidor con LDAP.
16.4 Instalación de Samba Beakos como varias distribuciones proporciona los paquetes precompilados de Samba, Samba
echa mano de algunos paquetes como Xinetd para activar la interfaz gráfica de administración
llamada Swat y de CUPS para compartir impresoras, para instalar Samba tecleamos los
siguiente comandos:
root [ ~ ]# swaret --update
root [ ~ ]# swaret --install xinetd
root [ ~ ]# swaret --install expat
root [ ~ ]# swaret –install libdaemon
root [ ~ ]# swaret –install samba
Si deseamos que estos servicios se inicien junto con el sistema tecleamos.
root [ ~ ]# chkconfig --add avahidaemon
root [ ~ ]# chkconfig --add samba
Corroboramos que los servicios que deseamos se iniciarán con el sistema
root [ ~ ]# chkconfig --list
Procedemos a iniciar los servicios samba ejecutando:
root [ ~ ]# /etc/init.d/xinetd start
root [ ~ ]# /etc/init.d/avahidaemon start
root [ ~ ]# /etc/init.d/samba start
16.5 Configuración de Samba La configuración de Samba se lleva a cabo en único archivo de configuración ubicado
/etc/samba/smb.conf, los cambios realizados se aplican una vez que reinicie el servicio
de Samba.
16.5.1 Configuración del grupo de trabajo Analizaremos las opciones más importantes de este archivo de configuración.
Para modificar el grupo de trabajo de Windows y añadirle una descripción debemos modificar
las siguientes líneas dentro de la configuración global:
workgroup = beakos.com.mx
server string = Beakos Samba Server
16.5.2 Seguridad a nivel de usuarios El parámetro security nos permite modificar el modo de autenticación de los usuarios, los usos
más comunes son:
user es la configuración predeterminada por Samba, permite al servidor
solicitar nombre de usuario y contraseña para acceder a los recursos.
domain el modo de seguridad de dominio, el servidor samba se convierte en
un miembro del dominio y pasa todas las peticiones de autenticación a otros
servidores de dominio.
ADS modo de seguridad de directorio activo, permite al servidor Samba unirse
a un directorio activo utilizando Kerberos.
share este modo de seguridad permite al servidor samba compartir recursos
con otros clientes Windows sin solicitar autenticación.
Ejemplo:
security = user
16.5.3 Seguridad a nivel de red Podemos especificar en el servidor Samba las redes o los hosts desde los cuales los clientes
pueden establecer una conexión, modificando el siguiente parámetro:
hosts allow = 192.168.1. 127.
Esta configuración permite establecer conexiones desde las redes 192.168.1.0/24 y desde
localhost.
Podemos especificar por cuales interfaces escuchará el servidor Samba:
interfaces = 192.168.12.2/24 192.168.13.2/24
Es posible implementar niveles de seguridad en red más complejos con el uso de
TCP/wrappers y el firewall de IPTABLES.
16.5.4 Compartir impresoras en un entorno de red de Windows Samba puede compartir las impresoras que están configuradas con el servidor CUPS con otros
clientes de Windows, para ello el servidor CUPS debe de estar funcionando. Debemos
configurar los siguientes parámetros:
load printers = yes
Este parámetro habilitado cargará en automático las impresoras que el sistema samba
encuentre conectadas.
Podemos seleccionar el sistema de impresión que deseamos utilizar, generalmente no es
necesario editar este parámetro, toma como opción predeterminada el sistema CUPS.
printing = cups
Finalmente debemos compartir las impresoras creando el siguiente recurso, por defecto en
Beakos GNU/Linux ya viene configurado.
[printers]
comment = Impresoras compartidas
path = /usr/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
El parámetro [printers] se refiere al nombre que le asignamos al recurso.
comment define una descripción para las impresoras compartidas.
path indica el directorio de donde se tomarán las impresoras.
browseable permite explorar con un administrador de archivos los recursos, por defecto está
negado, no se trata de un archivo.
guest ok indica si un usuario invitado puede acceder al recurso.
writable indica si el usuario tiene permisos de escritura, configurado con valor negativo.
printable indica si se trata de una impresora.
Una vez configurado es necesario reiniciar el servidor Samba
root [ ~ ]# /etc/init.d/samba restart
Deteniendo smbd... [ OK ]
Deteniendo nmbd... [ OK ]
Iniciando nmbd... [ OK ]
Iniciando smbd... [ OK ]
16.5.5 Compartir archivos en un entorno de red de Windows Resulta sencillo compartir directorios con clientes Windows, la sintaxis es la siguiente:
[nombre_recurso]
comment = descripción
path = /ruta/del/recurso/a/compartir
parametro1 = valor
parametro2 = valor
Tabla 16-1. Parámetros para compartir archivos y directorios con Samba
Valor Descripción
invalid users Usuarios que no están permitidos a acceder al recurso. Ejemplo: invalid users = root antonio angel
valid users Sólo estos usuarios podrán aceder al recurso. Ejemplo: valid users = francisco carlos
admin users Usuarios con privilegios administrativos para compartir recursos, este parámetro no es válido con el modo de seguridad “share”. Ejemplo: admin users = jesus
read list Lista de usuarios o grupos que tendrán permisos de lectura solamente. Ejemplo: read list = francisco @beakos
write list Lista de usuarios o grupos con permiso de escritura. Ejemplo: write list = roberto @sistemas
read only Indica que el recurso es de sólo lectura. Ejemplo: read only = yes
guest ok No requiere de password para acceder a los recursos si el valor es “yes”. Ejemplo: guest ok = yes
host allow Permite establecer para que hosts estará disponible el recurso. Ejemplo: hosts allow = 192.168.4. EXCEPT 192.168.4.2
hosts deny Permite establecer para que hosts no estarán disponibles los recursos. Ejemplo: hosts deny = 192.168.4. EXCEPT 192.168.4.35
browseable Permite a los recursos permanecer visibles para ser explorados o mantenerse ocultos para mayor seguridad. Ejemplo: browseable = yes
writable Establece permisos de escritura al recurso. Ejemplo: writable = no
available Permite habilitar y deshabilitar un recurso, según su valor. Ejemplo: available = no
Creación de un recurso compartido
Llevaremos a cabo la creación de un recurso compartido dentro del directorio /opt,
llamado ―compartido‖ , donde puedan accesar los usuarios pertenecientes al grupo
“beakos” con permisos de lectura y escritura. Crearemos el directorio:
root [ ~ ]# mkdir /opt/compartido
Creamos de los usuarios “angel” y “antonio”, con su grupo primario llamado ” beakos”:
root [ ~ ]# groupadd beakos
root [ ~ ]# useradd -g beakos -c "Antonio Moreno" antonio
root [ ~ ]# useradd -g beakos -c "Angel Ruiz" angel
Creamos las contraseñas de los usuarios de samba:
root [ ~ ]# smbpasswd -a antonio
New SMB password:
Retype new SMB password:
Added user antonio.
root [ ~ ]# smbpasswd -a angel
New SMB password:
Retype new SMB password:
Added user angel.
Asignamos el directorio al grupo “beakos” y los permisos correspondientes de lectura y
escritura para el grupo:
root [ ~ ]# chgrp beakos /opt/compartido
root [ ~ ]# chmod 760 /opt/compartido
Ahora que hemos creado el recurso y los usuarios, debemos de editar el archivo de
configuración de samba con el editor vi, agregaremos al final las siguientes líneas
[practica]
comment = recurso de practica
path = /opt/compartido
browseable = yes
write list = @beakos
read only = no
security = user
Tecleamos el comando testparm para corroborar fallas en la configuración:
root [ ~ ]# testparm
Si todo está correcto procedemos a reiniciar el servicio de samba:
root [ ~ ]# /etc/init.d/samba restart
Deteniendo smbd... [ OK ]
Deteniendo nmbd... [ OK ]
Iniciando nmbd... [ OK ]
Iniciando smbd... [ OK ]
Validamos en un cliente Windows a través del explorador de archivos escribiendo la siguiente
URL:
\\servidor_samba\practica
Donde servidor_samba corresponde al servidor al cual nos queremos conectar, podemos
utilizar cualquiera de los dos usuarios que creamos anteriormente, con ambos debemos poder
escribir en el directorio.
16.6 Samba como controlador de dominio primario usando
tdbsam. La implementación más sencilla de un PDC con Samba utiliza el motor tdbsam, veamos el
archivo de configuración /etc/samba/smb.conf que debemos utilizar.
[global]
workgroup = beakos.com.mx
netbios name = beakos
passdb backend = tdbsam
security = user
add user script = /usr/sbin/useradd -m %u
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/usermod -G %g %u
add machine script = /usr/sbin/useradd -s /bin/false -d
/dev/null -g machines %u
logon drive = H:
domain logons = Yes
os level = 35
preferred master = Yes
domain master = Yes
[homes]
comment = Home Directories
valid users = %S
read only = No
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon/scripts
browseable = No
read only = No
[Profiles]
comment = Roaming Profile Share
path = /var/lib/samba/profiles
read only = No
browseable = No
guest ok = Yes
profile acls = Yes
Debemos copiar la configuración anterior al archivo de configuración
/etc/samba/smb.conf, también debemos crear el grupo machines.
root [ ~ ]# groupadd machines
Reiniciamos el servicio:
root [ ~ ]# /etc/init.d/samba restart
Deteniendo smbd... [ OK ]
Deteniendo nmbd... [ OK ]
Iniciando nmbd... [ OK ]
Iniciando smbd... [ OK ]
Creamos los usuarios que se autenticarán a nuestro servidor desde un cliente Windows:
root [ ~ ]# useradd francisco
root [ ~ ]# smbpasswd -a francisco
New SMB password:
Retype new SMB password:
Added user francisco.
Por último autenticamos los clientes Windows para que pertenezcan al dominio que hemos
creado en este servidor, utilizamos la cuenta de superusuario para realizar esta tarea.
16.7 Uso de samba para autenticar contra un servidor Windows. Hasta ahora hemos configurado un sistema Samba para que los usuarios se autentiquen en él
utilizando los motores de autenticación que nos provee Samba. Pero una solución que se
requiere en grandes ambientes de producción donde se utiliza un Directorio Activo de
Windows es poder utilizar los mismos usuarios que ya están registrados, es decir que Samba
comparta recursos utilizando los usuarios y contraseñas de un servidor Windows.
16.7.1 El demonio Winbind
El demonio winbind nos permite traducir información sobre las cuentas de los usuarios desde
servidores nativos en Windows, para esto se basa en el módulo de PAM pam_winbind, la
herramienta ntlm_auth que permite el acceso externo a las funciones de autenticación y el
servicio libnss_winbind (biblioteca del conmutador del servicio de nombres de winbind).
16.7.2 Integración al active directory A continuación veremos un ejemplo real de la integración de un host a un dominio de
Windows llamado dcinfotec.local
1. Debemos modificar el archivo /etc/sysconfig/network, con el propósito de que
pertenezca al dominio de Windows, lo editamos de la siguiente forma:
HOSTNAME=nombre_host.nombre_dominio
Ejemplo:
HOSTNAME=beakos.dcinfotec.local
Hacemos lo mismo en el archivo /etc/hosts
Ejemplo:
127.0.0.1 localhost beakos beakos.dcinfotec.local
2. Editamos el archivos /etc/samba/smb.conf para que quede de la siguiente forma:
[global]
unix charset = LOCALE
realm = dcinfotec.local
workgroup = dcinfotec
security = ADS
password server = 192.168.105.50
winbind separator = +
log level = 1
syslog = 1
log file = /var/log/samba/%m
winbind uid=10000-20000
winbind gid=10000-20000
winbind enum users=yes
winbind enum groups=yes
template homedir=/tmp
template shell=/sbin/nologin
Analicemos detalladamente cada una de las opciones.
unix charset = LOCALE
Esta directiva utilizará la codificación de caracteres local configurada en Beakos GNU/Linux.
Por defecto es el estándar “POSIX”.
realm = dcinfotec.local
Indica el dominio al cual el servidor Samba estará uniendo.
workgroup = dcinfotec
Indica el grupo de trabajo de Windows al cual nos estaremos integrando.
password server = 192.68.105.50
Indica el servidor que contiene la información de la autenticación, por lo regular es el mismo
que contiene el Directorio Activo.
security = ADS
El nivel de seguridad ADS permitirá unirnos a un Directorio Activo mediante Kerberos.
winbind separator = +
Indica el separador a utilizar en las cuentas y grupos de usuarios. Ejemplo:
DCINFOTEC+angel.ruiz
log level = 1
Indica el nivel de detalle del registro en la bitácora de actividades.
syslog = 1
El valor 1 indica que está activado en envió de registros al sistema de logs del Kernel.
winbind uid=10000-20000
Indica al demonio winbind que los UID de los usuarios del directorio activo estarán dentro de
este rango.
winbind gid=10000-20000
Indica al demonio winbind que los GID de los grupos del directorio activo estarán dentro de
este rango.
winbind enum users=yes
winbind enum groups=yes
template homedir=/tmp
Le indica al demonio winbind que el directorio inicial para los usuarios del directorio activo
será /tmp.
template shell=/sbin/nologin
Le indica al demonio winbind que el intérprete de comandos para los usuarios del directorio
activo será /sbin/nologin. Es recomendable no darles acceso a la consola a estos
usuarios.
3. Editamos el archivo /etc/nsswitch.conf que es que se encarga de regular el orden en
que se buscan los usuarios y las contraseñas en el sistema. Dejándolo de la siguiente forma:
# Begin /etc/nsswitch.conf
passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
Lo anterior hará posible que después de obtener los usuarios locales del archivo
/etc/passwd haga una búsqueda de usuarios en el directorio activo.
4. Editamos el archivo de configuración de Kerberos dejándolo de la siguiente forma:
# Begin etc/krb5/krb5.conf
[libdefaults]
default_realm = DCINFOTEC.LOCAL
encrypt = true
[realms]
DCINFOTEC.LOCAL = {
kdc = 192.168.105.50
admin_server = 192.168.105.50
dict_file = /usr/share/dict/words
}
[domain_realm]
.dcinfotec.local = DCINFOTEC.LOCAL
[logging]
kdc = SYSLOG[:INFO[:AUTH]]
admin_server = SYSLOG[INFO[:AUTH]]
default = SYSLOG[[:SYS]]
# End /etc/krb5/krb5.conf
6. Generamos el ticket de Kerberos
root [ ~ ]# kdb5_util create -s
7. Una vez realizados los pasos anteriores reiniciamos el servidor samba e iniciamos el servidor
winbind.
root [ ~ ]# /etc/init.d/samba restart
8. Ahora el sistema se encuentra listo para poder integrarse al directorio activo, tecleamos el
siguiente comando:
root [ /etc ]# net ads join -U usuario%contraseña
Donde el usuario es el administrador autorizado para agregar equipos al directorio activo.
Procedemos a iniciar el demonio winbind
root [ ~ ]# /etc/init.d/winbind start
root [ ~ ]# chkconfig –add winbind
9. Podemos corroborar que ya podemos hacer uso de los usuarios y grupos del directorio
activo tecleando:
root [ ~ ]# wbinfo -u
10. Comprobamos la validación de usuarios y grupo funciona bien a través de NSS, teclea:
root [ ~ ]# getent passwd
11. Supongamos que existe un grupo llamado “samba” dentro del directorio activo llamado
“DCINFOTEC”, al cual pertenecen los usuarios “miguel.cuapio” y “francisco.sosa”, y deseamos
compartir el directorio /opt/directorio1, en el cual ambos usuarios tengan permiso de
lectura y escritura. Realizaríamos los siguientes pasos:
Creamos el directorio:
root [ ~ ]# mkdir /opt/directorio1
Asignamos el recurso al grupo Samba y le damos permisos de lectura y escritura:
root [ ~ ]# chmod 770 /opt/directorio1
root [ ~ ]# chgrp DCINFOTEC+samba /opt/directorio1
Por último editamos el archivo /etc/samba/smb.conf , y agregamos el recurso al final.
[compartido]
comment = directorio de prueba
path = /opt/directorio1
guest ok = no
write list = @DCINFOTEC+SAMBA-rw
browseable = yes
writable = yes
create mask = 0775
directory mask = 0775
Reconfiguramos samba:
root [ ~ ]# /etc/init.d/samba reload
Recargando smbd... [ OK ]
Recargando nmbd... [ OK ]
Ahora podemos acceder con los usuarios que pertenecen al grupo samba con privilegios de
lectura y escritura.
16.8 SWAT (Samba Web Administration Tool) SWAT es una interfaz que nos permite administrar Samba de manera gráfica, es una excelente
alternativa si no deseamos complicarnos la existencia editando los archivos de configuración
de forma manual.
Beakos GNU/Linux incluye SWAT junto con el paquete de Samba, así que si ha instalado Samba
no tiene que preocuparse de SWAT, sólo debe cerciorarse que esté instalado el paquete
Xinetd, SWAT lo necesita para ejecutarse como servicio sobre demanda. Ejecutemos el
comando:
root [ ~ ]# chkconfig --list
xinetd based services:
swat: on
Podemos observar que el servicio SWAT se encuentra activo. Analicemos el archivo de
configuración de SWAT /etc/xinetd.d/swat
# Begin /etc/xinetd.d/swat
service swat
{
port = 904
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
}
# End /etc/xinetd.d/swat
Podemos observar que el servicio SWAT estará escuchando por el puerto 904, y sólo escuchará
peticiones por localhost, podemos modificarlo para que escuche peticiones de alguna otra
dirección IP.
Sugerencia La autenticación de SWAT enviará la
información sin cifrar del navegador al servidor, no se
recomienda operar SWAT desde otra máquina o bien si
desea hacerlo utilice alguna herramienta como Stunnel
Si ha decidido modificar el archivo, es necesario reiniciar Xinetd para que los cambios surtan
efecto.
root [ ~ ]# /etc/init.d/xinetd restart
Deteniendo xinetd... [ OK ]
Iniciando xinetd... [ OK ]
Puede conectarse a la interfaz Web de SWAT utilizando el navegador Web del sistema de
Beakos, (necesitará haber instalado la interfaz gráfica, vea gestión de paquetes). Teclee la
siguiente URL en el navegador web:
http://127.0.0.1:904
Al ingresar esta URL se le pedirá nombre usuario y contraseña, escriba root como nombre de
usuario y su respectiva contraseña, una vez registrado se mostrará una interfaz web como
esta:
Figura 16-1. SWAT herramienta para la administración gráfica de Samba.
16.8.1 Menús de SWAT Cuando establece una conexión a la herramienta de configuración SWAT y se autentica como
usuario root, verá el menú de la figura 16-1, además de encontrar muchas opciones para la
configuración de Samba, encontrará también toda la documentación referente a esta
herramienta.
En la página superior encontrará las siguientes opciones:
Tabla 16-1. Menús de la herramienta Samba SWAT
Menú Descripción
Home La página del menú principal, en ella se encuentran ligas hacia la documentación de Samba, estás ligas apuntan a enlaces dentro del servidor, por lo que no deberá preocuparse por la conexión a Internet, podemos obtener información de los demonios de Samba, los archivos de configuración, herramientas del lado del cliente, herramientas administrativas, de consulta, etc.
Globals Incluye opciones de configuración globales para el servidor Samba, por ejemplo la configuración del grupo de trabajo, del dominio, de winbind, de usuarios y contraseñas entre otros. A la izquierda de cada valor existe un vínculo hacia la documentación relevante de cada parámetro, vale la pena revisarlo, le proporcionará conocimientos valiosos y prácticos.
Shares En Windows compartir un directorio resulta sumamente sencillo, basta con realizar unos cuantos clicks, este trabajo se logra en samba usando este menú.
Printers Este menú permite administrar impresoras disponibles con CUPS, compartidas con samba, podemos editar, agregar, borrar, etc.
Wizard Opción disponible en otras versiones de Samba, su función es configurar un servidor Samba paso a paso a través de menús intuitivos.
Status Muy útil para administrar los demonios de Samba, permite detener, iniciar y reiniciar. Además muestra las conexiones activas al servidor, los directorios compartidos y los ficheros abiertos.
View Nos genera una vista del archivo de configuración de Samba, conforme vaya realizando modificaciones observará como va cambiando.
Password Podemos administrar usuarios y contraseñas a través de este menú, sin accesar a la consola.
16.9 El comando SMBCLIENT El comando smbclient es una herramienta de la línea de comandos que nos permite
actuar como cliente de Samba o incluso de otros servidores Windows, es una herramienta muy
completa, permite explorar en otros servidores, enviar y recibir archivos de ellos. En esta
sección mostraremos como accesar a recursos remotos de una manera básica, sin embargo
este comando ofrece muchas opciones tómese su tiempo el tiempo necesario para ir más allá
si así lo desea.
16.9.1 Explorar un servidor Con tantas interfaces gráficas disponibles para GNU/Linux, seguramente no hemos pensado
utilizar algún comando de consola para acceder un recurso de Samba, pero como
administradores de sistemas sabemos que no siempre tendremos a nuestra disposición una
cómoda interfaz gráfica, la sintaxis para accesar a un recurso es la siguiente:
smbclient –L nombre_del_servidor
Por ejemplo si deseamos ver los recursos compartidos de un servidor samba escribimos:
root [ ~ ]# smbclient -L 192.168.4.226
Quizá nos pida contraseña, simplemente tecleamos ENTER, para evitar esto podemos acceder
como usuario anónimo utilizando –U%, de la siguiente forma:
root [ ~ ]# smbclient –U% -L 192.168.4.226
Anonymous login successful
Domain=[BEAKOS.COM.MX] OS=[Unix] Server=[Samba 3.5.4]
Sharename Type Comment
--------- ---- -------
compartido Disk directorio compartido
IPC$ IPC IPC Service (Samba Server)
Anonymous login successful
Domain=[BEAKOS.COM.MX] OS=[Unix] Server=[Samba 3.5.4]
Server Comment
--------- -------
BEAKOS Samba Server
Ponga especial atención en que existe un recurso llamado “compartido”. Al cual vamos a
acceder con el usuario del sistema “angel”.
16.9.2 Acceder a un archivo remoto Acceder a un recurso remoto en un servidor Windows o en un servidor Samba es una tarea
que se puede realizar también con el comando smbclient, sintaxis:
smbclient //servidor_samba/recurso_compartido
Explicaremos algunas opciones para conectarse a los recursos compartidos con samba
mediante smbclient.
Tabla 16-2. Opciones para conectar con un servidor con smbclient
Opción Descripción
-I IP_destino Dirección Ip del servidor al cual nos queremos conectar.
-U usuario Nombre del usuario con el que deseamos establecer conexión al servidor samba. Ejemplo: -U francisco
-W grupo_trab Establece el grupo de traajo.
-D Directorio Directorio empieza la sesión conectándose al directorio.
Supongamos que el servidor 192.168.4.226 tiene configurado el recurso “compartido”, y
deseamos acceder a él con el usuario “angel”.
root [ ~ ]# smbclient -U angel //192.168.4.226/compartido
Enter angel's password:
Domain=[BEAKOS.COM.MX] OS=[Unix] Server=[Samba 3.5.4]
smb: \>
Podemos emplear los siguientes comandos para administrar nuestros archivos:
cd Cambiar de directorios
ls Mostrar el contenido de los directorios
get Obtener ficheros del servidor.
put Colocar ficheros en el servidor.
mget Obtener múltiples ficheros en el servidor.
mput Colocar múltiples ficheros en el servidor.
help Muestra la ayuda disponible.
16.10 Montaje de un recurso compartido de Samba El núcleo(Kernel) de Beakos GNU/Linux se encuentra compilado para montar recursos
compartidos de Samba como sucede con la mayoría de las distribuciones, usted podrá montar
recursos de SMB casi de la misma forma que lo hace con particiones NFS, resulta
especialmente útil para acceder a grandes volúmenes de un sistema remoto sin autenticarse
de manera continua.
Podemos usar el comando mount para montar un recurso compartido, veamos el siguiente
ejemplo:
1. Crear un directorio como punto de montaje:
root [ ~ ]# mkdir /mnt/samba
2. Ahora tecleamos el comando mount con sus opciones para realizar el montaje:
root [ ~ ]# mount.cifs //192.168.4.226/compartido \
/mnt/samba/ -o user=angel,pass=*****
Esto para un montaje que no persista a un reinicio, si deseamos crearle una entrada en el
archivo /etc/fstab, quedaría de la siguiente forma:
//192.168.4.226/compartido /mnt/samba cifs
user=angel,pass=******,defaults 0 0
Ahora debemos ejecutar el siguiente comando para que monte las entradas de archivos
/etc/fstab
root [ ~ ]# mount -a
Escribimos el siguiente comando para corroborar que el sistema de archivos de Samba se
encuentra montado.
root [ ~ ]# mount
//192.168.4.226/compartido on /mnt/samba type cifs
(rw,user=angel,pass=*****)
Capí tulo 17 LDAP
LDAP (Lightweight Directory Access Protocol, Protocolo Ligero de Acceso a Directorios), es un
servicio a nivel de aplicación que incluye un conjunto de protocolos utilizados para acceder y
modificar información centralizada en una red de computadoras.
LDAP está diseñado para acceso a directorios basado en el modelo X.500, al igual que una base
de datos convencional se le pude realizar consultas para obtener información almacenada en
el servidor.
LDAP es un servicio muy escalable y relativamente fácil de configurar, pero para eso daremos
una breve introducción sobre los conceptos principales que rigen su arquitectura.
17.2 Conceptos básicos de LDAP LDAP es un servicio global de directorios. Estos directorios permiten almacenar todo tipo de
información relativa a objetos de distintas clases. LDAP se diferencia de las bases de datos
tradicionales en que está especialmente diseñada para buscar y leer datos, no para
operaciones de escritura.
Algunas implementaciones populares de LDAP son:
Open LDAP, implementación de código abierto de LDAP que abordaremos en capítulos
siguientes.
Red Hat Directory Server, implementación de LDAP desarrollada por Red Hat Inc.
Directorio Activo de Microsoft.
Apache Directory Server, Implementación de LDAP desarrollada en Java, por Apache
Fundation.
17.2.1 Jerarquía de LDAP Las entradas de un directorio LDAP están estructuradas en forma de árbol jerraquico, a esta
estructura se le conoce como DIT(árbol de información del directorio). Analicemos a fondo este
árbol a través del siguiente esquema.
dc = beakos, dc = com
ou = Desarrollo
ou = Diseno
ou = Pruebas
uid = carlos
uid = jesus
uid = antonio
(dn: uid = carlos, ou = Diseno, dc = beakos, dc = com )
Figura 17-1. Esquema de un árbol LDAP para beakos.com
La parte superior de la estructura se le conoce como raíz, la ruta completa para un objeto del
directorio se le conoce como dn(nombre diferenciado).
LDAP es ampliamente utilizado para definir estructuras dentro de las organizaciones, por
ejemplo la definición de funciones de diversas áreas y las personas que las integran. Ejemplo:
El proyecto Beakos GNU/Linux puede estructurarse declarando su dominio como la raíz (dc),
de la cual se desprenden 3 áreas (OU Unidades organizacionales), a las cuales pertenecen
diversas personas (uid).
17.2.2 Funcionamiento de LDAP Al igual que otros servicios de Red, LDAP se basa en la arquitectura cliente/servidor, en este
contexto la conexión a un servidor LDAP sería como se describe continuación:
Un cliente de LDAP se conecta a un servidor, esta acción se conoce como enlazarse a
un servidor.
Dependiendo de los privilegios de acceso configurados en el servidor LDAP, este puede
aceptar o rechazar la conexión.
Si el servidor acepta la conexión, el cliente entonces puede acceder a la información
del directorio, modificarla o actualizarla.
Si la conexión es rechazada, el servidor LDAP puede enviar la petición del cliente a otro
servidor LDAP superior que quizá si pueda atender la solicitud.
17.2.3 Implementaciones de LDAP LDAP es un servicio de directorios distribuidos y puede almacenar diversos tipos de
información. Prácticamente puede almacenar cualquier tipo de información como texto, fotos,
certificados digitales.
Enlistamos algunos de los usos que se le pueden dar a LDAP:
LDAP puede servir como una completa solución para Administrar la identidad de los
usuarios dentro de una organización. NIS puede ser reemplazado por completo con
LDAP para administrar los servicios de autenticación.
Los servidores DNS puede almacenar su información en un servidor LDAP.
LDAP puede hacer la función de un directorio que ofrezca información de contacto de
los usuarios dentro de una organización (no. de teléfono, dirección, correo electrónico,
etc.).
Un servidor LDAP puede proporcionar a un servidor de archivos en Samba un base de
objetos de grandes dimensiones para que Samba pueda operar como un servidor de
dominio.
Los servidores de correo electrónico pueden almacenar la información de las cuentas
en servidores LDAP.
17.2.4 Términos empleados en LDAP En esta sección definiremos algunos de los términos más empleados al trabajar con LDAP.
Objeto, Es la unidad mínima de un directorio LDAP. A cada objeto se le llama por su
nombre diferenciad. Por ejemplo:
“dn:uid=angel,ou=desarrollo,dc=beakos,dc=com”
Atributo, Es la información relacionada al objet. por ejemplo en su correo elctrónico,
direciión, teléfono, etc.
ObjectClass, este es un tipo especial de atributo, sirve para especificar que atributos
son requeridos por un objeto de LDAP, este atributo se puede modificar por los
clientes, pero no puede ser borrado. Las definiciones de ObjectClass se almacenan en
los esquemas.
Esquemas (schemas), Un esquema es una colección de reglas que determinan la
estructura y el contenido de un directorio. El esquema contiene las definiciones, los
tipos de atributo y las clases de objetos.
Es usual que los esquemas se almacenen en archivos de texto plano y define si los
atributos son opcionales u obligatorios.
Ejemplos de esquemas son (/etc/openldap/schema):
core.schema, este esquema define los objetos y atributos básicos de la versión 3 de
LDAP, es el esquema central requerido para la implementación de OpenLDAP.
inetorgperson.schema, Esta clase de objeto se utiliza con frecuencia para almacenar
información de usuarios.
LDIF, Formato de intercambio de datos LDAP. Es un archivo de texto plano para
objetos LDAP. Los archivos que importan o exportan datos hacia y desde un servidor
LDAP deben hacerlo con este formato.
17.3 Open LDAP OpenLDAP es la implementación abierta del protocolo LDAP, está liberada bajo su propia
licencia y es la implementación que utiliza el proyecto Beakos, el programa básicamente
incorpora los siguientes componentes.
17.3.1 Los demonios Slapd y Slurpd. Splapd es un demonio de OpenLDAP independiente, escucha las conexiones de clientes LDAP
hechas por el puerto 389 de TCP y atiende dichas conexiones.
El demonio Slurpd, se trata de un demonio independiente para la replicación de datos hacia
otros servidores, sólo es requerido cuando se sincronizan dos o más servidores.
17.3.2 Utilidades del Cliente de OpenLDAP Estas utilidades son un conjunto de herramientas que funcionan desde la línea de comandos,
nos permiten hacer consultas, visualizar, actualizar y modificar datos de un directorio de LDAP,
en Beakos GNU/Linux estas herramientas se incluyen el paquete openldap-client, disponible
en el repositorio de software.
Tabla 17-1. Utilidades más usuales de OpenLDAP
Opción Descripción
ldapadd Abre una conexión a un servidor LDAP, enlaza y añade entradas.
ldapcompare Abre una conexión a un servidor LDAP, enlaza y compara usando parámetros específicos.
ldapdelete Abre una conexión a un servidor LDAP, enlaza y borra una o más entradas.
ldapmodify Abre una conexión a un servidor LDAP, enlaza y modifica entradas.
ldapmodrdn Abre una conexión a un servidor LDAP, enlaza y modifica las entradas de RDN.
ldappasswd Herramienta para crear contraseñas a usuarios de LDAP.
ldapsearch Abre una conexión a un servidor LDAP, enlaza y realiza búsquedas usando los parámetros especificados.
slapadd Se utiliza para añadir entradas especificadas en el formato de intercambio de directorios LDAP (LDIF) a una base de datos LDAP.
slapcat Se utiliza para generar una salida LDAP LDIF basada en el contenido de una base de datos slapd.
slapindex Se utiliza para regenerar índices slapd basado en el contenido actual de una base de datos.
slappasswd Utilidad de contraseñas de OpenLDAP.
slaptest Checa si existen errores en el archivo de configuración de OpenLDAP.
17.4 Instalación de OpenLDAP Para poder instalar Open LDAP en Beakos GNU/Linux , se requiere de los siguientes paquetes:
openldap-client-2.3.39-i386-1, Proporciona los binarios necesarios para que nuestro
sistema funcione como un cliente de LDAP, pudiendo acceder a un servidor de
OpenLDAP y editar y modificar registros.
openldap-server-2.3.39-i386-1, Proporciona los binarios necesarios para instalar un
servidor OpenLDAP en Beakos GNU/Linux, este paquete contiene los demonios slapd y
slurpd.
pam_ldap-185-i386-1, Permite autenticar usuarios del sistema contra un servidor
LDAP.
Para instalar los paquetes anteriores escribimos los siguientes comandos como usuario raíz.
root [ ~ ]# swaret --install openldap
El comando anterior nos instalará el cliente y el servidor de OpenLDAP. Si deseamos instalar el
módulo de autenticación PAM para LDAP, tecleamos:
root [ ~ ]# swaret –install pam_ldap
Concluida la instalación del servidor LDAP podemos proceder con la configuración de nuestro
servidor.
17.5 Configuración de OpenLDAP Dependiendo de nuestras necesidades, la configuración de OpenLDAP puede ser un proceso
simple o tornarse en un asunto muy complejo, en esta sección configuraremos un servidor con
parámetros básico, realizaremos consultas e inserciones de datos.
17.5.1 El archivo de configuración slapd.conf El archivo /etc/openldap/slapd.conf es el archivo de configuración para el servidor
OpenLDAP (demonio slapd), en esta sección analizaremos a detalle la configuración del este
archivo, utilizando los siguientes parámetros:
Sugerencia Antes de llevar a cabo la configuración
de un servidor OpenLDAP, es necesario que tenga
usted bien definido la estructura de su directorio
(unidades organizacionales, usuarios, etc.).
dc=beakos,dc=com
cn=admin
Analicemos las configuración del servidor, hemos eliminado las líneas que no serán necesario
modificar, en una configuración básica.
1 #
2 # See slapd.conf(5) for details on configuration options.
3 # This file should NOT be world readable.
4 #
5 include /etc/openldap/schema/core.schema
6
7 # Define global ACLs to disable default read access.
8
9 # Do not enable referrals until AFTER you have a working
10 # directory
11 # service AND an understanding of referrals.
12 #referral ldap://root.openldap.org
13
14 pidfile /srv/ldap/run/slapd.pid
15 argsfile /srv/ldap/run/slapd.args
16
17 ############################################################
18 # BDB database definitions
19 ############################################################
20 database bdb
21 suffix "dc=beakos,dc=com"
22 rootdn "cn=admin,dc=beakos,dc=com"
23 # Cleartext passwords, especially for the rootdn, should
24 # be avoid. See slappasswd(8) and slapd.conf(5) for details.
25 # Use of strong authentication encouraged.
26 rootpw secret
27 # The database directory MUST exist prior to running slapd
28 # should only be accessible by the slapd and slap tools.
29 # Mode 700 recommended.
30 directory /srv/ldap/openldap-data
Las primeras 4 líneas son comentarios.
La línea 5 corresponde al “schema” por default, podemos agregar más esquemas del directorio
/etc/openldap/schemas, según nuestras necesidades y la función que nuestro sistema
LDAP vaya a desempeñar, para una configuración básica, por lo menos el esquema
“core.schema”, debe estar configurado.
La línea 14 indica la ruta donde estará almacenado el archivo indicador de proceso (pidfile).
La línea 15 declara la directriz argsfile, indica la ruta del archivo que puede utilizarse para
configurar opciones adicionales para el inicio del demonio slapd.
La línea 20 indica la base de datos que se utilizará para almacenar los datos relacionados con
LDAP, por defecto se utiliza la base de datos de segundo plano de Berkeley (db), pero se puede
hacer uso de algunas otras como SQL (se recomienda dejar esta opción).
La línea 21 indica el sufijo DN de las consultas que se realizarán en el servidor OpenLDAP.
Define el dominio de nuestro servidor Open LDAP, para esta práctica nosotros emplearemos el
dominio beakos.com.
La línea 22 especifica el nombre diferenciado (dn) del usuario que administrará nuestro
servidor OpenLDAP.
La línea 26 equivale a la contraseña de nuestro usuario administrador, debemos cambiar la
palabra “secret” por la cadena de caracteres que nos arroje la utilidad slappasswd. Sobra
decir que debemos utilizar una buena contraseña. Ejemplo:
root [ ~ ]# slappasswd
New password:
Re-enter new password:
{SSHA}UzK7y7seNn7zDRyq0s8/mlqxz1H3cjT6
Por último, la línea 30 indica la ruta del directorio donde se almacenarán los archivos de la
base datos y archivos relacionados.
17.5.3 Administración del servicio de OpenLDAP Concluida la configuración del demonio de OpenLDAP, podemos prepararnos para iniciar el
demonio, tecleamos:
root [ ~ ]# /etc/init.d/openldap start
Iniciando servidor LDAP... [ OK ]
Verificar el estado del servidor escribimos:
root [ ~ ]# /etc/init.d/openldap status
Iniciando servidor LDAP... [ OK ]
Detener el demonio de OpenLDAP, tecleamos:
root [ ~ ]# /etc/init.d/openldap stop
Iniciando servidor LDAP... [ OK ]
Si deseamos que el servicio se inicie cuando arranque el sistema, tecleamos:
root [ ~ ]# chkconfig openldap on
Verificamos en que niveles se iniciará tecleando:
root [ ~ ]# chkconfig --list | grep openldap
openldap 0:off 1:off 2:on 3:on 4:on 5:on 6:off
17.5.4 Configuración del cliente de OpenLDAP La configuración de un cliente de LDAP, puede tomar algún tiempo llegarla a comprender, el
archivo de configuración del cliente se ubica en la ruta /etc/openldap/ldap.conf. En
esta sección realizaremos los ajustes necesarios para hacer funcionar al cliente de OpenLDAP,
en realidad sólo será necesario realizar un ajuste, bien valdría la pena revisar los demás
parámetros de los que dispone el cliente para tener una idea más clara de lo que se puede
realizar con LDAP.
Localice la siguiente línea en el archivo /etc/openldap/ldap.conf
base dc=padl,dc=com
hacer que se vea de la siguiente forma:
base dc=beakos,dc=com
17.6 Creación de objetos en OpenLDAP OpenLDAP nos permite insertar objetos desde un archivo de texto plano, estos objetos están
representados en el formato Data Interchange Format LDAP (LDIF), estos archivos se pueden
utilizar para, agregar, borrar y modificar información en el directorio, el formato de un archivo
LDIF corresponde a:
dn: <nombre diferenciado>
<descripción_atributo>: <valor>
<descripción_atributo>: <valor>
dn: <nombre diferenciado2>
<descripción_atributo>: <valor>
<descripción_atributo>: <valor>
A continuación crearemos un archivo llamado prueba.ldif, para poder crear objetos
dentro de nuestro directorio LDAP. Utilice algún editor de textos para crear la siguiente
información:
dn: dc=beakos,dc=com
objectclass: dcObject
objectclass: organization
o: Proyecto Beakos
dc: beakos
dn: cn=angel,dc=beakos,dc=com
objectclass: organizationalRole
cn: angel
dn: cn=francisco, dc=beakos,dc=com
objectclass: organizationalRole
cn: francisco
Terminado el archivo de ser editado utilizamos el comando ldapadd, para importar el
archivo LDIF a nuestro directorio, tecleamos:
root[ ~ ]# ldapadd -x -D "cn=admin,dc=beakos,dc=com" -W –f \
prueba.ldif
Enter LDAP Password:
adding new entry "dc=beakos,dc=com"
adding new entry "cn=angel,dc=beakos,dc=com"
adding new entry "cn=francisco, dc=beakos,dc=com"
Utilizamos los siguientes parámetros:
x Indica que se debe utilizar la autenticación de LDAP en vez de SASL.
D Se utiliza para especificar el nombre diferenciado que se va a utilizar.
W Permite utilizar la autenticación simple, en lugar de teclear la contraseña en la línea
de comandos.
f Especifica el archivo que se utilizará para la importación de los datos.
17.6.1 Consultas en un directorio LDAP La utilidad ldapsearch, nos permite extraer información de un directorio de LDAP, para
buscar las entradas que creamos en el ejercicio anterior, tecleamos:
root [ ~ ]# ldapsearch -x -b "dc=beakos,dc=com" "objectclass=*"
# extended LDIF
#
# LDAPv3
# base <dc=beakos,dc=com> with scope subtree
# filter: objectclass=*
# requesting: ALL
# beakos.com
dn: dc=beakos,dc=com
objectClass: dcObject
objectClass: organization
o: Proyecto Beakos
dc: beakos
Salida truncada………
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
Realizaremos nuestra consulta ahora buscando el objeto cuyo nombre sea “angel”. Tecleamos:
root [ ~ ]# ldapsearch -x -b "dc=beakos,dc=com" "cn=angel"
# extended LDIF
Salida truncada…
# angel, beakos.com
dn: cn=angel,dc=beakos,dc=com
objectClass: organizationalRole
cn: angel
Salida truncada ….
Ahora bien utilizaremos la herramienta ldapdelete eliminar el objeto cuyo cn es igual a
“francisco”.
root [ ~ ]# ldapdelete -x -W -D "cn=admin,dc=beakos,dc=com" \
"cn=francisco,dc=beakos,dc=com"
Enter LDAP Password:
17.7 Implementación de una libreta de direcciones en un
directorio LDAP
LDAP es una herramienta muy versátil, la cual podemos aplicar en muchas soluciones, una de
ella es una libreta de direcciones donde los usuarios pueden conectarse a nuestro servidor
para consultar información de diversos contactos. En esta sección pondremos en marcha un
servidor LDAP cuyo nombre diferenciado sea “dn: dc=beakos,dc=com” y el usuario
administrador sea “admin”. Es decir utilizaremos el servidor configurado en las secciones
anteriores.
17.7.1 Agregar los esquemas. Por defecto OpenLDAP solo incluye el esquema llamado “core.schema”, debemos agregar al
archivo de configuración /etc/openldap/slapd.conf, los siguientes esquemas del
directorio /etc/openldap/schemas
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
Una vez que hemos agregado estas líneas podemos proceder a reiniciar el servidor.
root [ ~ ]# /etc/init.d/openldap restart
Deteniendo servidor LDAP... [ OK ]
Iniciando servidor LDAP... [ OK ]
17.7.2 Instalación de PHPLDAPADMIN Phpldapadmin, conocido también como PLA es una interfaz web desarrollada en PHP través
de la cual podemos administrar nuestro servidor OpenLDAP, podemos realizar búsquedas,
crear, borrar, copiar y editar entradas LDAP, incluso copiar entradas entre servidores LDAP.
Para instalar esta herramienta necesitamos tener instalado el servidor web apache y el
interprete PHP. Tecleamos los siguientes comandos, instalamos también sus respectivas
dependencias:
root [ ~ ]# swaret –install httpd-2.2.16-i386-1
root [ ~ ]# swaret –install apr-util-1.3.9-i386-1
root [ ~ ]# swaret –install apr-1.4.2-i386-1
root [ ~ ]# swaret --install php
Una vez instalados nos cambiamos al directorio de publicación de apache:
root [ ~ ]# cd /srv/www/htdocs/
Descargamos phpldapadmin de su sitio oficial, ya que lo hemos descargado descomprimimos
el paquete, tecleamos:
root [ /srv/www/htdocs ]# tar -xf phpldapadmin-1.2.0.5.tgz
A este directorio le podemos crear un enlace simbólico para recordar más fácil su acceso.
root [ /srv/www/htdocs ]# ln -sf phpldapadmin-1.2.0.5 \
phpldapadmin
Posterior a esto procedemos a instalar el archivo de configuración de phpldapadmin, llamado
config.php, copiamos el archivo config.php.example con el nombre config.php:
root [ /srv/www/htdocs ]# cd phpldapadmin/config/
root [ /srv/www/htdocs/phpldapadmin/config ]# cp \
config.php.example config.php
Procedemos a iniciar nuestro servidor apache.
root [ ~ ]# /etc/init.d/apache start
Ahora podemos acceder a la interfaz web con la siguiente URL.
http://192.168.0.133/phpldapadmin/htdocs/index.php
Nos deberá mostrar la siguiente ventana:
Figura 17-2. Interfaz web de PLA
Damos un click en conectar, la interfaz nos solicitará el nombre de usuario y contraseña,
proporcionamos el nombre diferenciado de nuestro servidor que corresponde a
“cn=admin,dc=beakos,dc=com” y la respectiva contraseña.
Figura 17-3. Autenticación al servidor OpenLDAP a través de PLA
Una vez autenticados en el servidor podemos observar que existe nuestro dominio raíz
(dc=beakos, dc=com).
Figura 17-4. Domino raíz en PLA
17.7.3 Creación de Objetos con PHPLDAPADMIN Autenticados en el servidor, podemos proceder a la creación de Objetos, seleccionamos la
opción “Crear objeto nuevo” y seleccionamos del lado derecho la opción “Genérico: Entrada en
la Libreta de Direcciones” procedemos a llenar los campos y damos click en el botón “crear
objeto”.
Figura 17-5 Creación de objetos en PLA
Verificamos los datos y damos un click en el botón “cometer”.
Figura 17-6. Entrada en la libreta de direcciones.
17.7.4 Configuración del cliente de Correo Utilizaremos el cliente de correo Thunderbird como cliente para Realizar búsquedas en
nuestra libreta de direcciones.
Seleccionamos en el menú la opción “herramientas>Libreta de direcciones”.
Figura 17-7. Configuración del cliente.
Nos mostrará la siguiente ventana, donde seleccionamos, “Archivo>Nuevo>Directorio LDAP”
Figura 17-8. Directorio LDAP
Thunderbird nos mostrará un formulario donde colocaremos los datos de nuestro servidor
LDAP con el objetivo de establecer conexión. Donde “Nombre” corresponde al nombre de la
libreta de direcciones, “Servidor” corresponde a la dirección IP o nombre de Host del servidor
LDAP, “DN base” corresponde a dominio de LDAP donde estableceremos la conexión, “Número
de puerto” corresponde a 389 de TCP, a menos que le hayamos configurado otro valor a
nuestro servidor dejaremos este parámetro como está, por último especificamos el “DN para
inicio de sesión ”, este valor corresponde en nuestro caso a “cn=admin,dc=beakos,dc=com”.
Figura 17-9. Configuración de parámetros del servidor LDAP
Seleccionamos el botón “aceptar” y sólo resta realizar las pruebas pertinentes. En el cuadro de
búsqueda, tecleamos un carácter y nos debe mostrar las direcciones que coincidan con ese
patrón de búsqueda.
Figura 17-10. Búsqueda de datos en un servidor LDAP.
Capí tulo 18 DHCP
DHCP (Dinamic Host Control Protocol), es un servicio que permite a los nodos de una red
obtener su configuración de manera automática. En una organización donde residen cientos o
tal vez miles de nodos resultaría un ardua labor asignar la configuración del la red de los hosts
de forma manual.
La asignación dinámica de direcciones IP es muy útil para equipos móviles o que residirán en
nuestra red de manera temporal. Las personas que se desplazan en diferentes oficinas pueden
obtener una configuración de red de acuerdo a sus necesidades.
En este capítulo mostraremos la mecánica del funcionamiento del servidor DHCP,
enseñaremos los pasos de la instalación en Beakos GNU/Linux y realizaremos la configuración
de un servidor DHCP.
18.1 Funcionamiento del servicio de DHCP La mecánica que se efectúa entre un cliente y un servidor DHCP es la siguiente.
El cliente es configurado para obtener su dirección IP de forma automática a través de
un servidor DHCP.
En la red local existe un servidor DHCP configurado para que escuche las peticiones de
los clientes.
El servidor que recibe la solicitud, revisa su archivo de configuración para emitirle al
cliente una respuesta, esta respuesta incluye la asignación de una dirección IP,
servidor DNS, puerta de enlace predeterminada, máscara de sub red etc.
El cliente que ha recibido la respuesta del servidor configura los parámetros locales
con los datos que ha recibido.
El servidor mantiene una lista de direcciones que puede asignar a los clientes y
mantiene otra lista de las direcciones que han sido asignadas.
Cada dirección se emite por un periodo, durante el cual el cliente puede utilizar esa
dirección, una vez terminado este periodo el cliente se vuelve a conectar con el
servidor DHCP para renovar su dirección.
Si el servidor no recibe la respuesta del cliente, este libera la dirección IP para colocarla
en su base de datos de direcciones disponibles.
18.2 Instalación del servidor DHCP Beakos GNU/Linux tiene el cliente de DHCP instalado por defecto, para poder configurar una
dirección IP proporcionada por otro servidor de manera automática. Para la instalación del
servidor DHCP es necesaria la instalación del paquete dhcp-3.0.6-i386-1, tecleamos:
root [ ~ ]# swaret --install dhcp-3.0.6-i386-1
Completado el comando anterior, debe ya tener instalado el servidor DHCP listo para
funcionar.
18.2.1 Administración del Servicio de DHCP El paquete DHCP incluye un script para administrar el inicio y detención de este servicio en
particular. Para iniciar el servicio DHCP escribimos como usuario raíz:
root [ ~ ]# /etc/init.d/dhcp start
Iniciando servidor DHCP... [ OK ]
Para detener el servicio de DHCP tecleamos:
root [ ~ ]# /etc/init.d/dhcp stop
Deteniendo servidor DHCP... [ OK ]
Verificar el estado del servicio de DHCP, escribimos en la consola:
root [ ~ ]# /etc/init.d/dhcp status
dhcpd is running with Process ID(s) 3226.
Configurar el servidor para que inicie a la par del sistema, tecleamos:
root [ ~ ]# chkconfig –add dhcp
18.3 Configuración del servidor DHCP La configuración del servidor DHCP se lleva a cabo en un solo archivo de configuración llamado
/etc/dhcpd.conf. La estructura general del archivo de configuración es la siguiente:
parámetros globales;
Declaración1
[parámetros relacionados a declaracion1]
[subdeclaración]
Declaración2
[parámetros relacionados a declaracion2]
[subdeclaración]
Se pueden aplicar parámetros distintos a cada tipo de declaraciones.
18.3.1 Declaraciones Quizá se requiera agrupar a los clientes, para realizar esta labor podemos hacer uso de las
siguientes declaraciones:
group Esta declaración nos permite aplicar una serie de parámetros y declaraciones a
una lista de clientes, redes o subredes. Su sintaxis es la siguiente:
group etiqueta
[parámetros]
[subdeclaraciones]
Donde etiqueta es el nombre definido al grupo.
host Esta declaración se usa para aplicar un conjunto de parámetros y declaraciones a
un anfitrión en particular. Su sintaxis es la siguiente:
host etiqueta
[parámetros]
[subdeclaraciones]
Donde etiqueta corresponde al nombre del host.
shared network Esta declaración agrupa un conjunto de direcciones dentro de una
red física. Su sintaxis corresponde a:
shared-network etiqueta
[parámetros]
[subdeclaraciones]
Donde etiqueta corresponde al nombre que se le asignará a la red compartida.
subnet Esta declaración se utiliza para aplicar una serie de parámetros a un conjunto
de direcciones IP que coincidan con la descripción de esta declaración. Su sintaxis es la
siguiente:
subnet numero_subred netmask máscara_de_red
[parámetros]
[subdeclaraciones]
El número_subred es la red a la que pertenecerán los anfitriones conectados a la red
física. Netmask es justamente eso, la máscara de sub red.
range Especifica el rango de direcciones que estarán disponibles para la asignación a
los clientes. La sintaxis es como sigue:
range [dirección inicial] [dirección final];
18.3.2 Parámetros El uso de los parámetros permite afectar el comportamiento del servidor para un determinado
número de clientes. Los parámetros de uso más frecuente son:
authoritative Este parámetro sirve para evitar que los hosts que han recibido una
dirección de otro servidor DHCP, reciban mensajes DHCPNAK de un servidor no
auténtico, esto es especialmente útil para un servidor DHCP que ha sido instalado de
forma accidental y pueda causar conflictos a un servidor DHCP auténtico. La sintaxis de
este parámetro corresponde a:
authoritative;
not authoritative;
default-lease-time Este parámetro nos permite fijar el periodo de tiempo que una
dirección IP estará asignada a un host, si terminado ese periodo el host no se
encuentra conectado en la red el servidor DHCP liberará esta dirección para poder
asignarla a otro equipo. Su sintaxis corresponde a:
default-lease-time periodo en segundos;
fixed address Este parámetro sólo aparece en la declaración del host. Indica las
direcciones que ese host puede utilizar. Su sintaxis es la siguiente:
fixed-address dirección, direccion2;
hardware A fin de que un cliente de BOOTP sea reconocido, la dirección MAC debe
ser declarada en la declaración host. Su sintaxis es:
hardware tipo_hardware direcciónMAC;
Donde tipo_hardware corresponde al tipo de interfaz de red del hardware
ethernet y token-ring son los únicos soportados.
max-lease-time Un cliente tiene la opción de especificar los segundos que requerirá la
dirección IP en préstamo. Esta dirección IP le será asignada mientras no exceda el
número de segundos declarados en este parámetro, de lo contrario se le asignará con
un máximo de segundos especificado aquí. Su sintaxis es:
max-lease-time segundos;
server-name Este parámetro se utiliza para informar al cliente el servidor desde el
cual está iniciando. Esta instrucción resulta útil para aquellos clientes remotos. Su
sintaxis es:
server-name nombre del servidor;
18.3.3 Opciones DHCP ofrece soporte para más de 60 opciones, la sintaxis para ellas es la siguiente:
option nombreDelaOpción [modificadores]
En la siguiente tabla describimos las opciones más utilizadas.
Tabla 18-1 Opciones para DHCP
Opción Descripción
broadcast-address La dirección en la subred que será especificada como broadcast.
domain-name Nombre de dominio que los clientes deben utilizar en búsquedas locales de otros hosts.
domain-name-servers Servidores de nombres de dominio que los clientes utilizarán.
host-name Cadena de texto utilizada para identificar al cliente.
nis-domain Nombre de dominio de NIS para el cliente.
nis-servers Servidores NIS disponibles para los clientes.
routers Una lista de ruteadores que el cliente debe utilizar, preferentemente declarar en orden.
subnet-mask Máscara de red para la subred.
ntp-servers Declara una lista de servidores de tiempo para nuestra clientes.
18.4 Ejemplo de un archivo de configuración Mostraremos un archivo de configuración de DHCP (/etc/dhcpd.conf), es decir la
configuración por defecto con la que viene el paquete de Beakos GNU/Linux.
server-identifier dhcp.dcinfotec.local;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "dcinfotec.local";
shared-network miredlocal {
subnet 192.168.4.0 netmask 255.255.255.0 {
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
option domain-name-servers 192.168.105.50;
option ntp-servers 200.23.51.205, 132.248.81.29,
148.234.7.30;
range 192.168.4.220 192.168.4.226;
}
}
En este ejemplo podemos observar que hemos definido una sola subred (192.168.4.0), se ha
establecido para nuestros clientes como puerta de enlace la dirección 192.168.4.254, como
servidores DNS la dirección 192.168.105.50, como servidores de tiempo para nuestros clientes
está definidos los hosts 200.23.51.205, 132.248.81.29, también se definió el rango de
direcciones IP que se pueden asignar a los clientes entre las direcciones IP 192.168.4.220 y
192.168.4.226.
Capí tulo 19 Copias de seguridad
Un servidor del que no se realizan respaldos es una auténtica bomba de tiempo. Realizar
respaldos de forma periódica es parte de las tareas habituales de cualquier administrador de
sistemas. En este capítulo hablaremos de Amanda un software que realiza copias de seguridad
para servidor Beakos GNU/Linux y otras distribuciones.
19.1 Amanda Amanda es el software Open Source líder mundial en soluciones de respaldo y recuperación.
En la actualidad protege más de un millón de servidores y equipos de escritorio ejecutando
distintas versiones de Sistemas Operativos Linux, UNIX, BSD, Mac OS-X y Microsoft Windows.
Amanda es una solución estable debido a su código de alta calidad
Como Amanda no utiliza drivers propietarios de dispositivos, cualquier dispositivo soportado
por el sistema operativo será funcional con Amanda. El administrador del sistema no tiene que
preocuparse de romper el soporte para un dispositivo al actualizar Amanda.
Amanda simplifica la vida de los administradores de sistemas quienes pueden fácilmente
poner un servidor de respaldos para múltiples clientes y respaldar directamente en cinta o en
un sistema basado en algún tipo de almacenamiento.
19.2 Instalación de Amanda Para la instalación de Amanda es necesario primero instalar el paquete xinetd que
actualmente se encuentra en los repositorios de Beakos. Solo basta con ejecutar en una
terminal los siguientes comandos :
root [ ~ ]# swaret --update
root [ ~ ]# swaret --install xinetd
Una vez instalado xinetd podemos proceder a la instalación de Amanda, para ello creamos el
grupo y usuario backup:
root [ ~ ]# groupadd backup
root [ ~ ]# useradd backup –g backup
Ejecutamos el siguiente comando:
root [ ~ ]# swaret –install amanda-server
Creamos el siguiente archivo sin importar el contenido ya que lo editaremos mas tarde.
Posteriormente le creamos un enlace simbólico:
root [ ~ ]# vim /etc/amandahosts
root [ ~ ]# ln –sf /etc/amandahosts /home/backup/.amandahosts
19.3 Configuración de un servidor amanda Si tenemos pensado en conectar clientes de otras distribuciones u otros sistemas operativos a
un servidor Amanda con Beakos GNU/Linux, en la página de http://www.amanda.org/
encontraras los paquetes compatibles de Amanda para su distribución correspondiente.
Para esta implementación se realizará bajo el siguiente esquema:
Maquina 1 Server Beakos con Zamanda Server – hostname server1
Maquina 2 Server Beakos con Zamanda Client – hostname client1
Se edita el hosts de cada máquina ubicado en /etc/hosts para asignar el nombre de la
maquina a dichas ips de cliente y servidor de respaldos.
19.3.1 Modificar Amanda Daemons para usar auth bsdtcp Las configuraciones para comunicación de servidor y cliente se encuentran en la configuración
de xinetd. Para el servidor son 3 configuraciones amanda, amandaidx, amidxtape, debemos
crear los siguientes archivos en el servidor.
/etc/xinetd.d/amanda
# default: on
# description: The amanda service
service amanda
{
socket_type = stream
protocol = tcp
wait = no
user = backup
group = backup
groups = yes
server = /usr/libexec/amandad
server_args = -auth=bsdtcp amdump amindexd
amidxtaped
disable = no
}
/etc/xinetd.d/amandaidx
#default: on
# description: The amanda index service
service amandaidx
{
socket_type = stream
protocol = tcp
wait = no
user = backup
group = backup
groups = yes
server = /usr/libexec/amindexd
server_args = -auth=bsdtcp amdump amindexd
amidxtaped
disable = no
}
/etc/xinetd.d/amidxtape
#default: on
# description: The amanda tape service
service amidxtape
{
socket_type = stream
protocol = tcp
wait = no
user = backup
group = backup
groups = yes
server = /usr/libexec/amidxtaped
server_args = -auth=bsdtcp amdump amindexd
amidxtaped
disable = no
}
19.3.2 Configuración del respaldo Definiremos el respaldo y su configuración como “ejemplo”. El usuario configurado por default
en la instalación es:
user name: backup
user group: backup
home dir: /home/backup
Comenzamos por crear los directorios /etc/amanda/ejemplo y /var/amanda/ejemplo
root [ ~ ]# mkdir –p /etc/amanda/ejemplo
root [ ~ ]# mkdir –p /var/amanda/ejemplo
Con los permisos de propietario y grupo backup ejecutamos el siguiente comando:
root [ ~ ]# chown backup:backup /etc/amanda/ejemplo
Crear la configuración mínima para el uso de amanda server. Creamos el archivo amanda.conf
root [ ~ ]# vim /etc/amanda/ejemplo/amanda.conf
Con el siguiente contenido:
#Configuracion Amanda
org "Infotec.com.mx" # your organization name for
reports
mailto "backup" # space separated list of operators at
your site
dumpuser "backup" # the user to run dumps under
logdir "/etc/amanda/ejemplo/logs" # log directory
infofile "/etc/amanda/ejemplo/curinfo" # database
filename
indexdir "/etc/amanda/ejemplo/index" # index directory
tapelist "/etc/amanda/ejemplo/tapelist" # list of used
tapes
#dumpcycle 1 days
tapecycle 1 tapes
tapetype DISK
tpchanger "chg-disk"
changerfile "/etc/amanda/ejemplo/changer" # needed by amlabel
tapedev "file:/backup/vtapes/ejemplo/slots"
define tapetype DISK {
comment "Backup to HD"
length 30 gbytes
}
# comment holding disk section if needed
#holdingdisk hd1 {
# directory "/dumps/"
#}
# to be used by any other dumptype
define dumptype global {
comment "Global definitions"
index yes
record yes
auth "bsdtcp"
}
define dumptype daily {
global
comment "daily dumptype"
compress client fast
program "GNUTAR"
strategy standard
priority high
exclude list "/etc/amanda/ejemplo/global-debian-exclude.list"
}
La configuración amanda.conf muestra cómo vamos hacer un backup manual de nuestro cliente con una sola cinta de 5 GigaBytes. Que será remplazada cada vez que se realice el backup.
En la página de wiki.zmanda.com encontraras más información acerca de amanda.conf
Ahora comenzaremos por crear la base de datos de nuestro respaldo para la configuración “ejemplo” que fue especificada dentro de amanda.conf:
root [ ~ ]# su backup -c "mkdir /etc/amanda/ejemplo/logs"
root [ ~ ]# su backup -c "mkdir /etc/amanda/ejemplo/index"
root [ ~ ]# touch /etc/amanda/ejemplo/tapelist
root [ ~ ]# su backup -c "mkdir /etc/amanda/ejemplo/curinfo"
19.3.3 Configuración de Cintas Virtuales
Simularemos el uso de cintas virtuales ejecutando los siguientes comandos. Creamos el directorio para las cintas virtuales:
root [ ~ ]# mkdir -p /backup/vtapes/ejemplo/slots
Cambiamos el dueño del directorio /backup al usuario backup: root [ ~ ]# chown backup:backup -R /backup/
Cambiamos los permisos al directorio /backup/vtapes por 750:
root [ ~ ]# chmod 750 /backup/vtapes
Iniciamos sesión con el usuario bakup:
root [ ~ ]# su - backup
backup [ ~ ]$ cd /backup/vtapes/ejemplo/slots/
Creando directorio de cinta virtual:
backup [ /backup/vtapes/ejemplo/slots ]$ mkdir slot1
Inicializando el cargador de la cinta creando el siguiente enlace simbólico:
backup [ /backup/vtapes/ejemplo/slots ]$ ln -sf slot1 data
Probamos las cintas virtuales ejecutando los commandos siguientes con el usuario backup:
backup [ /backup/vtapes/ejemplo/slots ]$ /usr/sbin/ammt -f \
file:/backup/vtapes/ejemplo/slots status
file:/backup/vtapes/ejemplo/slots status: ONLINE
backup [ /backup/vtapes/ejemplo/slots ]$ /usr/sbin/amlabel \
ejemplo slot1
Reiniciar la cinta virtual para que regrese al primer slot, esto debe hacerse con el usuario backup.
backup [ /backup/vtapes/ejemplo/slots ]$ /usr/sbin/amtape
ejemplo reset
amtape: changer is reset, slot 1 is loaded.
backup [ /backup/vtapes/ejemplo/slots ]$ ls -l data
lrwxrwxrwx 1 backup backup 35 jun 7 02:27 data ->
/space/vtapes/ejemplo/slots/slot1
19.3.4 Definición de las rutas de respaldos
En esta sección se especifica la ruta de respaldo para cada cliente, crear con el usuario backup el siguiente archivo:
backup [ /backup/vtapes/ejemplo/slots ]$ vim
/etc/amanda/ejemplo/disklist
Crear el siguiente contenido dentro del archivo: client1 /var/www/www.mysite.com/ daily
Donde client1 indica el host que se va a respaldar, bien podemos colocar la dirección IP,
/var/www/www.mysite.com/ indica el directorio que se va a respaldar, daily le indica a servidor amanda que el servidor debe respaldarse todos los días.
Creamos el archivo donde declaramos los hosts que podrán accesar al servidor, esto lo realizamos con el usuario raíz:
root [ ~ ]# vim /etc/amandahosts
Con el siguiente contenido:
server1 root amindexd amidxtaped
server1 backup amdump
client1 root amindexd amidxtaped
En la línea: “server1 backup amdump” permite al usuario backup de server1 correr respaldos en el mismo server1.
En la línea: “client1 root amindexd amidxtapd” le estamos otorgando permiso al cliente para que lleva acabo la restauración de información.
Para una mayor información sobre accesos puedes consultar la información referente en wiki.zmanda.com
Debemos de darle solo privilegios de lectura al archivo /etc/amandahosts y este debe pertenecer al usuario y grupo backup. Revisar que exista el enlace simbólico que creamos en la directorio inicial del
root [ ~ ]# chmod 400 /etc/amandahosts
root [ ~ ]# chown backup:backup /etc/amandahosts
root [ ~ ]# ls -l /etc/amandahosts
-r-------- 1 backup backup 157 mai 27 02:12 /etc/amandahosts root [ ~ ]# ls -l /home/backup/.amandahosts
lrwxrwxrwx 1 root root 16 mai 17 00:41 /home/backup/.amandahosts
-> /etc/amandahosts
19.4 Configuración del Cliente
Como usuario root instala el paquete xinetd.
root [ ~ ]# swaret –update
root [ ~ ]# swaret –install xinetd
Agregar usuario backup al grupo backup e instalar el paquete amanda-cliente
root [ ~ ]# groupadd backup
root [ ~ ]# useradd backup –g backup
root [ ~ ]# swaret –install amanda-client
19.4.1 Solo para otras distribuciones
Solo usaremos el xinetd para amanda así que se tendrá que verificar si el inetd está instalado y en su caso comentar el uso de amanda en este mismo.
#:OTHER: Other services #amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad -auth=bsd amdump amindexd amidxtaped
Modificar los deamons de amanda para ser uso del acceso mediante bsdtcp
Para más detalles en wiki.zamanda.com
Editamos amindextape y amandaidx en el directorio /etc/xinetd.d/ como en los ejemplos:
/etc/xinetd.d/amanda
service amanda
{
socket_type = stream
protocol = tcp
wait = no
user = backup
group = backup
groups = yes
server = /usr/libexec/amandad
server_args = -auth=bsdtcp amdump amindexd
amidxtaped
disable = no
}
Aplicamos cambios:
# /etc/init.d/xinetd restart
Configuración de amanda-client.conf
Creamos la dirección
/etc/amanda/ejemplo/
# vim /etc/amanda/ejemplo/amanda-client.conf
conf "ejemplo" # your config name index_server "server1" # tu servidor amanda tape_server "server1" # tu servidor amanda auth "bsdtcp"
Autorizaciones en amandahosts
Editamos el archivo amandahosts para permitir respaldos de zserver
# vi /etc/amandahosts
zserver backup amdump #el hostname del servidor de respaldo para dar acceso
Más información en wiki.zamanda.com
Creamos un enlace simbólico
#ln –s /etc/amandahosts /home/backup/.amandahosts
# ls -la /home/backup/.amandahosts
lrwxrwxrwx 1 root root 23 mai 25 11:19 /home/backup/.amandahosts ->
/etc/amanda/amandahosts
#chmod 400 /etc/amandahosts
Creamos el archivo amandates
#vim /etc/amandates
Y guardamos
Creamos gnutar-lists
#mkdir /etc/amanda/gnutar-lists
Asignamos permisos
#chown backup:backup /etc/amanda/gnutar-lists
Lista de exclusión
Es una lista para que el usuario backup salte el respaldo en dichos directorios
Más información wiki.amanda.com
$ vi /etc/amanda/ejemplo/global-debian-exclude.list
./proc
./media
./mnt
./dev
chmod 644 /var/amanda/ejemplo/global-debian-exclude.list
Prueba de configuración
Accede con usuario backup e introducir la siguiente línea en el servidor de respaldo
$ /usr/sbin/amcheck ejemplo
Amanda Tape Server Host Check ----------------------------- Holding disk /dumps/: 48800396 kB disk space available, using 48800396 kB slot 2: read label `ejemplo’, date `20100607' cannot overwrite active tape DailySet1-02 slot 3: read label `ejemplo’, date `X' NOTE: skipping tape-writable test Tape DailySet1-03 label ok NOTE: host info dir /etc/amanda/ejemplo/curinfo/zclient does not exist NOTE: it will be created on the next run. NOTE: index dir /etc/amanda/ejemplo/index/zclient does not exist NOTE: it will be created on the next run. Server check took 0.115 seconds Amanda Backup Client Hosts Check -------------------------------- Client check: 1 host checked in 0.132 seconds, 0 problems found (brought to you by Amanda 2.5.2p1)
Prueba de respaldo
Accede como usuario backup en el servidor de respaldo seguido del siguiente comando
$ amdump ejemplo
Para ver informacion acerca del respaldo echo teclea los siguientes comandos
$amadmin ejemplo find
$amstatus ejemplo
Más información en wiki.zamada.com
Programar respaldo
Respaldo diario a la 1:00 hrs
# su backup -c "crontab -e"
0 1 * * 1-7 /usr/local/sbin/amdump ejemplo
Restaurar
El usuario root de zclient mediante cd se sitúa en el lugar que se piensa restaurar ejemplo: /temp siguiendo el siguiente comando
# amrecover
AMRECOVER Version 2.5.2p1. Contacting server on zserver ... 220 zserver AMANDA index server (2.5.2p1) ready. Setting restore date to today (2010-06-07) 200 Working date set to 2010-06-07. 200 Config set to ejemplo. 501 Host zclient is not in your disklist. Trying host bckclient.mydomain.com ... 200 Dump host set to bckclient.mydomain.com. Use the setdisk command to choose dump disk to recover
amrecover> listdisk
200- List of disk for host bckclient.mydomain.com 201- /
201- /var/www/www.mysite.com 201- /boot
amrecover> setdisk /var/www/www.mysite.com
200 Disk set to /var/www/www.mysite.com.
amrecover> ls
2010-06-07 xmlrpc/ 2010-06-07 tmp/ 2010-06-07 templates/ 2010-06-07 robots.txt 2010-06-07 plugins/ 2010-06-07 modules/ 2010-06-07 logs/ 2010-06-07 libraries/ 2010-06-07 language/ 2010-06-07 index2.php 2010-06-07 index.php 2010-06-07 includes/ 2010-06-07 images/ 2010-06-07 htaccess.txt 2010-06-07 configuration.php-dist 2010-06-07 configuration.php 2010-06-07 components/ 2010-06-07 cache/ 2010-06-07 aicontactsafe/ 2010-06-07 administrator/
2010-06-07 LICENSES.php 2010-06-07 LICENSE.php 2010-06-07 INSTALL.php 2010-06-07 CREDITS.php 2010-06-07 COPYRIGHT.php 2010-06-07 CHANGELOG.php 2010-06-07 .htaccess 2010-06-07 .
amrecover> add *
Added dir /xmlrpc/ at date 2010-06-07
Added dir /tmp/ at date 2010-06-07
Added dir /templates/ at date 2010-06-07
Added file /robots.txt
Added dir /plugins/ at date 2010-06-07
Added dir /modules/ at date 2010-06-07
Added dir /logs/ at date 2010-06-07
Added dir /libraries/ at date 2010-06-07
Added dir /language/ at date 2010-06-07
Added file /index2.php
Added file /index.php
Added dir /includes/ at date 2010-06-07
Added dir /images/ at date 2010-06-07
Added file /htaccess.txt
Added file /configuration.php-dist
Added file /configuration.php
Added dir /components/ at date 2010-06-07
Added dir /cache/ at date 2010-06-07
Added dir /aicontactsafe/ at date 2010-06-07
Added dir /administrator/ at date 2010-06-07
Added file /LICENSES.php
Added file /LICENSE.php
Added file /INSTALL.php
Added file /CREDITS.php
Added file /COPYRIGHT.php
Added file /CHANGELOG.php
Added file /.htaccess
amrecover> extract
Extracting files using tape drive chg-disk on host zserver The following tapes are needed: ejemplo Restoring files into directory /tmp
Continue [?/Y/n]? y
Extracting files using tape drive chg-disk on host zserver. Load tape ejemplo now
Continue [?/Y/n/s/t]? y
./administrator/
./administrator/backups/
Note:
Ejecutar help dentro de amrecover para ver más comandos
Capí tulo 20 Berkeley Internet Name Domain (BIND)
En la actualidad las redes modernas como Internet, los usuarios localizan a los hosts por su
nombre no por su dirección, esta labor resultaría complicada si tomamos en cuenta el gran
número de direcciones IP que existen en la actualidad, no podríamos recordar de manera tan
sencilla una dirección IP como lo hacemos con un nombre. Los encargados de realizar está
traducción de nombres a direcciones IP son los servidores DNS (Domain Name Server).
En este capítulo abordaremos la configuración de un servidor BIND, modificando sus archivos
de configuración y analizando las diferentes configuraciones que son posibles con Beakos
GNU/Linux, al final realizaremos un ejemplo práctico de la configuración.
20.1 Historia del DNS En los inicios del protocolo TCP/IP, la traducción de las direcciones IP a nombres de hosts se
realizaba se realizaba a través de un archivo que era distribuido a todas las máquinas de
Internet vía FTP. Cuando empezaron a multiplicarse el número de host a inicios de 1980, este
archivo se volvió muy difícil de administrar. Entonces se pensó crear un sistema capaz de
distribuir y replicar de manera automática los nombres de los equipos a través de Internet. Un
servidor que almacenara una tabla con los nombres de host y su respectiva la dirección IP,
esta es la esencia de un servidor DNS.
Si no existieran los servidores DNS, la solución sería tener un servidor central con millones de
nombres, actualizándose miles de veces al día, esto se hubiera convertido en una labor
imposible de realizar.
20.2 La tabla de hosts No es necesario que todos los sitios requieren hacer uso de un servidor DNS, en una red local
de dimensiones pequeñas, bastará con editar el archivo /etc/hosts para que su servidor
mantenga una relación de de nombres de host y direcciones IP. Aun cuando tenga acceso a un
servidor DNS este archivo resulta útil porque es más rápido buscar en un archivo de forma
local que consultar un servidor DNS. También nos resulta útil si deseaos asignar un nombre a
un host, pero no tenemos acceso al servidor DNS.
La sintaxis de un archivo /etc/hosts es muy simple, la primer columna representa la
dirección del host, las columnas subsecuentes establecen los nombres de hosts relacionados a
la dirección IP, veamos un ejemplo:
127.0.0.1 localhost
200.38.189.20 www.beakos.org.mx beakos
207.248.177.128 www.infotec.com.mx
El servicio de DNS maneja una relación de nombres mucho más robusta, en los siguientes
temas veremos la instalación y configuración de servidor DNS, pero antes debemos
comprender como funciona.
20.3 Dominios y conceptos sobre los nombres de hosts En esta sección analizaremos los conceptos necesarios para poder implementar un servidor
DNS de manera optima.
Lo más común es cuando accesamos a un sitio de internet es realizarlo a través del nombre del
dominio, este nombre es conocido como FQDN (nombre dominio complemente calificado),
ejemplo: www.beakos.com.mx. Cada palabra separada por un punto tiene una razón de ser,
cada sección se denomina zona. analicemos un nombre de dominio:
Figura 20-1. Ejemplo de FQDN para beakos.com
Las zonas son definidas en servidores de nombres autorizados a través del uso de archivos de
zona, los servidores de correo a ser utilizados por un dominio particular o sub-dominio y más.
Los archivos de zona son almacenados en servidores de nombres primarios (también llamados
servidores de nombres maestros), los cuales son autorizados y en donde los cambios se hacen
a los archivos, y los servidores de nombres secundarios (también llamados servidores de
nombres esclavos), reciben sus archivos de zona desde los servidores de nombres primarios.
Cualquier servidor de nombres puede ser un servidor primario y secundario para zonas
diferentes al mismo tiempo, y también pueden ser considerados autoritarios para múltiples
zonas. Todo depende de cómo se configure el servidor de nombres.
20.3.1 Dominio raíz La estructura de un DNS es similar a un árbol invertido, en la cima de este árbol se localiza el
dominio raíz y es representado por un punto (.).
mail. beakos. com .
Dominio de tercer nivel
Dominio de segundo nivel Dominio raíz
Dominio de primer nivel
Este punto no aparece cuando escribimos un FQDN, pero supongamos que ahí está aunque no
esté escrito. Un ejemplo sería el FQDN de www.beakos.com.mx que en realidad es
www.beakos.com.mx. aunque el punto no se escriba.
En el mundo existen alrededor de 13 servidores de dominio raíz administrados por diversos
proveedores y estos proveedores a sus vez pueden tener réplicas para balancear la carga de
peticiones, mejorar la seguridad y la disponibilidad del servicio. El sitio de internet www.root-
servers.org nos ofrece una lista de servidores raíz con sus respectivas réplicas distribuidos por
el mundo.
20.3.2 Dominios de primer nivel Después de los dominios raíz siguen los dominios de primer nivel (LTD), estos dominios de
primer nivel, son los geográficos y funcionales.
Los dominios de primer nivel se pueden subdividir en dos categorías, los genéricos donde se
ubican los .com, .gob, .edu, .org, .net y los dominios de primer nivel para código de país como
.mx para México, .us para estados unidos, .uk para Reino Unido, entre muchos otros. El
dominio de primer nivel para www.beakos.com.mx sería .mx.
20.3.3 Dominios de segundo nivel Los nombres en este nivel describen el nombre de la organización o individuos, por ejemplo:
redhat.com, beakos.org.mx, Kernel.org. El dominio de segundo nivel para
www.beakos.com.mx corresponde a beakos.
20.3.4 Dominios de tercer nivel En este nivel el propietario del FQDN puede decidir qué hacer con él, lo más usual es utilizar el
dominio de tercer nivel para asignarlo a los hosts como nombre, utilizarlos para la asignación
de subdominios. También es muy frecuente utilizar en este nivel el “www” como alias hacia el
nombre del anfitrión existente. El nombre de tercer nivel para www.beakos.com.mx es www.
En la siguiente tabla mostramos la estructura jerárquica de un subdominio.
Figura 20-2 Árbol jerárquico de DNS
20.3.5 El dominio in-addr.arpa El DNS permite a la resolución trabajar en ambos sentidos. La resolución hacia adelante
resuelve nombres a direcciones IP y la resolución inversa, resuelve las direcciones IP a
nombres de dominio. Para esta última se requiere del dominio in-addr-arpa, este
correspondería al dominio de primer nivel de la dirección IP.
En la resolución hacia adelante los dominios se leen de derecha a izquierda, en la resolución
inversa sucede de izquierda a derecha. La resolución inversa de la dirección 192.168.4.23
correponde a:
23.4.168.192.in-addr-arpa
20.4 Tipos de servidores de DNS Existen 4 tipos de servidores de dominios: los primarios, los secundarios, los de caché y los
raíz. Los servidores de raíz publican un archivo de zona raíz para otros servidores DNS y para
los clientes respectivos, estos servidores operan como el primer puerto de llamada en la parte
más elevada del árbol de DNS (.). Estos servidores describen los DNS primarios que tienen
autoridad para los dominios primarios, es decir sólo delegan las peticiones a otros DNS.
20.4.1 Servidores DNS primarios Son aquellos autorizados par aun dominio en particular y es aquí donde residen los archivos de
configuración de los nombres de dominio y sus respectivas direcciones IP, es decir los cambios
y actualizaciones son realizadas en estos DNS.
Dominio RAIZ (.)
Dominios de primer
nivel genéricos y
geográficos
.com .gob.mx .edu .org.mx
redhat yahoo bicentenario ilce udem beakos
Sitios individuales
mail correo biblioteca news
Subdominio
s
20.4.2 Servidores DNS secundarios Estos servidores DNS funcionan de respaldo para los DNS primarios, sus principal función es
aligerar la carga, estos servidores reciben actualizaciones de manera periódica provenientes de
su DNS primario que sabe de la existencia de sus DNS secundarios.
20.4.3 Servidores DNS de caché Como su nombre lo indica son servidores de almacenamiento. No contienen una configuración
en particular. Cuando un servidor recibe una petición de un cliente, lo primero que realiza es
verificar si en su propia memoria, si no puede resolver e nombre de dominio entonces
pregunta a su servidor DNS primario, es de esperar que este dato quede almacenado en la
memoria del servidor. Es importante resaltar que cuando un servidor de caché manda una
respuesta a un cliente, esto se realiza de forma no autorizada. Todos lo servidores de dominio
actúan como servidores de caché sin importar si son primarios o secundarios.
20.5 Instalación de un servidor DNS Beakos GNU/Linux dispone en sus repositorios de software al servidor DNS BIND (Berkeley
Internet Name Domain) (Dominio de nombre de Internet de Berkeley). Bind es un servidor
robusto y muy popular, implementado en un gran número de servidores de DNS en todo el
mundo. Bind es desarrollado hoy en día por Internet Systems Consortium puede consultar su
portal www.isc.org .
Suponiendo que tiene una conexión funcional a internet para la instalación de BIND en
nuestro sistema Beakos GNU/Linux escribimos lo siguiente utilizando la cuenta de usuario raíz.
root [ ~ ]# swaret –update
root [ ~ ]# swaret --install bind
20.6 Archivo de configuración de named.conf El archivo principal de configuración de BIND llamado /srv/named/etc/named.conf,
este archivo especifica el comportamiento de Bind y si existen otros archivos de configuración
que el servidor debe tomar en cuenta. El formato del archivo de configuración en general
maneja la siguiente estructura:
enunciado {
opciones; // comentarios
};
El enunciado se refiere a una faceta que se está a punto de declarar que contendrá
instrucciones para el funcionamiento del bind , las opciones son las instrucciones
especificas que se ejercen sobre los enunciados. Veamos un ejemplo:
options {
directory "/etc/namedb";
pid-file "/var/run/named.pid";
};
La opción directory nos indica el directorio de configuración de named, la opción pid-
file indicará la ruta donde se almacena el archivo con el número de proceso de bind.
20.6.1 Comentarios Los comentarios puede escribirse de alguna de las siguientes formas, no hay un estilo mejor
que otro, puede usar el que mejor le guste.
Tabla 20-1. Formato para los comentarios
Formato Descripción
// Comentarios al estilo de C++
/*…*/ Comentarios al estilo de C
# Comantarios al estilo de BASH, PERL o Python
20.6.2 Palabras reservadas para los enunciados Puede emplear las siguientes palabras en los enunciados del archivo de configuración:
Tabla 20-2. Enunciados para el archivo de configuración
Enunciado Descripción
acl Lista de control de acceso para determinar los accesos a nuestro servidor DNS.
include hace referencia a otro archivo de configuración que será incluido en la configuración de bind.
logging Especifica la información que será registrada en la las bitácoras del sistema y la ubicación de estos archivos.
options Opciones de configuración global del servidor.
controls Permite declarar canales de control a ser utilizados por la utilidad rndc.
server Establece opciones de configuración especificas para el servidor.
zone Define las zonas para bind.
key Define las llaves de encriptación DNSSEC para el servidor.
view Muestra diferentes vistas de la información de la zona a clientes diferentes.
masters Define una lista con el nombre de los servidores maestros para utilizarse en las zonas.
20.6.3 El enunciado include Una buena práctica para organizarnos mejor cuando manejamos grandes cantidades de
información en el archivo de configuración, es dividirlo en varios archivos más pequeños y
crear una entrada para incluirlo en nuestro archivo de configuración. Ejemplo:
include ―ruta_del_archivo_incluido‖;
20.6.4 Enunciado logging Este enunciado como se describe en la tabla anterior, determina que actividad quedará
registrada y la ubicación de los registros. Por defecto la configuración de este enunciado está
estructurada para funcionar en conjunto con syslog, los registros son almacenados en el
archivo /var/log/daemon.log, la configuración por defecto es suficientemente
adecuada para la detección y corrección de errores, por lo que en la mayoría de los casos no
requerirá realizar alguna modificación a este enunciado. Veamos la configuración del registro
cronológico.
logging {
category default { default_syslog; default_debug; };
category unmatched { null; };
channel default_syslog {
syslog daemon; //envía información al demonio de syslog
severity info; // enviará la información como prioridad
};
}
20.6.5 Enunciado server Este enunciado proporciona información a bind sobre otros servidores de dominios con los
que puede interactuar, un ejemplo del enunciado server sería:
server dirección_ip {
bogus yes/no;
transfer-format one-answer/many-answers;
<otras opciones>
};
Donde dirección_ip es el servidor remoto en cuestión, la opción bogus le indica al
servidor local si el servidor remoto está enviando información errónea. La opción transfer-
format, informa a nuestro servidor si l servidor remoto puede aceptar respuestas
múltiples.
20.6.6 Zonas Este enunciado nos permite definir Zonas, la definición de zona resulta muchas veces confusa,
una zona no es siempre lo mismo que un dominio de DNS, analicemos, los dominios son
designados junto con los límites organizacionales. De un dominio pueden surgir varios
subdominios, cada subdominio recibe su zona, estas zonas en conjunto representan al dominio
en su totalidad. Ejemplo:
Supongamos que el dominio beakos.com.mx tiene varios subdominios como
news.beakos.com.mx, soporte.beakos.com.mx, descargas.beakos.com.mx,
mail.beakos.com.mx. Cada uno de estos 4 subdominios tiene una zona, dentro del dominio
beakos.com.mx existen algunos hosts, por lo tanto también tiene su propia zona. En total
estamos hablando de 5 zonas para el dominio beakos.com.mx.
Cuando hablamos de un dominio que no tiene subdominios, podemos decir que la zona y el
dominio son los mismos en cuestión de configuración.
20.6.7 Enunciado Key Este enunciado nos permite generar una llave de seguridad para nuestro servidor, esto es
indispensable para que bind pueda iniciar. Para generar la llave de seguridad es necesario
teclear el siguiente comando:
root [ ~ ]# rndc-confgen -r /dev/urandom -b 512 | grep \
-m 1 "secret" | cut -d '"' -f 2
El comando anterior nos generará un clave que debemos copiar y pegar a nuestro archivo de
configuración dentro del enunciado key, quedando nuestro enunciado de la siguiente
manera:
key "rndc_key" {
algorithm hmac-md5;
secret "zs+VJIeDBeRg5oJiJJFbjC17XuirYn9qPoahFl4M/lNYxA==";
};
20.7 Configuración de BIND En los temas anteriores analizamos las diferencias entre los tipos de servidores de dominio que
existen, también analizamos a la estructura del archivo de configuración. En síntesis in servidor
primario contiene la información de las zonas y es el encargado de administrarlas, los
servidores secundarios reciben las notificaciones de los cambios de los servidores primarios y
actualizan sus datos. Los primarios y secundarios tienen autoridad en sus respuestas al cliente,
no así los servidores de caché que no poseen registros autorizados.
20.7.1 Definición de una zona primaria Ahora que tenemos claramente el concepto de una zona, estamos listos para definir una zona
primaria en nuestro archivo de configuración de BIND, recordemos que está ubicado en
/srv/named/etc/named.conf , la sintaxis que corresponde para la asignación de una
zona es:
zone nombre_dominio {
type master;
file ruta_archivo;
};
ruta_archivo se refiere al archivo que contendrá la información de la base de datos
correspondiente a la zona. Veamos un ejemplo para el dominio beakos.com.mx
zone ―beakos.com.mx‖ {
type master;
file ―beakos.com.mx.db‖;
};
Si analizamos el archivo de configuración named.conf, observamos que en el enunciado
options en la opción directory ya viene la ruta definida para los archivos de
configuración, esta apunta a /etc/namedb, pero como named se ejecuta en un entorno
enjaulado la ruta verdadera corresponde a /srv/named/etc/namedb por lo que no será
necesario incluir toda la ruta completa en la declaración de la zona.
Esta declaración de zona nos permite obtener la dirección IP de un nombre, pero no olvidemos
que hay que realizar la declaración inversa, sobre todo si se trata de un servidor de correo
electrónico.
La declaración in-addr.arpa dentro del archivo de configuración de bind correspondiente
a beakos.com.mx:
zone ―1.168.192.in-addr.arpa‖ {
type master;
file ―beakos.com.mx.rev‖;
};
El formato de in-addr.arpa consiste en declarar los tres primeros objetos de la dirección
IP como se puede observar. En la siguiente tabla se muestran algunas opciones que podemos
utilizar para nuestra declaración de zona, sólo aplicarán para la zona en cuestión.
Tabla 20-2. Opciones adicionales para declaración de Zonas primarias.
Opción Descripción
check-names Esta opción se utiliza para restringir el conjunto de caracteres y la sintaxis de nombres de dominio en ciertos archivos maestros.
allow-update Especifica los servidores DNS que podrán recibir actualizaciones de las zonas primarias.
allow-query Especifica cuáles hosts tienen permitido hacer consultas de DNS ordinarias. Si no se especifica, el valor por defecto es permitir a las preguntas de todos los hosts.
allow-transfer Especifica que servidores pueden recibir transferencias de zonas del servidor maestro.
notify El servidor DNS envía mensajes de notificación a los servidores secundarios, si no se especifica esta opción su valor es positivo “yes”.
also-notify Define una lista servidores a los que se les notificará los cambios , esta
opción sólo es válida si el valor de notify es “no”.
20.7.2 Definición de una zona secundaria La declaración de una zona secundaria en el archivo de configuración de bind, se realiza de
manera muy similar a la declaración de una zona primaria, veamos la sintaxis:
zone nombre_dominio {
type slave;
masters lista_servidores_primarios ;
file ruta_archivo;
};
donde nombre_dominio debe corresponder al mismo especificado en la zona primaria,
lista_servidores_primarios corresponde a la dirección IP donde está el servidor
primario para esta zona.
Tabla 20-3. Opciones adicionales para declaración de Zonas secundarias.
Opción Descripción
check-names Esta opción se utiliza para restringir el conjunto de caracteres y la sintaxis de nombres de dominio en ciertos archivos maestros.
allow-update Especifica los servidores DNS que podrán recibir actualizaciones de las zonas primarias.
allow-query Especifica cuáles hosts tienen permitido hacer consultas de DNS ordinarias. Si no se especifica, el valor por defecto es permitir a las preguntas de todos los hosts.
allow-transfer Especifica que servidores pueden recibir transferencias de zonas del servidor maestro.
max-transfer-time-in
Tiempo máximo para recibir una transferencia.
20.7.3 Definición de una zona de caché La configuración de una zona de caché es más sencilla que las configuraciones anteriores,
siempre es necesario aun cuando contemos con un servidor primario o secundario, es
necesario para que el servidor pueda hacer una búsqueda recursiva con el objetivo de
encontrar otros nombres de host. La configuración del un servidor de caché se compone de
tres secciones. Dos de estas secciones ya están definidas en Beakos GNU/Linux, analicemos la
primera.
zone "." {
type hint;
file "root.hints";
Esta sección especifica los servidores raíz que nuestro servidor DNS puede consultar. La línea
type hint define que estamos hablando de un servidor de caché. La línea file
"root.hints" establece el archivo que contiene las entradas que apuntan al servidor raíz.
La segunda sección se muestra a continuación, su función es definir la búsqueda inversa para
el anfitrión local. Esta es la entrada inversa para resolver 127.0.0.1 al nombre localhost :
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
Con estas entradas es suficiente para poder crear un servidor de nombres de caché. La
directiva file apunta a los archivos con la configuración de las zonas, que son de suma
importancia para la configuración de un servidor DNS.
20.8 Tipos de registros DNS En esta sección describiremos la elaboración de los archivos de base de datos del servidor de
nombres, es decir los archivos que contendrán la información relacionada a las zonas, para ello
analizaremos los registros más comunes para un DNS.
20.8.1 Inicio de autoridad (SOA) El SOA (Start of authority) o inicio de autoridad, sirve para iniciar la descripción de las entradas
DNS de un sitio. Su formato es el siguiente:
nombre.dominio. IN SOA sn.nombre.dominio. admin.nombre.dominio.
(
2010110901 ; número de serie
10800 ; actualización (3 horas)
1800 ; reintentos en segundos (30 minutos)
1209600 ; caduca en segundos (2 semanas)
604800 ; mínimo en segundos
)
En la primer línea debemos reemplazar nombre.dominio. por el nombre de nuestro
dominio.
IN indica que se trata de un registro de internet.
SOA le dice al servidor DNS que es un inicio de autoridad
sn.nombre.dominio. es el dominio calificado (FQDN) para el servidor de nombres en
este dominio, no omita el punto final.
admin.nombre.dominio. es la dirección de correo electrónico del administrador del
dominio. Observemos que no se incluye la dirección con @, esta se sustituye con un punto (.)
ejemplo: linux.infotec.com.mx
La línea 2 indica el número de serie. No olvide incrementar el número de serie cada que edite
el registro, es un error frecuente cuando se actualizan datos en un servidor DNS.
La línea 3 le índica a los DNS secundarios la frecuencia con la que deben preguntarle al servidor
primario si los valores se han actualizado.
La línea 4 indica le indica a los servidores secundarios el intervalo de tiempo en segundos de
los reintentos en caso de no poder comunicarse con el servidor primario.
La línea 5 especifica la caducidad, les indica a los servidores secundarios que si no pueden
contactar al servidor primario para una actualización, deben de dejar de hacer consultas, el
tiempo establecido es de 2 semanas.
La línea 6 les indica a los servidores de caché el tiempo que deben esperar antes de que
caduque una entrada en caso de no poder contactar al servidor primario.
20.8.2 Servidor de nombres (NS) Este registro se utiliza para dar de alta los servidores de nombres que mantienen registros para
esta zona. Es decir los servidores que funcionen como secundarios deben de estar registrados
en este apartado. Su sintaxis sería la siguiente:
IN NS sn1.nombre.dominio
IN NS sn2.nombre.dominio
Se recomienda por lo menos mantener un servidor secundario.
20.8.3 Registro de dirección (A) Se trata del registro más común que podemos encontrar dentro de un DNS. Este registro se
usa para asignar una dirección IP a un nombre de equipo. Su formato es simple:
nombre_equipo IN A dirección_IP
Un registro de un host llamado servidor.beakos.com.mx que tiene una dirección IP
192.168.4.251se definiría de la siguiente manera:
servidor IN A 192.168.4.251
El nombre del equipo se añadirá de manera automática al nombre de registro SOA,
supongamos que en el registro SOA tenemos beakos.com.mx. (no olvide poner el punto), la
dirección IP 192.168.4.251 corresponde a servidor.beakos.com.mx.
20.8.4 Registro apuntador (PTR) Este registro sirve para llevar a cabo la resolución de nombre inversa, lo cual permite
especificar una dirección IP y determinar el nombre del anfitrión correspondiente, este
registro es muy parecido al anterior, su formato corresponde a:
dirección_IP IN PTR nombre_equipo
La dirección IP debe escribirse completa y con un punto al final, el nombre del host debe llevar
el FQDN competo con el punto al final. Ejemplo:
192.168.4.251. IN PTR servidor.beakos.com.mx.
20.8.5 Intercambio de correo (MX) El registro MX (Mail Exchanger) se encarga de informar a otros equipos acerca del servidor de
correo de la zona. Si un equipo envía un correo electrónico a un dominio, en realidad no lo
envía a ese dominio, lo que hace es revisar el registro DNS correspondiente al servidor de
correo y manda el correo electrónico a ese equipo. El formato de registro MX es el siguiente:
nombre_dominio. IN MX peso nombre_host
Donde nombre_dominio se refiere al nombre del sitio, con punto final (no olvidar). Peso
se refiere a la prioridad de cada servidor mientras más grande es el número menor prioridad
tiene. El nombre_host indica el nombre del host que funcionará como servidor de correo
para la zona. El nombre_host debe tener una entrada correspondiente a un registro A.
Veamos un ejemplo de este registro:
beakos.com.mx. IN MX 10 mail1
IN MX 20 mail2
Si el nombre de dominio no se especifica, este se extrae del registro SOA.
20.8.6 Nombre canónico (CNAME) Este tipo de registro permite la creación de “alias” para los nombres de hosts. Un uso que se le
puede dar a este servidor es crear un nuevo dominio fácil de recordar, sin perder el dominio
anterior, es decir utilizar ambos mientras se genera el cambio paulatino. El formato para este
tipo de registro es el siguiente:
nuevo_nombre_host IN CNAME nombre_host
Un ejemplo real sería:
servidorweb IN A 192.168.4.251
www IN CNAME servidorweb
20.8.7 Registros de documentación RP y TXT Siempre es buena idea proporcionar información adicional con registros reales, no sólo
haciendo uso de comentarios, para estos sirven estos los registros TXT y RP.
Los registros TXT son entradas en texto con las cuales pude insertar información que considere
adecuada, por ejemplo el nombre del administrador del dominio. Cada registro debe estar
ligado a un nombre de host en particular. Ejemplo:
www.beakos.com.mx. IN TXT ―Contacto: Francisco Sosa‖
IN TXT ‖Mail: [email protected]‖
El registro RP enuncia quien es el responsable para un determinado equipo. Ejemplo:
www.beakos.com.mx IN RP linux.beakos.com.mx. beakos.com.mx.
20.9 Configuración de un servidor DNS completo Hemos repasado la teoría necesaria para poder comprender el funcionamiento de un servidor
DNS, ahora recurramos a un ejemplo práctico para comprender mejor la integración de
nuestro servidor siguiendo el siguiente esquema:
Configuraremos dos servidores de nombres llamados dns1.beakos.com.mx y
dns2.beakos.com.mx con las direcciones IP 192.168.0.133 y 192.168.0.129
respectivamente.
dn2.beakos.com.mx será el servidor secundario para la zona beakos.com.mx
Definir los registros tipo A para los host web1, mail, dn1 y dn2
Definir el registro MX para el host mail
Definir www.beakos.com.mx como alias (CNAME) para el servidor web1.
20.9.1 Configuración de la zona en el servidor primario 1)El primer paso es la configuración de la zona en el servidor primario. Utilice el editor de
textos vi para agregar la siguiente zona al archivo de configuración de Bind.
zone "beakos.com.mx" {
type master;
file "beakos.com.mx.zone";
};
Donde "beakos.com.mx.zone" es el archivo de base de datos donde se encuentra la
configuración para la zona.
2) Dentro del directorio /srv/named/etc/namedb crear el archivo
beakos.com.mx.zone el cual tendrá el siguiente contenido:
$TTL 1W
beakos.com.mx. IN SOA beakos.com.mx. soporte.beakos.com.mx. (
20101111 ; número de serie
10800 ; actualización (3 horas)
1800 ; reintentos en segundos (30 minutos)
1209600 ; caduca en segundos (2 semanas)
604800 ; mínimo en segundos
)
IN NS dns2.beakos.com.mx.
IN MX 10 mail.beakos.com.mx.
dns1 IN A 192.168.0.133
dns2 IN A 192.168.0.129
web1 IN A 192.168.0.251
mail IN A 192.168.0.56
www.beakos.com.mx. IN CNAME web1
20.9.2 Configuración de la zona en el servidor secundario 1) En el servidor secundario será necesario generar en el archivo de configuración
named.conf la siguiente entrada:
zone "beakos.com.mx" {
type slave;
masters {192.168.0.133; };
file ―beakos.com.mx.slave‖;
};
20.9.3 Configuración de la zona inversa en el servidor primario 1) Debemos crear la zona inversa por lo menos para el servidor de correo, ya que sin ella no
funcionará. Agregamos la siguiente zona al archivo de configuración de Bind:
zone "0.168.192.in-addr.arpa" {
type master;
file "beakos.com.mx.rev";
};
2) Procedemos a crear el archivo de zona llamado beakos.com.mx.rev en el directorio
/srv/named/etc/namedb agregándole el siguiente contenido:
$TTL 1W
@ IN SOA beakos.com.mx. soporte.beakos.com.mx. (
20101111 ; número de serie
10800 ; actualización (3 horas)
1800 ; reintentos en segundos (30 minutos)
1209600 ; caduca en segundos (2 semanas)
604800 ; mínimo en segundos
)
IN NS dns1.beakos.com.mx.
IN NS dns2.beakos.com.mx.
251 IN PTR web1.beakos.com.mx.
56 IN PTR mail.beakos.com.mx.
Los primeros números del registro PTR (251 y 26) corresponden al último octeto de la
dirección IP, recordemos que los primeros 3 octetos están declarados en la zona dentro del
archivo de configuración de Bind.
Una vez concluida la configuración debemos de iniciar los servicios en el servidor primario y
secundario.
root [ /srv/named/etc ]# /etc/init.d/bind start
Iniciando servidor named... [ OK ]
20.10 Consultas a servidores DNS En esta sección veremos algunas herramientas que nos pueden proporcionar información
sobre los DNS.
20.10.1 Comando host Este comando nos pude proporcionar la dirección de un servido, es un comando muy fácil de
utilizar, utilicemos la información de la sección anterior para realizar un par de ejemplos:
root [ /srv/named/etc/namedb ]# host www.beakos.com.mx
www.beakos.com.mx is an alias for web1.beakos.com.mx.
web1.beakos.com.mx has address 192.168.0.251
Podemos observar que tenemos configurado un alias para web1 apuntando al host www y que
la dirección IP que le corresponde es la 192.168.0.251.
También podemos realizar la consulta de algún inverso:
root [ ~ ]# host 192.168.0.251
251.0.168.192.in-addr.arpa domain name pointer
web1.beakos.com.mx.
20.10.2 El comando dig El comando dig (Domain Information Groper) permite realizar consultas a los servidores DNS,
nos permite comprobar el mapeo hacia nombres de internet así como el mapeo inverso. su
modo de uso es el siguiente:
dig @servidor_dns dominio tipo_de_registro
@servidor es el nombre del servidor al que se va a consultar, dominio es el nombre del
dominio del que se desea obtener información y el tipo_registro corresponde a los
registro que se quieren obtener (A,SOA,MX,NS,TXT,ANY). Por ejemplo si queremos obtener el
registro MX (mail exchange) del servidor DNS primario que previamente configuramos
teclearíamos lo siguiente:
root [ ~ ]# dig @192.168.0.133 beakos.com.mx MX
; <<>> DiG 9.4.1-P1 <<>> @192.168.0.133 beakos.com.mx MX
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2,
ADDITIONAL: 3
;; QUESTION SECTION:
;beakos.com.mx. IN MX
;; ANSWER SECTION:
beakos.com.mx. 604800 IN MX 10
mail.beakos.com.mx.
;; AUTHORITY SECTION:
beakos.com.mx. 604800 IN NS
dns2.beakos.com.mx.
beakos.com.mx. 604800 IN NS
dns1.beakos.com.mx.
;; ADDITIONAL SECTION:
mail.beakos.com.mx. 604800 IN A 192.168.0.56
dns1.beakos.com.mx. 604800 IN A 192.168.0.133
dns2.beakos.com.mx. 604800 IN A 192.168.0.129
;; Query time: 0 msec
;; SERVER: 192.168.0.133#53(192.168.0.133)
;; WHEN: Thu Nov 11 19:43:55 2010
;; MSG SIZE rcvd: 138
De lo más destacado podemos ver que el registro MX para el dominio beakos.com.mx
corresponde al host mail.beakos.com.mx y su registro A corresponde a la dirección IP
192.168.0.56.
Capí tulo 21 File Tranfer Protocol (FTP)
El protocolo de transferencia de archivos permite al usuario accesar a ficheros y directorios de
manera remota como si se realizara de manera local, el usuario no conoce el sistema de
archivos de archivos con el que está trabajando. Este protocolo existe desde 1971 y se sigue
utilizando a la fecha. En este capítulo mostraremos la forma de instalar y configurar un
servidor FTP en la distribución de Beakos GNU/Linux, aunque si usted quisiera utilizar otra
distribución, este manual podría serle de utilidad con toda certeza.
21.1 Funcionamiento de FTP El protocolo FTP establece una doble conexión entre un cliente y un servidor, analicemos los
pasos:
Conexión de control: utiliza el puerto 21 de TCP por defecto, le indica al servidor las
operaciones que el cliente desea realizar.
Conexión de datos: utiliza el puerto 20 de TCP y sirve para la transferencia de archivos
del servidor al cliente o viceversa.
21.1.1 Accesos a un servidor FTP Existen dos formas de accesar a un servidor FTP:
Mediante acceso privado: el servidor está configurado para solicitar un usuario y
contraseña a fin de acceder al contenido. Este método no es nada recomendable
porque el nombre de usuario y contraseña viajan a través de la red sin ningún tipo de
encriptación, en lugar de ello puede emplear el protocolo SFTP (Secure Transfer File
Protocol).
Mediante acceso público: El cliente no debe ingresar ningún usuario para acceder al
contenido del servidor, es el uso más común que se le da actualmente a este tipo de
servidores, ya que es más rápido que la transferencia de archivos por el protocolo
HTTP.
Una vez que se ha establecido conexión con el servidor el cliente tendrá acceso a los archivos y
directorios, a través de navegador web, línea de comandos o clientes con interfaz gráfica para
FTP, los privilegios de cada usuario dependerán directamente de la configuración del servidor.
21.1.2 FTP activo En este modo el cliente se conecta desde un puerto temporal mayor a 1024 hasta el puerto del
servidor (puerto 21). Cuando el cliente está listo para recibir archivos el servidor inicia una
conexión a través del puerto 20 hacia la dirección IP y puerto proporcionada por el cliente. El
problema de este modo es que el firewall del lado del cliente posiblemente nieguen
conexiones que se originen desde internet ha un puerto que se supone que el fiwewall debe
proteger.
21.1.3 FTP pasivo El cliente emite el comando PASV para indicarle al servidor que quiere acceder datos en modo
pasivo, el servidor responde entonces con una dirección IP y un puerto al cual el cliente puede
conectarse. El problema con este modo es que los firewalls negarán conexiones a puertos
temporales en el servidores que se supone que debería proteger. Un ejemplo claro de esto es
cuando conectamos con el servidor pero al iniciar una transferencia de datos el servidor
parece no responder.
21.2 Instalación de VSFTPD El paquete VSFTPD es que software para FTP disponible para la distribución de Beakos
GNU/Linux, VSFTPD está licenciado bajo la GPL (Licencia Pública General). Para la instalación
en nuestra distribución teclearemos el siguiente comando:
root [ ~ ]# swaret --install vsftpd
La instalación como vemos resulta bastante sencilla de realizar, el paquete contiene un guión
de inicio, para que la aplicación arranque a la par del sistema de forma automática, la
habilitamos con el siguiente comando:
root [ ~ ]# chkconfig --add vsftpd
Comprobamos los niveles de ejecución en los cuales se activa, ejecutando el comando:
root [ ~ ]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
21.3 Configuración de VSFTPD El comando de instalación ejecutado en la sección anterior instaló los binarios
correspondientes y además el archivo de configuración en la ruta /etc/vsftpd.conf
donde concurren todos los cambios relacionados al servicio de FTP.
21.3.1 El archivo vsftpd.conf Como se mencionó anteriormente la configuración principal para el servicio de FTP se realiza
en /etc/vsftpd.conf este archivo es muy sencillo de configurar, sigue las siguientes
directrices, no debemos dejar espacio entre las palabras y el signo “=”.
opción=valor
Tabla 21-1. Opciones más comunes para el archivo de configuración vsftpd.conf
Opción Descripción
write_enable Habilita la escritura en el servidor FTP.
dirmessage_enable Muestra un mensaje al usuario al acceder a los directorios.
ftpd_banner Muestra un mensaje de bienvenida.
local_enable Habilita el acceso por FTP a los usuario con cuenta en el servidor.
local_umask Establece la máscara de creación de archivos, es decir si el valor es 022 los archivos creados tendrán permisos 755.
chroot_local_user Limita el acceso a los usuarios a usar sólo su directorio.
chroot_list_enable Habilita una lista de usuarios con cuenta en el servidor a los que no se les restringe el acceso a otros directorios. Se debe usar con el parámetro “chroot_list_file”
chroot_list_file Apunta al archivo que contiene los usuarios con cuenta en el servidor que no están limitados a su directorio.
local_max_rate Indica la tasa de transferencia de información expresada en bytes.
anonymous_enable Habilita el acceso al servidor a usuarios que no tienen cuenta en el servidor.
anon_world_readable_only permite descargar ficheros a los usuarios sin cuenta en el servidor.
anon_upload_enable Permite colocar ficheros en el servidor a los usuarios sin cuenta.
anon_umask Establece los permisos a los directorios y ficheros colocados por usuarios sin cuenta en el servidor.
anon_mkdir_write_enable Permite la creación de directorios a los usuarios sin cuenta en el servidor.
anon_other_write_enable Permite borrar y actualizar en el servidor a los usuarios anónimos.
anon_max_rate Tasa de transferencia de datos para usuarios anónimos (valor en bites).
log_ftp_protocol Habilita el registro de todas la peticiones al servidor y su respuesta.
xferlog_enable Habilita o inhabilita el registro de las transferencias de archivos.
vsftpd_log_file Indica el fichero y la ruta que contendrá el archivo de registro
conect_from_prot_20 Habilita el puerto 20 del servidor para la transferencia de datos.
idle_session_timeout Establece el tiempo en que se cerrara la conexión de usuarios inactivos.
listen Habilita el modo de trabajo standalone para el servidor FTP
chown_uploads Esta opción cambia la propiedad de los archivos subidos en forma anónima al usuario especificado en la opción chown_username.
chown_username Especifica el nombre del usuario que se asignará como propietario de los archivos subidos en forma anónima. Su valor predeterminado es root.
20.3.2 Ejemplo de un archivo de configuración vsftpd.conf Este es un ejemplo de un servidor VSFTPD, el archivo se ubicará en /etc/vsftpd.conf
listen=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20
(ftp-data).
chroot_local_user=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner= Generic FTP Daemon Ready
ls_recurse_enable=NO
chown_uploads=YES
local_umask=022
Referencias Las siguientes referencias presentan información que consideramos útil y que abarca temas
más allá de los presentados en este manual de implementación. Considere que la rápida
evolución de GNU/Linux puede hacer que algún material de los presentes ya no se encuentre
disponible o se considere obsoleto.
Existen dos formas de montar un sistema de archivos NFS, la primera es utilizando el comando
mount con sus distintas opciones, la segunda es creando una entrada en el archivo
/etc/fstab, esta ultima persistirá a un reinicio del sistema por lo tanto es la más viable.
Libros Manual de administración de Linux
Steve Shah, Wale Soyinka
Editorial Mc Graw Hill, 2007
Programación en Linux Al Descubierto
Kurt Wall
Editorial Prentice Hall, Segunda Edición
Redes GNU/Linux, Manual del Administrador
Emiliano Francisco Spinella
Editorial USERS, 2007
Guía Esencial de Linux
Jonh Ray
Editorial Prentice Hall, 2002
Manuales y tutoriales en línea Implementación y administración de Cuotas en Linux
http://www.linuxtotal.com.mx/index.php?cont=info
Uso de Listas para Control de Acceso (ACL´s).
http://www.escomposlinux.org/iarenaza/articulo-acls/acls-linux-samba.html
Uso de systctl para control TCP y UDP.
http://wwwx.cs.unc.edu/~sparkst/howto/network
Configuración de RAID a nivel de software para Linux.
http://es.tldp.org/COMO-INSFLUG/COMOs/Software-RAID
Manual de Rsync
http://samba.anu.edu.au/ftp/rsync/rsync.html
Manuales diversos para GNU/Linux
http://www.howtoforge.com/
Administración Linux
http://fferrer.dsic.upv.es/cursos/Linux/basico/
Guía para administradores de Sistema GNU/Linux
http://www.ibiblio.org/pub/Linux/docs/LDP/system-admin-guide/translations/es/html/
Información general Kernel de Linux
http://www.kernel.org/
Free Software Fundation
http://www.fsf.org/
GNU Operating System
http://www.gnu.org/home.es.html
Razones para usar GNU/Linux
http://www.obtengalinux.org/