Servidores Gnu/Linux - Guía de administración de

 
SEGUIR LEYENDO
Guía de Administración de servidores Gnu/Linux           Antonio Becerro Martinez. 2005.

                            Guía de administración de
                           servidores Gnu/Linux.

      Copyright (c) 2006 Antonio Becerro Martinez.
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.2
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front­Cover Texts, and no Back­Cover
      Texts. A copy of the license is included in the section entitled "GNU
      Free Documentation License".
Guía de Administración de servidores Gnu/Linux                                          Antonio Becerro Martinez. 2005.

  1. INSTALACION DE DEBIAN GNU/LINUX.

   En primer lugar, vamos a realizar una instalación de Debian en un Pc. La versión que vamos a utilizar, es Woody
release 4. Si el ordenador tiene instalado previamente otro sistema operativo como Microsoft Windows, lo
conservaremos intacto en su partición. Introducimos nuestro CD­Rom de Debian, y arrancamos el equipo, poniendo
especial cuidado en que la Bios esté configurada para arrancar un CD­Rom de instalación. Normalmente, solo habrá que
situar como dispositivo de arranque primario el CD­Rom, en lugar del disco duro. Los ajustes de la Bios, se inician pulsando
la tecla Supr, durante el arranque del ordenador. El apartado que necesitamos modificar se suele llamar: boot loader o
algo similar. En todo caso, ello depende de la marca y versión de la Bios que tengamos. Hecho esto, se inicia el programa
de instalación de Debian. Pulsamos F3, en el menú que aparece a continuación elegimos el kernel 2.4, y seguimos
todos los pasos de la instalación (idioma, teclado, etc). Creamos solamente dos particiones, una para la memoria de
intercambio (swap), y otra para el sistema. Dos particiones es lo mínimo para un sistema Gnu/Linux, aunque podemos
añadir las que queramos. Es muy habitual una partición /users, para los usuarios, o /home, o lo que queramos. /var y /
data, son particiones habituales, en muchos servidores. Formateamos las particiones nuevas y les asignamos los puntos de
montaje adecuados. A continuación escogemos: instalar el nucleo y los mó dulos. Habitualmente, en el caso de un
Pc, con componentes comunes, no necesitaremos instalar controladores de dispositivos adicionales. En estos casos, el
kernel dispone de suficiente información para manejar el hardware por si mismo. Cuando llegamos al apartado de elegir
DHCP o BOOTP, no instalamos ni uno ni otro. Un servidor DHCP, es aquél que nos asigna una IP dentro del rango que
tenga disponible. Es una forma de conectarse a internet pŕacticamente autómatica. BOOTP es un método diferente,
apropiado en algunos casos concretos (como los Clusters). La tarjeta de red, hace un broadcasting (una llamada en busca
de servidores disponibles), y se autoconfigura. Así que, si instalamos el servidor BOOTP en una máquina, el resto de
máquinas se conectarán solas. Nosotros no vamos a utilizar ni DHCP, ni BOOTP, sino que vamos a configurar
manualmente nuestros datos de red. En nuestro caso son los siguientes:

                                         IP: 192.168.0.209
                                         Máscara: 255.255.255.0
                                         Dominio: hileras.net
                                         Pasarela: 192.168.0.100
                                         DNS: 192.168.0.254
                                               192.168.1.100
                                               192.168.1.101
                                         nombre: aula9
                                         Pass: nodo50
                                         Direcció n: aula9.hileras.net

  Ahora, se instala el sistema base. Después escogemos hacer el sistema arracable (Lilo). No hacemos disco de arranque.
No es necesario, ya que siempre podemos utilizar el disco de instalación de Debian, y llegar hasta el punto de la instalación
que nos interese, para hacer algún cambio, sin realizar ninguna otra modificación. Más tarde, nos pregunta si queremos
utilizar GMT. Decimos que sí. Es la hora del meridiano de referencia, que se encuentra en el Reino Unido. Como algoritmo
de encriptación de contraseñas, elegimos md5 en lugar de Des, un algoritmo más antiguo. Nos va a aparecer, un mensaje
acerca de los peligros de utilizar NIS (sistema de contraseñas no locales). Es solo una nota informativa. No hay ningún error
en la instalación. Ante la pregunta: Shadows password, respondemos Yes. Es más seguro. Esto es, que las
contraseñas en lugar de guardarse en la carpeta: /etc/password (que es un directorio accesible a todo el mundo) se
guarden en: /etc/shadow, que es un directorio accesible solo por el root. Naturalmente, las contraseñas van encriptadas,
en cualquier caso.
    En el siguiente paso, cuando nos pregunta si queremos instalar los paquetes Pcmcia le decimos que no, ya que no
estamos realizando la instalación en un portátil. Ahora vamos a pasar a una parte de la instalación muy importante: la
configuración de Apt. Este es el programa que gestiona los paquetes en Debian. Es el mejor gestor de paquetes de todas
las distribuciones Gnu/Linux. Apt puede buscar, instalar y resolver las dependencias de cualquier paquete .deb
Guía de Administración de servidores Gnu/Linux                                              Antonio Becerro Martinez. 2005.

e incluso de código fuente, desde múltiples repositorios. Es cómodo de utilizar, robusto y muy capáz. El enfoque que hace
Debian de este programa es peculiar. Como apt es muy fléxible, la instalación de Debian es minimalista (instalación
base). Se instala lo esencial para funcionar, se configura apt, y el resto ya se instalara más tarde, a medida que sea
necesario. Mediante el comando: apt­setup vuelven a salir las pantallas de configuración de apt, en caso de que
queramos volver a configurarlo. Escogemos como medio de instalación ftp, como servidor ftp: ftp.rediris.com y como
país Spain (es). Para instalar paquetes en Debian hay muchos métodos. Veamos algunos;

                        ­apt        ­tar.gz         ­tasksel          ­apkg            ­dselect

   No obstante, la herramienta que más se suele utilizar es apt. En este curso vamos a utilizar preferentemente apt. En
cualquier caso, en el siguiente paso de la instalación de Debian, va a aparecer tasksel. Este es un programa de
instalación de paquetes, que muestra un menú, con todos los paquetes agrupados dentro de categorias más o menos
genéricas, como X windows system o Desktop environment. Si escogemos cualquiera de estas, tasksel instalará todos los
paquetes asociados a la categoria seleccionada. tasksel puede ser ejecutado en cualquier momento desde una shell,
mediante el comando: tasksel. En nuestro caso, escogemos: X windows system y Desktop environment, así como tcl­tk
(conjunto de librerias gráficas esenciales para muchos programas. (Permiten, por ejemplo, configurar el kernel en modo
gráfico.)
   Seguimos adelante. El instalador nos va a preguntar si queremos instalar exim, el gestor de correo por defecto, en
Debian. Le decimos que no. Ahora llega el momento de configurar el sistema gráfico. Se utiliza el siguiente comando:

                                         dpkg­reconfigure xserver­xfree86

  El comando dpkg­reconfigure sirve para volver a configurar cualquier paquete en Debian. Durante esta parte,
tenemos que escoger el monitor, la tarjeta gráfica, el ratón, el teclado, y cualquier otro periférico que tengamos.
Naturalmente, tendremos que conocer nuestro hardware de antemano. El hardware estandar no presentará ningún problema.
Si tenemos algún periférico especial, puede ser que tengamos que trabajar algo más. Hecho esto, nuestra flamante
distribución Debian estará completamente instalada.

 Veamos ahora un listado de comandos para el gestor de paquetes apt:

        apt­get install paquete                          # Instala paquete.
        apt­cache search cadena de caracteres            # busca paquetes.
        apt­get update                                   # Actualiza la lista de paquetes.
        apt­cache show paquete                           # Descripción máxima de paquete.
        apt­cache depends paquete                        # Muestra dependencias.
        apt­get install /testing                         # Cambio a la rama testing.
        apt­get install /unstable                        # Cambio a la rama inestable.
        apt­get remove paquete                           # Borra paquete. Deja ficheros de configuración.
        apt­get remove –purge paquete                    # Borra paquete y fichero de configuración.
        apt­get upgrade paquete                          # Actualiza paquete.
        apt­get dist­upgrade paquete                     # Actualiza todos los paquetes de la distro.
        apt­get source paquete                           # Descargar código fuente.
        apt­get ­b source paquete                        # Descargar fuente y compilarlo automáticamente
        apt­get autoclean paquete                        # Elimina versiones anteriores.

  Nota
  more y less, son paginadores. Sirven para mostrar el contenido de un fichero en el monitor,
  en forma de pantallas sucesivas. Muy útil para visualizar documentos grandes.
Guía de Administración de servidores Gnu/Linux                                                Antonio Becerro Martinez. 2005.

  Nota
  El pid, es el número de un proceso. Es el resultado de unir p (proceso) e id (identificador).

 Por último, vamos a hacer unos test a nuestros medios de instalación, en este caso servidores ftp. El programa que vamos
a utilizar se llama: netselect. En primer lugar, hay que instalarlo mediante apt. Vamos a poner a prueba los siguientes
servidores:
                                                     ftp.rediris.es
                                                    ftp.lnux.co.uk
                                                      ftp.sunet.se
                                                    ftp.debian.org

  El programa netselect, devuelve un valor numérico de cada servidor. El número más bajo, indica una respuesta más
rápida por parte del servidor. Es interesante saber cual va mejor, para poder instalar los paquetes que nos interesen, de
forma lo más rápida posible.

  2. APACHE

  El servidor apache, es seguramente el programa de software libre más conocido. Su éxito, radica en su robustez, y su
capacidad para soportar una enorme cantidad de características en forma de módulos. Su extensa API, permite a los
desarrolladores ampliar sus capacidades para hacer casi cualquier cosa. Nosotros vamos a instalar la versión 1 de Apache.
Existe versión 2, pero todavía no se considera lo bastante estable, en entornos de producción. Utilizaremos un módulo
adicional de encriptación llamado ssl. De modo, que la versión se llama: apache­ssl.
 En primer lugar, instalamos el programa mediante: apt­get install apache­ssl El programa de instalación nos va a
hacer un par de preguntas: Server Name y Email Address. La primera es la identificación de nuestro equipo. En
nuestro caso: aula9.hileras.net. Como dirección de correo no ponemos nada. Los ficheros de configuración de Debian se
encuentran en: /etc y los de Apache­ssl en: /etc/apache­ssl El archivo de configuración tiene el siguiente nombre:

                                                           httpd.conf

  Todo lo que hay que hacer para configurar Apache­ssl, es editar este fichero mediante un editor de textos. Podemos
utilizar cualquiera de estos: emacs, xemacs, kate, etc si nos defendemos bien en modo de texto, emacs es el mejor
editor, es extensible, configurable y está completamente autodocumentado. El fichero httpd.conf, está muy comentado.
Solo están activas las lineas que no empiezan por el carácter:#, el resto son comentarios. Podemos escribir nuestros propios
comentarios añadiendo lineas precedidadas por: #. Primero hacemos una copia del fichero original httpd.conf. Con
guardarlo con otra extensión es suficiente. Cada vez que hagamos un cambio, hay que parar y arrancar el servidor Apache.
Estos son los comandos:

                       apache ­sslctl stop                          # para Apache­ssl
                       apache ­sslctl start                         # arranca Apache­ssl
                       apache ­sslctl restart                       # para y arranca Apache­ssl

 Lo mínimo que hay que hacer para tener un servidor Apache funcionando es eliminar el carácter # (comentario) a la linea: /
ServerName, y sustituir ServerName por el nombre de nuestro servidor. En este caso queda: /aula9.hileras.net
Para comprobar su funcionamiento paramos y arrancamos el servidor apache, y en un navegador de internet, tecleamos esta
url:
                                           https://aula9.hileras.net
Guía de Administración de servidores Gnu/Linux                                          Antonio Becerro Martinez. 2005.

  Si en lugar de https, escribimos http, no funciona. Por el momento, el puerto 80 no está abierto (puerto estandar para
servidores http) por motivos de seguridad. La página web que aparece en el navegador se llama: index.html, y su ruta es: /
etc/www, nosotros podremos crear carpetas nuevas dentro del directorio /etc/www para nuestras páginas web. Si creamos
una carpeta llamada, por ejemplo: empresa1, entonces, la url será: https://empresa1/aula9.hileras.net. Apache­
ssl, asume que la web de inicio de cualquier sitio web debe llamarse: index.html. Como se ve, la instalación y configuración
básica de Apache­ssl, no es nada difícil.

 En principio, parece buena idea personalizar la página de inicio de nuestro servidor. Podemos hacerlo en el editor de texto
que estemos utilizando, o ejecutar un editor de html, como Quanta o Bluefish. Ahora, vamos a ver con un poco más de
detenimiento el fichero de configuración de Apache: httpd.conf.
 Los apartados más importantes a tener en cuenta son las siguientes lineas:

                           Servertype standalone # arranca por ti mismo.
                           Si se desea, se puede hacer que el demonio inetd
                           arranque el Apache. Ventaja: es cómodo porque en
                           el inicio de los servicios de red se tiene Apache activo.
                           Desventaja: si inetd falla, Apache también y viceversa.

                           ServerRoot        # ficheros de configuración.

                           Timeout 300 # 300 sg. (5 minutos). Tiempo máximo
                           de una conexión. Si durante 300 sg. el usuario no hace
                           nada, Apache le desconecta. La idea es no perder ancho
                           de banda en conexiónes acabadas.

                           StartServers 5        # 5 procesos hijos en cola, como
                           máximo. Es decir, 5 usuarios.

                           MaxClients 150           # 150 usuarios simultáneos, como
                           máximo.

                           Listen               # Es el puerto. Para http normalmente
                           es el 80. https utiliza el 443. https es un protocolo para
                           conexiones seguras o encriptadas.

                           DocumentRoot # Es la ruta a los archivos de las
                           páginas Web. Por defecto /etc/www

                            Errorlog # Es la ruta al fichero de errores. Por defecto
                           /var/log/apache­ssl/error.log Hay 7 niveles de información
                           de error, según su importancia: debug, info, notice, warn,
                           error, crit, alert y emerg.

  Vamos a ver ahora los enlaces directos o Alias. estos, sirven para que un usuario teclee en la url de la página, a
continuación del dominio de nuestro servidor, el nombre de un directorio y que se le muestre otro diferente. El que nosotros
hayamos definido. ¿Para que sirve? Veamos un ejemplo. Supongamos que queremos que los usuarios de nuestro servidor
puedan ver el contenido del directorio: /etc. Entonces, para hacer un alias escribimos:

                                              Alias /configuracion /etc
Guía de Administración de servidores Gnu/Linux                                                Antonio Becerro Martinez. 2005

  El usuario se conecta a la url: https//aula9.hileras.net/configuració n y el navegador le muestra el contenido de /
etc. Esta técnica, puede servir para hacer una especie de rudimentario servidor de descarga de ficheros, al estilo ftp. En
una carpeta ponemos los ficheros a descargar, hacemos el alias, y cuando los usuarios se conecten podrán descargarse los
ficheros. Los Alias se
escriben en el fichero httpd.conf.

   Nota
   El propietario de Apache (por así decirlo el administrador) es el usuario: www­data, del
   grupo www­data, por motivos de seguridad.

  Ahora vamos a hacer un directorio privado accesible mediante login y password (usuario y contraseña) desde un
navegador de internet. El comando para esta acción es:

                                               htpasswd ­c ruta a directorio

 Entonces, el sistema te pide que le proporciones una contraseña, y que la confirmes escribiendola de nuevo. Esto, genera
en el directorio propuesto, un fichero llamado: .htaccess.
Este fichero está oculto (todos los ficheros precedidos por un punto lo están en Unix). No obstante es editable en un editor
de texto como vi. Veamos que contiene:
                                        AuthName "Directorio privado"
                                        AuthType Basic
                                        AuthUserFile /etc/apache­ssl/htpasswd
                                        require user antonio

  La primera linea simplemente es el nombre. La segunda el tipo de restricción que se va a aplicar, en este caso: Basic. La
tercera linea indica la ruta al directorio al cual queramos aplicar las restricciones. Finalmente, la última linea es el nombre del
usuario, en este caso antonio. Si queremos crear otro usuario, simplemente cambiamos antonio por joseba. El fichero .
htaccess siempre tiene que estar en el directorio al cual se aplican las restricciones.

   Veamos, a continuación, como crear un Virtual Host. Esto se traduce por alojamiento virtual. La mejor manera de
entenderlo es mediante un ejemplo. Unos amigos quieren alojar en nuestro servidor su web. Si hiciesemos una carpeta
nueva para ellos en /etc/www, técnicamente estaría resuelto. Sin embargo, nuestros amigos tienen su propio dominio, y
quieren que sea este, y no el nuestro el que se visualice en la url de su página. Lo que hay que hacer, es una redirección.
Los usuarios que se conecten a su dominio, realmente se tienen que conectar a nuestra máquina. Lo primero que hay que
saber, es que el Virtual Host hereda los parámetros de configuración generales. Realicemos un ejemplo. Lo primero,
editamos httpd.conf, y añadimos el siguiente contenido:

                # mi servidor
                 ServerName www.miempresa.com                              # url del cliente
                 SSLDisable                                                # modulo de seguridad. Apagado.
                 DocumentRoot /var/miempresa                               # ruta a documento html
               
  Hecho esto, cuando los usuarios se conecten a: http://www.miempresa.com, realmente apache mostrara el
contenido de: /var/miempresa.

 Apache, tiene capacidad para hacer muchas otras cosas, mediante módulos. Estos son fragmentos de código que añaden
funcionalidades nuevas. Veamos un ejemplo:
Guía de Administración de servidores Gnu/Linux                                                         Antonio Becerro Martinez. 2005

         mod_speling        # Cuando un usuario comete un error ortográfico, presenta una lista con las
                              las opciones correctas más similares.

  Para aplicar este modulo, editamos el fichero: httpd.conf, buscamos la linea mod_speling, borramos el carácter: #, y
añadimos: CheckSpelling On. Queda así:

                          LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so
                          CheckSpelling On

 Si ahora hacemos una prueba, veremos el resultado. La forma más sencilla es cometer un error a propósito. Por ejemplo,
escribimos: http://aula9.hileras.net/indexe (en lugar de: index). Existen muchos más módulos para hacer otras cosas. Se
utilizan de la misma forma.

   Bien. Ya tenemos un servidor Apache funcionando, hemos alojado varios sitios Web, instalado módulos. Ahora,
necesitamos saber si nuestro servidor está dando un buen servicio. ¿Es lo bastante rápido? ¿Soporta bien un número alto de
conexiones simultaneas? ¿Sufren los usuarios demoras a la hora de visualizar los sitios que alojamos? Para poder responder
a estas preguntas, es necesario instalar algunos programas especializados en test de rendimiento. Un buen progra­
ma es: httperf Se utiliza así:

         httperf –hog –server aula9.hileras.net –num­conn 5000 # El número del final es opcional.
         En este caso 5000 conexiones. Podemos poner lo que queramos hasta hundir el Servidor.

  Apache no es fácil de hundir. Es un Servidor muy robusto. Veamos otro programa, esta vez en modo gráfico:
Kdesystemguard (es decir, el guardián de Kde). Puede mostrar mediante varios tipos de gráficas, el estado de la
máquina en tiempo real. Es decir, que se va actualizando sobre la marcha. Las conexiones simuladas lanzadas por httperf,
han tenido una repercusión en en el rendimiento del ordenador: procesador, memoria, etc. Con Kdesystemguard, lo
podemos ver. Es buena idea ejecutar al mismo tiempo httperf en una consola, cambiando el número de conexiones y ver
como esto afecta al sistema. El parámetro –timeout número, comprueba el tiempo de respuesta. Mediante este método,
emulamos conexiones al puerto 80 (http), si añadimos el parámetro –port443, hace lo mismo en el puerto 443. El
parámetro –ssl es para utilizar encriptación, en la simulación. Este último parámetro, obliga a Apache a un esfuerzo
notablemente superior. Veamos una posibilidad más sofisticada:

                                                    ­­wsess=24,6,4
                              Esto quiere decir: simula 24 conexiones, en bloques de 6, cada 4 segundos.

 Este parámetro rompe la linealidad. Con anterioridad, el número de conexiones, ya fueran un número muy alto o muy bajo,
se llevaban a cabo de una en una. ­­wsess permite conexiones simultaneas, lo cual es muy interesante, pues podremos
comprobar la capacidad de nuestro servidor ante una situación, mucho más cercana a la realidad. De este modo, a medida
que aumentemos el número, podremos saber los límites de nuestra máquina. Estas pruebas, son esenciales, ya que de lo
contrario no podríamos configurar Apache de una forma apropiada. Es imprescindible saber lo que nuestra máquina
aguanta, para editar el fichero: httpd.conf en función de nuestras necesidades específicas.

  Con Kdesystemguard, podíamos ver unas gráficas de rendimiento de la máquina. Esto esta bien. Pero seria mucho
más interesante disponer de unos informes, con la información concreta de cada conexión (hora, usuario, etc). Para esto se
utilizan estos dos programas:
                                                      webalizer
                                                      analog

  Webalizer y analog, nos informan de las conexiones recibidas. Los datos de estos programas suelen ser: IP / hora /
navegador. Webalizer los presenta en formato html, en color, con gráficos y demás. analog posee un frontend llamado:
fanalog.
Guía de Administración de servidores Gnu/Linux                                                 Antonio Becerro Martinez. 2005

 Los accesos que nos van a aparecer en los informes de webalicer y analog, son las peticiones que hicimos previamente con
httperf.

  Nota
  webalizer da un error con Apache­ssl. Hay que editar su fichero de configuración en /etc y
  modificarlo cambiando el nombre apache, por apache­ssl.

  Nota
  En Unix, las extensiones de los archivos son meramente informativas. El comando file sirve
  para saber de que tipo es un archivo. No es obligatorio poner extensión a los ficheros.

  3. SHELL SCRIPT.

  La shell, es el intérprete de comandos de la mayoría de los sistemas Unix o similares a Unix. Un script es un guión,
es decir una serie de instrucciones para la consola guardado en un fichero de texto de extensión: .sh. En Gnu/Linux, esta
técnica alcanza el nivel de un lenguaje de programación. Para los administradores de Servidores, los scripts son
herramientas muy útiles. Permiten hacer tareas de una forma muy productiva, ejecutar aplicaciones cuando se desee,
mediante el demonio crontab, etc. Incluso el sistema operativo se inicia gracias a un script (initd).
  Este capítulo, se divide en tres secciones:

                     1­ Comandos.
                     2­ Generación de Script.
                     3­ Ejecución de programas con periodicidad (crontab).
                        En esta parte también estudiaremos los scripts de arranque.

  3. 1. COMANDOS.

                     touch fichero                       # crea fichero vacío.
                     ls -la                              # lista todos los ficheros detalladamente.
                     -lat                                # lista todos los ficheros por fechas.
                     -latr                               # invierte ordenación.
                     -l                                  # Detalles.
                     mkdir                               # crea directorio.
                     rmdir                               # borra directorio.
                     cp                                  # copia directorio.
                     mv                                  # renombra y mueve simultaneamente.
                     rm                                  # borra directorios vacios.
                     rm -r                               # borra directorios llenos.
                     cat fichero                         # /head presenta fichero. (con head las 15 primeras)
                     more fichero                        # paginar fichero.
                     tail -f fichero                     # ver finál de fichero y los cambios que pueda haber
                                                            en tiempo real.
                      echo                               # devuelve lo que se escribe.
Guía de Administración de servidores Gnu/Linux                                     Antonio Becerro Martinez. 2005

                  ls / wc                        # se usa -c (caracteres) -w (palabras) -l (lineas).
                                                    lista / y muestra palabras y caracteres.
                  cat                            # cuenta. Con -head cuenta la cabecera
                                                    Con -grep + cadena de caracteres, filtra.

                  grep + cadena de caracteres             # filtra la cadena de caracteres indicada.
                  grep -r "ServerName" /etc               # busca recursivamente ServerName en: /etc
                  grep -i cadena de caracteres            # busca cadena de caracteres y no tengas en
                                                            cuenta mayúsculas y minúsculas (-i).

                  who                              # quién es el usuario (conectado).
                  w                                # quien es el usuario.
                  last                             # los últimos usuarios (estén o no conectados).
                  lastlog                          # listado de usuarios y fechas de las última
                                                      entrada de cada uno.
                  date                             # fecha.
                  top                              # procesos y estado de la máquina.
                  ps                              # procesos activos.
                  ps aux                           # todos los procesos
                  ps aux | grep "apache" | grep -v "grep" |wc
                  # muestra todos los procesos | filtra apache | selecciona todos menos apache | muestra palabra y
                    número.
                  kill+Nº proceso            # mata proceso.
                  kill -9 Nº proceso         # mata procesos resistentes.
                  file                       # tipo de fichero
                  tar donde que              # empaqueta fichero.
                  tar -cf fichero.tar /etc # desempaqueta fichero.tar en: /etc
                  gzip -9 fichero fichero.gz # comprimir. -9 máxima compresión.
                  gunzip                     # descomprimir.
                  gzip -d                    # descomprimir.
                  tar cvzf destino.tgz origen     # crear un targz (tarball).
                  tar xvzf origen.tgz destino      # descomprimir.

  3. 2. SHELL SCRIPT.

                         Los scripts empiezan por una linea de este tipo:
                         #! / bin / bash

                         hora =`date +%H:%M`         # hora en formato: 20:29
                         conectados=`who | wc -l`
                         echo "A las" $hora "hay" $conectados
Guía de Administración de servidores Gnu/Linux                                            Antonio Becerro Martinez. 2005

    Los permisos:

                                 -|rw-|r--|r--|
                                 tipo     dueño        grupo        todos

 Dos formas de cambiar los permisos: numérica y alfabética. Se hace con un número de 3 cifras. la primera es el dueño, la
segunda el grupo y la tercera son todos. Va de 1 a 7. 4 es lectura (r), 2 es es escritura(w) y 1 es ejecución (x). 750 es:
máximo para el dueño (7, resultado de 4+2+1, 5 para el grupo, y 0 para todos los demás) El comando para dar los máximos
permisos al usuario es:

                                           chmod 750 prueba1.sh

.

                          chown jorge fichero                      # cambia los permisos de un fichero al
                                                                     usuario jorge.

                          chown jorge:hileras fichero              # cambia un fichero a un usuario y además
                                                                     lo cambia de grupo.

    3. 3. REDIRECCIONES.

                          Esto es, no imprimir en la pantalla sino en la impresora, o en un fichero.

                          ls            1>               listado.txt
                                 salida estandard

                          ls          1> listado.txt        2>errores.txt
                          pasa el fichero listado.txt con el nombre errores.txt donde le digamos.

                          ls 1> listado.txt 2>>errores.txt
                          pasa el fichero listado.txt con el nombre errores.txt donde le digamos
                          añadiendo más texto en la salida.

                          grep "ServerName" /etc 2>/dev/null
                          filtra "ServerName" y redireccionalo al agujero negro.
                         /dev/null es un directorio donde todo lo que se envia desaparece.
                         Por eso, lo de agujero negro.

                           Ahora, vamos a escribir el siguiente shell script, que guardaremos con el
                           nombre: prueba2.sh
Guía de Administración de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

                                                for i in `ls /etc`; do
                                                wc /etc/$i
                                                done

                         prueba2, lo que hace es listar todos los ficheros dentro de /etc y luego
                         cuenta el número de palabras que tenga. Antes de ejecutarlo, es preciso
                         concederle todos los permisos.

                         prueba3 Lo que pretendemos hacer con este script es capturar todos los
                         procesos apache, seleccionar los que tengan el número de un usuario y
                         matarlos. Dicho de otro modo, queremos expulsar a un usuario de apache.
                         Veamos:

                         ps aux | grep "apache"
                         Si con el script prueba2 lo intentamos cambiando wc por kill no lo lograremos

                         ps aux | grep "apache" | awk '{print $2}' $0 # toda la linea
                         selecciona la segunda columna (desde la izquierda) y lo imprime en la pantalla.

                        ps aux | grep "apache" | awk '{print "kill -9 " $2}' | sh
                        selecciona la segunda columna y mata los procesos apache

                         cat /etc/passwd | awk -F: '{print $1}'
                         busca todos los usuarios* e imprime la primera columna.
                         * están en el fichero passwd

                        Vamos a ver ahora si un usuario está conectado. Utilizaremos if

                         > if [`who | grep "root"`]; then
                            echo "root esta conectado";
                         else
                            echo "root no esta conectado"fi

                         nice      # es el comando para dar prioridades.
                         renice    # es el comando para dar prioridades en marcha.
                         Parámetros:
                         -20                # mayor prioridad.
                           0                # normal.
                          19                 # menor prioridad.

                         top                         # ver procesos. La tercera columna es la prioridad.

 Nota
 El comando: wget, se utiliza para buscar mirrors.
Guía de Administración de servidores Gnu/Linux                                                       Antonio Becerro Martinez. 2005

  3. 4. EL DEMONIO CRONTAB.

                           cron / crontab                       # demonio para periodicidad de tareas.

                           crontab -l                             # ver tareas del usuario.

                           crontab -u ususario -l                        # ver tareas del ususario que se desee.

                           crontab -e                           # editar fichero de configuración de tareas.

                           Estructura del fichero de configuracion de cron
                       CUANDO             QUE COSA> programa, script, comando...
                       min Horas Dia mes dia (semana)
                       0­59 0­23 1­31 ­12     0­7 (7 y 0 es lo mismo)
                ejemplo 0    12     3   *      *

                ejemplo     0,3       0,4,5         *         *         *

                          * significa cualquiera o mejor dicho todos.

                      Cron funciona continuamente. Se puede parar o arrancar pero no es necesario.
                      El script de arranque se encuentra en: /etc/init. También existe un script para
                      cron.
                     Ejercicio.
                     Almacenar en un archivo todos los procesos y guardarlos en un fichero.
                     Luego eliminar el fichero.

                      ps aux | wc -1 >> /root/process 2>/dev/null
                      ***** ps aux | wc -l >>/root/process 2>/dev/null

                      tail -f process
                      busca las últimas lineas de un fichero hasta que cambie. Con la f es dinámico.
                      como el fichero process es la salida de cron, tail nos mostrara los procesos
                      presentes en el sistema. Se actualiza cada segundo. -f cd /root

  Nota
  du disk usage # ver memoria. du fichero # ver memoria de fichero.
  du ­h # ver en modo humano.

                      Ejercicio.
                      crear un script que se ejecute al arrancar la maquina.
                      echo
                      echo
                      echo GNU/LINUX EL SISTEMA OPERATIVO LIBRE.
                      lo guardamos en /etc/initd con el nombre arranque.sh
Guía de Administración de servidores Gnu/Linux                                             Antonio Becerro Martinez. 2005

                        pero no vale solamente con esto. Hay que escribir también:
                        update-rc.d arranque.sh defaults para que funcione.
                        update-rc.d -f arranque.sh remove para que no funcione.

                        ls |tee listado.txt # a la vez que vemos el listado nos lo imprime en un
                        fichero llamado listado.txt (que se crea automáticamente)

                        more .bash_history # ver con el paginador more el fichero de historia
                        de la shell. Hay uno para cada usuario.

                        more .bashrc # ver con el paginador el fichero de configuracion de la bash.

                        cat /etc/motd # ver mensaje del dia.

                        find donde criterios                  # busquedas según diferentes criterios.

                        find / -name"

                        contr+c          # detener busqueda

                        find /etc/ -name "http*" # busca algo que empieza por http en /etc
                        el criterio es nombres. Se puede cambiar. Veamos utilizando como criterio el
                        tamaño.

                        find /etc/ -size +1000k                 # busca los ficheros que tengan mas de 1000 K.

                        find /etc/ -size +1000k -name "antoniux" se puede hacer busquedas
                        con varios criterios al mismo tiempo.

                        find / -mmin -5             # busca los ficheros ejecutados en los últimos 5 minutos.

                        find / -size +100K -exec ls -l {} \;
                        este significa que lo haga con los resultados

  Nota
  Microsoft Windows puede hacer todo esto. Sin embargo, find llega un poco más lejos, pues
  permite hacer las busquedas y realizar, al mismo tiempo, alguna acción con los ficheros en­
  contrados.

  Nota
  tee # ver y guardar una salida simultáneamente.
Guía de Administración de servidores Gnu/Linux                                            Antonio Becerro Martinez. 2005

  4. SEGURIDAD.

  Supongamos que se nos olvida la contraseña del root. ¿Como podemos entrar en el sistema?
¿Existe una puerta trasera? Sin duda, se trata de un agujero de seguridad, pero esta puerta existe. Posiblemente, existe
también en todos los sistemas operativos. Es práctico, porque nos soluciona un problema, pero es peligroso, porque
cualquiera que tenga acceso físico a nuestra máquina puede hacerse con el control total del sistema. Veamos como se hace.
Durante el arranque del Lilo, introducimos la siguiente linea:

                                         init = /bin/bash rw
                                         arranca bash con permisos lectura y escritura.

 Esto arranca en modo texto. Lo primero que hacemos, es una copia del fichero de contraseñas:

                                         cp /etc/shadow /root/shadow

  A continuación, editamos el fichero etc/shadow con un editor de texto como emacs. Hay que borrar el segundo
campo. El primero es: root. El segundo es la contraseña. guardamos el fichero de contraseñas sobreescribiendo el antiguo.
Ejecutamos el comando: sync (sincronizar) para que el sistema ejecute los cambios de forma inmediata. Ahora solo
tenemos que reiniciar el ordenador normalmente. Cuando introducimos el login, veremos que se salta la contraseña y entra
en el sistema. Para restablecer la normalidad, deberíamos saber cual era nuestra contraseña. Para ello, vamos a utilizar un
programa que se llama: john. Este, busca contraseñas, listandolas contra un diccionario interno del programa. Este, es
bastante básico, pero se puede cambiar por muchos otros que circulan por internet. Dependiendo de la complejidad de la
contraseña, John puede tardar unos pocos instantes u horas. Los diccionarios se descargan previamente en formato txt, o
comprimidos. Los guardamos en la ruta que queramos y se la indicamos a john:

                                                   john ­wordfile: spanish.txt
                                                    carga el diccionario español

   4. 1. CORTAFUEGOS.

 El cortafuegos, es un programa que construye, por así decirlo un muro alrededor de una red para protegerla de ataques
desde Internet. El cortafuegos, puede ser un ordenador completo o una aplicación de software. El uso de una máquina o de
un programa depende del tráfico implicado. Para un equipo casero, un cortafuegos por software es suficiente. En
Gnu/Linux, se suele utilizar el programa: iptables, Freebsd utiliza: ipfw y Openbsd: pf. Iptables es un módulo del
kernel de Gnu/Linux. Los niveles de seguridad, oscilan entre el acceso total, sin acceso y acceso a algunos puertos. La
respuesta del cortafuegos, va a depender de las “Reglas” que utilice. Estas son los parámetros de seguridad. Editar Reglas a
mano es muy complicado. Normalmente se utilizan programas que nos ayuden en esta tarea. Los programas más utilizados
son:

                                                   Knetfilter
                                                   Firestarter
                                                   Fwbuilder (frontend para Iptables)

  Nota
  Principales puertos: http: 80 , https: 443 , ftp: 21 , smtp: 25 , pop: 110
Guía de Administración de servidores Gnu/Linux                                                    Antonio Becerro Martinez. 2005

  Para ver los puertos abiertos de una máquina, se utiliza el programa: nmap. Es muy sencillo utilizarlo. nmap nombre
de la máquina. El uso de escaneadores de puertos, supone una vulnerabilidad para cualquier sistema. No es un ataque
propiamente dicho, pero puede precederlo. Para evitar un escaneo de puertos, se utiliza el programa: portsentry. Este
ofrece información falsa a nmap. Los puertos que aparecen abiertos no lo están realmente, o no coinciden los
identificadores. Los parámetros de configuración del acceso se encuentran en:

                                                        /etc/login.defs

   Estos parámetros, son cosas como el número de días que se puede acceder al sistema con la misma contraseña, los
intentos de login posibles, el tiempo de login, etc. El comando: faillog, permite aplicar restricciones. Veamos un ejemplo:

                                                 faillog ­u antoniux ­m3
                                                 El usuario antoniux tiene 3 intentos de login

 El parámetro ­a, muestra desde root, los intentos de login.

    4.2. AUDITORIA DE SEGURIDAD.

  Una auditoría de seguridad, es un estudio de las vulnerabilidades que pueda presentar una red. Para ello, se realizan unas
pruebas, mediante programas específicos. Uno de estos programas es: NESSUS. Es una aplicación muy completa, en
modo gráfico. Es necesario instalar los siguientes paquetes:

                                         nessusd                        # demonio.
                                         nessus                         # cliente.
                                         nessus­pluging                 # base de datos de vulnerabilidades conocidas.

 Lo primero que hay que hacer es crear un usuario.

                                                   nessus ­adduser

   El programa nos va a hacer algunas preguntas. Es conveniente escoger encriptación (cipher) y saltar las reglas (rules)
mediante: Ctrl + d. La opción: one time password, es una contraseña que solo se nos va pedir la primera vez que
ejecutemos Nessus. El comando para ello es:

                                                       nessus ­p

  Primero, se arranca el demonio (nessus­d) y luego se arranca el cliente (nessus). Hecho esto, veremos una ventana
con varias pestañas. En el apartado: Target selection, escribimos la IP del equipo o su nombre. Si escribimos el
nombre, es preciso activar el botón: dns. Aunque tiene bastantes más posibilidades de configuración, ya podemos escanear
el equipo. Finalmente, Nessus ofrece un informe. Un código de colores nos indica el nivel de peligrosidad encontrado en
cada funcionalidad del sistema operativo.

   Nota
   Sentry Firewall. Live CD, al estilo Knoppix enfocado a temas de Seguridad.

   Nota
   Ruta a los log: tail ­f /var/log/daemon.log
Guía de Administración de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

  4.2. SNIFFER.

 Los sniffers, son programas que nos muestran todo el tráfico que pasa por nuestra tarjeta de red. La traducción de
snifers, es algo así como husmeadores. Veamos algunos programas:

                                                     dsniff
                                                     ethereal
                                                     snort
                                                     etherape
                                                     ettercap

    El programa ethereal, captura absolutamente todo lo que pasa por la tarjeta y nos lo presenta en pantalla. Esta
verbosidad, es finalmente un problema. La verdad, es que la mayoría del tráfico no nos interesa mucho. Para que nos sirva
para algo, es preciso aplicarle filtrados. O utilizar otro programa. dsniff, resume mucho más la información. Además el
objetivo de dsniff, es bastante más concreto: capturar contraseñas. El programa etherape, genera un gŕafico de la red, y
de las relaciones entre las distintas máquinas de la misma. Si nos conectamos a internet también aparecen las páginas. Si
hacemos: ping a otra máquina también aparecerá. El programa más complejo de todos es: ettercap. Es capáz de
capturar paquetes por la red. Puede ser utilizado para hacer ataques, del tipo de hacerse pasar por otra máquina, o el
llamado: man in the middle. El hombre en el medio, es decir colocarse entre dos máquinas.

   Nota
   touchGraph.com Ver internet en modo gráfico.

  5. CORREO ELECTRONICO.

 Vamos a instalar y configurar un servidor de correo. Tenemos varios programas en Debian para hacer esto. El programa
por defecto es: exim. También se puede utilizar:

                                                     Sendmail
                                                     qmail
                                                     postfix

 Sendmail. recibe bastantes ataques. Qmail es seguro, pero bastante difícil de instalar. Postfix es un termino medio entre
ambos, y es el que vamos a utilizar. Hay que instalar tres paquetes:

                                                     postfix
                                                     postfix pcre
                                                     [ postfix­doc]

  Durante la instalación de Postfix, tendremos que responder algunas preguntas. Escogemos internet, y le indicamos nuestro
usuario: user@aula9.hileras.net. Para arrancarlo, ejecutamos el comando: postfix start. Las posibilidades del
comando postfix son:

                                                     postfix start # arrancar.
                                                     postfix stop # parar.
                                                     postfix reload # reiniciar.
Guía de Administració n de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

   Para configurarlo editamos el fichero: main.cf, que se encuentra en: /etc/postfix. Es un documento muy comentado.
En el apartado: relayhost = , no hay ningún nombre de un servidor externo. Esto es lo adecuado, si no vamos a
subcontratar el servicio. En principio, no hace falta mucho más para postfix funcione. Ahora, vamos a instalar un cliente de
correo para comprobar el correcto funcionamiento de nuestro servidor. Utilizaremos: mutt, un cliente en modo texto. Lo
primero de todo, va a ser crear dos usuarios nuevos del sistema, que se van a llamar: prueba1 y prrueba2. Para crear un
usuario, el comando es: adduser. Más tarde, enviaremos tres correos, uno de prueba1 a prueba2, otro de prueba2 a
aula6 (un ordenador de la red local) y otro de prueba1 a una cuenta de correo en el exterior. Las rutas a los correos son:

                                                      /var/mail
                                                      /var/spool/mail

    Estas dos rutas son. la primera la ruta a los correos recibidos, y la segunda la cola de los correos que están siendo
enviados. El comando: mailq nos muestra el estado de la cola. El comando: sendmail ­q, fuerza al sistema a enviar el
correo inmediatamente.
  Ahora vamos a pasar al controvertido asunto de las restricciones. Las restricciones son medidas que se aplican al servidor
de correo para que rechace algunos correos por motivos de seguridad. Lo cierto es que una parte significativa de los correos
son Spam, es decir correos no solicitados. El Spam disminuye el rendimiento global de internet, mina sus posibilidades de
crecimiento, aparte de ser una molestia para los usuarios. Para hacerle frente se han creado autoridades en internet
capacitados para incluir a los servidores implicados en listas de sospechosos de practicar Spam. Es bastante fácil entrar en
una de estas listas, pero es muy difícil salir. Para colmo, esta autoridades incapacitan para servir correo a las máquinas
implicadas durante algún tiempo. Estas listas son la pesadilla de los administradores de servidores. Ahora, veamos como se
aplican las restricciones:

 Para añadir una restricción, escribimos estas lineas en el fichero: main.cf :

                                             smtp
                                             smtp_server_restrictions =
                                             hash: /etc/postfix/access
                                             reject_unknown_sender_domain
                                             permit_mynetworks

 La ruta: /etc/postfix/access hace referencia a un fichero de nombre: access que tenemos que editar.

  6. MYSQL.

  MySQL, es una base de datos muy potente, del estilo de aplicaciones privativas como Oracle o Postgress. Permite
conexiones remotas, conexiones concurrentes, sistemas de seguridad, etc. Se utiliza habitualmente en servidores Web que
alojen sitios dinámicos, como foros, tiendas on line, gestores de contenidos, etc. Por supuesto, también puede utilizarse en
las típicas bases de datos corporativas. Utiliza un lenguaje de sintaxis clara y sencilla llamado: SQL.

   Para instalar MySQL, utilizamos, como siempre apt. Es preciso instalar un servidor y un cliente. Durante el proceso de
instalación tendremos que responder algunas preguntas de configuración del programa. La primera pantalla que aparece, no
es un error, sino información de seguridad. Más tarde, tenemos que elegir si queremos eliminar las bases de datos al
desinstalar el programa. Es mejor contestar que no. Finalmente, nos va a preguntar, si queremos que arranque MySQL al
iniciar el sistema. Lo más cómodo es responder si.

 Hecho esto, ya hemos terminado la instalación. Lo primero que tenemos que hacer ahora, es crear un usuario, y asignarle
una contraseña. Un usuario para Mysql exclusivamente.

                                             mysqladmin ­u root password
Guía de Administració n de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

Más adelante, hay que activar el acceso a la red. Para ello, editamos el fichero: my.cnf, que se encuentra en: /
etc/mysql/my.cnf. comentamos la fila: # skip­network, que impide los servicios de red. Para arrancar MySQL
ejecutamos:

                                            /etc/init.d/mysql restart

 El ejecutable, se encuentra es: /usr/sbin/ y se llama: mysqld. Aunque normalmente no utilizaremos el ejecutable
directamente. Las tablas se encuentran en: /var/lib/mysql/mysql. Entre otros ficheros, destacan por su importancia los
de extensión:

                                            .frm # Estructura.
                                            .myd # Datos.
                                            .myi # Indice.

  En principio, una copia de seguridad podría consistir simplemente, en copiar estos ficheros. Es imprescindible parar el
servidor primero. Los informes se guardan en: /var/log/mysql/ y los clientes, en: /usr/bin/. El cliente más básico,
funciona en linea de comandos y es el que vamos a utilizar, aunque también existen clientes gráficos. Para administrar
rémotamente MySQL, también puede utilizarse: webmin.
  El comando para ejecutar el cliente es: mysql ­p. Este cliente, es una consola virtual. Para salir se escribe: q o exit.
Veamos algunos comandos:

                 SELECT USER ();                              # mostrar usuario.
                 SELECT VERSION ();                           # mostrar versión.
                 SHOW DATABASES;                              # mostrar bases de datos en el servidor.
                 USE nombre de base de datos;                 # utilizar base de datos.

  Ahora, vamos a crear una base de datos nueva. Crearemos también una tabla, y veremos como se editan los registros,
como se accede a los datos, etc. Para crear una base de datos nueva:

                                   CREATE TABLE video (
                                   id INT NOT NULL AUTO_INCREMENT,
                                   titulo VARCHAR (200),
                                   autor VARCHAR (64),
                                   PRIMARY KEY (id)
                                   );

   Mediante estas instrucciones, hemos creado una tabla llamada: video, donde los registros se identifican (id) por un
número que se incrementará automáticamente con cada nuevo registro. Si un registro es eliminado, su número no será
utilizado por otro. La tabla va a tener las columnas: titulo, y autor, que permimitirán campos de 200 y 64 caracteres
respectivamente.
  Para ver las tablas disponibles, utilizamos el comando: show tables. Para ver su estructura: describe tables. Para
insertar registros nuevos se hace de la siguiente manera:

                          INSERT INTO video (titulo,autor) VALUES ('ESPARTACO','Kubrik);

  De esta manera, hemos creado un registro para la película Espartaco , en nuestra base de datos de vídeos. Para
visualizar el contenido de una tabla, y no solamente su estructura, el comando es:

                                            SELECT * FROM video

  Si queremos hacer busquedas más precisas, tendremos que complicar un poco las cosas. Podemos introducir algunos
registros más, y hacer una busqueda de, digamos, todas las películas de Kubrick.
Guía de Administració n de servidores Gnu/Linux                                         Antonio Becerro Martinez. 2005

                            mysql> SELECT * FROM video WHERE autor = 'Kubrick';

 De la misma manera, podemos buscar un registro completo, mediante su identificador:

                            mysql> SELECT * FROM video WHERE id = '7';

 O todos los titulos, que empiecen por la letra: P.

                            mysql> SELECT * FROM video WHERE titulo LIKE 'P%';

 O todas las películas de Kubrick que empiecen por la letra: s.

          mysql> SElECT * FROM video WHERE titulo LIKE 's%' WHERE autor = 'Kubrick';

 Para eliminar una base de datos:

                            DROP DATABASE video;

 La orden: mysqldump, sirve para hacer un volcado de datos. Desde: /var/lib/mysql

                            mysqldump ­u root ­p video >curso20050426.sql

 Esto, redirecciona en un solo fichero el contenido de /var/lib/mysql

 Tambien se pueden hacer volcados comprimidos. Los parámetros que admite mysqldump, son:
                             ­d    # solo estructura.
                             ­t    # solo datos

  Ahora, vamos a plantearnos un problema. Supongamos que estamos obligados a hacer una copia de seguridad cada día a
las cuatro de la mañana. Nosotros no trabajamos por la noche. ¿Cómo lo podríamos a hacer? Veamos, en primer lugar el
código y luego lo comentamos:

                  #!/BIN/SH
                  for bd in `ls /var/lib/mysql/ |grep ­v my.cnf`;
                  do
                  LABEL=SQL_`hostname`_`date +%y­%m­%d`_”.sql.bz2
                  mysqldump ­u root ­pnodo50 $bd | bzip2 > /COPIAS_SEGURIDAD/$LABEL
                  echo “volcada $bd”
                  done

  Este ejercicio es muy interesante. La primera linea es el encabezamiento habitual de todos los scripts de shell. La
segunda establece la variable: bd y lista el directorio: /var/lib/mysql/ y filtra: my.cnf. La tercera establece el nombre
del fichero de salida en base a la fecha (año, mes, dia). La extensión de las copias es: .sql.bz2, es decir, que la salida va
comprimida. La cuarta linea es el comando de copia propiamente dicho (mysqldump) , el usuario y su contraseña. Así
como, la ruta a la copia. Finalmente la quinta linea es más bien decorativa. Escribe en pantalla: volcada y la base de datos
que sea.
Guía de Administració n de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

 Este script se guarda con el nombre: backup.sh, en /root. Ejecutamos el comando: crontab ­e. Esto nos permite
configurar el demonio cron. Le indicamos la periodicidad de las copias de esta forma:

                                             01***       /root/backup.sh

  Otra forma de configurar MySQL, es mediante Webmin, un programa web capacitado para configurar servidores
Linux online. Para ejecutarlo abrimos una sesión en un navegador, como Firefox y de url escribimos:
https://aula9.hileras.net:1000. La administración, se realiza en modo gráfico. Las desventajas de este método son
dos: por un lado no existe la misma seguridad que al editar las configuraciones en modo texto, y por otro, los refrescos de
pantalla podrían causar problemas.

   7. COMPILACION DEL KERNEL.
  En Gnu/Linux, la compilación de un nuevo Kernel es una acción relativamente corriente. En los sistemas operativos
privativos este tipo de cosas, solamente las hace el fabricante. Dos son las razones fundamentales para compilar un nuevo
kernel. Obtener un mejor rendimiento de la máquina, y lograr nuevas prestaciones, normalmente soporte de hardware nuevo.
Lo primero que hay que hacer es descargar el kernel que nos interese desde internet (www.kernel.org). Suele estar
comprimido en .tar.gz o en .bz2. Hay que descomprimirlo en el directorio: /usr/src. Creamos una carpeta llamada linux,
y copiamos dentro de ella el kernel descomprimido. Es buena idea hacer un enlace simbólico (acceso directo) a esta carpeta.
Más que nada, para cambiar el nombre de linux, por algo más concreto en el enlace.
 Para la configuración previa a la compilación, se pueden utilizar varios programas. Todo tienen las mismas capacidades. No
son unos mejores que otros. Lo que cambia, es la interfaz. Los más utilizados son:

                  xconfig             # Método gráfico (precisa las librerias QT).
                  menuconfig           # Método gráfico basado en menús (precisa nurses).
                  gconfig              # Modo texto ( precisa Gtk).

 Para saber que kernel estamos utilizando se utiliza el comando: uname ­a , para saber cual es nuestro hardware: lspci.
La información sobre la máquina se obtiene mediante:
                                             cat /proc/cpuinfo

 Comencemos. Elegimos uno de los programas de configuración, por ejemplo: menuconfig. Para ejecutar el programa,
desde: /usr/src/Linux, escribimos:
                                             make menuconfig

   La cantidad de parámetros que se pueden modificar es enorme. Conviene saber, que unos apartados se relacionan
automáticamente con otros, de tal forma que para poder realizar una acción, es preciso haber realizado otra previamente.
Por ejemplo, si queremos activar soporte para particiones de macintosh, primero tendremos que activar un menú llamado
sistemas de ficheros especiales, o algo similar. En general, lo que se hace es ir seleccionando nuestro hardware: tarjeta de
red, tarjeta de video, etc. Es el momento de comprobar si el nuevo kernel soporta algún dispositivo que no pudiésemos hacer
funcionar con el kernel anterior. Es imposible dar una receta precisa de lo que hay que activar o no. Esto, va a depender de
cada ordenador concreto. No hay que tener miedo. Instalar un nuevo kernel no significa destruir el antiguo. Finalmente
dispondremos de los dos, y escogeremos en el Lilo arrancar con uno o con otro.
  Si salimos de menuconfig, nos va a preguntar si queremos guardar los cambios. Le decimos que sí. Ya tenemos la
configuración preparada. Ahora vamos a hacer algunas comprobaciones antes de compilar.
Guía de Administració n de servidores Gnu/Linux                                        Antonio Becerro Martinez. 2005

Escribimos: make dep, Este comando sirve para comprobar las dependencias.
Ahora: make clean, para borrar posibles restos de otras compilaciones anteriores. Finalmente:
                                             make bzImage2430

  Este último comando es el que compila. El kernel compilado se va a llamar: bzImage2430, y lo encontraremos en la
siguiente ruta: /usr/src/linux­2.4.30/arch/i386/lib. Una vez que la compilación del kernel se ha completado, hay que
compilar también los módulos. Estos le añaden funcionalidades. Los comandos necesarios son, en primer lugar: make
modules, y luego: make modules_install. Hecho esto, el kernel está completamente compilado. Pero para poder
utilizarlo hay que enviarlo al directorio /boot, que es donde se tienen que guardar los kernels con capacidad de arrancar el
sistema. También tenemos que copiar el fichero: System. map a /boot.
  Por último, ya solo nos queda añadir una entrada en el Lilo al nuevo kernel. Pare ello abrimos el fichero de configuración
de Lilo en: /etc/lilo/lilo.conf, mediante un editor de texto como Vim.
Lo único que hay que hacer es añadir al finál del documento dos lineas:

                                             image=/boot/bzImage2430
                                             label=linux2430

 Guardamos los cambios, y ejecutamos el comando: lilo, que actualiza la configuración. Y ya estamos listos para reiniciar el
ordenador. En la pantalla del lilo escogemos nuestro flamante kernel nuevo y cruzamos los dedos. Normalmente, suelen ser
capaces de arrancar el sistema. Otra cosa es la conexión a internet, que solo funcionará si se ha configurado
correctamente la tarjeta de red. Si algún apartado no responde a nuestras expectativas, se vuelve a ejecutar el programa de
configuración (menuconfig) y volvemos a compilar.

                                                  Antonio Becerro Martinez.
                                                    littledog@es.gnu.org
                                                     Alcobendas. 2005.
También puede leer