You are on page 1of 94

Guía de estudio para

Administrador de Redes en GNU/LINUX


Material de trabajo para LPI 102
liberado bajo la licencia GFDL
Asesores & Soporte Linux SAC Soportelinux.com

Tabla de Contenidos
El Kernel Linux......................................................................................................................................... 11
1. Conceptos del Kernel ........................................................................................................................ 11
2. El Kernel Modular.............................................................................................................................. 12
3. Rutina de recompilación de un kernel................................................................................................ 13
4. Ejercicios............................................................................................................................................ 18

Arrancando Linux..................................................................................................................................... 20
1. Entendiendo los niveles de arranque.................................................................................................. 20
2. El archivo inittab................................................................................................................................. 22
3. LILO el gestor de arranque................................................................................................................. 23
4. Del arranque a la shell bash............................................................................................................... 24
5. Ejercicios............................................................................................................................................ 26

Administrando Grupos y Usuarios.......................................................................................................... 27


1. Creando nuevos usuarios................................................................................................................... 27
2. Trabajando con grupos...................................................................................................................... 28
3. Archivos de configuración.................................................................................................................. 30
4. Opciones de comandos...................................................................................................................... 31
5. Modificando cuentas y configuraciones por defecto........................................................................... 32
6. Ejercicios............................................................................................................................................ 34

Configuración de red................................................................................................................................ 35
1. La interfaz de red................................................................................................................................ 35
2. Información de host............................................................................................................................ 36
3. Detener e iniciar la red....................................................................................................................... 37
4. Enrutado............................................................................................................................................. 38
5. Herramientas comunes de red........................................................................................................... 40
6. Ejercicios............................................................................................................................................ 42

Redes TCP/IP............................................................................................................................................ 43
1. Números binarios............................................................................................................................... 43
2. Direcciones de red, broadcast y máscara de red............................................................................... 43
3. Clases de red..................................................................................................................................... 45
4. Subredes............................................................................................................................................ 46
5. La pila TCP/IP.................................................................................................................................... 47
6. Puertos y servicios TCP/IP................................................................................................................. 49
7. Ejercicios............................................................................................................................................ 50

Servicios de red........................................................................................................................................ 51
1. El demonio inetd (antiguo).................................................................................................................. 51
2. El demonio xinetd............................................................................................................................... 52
3. TCP wrappers.................................................................................................................................... 53
4. Configurando NFS.............................................................................................................................. 53
5. SMB y NMB........................................................................................................................................ 54
6. Servicios DNS.................................................................................................................................... 56
7. Configuración de Sendmail................................................................................................................ 60
8. El servidor Apache............................................................................................................................. 60
9. Ejercicios............................................................................................................................................ 62

Bash Scripting.......................................................................................................................................... 64
1. El entorno bash.................................................................................................................................. 64
2. Principios de Scripting........................................................................................................................ 65
3. Evaluaciones Lógicas......................................................................................................................... 66
4. Cucles................................................................................................................................................ 67
5. Esperando entrada del usuario........................................................................................................... 69
6. Trabajando con números................................................................................................................... 69
7. Ejercicios............................................................................................................................................ 70
Asesores & Soporte Linux SAC Soportelinux.com

Seguridad básica...................................................................................................................................... 71
1. Seguridad local................................................................................................................................... 71
2. Seguridad de red................................................................................................................................ 73
3. La shell segura SSH........................................................................................................................... 76
4. Configuración de la hora.................................................................................................................... 77
5. Seguridad del Kernel.......................................................................................................................... 78

Administración del Sistema Linux System............................................................................................. 81


1. Archivos de registro y configuración................................................................................................... 81
2. Utilidades de registro.......................................................................................................................... 83
3. Tareas automatizadas........................................................................................................................ 84
4. Compresión y backups....................................................................................................................... 86
5. Documentación.................................................................................................................................. 87
5. Ejercicios............................................................................................................................................ 90

Configurando PPP.................................................................................................................................... 91
1. Módems seriales................................................................................................................................ 91
2. Configuración Dialup.......................................................................................................................... 92
3. Chat y pppd........................................................................................................................................ 92
4. Peers PPPD ...................................................................................................................................... 93
5. Wvdial................................................................................................................................................ 94

Impresión.................................................................................................................................................. 95
1. Filtros y gs.......................................................................................................................................... 95
2. Impresoras y colas de impresión........................................................................................................ 95
3. Herramientas de impresión................................................................................................................ 96
4. Los archivos de configuración............................................................................................................ 97
5. Ejercicios.......................................................................................................................................... 100

Objeticos LPI 102.................................................................................................................................... 101


Índice....................................................................................................................................................... 106
Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

El Kernel Linux

1. Conceptos del Kernel

Los dos tipos de kernel Linux son:

A: Monolítico

Un kernel monolítico es uno que tiene todo el soporte para hardware, red y sistemas de
archivos compilado en un único archivo imagen.

B: Modular

Un kernel modular es uno que tiene algunos drivers compilados como ficheros objeto, los mismos
que el kernel puede cargar y eliminar en demanda. Los módulos cargables son almacenados en
/lib/modules.

La ventaja de un kernel modular es que no siempre necesita ser recompilado cuando nuevo hardware es
agregado o reemplazado en el sistema. Los kernels monolíticos arrancan ligeramente más rápido que los
modulares pero superan a estos últimos.

Av. Del Parque Sur 699 Of. 206 – San Borja 11


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux
2. El Kernel Modular

Muchos componentes del kernel Linux pueden ser compilados como módulos que el kernel puede cargar
dinámicamente y eliminarlos según sea requerido.

Los módulos para un kernel particular son almacenados en /lib/modules/<kernel-version>.

Los componentes que mejor convienen ser modularizados son aquellos no requeridos en el momento del
arranque, por ejemplo soporte para dispositivos periféricos y sistemas de archivos suplementarios.

Los módulos del Kernel modules son controlados por el paquete modutils que contiene las siguientes
herramientas:

– lsmod
– rmmod
– insmod
– modprobe
– modinfo

Muchos módulos dependen de la presencia de otros. Un archivo que contiene las dependencias de todos
estos módulos es /lib/modules/<kernel-version>/modules.dep el cual es generado por el comando
depmod. Este comando es ejecutado por el script rc.sysinit cuando se arranca el sistema.

-- modprobe cargará cualquier módulo y sus dependencias listados en modules.dep

-- /etc/modules.conf es consultado para saber los parámetros de algunos módulos (IRQ y puertos IO) pero
la mayoría de veces este archivo contiene una serie de alias. Estos alias permiten que las aplicaciones se
puedan referir a los dispositivos por un nombre común. Por ejemplo la primera interfaz de red siempre es
referida como eth0 y no por el nombr del driver específico.

Fig1: Ejemplo del archivo /etc/modules.conf:

alias eth0 e100


alias usb-core usb-uhc
alias sound-slot-0 i810_audio
alias char-major-108 ppp_generic
alias ppp-compress-18 ppp_mppe

# 100Mbps full duplex


options eth0 e100_speed_duplex=4

Av. Del Parque Sur 699 Of. 206 – San Borja 12


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux
3. Rutina de recompilación de un kernel

3.1 Extracción de las fuentes


Las fuentes del kernel están almacenadas en el árbol de directorios bajo /usr/src/linux, el cual es un enlace
simbólico al directorio /usr/src/(kernel-version). Cuando se extraen nuevas fuentes del kernel es
recomendable:

• Eliminar el enlace simbólico antiguo que apuntaba a la versión antigua de las fuentes del kernel:

rm linux

Las fuentes del kernel instaladas generalmente como un paquete RPM a menudo crean un enlace simbólico
llamado linux-2-4

• Extraer las nuevas fuentes del kernel (Ejm. linux-2.4.29.tar.bz2)

tar xjf linux-2.4.29.tar.bz2

Nota: Las fuentes de la rama 2.2.x del kernel crean un directorio llamado linux en lugar de crear uno
de nombre linux-version. Este es el por qué es tan importante el primer paso, de otro modo se puede
sobreescribir una versión antigua de las fuentes del kernel con una nueva. Desde la rama 2.4.x del kernel el
directorio creado se llama linux-version.

• Crear un enlace simbólico llamado linux apuntando al directorio nuevo creado:

ln -s linux-2.4.29 linux

• El kernel está ahora casi listo para ser configurado, pero primero necesitamos asegurarnos que todos los
archivos binarios antiguos son limpiados del directorio de las fuentes, y esto es realizado con el comando
make mrproper.

3.2 Configuración del kernel

Primero editemos el archivo Makefile y asegurémonos que la variable “EXTRAVERSION” es diferente de la


versión actual existente:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -test

El kernel ahora está listo para ser configurado. Esto esencialmente significa crear un archivo de
configuración llamado .config. Esto es realizado desde el directorio de las fuentes del kernel (/usr/src/linux)
con cualquiera de los siguientes comandos:

make menuconfig
make xconfig
make config

Av. Del Parque Sur 699 Of. 206 – San Borja 13


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

Todos estos métodos crearán el archivo de configuración /usr/src/linux/.config

A menudo es más sencillo configurar un nuevo kernel usando un archivo .config antiguo usando el comando
make oldconfig. Esto realizará consultas al usuario solamente acerca de nuevas características en el kernel
(si el kernel es nuevo o ha sido parchado)

Aviso: Algunas distribuciones como RedHat tienen un subdirectorio configs con algunos archivos de
configuraciones predeterminadas listos para ser usados como archivos .config en la compilación.

Para habilitar ciertas características del kernel (con make menuconfig) entraremos en la categoría del nivel
superior desplazándonos con las tecla hacia arriba y presionando Enter para entrar a la categoría deseada.
Una vez dentro de la categoría escogida, presionando la barra espaciadora nos permitirá cambiar el soporte
en el kernel para una característica o driver determinado.

Los posibles modos de soportar una característica son:

• Soportado (compilado estáticamente) [*]


• Modular (compilado dinámicamente) [M]
• No soportado [ ]

Las mismas alternativas están disponibles con otros comandos como make config y make xconfig

Fig 2: El menú principal de make xconfig:

3.3 Compilación del Kernel

make dep

Una vez que la configuración del kernel se ha completado, es necesario reflejar dichos cambios en todos los
subdirectorios del directorio de las fuentes del kernel. Esto es posible con el comando make dep. Los
archivos de nombre .depend que contengan rutas a archivos encabezados (.h) presentes en el directorio del
kernel (/usr/src/linux/include) son generados con el destino dep.

make clean

Av. Del Parque Sur 699 Of. 206 – San Borja 14


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

El comando make obtiene instrucciones desde un Makefile y compilará así lo que sea necesario. Si algunos
archivos están ya presentes entonces make los usará tal como están, en particular los archivos de extensión
.o. Para asegurarnos que todas las opciones de configuración en el archivo .config son usados para
recompilar los archivos necesarios uno debe ejecutar el comando make clean (esto elimina todos los
archivos *.o).

Aviso: No se necesita ejecutar “make clean” en esta etapa si ya se ha preparado el directorio de las fuentes
con “make mrproper”

El kernel en sí es compilado con una de los siguientes comandos:

make zImage
make bzImage

Cuando el comando termina sin errores, se creará un archivo llamado vmlinux dentro de /usr/src/linux/.
Este es el kernel descomprimido.

Los otros dos comandos escribirán unos archivos adicionales llamados zImage y bzImage dentro de
/usr/src/linux/arch/i386/boot called zImage and bzImage. Estos son kernels comprimidos usando gzip y
bzip2. Ver la siguiente sección Instalando un nuevo kernel para saber cómo proceder con estos archivos.

make modules

Los módulos del kernel son compilados con el comando make modules.

make modules_install

Una vez que los módulos son compilados éstos necesitan ser copiados en los subdirectorios
correspondientes dentro de /lib/modules. El comando make modules_install hace justamente eso.

La secuencia de comandos está descrita en Fig 3.

Fig 3: Comandos de compilación del kernel:

make dep
make clean
make bzImage
make modules
make modules_install

3.4 Instalando un nuevo kernel

El nuevo kernel puede ser encontrado en /usr/src/linux/arch/i386/boot/bzImage, dependiendo de la


arquitectura de nuestro sistema. Este archivo debe ser copiado en el directorio /boot, y renombrado a
vmlinuz-<versión-completa-del-kernel>

/usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-<full-kernel-version>

Av. Del Parque Sur 699 Of. 206 – San Borja 15


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

Luego el archivo /etc/lilo.conf o /boot/grub/grub.conf necesita ser editado para agregar una entrada
correspondiente al nuevo kernel recién compilado. Copiar la sección “image” del kernel actual y agregar una
nueva sección imagen al final del archivo como se muestra a continuación:

Editando el archivo /etc/lilo.conf:


prompt
timeout=50
message=/boot/message

image=/boot/vmlinuz
label=linux
root=/dev/hda6 Sección existente
read-only

image=/boot/vmlinuz-<version-completa-del-kernel>
label=linux-new Sección agregada
root=/dev/hda6
read-only
----------snip-------------------------------

La tabla de símbolos para varios de los procesos del kernel puede ser copiado al directorio /boot:

cp /usr/src/linux/System.map /boot/System.map-<version-completa-del-kernel>

3.5 La versión completa del kernel


En un sistema, la versión del kernel en ejecución puede ser obtenida con:

uname -r

Esta versión de kernel es también mostrada en las terminales virtuales si la opción \k está presente en el
archivo /etc/issue.

3.5 Initial Ramdisks

Si cualquier módulo compilado dinámicamente es requerido en el momento del arranque (por ejm. un driver
para SCSI, o el soporte para el sistema de archivos raíz) ellos serán cargados usando una imagen inicial
conocida como “initial ramdisk“.

El initial ramdisk es creado con el comando mkinitrd que solamente requiere dos parámetros: el nombre del
archivo y el número de la versión del kernel.

Si usamos un initial ramdisk entonces será necesario agregar una línea initrd= en el archivo /etc/lilo.conf

Ejemplo:

Av. Del Parque Sur 699 Of. 206 – San Borja 16


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

mkinitrd /boot/initrd-$(uname -r).img $(uname -r)

3.6 Opcional

Es recomendable copiar el archivo /usr/src/linux/.config a /boot/config-<version-completa-del-kernel>,


solamente para mantener un registro de las capacidades de las diferentes versiones de kernel compiladas.

3.7 Reinstalar LILO

Finalmente LILO necesita ser ejecutado nuevamente para poder actualizar el gestor de arranque. Primero
lilo puede ser ejecutado en modo de pruebas para ver si hay algún error en el archivo de configuración:

AVISO
El gestor de arranque LILO necesita ser actualizado usando lilo cada vez que un cambio es realizado en
/etc/lilo.conf

Av. Del Parque Sur 699 Of. 206 – San Borja 17


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux

4. Ejercicios
Antes de empezar con los ejercicios asegurémonos que no tenemos ningún directorio de fuentes del kernel
bajo /usr/src/. Si es así, prestar atención al enlace simbólico /usr/src/linux.

1. Manualmente recompilar el kernel siguiendo los siguientes pasos de compilación:

- Obtener el paquete kernel-version.src.rpm desde rpmfind o un CD. Instalando este paquete también
obtendremos una lista de dependencias tales como el compilador gcc o el paquete binutils si aún no han
sido instalados.

- Instalar el paquete con -i (esto colocará las fuentes en /usr/src/)

- Ir al directorio /usr/src/linux-version y analizar el directorio configs

- Copiar la configuración del kernel que coincida con nuestra arquitectura en el directorio actual y
renombrarlo a .config

- Ejecutar

make oldconfig

en la línea de comandos para retomar la configuración del nuevo archivo .config.

- Editar el archivo Makefile y asegurarse que la versión no sea la misma que el kernel actual. Podemos
obtener información del kernel actual en ejecución con el comando uname –a.

- Ejecutar:

make menuconfig (o xconfig)

y eliminar el soporte ISDN (RDSI) del kernel.

- Cuando salimos del programa el archivo .config es modificado pero los cambios aún no se reflejarán en
el resto del código fuente. A continuación debemos ejecutar:

make dep

- Finalmente para forzar a que los archivos objeto (.o) sean compilados según los últimos cambios
realizados debemos eliminarlos con:

make clean

- Ahora podemos compilar el kernel, sus módulos e instalar estos últimos:

make bzImage modules modules_install

- Los módulos están ahora instalados en el directorio /lib/modules/version. El kernel es llamado ahora
bzImage y está en el directorio:

/usr/src/linux/arch/i386/boot/

Necesitamos instalar manualmente el kernel (2 pasos):

(i) cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-<version-completa-del-


kernel>

Av. Del Parque Sur 699 Of. 206 – San Borja 18


Asesores & Soporte Linux SAC Soportelinux.com
El Kernel Linux
(ii) Ahora editar el archivo /etc/lilo.conf y agregar una directiva ‘image’ que le dirá a LILO dónde
encontrar este kernel en el sistema de archivos.

- Ejecutar /sbin/lilo y reiniciar.

2. Dado que instalamos el paquete kernel-version.src.rpm podemos ahora usar este paquete y
recompilar un kernel preconfigurado para RedHat. Nótese que aunque no se requiere intervención del
usuario no será posible modificar el menu .config.

- Primero reconstruir los binarios compilados con:

rpm --rebuild kernel-version.src.rpm

- Esto eventualmente generará el paquete kernel-version.i368.rpm en el directorio


/usr/src/redhat/RPMS/i386/.

- Luego, actualizar el kernel con RPM usando la opción–U

Av. Del Parque Sur 699 Of. 206 – San Borja 19


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux

Arrancando Linux

Descripción
Dar una mirada más cercana al proceso de arranque ayuda a poder comprender mejor cualquier
problema o inconveniente que pueda darse tanto con el hardware así como con funciones
administrativas.

Primero nos enfocaremos en el rol del programa init y su configuración asociada en el archivo /etc/inittab.
El rol de LILO en el momento del arranque es estudiado en mayor profundidad. Finalmente pasaremos a
resumir el proceso de arranque. El documento “From Power to Bash Prompt” escrito por Greg O'Keefe así
como las páginas man de boot(7) son buenas referencias para este módulo.

1. Entendiendo los niveles de arranque (runlevel)

A diferencia de la mayoría de sistemas operativos no-UNIX que solamente tienen dos modos funcionales
(ON y OFF), los sistemas UNIX incluido Linux tienen diferentes niveles de arranque tales como el nivel de
“mantenimiento” o “multiusuario”, etc. Los niveles de arranque son numerados del 0 al 6.

Lista 1: Niveles de arranque (runlevel)


Runlevel 0 apaga el sistema de manera segura, el nivel de arranque 6 reinicia el sistema de
forma segura
Runlevel 1 es modo monousuario (single- user mode)
Runlevel 2 es modo multiusuario (multi-user mode) sin soporte NFS
Runlevel 3 es modo multiusuario (full multi-user mode) completo
Runlevel 4 generalmente no está definido y está en desuso
Runlevel 5 es como el nivel 3 pero ejecuta un gestor de pantalla (Display Manager) también

Tanto init como telinit son usados para cambiar de un nivel a otro. Recordar que init es el primer programa
ejecutado luego de que el kernel ha sido inicializado en el arranque. El PID para el proceso init siempre es
1.

Lista 2: The PID para init siempre es 1


[root@nasaspc /proc]# ps uax |grep init
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
root 1 0.2 0.0 1368 52 ?
S 20:17 0:04 init [3]

En cada nivel de arranque el sistema arrancará o detendrá una serie de servicios. Estos programas son
guardados en /etc/rc.d/init.d. Este directorio contiene todos los servicios que el sistema puede requerir. Una
vez que estos programas son ejecutados ellos permanecerán activos hasta que un nuevo nivel de arranque
sea invocado. Los siguientes servicios son también llamados demonios.

Lista 3: Lista de servicios típicos (o demonios) en /etc/rc.d/init.d/

Av. Del Parque Sur 699 Of. 206 – San Borja 20


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux
ls /etc/rc.d/init.d/
anacron cups identd kadmin krb5kdc mcserv nscd random smb xfs
apmd dhcpd innd kdcrotate kudzu named ntpd rawdevices snmpd xinetd
arpwatch functions ipchains keytable ldap netfs pcmcia rhnsd squid
atd gpm iptables killall linuxconf network portmp rwhod sshd
autofs halt irda kprop lpd nfs pgsql sendmail syslog
crond httpd isdn krb524 marsrv nfslock pppoe single tux

Nota: Es posible detener o iniciar manualmente un demonio determinado en /etc/rc.d/init.d pasándole el


argumento apropiado. Por ejemplo si se desea reiniciar el servicio apache se tipearía:

/etc/rc.d/init.d/httpd restart

Cuando trabajamos con niveles de arranque se ha de instruir a una serie de programas iniciarse y a otros
tantos detenerse. Digamos que deseamos pasar al runlevel 2 tipearíamos lo siguiente:

/sbin/init 2

Esto forzaría a init a leer su archivo de configuración /etc/inittab para saber qué sucedería en este nivel.

En particular (asumiento que estamos cambiándonos al runlevel 2) la siguiente línea en inittab es ejecutada:

l2:wait:/etc/rc.d/rc 2

Si miramos en el archivo /etc/inittab la línea del comando “/etc/rc.d/rcn N” inicia todos los servicios en el
directorio /etc/rc.d/rcN.d que empiecen con una letra S y detendrá aquellos servicios que empiecen con una
letra K. Estos servicios son enlaces simbólicos apuntando a los rc-scrips en el directorio /etc/rc.d/init.d.

Si deseamos que un proceso no corra en un runlevel N determinado podemos eliminar el enlace simbólico
correspondientes en /etc/rc.d/rN.d empezando con una K.

2. El archivo inittab

Tal como fue prometido, démos una mirada al archivo /etc/inttab.

El archivo tiene la siguiente estructura:

Av. Del Parque Sur 699 Of. 206 – San Borja 21


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux
id : runlevel : accion : comando

Figura 3: El archivo /etc/inittab:

id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
-----------------------snip----------------------------------
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
-----------------------snip----------------------------------
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5


x:5:respawn:/etc/X11/prefdm –nodaemon

El campo id puede ser cualquier cosa. Si un runlevel es especificado entonces el comando y la accion
requerida serán ejecutadas solamente en un runlevel específico. Si ningún número es especificado entoncs
la línea es ejecutada en cualquier runlevel.

Funcionalidades a recalcar en el archivo /etc/inittab:

El runlevel por defecto: esto es configurado al inicio del archivo con el identificador id y la acción
initdefault. Nótese que ningún comando es especificado. Esta línea simplemente le dice a init cuál es el
runlevel por defecto.

Primer programa invocado por init: /etc/rc.d/rc.sysinit. Este script configura los valores por defecto del
sistema tales como la variable de entorno PATH, determina si se activará el soporte de red, el nombre del
host, etc.

Servicios del runlevel por defecto: Si el runlevel por defecto es 3 entonces solamente la línea “l3” será
ejecutada. La acción es “wait”, ningún otro programa es ejecutado hasta que todos los servicios en el
runlevel 3 estén ya en ejecución.

Las terminales getty: Las líneas con identificadores (id) del 1 al 6 inicializan las terminales virtuales. Es
aquí donde se pueden alterar el número de terminales.

Runlevel 5: La línea final en inittab ejecuta el gestor de pantalla (Display Manager) si el runlevel 5 es
alcanzado.

Observaciones:

1. Podemos configurar un módem para la escucha de conexiones en inittab. Si el módem está enlazado a
/dev/ttyS1 entonces la siguiente línea permitirá conexión de datos (no fax) luego de dos marcados:

Av. Del Parque Sur 699 Of. 206 – San Borja 22


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux
S1:12345:respawn:/sbin/mgetty -D -x 2 /dev/ttyS1

2. Cuando realizemos cambios a /etc/inittab necesitaremos forzar a que init relea su fichero de
configuración. Esto es posible de la siguiente forma:

/sbin/init q

3. LILO el gestor de arranque

La información necesitada por el gestor es actualizada por /sbin/lilo (el instalador del gestor de arranque)
que lee su fichero de configuración /etc/lilo.conf.

Durante el arranque LILO necesita conocer información esencial tal como dónde se encuentra el kernel
(usualmente en /boot) y dónde se aloja la partición raíz.

LILO no entiende la estructura de un sistema de archivos o dónde se encuentran los archivos. Solamente
entiende ubicaciones o zonas de un disco físico. Si estamos instalando una segunda distribución de Linux B
que no está en ejecución mientras configuramos lilo.conf, entonces necesitaremos montar la partición que
contenga el directorio /boot de dicha distribución B. También debemos mantener un registro de la ubicación
de la partición B.

Parámetros de init:

Asímismo, LILO puede pasar los parámetros del runlevel a init. Una vez que el kernel ha sido cargado, init
toma el control del proceso de arranque. Si ningún parámetro se le ha pasado entonces init iniciará con el
runlevel por defecto especificado en /etc/inittab.

Pasando instrucciones del runlevel a init en el prompt de LILO

Boot: linux s

Pasando parámetros del Kernel:

Av. Del Parque Sur 699 Of. 206 – San Borja 23


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux

Los parámetros para el kernel pueden ser pasados a través del prompt de LILO o especificados en
/etc/lilo.conf con la directiva append.

Ejemplos
append= "pci=bisoirq"
append=”ram=16M”
append=”/dev/hdc=ide-scsi” (for CD writers)

Los parámetros pasados al kernel en el momento del arranque son destinados generalmente para los
módulos compilados y que a menudo facilitan la detección de hardware.

Durante el arranque todos los mensajes del kernel son guardados en /var/log/dmesg por defecto. Este
archivo puede ser leido o impreso en la salida estándar con el comando dmesg

4. Del arranque a la shell bash


Ahora podemos intentar ir a través de los pasos que sigue Linux durante su proceso de arranque.

Si un initial ramdisk es especificado es cargado aquí. Los módulos son insertados del initial ramdisk.

El kernel es cargado desde el medio de almacenamiento, especificado en la configuración de LILO. Mientras


se carga el kernel éste es descomprimido.

El kernel entonces monta el sistema de archivos raíz (/) de acuerdo con la configuración que recibe de LILO
(usualmente read-only).

Por lo tanto programas esenciales en /bin y /sbin ya se encuentran disponibles.

El kernel entonces carga init, el primer proceso en espacio de usuario.

init lee el archivo /etc/inittab y sigue sus instrucciones. En particular rc.sysinit es ejecutado. Un chequeo
(fsck) es realizado a los sistemas de archivos de acuerdo a las configuraciones respectivas en /etc/fstab.

Luego init va al runlevel por defecto, los procesos getty se inicial y el proceso de arranque culmina.

Av. Del Parque Sur 699 Of. 206 – San Borja 24


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux
El prompt para el login es ahora controlado por los procesos getty en las respectivas ttys. Luego que el
usuario ha tipeado su nombre de inicio de sesión y presione Enter entonces se inicia /bin/login.

Luego /bin/login le pide al usuario que ingrese su contraseña; el usuario la tipea y presiona Enter.

La contraseña ingresada es comparada con la clave encontrada en /etc/passwd o /etc/shadow.

Av. Del Parque Sur 699 Of. 206 – San Borja 25


Asesores & Soporte Linux SAC Soportelinux.com
Arrancando Linux

5. Ejercicios
Dar una mirada a la página man boot(7), cubre la mayoría de lo descrito en este módulo.

1. Cambiar el runlevel actual por defecto de 3 a 5.


- ¿Cómo conocemos el runlevel actual?

2. Habilitar Ctrl+Alt+Del solamente para el runlevel 3.

3. Agregar un nuevo prompt de login en tty7.


- ¿Cómo puede forzarse a init para que relea su archivo de configuración?
4. Use dmesg para conocer el chipset de la tarjeta de red.

5. Investigar diferencias entre shutdown, halt y reboot.


- ¿Qué opción pasada a shutdown le obligará a realizar un chequeo con fsck en el próximo
arranque?

6. Use las herramientas chkconfig o ntsysv para deshabilitar el demonio sshd en los runlevels 2, 3, 4, y 5.
Verificar que los enlaces simbólicos en los directorios rc2.d, rc3.d, rc4.d y rc5.d hayan cambiado.

7. Reiniciar el sistema. En el prompt de arranque pasar el parámetro apropiado init= para saltar /sbin/init e
iniciar solamente una sesión de bash.

Av. Del Parque Sur 699 Of. 206 – San Borja 26


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios

Administrando Grupos y Usuarios

1. Creando nuevos usuarios

Paso 1: Crear una cuenta

El comando useradd agrega nuevos usuarios al sistema y generalmente el enlace simbólico useradd apunta
a él.

Sintaxis:
useradd [opciones] nombre-de-login

Ejemplo: agregar un nuevo usuario con nombre de login rufus

useradd rufus

Los valores por defecto serán usados cuando ninguna opción es especificada. Podemos ver estos valores
por defecto con useradd –D.

Opciones por defecto listadas con useradd –D


GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Nótese que esta información está también disponible en /etc/default/useradd

Paso 2: Activar la cuenta con una nueva clave

Para permitir al usuario acceder a su cuenta el administrador debe asignarle una contraseña al usuario
usando la herramienta passwd.

Sintaxis:
passwd login-name

Estos pasos crean un nuevo usuario. Esto también ha definido el entorno del usuario tal como el directorio
personal y la shell por defecto. Al usuario también se le ha asignado un grupo, su grupo primario.

2. Trabajando con grupos

Cada nuevo usuario creado es asignado a un grupo inicial (o primario). Dos convenciones existen.

Tradicionalmente este grupo primario es el mismo para todos los usuarios y es llamado users con un ID de
grupo (GID) de 100. Muchas distribuciones de Linux se adhieren a esta convención.

Av. Del Parque Sur 699 Of. 206 – San Borja 27


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios
El esquema de Grupo de Usuario Privado (UPG, User Private Group) fue introducido por Redhat y cambia
esta convención sin cambiar la manera en que los grupos UNIX trabajan. Con UPG cada nuevo usuario
pertenece a su propio grupo primario. El grupo tiene el mismo nombre que el nombre de login (por defecto),
y el GID está en el rango de 500 a 60000 (igual que los UIDs).

Como una consecuencia, cuando se usa el esquema tradicional para los grupos el umask (ver LPI 101) es
asignado a 022, mientras que en el esquema UPG el umask es asignado a 002.

Pertenencia a grupos:

Un usuario puede pertenecer a cualquier cantidad de grupos. Sin embargo en un instante determinado
(cuando se crea un archivo por ejemplo) solamente un grupo es el grupo efectivo.

La lista de todos los grupos a los que un usuario pertenece es obtenida con los comandos groups o id.

Ejemplo para el usuario root:

Listar todos los IDs:

id
➔ ► uid=0(root) gid=0(root) groups=0(root), 1(bin), 2(daemon), 3(sys),
4(adm), 6(disk), 10(wheel), 600(sales)

Listar todos los grupos:

groups
➔ ► root bin daemon sys adm disk wheel sales

Uniéndose a un grupo:

Unirse a un grupo cambia el grupo efectivo de un usuario e inicia una nueva sesión desde la cual el usuario
puede cerrar sesión. Esto es realizado con el comando newgrp.

Ejemplo: Uniéndose al grupo sales

newgrp sales

Si el comando groups es ejecutado, el primer grupo en la lista ya no sería root sino sales.

Av. Del Parque Sur 699 Of. 206 – San Borja 28


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios

Creando un nuevo grupo:

La herramienta groupadd es usada para administrar grupos. Esto agregará una entrada en el archivo
/etc/group.

Ejemplo: Crear el grupo devel

groupadd devel

Agregando un usuario a un grupo:

Las tareas administrativas sobre grupos puede realizada con la herramienta gpasswd. Uno puede agregar
(-a) o eliminar (-d) usuarios de un grupo y asignarle un administrador (-A). Esta herramienta fue
originalmente diseñada para asignar únicamente una contraseña a un grupo, permitiendo que los miembros
del mismo grupo puedan iniciar sesión con la misma contraseña. Por razones de seguridad esta
característica ya no trabaja más.

Ejemplo: Agregar rufus al grupo devel

gpasswd -a rufus devel

3. Archivos de configuración

Los archivos /etc/passwd y /etc/shadow:

Los nombres de todos los usuarios son almacenados en /etc/passwd. Este archivo tiene la siguiente
estructura:

1. Nombre de inicio de sesión (login name)


2. Password (o x si se usa un archivo shadow)
3. El UID
4. El GID
5. Texto descriptivo para el usuario (gecos)
6. El directorio personal del usuario (home directory)
7. La shell del usuario

Estos 7 campos están separados por dos puntos (:), tal como el ejemplo de abajo:

Av. Del Parque Sur 699 Of. 206 – San Borja 29


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios
Archivo /etc/passwd con contraseña encriptada:

george:$1$K05gMbOv$b7ryoKGTd2hDrW2sT.h:Dr G Micheal:/home/georges:/bin/bash

Para poder esconder la contraseña encriptada de los usuarios ordinarios, debería usarse un archivo shadow.
El archivo /etc/shadow contiene los nombres de usuario y las contraseñas encriptadas siendo leíble este
archivo solamente por el usuario root.

Si no se posee un archivo shadow en /etc entonces debería ejecutarse el siguiente comando:

/usr/sbin/pwconv (passwd -> shadow)

Esto colocará una 'x' en el segundo campo del archivo /etc/passwd y creará el archivo /etc/shadow. Si ya no
deseamos usar contraseñas shadow entonces podemos usar el siguiente comando:

/usr/sbin/pwunconv (shadow -> passwd)

Advertencia: Cuando se usen contraseñas shadow el archivo /etc/passwd puede ser leíble por todos (644)
y el archivo /etc/shadow debe ser más estricto (600 o incluso 400). Sin embargo cuando se usa pwunconv
asegurarse de cambiar los permisos según lo recomendado.

Los archivos /etc/group y /etc/gshadow:

De la misma manera, la información sobre los grupos es almacenada en /etc/group. Este archivo contiene 4
campos separados por dos puntos (:).

1. Nombre de grupo
2. El password de grupo (o x si gshadow existe)
3. El GID
4. Lista de miembros separada por comas (,)

Ejemplo de una entrada de /etc/group:

java:x:550:jade, eric, rufus

Tal como para los usuarios existe un archivo /etc/gshadow que es creado cuando se usan contraseñas
shadow para los grupos. Las herramientas usadas para cambiar entre archivos de contraseñas shadow y
no-shadow para los grupos son las que siguen:

/usr/sbin/grpconv Crea el archivo /etc/gshadow

/usr/sbin/grpunconv Elimina el archivo gshadow

Av. Del Parque Sur 699 Of. 206 – San Borja 30


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios
El archivo /etc/login.defs y /etc/skel/:

El archivo /etc/login.defs contiene la siguiente información:

• El directorio de mail:
MAIL_DIR

• Control de expiración de passwords:


PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MAX_LEN, PASS_WARN_AGE

• Valores max/min para selección automática de UID en useradd:


UID_MIN, UID_MAX

• Valores max/min para selección automática de GID en groupadd:


GID_MIN, GID_MAX

• Automáticamente crea el directorio personal del usuario con useradd:


CREATE_HOME

El directorio /etc/skel contiene archivos por defecto que serán copiados al directorio personal de los usuarios
recién creados: .bashrc, .bash_profiles, ...

4. Opciones de comandos
useradd (opciones)

-c Comentario (Nombre completo)


-d Ruta al directorio personal
-g Grupo inicial (GID). El GID debe ya existir
-G Lista de grupos suplementarios separados por comas
-u UID de usuario
-s Shell por defecto del usuario
-p Password (Encriptación md5)
-e Fecha de expiración de la cuenta
-k El directorio skel

groupadd (opciones)

-g Asigna un GID

5. Modificando cuentas y opciones por defecto

Todas las opciones disponibles mientras se crean usuarios o grupos pueden ser modificadas. La
herramienta usermod tiene las siguientes opciones:

usermod (opciones)

-d El directorio personal del usuario


-g El GID inicial del usuario
-l El nombre de inicio de sesión del usuario
-u El UID del usuario
-s La shell por defecto

Av. Del Parque Sur 699 Of. 206 – San Borja 31


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios
Nótese que estas opciones son las mismas para useradd

Asímismo, podemos cambiar detalles sobre un grupo con groupmod. Existen principalmente dos opciones:

groupmod (opciones)

-g El GID
-n El nombre de grupo

Bloqueando una cuenta

• Una cuenta de usuario puede ser bloqueada colocando un signo de exclamación (!) como prefijo a la
contraseña del usuario. Esto puede ser realizado también con las siguientes opciones de comando:

Bloquear Desbloquear
passwd -l passwd -u
usermod -L usermod -U

• Cuando se usen contraseñas shadow, reemplazar x con un *

• Una opción menos práctica es remover la contraseña por completo con passwd -d

• Finalmente, uno puede asignar /bin/false como la shell por defecto del usuario en /etc/passwd

Cambiando la fecha de expiración de la contraseña:

Por defecto una contraseña de usuario es válida por 99999 días, esto es equivalente a 2739 años (el valor
por defecto de PASS_MAX_DAYS). El usuario recibe una advertencia 7 días antes que su contraseña ha de
expirar (el valor por defecto de PASS_WARN_AGE) con un mensaje como el siguiente cuando inicia sesión:

Warning: your password will expire in 6 days

Existe otro número de políticas de expiración llamado PASS_MIN_DAYS. Este es el mínimo número de días
que un usuario debe esperar antes que pueda cambiar su contraseña, es asignado a cero por defecto.

La herramienta chage permite a un administrador cambiar todas estas opciones.

Uso: chage [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]


[ -I inactive ] [ -E expire ] [ -d last_day ] user

La primera opción -l lista las políticas de expiración actuales para el usuario. Solamente discutiremos la
opción -E. Esto bloquea una cuenta en una fecha determinada. La fecha es asignada en días UNIX o en el
formato YYYY/MM/DD.

Nótese que todos estos valores son almacenados en /etc/shadow, y pueden ser editados directamente.

Eliminando una cuenta:

Una cuenta de usuario puede ser removida con el comando userdel. Para asegurarse que el directorio
personal del usuario es también eliminado debe agregarse la opción -r al comando.

userdel -r jade

Av. Del Parque Sur 699 Of. 206 – San Borja 32


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios

6. Ejercicios

1. Creando usuarios

Usar adduser para crear un usuario llamado tux con un UID de 600 y un GID de 550.

Usar usermod para cambiar su directorio personal.

¿Necesita ser creado el nuevo directorio?


¿El contenido de /etc/skel es copiado al nuevo directorio?
¿Aún pueden ser accedidos por tux los contenidos del antiguo directorio personal?

Usar usermod para agregar tux al grupo wheel.

2. Trabajando con grupos

Crear un grupo llamado sales usando groupadd.

Agregar tux a este grupo usando gpasswd.

Iniciar sesión como tux y unirse al grupo sales usando newgrp.

3. Archivos de configuración

Agregar un usuario al sistema editando /etc/passwd y /etc/group


Crear un grupo llamado share y agregar tux a este grupo editando manualmente /etc/group

4. Modificando una cuenta

Cambiar la fecha de expiración de la cuenta tux usando usermod.


Bloquear la cuenta del usuario tux (Usar herramientas o editar /etc/shadow)
Evitar que el usuario inicie sesión cambiando la shell por defecto a /bin/false
Cambiar el valor de PASS_MAX_DAYS para el usuario tux a 1 en /etc/shadow

Av. Del Parque Sur 699 Of. 206 – San Borja 33


Asesores & Soporte Linux SAC Soportelinux.com
Administrando Grupos y Usuarios

5. Cambiando configuraciones por defecto

Usar useradd -D para cambiar las configuraciones por defecto del sistema de modo tal que a cada nuevo
usuario creado se le asignará /bin/sh en lugar de /bin/bash como shell por defecto.

Editar /etc/login.defs y cambiar el valor de PASS_MAX_DAYS de modo tal que los nuevos usuarios creados
necesiten cambiar su contraseña cada 5 días.

Av. Del Parque Sur 699 Of. 206 – San Borja 34


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red

Configuración de red

1. La interfaz de red

La tarjeta interfaz de red (NIC, Network Interface Card) debe ser soportada por el kernel. Para determinar
qué tarjeta estamos usando se puede obtener información desde dmesg, /proc/interrupts, lsmod o
/etc/modules.conf

Ejemplo:

dmesg
► Linux Tulip driver version 0.9.14 (February 20, 2001)
PCI: Enabling device 00:0f.0 (0004 -> 0007)
PCI: Found IRQ 10 for device 00:0f.0
eth0: Lite-On 82c168 PNIC rev 32 at 0xf800, 00:A0:CC:D3:6E:0F, IRQ 10.
eth0: MII transceiver #1 config 3000 status 7829 advertising 01e1.

cat /proc/interrupts
► 0: 8729602 XT-PIC timer
1: 4 XT-PIC keyboard
2: 0 XT-PIC cascade
7: 0 XT-PIC parport0
8: 1 XT-PIC rtc
10: 622417 XT-PIC eth0
11: 0 XT-PIC usb-uhci
14: 143040 XT-PIC ide0
15: 180 XT-PIC ide1

/sbin/lsmod
► Module Size Used by
tulip 37360 1 (autoclean)

Del ejemplo de arriba vemos que el chipset de la tarjeta de red es Tulip, la dirección I/O es 0xf800 y la IRQ
es 10. Esta información puede ser usada si el módulo incorrecto es cargado o si los recursos (I/O o IRQ) no
están disponibles.

Esta información puede ser usada para insertar un módulo con una diferente dirección I/O (usando
modprobe o insmod) o puede ser guardado en /etc/modules.conf (esto guardará los cambios para la
próxima vez que se reinicie el sistema).

Av. Del Parque Sur 699 Of. 206 – San Borja 35


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red
2. Información de host
Los siguientes archivos son usados para almacenar información de red.

• /etc/resolv.conf contiene una lista de los servidores DNS

nameserver 192.168.1.108
nameserver 192.168.1.1
search soportelinux.com.pe

• /etc/HOSTNAME es usado para asignar un nombre a la PC

• Uno puede tambier asociar un nombre a una interfaz de red. Esto es realizado de modo diferente
entre las distribuciones.

• /etc/hosts contiene nuestra dirección IP así como también la de otros hosts

# Do not remove the following line, or various programs


# that require network functionality will fail.
127.0.0.1 localhost localhost.localdomain
# other hosts
192.168.254.201 pclab2 pclab2.soportelinux.com.pe
192.168.254.202 pclab3

• /etc/sysconfig/network define si la red debe ser iniciada o no. (puede también contener la variable
the HOSTNAME)

NETWORKING=yes
HOSTNAME=pclab2.soportelinux.com.pe
GATEWAY=192.168.254.1
GATEWAYDEV=

• /etc/sysconfig/network-scripts/ifcfg-eth0 Los parámetros de configuración para eth0

DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.254.255
IPADDR=192.168.254.201
NETWORK=192.168.254.0
ONBOOT=yes
USERCTL=no

3. Detener e iniciar la red


● Desde la línea de comandos:

Av. Del Parque Sur 699 Of. 206 – San Borja 36


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red
La herramienta principal usada para levantar una interfaz de red es ifconfig. Una vez inicializada el módulo
del kernel que posea un alias a eth0 en /etc/modules.conf (Ejm. tulip.o) es cargado y se le asigna una
dirección IP y máscara de red.

Como resultado la interfaz de red puede ser encendida o apagada sin perder esta información mientras el
módulo del kernel siga cargado.

Ejemplos: Usando ifconfig.

/sbin/ifconfig eth0 192.168.10.1 netmask 255.255.128.0


/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 up

Otra herramienta es ifup. Esta herramienta lee la configuración del sistema en /etc/sysconfig y asigna los
valores almacenados para una interfaz determinada. El script para eth0 es llamado ifcfg-eth0 y ha de ser
configurado. Si un protocolo de arranque tal como DHCP es definido entonces ifup iniciará la negociación de
dicho protocolo.

Ejemplos: Usando ifup.

/sbin/ifup eth0
/sbin/ifup ppp0
/sbin/ifdown eth0

● Usando el script de red:

En el momento del arranque la interfaz de red Ethernet es inicializada con el script /etc/rc.d/init.d/network.
Todos los archivos de configuración de red relevantes son almacenados en el directorio /etc/sysconfig.

Además el script también lee opciones de sysctl en /etc/sysctl.conf, es aquí donde puede configurarse el
sistema como un router (permitir el reenvío IP o IP Forwarding en el kernel). Por ejemplo la línea:

net.ipv4.ip_forward = 1

habilitará el reenvío IP (IP Forwarding) y el archivo /proc/sys/net/ipv4/ip_forward contendrá un 1 como


valor.

El script network es iniciado con el siguiente comando:

/etc/rc.d/init.d/network restart

● Renovando un préstamo DHCP:

Las siguientes herramientas pueden solicitar una nueva dirección IP a un servidor DHCP:

pump
dhcpclient

Un demonio cliente existe y es llamado dhcpcd (no confundir con el demonio del servidor DHCP llamado
dhcpd)

4. Enrutado

Av. Del Parque Sur 699 Of. 206 – San Borja 37


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red
Una diferencia notable cuando usamos ifup es la tabla de enrutamiento del sistema. Esto es debido a que el
archivo /etc/sysconfig/network es leído, donde un default gateway (puerta de enlace por defecto) es
almacenado, o el servidor DHCP ha enviado esta información junto con el número IP. Las tablas de
enrutamiento son configuradas, consultadas y cambiadas con el comando route.

Ejemplos de enrutamiento:

Agregar una ruta estática a la red 10.0.0.0 a través del dispositivo eth1 y usar 192.168.1.108 como el
gateway para dicha red:

/sbin/route add -net 10.0.0.0 gw 192.168.1.108 dev eth1

Agregar un default gateway:

/sbin/route add default gw 192.168.1.1 eth0

Consultar la tabla de enrutamiento del kernel:

/sbin/route -n
► Kernel IP routing table
Destination Gateway Genmask Iface
192.168.1.0 0.0.0.0 255.255.255.0 eth0
10.1.8.0 192.168.1.108 255.0.0.0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 lo
0.0.0.0 192.168.1.1 0.0.0.0 eth0

Default Gateway:
En el ejemplo anterior, el campo Destination contiene una lista de redes. En particular, 0.0.0.0 significa 'a
donde sea'. Con esto en mente, existen dos direcciones IP en el campo Gateway. ¿Cuál de los dos es el
default gateway?

 Para evitar tener que ingresar rutas estáticas a mano los demonios especiales gated o routed son
ejecutados para actualizar dinámicamente las tablas de enrutamiento a través de una red.

 Si pertenecemos a la red 192.168.10.0 y agregamos una ruta a la red 192.168.1.0 podemos notar que
las máquinas en esta última red no responden. Esto es porque ninguna ruta ha sido asignada desde la red
192.168.1.0 hacia nuestro host. Este problema es resuelto con enrutamiento dinámico.

Rutas estáticas permanentes


Si tenemos varias redes con más de un gateway podemos usar /etc/sysconfig/static-routes (en lugar de
demonios de enrutamiento). Estas rutas serán agregadas en el momento del arranque por el script network.

Un escenario de enrutamiento:

Av. Del Parque Sur 699 Of. 206 – San Borja 38


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red

5. Herramientas comunes de red

Aquí hay una lista corta de herramientas útiles cuando se presenten inconvenientes con las conexiones de
red.

ping host:

Esta herramienta envia un datagrama ICMP ECHO_REQUEST a un host y espera un datagrama ICMP
ECHO_RESPONSE.

Opciones para ping:

-b ping a una dirección de broadcast


-c N Envía N paquetes
-q Modo silencioso: Muestra solamente los mensajes de inicio y fin

netstat:

Podemos obtener información de las conexiones de red actuales, la tabla de enrutamiento o estadísticas de
la interfaz de red dependiendo de las opciones usadas.

Opciones para netstat:

-r Igual que /sbin/route


-I Muestra una lista de interfaces de red
-n No resuelve direcciones IP

Av. Del Parque Sur 699 Of. 206 – San Borja 39


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red
-p Retorna el PID y nombre de los programas (solamente para root)
-v Verboso
-c Actualización continua

Ejemplo: Salida de netstat –-inet –n:

► Active Internet connections (w/o servers)


Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.10:139 192.168.1.153:1992 ESTABLISHED
tcp 0 0 192.168.1.10:22 192.168.1.138:1114 ESTABLISHED
tcp 0 0 192.168.1.10:80 192.168.1.71:18858 TIME_WAIT

En la lista de arriba podemos ver que el host local ha establecido conexiones en los puertos 139, 22 y 80.

arp:

Muestra la caché de la resolución de direcciones del kernel

Ejemplo:
arp
► Address HWtype HWaddress Iface
192.168.1.71 ether 00:04:C1:D7:CA:2D eth0

traceroute:

Muestra la ruta tomada desde el host local hacia el host destino. traceroute fuerza a que las enrutadores
intermedios envíen de regreso mensajes de error (ICMP TIME_EXCEEDED) de manera deliberada asignando
el valor TTL (time to live) bastante bajo. Luego de la notificación TIME_EXCEEDED traceroute incrementa el
valor TTL forzando al siguiente paquete a llegar más lejos hasta que alcance su destino.

Ejemplo:
CMD: /usr/sbin/traceroute -n www.redhat.com
► traceroute: Warning: www.redhat.com has multiple addresses; using
216.148.218.197
traceroute to www.redhat.com (216.148.218.197), 30 hops max, 38 byte
packets
1 192.168.1.1 0.440 ms 0.347 ms 0.341 ms
---- snip ---
14 12.122.2.145 112.116 ms 110.908 ms 112.002 ms
15 12.122.2.74 156.629 ms 157.028 ms 156.857 ms
16 12.122.255.222 156.867 ms 156.641 ms 156.623 ms
17 216.148.209.66 159.982 ms 157.462 ms 158.537 ms
18 216.148.218.197 157.395 ms 156.789 ms 156.080 ms

Opcions para traceroute:

-f ttl cambia el TTL inicial a ttl en lugar de 1


-n No resuelve direcciones IP
-v Verboso
-w sec Asigna el tiempo de espera en paquetes de retorno a sec

Av. Del Parque Sur 699 Of. 206 – San Borja 40


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red

6. Ejercicios
1. En la sección “escenario de enrutamiento” de este capítulo mostrar la tabla de enrutamiento para el
gateway de la LAN.

2. Iniciar la interfaz de red manualmente

ifconfig eth0 192.168.0.x

Listar los módulos del kernel. Asegurarse que el módulo de eth0 sea cargado (chequar /etc/modules.conf).

3. Detener la interfaz de red con:

(i) ifconfig eth0 down

Verificar que podemos iniciar nuevamente la interfaz de red sin ingresar información nueva:

(ii) ifconfig eth0 up

4. Detener la interfaz de red y descargar el módulo del kernel (rmmod module). ¿Qué sucede si repetimos el
paso 3(ii)?

Av. Del Parque Sur 699 Of. 206 – San Borja 41


Asesores & Soporte Linux SAC Soportelinux.com
Configuración de red
5. Dividir la clase en dos redes A (192.168.1.0) y B (10.0.0.0).

• Tratar de acceder a hosts a través de la red


• Elegir una máquina existente como gateway (en cualquiera de las redes)
• Solamente en la máquina asignada como gateway! Hacer lo siguiente:

-- Habilitar IP forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

-- Iniciar un alias de interfaz de red (esto trabajará como una segunda interfaz).

Si estamos en la red 192.168.1.0 entonces hacer lo siguiente:

ifup eth0:1 10.0.0.x (donde x es una dirección IP disponible).


Agregar una ruta a la nueva red forzándola a usar el dispositivo eth0:1

-- Agregar una ruta a la otra red usando la máquina gateway (necsitaremos conocer la configuración
de eth0 o eth0:1 de este gateway dependiendo en qué red nos encontremos)

Av. Del Parque Sur 699 Of. 206 – San Borja 42


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Redes TCP/IP

1. Números binarios

Números binarios

10 = 21 100 = 22 101 = 22 + 1 111 = 100 + 010 + 001

Esto significa que un número binario puede ser fácilmente convertido a notación decimal como sigue:

10000000 = 27 = 128
01000000 = 26 = 64
00100000 = 25 = 32
00010000 = 24 = 16
00001000 = 23 = 8
00000100 = 22 = 4
00000010 = 21 = 2
00000001 = 20 = 1

La dirección IP:

La dirección IP asignada a una interfaz de red consta de 4 bytes (4 veces 8 bits) separados por puntos; esto
para el caso de IPv4.

Decimal Binario
192.168.1.1 11000000.10101000.00000001.00000001

2. Direcciones de red, broadcast y máscara de red


Un número IP contiene información sobre la dirección del host (o interfaz) y la dirección de red.

La máscara de red:

Una máscara de red es usada para definir qué parte de la dirección IP es usada para la red, es también
llamada máscara de subred.

Una máscara de 16 bits y 17 bits:


255.255.0.0 16-bit 11111111.11111111.00000000.0
255.255.128.0 17-bit 11111111.11111111.10000000.0

La dirección de broadcast es usualmente dada en notación decimal.

Ejemplo: Con una máscara de red de 16-bit las siguientes direcciones IP están en la misma red:

00100000 . 10000000 . 00000001 . 00000001


00100000 . 10000000 . 00000000 . 00000011

Av. Del Parque Sur 699 Of. 206 – San Borja 43


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Esto significa que cualquier bit que sea cambiado dentro de la caja (8+8=16 bits) cambiará la dirección de
red y las interfaces necesitarán un gateway para conectarse una a la otra.

De la misma manera, cualquier bit que sea cambiado fuera de la caja cambiará la dirección de la interfaz de
red sin cambiarse de red.

Por ejemplo con una máscara de 24-bit las dos direcciones de IP de abajo estarían en diferentes redes:

00100000 . 10000000 . 00000001 . 00000001


00100000 . 10000000 . 00000000 . 00000011

La dirección de red:

Cada red tiene un número que es necesitado cuando configuramos el enrutamiento del sistema. El número
de red es una porción de la dirección IP. La porción de la dirección del host es reemplazado con ceros.

Típica dirección de red: 192.168.1.0

Dirección de broadcast:

La dirección de broadcast de una máquina es un rango de hosts/interfaces que pueden ser accedidos en la
misma red. Por ejemplo un host con una dirección de broadcast 10.1.255.255 podrá acceder a cualquier
máquina con una dirección IP de la forma 10.1.x.x.

Típica dirección de broadcast: 192.168.1.255

Operaciones lógicas simples pueden ser aplicadas a los números de broadcast, red y máscara.

Para obtener la dirección de red a partir de una dirección IP simplemente aplicar la operación AND entre la
IP y la máscara.

Network Address = IP AND Netmask

Similarmente la dirección de broadcast se obtiene aplicando la operación OR entre la dirección de red y la


negación de la máscara.

Broadcast Address = Network OR not[Netmask]

Aquí AND y OR son operaciones lógicas en la forma binaria de estas direcciones.

Ejemplo:

Tomemos la IP 192.168.3.5 con una máscara 255.255.255.0. Podemos realizar las siguientes operaciones:

Dirección de red = IP AND MASK

11000000. 10101000.00000011.00000101 (192.168.3.5)


AND
11111111.11111111.11111111.00000000 (255.255.255.000)
_____________________________________________

11000000.10101000.00000011.00000000 (192.168.3.0)

Av. Del Parque Sur 699 Of. 206 – San Borja 44


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Dirección de broadcast = IP OR NOT-MASK

11000000. 10101000.00000011.00000101 (192.168.3.5)


OR
00000000.00000000.00000000.11111111 (000.000.000.255)
_____________________________________________
11000000.10101000.00000011.11111111 (192.168.3.255)

Está claro del ejemplo de arriba que la dirección IP junto con la máscara de red es suficiente para obtener
todo el resto de información relativo a la red y el host.

3. Clases de red
● Direcciones IP reservadas

Para redes privadas un cierto número de direcciones IP son designadas las cuales jamás son usadas en
Internet. Estas direcciones IP son típicamente usadas para redes LAN. La siguiente tabla muestra los tipos
de clases de red privados/reservados.

Tabla1: Direcciones reservadas


1 Clase A 10.x.x.x
16 Clase B 172.16.x.x -- 172.31.x.x
255 Clase C 192.168.0.x

● Clases de IP

Class A: Dirección de red de 8-bit y dirección de host de 24-bit.


El primer byte del número IP está reservado para las direcciones de red. De este modo la máscara por
defecto sería 255.0.0.0. Los 3 bytes restantes están disponibles para designar a una dirección de host.
Dado que 255.255.255 y 0.0.0 son direcciones inválidas de hosts existe una combinación de 224 – 2 = 16
777 214 hosts posibles.
Los números IP tienen el primer byte que varía en un rango de 1 a 127. Esto corresponde a un rango binario
de 00000001 a 01111111. Los dos primeros bits de direcciones de clase A pueden ser asignados a “00” or
“01”.

Class B: Dirección de red de 16-bit y dirección de host de 16-bit.


Los dos primeros bytes del número IP son reservados para las direcciones de red. De este modo la máscara
por defecto sería 255.255.0.0. Existen 216 – 2 = 65 534 hosts posibles.
El primer byte varía en un rango de 128 a 191. Nótese que el rango binario del primer byte es desde
10000000 a 10111111. Esto implica que los dos primeros bits de una dirección de clase B son siempre “10”.

Class C: Dirección de red de 24-bit y dirección de host de 8-bit


Los tres primeros bytes son reservados para las direcciones de red. La máscara por defecto es
255.255.255.0. Existen 28 – 2 = 254 hosts posibles.
El primer byte varía en un rango de 192 a 223. Esto corresponde a un rango binario de 11000000 a
11011111. De esto podemos concluir que los dos primeros bits de una dirección de clase C son siempre
“11”.

Av. Del Parque Sur 699 Of. 206 – San Borja 45


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
4. Subredes
El subnetting ocurre cuando los bits reservados para hosts son usados para la red. Esto es determinado por
la máscara y resulta en una segmentación de redes.

Por ejemplo una máscara regular de clase A 255.0.0.0 puede ser alterada para permitir que el 1er. bit del
segundo byte sea parte de la red. Esto resulta en una dirección de red de 9-bit y número IP de host de 23-bit.

La máscara binaria luciría como sigue:

11111111.10000000.00000000.00000000 or 255.128.0.0

Otra forma para indicar que una dirección de red de 9-bit está en uso es mostrar el número IP 10.1.8.1 como
10.1.8.1/9

Tomaremos el ejemplo de una dirección de clase C 192.168.1.0. Investigamos una red de 25-bit y luego una
de 26-bit.

Red de 25-bit

Máscara: 11111111.11111111.11111111.10000000 or 255.255.255.128

Dado que Red = IP AND Máscara,notamos a partir de la máscara que dos direcciones de red pueden ser
formadas dependiendo del rango de hosts:

1. Las direcciones de hosts en el rango 192.168.1.0xxxxxxx resultan en una red 192.168.1.0. Decimos que
el número de red es 0.
2. Las direcciones de hosts en el rango 192.168.1.1xxxxxxx resultan en una red 192.168.1.128. Decimos
que el número de red es 128.

Tabla2: En ambos casos la sustitución de x por ceros o unos tienen un significado especial

Dirección de red Sustitución con 1s Sustitución con 0s


0 Broadcast: 127 Red: 0
128 Broadcast: 255 Red: 128

Dado que la dirección de host es de una longitud de 7-bit y excluimos 2 valores (todos 1 y todos cero)
entonces tenemos 27 – 2 = 126 hosts en cada red con un total de 252 hosts.

Nótese ue si la máscara de subred por defecto 255.255.255.0 es usada tenemos 254 direcciones de host
disponibles. En el ejemplo de arriba 192.168.1.127 y 192.168.1.128 tienen un significado especial y ese es el
por qué solamente 252 direcciones de host pueden ser usadas.

Red de 26-bit

Máscara: 11111111.11111111.11111111.11000000 or 255.255.255.192

Aquí de nuevo dependiendo de la dirección de host 4 direcciones de red diferentes pueden ser determinadas
con la regla AND.

1. Direcciones de host en el rango 192.168.1.00xxxxxx resultan en una red 192.168.1.0


2. Direcciones de host en el rango 192.168.1.01xxxxxx resultan en una red 192.168.1.64
3. Direcciones de host en el rango 192.168.1.10xxxxxx resultan en una red 192.168.1.128
4. Direcciones de host en el rango 192.168.1.11xxxxxx resultan en una red 192.168.1.192

Sustituyendo las x con 1s en los números de arriba nos da la dirección de broadcast correspondiente:

Av. Del Parque Sur 699 Of. 206 – San Borja 46


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
192.168.1.63, 192.168.1.127, 192.168.1.191, 192.168.1.255

Cada subred tiene 26 – 2 = 62 hosts posibles y un total de 248.

5. La Pila TCP/IP
TCP/IP es una pila de protocolos usados en Internet. Se dice que el nombre describe varios protocolos que
son necesitados para poder transportar datos a través de la red. Los dos principales protocolos son TCP
Transmission Control Protocol e IP Internet Protocol.

Para simplificar, IP se encarga del manejo de paquetes o datagramas únicamente (dirección de destino,
tamaño, ...) mientras que TCP se ocupa de la conexión entre dos hosts. La idea es que los protocolos se
fíen unos de otros, cada uno especializándose en sus tareas. En este contexto uno se refiere simplemente a
la pila TCP/IP.

Los protocolos intervienen por lo tanto en varias capas del proceso de la comunicación en red.

Tabla1: El modelo TCP/IP de 4 capas:

Aplicación Nivel de aplicación (FTP, SMTP, SNMP)


Transporte Maneja hosts (TCP, UDP)
Internet Enrutamiento (IP, ICMP, IGMP, ARP)
Acceso a la red Interfaces de red, Ejm. Ethernet, Token Ring …

● Descripción de protocolos
Internet Protocol; el protocolo IP es el transporte para datos TCP, UDP, y ICMP. IP
IP provee un servicio no orientado a conexión poco fiable, permitiendo que toda la
integridad sea controlada por uno de los protocolos de capas superiores, Ejm. TCP, o
algunos dispositivos específicos de aplicación. No se garantiza que un datagrama
alcance el host destino usando solamente protocolo IP. El protocolo IP maneja el
direccionamiento y enrutamiento entre redes. IP es el servicio de entrega de
datagramas.

Av. Del Parque Sur 699 Of. 206 – San Borja 47


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
TCP Transmission Control Protocol; el protocolo TCP provee un servicio orientado a
conexión confiable a las aplicaciones que lo usan. TCP está orientado a la conexión y
chequea en cada host el orden en que los paquetes se envían/reciben y también
verifica que todos los paquetes son transmitidos. Aplicaciones tales como telnet o ftp
usan el protocolo TCP y no necesitan preocuparse sobre pérdida de datos, etc ...
UDP User Datagram Protocol; provee acceso directo al protocolo IP para programas de
aplicación pero a diferencia de TCP no está orientado a la conexión y no es fiable.
Esto provee menos sobrecarga para aplicaciones concentradas en la velocidad. Si se
requiere algún tipo de numeración de paquetes esto debe ser provisto por la
aplicación.
ICMP Internet Control Message Protocol; es usado por enrutadores y hosts para reportar el
estado de la red. Usa datagramas IP y no está orientado a la conexión.
PPP Point to Point Protocol; establece una conexión TCP/IP sobre líneas telefónicas.
Puede también ser usado dentro de conexiones encriptadas tales como pptp.

6. Servicios y Puertos TCP/IP


La lista de servicios conocidos y sus puertos asignados se encuentra generalmente en /etc/services. La
lista oficial de servicios y puertos asociados es manejado por IANA (Internet Assigned Numbers Authority).

Dado que el campo del numero de puerto es un digito de 16-bit, existen 65535 numeros disponibles.
Numeros desde 1 hasta 1023 son puertos privilegiados y son reservados para servicios que se ejecuten por
el usuario root. La mayoria de aplicaciones conocidas utilizan algunos de estos puertos.

Veremos la salida de un escaneo de puertos (portscans). Tener cuidado de que escaneo de puertos no
autorizados es ilegal a pesar de ello muchas personal lo utilizan.

Aqui una salida de un escaneo de puertos:

Port State Service


21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
70/tcp open gopher
79/tcp open finger
80/tcp open http

Esto muestra los puertos abiertos, estos puertos estan siendo usados por alguna aplicacion.

Av. Del Parque Sur 699 Of. 206 – San Borja 48


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Los puertos principales de /etc/services :

ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
domain 53/tcp
domain 53/udp
http 80/tcp # www is used by some broken
www 80/tcp # progs, http is more correct
pop-2 109/tcp # PostOffice V.2
pop-3 110/tcp # PostOffice V.3
sunrpc 111/tcp
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/tcp # Network Time Protocol
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
imap 143/tcp # imap network mail protocol
NeWS 144/tcp news # Window System
snmp 161/udp
snmp-trap 162/udp

7. Ejercicios
Registrando un servicio con xinetd

1. Escribe un script en bash que muestre con el comando echo “Welcome” a la salida stdout. Grabarlo en
/usr/sbin/hi
2. En /etc/xinetd.d crear un nuevo archivo llamdo fudge con lo siguiente:
service fudge
{
socket_type = stream
server =/usr/sbin/hi
user = root
wait = no
disable = no
}
3. Agregar un servicio llamado fudge en /etc/services que use el puerto 60000.
4. Reiniciar xinetd y ejecutar el comando telnet al puerto 60000
5. Te han asignado un rango de Ips en la red 83.10.11.0/27.
Cuantas redes tienen los mismos 4 primeros bytes que tu?
Cuantos hosts existen en tu red?
Cual es la direccion broadcast para esta primera red?

Av. Del Parque Sur 699 Of. 206 – San Borja 49


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Servicios de Red

Servicios de red pueden ser ejecutados como aplicaciones separadas(standalone), las cuales atienden
conexiones y manejan clientes directamente o pueden depender de un demonio de red inetd (antiguo) o
xinetd.

1. El demonio inetd (antiguo)

El demonio es iniciado en el momento del arranque y atiende a conexiones en puertos especificos. Esto
permite al servidor ejecutar un demonio de red especifico solo cuando es necesitado.

Por ejemplo, el servicio telnet tiene un demonio /usr/sbin/in.telnetd el cual maneja las sesiones telnet . En
vez de ejecutar este demonio todo el tiempo inetd es instruido a escuchar en el puerto 23. Estas
instrucciones estan fijadas en /etc/inetd.conf.

Fig1: El demonio inetd

Los campos de /etc/inetd.conf contienen lo siguiente:

service-name nombre valido de /etc/services


socket type stream para TCP y dgram para UDP
protocol protocolo valido para /etc/protocols
flag nowait si es multihilo y wait si no lo es
user/group ejecutar aplicaciones como user o group.
program usualmente tcpd
argument el nombre del programa a ejecutarse para este servicio

Ejemplo:

pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

Aviso: El archivo /etc/services es usado para crear la correspondencia entre el nombre del servicio y el
numero de puertos del socket. Los campos en el archivo services son los siguientes:

service-name port/protocol [aliases]

Av. Del Parque Sur 699 Of. 206 – San Borja 50


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

2. El Demonio xinetd
Esta es la version mas reciente de inetd. El demonio tcpd ya no se encuentra usado, en vez de este ultimo
el demonio xinetd lo hace todo. La configuracion es realizada a traves del archivo /etc/xinetd.conf o
editando los archivos individuales en /etc/xinetd.d/ que corresponden a los servicios que estan siendo
monitoreados por xinetd. Es posible migrar desde el antiguo archivo de configuracion inetd a los archivos
de configuracion del moderno xinetd.

Estructura de un archivo de servicio en xinetd.d


Service-name {
socket_type = stream para TCP y dgram para UDP
protocol = protocolo valido de /etc/protocols
wait = <si o no>
user= el usuario con que la aplicacion se ejecuta
group= el grupo con que la aplicacion se ejecuta
server= el nombre del programa que ejecutara este servicio
}

3. TCP wrappers
Si los programas han sido compilados con libwrap entonces estos pueden ser listados en /etc/hosts.allow y
/etc/hosts.deny. La libreria libwrap verificara estas lineas para buscar coincidencias con los hosts.

Formato por defecto para /etc/hosts.{allow,deny} :

DAEMON : hosts [EXCEPT hosts ] [: spawn command]

Se puede utilizar estos archivos para reportar servicios no autorizados. Esto puede ayudar como un sistema
de alerta en primera instancia. Aqui algunos ejemplos.

Obteniendo informacion acerca de un host:

• /etc/hosts.allow
in.telnetd: LOCAL, .my.domain

• /etc/hosts.deny
in.telnetd: ALL : spawn (/usr/sbin/safe_finger –l @%h | mail root) &

Redireccionar a un servicio falso o “honey pot” :

• /etc/hosts.allow
in.telnetd: ALL : twist /dtk/Telnetd.pl

El ultimo ejemplo viene de dtk (Deception Tool Kit) que puede ser descargado desde
http://all.net/dtk/download.html

Av. Del Parque Sur 699 Of. 206 – San Borja 51


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

4. Configurando un NFS

• Configuracion de cliente

Para un cliente linux para montar sistema de archivos remoto

1. el archivo nfs debe ser soportado por el kernel


2. el demonio portmapper debe estarse ejecutando.

El portmapper es inicializado por el script /etc/rc.d/init.d/portmap. La utilidad mount montara el sistema


de archivos. Una entrada tipica en /etc/fstab podria ser:

nfs-server:/shared/dir /mnt/nfs nfs defaults 0 0

• Configuracion del servidor

Un servidor NFS necesita portmap para que se ejecute antes de empezar el servidor nfs. El servidor nfs
deberia ser inicializado o parado con el script /etc/rc.d/init.d/nfs.
El archivo de configuracion principal es /etc/exports.

Archivo de ejemplo /etc/exports:


/usr/local/docs *.local.org(rw, no_root_squash) *(ro)

El directorio /usr/local/docs es exportado a todos los hosts como directorio de solo lectura, y lectura-escritura
a todos los hosts en el dominio .local.org
La opcion por defecto root_squash la cual evita que el usuario root (uid = 0) en el cliente tenga acceso al
recurso compartido en el servidor puede ser cambiado con la opcion no_root_squash .

 En el archivo /etc/exports hace referencia a los hosts que coincidan con *.machine.com donde el archivo
/etc/hosts.allow deniega los hosts que coincidan con .machine.com
01111000
Si el archivo /etc/exports ha sido cambios entonces la utilidad exportfs debe ser ejecutada. Si los directorios
existentes en /etc/exportfs son modificados entonces es necesario que desmontemos todos los recursos
compartidos por nfs antes de remontar todo. Directorios individuales pueden ser montados o desmontados
con exportfs.

Importa y exportar todos los directorios en /etc/exports:

exportfs -ua ; exportfs -a

5. SMB y NMB
Maquinas con Linux pueden pueden acceder y proveer recursos compartidos de Windows (directorios e
impresoras). El protocolo usado para esto es el MS Windows Server Message Block SMB. Samba es la
herramienta mas comun de linux que provee software cliente y servidor.

Av. Del Parque Sur 699 Of. 206 – San Borja 52


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Desde la linea de comandos

La utilidad smbclient es usada para listar recursos compartidos. Directorios remotos son tipicamente
montados con smbmount, a traves de ‘mount –t smbfs’ puede tambien hacer lo mismo.

Ejemplos:

Enviar un mensaje pop up a una computadora win98desk

smbclient -M win98desk

Montar el directorio compartido de la computadora winserv

smbmount //winserver/shared /mnt/winserver/shared

El servidor Samba esta configurado con el archivo /etc/smb.conf. El servidor es parado y empezado con el
script /etc/rc.d/init.d/smb. Notar que smb tambien inicia el servicio NMB. Este es el NetBIOS Message
Block el cual habilita la resolucion de nombres en entornos Windows.

Figura1: Navegacion por los recursos SMB a traves del Nautilus:

Entradas principales en /etc/smb.conf:


[global]
workgroup = LINUXIT
os level = 2
kernel oplocks = No

Av. Del Parque Sur 699 Of. 206 – San Borja 53


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
security = user
encrypt passwords = Yes
guest account = nobody
map to guest = Bad User
[homes]
comment = Home Directories
read only = No
create mask = 0640
directory mask = 0750
browseable = No
[printers]
comment = All Printers
path = /var/tmp
create mask = 0600
printable = Yes
browseable = No

Configuracion a traves de SWAT y Webmin

Si instalas el paquete swat entonces podras administrar el servidor samba via web conectandose por http al
puerto 901.

Otra herramienta de administracion popular es webmin. Esta puede se descargada desde


www.webmin.com

AVISO
La configuracion /etc/samba/smb.conf es una buena fuente de documentacion. Todas las
opciones son explicadas y pueden ser activadas borrando el caracter de comentario `;`
Tambien leer la pagina man smb.conf(5)

6. Servicios DNS
Los Clientes

Cuando un programa necesita que se resuelva el nombre de un host este usa un mecanismo llamado
resolvedor (resolver). El resolvedor primero consulta el archivo /etc/nsswitch (antes /etc/host.conf) y
determina cual metodo deberia ser usado para resolver los nombres de host (archivos locales, servidor de
nombres, NIS o servidor LDAP)

El archivo /etc/host.conf (o /etc/nsswitch.conf)


Estos archivos son escaneados por el resolver. Estos indican cuales archivos, servidores dns, base de datos
ldap o servidores nis deben ser consultados.

Ejemplo (/etc/nsswitch):

hosts: files dns nis


networks: files

La primera linea indica los archivos (aqui /etc/hosts) que deberian ser consultados primero y luego el
servidor DNS si este falla. La segunda linea indica usar el archivo /etc/network para informacion de la red.

Con un numero pequeño de computadoras en red es posible convertir numeros IP decimales en nombres
usando el archivo /etc/hosts. Los campos son los siguientes:

Av. Del Parque Sur 699 Of. 206 – San Borja 54


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
IP machine machine.domain alias

Ejemplo del archivo /etc/hosts :

192.168.1.233 io io.my.domain
61.20.187.42 callisto callisto.physics.edu

El archivo /etc/resolv.conf

Si el resolvedor necesita usar un servidor de nombres de dominio (DNS) entonces este consultara el archivo
/etc/resolv.conf para una lista de servidores disponibles para hacer consultas.

Estructura jerarquicaHierarchical structure

Servidores de nombre tienen una estructura jerarquica. Dependiendo en el lugar donde se encuentre en el
fully qualified domain name (FQDM) un dominio es llamado de primer nivel (top-level), segundo nivel o tercer
nivel.

Ejemplo de dominio de primer nivel

com Organizaciones comerciales


edu Instituciones educativas de los Estados Unidos
gov Instituciones gubernamentales de los Estados Unidos
mil Instituciones militares de los Estados Unidos
net Gateways y proveedores de redes
org Sites no comerciales
uk Sites de UK

Tipos de Servidores DNS

Los dominios pueden ser divididos en subdominios. Esto limita la cantidad de informacion necesitada para
administrar un dominio. Las Zonas tienen un servidor de nombres de dominio maestro (tambien llamado
DNS primario) y uno o varios servidores de nombres de dominio esclavo (tambien llamado secundario).
La administracion de un servidor de nombres consiste en actualizar la informacion acerca de una zona en
particular. Los servidores maestros (master) se les llama autoritarios.

Archivos de configuracion para DNS

En antiguas versiones de BIND (antes de la version 8) el archivo de configuracion era /etc/named.boot. Con
la version 8 de BIND el archivo /etc/named.conf lo reemplazo. Una puede usar la utilidad named-
bootconf.pl para convertir antiguos archivos de configuracion.

El archivo de configuracion /etc/named.boot :

directory /var/named
cache . named.ca
primary myco.org named.myco
primary 0.0.127.in-addr.arp named.local
primary 1.168.192.in-addr.arp named.rev

Av. Del Parque Sur 699 Of. 206 – San Borja 55


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Las primeras lineas define el directorio base a usarse. El archivo name.ca contiene una lista de direcciones
IP de DNS para consulta de direcciones externas. La tercera linea es opcional y contiene anotaciones para la
red local . Las siguientes entradas son para resoluciones inversas.

En /etc/named.conf:

cache is replaced by hint


secondary is replaced by slave
primary is replaced by master.

Aplicando estos cambios a los archivos de configuracion de BIND4 generaremos los mismo para BIND8 y
BIND9 como esta a continuacion.

El archivo de configuracion /etc/named.conf :

options {
directory “/var/named”;
};

zone “.” {
type hint;
file “named.ca”;
};

zone “myco.org” {
type master;
file “named.myco”;
};

zone “1.168.192.in-addr.arp” {
type master;
file “named.rev”;
};

zone “0.0.127.in-addr.arpa” {
type master;
file “named.local”;
};

Archivos de zona DNS

En este ejemplo el servidor esta configurado como un servidor caching-only.

Ejemplo de archivo de zona named.local :

@ IN SOA localhost. root.localhost. (


2001022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.

Este es un archivo de zona muy simple pero nos da la suficiente informacion para entender el mecanismo
basico de un servidor de nombres.

La entrada @ significa que el archivo resolvera a la zona declarada en /etc/named.conf. Esto permite
cualquier archivo de zona ser usado como plantilla de zonas creadas posteriormente (ver los ejercicios).

Av. Del Parque Sur 699 Of. 206 – San Borja 56


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Tabla1: Tipos de registros mas comunes:

NS Especifica el servidor de nombres de zonas primarias


PTR Mapeo inverso de numeros IP a nombres de hosts
MX Registro de intercambio de correos
A Asocia una direccion IP a un nombre de hosts
CNAME Asocia un alias al nombre principal de host

Table2: Zone parameters

@ IN SOA Inicio de autoridad (Start Of Authority). Identifica la zona seguida por las
opciones encerradas por parecentesis.
serial Es manualmente incrementado cuando la data es cambiada. Servidores
secundarios consultan al numero serial del servidor maestro. Si esta ha
cambiadom la zona entera es descargada
refresh Tiempo en segundos antes de que el servidor secundario deberia hacer
una consulta en el registro SOA del dominio primario. Este deberia
realizarse una vez al dia.
retry Intervalo de tiempo en segundos antes de intentar una transferencia de
una nueva zona si la descarga anterior ha fallado.
expire Tiempo despues del cual un servidor secundario desecha toda la data de
la zona si contacta al servidor primario. Deberia ser una vez a la semana
como minimo
minimum El tiempo minimo de la data en memoria. Por defecto es un dia (86400
segundos) pero deberia ser mas largo en redes estables.

Av. Del Parque Sur 699 Of. 206 – San Borja 57


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

7. Configuracion principal de Sendmail


Sendmail es el mas popular mail transfer agent (MTA) en la Internet. Este utiliza el protocolo Simple Mail
Transfer Protocol (SMTP) y corre un demonio escuchando conexiones por el puerto 25.

El script sendmail el cual inicia y para el demonio sendmail esta usualmente localizado en el directorio
/etc/rc.d/init.d/.

El archivo de configuracion principal es /etc/mail/sendmail.cf (o /etc/sendmail.cf). Aca se puede


especificar el nombre del servidor asi como tambien los nombres de los hosts los cual el mail relay sera
permitido.

El archivo /etc/aliases contiene los dos siguientes campos:

alias: user

Cuando se realizan cambios en el archivo /etc/aliases el comando newaliases debe ejecutarse para
reconstruir la base de datos /etc/aliases.db.

Cuando el correo es aceptado por el servidor este es concatenado en un archivo simple con el nombre de
usuario. Estos archivos son almacenados en /var/spool/mail/. Dependiendo del MTA, un usuario puede
almacenar tambien estos mensajes en su directorio home o descargarlo en otra maquina.

Si es el servidor esta haciendo relay, o si la red es lenta y muchos mensajes estan siendo enviandos, el
correo es almacenado en la cola de correo /var/spool/mqueue. Se puede consultar la cola con la utilidad
mailq o sendmail –bp. Un administrador puede refrescar la cola del servidor con sendmail –q.
Finalmente para registrar un nombre de dominio como un direccion de correo valida, un registro MX se
necesita para ser agregado a la base de datos del DNS.

Por ejemplo si mail.company.com es un servidor de correo, entonces para que pueda aceptar correos
como joe@company.com se deberia hacer la siguiente configuracion:

1. Add company.com to /etc/mail/local-host-names


2. company.com MX 10 mail.company.com in a DNS zone file

8. El servidor Apache

Archivos de configuracion

El archivo /etc/httpd/conf/httpd.conf contiene todas las configuraciones por hacer.


Versiones antiguas de apache tienen dos archivos extras, uno llamado access.conf donde los directorios
restringidos son declarados, y otro archivo llamado srm.conf especificando el directorio raiz del servidor.

Configuraciones mas importantes:

ServerType standalone/inetd

ServerRoot “/etc/httpd”

Av. Del Parque Sur 699 Of. 206 – San Borja 58


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
DocumentRoot “/var/www/html”

<Directory “/var/www/cgi-bin”>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

<VirtualHost 122.234.32.12>
DocumentRoot “/www/docs/server1”
ServerName virtual.mydomain.org
</VirtualHost>

Ejecucion de Apache

Para iniciar y parar el servicio se usa el script /etc/rc.d/init.d/httpd. En un servidor en produccion es


preferible usar apachectl principalmente con la opcion graceful el cual reinicia el servicio solo cuando las
conexiones hayan sido correctamente procesadas.

Los archivos de reporte principales estan en /var/log/httpd/. Es bastante util por razones de seguridad
revisar constantemente los archivos error_log y access_log.

Av. Del Parque Sur 699 Of. 206 – San Borja 59


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

9. Ejercicios

Configurando un servidor DNS maestro

Como ejercicio instalaremos el paquete de BIND9 bind9-9.1.3-252.i386.rpm y configuraremos un dominio


llamado gogo.com.

1. Realizar las siguientes alteraciones en /etc/named.conf:


Copiar/Pegar el siguiente parrafo y alterar como se encuentra a continuacion:

zone "localhost" in { se vuelve zone "gogo.com" in {


type master; type master;
file "localhost.zone"; file "gogo.zone";
} }

zone "0.0.127.in-addr.arpa" in { se vuelve zone "2.168.192.in-addr.arpa" in {


type master; type master;
file "127.0.0.zone"; file "192.168.2.zone";
}; };

2. En /var/named:

cp 127.0.0.zone 192.168.2.zone
cp local.zone gogo.zone

3. Cambiar apropiadamente los cambios en el nuevo archivo de zona. Agregar el host llamado harissa.

4. Agregar la linea “nameserver 127.0.0.1” en /etc/resolv.conf.

5. Usar host para resolver harissa.gogo.com

Administracion de Apache

Configuraciones Basicas en /etc/httpd/conf/httpd.conf

1. Cambiar la directiva de puerto Port de 80 a 8080.

2. Verificar si apache esta respondiendo con telnet localhost 8080. Deberias obtener:

Trying 127.0.0.1...
Connected to localhost.linuxit.org.
Escape character is '^]'.

Luego tipear ‘GET /’ para descargar el archivo index.

3. Fijar “StartServer” a 15. Reiniciar el httpd y revisar que 15 procesos hayan empezado (en vez de los 8
por defecto )

servidor virtual basado en IP

Av. Del Parque Sur 699 Of. 206 – San Borja 60


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Tu tarjeta de red debe estar con un alias (otra IP mas)

ifconfig eth0:0 new-IP

Agregar el siguiente parrafo a /etc/httpd/conf/httpd.conf:

<VirtualHost new-IP>
DocumentRoot /var/www/html/virtual
ServerName www1
</VirtualHost>

Configurando un directorio SMB compartido

En la mayoria de casos no se necesitara agregar usuarios smb al sistema para hacer esto. Simplemente
editar smb.conf y agregar lo siguiente:

[public]
comment = Example Shared Directory
path = /home/samba
guest ok = yes
writeable = yes

Configurando un impresora compartida:

[global]
--- snip ---
printcap name = /etc/printcap
load printers = yes

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = yes
writable = no
printable = yes

Av. Del Parque Sur 699 Of. 206 – San Borja 61


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Bash Scripting

1. El entorno bash

Variables

Cuando tipeas un comando en la consola el shell bash usara la variable PATH para encontrar cual
ejecutable en el sistema quieres ejecutar. Puedes revisar el valor de la variable usando el comando echo:

echo $PATH
/usr/bin:/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/sbin/:/usr/local/sbin/

De hecho muchas variables son necesitadas por el shell para ser acomodadas por cada entorno de usuario.
Por ejemplo PWD, HOME, TERM y DISPLAY son algunas variables.

Para inicializar y declarar una variable la sintaxis es la siguiente:

VARIABLE=VALUE

Recuerda no poner ningun espacio alrededor del signo ‘=’. Una vez que una variable es declarada e
inicializada esta puede ser referenciada usando el simbolo de dolar al frente como se ve a continuacion:

echo $VARIABLE

Cuando una sesion de shell es empezada un numero de archivos de configuracion son leidos y la mayoria
de variables son fijadas.

Para liberar una variable de su valor actual usar unset.

Archivos de configuracion

Se puede distinguir entre archivos de configuracion los cuales se cargan al momento del logueo y aquellos
los cuales se cargan con cada sesion nueva de bash.

Aarchivos de configuracion de logueo:

Aarchivos que se cargan en el momento del logueo son /etc/profile y ~/.bash_profile (el bash revisa
archivos alternativos tambien como ~/.profile).
El siguiente bash carga los archivos de control de ejecucion (runtime) ~/.bashrc y (si este existe)
/etc/bashrc.

Los archivos bashrc:

Av. Del Parque Sur 699 Of. 206 – San Borja 62


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Estos archivos son cargados cada vez que una sesion de shell es lanzada (como un nuevo xterm). Los
archivos son /etc/bashrc y ~/.bashrc.

Alias y funciones son grabados es ~/.bashrc

Sintaxis de funciones:

function-name ()
{
command1;
command2;
}

Se puede testear cuales archivos estan siendo cargados agregando una linea echo Profile en
/etc/profile, y luego tipear:

bash Ningun profile es cargado, no deberias ver nada


bash -login Esto fuerza al bash a actuar como un bash de logueo, la palabra
Profile deberia mostrarlos.

Los siguientes comandos controlan la manera en que el bash se inicia:

bash -norc
bash -noprofile

Notar que cualquier sesion de bash puede heredar las variables globales del bash anterior definidas en
/etc/profile y ~/.bash_profile.

2. Principios del Scripting


El archivo script

Un script de shell es una lista de instrucciones grabadas en un archivo plano. Solo 2 cosas son necesarias.

1. La primera linea del script debe ser #!/bin/bash (para un script de bash)
2. El archivo debe ser de lectura y ejecucion (con permisos 755 por ejemplo)

Si estas lineas no estan presentes es posible ejecutar el script tipeando

bash program-name

Pasando variables al script

Variable insertadas desde la linea de comandos son referenciadas dentro del script como $1 para el primer
argumento, $2 para el segundo , etc …

Script de ejemplo, mycat:

#!/bin/bash
cat $1

Este script esta esperando un argumento, un archivo, y mostrara el contenido del archivo usando cat. Para
ejecutar este script en el archivo lilo.conf file, deberias ejecutar:

./mycat /etc/lilo.conf

Av. Del Parque Sur 699 Of. 206 – San Borja 63


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Otra manera de pasar valores al script es dejar que el script te pidar interactivamente ingresar los datos.
Esto se logra usando el comando read. El nombre por default de la variable read es REPLY. Aqui se
encuentra el script modificado:

Ingreso interactivo de varibles:

#!/bin/bash
echo -n "Which file shall I display ?"
read
cat $REPLY

read -p “File to display: “ FILENAME


cat $FILENAME

Variables Especiales

Variables especiales pueden ser solo referenciadas y son automaticamente fijadas por el bash. Estas son
las variables especiales mas comunes que puedes encontrar:

$* Lista todas las variables ingresadas en la linea de comandos


$# Numero de argumentos ingresados desde la linea de comandos
$0 El nombre del script
$! PID del comando en segundo plano mas reciente
$$ PID del actual shelll
$? Codigo de salida de ultimo comando

Para parametros posicionales $1, $2 etc … existe un operador shift el cual renombra cada parametro de
manera ciclica como esta a continuacion.
$2 se vuelve $1
$3 se vuelve $2 … etc
Esto puede ser resumido como $(n+1)  $n

3. Evaluaciones Logicas

Las declaraciones logicas son evaluadas con el comando test o los corchetes [ ]. En ambos casos el
resultado es almacenado en la variable $? como se ve en:
Si la declaracion es verdadera entonces $? is 0
Si la declaracion es falsa entonces $? is not 0

Aqui algunos ejemplos para ilustrar:

usando test usando [ ] significado


test –f /bin/bash [ -f /bin/bash ] test if /bin/bash is a file
test -x /etc/passwd [ -x /bin/passwd ] test if /etc/passwd is executable

Uno puede evaluar mas de una declaracion a la vez usando los operadores logicos || (OR) y && (AND)
desde la linea de comandos. Por ejemplo podrias testear si /bin/bash es un ejecutable y si /etc/inittab
existe:

test -x /bin/bash && test /etc/inittab


[ -e /bin/kbash ] || [ -f /etc/passwd ]

Este es el mismo uso que si usaramos las opciones -o y -a sin el operador test por ejemplo

Av. Del Parque Sur 699 Of. 206 – San Borja 64


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
test -x /bin/bash -a -f /etc/inittab
[ -e /bin/kbash -o -f /etc/passwd ]

4. Bucles

loop si entonces

Sintaxis: if CONDITION ; then


command1
command2
fi

#!/bin/bash

if [ -x /bin/bash ] ; then
echo “The file /bin/bash is executable”

fi

loop si entonces sino

Sintaxis: if CONDITION ; then


command1
command2
else
command3
fi

loop mientras

Sintaxis: while CONDITION is true; do


command
done

Ejemplo: Alinear 10 hashes (#) y luego salir

#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 100 ]; do
echo -n "#"
sleep 1
let COUNTER=COUNTER+1
done

loop hasta que

Sintaxis:

Av. Del Parque Sur 699 Of. 206 – San Borja 65


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
until CONDITION is false; do
command
done

Ejemplo: El mismo del anterior, notar el estilo C incrementa el CONTADOR

#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo -n "#"
sleep 1
let COUNTER-=1
done

loop para (for)

Sintaxis:
for VARIABLE in SET; do
command
done

Ejemplo: Por ejemplo la configuracion 'SET' pueden ser lineas de un archivo

#!/bin/bash
for line in `cat /etc/lilo.conf`; do
IMAGE=$(echo $line | grep image)
if [ “$IMAGE” != “” ]; then
echo Kernel configured to boot: $line
fi
done

5. Esperando salida del usuario


Asumimos que el script esta esperando por una salida del usuario, dependiendo en la respuesta, el resto del
programa ejecutar algo acorde. Existen dos maneras posibles de lograr esto: select y case.

Usando case

Sintaxis:
case $VARIABLE in
CHOICE command ;;
CHOICE command ;;
esac

Usando select

Sintaxis:
select VARIABLE in SET; do
if [ $VARIABLE = CHOICE ]; then
command
fi
if [ $VARIABLE = CHOICE ]; then
command
fi

Av. Del Parque Sur 699 Of. 206 – San Borja 66


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
done

6. Trabajando con Numeros


Mientras los scripts de shell manejan cadenas de caracteres, un pequeño esfuerzo es necesitado para
ejecutar operaciones aritmeticas muy basicas.

Operaciones binarias

Agregando o multiplicando numeros juntos puede ser alcanzado usando el comando expr o el constructor
$(( )) construct.

Ejemplo:

expr 7 + 3; expr 2 \* 10; expr 40 / 4; expr 30 – 11


$((7+3)); $((2*10)); $((40/4)); $((30-11))

Comparando valoresComparing values

Operadores de testeo:
Numeros Cadenas
-lt <
-gt >
-le <=
-ge >=
-eq =
-ne !=

7. Ejercicios
1. En la linea de comandos exportar la variable TEST

export TEST=old

2. Escribir el script

#!/bin/bash
echo old variable: $TEST
export $TEST=new
echo exported variable: $TEST

3. Cual es el valor de $TEST una vez que el script se ha ejecutado?

4. El siguiente script llamado test_shell mostrara el PID del shell que esta interpretando

test_shell
#!/bin/bash
if [ -n $(echo $0 |grep test) ]; then
echo The PID of the interpreter is: $$
else

Av. Del Parque Sur 699 Of. 206 – San Borja 67


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
echo The PID of the interpreter is: $$
fi

5) Fijar los permisos a 755 y probar los siguientes comandos


test_shell
./test_shell
bash test_shell
. test_shell
source test_shell
exec ./test_shell

Seguridad Basica

1. Seguridad Local

La BIOS

Si alguno tiene acceso a discos de rescate o un disco linux que arranque desde un disquet o un CDROM es
extremadamente facil el ganar acceso a cualquier archivo en el sistema. Para prevenir esto deberia fijarse
una contraseña para la BIOS.

LILO

A LILO se le puede dar opciones al momento del arranque. En particular algunas distribuciones de Linux no
preguntan alguna contraseña cuando arranca el sistema en modo monousuario o runlevel 1.

Existen 2 opciones que deberian ser agregadas al /etc/lilo.conf:


la opcion restricted hace que el sistema solicite una contraseña
la opcion password="" , fija la contraseña

Restricted significa que LILO no puede dar ningun parametro sin el "password" especificado en lilo.conf.

boot=/dev/hda
install=/boot/boot.b
prompt
timeout=50
password="password"
restricted

Permisos de archivo

Para prevenir atacantes es recomendable tomar las siguientes recomendaciones.

1) Hacer las herramientas de sistemas vitales inmutables, y archivos de log en modo solo-agregar:

chattr +i /bin/login
chattr +i /bin/ps
chattr +a /var/log/messages

2) Crear directorios /tmp y /home nosuid o noexec:

Av. Del Parque Sur 699 Of. 206 – San Borja 68


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Lines to be changed in /etc/fstab
/tmp /tmp ext2 nosuid 12
/home /home ext2 noexec 12

3) Encontrar todos los archivo en un sistema que no pertenezca a un usuario o a un grupo:

find / -nouser –o –nogroup


find / -perm +4000

Archivos Log

Los archivo logs principales son

/var/log/messages : contiene informacion reportada por el demonio syslogd

/var/log/secure. : contiene informacion de autenticaciones fallidas, insercion de usuarios, etc.

La herramienta last lista todos los logues satisfactorios y reinicios del sistema. La informacion es leida desde
el archivo /var/log/wtmp .

Las herramientas who y w listan todos los usuarios actualmente logueados en el sistema usando el archivo
/var/run/utmp.

Limites de usuario

Cuando el archivo /etc/nologin esta presente (puede estar vacio) este puede prevenir a todos los usuario de
loguearse en el sistema (a excepcion de usuario root). Si el archivo nologin contiene un mensaje este se
mostrara despues de una autenticacion satisfactoria.

En el directorio /etc/security/ existe una coleccion de archivos que permiten a los administradores limitar el
uso del tiempo de CPU por usuario, maximo tamaño de archivos, maximo numero de conexiones, etc

/etc/security/access.conf : deshabilita logueos para grupos de usuarios desde ubicaciones especificas.

/etc/security/limits.conf

El formato de este archivo es


<domain> <type> <item> <value>

domain un nombre de usuario, un nombre de grupo (con @group)


type fuerte o suave
item core - limita el tamaño de archivo principal (KB)
data - maximo tamaño de data (KB)
fsize - maximo tamaño de archivo (KB)
memlock - maximo espacio de direccion bloqueado en memoria (KB)
nofile - maximo numero de archivos abiertos
cpu - maximo tiempo de CPU (MIN)
proc - maximo numero de procesos
as - limite de espacio de direcciones
maxlogins - maximo numero de logueos simultaneos para un usuario
priority - - la prioridad en que se debe ejecutar un proceso
locks - maximo numero de archivos bloqueados que el usuario puede retener

Av. Del Parque Sur 699 Of. 206 – San Borja 69


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

2. Seguridad de la Red
Seguridad de la Red puede ser separada en 2 categorias principales:

Seguridad Basada en Host

Accesos a recursos puede ser garantisado basado en el host que solicita un servicio. Esto es manejado por
tcp_wrappers. La libreria libwrap tambien conocida como tcp_wrappers provee listas de acceso basada en
hosts para una variedad de que servicios de red. Muchos servicios como xinetd, sshd, y portmap, son
compilados contra la libreria libwrap de tal modo que se habilita el soporte tcp_wrapper para estos servicios.

Cuando un cliente se conecta a un servicio con soporte tcp_wrapper, los archivos /etc/hosts.allow y
/etc/hosts.deny son analizados para verificar al host solicitando el servicio. Basado en el resultado el
servicio puede ser concedido o denegado.

Los archivos hosts_access files tienen 2 hasta 3 campos separados por dos puntos. El primer campo es el
nombre del proceso, el segundo es el The first field is the name of the process, the second is the fully
qualified nombre de host o el nombre del cominio con un “punto principal”, direccion IP o una subred con un
“punto arrastrado”. Wildcards como ALL y EXCEPT tambien son aceptadas.

La sintaxis para el archivo /etc/hosts.{allow | deny} es como a continuacion:

service : hosts [EXCEPT] hosts

Ejemplo:

/etc/hosts.deny
ALL: ALL EXCEPT .example.com

/etc/hosts.allow
ALL: LOCAL 192.168.0.
in.ftpd: ALL
sshd: .example.com

Tcp_wrappers pueden ejecutar comandos localmente sobre un host que esta en el archivo host_access
files.

Esto es realizado como comando spawn. Con el uso del caracter % character, las substituciones puede
hacerse para los nombres de host y servicio.

Ejemplo:

/etc/hosts.deny

ALL: ALL : spawn (/bin/echo `date` from %c for %d >> /var/log/tcpwrap.log)

Para mas informacion en el uso de substituciones % ver la pagina man host_access (5) .

Av. Del Parque Sur 699 Of. 206 – San Borja 70


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Securidad Basada en Puertos

Con la funcionalidad de filtrado de paquetes en el kernel de Linux, es posible limitar el acceso a los recursos
creando grupos de reglas con utilidades como ipchains e iptables, las cuales te permiten evaluar la entrada
de paquetes por cualquiera de sus interfaces de red, y determinar que es lo que ocurre con cada paquete.

Existen 3 cadenas en ipchains e iptables, estas son

input, forward and output for ipchains


INPUT, FORWARD, and OUTPUT for iptables.

Por ejemplo, cuando se usa ipchains todos los paquetes que ingresan por una interfaz de red atravesaran la
cadena input. Todos los paquetes no destinados para este host atravesaran la cadena forward.
Todos los paquetes generados dentro del host y paquetes que son remitidos atravesaran la cadena output.

Una regla ipchains e iptables puede especificar la fuente (s), destino (d), protocolo (p), y puerto.

Ejemplo: Todos los paquetes que vienen de 192.168.0.254 seran denegados

ipchains -A input -s 192.168.0.254 -j DENY

Las reglas de Ipchains e iptables pueden ser manipuladas con las siguientes opciones

-A Agregar
-D Borrar
-P Cambiar la politica por defecto para una cadena
-I Insertar
-F Limpiar la o las reglas de una cadena
-N Crear una cadena definida por un usuario
-X Borrar una cadena definida por un usuairo
-L Listar

Ejemplo: La politica por defecto para un iptable puede ser cambiada de ACCEPT a DENY como se ve a
continuacion:

iptables -P INPUT REJECT


iptables -P FORWARD REJECT
iptables -P OUTPUT REJECT

Con el desarrollo del kernel de Linux 2.4 vino el desarrollo del proyecto Netfilter, el cual usa la utilidad
iptables para manejar las reglas del firewall. La mayor diferencia entre iptables e ipchains es de que iptables
tiene soporte para evaluar los paquetes basados en su estado en terminos de otros paquetes que pasan a
traves del kernel. Esta es la evaluacion de paquetes basado en estados (stateful) que hace a iptables basa
packet evaluation that makes iptables far superior.

Abajo hay un ejemplo de como de como un firewall basado en estados puede ser usado, es una forma de
shell script ya que existe un numero de comandos a ser tipeados de manera que se obtiene el resultado
final.

Ejemplo:

Av. Del Parque Sur 699 Of. 206 – San Borja 71


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Un script basico trabajara bien para el usuario final, o cualquiera que no requiera ninguna conexion de
internet, pero igual sigue trabajando como gateway para la red local y permite conexiones de la red LAN a
TODOS los servicios. Aviso: La adicion de la linea resaltada permitira solo conexiones al puerto 80.

#!/bin/sh
# Variables
IPTABLES="/sbin/iptables"
LAN_IFACE="eth0"
INET_IFACE="eth1"
INET_IP="1.2.3.4"
LOCALHOST_IP="127.0.0.1/32"
LAN_IP="192.168.0.1/32"
LAN_BCAST="192.168.0.0/24"

# Setup IP Masquerading

echo "1" > /proc/sys/net/ipv4/ip_forward


$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

# Specify the default policy for the built in chains


$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Specify INPUT Rules


$IPTABLES -A INPUT -i !$INET_IFACE -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -m state --state NEW --dport http -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Specify FORWARD Rules


$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Specify OUTPUT RULES


$IPTABLES -A OUTPUT -p ALL -s $LOCALHOST_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT

Av. Del Parque Sur 699 Of. 206 – San Borja 72


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

3. La Shell Segura SSH

• ● Autenticacion de Host

Con ssh se autentica tanto el host como el usuario. La autenticacion por host es hecha por intercambio de
llaves. Las llaves publicas y privadas de los hosts son generalmente guardadas en /etc/ssh si se esta
usando OpenSSH. Dependiendo del protocolo usado la llave dl host puede ser llamado ssh_host_key para el
Protocolo 1 y ssh_host_rsa_key or ssh_host_dsa_key para el protocolo 2. Cada una de estas llaves tiene
sus llaves publicas correspondientes, por ejemplo ssh_host_key.pub.

Cuando un cliente se conecta a un servidor, el servidor da al host una llave publica en esta etapa el usuario
se le mandara una pantalla como la siguiente:
The authenticity of host 'neptune (10.0.0.8)' can't be established.
RSA key fingerprint is 8f:29:c2:b8:b5:b2:e3:e7:ec:89:80:b3:db:42:07:f4.
Are you sure you want to continue connecting (yes/no)?

Si tu aceptas continuar la conexion la llave publica del servidor sera adicionada al archivo local
$HOME/.ssh/known_hosts.

• ● Autenticacion de Usuarios (usando contraseñas)

Cuando se le pide al usuario contraseña para su cuenta en el servidor remoto y se loguea.

• ● Autenticacion de Usuarios (usando llaves)

La autenticacion de usuarios puede involucrar intercambio de llaves. Para esto el usuario necesitara generar
un par de llaves publicas/privadas. Por ejemplo:

ssh-keygen -t dsa -b 1024

esto generara una llave DSA de 1024. Por defecto estas llaves seran guardadas en $HOME/.ssh y en este
ejemplo son llamadas id_dsa y id_dsa.pub.

Si asumimos que tenemos la id_dsa.pub podemos colocar esta llave en una cuenta remota y evitar tipear
contraseñas para conexiones futuras. Para hacer esto se necesita copiar el contenido del archivo
id_dsa.pub en un archivo llamado authorized_keys2 guardarlo en el directorio remoto $HOME/.ssh .

ALERTA
Todas las llaves privadas es /etc/ssh y ~/.ssh deberian tener permisos 600

● archivos de configuracion sshd

Ejemplos de archivo /etc/ssh/sshd_config :

Av. Del Parque Sur 699 Of. 206 – San Borja 73


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1


#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

● archivos de configuracion ssh

Ejemplo del archivo /etc/ssh/ssh_config o $HOME/.ssh/config :

# Host *
# ForwardX11 no
# RhostsAuthentication no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# CheckHostIP yes
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port 22
# Protocol 2,1
# Cipher 3des

4. Configuracion del Tiempo

La fecha del sistema


La fecha del sistema puede ser cambiado con el comando date. La sintaxis es :

date MMDDhhmmCCYY[.ss]

El Reloj del Hadware

El reloj del hardware puede ser directamente cambiado con la utilidad hwclock. Las opciones principales
son:
-r or –-show muestra el tiempo actual
-w or –-systohc configura el reloj de hardware a un tiempo del sistema actual
-s or –-hctosys configura el tiempo del sistema al tiempo del reloj del hardware actual

Usando NTP
El Tiempo Universal Coordinado (UTC) es un estandar usado para almacenar usado para tener el tiempo
basado e la rotacion de la tierra. A pesar de esto debido a pequeñas irregularidades en la rotacion de la
tierra los segundos necesitan ser insertados en la escala UTC usando relojes atomicos.
Ya que las computadoras no estan equipadas con relojes atomicos la idea es usar un protocolo para
sincronizar los relojes de las computadores a traves de Internet. NTP se refiere a Network Time Protocol y
es uno de estos protocolos.

Av. Del Parque Sur 699 Of. 206 – San Borja 74


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP
Las computadoras que estan directamente actualizados por un reloj atomico son llamados servidores de
tiempo primario y se usan para actualizar un numero largo de servidores de tiempo secundarios. Esto forma
una estructura de arbol similar a la estructura DNS. Los servidores root son el primer nivel o estrato, el
servidor secundario en el segundo y asi sucesivamente.

Configurando un cliente para hacer una consulta a un servidor NTP:


El demonio NTP llamado ntpd es usado para consultas regulares a un servidor de tiempo remoto. Todo lo
necesario es una entrada en el archivo /etc/ntp.conf apuntado a servidor NTP publico o corporativo.
Servidores NTP publicos pueden ser encontrados en internet disponibles para todo.
El protocolo NTP puede estimar la frecuencia de errores del relojs de hardware de una secuencia de
consultas, esta estimacion es escrita en un archivo referenciado con la etiqueta driftfile.

Archivo minimo /etc/ntp.conf


server ntp2.somewhere.com
driftfile /var/lib/ntp/drift

Una vez que el ntpd ha sido inicializado este sera un servidor NTP dando servicios por el puerto 123 usando
UDP.

One off queries:


The ntp package also provides the ntpdate tool which can be use to set the time on the command line:
ntpdate ntp2.somewhere.com

5. Seguridad del kernel


Existen opciones de seguridad disponibles en el kernel de Linux. Estos incluyen principalmente el
mecanismo syn_cookie. El desbordamiento de pila es manejado por un parche de seguridad llamado
openwall o OWL.

● tcp_syncookies

Para habilitar esta opcion simplemente hacer lo siguiente :

[root@nasaspc /proc]#echo "1" > /proc/sys/net/ipv4/tcp_syncookies

Esto instruira al kernel para enviar un cookie al cliente en su respuesta SYN+ACK. En este modo el servidor
cierra el socket y espera el ACK del cliente con el cookie apropiado.

Si el archivo tcp_syncookies no esta presente en el directorio /proc entonces se necesitara recompilar el


kernel con el soporte syncookies.

Aviso: Por default, aun si syncookies es soportado por el kernel, se necesitara activar el soporte agregando
un “1” al /proc/sys/net/ipv4/tcp_syncookies. Esto usualmente esta hecho en /etc/rc.d/rc.local. A pesar de
todo una solucion mas eficiente podria ser agregar una entrada en /etc/sysctl.conf

● El parche de seguridad owl (esta seccion no es un objetivo LPI)

Este parche es mas relacionado a temas de la pila y va mas alla de los objetivos de este curso.

Av. Del Parque Sur 699 Of. 206 – San Borja 75


Asesores & Soporte Linux SAC Soportelinux.com
Redes TCP/IP

Resources for the owl patch and the Linux kernel:


http://www.openwall.com
http://www.kernel.org/pub/linux/kernel/v2.2/

Solo existe soporte para el kernel 2.2-19 hasta ahora.


Despues de descargar linux-2.2.19.tar.gz y linux-2.2.19-ow1.tar.gz en el directorio /usr/src/, asegurarse de
que se ha borrado el enlace simbolico linux.

[root@nasaspc src]#pwd
/usr/src/
[root@nasaspc src]#rm -rf linux

Luego:
[root@nasaspc src]#tar xvzf linux-2.2.19.tar.gz
[root@nasaspc src]#tar xvzf linux-2.2.19-owl.tar.gz

Para probar tu sistema anda el directorio linux-2.2-19-owl. Aca hay un directorio llamado opcional que
contiene un archivo llamado stacktest.c.

[root@nasaspc optional]#pwd
/usr/src/linux-2.2.19-ow1/optional
[root@nasaspc optional]#gcc stacktest.c -o stacktest

Si ejecutas stacktest obtendras una lista de opciones. Ejecutar emulacion de desborde.

Un ataque de desbordamiento de buffer satisfactorio:

[root@nasaspc optional]#stacktest
Usage: ./stacktest OPTION
Non-executable user stack area tests

-t call a GCC trampoline


-e simulate a buffer overflow exploit
-b simulate an exploit after a trampoline call

[root@nasaspc optional]#stacktest -e
Attempting to simulate a buffer overflow exploit...
Succeeded.

Para aplicar el parche se necesita ir al directorio linux. Aqui algunos comandos.

Aplicando el parche openwall :

[root@nasaspc linux]#pwd
/usr/src/linux
[root@nasaspc linux]#patch -p1 < /usr/src/linux-2.2-19-owl/linux-2.2.19-ow1.diff

Ahora si ejecutas make menuconfig deberias ver una nueva entrada llamada Security options. Las
selecciones por defecto estan bien. Desde aqui proceder con la compilacion e instalacion del kernel como
siempre.

Av. Del Parque Sur 699 Of. 206 – San Borja 76


LinuxIT Technical Education Centre
Administracion del Sistema Linux

Administracion del Sistema Linux


Descripcion
Nos concentraremos en las tareas principales del sistema de administracion como el monitoreo de los
archivos log, la programacion de trabajos usando at y cron. Esto tambien incluye una descripcion de la
documentacion disponible (manpages y recursos en linea) asi como tambien algunos conceptos de
backupeo de informacion.

1. Archivos de registro (Logfiles) y configuracion


El directorio /var/log/

Este es el directorio donde la mayoria de archivos de registro se encuentran guardadost. Algunas


aplicaciones generan sus propios archivos de registro (como el squid o el samba). La mayoria de registros
del sistema son manejados por el demonio syslogd. Archivos del sistema mas comunes son :

cron mantiene el rastro de los mensajes generados cuando el cron se ejecuta


mail mensajes relacionados a mail
messages registra todos los mensajes excepto la autenticacion privada authpriv, cron, mail y news
secure registra todas las autenticaciones fallidas, usuarios agregados/borrados etc

El registro mas importante es messages donde la mayoria de actividades son registradas.

El archivo /etc/syslog.conf

Cuando el syslogd es inicializado este lee el archivo de configuracion por defecto /etc/syslog.conf.
Tambien se puede inicializar syslogd con -f y la ruta de algun archivo de configuracion alternativo. Este
archivo debe contener una lista de items seguido por una prioridad, seguido por la ruta del archivo de
registro:

item1.priority1 ; item2.priority2 /path-to-log-file

Items Validos son :


auth y authpriv autenticacion de usuario general y privado
cron mensajes del demonio cron
kern mensajes del kernel
mail
news
user procesos del usuario
uucp

Prioridades validas son: (desde el mas alto al mas bajo)


emerg

_____________________________________________________________________
70
LinuxIT Technical Education Centre
Administracion del Sistema Linux
alert
crit
err
warning
notice
info
debug
*
none

Las prioridades son minimas! Todas las prioridades altas seran registradas tambien. Para forzar una
prioridad para ser solo info se necesita usar un simbolo '=' como en:
user.=info /var/log/user_activity

Listado de /etc/syslog.conf

# Log all kernel messages to the console.


# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none /var/log/messages

# The authpriv file has restricted access.


authpriv.* /var/log/secure

# Log all the mail messages in one place.


mail.* /var/log/maillog

# Log cron stuff


cron.* /var/log/cron

# Everybody gets emergency messages, plus log them on another


# machine.
*.emerg *
*.emerg @10.1.1.254

# Save boot messages also to boot.log


local7.* /var/log/boot.log
#
news.=crit /var/log/news/news.crit
news.=err /var/log/news/news.err
news.notice /var/log/news/news.notice

2. Utilidades de Registro
El comando logger

La primera utilidad logger convenientemente registra los mensajes al archivo /var/log/messages :

_____________________________________________________________________
71
LinuxIT Technical Education Centre
Administracion del Sistema Linux
Si tipeas el siguiente comando:

logger program myscipt ERR

En el final de /var/log/messages deberia ahora tener un mensaje similar a esto:

Jul 17 19:31:00 localhost penguin: program myscript ERR

configuraciones locales

La utilidad logger registra los mensajes en /var/log/messages por defecto. Hay items locales definidos que
pueden ayudar a crear tus propios archivos de registro como a continuacion. local0 a local7 estan
disponibles para uso de administracion. La disponibilidad depende en el sistema (RedHat local7 reporta
informacion del momento de arranque en /var/log/boot.log). Agrega la siguiente linea a /etc/syslog.conf:

local4.* /dev/tty9

Reiniciar el syslogd

killall -HUP syslogd

El siguiente comando sera registrado en /dev/tty9

logger -p local4.notice "This script is writing to /dev/tty9"

Un dispositivo interesante es /dev/speech este es instalado con las herramientas Festival.

logrotate

Los archivos de registro son actualizados usando logrotate. Usualmente logrotate se ejecuta diariamente
como un trabajo de cron. El archivo de configuracion /etc/logrotate.conf contiene los comandos para crear
o comprimir archivos.

Listado de archivo logrotate.conf

# rotate log files weekly


weekly
# keep 4 weeks worth of backlogs

_____________________________________________________________________
72
LinuxIT Technical Education Centre
Administracion del Sistema Linux
rotate 4
# send errors to root
errors root
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

3. Tareas Automatizadas
Usando cron

El programa responsable de ejecutar los crons es llamado crond. Cada minuto el crond leera los archivos
especificos conteniendo los comandos a ejecutarse. Estos archivos son llamados crontabs.

Los usuarios de crontab se encuentran en /var/spool/cron/<username>. Estos archivos pueden no ser


directamente editados por usuarios no-root y necesitan ser editados usando la herramienta crontab (ver
abajo).

El sistema cronta es /etc/crontab. Este archivo ejecuta periodicamente todos los scripts en /etc/cron.* esto
incluye cualquier enlace simbolico apuntando a los scripts o binarios del sistema.

Para manipular entradas cron se usa la utilidad crontab. Tareas programadas son vistas con la opcion -l
como se ve abajo:

crontab -l
➔ # DO NOT EDIT THIS FILE - edit the master and reinstall
# (/tmp/crontab.1391 installed on Tue Jul 17 17:56:48 2001)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 * * 07 2 /usr/bin/find /home/penguin -name core -exec rm {} \;

El usuario root tiene algunas tareas programadas?

Similarmente la opcion -e abrira tu editor por defecto y te dejara entrar una entrada de cron.
El usuario root puede usar la opcion -u para ver y cambiar cualquier entrada cron de los usuarios. Para
borrar el archivo crontab usar crontab -r.

Este es el formato para crontabs :

Minutes(0-59) Hours(0-23) Day of Month(1-31) Month(1-12) Day of Week(0-6) command

_____________________________________________________________________
73
LinuxIT Technical Education Centre
Administracion del Sistema Linux
Permisos:

Por defecto cualquier usuario puede usar crontab. Pero puedes controlar la accesibilidad con
/etc/cron.deny y /etc/cron.allow.

Calendarizacion con “at”

Los trabajos at son ejecutados por el demonio atd. Los trabajos son guardados en /var/spool/at/

El comando at es usado para calendarizar una tarea con la sintaxisis used to schedule a one off task with
the syntax

at [time]

Cuando el tiempo puede ser expresado como:

now
3am + 2days
midnight
10:15 Apr 12
teatime

Para una lista completa de formatos de tiempo validos ver /usr/share/doc/at-xxx/timespec.

Se puede obtener una lista de comandos que son calendarizados con atq o at -l. Los trabajos at jobs son
grabados en /var/spool/at/:

ls /var/spool/at/
➔ a0000100fd244d spool

Cuando se usa atq se deberia tener una lista de trabajos procedido por un numero. Se puede usar este
numero para desencolarlo:

atq
➔ 1 2001-07-17 18:21 a root

Desde el listado de atq vemos que el numero de trabajo es 1, por eso podemos remover el trabajo del
directorio spool.

at -d 1

Permisos:

Por defecto at esta restringido al usuario root. Para invalidar esto se debe tener un archivo vacio
/etc/at.deny o tener un /etc/at.allow con los nombres apropiados.

4. Compresion y Backups

Estrategias de backupeo

_____________________________________________________________________
74
LinuxIT Technical Education Centre
Administracion del Sistema Linux
Hay tres estrategias principales para backupear un sistema:

Completa: copiar todos los archivos


Incremental: La primera incremental copia todos los archivos agregados o cambiados desde el ultimo
backup completo, y subsecuentemente copia todos los archivos agregados o cambiados desde el ultimo
backup incremental.
Diferencial: Copia todos los archivos agregados o cambiandos desde el ultimo backup completo.

Ejemplo: Si tu haces un backup completo y 3 backups diferenciales antes de un colapso, cuantas cintas
necesitarias para la restauracion ?

Creando archivos con tar

La opcion principal para crear un archivo con tar es -c. Tambien puedes especificar el nombre del archivo
como el primer argumento si se usa la opcion -f.

tar -cf home.tar /home/

Si no se especifica el archivo como un argumento tar -c simplemente mandara el archivo como una salida
estandar:

tar -c /home/ > home.tar

Extrayendo archivos con tar

La extraccion es directa. Reemplazar la opcion -c por una -x. Esto causara que se creen directorios si es
necesario y se copien los archivos en tu directorio actual. Para redireccionar la salida de los archivos
extraidos en el directorio /usr/share/doc, por ejemplo, puedes hacer:

tar xf backeddocs.tar -C /usr/share/doc

Compresiones

Todos los archivos pueden ser comprimidos usando diferentes utilidades de compresion. Estas opciones
estan disponibles cuando se crea, prueba o se extrae un archivo:

Opcion tar tipo de compresion


Z compress
z gzip
j bzip2.

La utilidad cpio

La utilidad cpio es usada para empaquetar varios archivos. La lista de archivos debe pasarse a cpio a
traves de una tuberia (como cuando se usa con find) o via una redireccion como a continuacion;

- Extrae un archivo en una cinta:

cpio -i < /dev/tape

- Crea un archivo del directorio /etc :

_____________________________________________________________________
75
LinuxIT Technical Education Centre
Administracion del Sistema Linux
find /etc | cpio -o > etc.cpio

5. Documentacion
Paginas Man y la base de datos whatis

Las paginas man estan organizadas en secciones


NAME El nombre del item seguido por una linea corta de descripcion.
SYNOPSYS La sintaxis del comandos
DESCRIPTION Una descripcion mas larga
OPTIONS Una revision de todas las opciones posibles y sus funciones
FILES Archivo que estan relacionados a item actual (archivos de
configuracion, etc)
SEE ALSO Otras paginas man relacionadas al tema actual

Estas son las secciones principales que generalmente se encuentra en las paginas man.

La base de datos whatis almacena la seccion NAME de todas las paginas man en el sistema. Esto se hace
diariamente a traves de un cron diario. La base de datos whatis tiene las siguiente 2 entradas:

name(key) – one line description

La sintaxis para whatis es:


whatis <string>

La salida de las seccion NAME completa de las paginas man donde string coincidie con named(key)

Tambien se puede usar el comando man para consultar la base de datos whatis. La sintaxis es

man -k <string>

A diferencia de whatis es que esta consulta tanto las entradas “name” y la “one line description” de la base
de datos. Si la cadena coincide con una palabra en cualquiera de estos campos la consulta retornara la
seccion NAME completa.

Ejemplo: (la cadena coincidente tiene que ser resaltada)

whatis lilo
lilo (8) - install boot loader
lilo.conf [lilo] (5) - configuration file for lilo

man -k lilo
grubby (8) - command line tool for configuring grub, lilo, and elilo
lilo (8) - install boot loader
lilo.conf [lilo] (5) - configuration file for lilo

_____________________________________________________________________
76
LinuxIT Technical Education Centre
Administracion del Sistema Linux
La FHS recomienda las paginas man a ser guardadas en /usr/share/man

Manpage Sections
Section 1 Information on executables
Section 2 System calls, e.g mkdir(2)
Section 3 Library calls, e.g stdio(3)
Section 4 Devices (files in /dev)
Section 5 Configuration files and formats
Section 6 Games
Section 7 Macro packages
Section 8 Administration commands
Section 9 Kernel routines

Para acceder a la seccion N se tiene que ingresar:

man N command

Ejemplos:

man mkdir
man 2 mkdir

man crontab
man 5 crontab

Paginas info

La FHS recomienda que las paginas info sean guardadas en /usr/share/info. Estas paginas son archivos
comprimidos que se pueden leer con la herramienta info .

Las herramientas GNU originales usan las paginas info mas que las paginas man. Ya que la mayoria de
paginas info han sido reescritas como paginas man. A pesar de esto la informacion acerca de los proyectos
GNU como gcc o glibc es mas extensa en las paginas info comparado con las paginas man.

Documentos en linea

Los proyectos GNU incluyen documentos como FAQ, README, CHANGELOG y algunas veces guias de
usuario/administracion . Los formatos pueden ser tambien ASCII text, HTML, LateX o postscript.

Estos documentos son almacenados en el directorio /usr/share/doc/ .

HOWTOs y el Proyecto de Documentacion de Linux

_____________________________________________________________________
77
LinuxIT Technical Education Centre
Administracion del Sistema Linux
El proyecto de documentacion de linux provee muchas documentos detallados de temas especificos. Estos
son guias estructuradas explicando conceptos e implementaciones. La URL del website es www.tldp.org.
Los documentos DP son libremente redistribuibles y se puede contribuir con ellos tambien usando el tipo de
licencia GPL .

Grupos de Noticias Usenet

Los grupos de noticias para Linux son los grupos comp.os.linux.* (ejem. comp.os.linux.networking,
comp.os.linux.security ...). Una vez que se tOnce you have setup a news reader to connect to a news server
(usually available through an ISP or a University campus) one downloads a list of all existing discussion
groups and subscribes/unsubscribes to a given group.

There are many experienced as well as new users which rely on the newsgroups to get information on
specific tasks or projects. Take the time to answer some of these questions if you feel you have the relevant
experience.

NOTICE
The man -k option queries both fields in the whatis database. This will find everything about a given item.
There is a tool called apropos (meaning about) which will do the same thing as man -k.

5. Ejercicios

Reportes

1. Cambiar /etc/syslog.conf para que salgan algunos logs por (reiniciar syslogd para que la salida este
realmente redireccionada)

2. Agregar un item local5 item con prioridad critica a /ect/syslog.conf y direccionar la salida a /dev/tty10.
Reiniciar syslogd y usar logger para escribir informacion via local5.

3. Leer el script /etc/rc.d/init.d/syslog y cambiar /etc/sysconfig/syslog para permitir hosts remotos para
enviar reportes a las salidas.

Calendarizacion

4.Crear una entrada del cron que empieza el reloj cada 2 minutos. Recuerda que cron is unaware of system
variables such as PATH and DISPLAY.

5. Usar at. para empezar xclock en los proximos 5 minutos.

Manejo de archivos

6. Usar find para listar todos los arcivos que han sido modificados durante las 24 horas pasadas.
(tip: Redireccionar la salida de find -mtime –1 a un archivo)

7.Usar cpio para crear un archivo llamado Incremental.cpio.

(ans: Usar el archivo creado arriba y hacer cat FILE | cpio –ov > Incremental.cpio)

8 Usar xargs y tar crear un archivo de todos los archivos accesados o cambiados 5 minutos atras.

_____________________________________________________________________
78
LinuxIT Technical Education Centre
Administracion del Sistema Linux
9. Do the same using the –exec option to find. Note that the files listed by find can be referenced by the {}
symbol.

10. Extraer el archivo que acabas de crear.

Configurando PPP

1. Modems Seriales
Linux asume generalmente que los modems seriales son conectados a un puerto serial (uno de los
dispositivos /dev/ttySN ). Por eso primero necesitas encontrar a cual puerto serial esta conectado.

El comando setserial –g hara las consultas a los puertos seriales. Si el recurso no esta disponible el valor
del UART sera desconocido.

Ejemplo de la salida para setserial:

setserial -g /dev/ttyS[0-3]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

Para modems no-seriales es posible obtener informacion acerca de los recursos disponibles en /proc/pci.
Aca las configuraciones de i/o y IRQ pueden ser aplicadas a un dispositivo libre /dev/ttyS?. Esto se logra
con las siguientes dos lineas:

setserial /dev/ttyS2 port 0x2000 irq 3


setserial /dev/ttyS2 autoconfig

La ultima lina solo trata de aplicar las configuraciones apropiadas para UART.

Estas configuraciones se perderan la proxima vez que reinicie la maquina y pueden grabarse en
/etc/rc.serial. Este script es uno de los scripts ejecutados por rc.sysinit en el momento de inicio del
sistema.

_____________________________________________________________________
79
LinuxIT Technical Education Centre
Administracion del Sistema Linux
El script rc.serial :

#!/bin/bash

TTY=/dev/ttyS2
PORT=0x2000
IRQ=3

echo "Setting up Serial Card ..."


/bin/setserial $TTY port $PORT irq $IRQ 2>/dev/null
/bin/setserial $TTY autoconfig 2>/dev/null

2. Configuracion Dialup

Una vez que se sabe que el modem se conectara a un dispositivo serial, es posible enviar al modem una
instruccion como ATZ o ATDT. La herramienta que actuara como interfaz terminal es minicom.

pantalla de minicom

Otra herramienta muy comun es wvdialconf. Estas herramienta automaticamente escaneara modems en
las ttyS’s y creara un archivo de configuracion. Este archivo es usado para manejar la autenticacion por
contraseña y inicializara el demonio pppd una vez que la conexion se haya establecido.

3. pppd y chat

Primero que nada el script chat es usado para comunicarse con el modem del host remoto. Es una seria de
cadenas espera/envio. El formato es :

‘consulta esperada’ ‘respuesta’

Las consultas esperadas del modem son:

‘‘ ‘OK’ ‘CONNECT’ ‘login’ ‘password’ ‘TIMEOUT’ ‘>’

El script es leido secuencialmente y empieza con la consulta vacia ‘ ‘ la cual se hace coincidir con el
comando ‘ATZ’. Una vez que el modem se ha inicializado este devuelve la consulta ‘OK’. Para esto el
script respondera con un comando de marcacion ‘ATDT’ . Esta conversacion sucede hasta que el prompt
‘>’ es obtenido en la etapa en la cual uno puede ejecutar pppd.

_____________________________________________________________________
80
LinuxIT Technical Education Centre
Administracion del Sistema Linux
Ejemplo del script chat:
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT01172341212'
'CONNECT' ''
'ogin:' 'adrian'
'ord:' 'adrianpasswd'
'TIMEOUT' '5'
'>' pppd

Esta es sola una manera de lograr esto. Tambien se puede empezar el pppd manualmente y luego invocar
el script chat como se ve a continuacion:

pppd /dev/ttyS2 115200 \


nodetach \
lock \
debug \
crtscts \
asyncmap 0000000 \
connect "/usr/sbin/chat -f /etc/sysconfig/network-scripts/chat-ppp0"

Las lineas debajo de los comandos pppd pueden ser grabados /etc/ppp/options. Este archivo contiene la
mayoria de caracteristicas las cuales hacen la fortaleza y flexibilidad del pppd. Por ejemplo require-chap
usara el /etc/ppp/chap-secrets para la autenticacion.

4. PPPD peers
Aca hay un directorio llamado peers en /etc/ppp/. En este directorio se puede crear un archivo que contenga
todas las opciones de linea de comandos necesarias para pppd. De esta manera las conexiones peer
pueden ser inicializadas por todos los usuarios.

Abajo vemos un ejemplo de un archivo peer PPP:

# This optionfile was generated by pppconfig 2.0.10.


hide-password
noauth
connect "/usr/sbin/chat -f /etc/sysconfig/network-scripts/chat-ppp0"
/dev/ttyS0
115200
defaultroute
noipdefault
user uk2

El anterior archivo peer (llamado uk2) puede ser usado como a continuacion:

# pppd call uk2

Esto marcara el numero especificada en el “script chat” y se autenticara como el usuario “uk2”.
Tener en cuenta de que esto requiere la entrada correspondiente en /etc/ppp/chap-secrets, y /etc/ppp/pap-
secrets. El formato para pap y chap secrets es la siguiente:

# Secrets for authentication using CHAP


# client server secret IP addresses

_____________________________________________________________________
81
LinuxIT Technical Education Centre
Administracion del Sistema Linux
uk2 * "uk2" *

Este formato permite que se usen diferentes contraseñas si te conectas a diferentes servidores. Tambien te
permite especificar un direccion IP. Esto probablemente no va a funcionar cuadno se conecte a un ISP, pero
cuando se hace conexiones privadas, se puede especificar una direccion IP si se necesita. Un ejemplo
podria ser cuando necesitas auditar la actividad de tu red, y quieres especificar cuales usuario tiene cierta
direccion IP.

5. Wvdial

Este el metodo por defecto usado por Red Hat para conectarse a una red dial up. Para configurar wvdial, es
nas facil usar una de las herramientas de configuracion proveidas de Gnome o KDE. Estas configuran el
archivo /etc/wvdial.conf.

Debajo vemos un ejemplo del archivo wvdial.conf:

[Modem0]
Modem = /dev/ttyS0
Baud = 115200
Dial Command = ATDT
Init1 = ATZ
FlowControl = Hardware (CRTSCTS)
[Dialer UK2]
Username = uk2
Password = uk2
Phone = 08456091370
Inherits = Modem0

Para usar wvdial desde la linea de comandos, se deberia ejecutar con la siguiente sintaxis:

# wvdial <dialer-name>

En el archivo de configuracion ejemplo el siguiente comando deberia marcar la conexion llamada “uk2”

# wvdial uk2

_____________________________________________________________________
82
LinuxIT Technical Education Centre
Administracion del Sistema Linux

Impresión
Los dos objetivos de este capitulo es en primer lugar una introduccion a las herramientas de impresion GNU
disponibles en las maquinas Linux y en segundo lugar entender los archivos de condfiguracion para un
servidor de impresion.

1. Filtros y gs
Para formatos no-texto los sistemas Linux y UNIX generalmente usan filtros. Estos filtros transforman los
formatos JPEG o troff en formato tipo postscript. Esto puede ser directamente enviado a una impresora
postscript, pero desde que ya no todas las impresoras genericas pueden manejar postscript, una
‘impresora virtual postscript’ intermedia usualmente llamado gs (ghostscript), finalmente transforma el
postscript en PCL.

La version comercial de ghostscript es Aladdin Ghostscript y la version GNU es una version mas antigua.

La utilidad gs tiene una base de datos de drivers de impresora que puede manejar (esta lista es usualmente
actualizada, por ejemplo muchas impresoras USB son soportadas) y convierten el postscript directly en PCL
para estos modeos conocidos. La utilidad gs juega un papel central en la impresion para sistemas Linux.

2. Impresoras y colas de impresion


Como se vio arriba la impresion de texto simple ascii no esta manejada de la misma manera como las
imagenes o los archivos postscript.. Si solo se tiene una impresora y se quiere imprimir un mail por ejemplo,
puede no ser necesario usar un filtro. Se podria definir una cola sin filtros, la cual imprimiria el correo de
manera mas rapida. Se podria tambien definir una cola en la misma impresora, la cual solo manejaria
archivos postscript.

Todas las colas e impresoras son definidas en /etc/printcap. Aqui esta la configuracion completa de una
impresora remota 192.168.1.20 usando una cola remota llamada ‘lp’:

lp:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:rm=192.168.1.20:\
:rp=lp:

Las opciones escenciales son rm el host remoto, sd el directorio spool y rp el nombre de una cola remota.
Tener en cuenta que no se ha especificado algun filtro (podria usarse if para la entrada del filtro). Todo el
filtrado esta hecho en el host remoto.

_____________________________________________________________________
83
LinuxIT Technical Education Centre
Administracion del Sistema Linux
3. Herramientas de Impresion
lpr:

La utilidad lpr es usada para agregar trabajos a la impresora. Esta es una version moderna de lp (linea de
impresion). Desde el punto de vista del usuario es util entender que una impresora puede asociada con mas
de una cola. Aqui ves dos ejemplos para imprimir un archivo llamado LETTER.

Enviar un trabajo a la impresora por defecto:


lpr LETTER

Enviar un trabajo a la cola ’ ljet’ :


lpr -Pljet LETTER

Table1: Main Options for lpr

-#num Imprimir num copias


-Ppq Especificar la cola de impresion pq
-s Crea un enlace simbolico en el directorio spool Make a symbolic link in the
spool directory en vez de copiar el archivo

lpq:

Un usuario puede monitorear el estado de las colas de impresion con la utilidad lpq. Aqui vemos algunos
ejemplos.

Muestra trabajos en la cola por defecto:


lpq

Muestra trabajos para todas las colas en el sistema:


lpq -a

Muestra trabajos en la cola remota:


lpq -Premote

lprm:

Dependiendo de las opciones en /etc/lpd.perms los usuarios pueden estar permitidos para borrar colas de
trabajos usando lprm.

Remueve el ultimo trabajo agregado:


lprm

Remueve trabajos agregados por el usuario dhill:


lprm dhill

Remueve todos los trabajos agregados:


lprm -a (or simply lprm -)

_____________________________________________________________________
84
LinuxIT Technical Education Centre
Administracion del Sistema Linux
Es posible remover un trabajo encolado especifico referenciandolo por su numero de trabajo; este numero
es dado por lpq.

lpc:

La utilidad de Control de Linea de Impresion es usada para controlar las colas de impresion y las impresoras.
Las colas de impresion pueden ser deshabilitadas o habilitadas. Tener en cuenta que lprm por otro lado
puede remover trabajos de una cola pero no puede parar la cola.

Se puede usar lpc interactivamente (lpc tiene su propio prompt), o desde la linea de comandos.

Aqui hay una salida de lpc –help:

CMD: /usr/sbin/lpc help


► Los comandos pueden ser abreviados. Los comandos son:

abort enable disable help restart status topq ?


clean exit down quit start stop up

Las opciones enable/disable/topq/up son relacionadas a las colas


Las opciones start/stop/down son relacionadas a las impresoras

4. Los archivos de configuracion

/etc/printcap

Como se vio anteriormente en este capitulo, el archivo define a todas las impresoras y colas que el sistema
puede usar (remota y local).

La impresora por defecto puede ser especificada con cualquiera de las variables LPDEST o PRINTER:
PRINTER=lp
Si no hay variables de entorno configuradas, la impresora por defecto es la primera impresora definida en
/etc/printcap.

Las principales definiciones son:


lp nombre de dispositivos, usualmente /dev/lp0 se usa para el puerto paralelo
mx maximo tamaño de archivo (zero=nolimit)
sd directorio spool (/var/spool/lpd/<queuename>/)
if filtro de entrada
rm direccion del host remoto o IP
rp nombre de la cola remota

si este archivo es modificado necesitaras reiniciar el demonio lpd.

/etc/lpd.conf

Este es un archivo muy largo y por defecto todas las opciones estan comentadas. Este archivo es usado si
un administrador deseara tener mas controll (i.e autenticacion para acceso remoto, permisos de usuario …)
sobre la impresion.

/etc/lpd.perms

Este archivo controla los permisos para las utilidades lpc, lpq y lprm. En particular se puede conceder
derechos a usuarios para sacar de la cola el trabajo actual (usando la herramienta lprm) con la linea :

ACCEPT SERVICE=M SAMEHOST SAMEUSER

_____________________________________________________________________
85
LinuxIT Technical Education Centre
Administracion del Sistema Linux

LPRng usa un sistema de llaves para acortar las entradas en lpd.perms. Esto a pesar de todo no es muy
entendible. Por ejemplo el servicio ‘M’ corresponde a lprm en la linea de arriba.

Ejemplo del archivo /etc/lpd.perms :

## Permissions are checked by the use of 'keys' and matches. For each of
## the following LPR activities, the following keys have a value.
##
## Key Match Connect Job Job LPQ LPRM LPC
## Spool Print
## SERVICE S 'X' 'R' 'P' 'Q' 'M' 'C'
## USER S - JUSR JUSR JUSR JUSR JUSR
## HOST S RH JH JH JH JH JH
## GROUP S - JUSR JUSR JUSR JUSR JUSR
## IP IP RIP JIP JIP RIP JIP JIP
## PORT N PORT PORT - PORT PORT PORT
## REMOTEUSER S - JUSR JUSR JUSR CUSR CUSR
## REMOTEHOST S RH RH JH RH RH RH
## REMOTEGROUP S - JUSR JUSR JUSR CUSR CUSR
## REMOTEIP IP RIP RIP JIP RIP RIP RIP
## CONTROLLINE S - CL CL CL CL CL
## PRINTER S - PR PR PR PR PR
## FORWARD V - SA - - SA SA
## SAMEHOST V - SA - SA SA SA
## SAMEUSER V - - - SU SU SU
## SERVER V - SV - SV SV SV
## LPC S - - - - - LPC
## AUTH V - AU AU AU AU AU
## AUTHTYPE S - AU AU AU AU AU
## AUTHUSER S - AU AU AU AU AU
## AUTHFROM S - AU AU AU AU AU
## AUTHSAMEUSER S - AU AU AU AU AU
##
## KEY:
## JH = HOST host in control file
## RH = REMOTEHOST connecting host name
## JUSR = USER user in control file
## AUTH will match (true) if authenticated transfer
## AUTHTYPE will match authentication type
## AUTHUSER will match client authentication type
## AUTHFROM will match server authentication type and is NULL if not from server
## AUTHSAMEUSER will match client authentication to save authentication in job
##
## Example Permissions
##
## # All operations allowed except those specifically forbidden
## DEFAULT ACCEPT
##
## #Reject connections from hosts not on subnet 130.191.0.0
## # or Engineering pc's
## REJECT SERVICE=X NOT REMOTEIP=130.191.0.0/255.255.0.0
## REJECT SERVICE=X NOT REMOTEHOST=engpc*
##
## #Do not allow anybody but root or papowell on
## #astart1.astart.com or the server to use control
## #facilities.
## ACCEPT SERVICE=C SERVER REMOTEUSER=root
## ACCEPT SERVICE=C REMOTEHOST=astart1.astart.com REMOTEUSER=papowell
##
## #Allow root on talker.astart.com to control printer hpjet
## ACCEPT SERVICE=C HOST=talker.astart.com PRINTER=hpjet REMOTEUSER=root
## #Reject all others
## REJECT SERVICE=C
##
## #Do not allow forwarded jobs or requests
## REJECT SERVICE=R,C,M FORWARD

_____________________________________________________________________
86
LinuxIT Technical Education Centre
Administracion del Sistema Linux
##
#
# allow root on server to control jobs
ACCEPT SERVICE=C SERVER REMOTEUSER=root
# allow anybody to get server, status, and printcap
ACCEPT SERVICE=C LPC=lpd,status,printcap
# reject all others
REJECT SERVICE=C
#
# allow same user on originating host to remove a job
ACCEPT SERVICE=M SAMEHOST SAMEUSER
# allow root on server to remove a job
ACCEPT SERVICE=M SERVER REMOTEUSER=root
REJECT SERVICE=M
# all other operations allowed
DEFAULT ACCEPT

/etc/hosts.{lpd,equiv}

Estos archivos fueron usados la suite de impresion LPR printing suite y presentaba un riesgo de seguridad.
Cuando se ejecuta un servidor de impresion se necesita especificar cuales hosts puede acceder a la
impresora en /etc/hosts.lpd. Tambien se puede agregar los hosts a /etc/hosts.equiv.

Estos archivos ahora han sido reemplzados en LPRng por el archivo /etc/lpd.perms

_____________________________________________________________________
87
LinuxIT Technical Education Centre
Administracion del Sistema Linux

5. Ejercicios
1. Iniciar printtool y crear una nueva cola local llamada lp.

2. Personalizar el dispositivo /dev/tty10 como el dispositivo de impresion (recuerda hacer chmod 666
/dev/tty10 para permitir la impresion en este dispositivo). Ahora tienes una impresora virtual en tu
sistema!

3. Enviar los trabajos a la cola de impresion usando lpr y pr (herramienta de preformateado)

4. Con la herramienta de impresion de tu sistema, define las colas remotas:


- una cola UNIX
- una cola SMB
Si eres un servidor, asegurarse de tener debidamente configurada las reglas en /etc/lpd.perms

En cada caso
- revisar el archivo /etc/printcap. Cual filtro es usado? Como esta definido el host remoto?
- revisar el directorio /var/spool/lpd/ .

5. Parar varias colas de impresion e impresoras con lpc.

6. Revisar el contendio de cada cola con lpq

7. Desencolar los trabajos seleccionados con lprm

_____________________________________________________________________
88
LinuxIT Technical Education Centre
Appendix
__________________________________________________________________________

LPI 102 Objectives


1. Kernel

Manage/Query kernel and kernel modules at runtime


Manage a kernel and kernel loadable modules. Use command-line utilities to get information about the kernel
modules and the running kernel. Load modules with correct parameters and unload them. Load modules
using aliases.
Keywords: /lib/modules/kernel-version/modules.dep, /etc/modules.conf,
/etc/conf.modules
depmod, insmod, lsmod, rmmod, modinfo, modprobe, uname

Reconfigure, build, and install a custom kernel and kernel modules


Customise, build, and install a kernel and kernel loadable modules from source Customise the current kernel.
Build a new kernel or new kernel modules as needed. Install the new kernel and reconfigure the boot loader.
Keywords: /usr/src/linux/*, /usr/src/linux/.config, /lib/modules/kernel-version/*,
/boot/*
make, config, menuconfig, xconfig, oldconfig, modules, install, modules_install, depmod

2. Boot, Initialisation, Shutdown and Runlevels

Boot the system


Follow the system through the booting process. Parse parameters to the boot loader (runlevel and kernel
options). Check events in the log files.
Keywords: dmesg, /var/log/messages, /etc/modules.conf, LILO, GRUB

Change runlevels and shutdown or reboot system


Manage the system’s runlevels. The default runlevel. The single user mode. Shutdown and reboot. Alert
users before switching runlevel.
Keywords: shutdown, init, /etc/inittab

3. Printing

Manage printers and print queues


Manage print queues and print jobs. Monitor print server and user print queues. Troubleshoot general printing
problems.
Keywords: lpc, lpq, lprm, lpr, /etc/printcap

Print files
Manage print queues and manipulate print jobs. Add and remove jobs from printer queues. Convert text files
to postscript for printing.
Keywords: lpr, lpq, mpage

Install and configure local and remote printers


Install a printer daemon. Install and configure a print filter (e.g.: apsfilter, magicfilter). Make local and remote
printers accessible for a Linux system. SMB shared printers.
Keywords: lpd, /etc/printcap, /etc/apsfilter/*, /var/lib/apsfilter/*,
/etc/magicfilter/*, /var/spool/lpd/*

_________________________________________________________________________
All original materials are ©2002 LinuxIT. All Rights Reserved. Kleesh Consultants Ltd T/A LinuxIT registered
in England No:04470427. Visit www.linuxit.com for more information.

89
LinuxIT Technical Education Centre
Appendix
__________________________________________________________________________
4. Documentation

Use and manage local system documentation


Use and administer the manpages and the material in /usr/share/doc. Find relevant man pages. Search man
page sections. Find a command and all the documentation related to it. Configure access to man sources
and the man system.
Keywords: man, apropos, whatis, MANPATH

Find Linux documentation on the Internet


Find and use Linux documentation. Use Linux documentation from sources such as the Linux Documentation
Project (LDP), vendors and third-party websites. Linux specific newsgroups. Newsgroup archives. Mailing
lists.

Notify users on system-related issues


Notify users about current issues related to the system. Logon messages.
Keywords: /etc/issue, /etc/issue.net, /etc/motd

5. Shells, Scripting, Programming and Compiling

Customise and use the shell environment


Customise shell environments to meet users' needs. Set environment variables at login, or when spawning a
new shell. Write bash functions for frequently used sequences of commands.
Keywords: ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc, ~/.bash_logout,
~/.inputrc
function, export, env, set, unset

Customise or write simple scripts


Customise existing scripts. Write simple new shell scripts. Use standard sh syntax (loops, tests). Use
command substitution. Test command return-values and file status. Conditionally mailing the superuser. The
she-bang (#!) sign. Manage location, ownership, execution and suid rights of scripts.
Keywords: while, for, test, chmod

6. Administrative Tasks

Manage users and group accounts and related system files


Add, remove, suspend and change user accounts. Manage groups. Change user/group info in passwd/group
databases. Create special purpose and limited accounts.
Keywords: chage, gpasswd, groupadd, groupdel, groupmod, grpconv, grpunconv,
passwd, pwconv, pwunconv, useradd, userdel, usermod
/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow

Tune the user environment and system environment variables


Modify global and user profiles. Set up environment variables. Maintain the skel directory. Set command
search path.
Keywords: env, export, set, unset, /etc/profile, /etc/skel

_________________________________________________________________________
All original materials are ©2002 LinuxIT. All Rights Reserved. Kleesh Consultants Ltd T/A LinuxIT registered
in England No:04470427. Visit www.linuxit.com for more information.

90
LinuxIT Technical Education Centre
Appendix
__________________________________________________________________________
Configure and use system log files to meet administrative and security needs
Configure system logs. Manage type and level of information logged. Manually scan log files for notable
activity. Monitoring log files: automatic rotation and archiving. Track down problems noted in logs.
Keywords: logrotate, tail –f, /etc/syslog.conf, /var/log/*

Automate system administration tasks by scheduling jobs to run in the future


Use cron or anacron to run jobs at regular intervals. Use at to run jobs once. Manage cron and at jobs.
Configure user access to cron and at services.
Keywords: at, atq, atrm, crontab
/etc/anacrontab, /etc/at.deny, /etc/at.allow, /etc/crontab, /etc/cron.allow,
/etc/cron.deny, /var/spool/cron/*

Maintain an effective data backup strategy


Plan a backup strategy. Automatically backup filesystems to various media. Dump a raw device to a file and
vice versa. Perform partial and manual backups. Verify the integrity of backup files. Partially or fully restor
backups.
Keywords: cpio, dd, dump, restore, tar

Maintain system time


Maintain the system time and synchronize the clock over NTP. Set the system date and time. Set the BIOS
clock to the correct time in UTC, configuring the correct timezone for the system and configuring the system
to correct clock drift to match NTP clock.
Keywords: date, hwclock, ntpd, ntpdate
/usr/share/zoneinfo, /etc/timezone, /etc/localtime, /etc/ntp.conf,
/etc/ntp.drift

7. Networking Fundamentals

Fundamentals of TCP/IP
Understand IP-addresses, network masks and broadcast address. Determine the network address,
broadcast address and netmask when given an IP-address and the number of bits. Network classes and
classless subnets (CIDR) and the reserved addresses for private network use. It includes the understanding
of the function and application of a default route. It also includes the understanding of basic internet protocols
(IP, ICMP, TCP, UDP) and the more common TCP and UDP ports (20, 21, 23, 25, 53, 80, 110, 119, 139,
143, 161).
Keywords: /etc/services, ftp, telnet, host, ping, dig, traceroute, whois

TCP/IP configuration and troubleshooting


View, change and verify configuration settings for various network interfaces. Manual and onboot
configuration for interfaces and routing tables. Configure and correct routing tables. Configure Linux as a
DHCP client.
Keywords: /etc/HOSTNAME or /etc/hostname, /etc/hosts, /etc/networks,
/etc/host.conf, /etc/resolv.conf, /etc/nsswitch.conf
ifconfig, route, dhcpcd, dhcpclient, pump, host, hostname (domainname, dnsdomainname), netstat, ping,
traceroute, tcpdump

Configure Linux as a PPP client


Understand the basics of the PPP protocol. Configure PPP for outbound connections. Define the chat
sequence when connecting. Initialisation and termination of a PPP connection with a modem, ISDN or ADSL.
Set up PPP to automatically reconnect if disconnected.

_________________________________________________________________________
All original materials are ©2002 LinuxIT. All Rights Reserved. Kleesh Consultants Ltd T/A LinuxIT registered
in England No:04470427. Visit www.linuxit.com for more information.

91
LinuxIT Technical Education Centre
Appendix
__________________________________________________________________________
Keywords: /etc/ppp/options.*, /etc/ppp/peers/*, /etc/wvdial.conf
/etc/ppp/ip-up, /etc/ppp/ip-down, wvdial, pppd

8. Networking Services

Configure and manage inetd, xinetd, and related services


Configure services available through inetd. Use tcpwrappers. Start, stop, and restart internet services.
Configure basic network services including telnet and ftp. Set a service to run as another user instead of the
default in inetd.conf.
Keywords: /etc/inetd.conf, /etc/hosts.allow, /etc/hosts.deny, /etc/services,
/etc/xinetd.conf, /etc/xinetd.log

Operate and perform basic configuration of sendmail


Modify simple parameters in sendmail configuration files. Create mail aliases. Manage the mail queue. Start
and stop sendmail. Configure mail forwarding and perform basic troubleshooting of sendmail. The objective
includes checking for and closing open relay on the mailserver. It does not include advanced custom
configuration of Sendmail.
Keywords: /etc/sendmail.cf, /etc/aliases, /etc/mail/*, ~/.forward
mailq, sendmail, newaliases

Operate and perform basic configuration of Apache


Modify simple parameters in Apache configuration files. Start, stop, and restart httpd. Does not include
advanced custom configuration of Apache.
Keywords: apachectl, httpd, httpd.conf

Properly manage the NFS, smb, and nmb daemons


Mount remote filesystems using NFS. Configure NFS for exporting local filesystems. Start, stop, and restart
the NFS services. Install and configure Samba using GUI tools or direct edit of the /etc/smb.conf file. Sharing
of home directories and printers, as well as correctly setting the nmbd as a WINS client.
Keywords: /etc/exports, /etc/fstab, /etc/smb.conf, mount, umount

Setup and configure basic DNS services


Configure hostname lookups and troubleshoot problems with local caching-only name server. Understand the
domain registration and DNS translation process. Differences between bind 4 and bind 8 configuration files.
Keywords: /etc/hosts, /etc/resolv.conf, /etc/nsswitch.conf, /etc/named.boot (v.4) or
/etc/named.conf (v.8), named

Set up secure shell (OpenSSH)


Obtain and configure OpenSSH. Basic OpenSSH installation and troubleshooting. Configure sshd to start at
system boot.
Keywords: /etc/hosts.allow, /etc/hosts.deny, /etc/nologin, /etc/ssh/sshd_config,
/etc/ssh_known_hosts, /etc/sshrc
sshd, ssh-keygen

_________________________________________________________________________
All original materials are ©2002 LinuxIT. All Rights Reserved. Kleesh Consultants Ltd T/A LinuxIT registered
in England No:04470427. Visit www.linuxit.com for more information.

92
LinuxIT Technical Education Centre
Appendix
__________________________________________________________________________
9. Security

Perform security administration tasks


Ensure local security policies. Configure TCP wrappers. Find files with SUID/SGID bit set. Verify packages.
Set or change user passwords and password aging information. Update binaries as recommended by
CERT, BUGTRAQ or distribution's security alerts. Basic knowledge of ipchains and iptables.
Keywords: /proc/net/ip_fwchains, /proc/net/ip_fwnames, /proc/net/ip_masquerade,
find, ipchains, passwd, socket, iptables

Setup host security


Set up a basic level of host security. Configure syslog , shadowed passwords. Set up a mail alias for root.
Turn off unused network services.
Keywords: /etc/inetd.conf or /etc/inet.d/*, /etc/nologin, /etc/passwd, /etc/shadow,
/ets/syslog.conf

Setup user level security


Configure user level security. Limits on user logins, processes, and memory usage.
Keywords: quota, usermod

_________________________________________________________________________
All original materials are ©2002 LinuxIT. All Rights Reserved. Kleesh Consultants Ltd T/A LinuxIT registered
in England No:04470427. Visit www.linuxit.com for more information.

93
LinuxIT Technical Education Centre
Index
__________________________________________________________________________

Index
/etc/shadow 29 make modules_install15
chage32 make oldconfig14
cron79, 81 make xconfig13
date93 make zImage 15
depmod 12 man72
gpasswd28 modinfo12
groupadd30, 31 modprobe 12
groupadd 28 modules.conf12
groups 27 modules.dep12
id 27 passwd26
init19, 20, 21, 22 peers91
insmod12 rmmod12, 41
LILO17, 22, 23 route37
logrotate81 sendmail59
lpd94 shutdown21
lsmod12 socket51
make bzImage 15 syslog.conf79
make clean15 tar84
make config13 test77
make dep14 useradd26, 30, 31
make menuconfig13 usermod31
make modules 15

You might also like