Servidores Gnu/Linux - Guía de administración de
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
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 FrontCover Texts, and no BackCover 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 CDRom de Debian, y arrancamos el equipo, poniendo especial cuidado en que la Bios esté configurada para arrancar un CDRom de instalación. Normalmente, solo habrá que situar como dispositivo de arranque primario el CDRom, 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: aptsetup 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 tcltk (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: dpkgreconfigure xserverxfree86 El comando dpkgreconfigure 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: aptget install paquete # Instala paquete. aptcache search cadena de caracteres # busca paquetes. aptget update # Actualiza la lista de paquetes. aptcache show paquete # Descripción máxima de paquete. aptcache depends paquete # Muestra dependencias. aptget install /testing # Cambio a la rama testing. aptget install /unstable # Cambio a la rama inestable. aptget remove paquete # Borra paquete. Deja ficheros de configuración. aptget remove –purge paquete # Borra paquete y fichero de configuración. aptget upgrade paquete # Actualiza paquete. aptget distupgrade paquete # Actualiza todos los paquetes de la distro. aptget source paquete # Descargar código fuente. aptget b source paquete # Descargar fuente y compilarlo automáticamente aptget 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: apachessl. En primer lugar, instalamos el programa mediante: aptget install apachessl 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 Apachessl en: /etc/apachessl El archivo de configuración tiene el siguiente nombre: httpd.conf Todo lo que hay que hacer para configurar Apachessl, 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 Apachessl apache sslctl start # arranca Apachessl apache sslctl restart # para y arranca Apachessl 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 Apachessl, 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/apachessl/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: wwwdata, del grupo wwwdata, 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/apachessl/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 –numconn 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 Apachessl. Hay que editar su fichero de configuración en /etc y modificarlo cambiando el nombre apache, por apachessl. 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) 059 023 131 12 07 (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. nessuspluging # 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 (nessusd) 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 [ postfixdoc] 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: # skipnetwork, 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/linux2.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