Apagado y encendido de una red

Indicadores de Logros:

Lectura: Apagado y encendido de una red

Los sistemas Unix fueron diseñados para brindar operación continua (no requieren ser apagados), por eso antes de apagar cada computador debe "cerrar" el sistema operativo con el programa shutdown. En esta sección se presentan indicaciones para apagar y encender una red Linux así como la forma de pasar parámetros al kernel cuando se inicia.

Apagado

Para cerrar y apagar puede emplear halt, poweroff o shutdown -h now. Y para cerrar y reiniciar puede emplear reboot o shutdown -r now.

Comando usado para apagar y cerrar.

Comando usado para apagar y cerrar.

Comando usado para apagar y cerrar (con la opción -h now) o para cerrar y reiniciar (con la opción -r now).

Comando usado para cerrar y reiniciar.

Los programas halt, poweroff y reboot realizan las siguientes acciones:

  • Cierran el sistema ejecutando shutdown [1] . Este programa envía un mensaje a todos los usuarios indicando que el sistema será apagado, envía a todos los procesos la señal SIGTERM (ver Procesos y tareas) y cambia el nivel de ejecución a 0 si se está apagando, 6 si está reiniciando o 1 si se ejecuta desde la línea de comandos sin las opciones -h ni -r. Al cambiar el nivel de ejecución se ejecutarán otras acciones especificadas en /etc/inittab como se explica en el siguiente capítulo (ver Inicialización del sistema).

  • Salvan en disco información que quede en memoria. Esto es necesario porque para hacer eficiente el uso de discos, parte de la información de estos es mantenida por el sistema operativo en memoria (en cache) y sólo se escribe a disco cuando resulta indispensable o cuando el usuario lo solicita explicitamente con el programa sync. Los programas halt, reboot y poweroff pueden no efectuar esta operación con la opción -n.

  • Registran la acción de apagar en la bitácora /var/log/wtmp. Esta acción no se realiza si se emplea la opción -d y se efectuará pero sin reiniciar o apagar con la opción -w.

  • Detienen interfaces de redes y apagan o reinician el computador. En máquinas que empleen APM [2] los programa halt y poweroff apagaran el computador después de cerrar el sistema. En caso de que un computador emplee APM pero el comando halt no lo apague, agregue al archivo /etc/lilo.conf la línea

    
 append="apm=on"
    
    y después ejecute el programa /sbin/lilo. Esta línea indica al kernel durante el arranque que debe activar el soporte para APM (ver Inicialización del sistema).

Dada la importancia de cerrar el sistema antes de apagarlo, puede tomar medidas para que los usuarios no puedan hacerlo:

  • Por defecto gdm permite que todo usuario apague el computador con una opción del menú. Esto puede cambiarse editando el archivo /etc/gdm/gdm.conf (línea HaltCommand) o empleando la herramienta de configuración de gdm (menú System/Configure).

  • Por defecto al presionar Ctrl-Alt-Del se ejecutará el programa shutdown. Puede desactivarse por completo esta secuencia en el archivo /etc/inittab eliminando o poniendo como comentario (poniendo un caracter '#' al comienzo) la línea de la forma ca:12345:ctrlaltdel:/sbin/shutdown opciones. Otra opción es agregar a tal línea la opción -a que indica a shutdown sólo apagar el sistema en caso de que uno de los usuarios que tengan sesiones abiertas cuando se presiona Ctrl-Alt-Del aparezca en el archivo /etc/shutdown.allow. Note que esto solamente ocurre en una interfaz no gráfica

Otra alternativa es enseñar a los usuarios por qué y cómo cerrar el sistema.

Encendido

Cuando inicie una red, encienda primero el servidor. Eventualmente al arranque de algún computador podría realizarse una revisión de discos que toma más tiempo de lo normal (esta revisión se evita con la opción -f de shutdown). En caso de que el sistema no haya sido cerrado antes de apagar, la revisión tomará más tiempo, tratará de resolver inconsistencias en el sistema de archivos, eventualmente puede requerir la intervención del administrador para completar la revisión con el programa fsck y en un caso extremo se perderá información o no podrá iniciarse el sistema.

Programa que permite la revisión del sistema de archivo.

En caso de requerir intervención manual durante el arranque, entrará a nivel de ejecución 1 (también llamado modo monousuario o single), aunque en algunos casos ni siquiera podrá entrar a modo mono usuario y deberá recurrir a un disquette de rescate (cuando Linux es instalado tiene la oportunidad de crearlo).

Nivel de ejecución monousuario

Tanto en modo monousuario como cuando emplee un disquette de rescate, no podrá emplear X-Window, así que debe estar preparado para operar desde la consola modo texto, por ejemplo para:

  • editar archivos de configuración con un editor que opere en modo texto como vi o emacs con la opción -nw (ver Editores de texto),

  • manejar el intérprete de comandos y el juego de herramientas Unix (ver bash y el juego de herramientas) y

  • usar diversos programas para configurar el sistema (que se estudian en este capítulo y el siguiente).

Desde un sistema que haya iniciado normalmente (nivel de ejecución entre 2 y 5), puede pasar a nivel de ejecución 1 con los comandos shutdown now o init 1. También puede iniciar este nivel desde el cargador de arranque, antes de entrar al sistema, pasando como parámetro al kernel la opción single.

El cargador de arranque es un programa que se ejecuta tras encender el computador, y cargar el kernel pasandole eventuales parámetros. En Debian 2.2 el cargador de arranque por defecto es LILO, aunque puede remplazarse con otros como GRUB o Loadlin. Estos cargadores permiten cargar más de un sistema operativo (en caso de que tenga en sus discos varios y que lo haya configurado apropiadamente).

Programa que se ejecuta tras encender el computador (Cargador de arranque), por defecto en Debian 2.2.

Cargador de arranque (no es LILO).

Cargador de arranque.

Notará que en Debian para entrar a modo mono usuario es necesario dar la clave de root, si la olvida puede pasar como parámetro init=/bin/sh desde el cargador de arranque o puede iniciar con un disquette de rescate. Dado que la posibilidad de pasar parámetros podría en algunos casos ser una falla de seguridad, puede configurar el cargador de arranque para restringirla.

Parámetros desde el cargador de arranque

Puede determinar si su cargador de arranque es LILO, observando si durante el arranque, después de completar la inicialización del BIOS, aparece una línea que comienza con la palabra LILO. GRUB puede presentar un menú o presentar una línea de comandos.

Parámetros desde LILO

Para permitirle elegir el sistema por usar durante el arranque, LILO presenta un prompt, desde el cual puede escribir la etiqueta del sistema por cargar (las etiquetas disponibles se presentan presionando TAB o examinando /etc/lilo.conf). En caso de que haya configurado LILO para que no presente prompt, puede hacer que aparezca presionando la tecla shift [3] durante el arranque cuando aparezca la palabra LILO.

Una vez en el prompt puede pasar parámetros al kernel dándolos a continuación de la etiqueta del sistema y separando unos de otros con espacios. Así por ejemplo para pasar a modo mono usuario, suponiendo que linux es la etiqueta de Linux:


linux single

Las etiquetas pueden configurarse en /etc/lilo.conf (líneas de la forma label=etiqueta), así como el prompt (línea de la forma message=archivo).

Importante: Tenga en cuenta que después de modificar /etc/lilo.conf debe ejecutar el programa /sbin/lilo para que sus cambios sean instalados en el MBR o en el sector donde LILO está instalado. (sección cargador de arranque ver Discos duros).

Por seguridad es posible restringir con una clave el paso de parámetros con las líneas:


password=clave
restricted
de las cuales la primera establece una clave para LILO y la segunda indica que sólo debe solicitarse si se pasan opciones a una etiqueta. Para evitar que la clave pueda ser vista por otros, establezca los permisos de /etc/lilo.conf para que sólo pueda ser leido y escrito por el usuario root (ver Archivos y permisos).

Puede hacer el paso de un parámetro permanente (es decir que se realice automáticamente cada vez que inicia), agregandolo a la línea append (o creando esta línea) a continuación de la etiqueta de Linux. Por ejemplo para indicar al kernel que el computador tiene 128Mb de RAM (en caso de que no lo detecte ver Memoria RAM), la parte de LILO que corresponde a Linux puede ser algo como:


image=/vmlinuz
        label=linux
        read-only
        optional
        append="mem=128M"

Parámetros desde GRUB

GRUB tiene un modo interactivo desde el cual puede cargar el kernel que desee (si tiene varios en su computador). Desde ese modo para iniciar Linux suponiendo que está en la raíz, y que la raíz está en la primera partición del primer disco IDE se emplea:


kernel (hd0,0)/vmlinuz root=/dev/hda1 single

También puede configurarse un menu para GRUB que permitirá al usuario elegir un sistema y ejecutar los comandos necesarios para iniciarlo y las opciones para el kernel. Tal menu se configura en el archivo /boot/grub/menu.lst, que podría contar con entradas diferentes para iniciar en modos diferentes como se ejemplifica a continuación (suponiendo que el kernel y la raíz están en la primera partición del disco IDE primario):


# Por defecto, iniciar primera entrada
default 0
# Arrancar automaticamente en 30 segundos
timeout 30
# Entrada del menu para iniciar Linux
title  Debian
kernel /vmlinuz root=/dev/hda1
# Entrada del menu para iniciar Linux en modo mono usuario
title  Debian
kernel /vmlinuz root=/dev/hda1 single

Al emplear un menú un usuario también puede emplear el modo interactivo de GRUB, para evitarlo puede proteger con clave el modo interactivo agregando password su_clave al archivo de configuración [4] Otra opción es que cree dos menús, uno para usuarios normales (/boot/grub/menu.lst) y otro para administradores (digamos /boot/grub/menu-admin.list) y que proteja el segundo con clave empleando password su_clave /boot/grub/menu-admin.list.

Algunos parámetros para el kernel

La referencia completa es BootPrompt-HOWTO, a continuación presentamos algunos parámetros:

root=disp

Por ejemplo root=/dev/hdd1 o en lugar de /dev/hdd1 la partición que debe montarse como directorio raíz (útil por ejemplo si debió cambiar su disco duro con Linux a otra interfaz o si agrega o elimina particiones). Por defecto será el configurado en /etc/lilo.conf en la sección apropiada en una línea de la forma:


root=/dev/hda2
Los dispositivos que podrían especificarse son IDE (e.g /dev/hda1), SCSI (e.g /dev/sda1), NFS en caso de una terminal que cargue directorio raíz por red (/dev/nfs), imagen initrd como raíz (/dev/ram ver Configuración del kernel)

ro

Para montar la partición raiz en modo sólo lectura.

Bitácoras

Las bitácoras en Debian están configuradas por defecto en archivos del directorio /var/log, hay varias de acuerdo al programa que registra los mensajes, todas excepto wtmp y btmp son textos que puede examinar con un editor o un paginador (e.g less):

auth.log

Mantiene mensajes de autenticación, producidos por ejemplo por la librería PAM indicando que usuarios abrieron y cerraron sesiones. Manejado por syslog.

kern.log

Mensajes del kernel. Manejado por syslog.

btmp, wtmp

wtmp mantiene información de usuarios que han abierto o cerrado sesiones, se examina con el programa last (está relacionada con /var/run/utmp que mantiene información de los usuarios que están conectados ---usado por el programa who). btmp mantiene información de sesiones que se intentaron abrir pero que no pudieron autenticarse, se examina con el progama lastb.

lpr.log

Mensajes sobre impresoras. Manejado por syslog.

mail.log, mail.err, mail.info, mail.warn, exim

Mensajes sobre correo. Todos excepto exim son manejados por syslog.

user.log

Mensajes de diversos programas, tipo user. Manejador por syslog.

messages

Mensajes informativos de diversos programas (e.g del kernel). Manejado por syslog.

daemon.log

Mensajes varios.

debug

Mensajes de depuración de algunos programas, empleados usualmente por los desarrolladores para encontrar fallas.

uucp.log

Empleado por el sistema Unix to Unix Copy (transferencia de archivos en algunas redes no tan modernas o sin muchos recursos).

news/news.crit news/news.err news/news.notice

Empleado por un servidor de Netnews.

Algunas bitácoras son manejadas por el programa syslogd (paquete sysklogd), que se ejecuta durante el arranque y espera mensajes. Cada mensaje que recibe de algún programa, lo registra junto con la fecha y la procedencia aun archivo o dispositivo (e.g. una consola). Cada mensaje tiene un tipo y una prioridad, que permiten determinar el archivo o dispositivo al cual se envia. La relación entre tipos y prioridades con archivos se configura en el archivo /etc/syslogd.conf cuyas líneas pueden ser comentarios, o similares a:


news.crit                       /var/log/news/news.crit

Donde news se remplaza por el tipo de mensaje, crit se remplaza por la prioridad y /var/log/news/news.crit por el archivo o dispositivo al que se deben enviar los mensajes con ese tipo y prioridad. Los tipos posibles son: authpriv o security empleados por programas que realizan autenticación de usuarios, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0 a local7. Las prioridades posibles son: debug, info, notice, warning, err, crit, alert, panic. También puede emplearse * para especificar todos los tipos o todas las prioridades.

Los programas que emplean syslogd, enviarán mensajes con tipos acordes con la funcionalidad del programa y con prioridad acorde con la gravedad o importancia. Para agregar eventos a una bitácora desde el interprete de comandos (o desde un script) puede emplear el programa logger (paquete bsdutils). Para revisar los archivos empleados por syslogd, puede ejecutar syslogd-listfiles -a.

Dado que las bitácoras pueden crecer mucho (algunas en un día), en Debian son rotadas con cierta frecuencia (diaría, semanal o mensual) empleando cron (ver Tiempo), en particular syslog y auth.log son rotados a diario, mail.log, daemon.log, messages, lpr.log, auth.log, debug, mail.err, mail.info, kern.log, mail.warn, uucp.log y user.log son rotados semanalmente con el programa savelog (ver /etc/cron.weekly/syslogd). Por defecto se rota mensualmente el archivo wtmp con el programa logrotate y se genera un reporte de la actividad en wtmp.report (ver /etc/cron/weekly/logrotate).

Lectura recomendadas: Apagado y encendido de una red

Ejercicios: Apagado y encendido de una red

1. Escoja una política para el apagado de los equipos y describa como la implementaría.
2. Emplee el programa shutdown desde la línea de comandos para pasar al nivel de ejecución 1 (también llamado modo single). ¿Qué procesos hay cuando inicia este modo? ¿Por qué se llama single a este modo?
3. Emplee el programa last para examinar la bitácora /var/log/wtmp, ¿qué información se consigna en esa bitácora?
4. Las bitácoras en Debian 2.2 son rotadas periódicamente por el program logrotate. Por defecto la bitácora /var/log/wtmp se borrará mensualmente (quedará una copia de la bitácora del mes anterior en /var/log/wtmp.1 y un reporte de la actividad del mes anterior en /var/log/wtmp.report. El periodo de rotación o la cantidad de meses pasados que se deben mantener puede configurarse en el archivo /etc/logrotate.conf. Configure ese archivo para que almacene la información de los 2 últimos meses. ¿Qué otras características pueden configurarse con logrotate ?
5. Una bitácora que puede resultar importante para detectar fallas de seguridad es /var/log/btmp que mantiene intentos fallidos de iniciar sesiones en el sistema [5]
6. Los comandos dados por cada usuarios son registrados por bash (ver Lectura Configuración de una sesión) y los procesos iniciados son registrados por acct. Para examinar la bitácora de los procesos iniciados puede emplear lastcomm y para ver estadísticas ac y sa. ¿Qué información presentan estos programas y para que pueden servir?
7. Restrinja el cargador de arranque para que requiera clave antes de pasar parámetros al kernel.

1. Escoja una política para el apagado de los equipos y describa como la implementaría.

En nuestro parecer la mejor política es buena instrucción, es enseñar a los usuarios a apagar correctamente el sistema buscando que ellos quieran ayudar a mantener la red.

2. Emplee el programa shutdown desde la línea de comandos para pasar al nivel de ejecución 1 (también llamado modo single). ¿Qué procesos hay cuando inicia este modo? ¿Por qué se llama single a este modo?

Se ven los procesos con ps -ax, sólo están procesos indispensables para el kernel y para mantener una sesión de bash (kswapd, init, kflushd, kupdate, kpiod, bash). Se llama single porque es para un sólo usuario y sin red, sirve para efectuar labores de mantenimiento como corrección de discos.

3. Emplee el programa last para examinar la bitácora /var/log/wtmp, ¿qué información se consigna en esa bitácora?

Se consigna arranques del sistema, reinicios y entradas a sesiones por parte de usuarios. Se consigna la fecha y hora de cada evento.

4. Las bitácoras en Debian 2.2 son rotadas periódicamente por el program logrotate. Por defecto la bitácora /var/log/wtmp se borrará mensualmente (quedará una copia de la bitácora del mes anterior en /var/log/wtmp.1 y un reporte de la actividad del mes anterior en /var/log/wtmp.report. El periodo de rotación o la cantidad de meses pasados que se deben mantener puede configurarse en el archivo /etc/logrotate.conf. Configure ese archivo para que almacene la información de los 2 últimos meses. ¿Qué otras características pueden configurarse con logrotate ?

Editar por ejemplo con vi /etc/logrotate buscar la sección /var/log/wtmp y cambiar rotate 1 por rotate 2. Además de rotar las bitácoras, eliminando la más antigua después de cierto tiempo, puede mantenerlas comprimidos y enviar correos a usuarios. Por defecto en Debian 2.2 este programa es ejecutado a diario.

5. Una bitácora que puede resultar importante para detectar fallas de seguridad es /var/log/btmp que mantiene intentos fallidos de iniciar sesiones en el sistema [5]

Crear esta bitácora en blanco por ejemplo con touch /var/log/btmp. Intentar entrar con un usuario que no exista o una clave errada, ejecutar lastb y comprobar que se agregó una entrada.

6. Los comandos dados por cada usuarios son registrados por bash (ver Lectura Configuración de una sesión) y los procesos iniciados son registrados por acct. Para examinar la bitácora de los procesos iniciados puede emplear lastcomm y para ver estadísticas ac y sa. ¿Qué información presentan estos programas y para que pueden servir?

lastcomm presenta los programas iniciados, cada uno junto con el usuario que lo inicio, el tiempo que duró la ejecución, la fecha cuando inició y flags que indica como inició y terminó; la información la extrae de /var/account/pacct. ac presenta tiempo total de conexión de cada usuario de acuerdo al archivo /var/log/wtmp.

7. Restrinja el cargador de arranque para que requiera clave antes de pasar parámetros al kernel.

Editar /etc/lilo.conf agregar las líneas password=clave y restricted, después ejecutar /sbin/lilo.

Notas

[1]

Cuando shutdown es ejecutado desde la línea de comandos recibe como parametro la hora a la que debe cerrar (now indica en el mismo instante), como segundo parámetro opcional el mensaje por presentar a los usuarios, y entre las opciones que acepta -h indica apagar después de cerrar, -r reiniciar, -f para evitar el chequeo de discos la siguiente vez que inicie el sistema, -F para obligar un chequeo de discos cuando el sistema reinicie, -c para cancelar una llamada previa a shutdown, -t seg para que realice una pausa de los segundos especificados entre el envío de la señal SIGTERM y el cambio de nivel de ejecución (puede servir para dar más tiempo para cerrarse a algunos procesos).

[2]

APM: Advanced Power Management, permite manejar la energía consumida por el computador, por ejemplo para disminuirla cuando no se usa durante cierto tiempo o para apagarlo por software.

[3]

LILO puede configurarse para presentar el prompt siempre (agregando una línea con la palabra prompt a /etc/lilo.conf) y para iniciar un sistema por defecto después de que transcurra un tiempo límite (especificado en una línea de la forma delay=tiempo en decimas).

[4]

Con GRUB puede poner en el archivo de configuración una clave transformada con el algoritmo MD5 empleando password -md5 clave_transformada.

[5]

Otra bitácora que mantiene información sobre logins de usuarios es /var/lastlog que se examina con el programa lastlog