************************************ * Fedora Linux "casi" from scratch * ************************************ INTRODUCCIÓN ************ Fedora es un proyecto para crear una distribución Linux exclusivamente con componentes de software libre, de forma que no sea necesario pagar royalties por determiandas librerías, como ocurre con Red Hat Linux Enterprise. (http://fedora.redhat.com/) El proyecto está patrocinado por Red Hat, quien delega el soporte y mantenimiento del desarollo a la comunidad open-source, realizándose en los foros públicos, con versiones planificadas dos o tres veces al año. (http://fedora.redhat.com/participate/schedule/) Otro proyectosimilar es Fedora Legacy (http://www.fedoralegacy.org/#main) que da soporte open-source a versiones descatalogadas. REQUISITOS DE HARDWARE ********************** Procesador: Pentium 200 MHz (o superior) en modo texo o Pentium II 400 MHz (o superior) en modo gráfico, Disco: dependiendo del tipo de instalación, Servidor: 870 MB Escritorio Personal: 1.9 GB Estación de Trabajo: 2.4 GB Personalizada mínima: 520 MB Personalizada todo: 5.3 GB Memoria: mínimo 64MB para modo texto o 192MB para modo gráfico (recomendado 256MB) Además es necesaria compatibilidad con el hardware instalado (tarjetas de vídeo, de sonido, interfaz de red, wireless, etc.) DESCARGA ******** La versión actual es Fedora Core 1 release 1 (Yarrow) Kernel 2.4.22-1.2115.nptl (puede verse con cat /proc/version) Descargamos las 3 imágenes ISO de los CD-ROM de los binarios de instalación yarrow-i386-disc1.iso, yarrow-i386-disc2.iso y yarrow-i386-disc3.iso (http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/iso/); aunque también existen otras tres imágenes de las fuentes SRPM. Dado que la descarga lleva tiempo, se recomienda utilizar una línea ADSL con algún programa de descarga de tipo Download Accelerator (http://www.speedbit.com/DAP7/DefaultT.asp?) Hay que tener cuidado en que el resumen hash MD5 coincida con los originales (http://fedora.redhat.com/download/); para lo que puede utilizarse alguna herramienta que calcule MD5s (http://md5deep.sourceforge.net/) La idea de descargar las imágenes ISO es para tener los CDs con todos los RPMs disponibles, aunque si el ancho de banda de la instalación remota es muy alto, se puede crear la imagen del CD de arranque y utilizar una instalación que descargue por http o por ftp los paquetes. Un término medio es descargar todos los paquetes RPM, volcarlos a un repositorio único y relaizar una instalación desde ftp en LAN. GRABACIÓN ********* Descargamos una versión de evaluación de Nero Burning ROM (http://www.nero.com/en/nero-prog.php); basta el Package1 y añadimos el pack para lenguaje español (http://www.nero.com/en/sp_file.php?sp_file=esp). Una vez instalado el Nero, abrimos cada uno de los ficheros .ISO y grabamos los 3 CD-ROMs. El primer CD es autoarrancable, por lo que es necesario configurar en la BIOS el arranque desde CD-ROM. ARRANQUE ******** Según las RELEASE NOTES (http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/RELEASE-NOTES) es posible realizar una instalación remota vía VNC; por lo que arrancamos el Fedora Linux desde CD-ROM y ejecutar en línea de arranque: boot: linux vnc vncconnect=192.168.70.113:5901 vncpassword=temporal (Nota: como no se ha cargado la configuración del teclado, el símbolo de "=" está situado en "¡" y el símbolo ":" pulsando "shift" y "ñ".) A continuación aparecen cuatro pantallas... Pantalla 1: Se realiza la comprobación de integridad de cada CD-ROM Pantalla 2: Selección de idioma de instalación Pantalla 3: Selección de teclado Pantalla 4: Configuración TCP/IP ... antes de que el sistema muestre una fase de espera con el mensaje "Will try to connect again in 15 seconds" En ese momento se procede arrancar desde un cliente remoto Windows (http://www.realvnc.com/4.0b4-download.html) el cliente VNC en modo "Listen" C:\Archivos de programa\RealVNC\VNC4>vncviewer Listen=1 192.168.70.99:1 y se comprueba con netstat que efectivamente el puerto TCP abierto es el 5900 más el número de display; en este caso 5901 C:\>netstat -n Conexiones activas Proto Dirección local Dirección remota Estado TCP 192.168.70.113:1056 192.168.70.99:5901 SYN_SENT En principio debería funcionar a la primera; de hecho se abre la ventana que solicita el password (si no es el correcto no autentica) y aparece la ventana en windows de emulación remota. C:\>netstat -n Conexiones activas Proto Dirección local Dirección remota Estado TCP 192.168.70.113:1056 192.168.70.99:5901 ESTABLISHED Sin embargo, un análisis con un sniffer de tipo Ethereal o Packetyzer muestra que efectivamente se establece la conexión, pero cada 15 segundos el servidor vuelve a solicitar (SYN) una conexión, cortando la sesión. Afortunadamente, a los 50 intentos de conexión, (¡12 minutos!) el servidor deja de enviar solicitudes y acepta conexiones manuales (de hecho es cuando automáticamente funciona la emulación en el lado cliente, pues la teníamos abierta). Tal vez se deba al software beta utilizado en el cliente o a que existen algunos problemas en con la versión del servidor VNC incluida en el CD-ROM (http://www.redhat.com/archives/fedora-announce-list/2003-November/msg00005.html) pero se arrgelarán posteriormente actualizando el paquete (http://download.fedora.redhat.com/pub/fedora/linux/core/updates/1/i386/). En cualquier caso podemos continuar con la instalación siguiendo varias pantallas gráficas. Durante una instalación gráfica en local, se puede pulsar SHIT + Print Screen para realizar una captura de pantalla en el directorio /root/anaconda-screenshots/ Si nos equivocamos al configurar el arranque del grub (por ejemplo al instalarlo en una partición de un disco que no sea el primario) siempre podremos arrancar de nuevo con un disco de emergencia y teclear # grub grub> rootnoverify (hd0,0) grub> makeactive grub> quit Que cargará el gestor de arranque en la Master Boot Record del primer disco duro. INSTALACIÓN *********** Pantalla 1: Pantalla de bienvenida Pantalla 2: Configuración del ratón Pantalla 3: Selección del monitor Pantalla 4: Comprobación de actualización Pantalla 5: Tipo de instlación (Escritorio Personal, Estación de Trabajo, Servidor o Personalizada). Seleccionamos esta última. Pantalla 6: Particiones de disco en este punto son posibles las opciones de configuración automática, la de Disk Druid o una tercera que es acceder físicamente al equipo, abrir una consola con Control-Alt-F1 y crear las particiones a mano con fdisk /dev/hda "p" para imprimir las existente "n" para crear nuevas particiones (mínimo 3, la partición "/boot", la partición "/" y la partición de swapping) "t" para cambair el tipo (83 para Linux y 82 para swapping) "a" para establecer una de ellas activa "w" para escribir los cambios Las particiones se formatearán como ext3 Pantalla 7: Configuración del gestor de arranque, donde se selecciona el nuevo gestor estándar GRUB y se aplica una contraseña Pantalla 8: Opciones del gestor de aranque, donde se instala GRUB en el primer sector de la partición de inicio o en la MASTER BOOT RECORD. Pantalla 9: Configuración de la red Pantalla 10: Configuración del firewall Pantalla 11: Soporte adicional de idiomas Pantalla 12: Selección horaria Pantalla 13: Selección de contraseña de red Pantalla 14: Selección de grupos de paquetes, donde se instala la última opción "Mínimo", de 530 MBytes Pantalla 15: Pantallas de instalación, donde muestra la existencia del fichero /root/install.log mostrando los paquetes instalados; de las listas de suscribipción de Fedora y de los canales #fedora y #fedora-develen el irc.freenode.net Por último, se procede de forma remota a reiniciar la máquina NOTA: La instalación en modo texto es exactamente igual, pero usando una serie de menús de texto (librerías ncurses). La única diferencia es que no existe una selección de paquetes "Mínima" sino que en su lugar hay que deseleccionar todos los paquetes para instalar el mínimo de 520 MBytes. Además, se echa en falta la posibilidad de seleccionar cada uno de los paquetes instalados, algo que sí aparece en el modo gráfico. Para realizar la instalación en formato texto es necesario arrancar como: boot: linux text NOTA 2: Mark Wolfgang, moonpie.org; ha perfeccionado la automatización de múltiples instalaciones en un DataCenter (http://www.moonpie.org/writings/kickstart/) ACCESO ******* El comando netstat -a nos indica que el sistema por defecto instala un servidor ssh; pero no el servicio de telent. Descagramos un cliente SSH para Windows (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) y configuramos la sesión por ssh (puerto 22) y el registro de logs como (long printable data ony); teniendo en cuenta que solamente se graba el registro al finalizar la sesión. INSTALACIÓN DE PAQUETES *********************** La instalación de paquetes nuevos tiene la problemática de que para que funcionen, es necesario tener instalado otros paquetes, debido a las dependencias de librerías. Para ello, o bien bajamos cada paquete con wget según lo necesitemos de http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/Fedora/RPMS/ o bien creamos un directorio /rpms en el raíz para copiar los rpms de los tres CDs y vamos instalando desde allí. En http://rpmfind.net/, dado un fichero, aparecen los RPM que lo contienen, lo cual es muy útil para arreglar dependencias, que en principio no se pueden instalar automáticamente salvo que se utilice apt-get. Para instalar paquetes lo ideal es utilizar la línea # rpm -vhU [URL] que descarga el paquete de la url determinada, y lo instala actualizándolo (-U) mostrando un hash (-h) de forma visible (-v). Si no están en formato rpm, suelen estar en formato tgz ó .tar.gz; los bajamos con: # wget [URL\fichero.tgz] y luego los instalamos, normalmente con # gzip -cd | tar -xvf- que mantiene el fichero original (-c) y descomprime (-d) de salida un tempora que recoge el tar como entrada (-f-) y la extrae (-x) de forma visible (-v). La mayoría de los paquetes con fuentes se instalan realizando los pasos: # cd # ./configure # make install Para instalar un paquete, viendo el hash # rpm -vih Para eliminar un paquete instalado # rpm -e Para verificar en el sistema los ficheros que faltan (ojo, tardará un rato) # rpm -Va Para ver de qué paquete es un fichero: rpm -qf Para mostrar los paquetes instalados # rpm -qa Para ver la información de un RPM: # rpm -qpi Para ver los ficheros que instala un RPM: # rpm -qpl Un utilidad muy interesante para actualizar varios RPMs y resolver las dependencias de forma automática es yum-2.0.4-2.noarch.rpm; su sintaxis es por ejemplo [root@auditoria] yum list Muestra el software disponible [root@auditoria] yum list updates Muesta si hay actualizaciones [root@auditoria] yum update Actualiza los paquetes instalados [root@auditoria] yum install nmap Instala nmap y sus dependencias [root@auditoria] yum search nmap Busca todos los paquetes con esa cadena [root@auditoria] yum info nmap Muestra información sobre nmap Como el sitio fedora.redhat.com está muy saturado; se recomienda modificar /etc/yum.conf [root@casa log]# cat /etc/yum.conf [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=fedora-release tolerant=1 exactarch=1 [base] name=Fedora Core $releasever - $basearch - Base #baseurl=http://fedora.redhat.com/releases/fedora-core-$releasever baseurl=http://ftp.fi.udc.es/pub/linux/fedora/linux/core/1/i386/os/ baseurl=ftp://ftp.fi.udc.es/pub/linux/fedora/linux/core/1/i386/os/ [updates-released] name=Fedora Core $releasever - $basearch - Released Updates #baseurl=http://fedora.redhat.com/updates/released/fedora-core-$releasever baseurl=http://ftp.fi.udc.es/pub/linux/fedora/linux/core/updates/1/i386/ baseurl=ftp://ftp.fi.udc.es/pub/linux/fedora/linux/core/updates/1/i386/ #[updates-testing] #name=Fedora Core $releasever - $basearch - Unreleased Updates #baseurl=http://fedora.redhat.com/updates/testing/fedora-core-$releasever PAQUETES BÁSICOS **************** La instalación mínima deja algunos cabos sueltos, sobre todo a la hora de realizar la compilación de programas. Se recomienda comprobar que se dispone de los paquetes mínimos necesarios para la compilación y para la administración del sistema en línea de comandos; por ejemplo los que aparecen en "Linux from Scratch" (http://www.escomposlinux.org/lfs-es/lfs-es-5.0/chapter04/packages.html) Por mucho que intentemos utilizar solamente la línea de comandos, siempre encontraremos algún programa que necesite de librerías X-Free86 o que se más fácil generar los ficheros de configuración con las X-Widow aunque luego se ejecutemos desde el /etc/crontab; como es el caso de Nessus. Por ello se recomienda en la instalación seleccionar los siguientes grupos de programas: - Sistema X window - Entorno de escritorio KDE - Internet Gráfica - Herramientas de Desarrollo - Desarrollo del Kernel - Desarrollo del Software X - Desarrollo de Software de Gnome - Desarrollo de Software para KDE - Herramientas de Administeación - Herramientas del Sistema Si definitivamente no se quiere instalar ningún componente de las X-Windows, habrá que utilizar el yum o realizar las instalaciones a mano, por ejemplo para el GCC: [root@auditoria rpms]# rpm -vih gcc-3.3.2-1.i386.rpm warning: gcc-3.3.2-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 error: Failed dependencies: binutils >= 2.14.90.0.4-4 is needed by gcc-3.3.2-1 cpp = 3.3.2-1 is needed by gcc-3.3.2-1 [root@auditoria rpms]# rpm -vih binutils-2.14.90.0.6-3.i386.rpm warning: binutils-2.14.90.0.6-3.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:binutils ########################################### [100%] [root@auditoria rpms]# rpm -vih cpp-3.3.2-1.i386.rpm warning: cpp-3.3.2-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:cpp ########################################### [100%] [root@auditoria rpms]# rpm -vih gcc-3.3.2-1.i386.rpm warning: gcc-3.3.2-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:gcc ########################################### [100%] [root@auditoria rpms]# rpm -vih glibc-kernheaders-2.4-8.36.i386.rpm warning: glibc-kernheaders-2.4-8.36.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:glibc-kernheaders ########################################### [100%] [root@auditoria rpms]# rpm -vih glibc-headers-2.3.2-101.i386.rpm warning: glibc-headers-2.3.2-101.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:glibc-headers ########################################### [100%] [root@auditoria rpms]# rpm -vih glibc-devel-2.3.2-101.i386.rpm warning: glibc-devel-2.3.2-101.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:glibc-devel ########################################### [100%] PAQUETES RECOMENDADOS ********************* MC Midnight Commander es un port del Comandante Norton, pero hecho para Linux con las ncurses. A pesar de que su web oficial es: [root@auditoria rpms]# wget http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/binaries/RedHat/8.0/mc-4.6.0-2.i386.rpm Sin embargo, existe una versión más actualizada en los propios paquetes de descarga de Fedora: [root@auditoria rpms]# wget http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/Fedora/RPMS/mc-4.6.0-6.i386.rpm NMAP [root@auditoria rpms]# wget http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/Fedora/RPMS/nmap-3.48-1.i386.rpm Aunque acaba de lanzarse otra versión: [root@auditoria rpms]# wget http://download.insecure.org/nmap/dist/nmap-3.50.tgz [root@auditoria rpms]# gzip -cd nmap-3.50.tgz | tar xvf - [root@auditoria nmap-3.48]# cd nmap-3.50 [root@auditoria nmap-3.48]# ./configure [root@auditoria nmap-3.48]# make [root@auditoria nmap-3.48]# make install Aunque también es posible: [root@auditoria rpms]# rpm -vhU http://download.insecure.org/nmap/dist/nmap-3.50-1.i386.rpm NESSUS [root@casa RPMs]# wget http://ftp.nessus.org/nessus/nessus-2.0.9/nessus-installer/nessus-installer.sh [root@casa RPMs]# chmod u+x ./nessus-installer.sh [root@casa RPMs]# ./nessus-installer.sh Crear el certificado para nessusd con: [root@casa RPMs]# /usr/local/sbin/nessus-mkcert que crea los ficheros /usr/local/com/nessus/CA/cacert.pem /usr/local/com/nessus/CA/servercert.pem /usr/local/var/nessus/CA/cakey.pem /usr/local/var/nessus/CA/serverkey.pem Añadir un usuario con: [root@casa RPMs]# /usr/local/bin/nessus-adduser Crear los certificados de cliente con [root@casa bin]# /usr/local/bin/nessus-mkcert-client y arrancar el demonio con: [root@casa RPMs]# /usr/local/sbin/nessusd -D para ejecutarlo en background, según las configuraciones de /usr/local/etc/nessus/nessud.conf [root@casa nessus]# more nessusd.conf # Configuration file of the Nessus Security Scanner # Every line starting with a '#' is a comment # Path to the security checks folder : plugins_folder = /usr/local/lib/nessus/plugins # Maximum number of simultaneous hosts tested : max_hosts = 30 # Maximum number of simultaneous checks against each host tested : max_checks = 10 # Niceness. If set to 'yes', nessusd will renice itself to 10. be_nice = no # Log file (or 'syslog') : logfile = /usr/local/var/nessus/logs/nessusd.messages # Shall we log every details of the attack ? [root@casa nessus]# cat nessusd.conf # Configuration file of the Nessus Security Scanner # Every line starting with a '#' is a comment # Path to the security checks folder : plugins_folder = /usr/local/lib/nessus/plugins # Maximum number of simultaneous hosts tested : max_hosts = 30 # Maximum number of simultaneous checks against each host tested : max_checks = 10 # Niceness. If set to 'yes', nessusd will renice itself to 10. be_nice = no # Log file (or 'syslog') : logfile = /usr/local/var/nessus/logs/nessusd.messages # Shall we log every details of the attack ? log_whole_attack = yes # Log the name of the plugins that are loaded by the server ? log_plugins_name_at_load = no # Dump file for debugging output, use `-' for stdout dumpfile = /usr/local/var/nessus/logs/nessusd.dump # Rules file : rules = /usr/local/etc/nessus/nessusd.rules # Users database : users = /usr/local/etc/nessus/nessusd.users # CGI paths to check for (cgi-bin:/cgi-aws:/ can do) cgi_path = /cgi-bin:/scripts # Range of the ports the port scanners will scan : # 'default' means that Nessus will scan ports found in its # services file. port_range = default # Optimize the test (recommanded) : optimize_test = yes # Language of the plugins : language = english # Optimization : # Read timeout for the sockets of the tests : checks_read_timeout = 5 # Ports against which two plugins should not be run simultaneously : # non_simult_ports = Services/www, 139, Services/finger non_simult_ports = 139, 445 # Maximum lifetime of a plugin (in seconds) : plugins_timeout = 320 # Safe checks rely on banner grabbing : safe_checks = yes # Automatically activate the plugins that are depended on auto_enable_dependencies = no # Designate hosts by MAC address, not IP address (useful for DHCP networks) use_mac_addr = no #--- Knowledge base saving (can be configured by the client) : # Save the knowledge base on disk : save_knowledge_base = no # Restore the KB for each test : kb_restore = no # Only test hosts whose KB we do not have : only_test_hosts_whose_kb_we_dont_have = no # Only test hosts whose KB we already have : only_test_hosts_whose_kb_we_have = no # KB test replay : kb_dont_replay_scanners = no kb_dont_replay_info_gathering = no kb_dont_replay_attacks = no kb_dont_replay_denials = no kb_max_age = 864000 #--- end of the KB section # Can users upload their plugins ? plugin_upload = no # Suffixes of the plugins the user can upload : plugin_upload_suffixes = .nasl, .inc # Name of the user who can remotely update the plugins admin_user = root # If this option is set, Nessus will not scan a network incrementally # (10.0.0.1, then 10.0.0.2, 10.0.0.3 and so on..) but will attempt to # slice the workload throughout the whole network (ie: it will scan # 10.0.0.1, then 10.0.0.127, then 10.0.0.2, then 10.0.0.128 and so on... slice_network_addresses = no #end. # # Added by nessus-mkcert # cert_file=/usr/local/com/nessus/CA/servercert.pem key_file=/usr/local/var/nessus/CA/serverkey.pem ca_file=/usr/local/com/nessus/CA/cacert.pem # If you decide to protect your private key with a password, # uncomment and change next line # pem_password=password # If you want to force the use of a client certificate, uncomment next line # force_pubkey_auth = yes actualizando la actualización de las pruebas nasl con: [root@casa bin]# /usr/local/sbin/nessus-update-plugins ACTUALIZACIÓN ************* (http://levine.sscnet.ucla.edu/general/software/tc1000/rmredhat.htm) Documentación en línea: http://www.europe.redhat.com/documentation/