trucos de linux.pdf

56
Tabla de contenidos 1. Configurar un hotspot rapidamente sobre gnu/linux 2. Manual de Ubuntu 3. Clonar discos duros con Linux 4. Iptables y NAT 5. Configurar un firewall en Linux con iptables 6. Comandos básicos de linux 7. Seguridad en Sistemas Linux 8. Seguridad y Hacking en Linux 9. Preparativos para instalar GNU/Linux® 10. Entrar al sistema sin saber la password 11. Configurar LILO 12. Trucos Linux

Upload: roberto

Post on 24-Dec-2015

86 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: trucos de linux.pdf

Tabla de contenidos 1. Configurar un hotspot rapidamente sobre gnu/linux 2. Manual de Ubuntu 3. Clonar discos duros con Linux 4. Iptables y NAT 5. Configurar un firewall en Linux con iptables 6. Comandos básicos de linux 7. Seguridad en Sistemas Linux 8. Seguridad y Hacking en Linux 9. Preparativos para instalar GNU/Linux® 10. Entrar al sistema sin saber la password 11. Configurar LILO 12. Trucos Linux

Page 2: trucos de linux.pdf

1. Configurar un hotspot rapidamentesobre gnu/linux

Para configurar este hotspot nos hemos decantado por chillispot por su sencillez en la instalación y por lo poco puntilloso que es a la hora de pedir requisitos de software y configuración de la red . (de hardware pocos, que es linux :P). Si disponemos de un AP y queremos que los clientes que accedan a él sean recibidos por una web de presentación en la que ofrezcamos los servicios de nuestro NODO o información variada , podemos utilizar este software sin mayor problema, si necesitamos mas opciónes podemos obtar por alguno mas completo como nocat.

Cualquier petición http es redirigida por el firewall contra un script que presenta una web de bienvenida y toda la información que queramos. Una de las principales opciónes de este software es el acceso a la red. Se le puede configurar para permitir libre acceso a ciertos servicios y a ciertas ips. Asi como no permitir accesos no deseados a otras ips... De esta forma, podemos dejar libre acceso a desconocidos a la web de nuestro grupo o al servidor local pero no al resto de servicios (internet, ftp,....) El sistema controla en todo momento los accesos y presenta una pantalla con el estado del cliente logeado o no logeado . Chillispot se encuentra en chillispot.org es open source y se mantiene bajo licencia GPL . Tal y como informa en su web, es un portal captivo para control de accesos wireless a una red LAN. Soportando WPA. Tiene binarios creados para Redhat, Febora, Debian y OpenWRT (AP). Su configuración es sencilla y permite la instalación de todo el sistema sin problemas en un mismo equipo. A continuación explicaremos su instalación sobre una maquina con Debian .Para mas info,la web oficial donde aparece la documentación completa y detallada. .......... LOS REQUISITOS : Tal y como aparece en su web principal, estos son los requisitos: # Internet connection # Wireless LAN access point # ChilliSpot software for your PC # Radius server # Web server La conexión a internet la vamos a limitar solo para nosotros, los propietarios del nodo y demas familia, pues recordamos que entre otras cosas , "regalao se murió" :) y seria ilegal ceder la conexión de internet alegremente. ... por lo tanto, si queremos captar los equipos que accedan a nuestro NODO y presentarles una web informativa con toda la info... ok :) - Necesitamos un S.O. Linux, en este caso , se ha instalado sobre Debian GNU/LINUX. - Un servidor radius, en este caso, sobre freeradius, tal y como aparece en al documentación (es GPL y aparece en las sources debian) - Un servidor web. Claramente APACHE. Necesita soporte para SSL para autenticación con el servidor radius. Podemos bien instalar el modulo ssl al apache o instalar el apache-ssl. (haremos lo segundo) - Un punto de acceso wireless. (en este caso, el nodo funciona con un DLINK900AP+ a la intemperie :P) La configuración en general podria ser la siguiente :

Page 3: trucos de linux.pdf

En nuestro caso, todos los servidores se encuntran sobre la misma maquina, pudiendo estar separados (seria lo mejor por temas de seguridad, pero no le pidamos peras al arbol... :) ) EL S.O. , CONFIGURACIONES VARIAS Deberemos tener un Debian instalado. (mas info) descargamos el .deb de chillispot en la siguiente dirección http://www.chillispot.org/download.html --(el .deb). nos marcamos alegremente un "apt-get install freeradius apache-ssl" configurando el apache con la configuración minima contestando todo lo bien que queramos a las preguntas necesarias para las ssl (lugar, nombre, mail....) que apareceran posteriormente en la info del certificado al acceder al nodo. instalamos tambien el chillispot con "dpkg -i chillispot_VERSION.deb" los archivos de chillispot se localizan en /etc/chilli.conf y en /usr/share/doc/chillispot/ enredaremos en /etc/chilli.conf y en /usr/share/doc/chillispot/firewall.iptables y /usr/share/doc/chillispot/hotspotlogin.cgi lo primero, vamos a hacerlo facil, copiemos hotspotlogin.cgi a nuestro sitio de cgi, /usr/lib/cgi.bin/ podemos tambien editar el firewall.iptables a nuestro gusto con reglas propias (en este caso no lo tocaremos). Lo que si debemos hacer es procurar que las reglas de firewall.iptables se carguen al arranque editamos el /etc/network/options con ip_forward=yes reiniciamos la red con "/etc/init.d/networking restart" y de esta parte , una cosa importante, tener configurado en el kernel el soporte para tun/tap para levantar el interface tun0 en este caso. p-t-p. tal como aparece en la configuración realizaremos lo siguiente : mkdir /dev/net mknod /dev/net/tun c 10 200 para crear el dispositivo y ahora : añadir la siguiente linea a /etc/modules.conf "alias char-major-10-200 tun" luego "depmod -a " para actualizar cambios. ahora, ya tenemos configurado el equipo. FREERADIUS

Page 4: trucos de linux.pdf

vamos a retocar la configuración del freeradius en /etc/freeradius/ : modificamos clients.conf y cambiamos la clave de secret= ...123 por una propia como por ejemplo "linuxpower":)(no está de mas aunque sea en local :) ) modificamos users para añadir los usuarios, para no dar muchas vueltas, copiemos y modifiquemos el usuario que sugiere chillispot , el usuario steve. En el pondremos nuestro propio nombre de usuario, quedando algo asi como : clipse Auth-Type := Local, User-Password == "atitelovoyadecir" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-IP-Address = 172.16.3.33, Framed-IP-Netmask = 255.255.255.0, Framed-Routing = Broadcast-Listen, Framed-Filter-Id = "std.ppp", Framed-MTU = 1500, Framed-Compression = Van-Jacobsen-TCP-IP como se puede observar, basta con modificar user y password, para mas usuarios, copiamos lo mismo y cambiamos la IP-address CHILLISPOT ahora enredamos con el /usr/lib/cgi-bin/hotspotlogin.cgi para personalizarlo un poquillo entre otras cosas en él , observaremos partes de codigo como las siguientes : if (!($ENV{HTTPS} =~ /^on$/)) { print "Content-type: text/html\n\n meta http-equiv="\"Pragma\"" content="\"no-cache\""> h1 style="" center="">Acceso a hotspot erroneo. , pirate zaragatas /h1> p> NO ACEPTA ACCESOS NO AUTORIZADOS. NODO SANTOÑA/p> center> Se debe usar encriptación. /center> "; exit(0); } es html puro y duro, asi que podemos modificarlo a nuestro gusto con la web que queramos, bien pegandolo en este archivo o incluyendolo desde otro archivo aparte con el tocho de html (en este caso, que es poco, lo dejamos) ahora, lo que nos queda, editar /etc/chilli.conf para que case con la clave que hemos cambiado por si las moscas en el servidor radius, en este archivo se encuentra en el apartado de la configuración del servidor radius "radiussecret " donde pondremos la clave del freeradius "radiussecret linuxpower" :P .............................. y mas o menos ya estaria el asunto, :) , relanzamos todos los chismes por si las moscas /etc/init.d/freeradius restart (al loro con los mensaje que igual hace falta añadirle un -x para recargarlo) /etc/init.d/chilli restart y si quereis :) el apache tambien :) , si asociamos cualquier cliente al AP y le decimos que obtenga la ip automaticamente mediante dhcp, las peticiones a cualquier web nos llevarian a la web de presentación que hemos metido en hotspotlogin.cgi (recordad que hotspotlogin almacena varias webs y solo una es la de presentación, el resto es para mensajes de error y aceptación) por defecto, las dns seran las configuradas en el servidor. y una de las cosas que tiene de bueno (que tambien lo tiene el resto de portales captivos como el nocat :) ) es el poder dejar acceso a ciertas paginas sin necesidad de estar logeado, para el resto de cosas , se puede editar la configuración del firewall.iptables. si modificamos /etc/chilli.conf , al final del archivo : TAG: uamallowed # Comma separated list of domain names, IP addresses or network segments # the client can access without first authenticating. # Normally you do not need to uncomment this tag. #uamallowed www.chillispot.org,10.11.12.0/24 uamallowed www.cantabriawireless.net,www.linuca.org,www.delpuerto.com

Page 5: trucos de linux.pdf

dejamos acceso libre a estas webs. (shhhhhhhhhh pero no lo digais muy alto :) ) . y dejariamos a grandes rasgos configurado el sistema para cualquier petición. terminando... Uno de los grandes problemas del wifi, como siempre, la seguridad. Este sistema solo nos cubre de accesos no deseados , no de ser escaneados ni evitar el snifing. Tampoco de un man-in-the-middle y que nos vuelvan locos y se hagan de las passwords (recordad que el login y pass de acceso si viaja encriptado). Deberemos entonces estar al loro de aceptar el certificado correctamente y de si aparecen nuevos certificados de algun malo malisimo :) . Para asegurarlo mejor, se podria configurar un proxy seguro con un squid y ssl de forma que todas las peticiones al web esten encriptadas y procurar utilizar puertos seguros para el resto... pero eso es cantar de otro dia :) ... habra que esperar a que alguien lo intente para confirmar que está "correcto" el documento, recordad que la información sin errores :) está en la web oficial en ingles :P .

2. Manual de Ubuntu

Ubuntu Linux: Ubuntu es un sistema operativo del tipo "Desktop", basado en el núcleo Linux y en algunas herramientas del Proyecto GNU. La estructura técnica del sistema está basada en el Proyecto Debían, pero el ideario está inspirado en los principios de la corriente Ubuntu, palabra africana que significa "humanidad hacia los demás", un movimiento humanista encabezado por el obispo Desmond Tutu, Premio Novel de la Paz 1984. Económicamente el proyecto se sostiene con aportaciones de la empresa Canonical del sudafricano Mark Shuttleworth. Presenta por defecto el escritorio GNOME y la última versión disponible es la 5.10 la que puedes bajar de su pagina Web http://www.ubuntulinux.org/. Lo que resalta de esta distrito es su simplicidad, facilidad de uso y su gran comunidad, por todos estos factores muy recomendable para novatos tanto como para aquellos con más experiencia en el mundo Linux. Hablemos un poco de la interfaz gráfica. Linux a diferencia de Windows es un sistema basado en texto, donde el método principal de entrada de datos por parte del usuario es su teclado, en cambio Windows es un sistema gráfico en el cual el dispositivo que nos permitirá manejar el sistema en su mayor proporción es el mouse, los GUI de Linux (Interfaces gráficas de Linux) tales como KDE, GNOME, Xfce, y tantas otras son un Agregado de software es decir "un programa que se ejecuta" que nos permite usar el sistema en modo gráfico, hoy en día todas las distribuciones Linux vienen incorporadas con una GUI, de todos modos la interfaz de texto (IUT) - siglas en español - son mas ágiles que las gráficas ya que es una capa menos de software entre el usuario y su computadora, a la mayoría de los usuarios de Windows les parecerá un poco difícil al principio manejarse con IUT pero con el tiempo podrán avanzar y aprender numerosos comandos, de todos modos hoy en día cada vez son mejores las GUI haciendo que Linux se vuelva tan fácil como Windows. Actualmente el GUI mas usado es KDE y GNOME por sus prestaciones, facilidad de uso y aplicaciones disponibles, acá tenes breve una explicación de como surge GNOME. El proyecto GNOME (GNU Network Object Model Environment) surge en agosto de 1997 como proyecto liderado por Miguel de Icaza para crear un entorno de escritorio completamente libre para sistemas operativos libres, en especial para GNU/Linux. Desde el principio, el objetivo principal de GNOME ha sido proporcionar un conjunto de aplicaciones amigables y un escritorio fácil de utilizar. En esos momentos existía otro proyecto anterior con los mismos objetivos, pero con diferente medios: KDE. Los primeros desarrolladores de GNOME criticaban a este proyecto por basarse en la biblioteca de controles gráficos Qt por no ser

Page 6: trucos de linux.pdf

compatible con los fundamentos del software libre. Años más tarde los problemas de licencia de Qt se han resuelto y estas críticas han cesado. Sin embargo, los dos proyectos siguen rumbos tecnológicos distintos y se hacen una competencia amigable. Como con la mayoría de los programas GNU, GNOME ha sido diseñado para ejecutarse en toda la gama de sistemas operativos de tipo Unix con X Window, y especialmente pensado para GNU/Linux. Desde sus inicios se ha utilizado la biblioteca de controles gráficos GTK, originalmente desarrollada para el programa The GIMP. A medida que el proyecto ha ido progresando en los últimos años, los objetivos del mismo se han extendido para tratar una serie de problemas en la infraestructura Unix existente. Actualmente el proyecto evoluciona bajo amparo de la Fundación GNOME. Fuente: Wikipedia Extras: Screenshots Si sos fanático de KDE podes utilizar Kubuntu que es el sistema base Ubuntu + KDE lo podes bajar de aquí. ¿Qué es y cómo usar aptitude? -Comandos para terminales- Un sistema operativo sin un conjunto de aplicaciones para el usuario no es nada. Por eso, vamos a comenzar hablando sobre aplicaciones, paquetes y repositorios. Los programas se presentan en Ubuntu, y por lo tanto en Debian, la distribución en la que se basa, en forma de paquetes. Estos paquetes se almacenan en repositorios, una estructura de directorios con una cierta organización, en los que se almacenan además de los paquetes, índices con los distintos paquetes disponibles, e información de control para comprobar su autenticidad y que no estén dañados. Los distintos repositorios a los que tienen acceso los programas dedicados a la instalación de paquetes se listan en el archivo /etc/apt/sources.list.

Apt es un gestor de paquetes. Instala, elimina, actualiza y descarga automáticamente los paquetes que se le indiquen, así como sus dependencias, y opcionalmente, recomendaciones y sugerencias.

Aptitude tiene diferencias y similitudes con apt-get. Ambos hacen uso de apt, pero aptitude tiene mejor reputación que apt-get en actualizaciones complicadas, en que algunos paquetes entran en conflicto, o se desee actualizar tan sólo una parte del sistema, para que no queden paquetes con sus dependencias rotas. No es sólo que el algoritmo de actualización pueda ser mejor o no, sino que con aptitude se trabaja de otra manera, marcando primero las acciones a realizar y después haciendo la actualización, lo que permite un gran control.

¿Cual es la gran ventaja de ésto? Por ejemplo si queres bajar el Amule e instalarlo tendrías que bajar el source y instalarlo manualmente

./configure Make Make install

Page 7: trucos de linux.pdf

Aparte de esto tendrás que instalar las dependencias que use dicho programa, en este caso wxGTK-2.6.1, y hacer lo mismo que hiciste con el amule para instalar, lo que podrías haber hecho en dos minutos con apt o aptitude lo haces en veinte a mano. La ventaja es el ahorro de tiempo. Ventajas de aptitude frente a apt-get:

La gran ventaja es que aptitude se encarga de instalar todos las dependencias correspondientes cuando apt solo las recomienda, dependiendo el caso uno puede ser mejor que el otro.

Entiende de sugerencias y recomendaciones:

Si instalamos K3B con apt cuando lo ejecutemos nos dirá "que falta el cdrao" y tendremos que bajarlo por separado en cambio con aptitude se hubiera bajado todo el paquete completo de dependencias.

Paquetes automáticos, y manuales:

Si instalamos un programa de edición de audio con Apt el cual posee una gran cantidad de dependencias que ni siquiera sabremos que están ahí, y luego lo queremos desinstalar con apt esas dependencias no serán borradas y quedaran en el disco a pesar de ser huérfanas, en cambio aptitude lleva cuenta de los paquetes instalados y permite una fácil desinstalación.

Breve manual de uso:

aptitude install xxx: Instala el paquete, y todas sus dependencias aptitude remove xxx: Elimina el paquete . Si al eliminar ese paquete, hay otros que ya no son necesarios, también serán eliminados. aptitude purge xxx: lo mismo solo que eliminando también los archivos de configuración aptitude update: Actualiza la lista de paquetes disponibles, en base a lo que diga /etc/apt/sources.list aptitude upgrade: Actualiza el sistema de forma segura aptitude dist-upgrade: Actualiza el sistema, eliminando y borrando paquetes que sean necesarios. A pesar de que es lo habitual, en ocasiones puede que queramos actualizar sólo algunos usando 'upgrade'. Antes de poder instalar programas nuevos lo que necesitas es actualizar sources.list para agregar nuevos repositorios, para hacer esto tenes que hacer lo siguiente, abri una terminal root y pone: Primero para hacer un backup de la sources.list

cp /etc/apt/sources.list /etc/apt/sources.list_backup Para abrirla en el editor -Tip: En Kubuntu en vez de gedit utiliza kwrite.

gedit /etc/apt/sources.list

Page 8: trucos de linux.pdf

Nota: utilizar repositorios actualizados en vez de los de la guia, acá los podes encontrar. Una vez abierta busca esta sección:

## Uncomment the following two lines to fetch updated software from the network # deb http://us.archive.ubuntu.com/ubuntu hoary main restricted # deb-src http://us.archive.ubuntu.com/ubuntu hoary main restricted ## Uncomment the following two lines to fetch major bug fix updates produced ## after the final release of the distribution. # deb http://us.archive.ubuntu.com/ubuntu hoary-updates main restricted # deb-src http://us.archive.ubuntu.com/ubuntu hoary-updates main restricted ## Uncomment the following two lines to add software from the 'universe' ## repository. ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## universe WILL NOT receive any review or updates from the Ubuntu security ## team. # deb http://us.archive.ubuntu.com/ubuntu hoary universe # deb-src http://us.archive.ubuntu.com/ubuntu hoary universe # deb http://security.ubuntu.com/ubuntu hoary-security main restricted # deb-src http://security.ubuntu.com/ubuntu hoary-security main restricted # deb http://security.ubuntu.com/ubuntu hoary-security universe # deb-src http://security.ubuntu.com/ubuntu hoary-security universe Después cambiala por esta otra:

## Uncomment the following two lines to fetch updated software from the network deb http://us.archive.ubuntu.com/ubuntu hoary main restricted deb-src http://us.archive.ubuntu.com/ubuntu hoary main restricted

Page 9: trucos de linux.pdf

## Uncomment the following two lines to fetch major bug fix updates produced ## after the final release of the distribution. deb http://us.archive.ubuntu.com/ubuntu hoary-updates main restricted deb-src http://us.archive.ubuntu.com/ubuntu hoary-updates main restricted ## Uncomment the following two lines to add software from the 'universe' ## repository. ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## universe WILL NOT receive any review or updates from the Ubuntu security ## team. deb http://us.archive.ubuntu.com/ubuntu hoary universe deb-src http://us.archive.ubuntu.com/ubuntu hoary universe deb http://security.ubuntu.com/ubuntu hoary-security main restricted deb-src http://security.ubuntu.com/ubuntu hoary-security main restricted deb http://security.ubuntu.com/ubuntu hoary-security universe deb-src http://security.ubuntu.com/ubuntu hoary-security universe deb http://archive.ubuntu.com/ubuntu hoary multiverse deb-src http://archive.ubuntu.com/ubuntu hoary multiverse ¿Cómo actualizar Ubuntu?

aptitude update - Actualiza la lista de paquetes disponibles, en base a lo que diga /etc/apt/sources.list aptitude upgrade - Actualiza el sistema de forma segura. Ahora que tenes actualizados los repositorios podes buscar diferente software para instalar en tu Ubuntu. Por ejemplo:

Aptitude install amule (Equivalente a emule de Windows) Aptitude install xmms (Multimedia) Apitutde install gftp (Cliente Ftp) Aptitude install k3b (Grabacion CD's)

Page 10: trucos de linux.pdf

Si luego queres remover estos paquetes tenes que hacer aptitude purge "nombre".

Instalación (Mp3, Codecs, Flash pluning, Java, etc).

Multimedia. Instalación de los codecs para poder reproducir MP3:

aptitude install gstreamer0.8-plugins aptitude install w32codecs aptitude install gstreamer0.8-ffmpeg Para instalar java con el plugin para firefox pone las siguientes lineas:

apt-get install sun-j2re1.5 java -version Instalación de plugin de flash para el Firefox:

aptitude install flashplayer-mozilla Cómo instalar los drivers Nvidia:

apt-get install nvidia-glx apt-get install nvidia-settings cp /etc/X11/xorg.conf /etc/X11/xorg.conf_backup nvidia-glx-config enable gedit /usr/share/applications/NVIDIA-Settings.desktop en el nuevo archivo pone lo siguiente:

[Desktop Entry] Name=NVIDIA Settings Comment=NVIDIA Settings Exec=nvidia-settings Icon= Terminal=false Type=Application Categories=Application;System; Y por ultimo reinicia el GNOME , Te va a pedir loguearse nuevamente y luego para que arrancar de nuevo tipeas "startx"

Page 11: trucos de linux.pdf

/etc/init.d/gdm restart Para Mejorar el rendimiento edita xorg.conf

gedit /etc/X11/xorg.conf Busca esta sección

... Section "Device" Identifier "NVIDIA Corporation NV34M [GeForce FX Go 5200]" Driver "nvidia" BusID "PCI:1:0:0" ... Añade las siguientes lineas debajo

Option "RenderAccel" "true" Option "NvAGP" "1" Si queres instalar más tipos de fuentes acá tenes algunas:

aptitude install xfonts-intl-arabic aptitude install xfonts-intl-asian aptitude install xfonts-intl-chinese aptitude install xfonts-intl-chinese-big aptitude install xfonts-intl-european aptitude install xfonts-intl-japanese aptitude install xfonts-intl-japanese-big aptitude install xfonts-intl-phonetic aptitude install msttcorefonts Si queres instalar mas temas de escritorio acá tenes algunos:

aptitude install gnome-themes-extras aptitude install gtk2-engines-cleanice aptitude install gtk2-engines-clearlooks aptitude install gtk2-engines-geramik aptitude install gtk2-engines-metal aptitude install gtk2-engines-qtpixmap aptitude install gtk2-engines-thingeramik

Page 12: trucos de linux.pdf

aptitude install gtk2-engines-wonderland Para echar un vistazo a las novedades de themes y engines que aparecen para GNOME, la mejor página es Gnome-look. Una vez que hayáis instalado los engines, para poder usarlos tenes que ir al Menú 'Sistema' 'Preferencias' 'Tema'. Una vez actualizado el sistema vamos a configurar nuestro sistema para adaptarlo al equipo que utilizamos. Lo primero que vamos a hacer es instalar el kernel correspondiente a la arquitectura de nuestro procesador para obtener un mejor rendimiento. En mi caso, al utilizar un procesador AMD Athlon, instalaré el paquete linux-k7. Los paquetes correspondientes según la arquitectura son los siguientes:

linux-386 -> Procesadores 386 (por defecto). linux-686 -> Pentium Pro/Celeron/Pentium II/Pentium III/Pentium IV. linux-686-smp -> Pentium Pro/Celeron/Pentium II/Pentium III/Pentium IV con SMP (sistemas multiprocesador). linux-k7 -> AMD Duron/Athlon. linux-k7-smp -> AMD Duron/Athlon con SMP (sistemas multiprocesador). aptitude install nombre-del-paquete Aptitude se encargará de instalar todo el software necesario del que depende el paquete instalado (conocidos como dependencias) y añadir una nueva opción en el gestor de arranque grub, seleccionada por defecto, Para ver la versión de kernel tipea uname -sr Enlaces útiles: http://ubuntuguide.org/ http://ubuntuforums.org/showthread.php?t=42550 http://mundogeek.net/archivos/2005/02/22/guia-de-configuracion-de-ubuntu/ http://www.guia-ubuntu.org/hoary/doku.php

3. Clonar discos duros con Linux

Cualquiera que haya tenido que instalar un parque de 10 - 100 estaciones de trabajo con exactamente los mismos sistema operativo y programas se habrá preguntado si hay un modo mejor - y más rápido - de hacerlo que mover los CDs de caja en caja. Clonar consiste en - una vez - una estación de trabajo modelo, y después copiarla en todas las demás. El propósito de este texto es explorar algunos de los muchos modos de clonar la configuración del disco duro de una estación de trabajo. En el proceso de clonación, utilizaremos las posibilidades nativas de Linux para producir más o menos el mismo efecto que el bien conocido Norton Ghost del mundo de Windows.

Aunque estaremos lanzando las estaciones de trabajo bajo Linux, el sistema operativo final bajo el que correrán puede ser o no Linux. Actualmente, empleo este sistema para un parque de estaciones Windows ME que se tienen que reformatear al menos una vez al año - por razones evidentes.

Page 13: trucos de linux.pdf

Cambio entre discos duros

El modo más viejo de clonar un disco duro requiere dos estaciones de trabajo (A es el modelo, B es el clon), y otro ordenador C. Sólo C necesita estar bajo Linux.

1. Sacamos los discos duros de las estaciones de trabajo, y se los añadimos a C. Hay que tener cuidado de dejar el disco duro original de C en la primera posición IDE. Por ejemplo:

IDE bus 0, master => disco duro de C => /dev/hda IDE bus 0, slave => disco duro de A => /dev/hdb IDE bus 1, master => disco duro de B => /dev/hdc

Entonces tenemos que copiar los contenidos de /dev/hdb a /dev/hdc. Si son del mismo modelo, podemos conseguirlo con una copia plana byte a byte:

dd if=/dev/hdb of=/dev/hdc

o incluso:

cp /dev/hdb /dev/hdc

Hay modos más fáciles de hacer la copia, sin embargo, debería estar al tanto de los siguientes puntos:

Los discos duros deben ser del mismo modelo exactamente: hay problemas entre versiones más recientes/viejas del mismo disco duro.

Puede tener problemas con sectores defectuosos bien en A o en B.

Page 14: trucos de linux.pdf

Usted está copiando también todas las partes vacías del disco A al B; esto puede tomar algún tiempo y no tiene utilidad para nuestros propósitos.

Este modo puede ser el mejor para la gente que utiliza gestores de arranque como lilo o grub, pues el sector de arranque se copia junto con todo lo demás.

El segundo modo, ligeramente más complicado, de copiar A en B, consiste en dos pasos:

Primero, usdted tiene que hacerse con la tabla de particiones de B (con fdisk, cfdisk,...) Entonces formatea las particiones de B (con mkfs.ext2, mkfs.vfat, mkswap) Hace la copia efectiva

En este caso, copiar significa montar:

mkdir /mount/A ; mkdir /mount/B mount /dev/hdb /mount/A mount /dev/hdc /mount/B cp -dpR /mount/A/* /mount/B umount /dev/hdb ; umount /dev/hdc

Puede haber un poquito de dolor si hay un montón de estaciones de trabajo para clonar, pero lleva menos tiempo que una instalación completa... y puede estar seguro de que tienen la misma configuración.

Importante: si está usando un gestor de arranque como lilo o grub para lanzar una estación de trabajo Linux, entonces tiene que escribir un fichero de configuración del gestor de arranque personalizado e instalarlo en el sector de arranque del disco B.

Page 15: trucos de linux.pdf

Básicamente, usted necesita decirle al gestor de arranque:

Que use el disco /dev/hdc para escribir en el sector de arranque; aquí es donde está actualmente su disco duro clonado.

Que emplee el disco /dev/hda para lanzarse; aquí es donde estará su disco duro clonado cuando lo arranque.

¡Tenga cuidado: puede acabar teniendo que usar sus discos de rescate si hace esto mal! Estando aquí, hágalo. Ya ha sido avisado. Antes de empezar, eche una mirada de cerca a su /etc/lilo.conf actual o a su /boot/grub/menu.1st, y a sus páginas man.

Alternativamente, si simplemente está arrancando Linux, usted puede:

copiar los archivos al disco B devolver el disco B a la estación de trabajo B lanzar la estación de trabajo B desde el diskette de rescate que elaboró para la

estación de trabajo A cuando instaló el sistema ejecutar lilo o grub directamente

Este segundo modo puede ser mucho más fácil para gente con menos horas de vuelo en sistemas Linux. :-)

Otra versión de la misma configuración es, si el disco C es suficientemente grande, copiar una vez desde A a C, y después copiar tantas veces de C a B1, B2, B3, ... Si su instalación IDE tiene buses suficientes (o está usando SCSI), usted puede copiar 5 discos o más a la vez.

No hace falta decirlo, nosotros usamos esto sólo si no tenemos ninguna red instalada - una situación bastante poco común en estos tiempos. Sin embargo, la velocidad puede ser bastante alta dado que estamos trabajando directamente a las velocidades de las interfaces IDE.

Copiando sobre una red

Copiar sobre ua red consiste en lanzar la estación de trabajo B con un diskette o CD con un sistema operativo que pueda guiar la red (veamos ahora ... aquí Linux está dentro, Windows está fuera) y obtener la imagen del disco duro bien directamente de la estación A, o más habitualmente, de un servidor de archivos C. En nuestros ejemplos, emplearé la estación B como el ordenador a configurar y supondré que tenemos los archivos imagen de la estación A directamente copiados a un directorio en el servidor C.

Hay varias "diminutas" distribuciones de Linux-en-un-diskette dsiponibles ahí fuera. MicroLinux(muLinux) es mi favorita, pero todas trabajan de modo similar

La idea es arrancar desde el diskette, e instalar la red.

Entonces usted puede bien:

Tener una imagen completa del disco duro en el servidor, que entonces puede copiar al disco local con una copia byte a byte. Igual que la copia directa de disco a disco, es más sencillo de configurar, pero también tiene los mismos avisos.

Tener el sistema de archivos listo en el servidor, lo que significa que usted tiene que particionar el disco local, formatear las particiones y copiar recursivamente los archivos desde la red a su disco.

Un ejemplo del primer modo, sobre NFS:

Page 16: trucos de linux.pdf

mkdir /mount/C mount server:/exported.directory /mount/C dd if=/mount/C/my.image of=/dev/hda umount server:/exported.directory

Un ejemplo del segundo (suponiendo que ya ha configurado y formateado las particiones en el disco duro local /dev/hda):

mkdir /mount/B ; mkdir /mount/C mount /dev/hda /mount/B mount server:/exported.directory /mount/C cp -dpR /mount/C/* /mount/B umount server:/exported.directory /mount/C umount /dev/hda

En el segundo caso, si está usando un gestor de arranque, recuerde instalarlo bien inmediatamente después de copiar los archivos, o después de reiniciar la estación de trabajo B desde un diskette de rescate.

Page 17: trucos de linux.pdf

Lo bonito con Linux es que, en esencia, copiar una imagen o archivos separados desde una red es exactamente lo mismo que hacerlo de otro disco duro en su ordenador.

NFS no es naturalmente el único modo de descargar el archivo o archivos desde el servidor C. Hoy día hay a elegir muchos protocolos adecuados igual que tiene disponibles clientes en su diskette de arranque. Le sugeriría que usase cualquier servidor que ya tenga instalado en su red. Algunas posibilidades:

NFS (Network File System, Sistema de Archivos en Red)

Éste es el modo nativo que los sistemas Un*x emplean para compartir archivos; es robusto y fácil de instalar. Mi favorito.

HTTP (como en un servidor Web)

Fácil de instalar en el lado del servidor, pero puede ser difícil de encontrar un cliente adecuado. Usado principalmente con scripts de instalaciones automatizadas. Usted ya puede tener uno de éstos ejecutándose.

FTP Menos fácil en el lado del servidor, pero muy fácil de encontrar clientes. Usted ya puede tener uno de éstos ejecutándose.

TFTP (trivial FTP) Muy fácil de instalar en el servidor, muy fácil de usar el cliente. Muchos enrutadores (p. ej. Cisco) usan tftp para almacenar sus archivos de confoguración.

SMB (o Netbios) Sí, éste funciona. Su servidor puede correr bajo, bien Linux + Samba o cualquier versión de WinXX. Por qué lo querría así usted, es asunto suyo, sin embargo.

rcp o scp (scp es preferible por seguirdad)

rsync

Otro de mis favoritos. Usado normalmente para sincronizar un archivo de copia de seguridad o un servidor web con el servidor principal. Esto puede resultar en un pequeño agujero de seguridad si el servidor C está accesible desde fuera de su red, así que tenga cuidado de bloquearlo en su cortafuegos. Realiza compresión.

Hay una distribución de CD reciente llamada Knoppix que le lanza directamente a un escritorio KDE. Desde aquí, usted puede usar todas sus herramientas basadas en gráficos regulares si

está más inclinado a eso.

Lanzando desde la red

Una curva final es lanzar la estación de trabajo B directamente desde la red sin usar un disco de arranque. La idea es decirle a la BIOS que cargue un mínimo driver de red desde una

EPROM. El control es transferido entonces a ese driver, que avanza sobre la red buscando un servidor DHCP del que pueda obtener una dirección IP y un núcleo imagen. Entonces lanza el

núcleo, que como resultado obtiene el sistema de archivos raíz desde un servidor NFS.

En este momento, la estación de trabajo B está lista y funcionando con un sistema LInux. Entonces usted puede formatear sus disco duro local y copiar los archivos desde el servidor.

No hace falta decirlo, esto es bastante más complicado de realizar que desde un diskette o CD Linux. Sin embargo, el proceso puede ser completamente automatizado y es adecuado para

grandes redes con muchas estaciones de trabajo que se deben reconfigurar a menudo.

Otra curva del mismo tipo es olvidarnos completamente de los discos duros locales de las estaciones de trabajo B1, B2, B3 ... y hacerles arrancar cada vez desde la red. Los archivos de

los usuarios se almacenan en el servidor de archivos NFS central.

Page 18: trucos de linux.pdf

4. iptables y NAT

Un muy buen artículo de Ricardo Galli Granada, publicado hace algún tiempo en www.bulma.net, que recupero aquí porque pienso que a más de uno le dará una idea de como proteger su red de forma rápida, sencilla y muy segura, además de hacer nat y masquerading.

En nuestros ejemplos vamos aprovechar las capacidades de control de conexiones que tienen las iptables. Primero, hay que tener en cuenta que el forwarding debe estar habilitado: echo 1 > /proc/sys/net/ipv4/ip_forward Y también recordar que para cambiar las reglas, primero hay que “borrar” las anteriores, por ejemplo: iptables -F iptables -t nat -F

Ahora veremos ejemplos particulares, en todos los ejemplos suponemos que las direcciones de nuestra red privada son 192.168.0.0/24 (es decir la máscara es de 24 bits: 255.255.255.0)

Sólo quiero hacer masquerading de una IP asignada dinámicamente

Caso común para un Linux que obtiene direcciones dinámicas de su proveedor de Internet, en el ejemplo lo doy con la interfaz ippp0, que es la que se usa para RDSI, pero podéis sustituirla por caulquier interfaz que uséis (eth0, ppp0...). Además de hacer el NAT, vamos a permitir el tráfico ICMP (de los pings...) ya que está recomendado que así funcione. Veremos que las última 3 reglas, que no son obligatorias, peri os las recomiendo, lo que haces es descartar cualquier paquete que no sea de uina conexión previamente establecida. # Habilito el NAT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 \ -j MASQUERADE # Dejo pasar los paquetes ICMP iptables -A INPUT -i ippp0 -p ICMP -j ACCEPT # Acepto paquetes de conexiones ya establecidas iptables -A INPUT -p TCP -m state --state RELATED \ -j ACCEPT # Rechazamos paquetes de conexiones nuevas iptables -A INPUT -i ippp0 -m state --state NEW,INVALID -j DROP # Rechazamos paquetes de forwarding de conexiones no establecidas iptables -A FORWARD -i ippp0 -m state --state NEW,INVALID -j DROP

Pero también quiero permitir conexiones entrantes SSH y HTTP

Eso es fácil, antes de las últimas reglas “DROP” hay que poner unas que permitan las conexiones nuevas a esos puertos. Las reglas nos quedan de la siguiente forma: # Habilito el NAT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 \ -j MASQUERADE # Dejo pasar los paquetes ICMP iptables -A INPUT -i ippp0 -p ICMP -j ACCEPT # Permito conexiones al puerto 80 (HTTP) iptables -A INPUT -i ippp0 -p TCP --dport 80 -m state --state NEW \ -j ACCEPT # Permito conexiones al puerto 22 (SSH) iptables -A INPUT -i ippp0 -p TCP --dport 22 -m state --state NEW \ -j ACCEPT

Page 19: trucos de linux.pdf

# Acepto paquetes de conexiones ya establecidas iptables -A INPUT -p TCP -m state --state RELATED \ -j ACCEPT # Rechazamos paquetes de conexiones nuevas iptables -A INPUT -i ippp0 -m state --state NEW,INVALID -j DROP # Rechazamos paquetes de forwarding de conexiones no establecidas iptables -A FORWARD -i ippp0 -m state --state NEW,INVALID -j DROP

Si queréis “abrir” otros puestos, sólo tenéis que agregar esas nuevas reglas.

Tengo dirección IP fija, ¿como lo hago?

Es muy fácil, en vez de usar masquerading, vamos a usar una solución mejor: source NAT. Sólo hay que cambiar la regla del nat (la primera en los ejemplos anteriores). Si la interfaz que tiene la IP fija es la eth0, y la IP fija es la 111.111.111.111, nos quedaría: # Habilito el SNAT iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 111.111.111.111 # Dejo pasar los paquetes ICMP iptables -A INPUT -i eth0 -p ICMP -j ACCEPT # Permito conexiones al puerto 80 (HTTP) iptables -A INPUT -i eth0 -p TCP --dport 80 -m state --state NEW \ -j ACCEPT # Permito conexiones al puerto 22 (SSH) iptables -A INPUT -i eth0 -p TCP --dport 22 -m state --state NEW \ -j ACCEPT # Acepto paquetes de conexiones ya establecidas iptables -A INPUT -p TCP -m state --state RELATED \ -j ACCEPT # Rechazamos paquetes de conexiones nuevas iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP # Rechazamos paquetes de forwarding de conexiones no establecidas iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP

Vale, pero ahora quiero redireccionar las conexiones a un puerto hacia un ordenador interno de mi LAN

Esto se llama destination NAT es bastante sencillo, sólo hay que poner una regla adicional. Por ejemplo, si queremos redireccionar las conexiones al puerto 80 hacia el puerto 80 de un ordenador en la red interna (192.168.0.111). iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \ --to 192.168.0.111:80 Otro ejemplo sencillo y muy útil, redireccionar el puerto 2022 del ordenador haciendo de NAT o firewall hacia el puerto 22 (ssh) de un ordenador de la red interna. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT \ --to 192.168.0.111:22 Voilà, funciona. También podéis leer los Howtos y tutoriales, que están hasta en castellano o aquí

5. Configurar un firewall en Linux con iptables

Muchas son hoy en día las personas que se conectan, de una manera u otra, a Internet. Desde empresas que operan en la red hasta personas en sus casas que pasan un rato divertido navegando por sus páginas preferidas. Pero pocas de estas personas entienden realmente las consecuencias que tiene el

Page 20: trucos de linux.pdf

abrir sus sistemas informáticos a Internet, unas consecuencias que no sólo son de caracter benigno e incluso beneficioso. El bien que obtenemos de Internet tiene un precio: Internet no es un lugar seguro. Al igual que en cualquier sociedad, en Internet existen buenas intenciones, ayudas, compañerismo... pero también existen mentes perversas y llenas de maldad. En Internet existen personas decididas a hacer daño, pocas, pero es un hecho que existen, y debemos protegernos de sus acciones, por insignificantes que pensemos que somos. Es común entre los navegantes más o menos habituales de Internet, que nunca han tenido, o mejor dicho, creen que nunca han tenido un problema de seguridad en sus sistemas, el pensar que no es probable que lleguen jamás a recibir uno de estos ataques por el simple hecho de no poseer nada de interés, de no ser nadie importante. Esto es, claramente, falso. Cualquiera puede ser presa de un ataque en la Red, cualquiera, por insignificante que se pueda pensar que uno es. Es precisamente esa sensación de sentirse a salvo la que hace que sea este tipo de gente el que tome, por lo general, las menores precauciones, y por ello, al mismo tiempo, que se conviertan en la presa más apetecible para aquéllos que simplemente desean hacer daño, por el placer de hacerlo. Como ejemplo, valgan los sorprendentes datos recogidos por mí mismo como usuario de un proveedor de servicios Internet (ISP) común en España, detectando los intentos de atacar el puerto TCP 80 (servidor web) de mi ordenador mientras estaba conectado a Internet, puerto que había dejado abierto intencionadamente (aunque, naturalmente, protegiendo mi servidor web) para guardar un log de los ataques que se intentaban llevar a cabo. Los datos son los siguientes: Fechas: del 19 de Septiembre al 21 de Noviembre de 2001 Promedio de horas de conexión diarias: 1,5 horas. Intentos de ataque al puerto 80/tcp: 87 Lo cual nos da una idea del peligro que corre un usuario cualquiera de Internet que no tome las precauciones mínimas, teniendo en cuenta que soy alguien tan insignificante como cualquier otro en la Red y que, de no ser porque deseaba hacer ese estudio, posiblemente no hubiese podido detectar dichos ataques, y por ello seguiría considerándome seguro. Como dato, el 100% de los 87 ataques eran destinados a servidores Microsoft Internet Information Server o Microsoft Personal Web Server (afortunadamente yo tengo Apache), y se trataba de intentos de ejecución de scripts malignos, de intentos de ejecución de cgi's peligrosos y de explotar algún tipo de buffer overflow en parámetros de algunos scripts de estos servidores. Por tanto, una vez visto que el peligro existe, es la hora de hablar de qué es un firewall. Un firewall es, por lo general, un software (puede ser también un equipo hardware dedicado) a través del cual nos conectamos a una red como Internet, y que sirve como filtro sobre el tráfico que por él pasa, en ambas direcciones, y que en un momento dado puede rechazar cierto tráfico en alguna de las direcciones. Eso quiere decir que, mediante un firewall, podemos detectar el tráfico no deseado hacia nuestros sistemas, y en general, los posibles ataques de que seamos objeto. De esta manera podremos aislar nuestros equipos del exterior, permitiendo nuestro uso de Internet de manera absolutamente normal pero minimizando en lo posible la probabilidad de padecer las consecuencias de un ataque. Así pues, ante la pregunta ¿Necesito un firewall? queda ya suficientemente patente que la respuesta es, sin lugar a ninguna duda, sí. Este artículo cubrirá la configuración de un típico firewall doméstico, que permita conectarse a Internet de una manera segura y cerrar los puertos TCP y UDP que nos puedan causar problemas.

Page 21: trucos de linux.pdf

¿Qué es iptables?

iptables es la herramienta que nos permite configurar las reglas del sistema de filtrado de paquetes del kernel de Linux, desde su versión 2.4 (en 2.2 era ipchains). Con esta herramienta, podremos crearnos un firewall adaptado a nuestras necesidades. Su funcionamiento es simple: a iptables se le proporcionan unas reglas, especificando cada una de ellas unas determinadas características que debe cumplir un paquete. Además, se especifica para esa regla una acción o target. Las reglas tienen un orden, y cuando se recibe o se envía un paquete, las reglas se recorren en orden hasta que las condiciones que pide una de ellas se cumplen en el paquete, y la regla se activa realizando sobre el paquete la acción que le haya sido especificada. Estas acciones se plasman en los que se denominan targets, que indican lo que se debe hacer con el paquete. Los más usados son bastante explícitos: ACCEPT, DROP y REJECT, pero también hay otros que nos permiten funcionalidades añadidas y algunas veces interesantes: LOG, MIRROR... En cuanto a los paquetes, el total del sistema de filtrado de paquetes del kernel se divide en tres tablas, cada una con varias chains a las que puede pertenecer un paquete, de la siguiente manera.

filter: Tabla por defecto, para los paquetes que se refieran a nuestra máquina

o INPUT: Paquetes recibidos para nuestro sistema o FORWARD: Paquetes enrutados a través de nuestro sistema o OUTPUT: Paquetes generados en nuestro sistema y que son

enviados

nat: Tabla referida a los paquetes enrutados en un sistema con Masquerading

o PREROUTING: Para alterar los paquetes según entren o OUTPUT: Para alterar paquetes generados localmente antes de

enrutar o POSTROUTING: Para alterar los paquetes cuando están a punto

para salir

Page 22: trucos de linux.pdf

mangle: Alteraciones más especiales de paquetes o PREROUTING: Para alterar los paquetes entrantes antes de enrutar o OUTPUT: Para alterar los paquetes generados localmente antes de

enrutar

Dado que el soporte para el firewall está integrado en el kernel de Linux (Netfilter), para poder usar iptables tendremos que asegurarnos de que nuestro núcleo admite el uso de iptables y que añadimos a la configuración del núcleo todos aquellos targets que vayamos a necesitar (aunque siempre es bueno tener los más posibles).

Características del firewall a crear

Para crear nuestro sencillo firewall doméstico, tendremos primero que preguntarnos qué es lo que deseamos que haga. Lo más usual, en un equipo que se usa para conexiones a Internet de manera normal (no es servidor de nada, etc...) es que deseemos de nuestro firewall lo siguiente:

Que nos permita realizar conexiones TCP hacia afuera de nuestra máquina (si no, no podríamos hacer casi nada).

Que no permita realizar conexiones TCP desde afuera hacia nuestra máquina, para evitar que alguien intente conectarse a nuestros servidores web, ftp, telnet, X...

Que permita el tráfico de paquetes TCP (paquetes que no establezcan conexiones) en ambas direcciones, pues necesitamos tráfico bidireccional de paquetes al usar casi cualquier cosa en Internet.

Que Prohiba el tráfico UDP desde afuera de nuestra máquina, a excepción del necesario para las respuestas por parte de nuestros servidores DNS, que provendrán de su puerto UDP 53.

Page 23: trucos de linux.pdf

En caso de tener una intranet, que no aplique estas restricciones al tráfico proviniente de y enviado hacia la intranet, ya que en esta red interna probablemente sí nos interese poder acceder remotamente a nuestra máquina.

Uso básico de iptables

Para crear nuestro firewall, necesitaremos ejecutar algunos comandos básicos sobre iptables, como: Para crear una nueva regla al final de las ya existentes en una chain determinada:

$ /sbin/iptables -A [chain] [especificacion_de_la_regla] [opciones]

Para insertar una regla en una posición determinada de la lista de reglas de una chain determinada:

$ /sbin/iptables -I [chain] [posición] [especificacion_de_la_regla] [opciones]

Para borrar una regla en una posición determinada de la lista de reglas de una chain determinada:

$ /sbin/iptables -D [chain] [posición]

Para todas las reglas de una chain determinada:

$ /sbin/iptables -F [chain]

Para listar las reglas de una chain determinada:

$ /sbin/iptables -L [chain]

La especificación de reglas se hace con los siguientes parámetros (especificando aquellos que se necesite):

-p [protocolo]: Protocolo al que pertenece el paquete.

Page 24: trucos de linux.pdf

-s [origen]: dirección de origen del paquete, puede ser un nombre de host, una dirección IP normal, o una dirección de red (con máscara, de forma dirección/máscara).

-d [destino]: Al igual que el anterior, puede ser un nombre de host, dirección de red o dirección IP singular.

-i [interfaz-entrada]: Especificación del interfaz por el que se recibe el paquete.

-o [interfaz-salida]: Interfaz por el que se va a enviar el paquete. [!] -f: Especifica que la regla se refiere al segundo y siguientes fragmentos

de un paquete fragmentado. Si se antepone !, se refiere sólo al primer paquete, o a los paquetes no fragmentados. Y además, uno que nos permitirá elegir qué haremos con el paquete:

-j [target]: Nos permite elegir el target al que se debe enviar ese paquete, esto es, la acción a llevar a cabo con él.

Algunas de las opciones que se permiten en los comandos de arriba son:

-v: Modo verboso, útil sobre todo con iptables -L. -n: las direcciones IP y números de puertos se mostrarán numéricamente

(sin resolver nombres). --line-numbers: Muestra los número de regla de cada regla, de manera

que sea más fácil identificarlas para realizar operaciones de inserción, borrado...

Creación del firewall Para crear nuestro firewall, iremos introduciendo una a una las reglas que necesitamos: Primera regla: permitiremos cualquier tráfico que provenga de nuestro interfaz de loopback (lo), para ello insertaremos en el chain INPUT (que se encarga de los paquetes que llegan con destino a nuestra máquina), de la tabla filter la siguiente regla:

$ /sbin/iptables -A INPUT -i lo -j ACCEPT

Atención: es importante aquí respetar las mayúsculas, pues los nombres del chain y del target son INPUT y ACCEPT, no input o accept. Segunda regla: si disponemos de intranet, permitiremos todo el tráfico que provenga de nuestro interfaz de red interna. Por ejemplo, imaginando que tuviésemos una ethernet en el interfaz eth0, haríamos:

$ /sbin/iptables -A INPUT -i eth0 -j ACCEPT

Page 25: trucos de linux.pdf

El hecho de que omitamos la dirección de origen, de destino... implica que nos referimos a todas. Tercera regla: impediremos el paso de cualquier paquete TCP proviniente del exterior que intente establecer una conexión con nuestro equipo. Estos paquetes se reconocen por tener el flag SYN asertado y los flags ACK y FIN desasertados. Para decirle a la regla que reconozca específicamente estos paquetes, usaremos una opción que se puede usar cuando el protocolo del paquete es declarado como tcp, la opción --syn. De la siguiente manera:

$ /sbin/iptables -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

Y vemos también el uso de una opción del target REJECT, que nos permite elegir de qué manera debe ser rechazado el paquete. Posibles valores son icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited y icmp-host-prohibited. Cuarta regla: Antes de declarar que deseamos prohibir cualquier tráfico UDP hacia nuestra máquina, y dado que las reglas se recorren en orden hasta que una de ellas se activa con el paquete, tendremos que añadir ahora una regla que nos permita recibir las respuestas de nuestro/s servidor/es DNS cuando nuestro sistema les realice alguna consulta. Estas respuestas, vía UDP, saldrán del puerto 53 del servidor DNS. La regla, pues, será:

$ /sbin/iptables -A INPUT -p udp --source-port 53 -j ACCEPT

Donde --source-port es una opción presente cuando el protocolo es udp (también cuando es tcp) y nos permite en este caso especificar que la consulta provenga del puerto destinado al DNS. Quinta regla: Prohibimos ahora el resto del tráfico UDP. La regla de por sí implica a todo el tráfico UDP, pero como un paquete sólo activará esta regla si no ha activado la anterior, los paquetes UDP referentes a una transacción con un servidor de nombres no se verán afectados.

$ /sbin/iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable

Page 26: trucos de linux.pdf

Dado que los targets por defecto (denominados policy o política) en la tabla filter son ACCEPT, si un paquete no activa ninguna de las reglas, será aceptado, de manera que no tendremos que preocuparnos de, por ejemplo, los paquetes de tráfico normal de TCP, ya que estos serán aceptados al no activar regla alguna. Si ahora escribimos:

$ /sbin/iptables -L -v

Deberíamos obtener algo como:

Chain INPUT (policy ACCEPT 3444 packets, 1549K bytes) pkts bytes target prot opt in out source destination 11312 3413K ACCEPT all -- lo any anywhere anywhere 0 0 ACCEPT all -- eth0 any anywhere anywhere 0 0 REJECT tcp -- any any anywhere anywhere tcp flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable 0 0 ACCEPT udp -- any any anywhere anywhere udp spt:domain 0 0 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 15046 packets, 4218K bytes) pkts bytes target prot opt in out source destination

De modo que nuestro pequeño y básico firewall doméstico ya está configurado. Nuestro equipo es ahora muchísimo más seguro, puesto que los ataques a nuestro sistema requerirían ahora mucha más elaboración, tiempo y esfuerzo por parte del atacante, de manera que nuestra condición de insignificantes ya empezará a ser importante como garante de seguridad.

Guardar y reusar nuestra configuración de iptables

Pero, si una vez realizadas estas configuraciones, apagásemos nuestro equipo, todo esto se perdería, y tendríamos que volver a realizar una a una las sentencias de configuración. Para evitar esto, iptables cuenta con dos programas auxiliares: iptables-save e iptables-restore, el primero de los cuales nos permite sacar por salida estándar el contenido de nuestras tablas IP, y el seguno nos permite, a partir de la salida generada por iptables-save, recuperar la configuración de las tablas.

Page 27: trucos de linux.pdf

De manera que para volcar la configuración de nuestro firewall en un fichero ejecutaremos:

$ /sbin/iptables-save -c > [fichero]

Donde -c es una opción que nos permite guardar los contadores del número de paquetes que activaron cada regla. Y, cuando queramos, podremos recuperar la configuración del firewall con:

$ /sbin/iptables-restore -c < [fichero]

En cuyo caso -c tiene el mismo significado que con iptables-save Estas llamadas a iptables-save e ipatbles-restore podrán ser incluidas en los scripts adecuados para que se lleven a cabo de manera automática en el arranque y el cierre del sistema. En caso de ser usuarios de Red Hat Linux, a partir de su versión 7.1, una vez configurado el firewall con iptables tal y como se ha descrito en este artículo, y una vez salvada la configuración con iptables-save en el archivo /etc/sysconfig/iptables, se pueden activar los scripts que arrancarán y cerrarán el firewall automáticamente al arrancar y apagar el equipo, mediante la Text Mode Setup Utility (/usr/sbin/setup), en la sección System Services.

Page 28: trucos de linux.pdf

6. Comandos basicos de linux

Aqui les dejo un resumen de una lista de comandos basicos para los que recien empiezan: Comandos para el manejo de archivos: cd = cambia el directorio compress = comprime archivos en formato .Z cp = copia un archivo chmod = cambia los permisos de un archivo o directorio chown = cambia el propietario del archivo o directorio df = muestra el espacio libre en dicso du = muestra el espacio en disco utilizado fdformat = formatea un diskete fdisk = pariciona unidades file = determina el tipo de archivo a traves del analisis parcial de su contenido find = encuentra un archivo fsck = chequea el sistema de archivos gzip = descomprime un archivo en formato GZip ln = crea un enlace simbolico o fisico depende la opcion ls = sirve para listar el contenido de un directorio mkdir = crea un directorio mkfs = cra un nuevo sistema de archivos mkswap = crea un espacio de intercambio more = exhibe el contenido de un archivo mount = monta una unidad o particion en el sistema de archivos mv = mueve un archivo y se utiliza para renombrar pwd = devuelve la cadena correspondiente al directorio actual rm = borra un archivo rmdir = borra un directorio swapon = activa el espacio de intercambio swapoff = desactiva el espacio de intercambio tar = empaqueta o desempaqueta un archivo en formato .tar type = muestra la ubicacion de un archivo senialando su "path" umount = desmonta una unidad montada Comandos para el manejo de procesos: free = muestra la memoria libre y utilizada halt = apaga la maquina kill = mata un proceso senialando el numero de este ldd = muestra las librerias necesarias para ejecutar un proceso ps = muestra todos los procesos q se estan ejecutando en el sistema pstree = lo mimo q ps pero en forma de arbol reboot = reinicia el sistema shutdown = cierra el sistema top = monitorea procesos y el estado del sistema uname = muestra informacion del sistema Comandos para el manejo de usuarios: adduser = crea una cuenta de usuario chsh = cambia la shell de un usuario groups = muesra el listado de grupos de usuarios del sistema id = muestra la informacion de usuario y grupo de un determinado usuario logout = para salir del sistema y permitir el ingreso a otro usuario passwd = cambia el password de un determinado usuario su = le da privilegios de root a un usuario

Page 29: trucos de linux.pdf

talk = permite chatear con otros usuarios users = lista los usuarios conectados al sistema who = muestra informacion de los usuarios conectados al sistema whoami = muestra informacion nuestra Otros comandos: cal = muestra el calendario date = muestra el dia y la hora ddate = como el anterior pero de forma rara HuhHuh info = muestra la ayuda de un comando man = muestra las paginas del manual de un comando startx = para iniciar XWindow Comandos Debian apt-get update = updatea la base de datos de los paquetes .deb apt-get upgrade = actualiza los paquetes a su ultima version apt-get install "paquete" = instala lo que escribiras en "paquete" apt-get remove "paquete" = desinstala lo que escribiras en "paquete" apt-get check = actualiza la cache de paquetes apt-get clean = borra los paquetes .deb descargados apt-get dist-upgrade = hace un upgrade del SO apt-get source "paquete" = descarga fuentes del "paquete" apt-cache showpkg "paquete" = muestra todas las versiones disponibles de "paquete" modconf = pequeño programa para sacar o poner modulos del kernel update-rc.d "opcion" "programa o script" "opcion" = Remueve o Agrega el script o programa a los niveles de corrida que se le asigne Comandos Red Hat rpm -q "programa" = para saber si "programa" esta instalado rpm -qs "programa" = estado de todos los archivos de "programa" rpm -qd "programa" = documentacion de "programa" instalada rpm -qc "programa" = archivos de configuracion de "programa" rpm -qa "programa" = muestra todos los rpm de "programa" rpm -qa | grep "programa" = busca el nombre de paquete del "programa" rpm -i "programa" = instala "programa" rpm -u "programa" = actualiza "programa" rpm -e "programa" = elimina "programa" rpm -ivh "programa" = instala el "programa" en pasos y muestra el progreso de la instalacion Comandos de red ping = el tan famoso ping que manda paquetes esperando una respuesta ifconfig = para ver las placas de red netstat = testeo de red host "destino" = muestra ip de "destino" nmap "ip de destino" = pequeño programa para analizar ip´s o rangos de ellas Comandos para el manejo de paquetes rpm - "opcion" "paquete" = instala o desinstala el "paquete" depende la opcion dpkg - "opcion" "paquete" = instala o desinstala el "paquete" depende la opcion (solo debian) tar - "opcion" "paquete" = comprime o descomprime el "paquete" de formato tar.gz .tgz o tar.bz2

Page 30: trucos de linux.pdf

10. Comandos para novatos 10.1 Comandos básicos (para mas información "man comando") man páginas del manual (es un help muy potente) ls listar (como dir) rm borrar un fichero cp copiar un fichero pwd te dice el directorio en el que estás cd directorio te sitúa en directorio cd .. baja al directorio de nivel inferior chown, chgrp, chmod, touch comandos para manejo de atributos de ficheros find, locate buscar ficheros cat, more, head listar ficheros (como type) split partir ficheros grep buscar texto en ficheros (muy potente) 10.2 Comandos para comunicaciones y redes who lista de usuarios conectados finger información sobre usuario mail sencillo programa de correo write manda un mensaje a la pantalla de un usuario mesg bloqueo de mensajes de write wall mensaje a todos los usuarios talk establecer una charla con otro usuario banner saca letrero en pantalla con el texto que se le pase cal saca el calendario en pantalla clear limpia la pantalla date saca fecha y hora actuales passwd cambiar contraseña de un usuario 10.3 Entorno gráfico xwindow Iniciar X startx Abrir nuevas sesiones startx -- :2 , :3 , :4 , etc. Configuración de XF86 /etc/X11/XF86Config Configuración de servidor X /etc/X11/Xserver Configurar X XF86Setup (entorno gráfico, tienes que instalar xserver_vga) /usr/sbin/xbase-configure (entorno línea de comandos) Salir de las X ctrl-alt-backspace Fichero donde está el programa que arranca las X /etc/X11/window-managers 10.4 Comprimir y descomprimir Descomprimir un *.tar.gz tar -xvzf <fichero> Descomprimir un *.tar (el tar es un tar_gz al que

Page 31: trucos de linux.pdf

se le ha pasado gunzip) tar -xvf Descomprimir un *.gz gzip -d Empaquetar sin comprimir tar Comprimir ficheros empaquetados gzip 10.5 Manejo de las unidades de diskettes y Cd-Rom Montar diskette mount -t msdos /dev/floppy /mnt (/dev/floppy = /dev/fd0) Montar Cd-Rom mount -t iso9660 /dev/cdrom /mnt (/dev/cdrom = /dev/hdb) Listar unidad montada ls /mnt Desmontar todo umount /mnt Formatear floppy superformat /dev/fd0 hd (msdos) (hay que tener instalado fdutils) superformat /dev/fd0 sect=21 cyl=83 mkfs.ext2 /dev/fd0 (crea sistema de ficheros ext2) 10.6 Manejo de ficheros Enlace simbólico entre ficheros ln -sf /dev/ttyS0 /dev/mouse (puerto serie 1) ln -sf /dev/ttyS1 /dev/modem (puerto serie 2) Número de inodo ls -i Número de enlaces de un fichero ls -l Borrar enlaces rm fichero (si no tiene enlaces borra el fichero) Borrar directorios rm -r Ver espacio libre en disco df (disco entero) du -sh (directorios y ficheros) Buscar un fichero find / -name mime.types (la / es la raiz donde quieres buscar) 10.7 Uso del sistema Ver pid de trabajos ejecutándose ps Inicialización de puertos serie /etc/rc.boot/0setserial Inicio del sistema /etc/init.d/boot Listar el hardware reconocido dmesg , dmesg | more Ver módulos cargados en el kernel lsmod Prompt export PS1="\W$" \W , te saca el nombre usuario \H , te saca el nombre del Host \T , te saca la hora \V , ??? export PS1="usuario$ " Información del sistema uname -a Librerías instaladas /sbin/ldconfig -p Librerías que utiliza un programa ldd /ruta/programa Salir del sistema shutdown -r 0 (reinicializa

Page 32: trucos de linux.pdf

el ordenador) shutdown -h 0 (cierra el sistema y se para) Eliminar Lilo fdisk /mbr (entrando por símbolo del sistema, en msdos c:) 10.8 Manejo de la impresora Dispositivo /dev/lp1 Probarlo ls > /dev/lp1 Para imprimir se necesita lpr , Magicfilter y Mpage Hay que configurar un filtro para la impresora Utilizar Magicfilterconfig --force (para mi hp690 C elijo el filtro hp550c) Ver colas impresión lpq Estado impresoras lpc status Eliminar colas en impresión lprm 10.9 Comandos de IRC para IrcII /server conectar con un servidor (/server irc.arrakis.es) /channel , /join conectar con un canal (/channel #linux) /admin datos de servidor o nickname /list listar canales irc /names nicknames de todos los usuarios /msg <nick> <msg> mensaje privado a nick /who <canal> quien está conectado y sus datos /whois <nick> verdadera identificación de alguien /quit desconectar 10.10 Instalación y manejo de paquetes en Debian dpkg -i Instalar paquete dpkg --info Información del paquete dpkg -c Muestra la lista de ficheros contenidos dpkg --contents Lista todos los ficheros contenidos con sus directorios dpkg -f Muestra información de versión del paquete dpkg --unpack Desempaqueta dpkg --purge Borra un paquete incluidos los ficheros de configuración dpkg -r Borra un paquete pero no borra los ficheros de configuración dpkg -L Lista el paquete si está instalado dpkg -l Lista los paquetes instalados 10.11 Convertir paquetes de RedHat a Debian alien -d fichero.rpm convierte fichero rpm a deb alien -d fichero.tgz convierte fichero tgz a deb

Page 33: trucos de linux.pdf

alien -i fichero.rpm convierte fichero rpm a deb y lo instala alien -i fichero.tgz convierte fichero tgz a deb y lo instala

7. Seguridad en Sistemas Linux

SEGURIDAD EN LINUX

INTRODUCCIÓN Y ASPECTOS GENERALES

SOBRE LA SEGURIDAD EN UN SISTEMA INFORMÁTICO

Seguridad Física

1. Uso del equipo por personal autorizado. 2. Solo podrá tener acceso al equipo aquel personal que cuente con conocimientos mínimos sobre

computación. 3. Poder contar con mas de un servidor de base de datos lo cual asegure la integridad total de la

información. 4. Ubicación de las instalaciones que cumplan con normas internacionales de calidad (ISO 9000). 5. Control de alarma la cual notifique en todo momento sobre la integridad física del sistema.

Seguridad Lógica

1. Construcción de contraseñas en diversos niveles del sistemas donde permita solo el acceso en base a niveles de seguridad de usuarios con permiso.

2. En base al sistema operativo que use como plataforma, algoritmos que generen claves para poder encriptar los archivos de contraseñas dentro del sistema lo cual me permita mayor seguridad en un entorno de red.

3. Generar un módulo del sistema para la emisión de reportes para el administrador del sistema en donde se muestre tablas de uso del sistema así como los usuarios y los niveles de acceso por parte de los tales para poder determinar el uso y acceso al sistema.

4. También es necesario contar con el diseño de módulos que ejecuten un Control de alarma la cual notifique en todo momento sobre la integridad de la información del sistema.

Conducta del usuario

1. Establecer campañas constantes sobre la funcionalidad y logros que se alcanzaran con el sistema los cuales creen una conciencia en el usuario y logren forman en el un interés en el uso del sistema.

2. Análisis del uso y trayecto del sistema por parte de los usuarios para poder detectar fugas de información y posibles problemas con los datos accesados del sistema.

PASOS PARA DETERMINAR SI UNA RED HA SIDO HACKEADA

1. Examina los ficheros de log buscando conexiones desde lugares inusuales o cualquier actividad fuera de lo normal. Por ejemplo, mira el ultimo log, "process accounting", todos los logs creados por syslog, y otros logs de seguridad. Si tu firewall o tu router escriben logs en lugares distintos de donde los escribe el sistema estudiado, recuerda chequear también esos logs. Esta no es una garantía completa a no ser que "los logs se escriban en un append-only media"; muchos intrusos editan los ficheros de log para intentar ocultar su actividad.

2. Busca los ficheros con los bits setid y setgid activados (especialmente los setuid de root) en todo el sistema. Los intrusos suelen dejar copias de programas como /bin/sh o /bin/time con el bit

Page 34: trucos de linux.pdf

"setuid" activado para permitirles acceso a root mas tarde. Se puede usar el programa de UNIX find(1) para encontrar ficheros con setuid y/o setgid activados.

3. Comprueba los binarios del sistema para asegurarte de que no han sido alterados. Hay intrusos que cambian programas en sistemas UNIX tales como login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, cualquier binario referenciado en /etc/inetd.conf, y otros programas de red y del sistema críticos así como librerías de objetos compartidas.

4. Ten cuidado a la hora de confiar en los backups; tus backups pueden contener a su vez caballos de Troya.

5. Comprueba que en tu sistema no existan programas no autorizados de monitorizacion de red, comúnmente llamados sniffer "packet sniffer". Un intruso puede usar un sniffer para capturar información de la cuenta y password de un usuario.

6. Examina todos los ficheros que son ejecutados por cron y at. Hay intrusos que dejan puertas traseras en ficheros ejecutados por cron o enviados a at pues permiten al intruso volver al sistema.

7. También, verifica que todos los ficheros/programas referenciados por los jobs de cron y at, y los ficheros del job en si mismos, no tienen permisos de escritura para todo el mundo.

8. Comprueba que no haya servicios no autorizados. Inspecciona el /etc/inetd.conf buscando cambios no autorizados. Busca entradas que ejecuten un programa shell, y verifica todos los programas especificados en /etc/inetd.conf para comprobar que son correctos y que no han sido reemplazados por un caballo de Troya.

9. También chequea servicios legítimos que hayas comentado en el /etc/inetd.conf. Algún intruso puede haber habilitado un servicio que previamente habías deshabilitado o sustituir el programa inetd por un caballo de Troya.

10. Examina el fichero /etc/passwd y comprueba las modificaciones de dicho fichero. Verifica que no haya nuevas cuentas creadas sin autorización, cuentas sin password, o cambios en el UID (especialmente UID 0).

11. Comprueba que no existan entradas no autorizadas en los ficheros de configuración de red y del sistema. En particular, busca entradas con '+' y nombres de hosts externos no apropiados en el fichero /etc/hosts.equiv, /etc/hosts.lpd, y en todos los ficheros .rhosts. Estos ficheros no deben tener permisos de escritura para todo el mundo. Además, confirma que estos ficheros existían previamente a ninguna intrusión y que no han sido creados por el intruso.

12. Busca por todo el sistema ficheros raros u ocultos, pues estos ficheros pueden usarse para ocultar herramientas e información.

13. Examina todas las maquinas de la red local cuando busques señales de una intrusión. Si la seguridad de un host se ha visto comprometida, la seguridad de otros en la red también.

CUOTAS

Las cuotas permiten especificar limites en dos aspectos del almacenamientoen disco: El numero de inodos que puede poseer un usuario o un grupo; y el numero de bloques de disco que puede ocupar un usuario o un grupo. La idea que se esconde detrás de las cuotas es que se obliga a los usuariosa mantenerse debajo de su limite de consumo de disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema.

Las cuotas se manejan en base al usuario y al sistema de ficheros. Si elusuario espera crear ficheros en mas de un sistema de ficheros, las cuotas deben activarse en cada sistema de ficheros por separado.

DETECCION DE INTRUSOS MEDIANTE ANALISIS DE HUELLAS

Ficheros que guardan registros:

utmp: Guarda un registro (log) de los usuarios que estan tilizando el sistema mientras estan conectados al sistema. Directorios: /var/adm/utmp y /etc/utmp

wtmp: Guarda un log cada vez que un usuario se introduce en el sistema o sale del sistema. Directorios: /var/adm/wtmp y /etc/wtmp

Page 35: trucos de linux.pdf

lastlog: Guarda un log del momento exacto en que un usuario entro por ultima vez. Directorio: /var/adm/lastlog

acct o pacct: Registra todos los comandos ejecutados por cada usuario (aunque no registra los argumentos con que dichos comandos fueron ejecutados). Directorio: /var/adm/acct

Comandos que permiten ver el estado del sistema:

who y users: Permite saber quien esta conectado al sistema en el momento en que ejecutamos el comando.

finger: Lo mismo que el comando who, con el añadido de que podemos saber que usuarios estan conectados a una determinada maquina en el momento en que ejecutamos el comando.

last: Muestra la ultima vez que se conecto un usuario. Last toma la informacion que saca en pantalla del fichero wtmp.

ps: Permite saber que procesos estan siendo ejecutados por el sistema y que usuarios los ejecutan.

accton: Activa un proceso llamado accounting, que es el que proporciona informacion al fichero acct.

lastcomm: Permite saber que comandos han ejecutado los usuarios.Lastcomm toman la informacion que sacan por pantalla del fichero acct.

Por lo tanto, si queremos borrar nuestras huellas del sistema, bastar con borrar cualquier log relativo a nuestro usuario de los ficheros utmp, wtmp y acct. Esto se puede hacer de dos formas:

Eliminar huellas de utmp y wtmp

1. No borramos los ficheros pero los dejamos con cero bytes. 2. Editar los ficheros con un ‘zapper’ que pueden borrar los datos relativos a un usuario en

particular de estos ficheros dejando el resto de los datos intacto.

Eliminar huellas de acct

Es bastante complicado borrar nuestras huellas de este fichero, de hecho no se pueden borrar del todo, aunque se pueden reducir a una minima parte nuestra presencia en el sistema.

Mas sistemas de log:

Syslog: Mediante el syslog se puede configurar de tal forma que determinados programas, procesos o aplicaciones generen mensajes que son enviados a determinados ficheros donde quedan registrados dichos mensajes.Este fichero si puede ser editado en modo texto y puede ser analizado para ver dónde hemos ido dejando rastros y posteriormente borrar esas huellas, aunque por supuesto, necesitamos ser root para poder hacerlo.

TCP-Wrapper: Se trata de una aplicacion que proporciona una serie de mecanismos para el registro y filtro de aquellos servicios invocados o llamados a traves del inetd (internet daemon). Con esta herramienta el administrador posee un control absoluto de las conexiones hacia y desde su maquina y es informado en todo momento de las conexiones que se han hecho desde su maquina y hacia su maquina.

SISTEMAS DE CONTRASEÑAS EN LINUX

Sistema de cifrado de passwords

Page 36: trucos de linux.pdf

El estandar DES transforma la informacion de texto llano en datos encriptados llamado texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. En el sistema crypt(3) el texto llano se encripta en un grupo de ceros, posteriormente el texto cifrado resultante es encriptado de nuevo con el password del usuario como clave, repitiendose este proceso 25 veces. Una vez finalizado, los 64 bits se dividen en 11 caracteres y se guardan en el archivo /etc/passwd. Para "animar" un poco mas la cosa se utiliza lo que se denomina en criptologia como un "grano de sal". Se trata de un valor de 12 bits que se utiliza para modificar el resultado de la funcion DES, esto es, un valor que puede variar de 0 a 4095. Asi que para cada contraseña posible existen 4096 formas de encriptacion y almacenamiento. Cuando utilizamos el programa /bin/passwd para introducir una nueva contraseña, dicho programa utiliza un "grano de sal" basado en la hora del sistema, la cual es utilizada para la funcion de calculo de la contraseña encriptada. Esta sal es guardada junto a la contraseña en el archivo /etc/passwd. Asi que los dos primeros caracteres de una contraseña encriptada son en realidad el "grano de sal".

Asi pues, un password una vez encriptado no se puede desencriptar. Pero esto no quiere decir que el password este seguro y no se pueda averiguar.

¿ Donde va la clave que tecleo cuando el sistema me pide "password" ?

Va al fichero /etc/passwd, salvo que tengamos Shadow Password en esta forma:

rcano : xkHrjur : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh

Cada línea de este fichero representa a un usuario del sistema y contiene informacion sobre el, repartida en 7 campos separados por ":", a saber:

login del usuario rcano password encriptada xkHrjur Clave cifrada UID del usuario 501 GID del grupo del usuario 1000 Nombre Completo Roberto Cano Home directory /home/rcano SHELL por defecto /usr/bin/zsh

Si en tu sistema tienes "Shadow Password", en vez de una clave cifrada verás una "x". Si no tienes nada es que ese usario no tiene clave asignada. Si hay un "*" esa cuenta esta deshabilitada.

¿Como puedo adivinar la clave de un usuario?

El fichero /etc/passwd tiene permisos de lectura para todo el mundo, con lo cual todo el mundo puede leer la clave encriptada de todo el mundo. Podemos ver la clave, pero esta cifrada según un método ( estándar de encriptación DES ) con lo que es practicamente imposible averiguar la clave original.

El problema es que es tremendamente fácil dedicarse a encriptar palabras de un fichero y ver si coinciden con la clave encriptada.

Tambien podemos usar programas de adivinacion de claves. Estos programas usan diccionarios de claves, que son simplemente archivos con miles y miles de logins y passwords diferentes. Diccionarios en Internet hay de todos los idiomas conocidos y algunos por conocer, asi como ficheros con nombres famosos, grupos de musica, actores, etc. Es posible que tengas incluso un fichero-diccionario en tu sistema busca en /usr/dict/spanish ó /etc/dictionary. Los programas buscadores de contraseñas son facilmente diseñables, en realidad uno sencillo puede crearse en menos de 30 lineas de codigo.

Esta forma de buscar claves válidas se conoce como el método de la fuerza bruta y si no tomamos precauciones puede ser muy efectivo.

Page 37: trucos de linux.pdf

Para mantener una seguridad decente en tu sistema Linux, en lo concerniente a la entrada al sistema, dos son las medidas basicas a adoptar:

Elegir passwords "resistentes" Usar un sistema con "Shadow Password"

Como elegir una clave segura.

Nunca elegir como clave la misma palabra que el "login" ( es lo primero que prueban los programas de crackeo).

Nada de elegir una "palabra clave" recuerda que hay diccionarios de todos los idiomas, asi como de nombres propios o apellidos, de personas y cosas famosas etc. La clave no debe ser una palabra!

Tampoco vale una palabra modificada fácilmente, los programas de crackeo descritos permiten incluso atacar combinaciones de palabras con prefijos y sufijos, Mayusculas-minúsculas, orden inverso... etc.

Elige pues, una combinación de letras ( a ser posible mayúsculas y minúsculas, recuerda que son diferentes ) y números o signos de puntuación ( comas, puntos guiones ... )

No elijas cosas obvias como tu fecha de cumpleaños, el nombre de tu perro/novia/mujer/hijo la matrícula de tu coche, tu número de teléfono.. Ah! y no la apuntes en un POST-IT en tu monitor!! ;)

¿Como cuanto de segura?

Un programa de "cracking" puede ensayar y comparar 10.000 combinaciones por segundo. El tiempo máximo que tardaría un cracker en encontrar una clave de 8 caracteres que use minusculas, mayusculas, numeros y simbolos seria de ¡¡19.329 AÑOS!!

Por el contrario, si un usuario elige una clave de 6 caracteres, todas letras minúsculas. A 10.000 combinaciones por segundo, su clave sería encontrada en ¡¡8 horas y media!!

Shadow Password.

Claves en la sombra. Los sistemas modernos ya no depositan la clave encriptada en /etc/passwd, sino en otro llamado /etc/shadow al que solo tiene acceso el root. En el lugar de la clave encriptada, en el fichero /etc/passwd se coloca una "x" :

rcano : x : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh

El paquete Shadow proporciona más características adicionales de seguridad, como por ejemplo:

Fichero de configuración para establecer opciones para el "login" ( /etc/login.defs ) Utilidades para añadir, modificar y borrar cuentas de usuarios y grupos Claves con fecha de "caducidad" Expiración de claves y bloqueo de cuentas Mejor control sobre la elección de las claves de los usuarios ( no nos dejará elegir cualquier

clave sencilla de adivinar )

Al administrador del sistema le queda la tarea de comprobar que todo el mundo tiene una clave mínimamente resistente, para lo cual tendrá que probar alguno de los programas de crackeo de claves descritos sobre su mismo sistema.

INTRODUCCIÓN A PGP

¿Qué es PGP?

Page 38: trucos de linux.pdf

PGP es "Pretty Good Privacy" o en castellano "Intimidad Bastante Buena", y es un programa para cifrado del correo electrónico (y para todo tipo de información) que reune tres características: Es rápido, seguro y gratis.

¿Para qué me puede servir?

1. Nadie leerá el correo electrónico (e-mail) salvo su destinatario. Es decir tendrá "intimidad" mediante cifrado o encriptado de su mensaje.

2. Nadie podrá suplantar su identidad en Internet y enviar mensajes trucados, así como retocar o alterar los suyos originales (Autentificación mediante firma digital).

Esto se consigue a través de un potente mecanismo conocido como "Criptografía de clave pública" del que hablaremos más adelante y que ha provocado no pocos problemas legales a su autor.

EMAIL BOMBING Y SPAMMING

Descripción

El email bombing es consecuencia de mandar repetidamente mensajes a una dirección particular.

El email spamming es una variante del bombing; envía email a cientos o miles de usuarios. Puede dañar aún más si los destinatarios contestan ese email, causando que todas las direcciones originales reciban esa contestación.

El email bombing y el spamming puede combinarse con el spoofing, el cual altera la identidad de la cuenta que manda el email, haciendo más difícil saber de dónde viene el mensaje.

Detección

Si tu email es lento o no parece que sea enviado ni recibido, la razón puede ser que el sistema está intentando procesar un número alto de mensajes.

Reacción

1. Identifica el origen del email bombing o spamming y configura tu router para prevenir prevenir la llegada de paquetes de esa dirección.

2. Revisa las cabeceras de los email para determinar el verdadero origen del email. Contacta con el sistema que has identificado para alertarle de la acción.

Prevención

Desafortunadamente, en este momento, no hay ninguna forma de prevenir el email bombing y spamming (excepto desconectarte de Internet), y es imposible predecir el origen del próximo ataque.

1. Crea tus propias herramientas que te ayuden a reconocer y a responder el email bombing y spamming y, de esta forma, minimizar el impacto de esta actividad. Estas herramientas deberían incrementar las capacidades de entrada y chequear y alertar de los mensajes entrantes/salientes que salen de un mismo usuario o sitio en un corto espacio de tiempo.

2. Si tu proveedor tiene pocos servidores de correo, puedes configurar tu firewall para asegurarte de que las conexiones SMTP desde fuera de tu firewall pueden ser hechas sólo a tu servidor central de correo y a ninguno de los otros sistemas.

3. Aunque no prevenga el ataque, minimiza el número de máquinas desprotegidas frente a los intrusos ante un ataque basado en el SMTP controlando el SMTP de alguna manera. Con esto, sólo tienes un pequeño número de sistemas--el servidor principal de correo y algún otro de copia de seguridad--que configurar.

4. No propagues el problema siguiendo con (o respondiendo) el masivo envío de correo.

Page 39: trucos de linux.pdf

SPOOFED/FORGED EMAIL

Descripción

El email spoofing puede ocurrir de distintas formas, pero todas tienen el mismo resultado: un usuario recibe un email que parece haber sido enviado de un cierto sitio, pero realmente ha sido remitido desde otro. Es a menudo un intento de engañar al usuario para que revele información sensible (por ejemplo, el password) o dañina.

Ejemplos de email spoofing que pueden afectar la seguridad del sistema son:

mensajes remitidos por el administrador del sistema obligando a los usuarios a cambiar su password por otro que se les proporciona, suspendiendo su cuenta si no se hace.

mensajes remitidos por una persona de la "autoridad" obligando a los usuarios a enviarle una copia del archivo de password o de otro tipo de información sensible.

Reacción

1. Revisa toda la información (cabeceras de los email y los archivos de estado del sistema) relacionados con el email spoofing, siguiendo las políticas y procedimientos de tu organización.

2. Examina los archivos de estado del tcp_wrapper, ident y sendmail para averiguar el origen del email spoofing.

3. La cabecera del email trae a menudo un completo registro de los saltos que ha dado hasta llegar al destino. La información en la cabecera (el Received: y el Message-ID), junto con los archivos de estado (logs), deberían ayudarte a determinar cómo el mensaje ha alcanzado tu sistema.

Prevención (Disuasión)

1. Usa firmas criptográficas (por ejemplo, PGP "Pretty Good Privacy" u otra tecnología para encriptar) para intercambiar mensajes autentificados. je.

2. Configura tu demonio de correo para prevenir que nadie se conecte a tu puerto SMTP y haga email spoofing.

3. Considera un único punto de entrada de email a tu sistema. Puedes hacer esto configurando tu firewall para que las conexiones SMTP desde el exterior deban ir a través de un servidor central de correo.

8. Seguridad y Hacking en Linux

Seguridad en Linux Bien ahora vamos a empezar con la seguridad en linux, y previamente como hackearlo, muy bien empezamos. Nada mas conectarse por defevto tienes todos los puertos habiertos, lo que tienes que hacer es lo siguiente: Edita el archivo /etc/inetd.conf y pon un '#' delante de todos los servicios que no ofrezcas. Recuerda que esto se refiere los servicios que quieres DAR no a los que quieres ACCEDER, o sea que para entrar en un ftp no necesitas tener abierto el puerto ftp.

Truco: Lo que no sepas que hace ciérralo! Truco: Puedes cerrar absolutamente todo. (Para entrar en algunas redes de IRC es necesario abrir el puerto auth) Truco: Algunos ataques automatizados, tipo nukes y otros, buscan siempre el mismo puerto, por ejemplo el 139 (net-bios). Si te ves obligado a dar este tipo de servicios no seria una mala idea cambiar el puerto

Page 40: trucos de linux.pdf

por defecto, esto se consigue modificando en el /etc/services la linea correspondiente al servicio, en nuestro caso podríamos substituir:

netbios-ssn 139/tcp nbssn

por:

netbios-ssn 140/tcp nbssn

Con esto pasamos a dar el servicio de net-bios por el puerto 140 y el 139 se cierra. Cuidado! Es muy probable que tengas que modificar los programas que usan net-bios para que sigan funcionando.

El passwd :

En concreto /etc/passwd. Este es el archivo mas ansiado (junto con el de los passwords para internet) por los hackers, así que lo mejor será protegerlo. Asegúrate que sus permisos son: -rw-r--r-- 1 roto roto 239 Oct 31 1997 passwd

Instala el paquete shadow-utils, este paquete protege los passwords encriptándolos en otro archivo al que sólo tiene acceso roto, por lo que hacerse con el /etc/passwd no sirve de nada. Ademas para los pies a la mayoría de crakeadores de passwords. Aunque parezca una tontería, usar shadow passwords es una de las protecciones mas eficaces contra logins indeseados.

Truco: Elige passwords difíciles de averiguar, que contengan letras, números y caracteres, y si puede ser que la palabra no tenga sentido en ningún idioma. Por ejemplo mAKew3t$ es un buen password.

Truco: Usa el programa John The Ripper para testear la seguridad de tus passwords, si es capaz de crakearlos en pocas horas es que tu password no es seguro.

Limitando el acceso de roto:

El usuario roto es siempre un peligro potencial. El sistema considera que roto sabe perfectamente lo que hace por lo que ni siquiera pedirá confirmación si por error formateamos el disco, imaginaos el desastre ... Reduciendo las vías de acceso de roto al sistema minimizamos riesgos a la vez que nos forzamos a nosotros mismos a dejar de trabajar con roto.

Edita el archivo /etc/securetty y deja solo las consolas en las que quieres que roto pueda entrar. Este archivo contiene una lista de terminales (tty) en las que puede entrar roto, una por linea. Eliminando las lineas que no deseemos evitamos el acceso de roto a ese terminal.

Conozco sistemas en los que roto no puede hacer ningún login y la única manera que tiene de entrar al sistema es mediante el comando "su" que además solo puede ser ejecutado por un grupo muy reducido de usuarios. Sin llegar a este extremo, algo recomendable es dejar por ejemplo las tres primeras consolas para el acceso de roto.

Lo mejor seria que nunca se hiciese login como roto, en lugar de esto podemos usar el comando su para tener privilegios de roto momentáneamente, cambiar lo que haga falta y teclear exit para volver a ser usuario normal sin peligro de estropear nada.

Truco: Nunca, nunca, nunca, dejes acceso por telnet a roto, elimina todas las entradas con ttyp? Truco: Estas restricciones no protegen contra el uso del comando su!

Tcp_wrappers:

Page 41: trucos de linux.pdf

Para esto necesitas tener instalado el paquete tcp_wrappers, lo puedes encontrar en Cualquier ftp de linux y seguramente en el CD de tu distribución ya compilado y pre-configurado. Este software permite filtrar todas las peticiones de acceso a tu máquina y permitirlas o no en función de unas reglas que tu mismo pones.

Es importante saber que el puerto permanece abierto, lo que se cierra son las conexiones no autorizadas, por lo que tcp_wrappers no nos protegerá contra ataques como nukes ni esconderá el puerto ante un escaneado.

Uso de tcp_wrappers: para filtrar un puerto a través de tcp_wrappers debes definir ese puerto en el /etc/inetd.conf con una linea parecida a esta: ftp stream tcp nowait roto /usr/sbin/tcpd ftpd

Las reglas que permiten o no el acceso se definen en /etc/hosts.allow (para las conexiones aceptadas) y /etc/hosts.deny (para las rechazadas). La sintaxis es muy simple: puerto: host: comando

Ejemplo: ftpd: ALL: spawn ( /bin/echo -e " Intruso %a %n en %d" ; wave -l10 -d1 -f2000 ) & Esta linea, en el /etc/hosts.allow filtra los accesos al puerto ftp (ftpd) de todo el mundo (ALL) y después de permitirle el acceso realiza los siguientes comandos (spawn): /bin/echo -e " Intruso %a %n en %d": Saca por pantalla un mensaje indicando los datos del intruso y el puerto atacado. wave -l10 -d1 -f2000: Emite un sonido por si no estas atento al mensaje.

Otro ejemplo (un sistema cerrado a lo bestia): ALL: ALL: twist ( /usr/local/bin/teardrop %a ) & Explicación: a los accesos a Cualquier puerto (ALL) por parte de Cualquier persona (ALL) deniega el acceso (twist) y lanza un teardop al curiosillo de turno.

Muchísima mas información en man inetd.conf, man tcpd, man hosts.allow

El orden en que se definen las reglas es importante, ya que tcp_wrappers las va examinado una a una desde la primera a la ultima hasta encontrar una regla que se cumple, momento en el que ejecuta el comando indicado. Por eso es necesario que las reglas estén ordenadas de mas permisivas a mas restrictivas, por ejemplo si en hosts.allow ponemos en la primera linea ALL: ALL: todas las conexiones serán aceptadas independientemente de que en lineas posteriores filtremos ciertos o no, captáis? si no e-mail me :)

Truco: Define en /etc/hosts.allow los puertos a los servicios que quieras ofrecer y pon en /etc/hosts.deny ALL: ALL Truco: Los parámetros permiten hacer cosas al intruso usando spawn ( programa %a ) ... deja volar tu imaginación. Truco: La linea ALL: PARANOID detecta los intentos de spoof y similares

services:

Este archivo, localizado en /etc/services es una base de datos que contiene información sobre los puertos.

Es importante remarcar que no indica si un puerto esta abierto o cerrado, es solo una guía para que los programas sepan localizar los servicios y como responder a las peticiones. Por lo tanto en principio no debemos tocar nada de este archivo. El archivo donde se abren o cierran puertos es inetd.conf.

De forma "extraoficial" podemos comentar lineas para cerrar los puertos que definen. Atención! Este no es un método correcto y solo lo recomiendo en el caso de que el puerto implicado no sea definido en el inetd.conf y no podamos usar un firewall para protegerlo.

Podemos ver mas información en man services.

Page 42: trucos de linux.pdf

Nuevos puertos/servicios:

Juntando todo lo aprendido hasta aquí sobre servicios y puertos ya estamos en disposición de crear nuestros propios puertos con sus respectivos servicios.

Como sencillo ejemplo voy a crear un nuevo servicio en el puerto 22 que será atendido por un demonio telnet. Para distinguirlo del telnet normal (puerto 23) le llamaremos telnet2. Tenemos que modificar los siguientes archivos:

/etc/services: aquí añadimos el servicio, definiendo el puerto que usa y su nombre:

telnet2 22/tcp telnet2 # Telnet 2

/etc/inetd.conf: aquí definimos las opciones y el demonio que atiende al nuevo servicio:

telnet2 stream tcp nowait roto /usr/sbin/tcpd in.telnetd2

Usar in.telnetd2 en lugar de in.telnetd es un truquillo para poder distinguir fácilmente los dos servicios y poderlos configurar por separado, no olvides hacer un link de in.telnetd a in.telnetd2

/etc/hosts.allow: por supuesto, el nuevo servicio puede ser filtrado por tcp_wrappers para delimitar su accesibilidad:

in.telnetd2: ALL: twist ( echo -e "Acceso de %a en %d" > /dev/tty11 ) &

El firewall:

El firewall es uno de los sistemas de protección mas potente junto al uso de tcp_wrappers. Para usarlo necesitaremos soporte firewall en el kernel, esto se consigue fácilmente activando la casilla de [*] Network firewalls [*] IP firewalling durante la configuración del kernel. Básicamente es solo esto Aunque dependiendo de cada uno pueden hacer falta activar otras opciones (soporte ethernet ...) Compaginar un firewall con la herramienta ipchains añade otro nivel de seguridad a nuestro sistema. Recordad que los puertos protegidos por firewall no se ven con un escaneado de puertos ni son sensibles a nukes ni exploits (algunos scanners como nmap son capaces de reconocer puertos protegidos por firewall) puesto que toda la información que se les envía es sencillamente eliminada.

Para usar ipchains pon estas lineas en tu /etc/rc.d/rc.local:

/sbin/ipchains -F /sbin/ipchains -I input -p tcp -s 127.0.0.1 /sbin/ipchains -A input -p tcp -d 0.0.0.0/0 515 -j DENY

Esto nos permite acceso total a nuestra propia maquina y limita los accesos al puerto 515 (el de la impresora) cosa que no podíamos hacer con tcp_wrappers. Gracias a Javi Polo por esto.

A partir de aquí las posibilidades de configuración son casi infinitas: detectar spoof, seleccionar los protocolos de entrada, salida, definir rangos de IPs "amigas" ... sean cuales sean tus necesidades hay una forma de cubrirlas con ipchains. Lee el ipchains-howto y el man ipchains para mas información.

En el caso de usar antiguos kernels de la serie 2.0.x se utiliza la herramienta ipfwadm, si este es tu caso pon estas lineas en tu /etc/rc.d/rc.local:

Page 43: trucos de linux.pdf

/sbin/ipfwadm -I -f /sbin/ipfwadm -I -a a -S 127.0.0.1 /sbin/ipfwadm -I -a d -P tcp -D 0.0.0.0/0 515

Truco: Un firewall permite tener control sobre puertos no definidos en el inetd.conf y por lo tanto fuera del alcance de tcp_wrappers.

Actualizate!:

Mantener un sistema actualizado previene contra el ataque de exploits provocados por bugs en el software. Actualiza el kernel siempre que aparezca una nueva versión estable, por ejemplo el kernel 2.0.34 no es sensible a ninguno de los nukes conocidos a la hora de realizar este documento. Si tu kernel es anterior estudia seriamente la posibilidad de actualizarlo. Actualiza los demonios de todos los servicios que ofrezca tu máquina para evitar sorpresas. La web de RootShell es un buen sitio donde mantenerse informado.

Truco: Por algún motivo el IMAP y el sendmail son especialmente sensibles a exploits. Si usas alguno de los dos asegúrate de tener siempre la ultima versión disponible.

Truco: Si te ves obligado a recibir conexiones por telnet estudia la posibilidad de substituir este servicio por el SSH (Sechure SHell) mucho mas seguro y con muchas posibilidades que el telnet tradicional.

9. Preparativos para instalar GNU/Linux®

Introducción

Uno de los puntos más importantes para instalar Linux es tener listo nuestro disco duro. Parece un tanto raro el comentario pero ciertamente es donde más de un usuario se pierde, especialmente cuando tienen que particionar y cosas así, por lo que lo explicaremos brevemente.

Dado que actualmente la mayoría de las PC llegan con Windows preinstalado (¿dije la mayoría?, más bien todas), los usuarios no se preocupan por mucho más que sólo prenderla y cuando llega el caso, reinstalar con un CD, pero cuando tiene que hacer que el disco duro contenga otro sistema operativo (incluso otra versión de Windows), necesitar partir (particionar) el disco duro. Y aquí empezamos con los problemas.

Aquellos afortunados que tengan la posibilidad de adquirir otro disco duro para instalar Linux, pues adelante y se ahorrarán todo lo relativo a particionamiento de este tutorial, pero en caso contrario, pues continuamos.

Un disco duro se divide, físicamente, en cilindros y cada uno de estos se divide en sectores, regularmente de 512 bytes y es en este espacio donde la información es grabada. En el momento que indicamos que un disco se divida en varias unidades, realizamos el proceso llamado particionamiento, en el que se le asigna un espacio especifico a cada partición.

Verifiquemos nuestro hardware

Un elemento que regularmente los usuarios novatos pasan por alto es el relativo a verificar la compatibilidad/estado de su hardware, lo que puede traer como consecuencia que el sistema no quede bien instalado, sea inestable o de plano nos mande por un tubo el instalador, por lo que debemos verificar los siguientes puntos:

Revisar que nuestro hardware esté soportado por la distribución que vamos a utilizar.

Page 44: trucos de linux.pdf

Revisar que funcionen correctamente las tarjetas (red, sonido, módem). Revisar que el disco duro no tenga sectores dañados (debe ejecutarse el scandisk). Si se manifiestan problemas con Windows (lo que no es raro), como que se congele la máquina o

no termine de encender, recomendamos enviarla antes a un servicio técnico para que se le revise la tarjeta madre o el estado del RAM.

Las revisiones de compatibilidad de hardware las pueden buscar en:

Red Hat: http://hardware.redhat.com/hcl/ Mandrake: http://www.linux-mandrake.com/en/hardware.php3 SuSE: http://hardwaredb.suse.de/index.php Debian: http://www.debian.org/ Slackware: http://www.slackware.com

Para otras distribuciones deberán revisar la página Web del proveedor.

En los casos de hardware desconocido o no compatible (caso clásico son los winmodems y softmodems) o que tengamos dañada alguna tarjeta, lo más recomendable es adquirir uno nuevo. Para el caso concreto de los módems, casi cualquiera externo por hardware funciona.

Para los que no sepan el porque, Linux no soporta ciertos dispositivos y tarjetas debido a que los controladores los hacen los mismos miembros de la comunidad GNU/Linux y esto es posible sólo cuando el fabricante libera las especificaciones de sus componentes, por eso siempre hay un un cierto período entre que un nuevo dispositivo es lanzado y que lo soporte este SO; caso contrario con Windows/Macintosh, ya que los fabricantes mismos son quienes desarrollan y prueban los controladores. El caso de los módems por software (winmodems/soltándome) es especial, ya que diversas funciones que debería manejar el hardware se le relega a que las maneje Windows directamente, lo que es una ventaja para los fabricantes al ser muy baratos de producir, peor que imposibilita su uso fuera del SO de las ventanas.

Una revisión previa es importante, ya que es frecuente que un usuario incauto simplemente no pueda configurar su módem, tarjeta de red o de sonido y le eche la culpa al sistema operativo, o peor aún cuando un hardware dañado truene la instalación, lo que los lleva a decir "Linux no sirve". El caso es sencillo, son los componentes, no el software. Si aparentemente todo está bien, pues continuamos.

Antes que nada, respaldamos

A menos a que seamos masoquistas, hayamos enloquecido o nos caiga mal el propietario de la información, es kamikaze (viento divino o irse de cabeza al barranco, como lo quieran traducir) no respaldar la información del disco duro; por lo que pueden utilizar un quemador de CD's, una unidad de Zip o Jaz o una unidad de red, también pueden utilizar alguna herramienta para generar una imagen de su disco, como:

Partition Image for Linux (http://www.partimage.org) Norton Ghost (http://www.symantec.com/sabu/ghost/ghost_personal) PowerQuest Drive Image (http://www.powerquest.com/driveimage)

¿Para que particionamos?

Los motivos para particionar son varios e incluso es aconsejable aún cuando no se vaya a instalar otro sistema operativo, porque:

Especifica partes donde se guarda la información y donde se guardan los programas, de manera que si se corrompe una unidad, no se pierde todo. Útil también con muchos virus que atacan la unidad C de una PC.

Mejora el desempeño del disco duro, al tener que leer sectores más pequeños de disco duro y no toda la unidad.

Page 45: trucos de linux.pdf

Limita el tamaño al que pueden crecer las carpetas de diversos usuarios (en ambientes de redes), para evitar que saturen el disco duro y el sistema operativo ya no pueda operar.

¿Con que particionamos?

Desde DOS podemos utilizar una muy confiable pero limitada herramienta llamada fdisk, la cual puede eliminar y crear nuevas particiones, sin embargo el contenido del disco duro se pierde y no hay manera de recuperarlo. Para activarlo simplemente es necesario, desde el prompt de DOS, teclear fdisk, eliminar todas las particiones existentes y luego crear las nuevas, después de salir de fdisk debemos dar formato las unidades ya que se pierde absolutamente todo. Nota: esta herramienta no puede funcionar desde Windows, es necesario iniciar una sesión de DOS para ello.

Para particionar mediante fdisk pueden apoyarse en este COMO de Linuxdoc: http://www.linuxdoc.org/HOWTO/mini/Partition/partition-5.html.

Se pueden recuperar particiones creadas con fdisk, pero será mejor ser cuidadoso y leer antes el siguiente manual para soporte: http://www.linuxdoc.org/HOWTO/mini/Partition/recovering.html.

Otras opciones para crear particiones son:

FIPS. Legendaria herramienta libre que se distribuye con Red Hat y otras distribuciones de Linux desde hace tiempo, pero que tiene varias limitaciones, es software libre (http://www.igd.fhg.de/~aschaefe/fips).

parted: Particionador del proyecto GNU, es software libre (http://www.gnu.org/software/parted/parted.html).

Partition Magic: Permite crear, eliminar, mover y modificar las particiones desde un entorno gráfico, es software comercial - $70 USD - (http://www.powerquest.com/partitionmagic/index.html)

Disk Drake: Script en Perl/Gtk para crear, modificar y eliminar particiones que se distribuye principalmente con Mandrake, es software libre (http://www.linux-mandrake.com/diskdrake)

Disk Druid: Es el particionador por defecto de la instalación de Red Hatâ„¢, software libre. Ranish Partition Manager: tiene un sistema de arranque compatible con Windows 9x/NT/2000 y

Linux, es software libre (http://www.ranish.com/part/) The Partition Resizer v. 1.3.4: permite mover y modificar particiones existentes, Freeware

(http://www.utilitygeek.com/cgi-bin/download.pl?http://members.nbci.com/Zeleps/Files/PRESZ134.ZIP)

¿Cómo divido mi disco duro?

El tamaño de las particiones dependen del tamaño del disco es lógico que mientras más grande es éste, más espacio puedes dejar a Windows por un lado y Linux por el otro, pero...

Cuidado. Un aspecto muy importante es el hecho que muchos BIOS, incluyendo los de algunas computadoras nuevas (contra lo que dicen los fabricantes), no pueden iniciar un sistema operativo que se encuentre después del cilindro 1024 (aproximadamente 7,168 MB), por lo que al determinar el tamaño debemos cuidar donde colocaremos la partición de Linux.

En principio, a cada sistema operativo hay que dejarle el espacio suficiente para que trabajo, lo cual es variable, por ejemplo, Windows 95 ó 98 pueden funcionar dentro de particiones de 3 GB, con espacio para nuestras aplicaciones y archivos, pero Windows 2000 necesita de al menos 8 GB para trabajar bien como estación de trabajo (como servidor es mucho más); Red Hat necesita al menos de 600 MB para una instalación mínima, pero yo en lo personal dejo entre 2 y 3 GB sólo para el sistema operativo, aparte va el espacio para usuarios, archivos de bitácora y demás; es cosa de como se acomoden y lo que vayan a cargar para determinar cuanto espacio necesitan.

Page 46: trucos de linux.pdf

Otro comentario es que, regularmente, Windows debe ir en la primera partición y que este sistema operativo es el "propietario" del Master Boot Record (MBR), que se ubica en el sector 0 del disco y que tiene la información para el arranque de (los) SO(s).

Hace mucho tiempo cuando se utilizaba Lilo como arrancador para GNU/Linux, existía la limitación de tener que instalar éste y la partición que contuviese a /boot antes del cilindro 1024 del disco duro. Siendo que actualmente casi todas las distribuciones de GNU/Linux utilizan Grub, esta limitación ya no la hay.

Pueden obtener más información en:

http://www.linuxdoc.org/HOWTO/mini/Linux+Win95/

¿Cómo identifico la unidad donde voy a instalar Linux?

Cuando vemos un disco duro o unidades dentro de Windows, se nos presentan como letras del abecedario (C, D, E, etc.) pero dentro de Linux, es bastante diferente, ya que su estructura semeja un árbol donde cada partición y dispositivo de lectura/escritura se representa como un directorio, los nombres de las unidades de disco duro son:

hda: disco duro principal hdb: disco duro secundario hda1: primera partición del disco duro principal. hdb2: segunda partición del disco secundario

Ahora, para ejemplificar todo este proceso, supongamos que tienen un disco duro de 20 GB y generan dos particiones, uno de 5 GB para Windows y el resto para Linux, entonces es hda1 (Windows) y hda2 (Linux), siendo en este último donde crearíamos las particiones del sistema.

¿Qué particiones necesito para Linux?

NOTA: Estas particiones se crean al momento de instalar, no de dividir el disco duro para varios sistemas operativos, pero es importante que las conozcan de antemano.

En principio sólo se pueden montar tres y es suficiente para que funcione:

/boot Es la partición donde se leen los parámetros para iniciar el sistema. Requiere al menos 75 MB en Red Hat Linux 8.0 y 9.0.

/ o raíz Es donde colocamos el sistema operativo. Requiere de 350 a 512 MB.

swap Espacio físico para la memoria virtual del sistema. Debe asignarse el doble del tamaño del RAM físico. Esta será siempre la última partición del disco duro.No se asigna punto de montaje.

Otras particiones son:

/usr Contiene la mayoría de los binarios (ejecutables), bibliotecas compartidas, manuales, datos de aplicaciones e imágenes que utiliza el sistema, cabeceras de desarrollo, el árbol del kernel y documentación. Requiere al menos 1.5 GB en instalaciones básicas. Debe considerarse el software a utilizar a futuro. Se recomiendan no menos de 5 GB y hasta 7.5 GB en instalaciones promedio.

/tmp Archivos temporales que generan los programas. Requiere al menos 350 MB y puede asignarse hasta 2 GB o más dependiendo de la carga de trabajo y tipo de aplicaciones.

/var

Page 47: trucos de linux.pdf

Corresponde a la partición de datos de servicios. Requiere al menos 350 MB en estaciones de trabajo sin servicios. En servidores regularmente se le asigna al menos la mitad del disco duro.

/home Corresponde a la partición de datos de usuarios. Es donde se colocan las carpetas para cada usuario con los perfiles de cada cuenta. En estaciones de trabajo se asigna al menos la mitad del disco duro a esta partición.

Por costumbre (y experiencia) recomiendo crear particiones independientes para /boot, / (raíz), /home, /var y swap. También es aconsejable una para /usr y /tmp.

10. Entrar al sistema sin saber la password

Cuando aparece el prompt de Lilo o el del disco de arranque escribir 'linux single' y entras como root sin necesidad de password después hay que entrar con un editor en /etc/passwd, buscar una línea que pone root:xxxx:0:0:root:/root:/bin/bash, borrar xxxxx dejando root::0:0, etc así has borrado la pasword. Otra opción: desde DOS, utilizar un editor del disco duro (Norton) buscar la cadena root en el HD y eliminar la password. Otra opción: en el arranque, escribir init=/bin/bash esto hace que se lance bash directamente sin pasar por el init, o sea, sin pedir clave. Probablemente hay que remontar las particiones: mount -t -o remount, rw / mount -a -t nonfs para estar seguro de que el PATH esta correcto hacer: source /etc/profile source /root/.profile y por ultimo, a partir de una cuenta no-root, hacer su; para ver si la clave de root esta ok: paswwd su < usuario-no-root > su exit exit reboot

11. Configurar LILO

Fichero /etc/lilo.conf:

# Sección global de arranque de LILO boot = /dev/hda compact # si da problemas, descomentar esta opción delay = 50 vga = normal # forzando 'sane-state' ramdisk = 0 # paranoia setting # # Sección de configuración de partición de LINUX arrancable

Page 48: trucos de linux.pdf

image = /vmlinuz root = /dev/hdc2 label = linux # # Sección de configuración de partición de DOS arrancable other = /dev/hda1 label = dos table = /dev/hda #fin

Sustituye las particiones por las tuyas, la primera que pongas será la que arranque por defecto pasado el tiempo 'delay' en décimas de segundo. Una vez hayas modificado este archivo, ejecuta lo siguiente:

root::/# lilo

Veras como te aparecen por pantalla las particiones que hayas configurado para gestionar por lilo y la que hayas colocado como 'defecto' aparece con un asterisco.. Otra versión del /etc/lilo.conf

boot=/dev/hda # donde se instalará el LILO compact install=/boot/boot.b map=/boot/map vga=normal # pantalla en modo VGA ramdisk=0 # no creamos disco virtual, necesario para # crear los discos boot y root de la instalación delay=50 # espera 10 segundos. [Ctrl] nos muestra las opciones # que seleccionaremos escribiéndola default=linux-2.0.32 # establece el SO que arrancará por defecto image=/vmlinuz # la imagen del kernel a arrancar label=linux-2.0.30 # el nombre asociado root=/dev/hdb1 # partición donde está la correspondiente imagen alias=l # para abreviar en la selección read-only image=/boot/zImage-2.0.32 label=linux-2.0.32 root=/dev/hdb1 alias=z read-only other=/dev/hda1 table=/dev/hda # para que msdos encuentre la tabla de particiones label=msdos alias=m ----

Cuando has editado tu lilo.conf, para instalarlo tienes que ejecutar, como root,

# lilo

y se instalará en el Master Boor Record de hda (en mi caso).

Page 49: trucos de linux.pdf

Debe ser una partición a la que tenga acceso la Bios del ordenador.. En Netscape los ficheros .gz y .tgz en lugar de bajártelos te los muestra Edit - Preferences - Navigator - Applications. Buscamos en la lista "Zip compressed data", pulsamos el botón "Edit", en Suffix añadimos ",gz,tgz" y abajo seleccionamos "Save to disk". Ok, Ok y listos :-). (Hue-Bond) De esta forma cuando pinches uno de estos ficheros te preguntará si quieres guardarlo, en lugar de intentar ejecutarlo

12. Trucos Linux

Atajos del teclado KDE brinda varias opciones para cuando se cansen del mouse. Presionando <CTRL+ ESC> cambiarán a otra aplicación. Con <ALT+TAB>, como era de esperar, rotarán entre todas las aplicaciones activas. Usando <CTRL+Fx> pueden cambiar de consola virtual y, por último, presionando <ALT+F4> se cierra la ventana actual, como sucede en Windows.

Opciones de Ventana Haciendo doble clic en la barra de Título de un programa, la ventana desaparece, y queda sólo esta barra. Este efecto se llama shadowing y es algo que siempre me gustó de las Mac. Haciendo clic con el botón central del mouse en los botones para maximizar y minimizar las ventanas, se ejecutará la función, pero solamente a lo largo o a lo ancho de la pantalla, sin tomar posesión total del Escritorio. Ejecutar al inicio Para ejecutar un programa al inicio de KDE sólo tienen que crear un kdelnk hacia él (pueden encontrar templates de kdelnk en la carpeta TEMPLATES del Escritorio) y editar sus propiedades. Lo único que resta hacer es arrastrar este kdelnk a la carpeta AUTOSTART dentro del Escritorio. Mensaje del día El mensaje del día (MOTD) no suele ser muy útil en sistemas hogareños, por lo que este script nos permitirá rotar entre diferentes archivos de arte ASCII cada vez que iniciemos el sistema. Creen e[ directorio /etc/splash y pongan todos los archivos ASCII allí. luego, como root, agreguen un trabajo cronometrado (cron) con el siguiente- script: #! /bin/sh cd /etc/splash/ [ -f splash && SPLASH='/bin/cat splash' [ -z "$SPLASH" ] || [ ! -f "$SPLASH" && SPLASH='/bin/ls /bin/sed -n ´1p´' /bín/cp "$SPLASH" ../motd && { /bin/ls /bin/sed -n ´1h;/^´$SPLASH,$/{${x;p;q;};n;p;}´ >. splash }

Pantalla de bienvenida Es posible crear un mensaje para que todos los usuarios que se logueen al sistema lo vean. Es, en cierta forma, similar al mensaje que aparece cuando se conectan a un servidor de IRC. El archivo en cuestión se encuentra en /etc/motd (por Message Of The Day); edítenlo a gusto y necesidad con cualquier editor de texto. Reinstalé Windows y perdí Linux

Page 50: trucos de linux.pdf

A Windows no te gusta que alguien más use la MBR; por eso, cuando instalamos cualquier versión, automáticamente sobrescribe la MBR a su gusto. Si teníamos Linux instalado con LILO, necesitaremos un disquete booteable para ingresar en Linux y poder ejecutar /sbin/lilo para que, nuevamente, LILO pueda instalarse en la MBR Nombres muy largos Una particularidad de Linux (como en todos los sistemas basados en UNIX) es que los archivos suelen tener nombres muy largos. Pasarlos como parámetros puede volverse complicado cuando no los recordamos de memoria. Por eso el shell Bash nos ofrece su función de autocompletado, mediante la cual, al escribir las primeras letras del nombre y presionar <TAB>, Bash mostrará las coincidencias; esto nos evitará el engorro de tipear el nombre completo del archivo. Inicio/Ejecutar Presionando <ALT+F2> verán la línea simple de comando, la cual les permitirá ingresar el nombre de un programa o una URL para navegar. Reseteando la terminal Cuando la pantalla, por cualquier motivo, se llena de basura, podemos utilizar este programa en C, el cual reseteará y limpiará cualquier terminal VT100. Copien este código en un archivo: #include int main(void) { Printf(P\033c");//resetea terminal printf(P\033[2j");// limpia la pantalla return (0); luego graben el archivo y escriban "make archivo", siendo archivo el nombre con el que lo grabaron. Ahora pueden utilizarlo en cualquier momento para resetear su terminal ¿Dónde está? En el inmenso mar de directorios de Linux, puede resultar complicado encontrar un archivo determinado. Para ello pueden utilizar el comando find, por ejemplo: find /-name "nombre", donde la "/" es el directorio de inicio de la búsqueda (en este caso buscará en todo el sistema de archivos, así como en cualquier unidad montada) y "nombre" es la cadena a buscar (reemplácenlo por el nombre del archivo que buscan). Como todo comando en Linux, tiene un montón de opciones más.

Olvidé la contraseña de root Pueden pasarte un parámetro 1 cuando se ejecute LILO, de la siguiente forma: "lilo 1". Así entrarán como root y podrán ejecutar el comando passwd o editar directamente el archivo /etc/passwd. También sirve arrancar con linux single y añadirte el user root o el que sea manualmente :)

Eliminar escritorios virtuales Puede parecer una idea rara, pero eliminar escritorios virtuales que no utilicemos liberará recursos. Editen el archivo /etc/inittab y busquen las líneas que indican el inicio de una terminal "getty", por ejemplo: "2:123:respawn:/sbin/míngetty tty2". Eliminen cada una de esas líneas por escritorio que quieran quitar; el número posterior a tty indica el número de terminal (a los cuales accedemos presionando <ALT+Fx>). Un número de tres terminales es suficiente para operar el sistema. Graben el archivo y reinicien. Ya no tendrán tantos terminales, y habrán ganado unos megabytes de memoria.

Se colgó todo Cuando experimentamos en Linux, precisamente en el entorno gráfico, a veces sucede que todo se cuelga. Para no ir directamente al botón de reset, pueden probar la combinación de teclas <CTRL+ ALT+BACKSPACE>, que matará todos los procesos que se encuentren en ejecución y pasará a modo texto o al login gráfico si lo tienen activado.

Montaje automático de disquetes VFAT Abran una consola (la de su preferencia) y ejecuten el comando mcedit Desktop/floppy.kdelnk, que abrirá un editor de texto con el archivo de acceso al disquete del Escritorio. En éste debemos modificar el valor contenido dentro de la línea FStype=Default por FSType=v-fat.

Page 51: trucos de linux.pdf

Para que todos puedan usar kppp Deben hacer clic con el botón derecho en el archivo situado en /usr/bin/kppp, y en la solapa [Permissions], hacer clic en el checkbox [Set UID], en la línea [User]. Esto hará que todos los usuarios puedan iniciar Kppp y no sólo el root. Recuerden que para realizar los cambios deben estar logueados como root.

Navegación con palabras clave Konqueror, el oficial de KDE, nos permite definir palabras nos serviran como atajos para los sitios más visitados, desde [Settings/Configure Konqueror/Enhaned Browsing]. Por ejemplo, al escribir "gg:linux" en barra de Dirección, se abrirá el buscador Google con palabra Linux.

Eliminar el inicio gráfico Si desean el inicio en modo consola, pero su distribución instala el inicio gráfico de forma predeterminada, pueden cambiarlo modificando el archivo inittab, dentro del directorio /ETC. Hagan una copia de respaldo y editen el archivo inittab. Con la búsqueda encuentren la línea: id:5:initdefault Y cámbienla por lo siguiente: id:3:initdefault: En el próximo inicio de sesión tendrán el clásico modo texto. Para restaurar el inicio gráfico, hagan exactamente lo contrario. Cómo cambiar la resolución y la profundidad de color en X Estos parámetros son controlados por el Servidor X, independientemente del manejador de ventanas que utilicemos. Si en la configuración de X hemos agregado varias resoluciones, podremos cambiar de resolución con las teclas <CTRL++>. La profundidad de color, en cambio, se modifica a través del script de inicialización startx, de la siguiente manera: "startx -bpp <profundidad>", donde profundidad puede tomar los valores 8, 16, 24 o 32 para las distintas opciones. Es posible cambiarlo permanentemente desde el configurador XF86Setup.

Cómo evitar los pings Si quieren evitar que su equipo responda a las peticiones ping de la Red, pueden usar este truco. Es necesario contar con un kernel 2.1.x o superior. Para lograrlo, en la consola deben ejecutar el siguiente comando: "echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all"'. Con él evitarán que su máquina responda a cualquier ping proveniente de la Red. Para revertir la opción, en la consola ejecuten el comando "echo 0 > /proc/sys/ net/ipv4/icmp_echo_ignore_all", y todo volverá a ser como antes.

Descarga automática de webs completas Para descargar una web completa con todas las páginas a las que apunta y todos sus elementos de forma recursiva, puede usar la aplicación wget tecleando el siguiente comando: wget -r http://www.lawebquesea.com Y si lo que tiene es un fichero de texto con un listado de webs puede descargarlas todas del tirón tecleando: wget -r -i listadewebs.txt Eso sí, si no tiene una conexión muy buena tendrá que esperar un rato hasta bajar toda la web. NOTA: Algunas páginas están expresamente protegidas para que no sean bajadas por este método, por lo que esto no funcionará en todos los casos. Tampoco funciona con páginas creadas con Flash

Eliminar ficheros Core ln -s /dev/null core (envía los core a /dev/null) ulimit -c 0 (limita el tamaño de los core a 0)

Imprimir paquetes instalados con dselect método 1 - dpkg --get-selections | awk '$2 == "install" { print $1 }' método 2 - ( cd /var/lib/dpkg/info; ls *.list ) | sed -e "/\.list/s///" método 3 - dpkg -l

Page 52: trucos de linux.pdf

Montar cdrom y floppy sin ser root Como root te creas los directorios: /mnt/floppy /mnt/a: /mnt/cdrom metes en /etc/fstab las siguientes lineas : /dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/fd0 /mnt/a: msdos user,noauto 0 0 /dev/fd0 /mnt/floppy ext2 user,noauto 0 0 ahora ya puedes montar un disquete Ms-dos , un disquete ext2 o un Cd-rom, respectivamente, con : mount /mnt/a: mount/mnt/floppy mount/mnt/cdrom El nombre del dispositivo puede ser distinto, por ejemplo, en vez de /dev/cdrom puedes tener /dev/hdc ... etc., depende de cada cual.

Ampliar tamaño de partición Linux Bueno, ampliar no creo que se pueda, pero si te creas otra partición ext2, la montas debajo de / , como por ejemplo /home, luego te creas un directorio /home/usr/local y lo enlazas a /usr/local, etc... tendrás la sensación de que efectivamente tu partición / ha aumentado de tamaño :-).

O mejor todavía :

te creas una nueva partición, por ejemplo: /hdc3 te copias todos los directorios de /usr a /mnt/hdc3 te renombras el fichero /usr como /usr_ant por si las moscas te creas el fichero /usr vacío actualizas el /etc/fstab con la siguiente línea : /dev/hdc3 /usr ext2 defaults 0 0 rearrancas, y después de unos días, para ver que todo funciona bien, borras /usr_ant

Personalizar tecla de función Utilizo un pequeño script que tengo asociado a una tecla de función en mi .inputrc, así, cada vez que quiero meter o sacar un CD, le doy a la tecla F8. ## FICHERO: $HOME/.inputrc # Personalizar teclas de función # F8 "\e[19~": "(. ~/scripts/cdrom)&\C-m" Y el script es: #!/bin/bash if [ `grep -c cdrom /etc/mtab` = 0 ] ; then mount /mnt/cdrom && cd /mnt/cdrom ; else umount /mnt/cdrom && eject /dev/cdrom ;

Eliminar paquetes instalados en Debian dpkg --remove nombre_paquete_sin_extension_deb Eliminara el paquete aunque no los ficheros de configuración que ese paquete pudiera tener. dpkg --purge nombre_paquete_sin_extension_deb Eliminara todo.

Page 53: trucos de linux.pdf

Hacer disco de arranque Linux cp /boot/vmlinuz /dev/fd0 Así de simple, siempre y cuando el kernel contenga la información sobre cual partición arrancar, etc. lo que se puede indicar así: rdev /boot/vmlinuz /dev/tuparticionroot rdev /boot/vmlinuz indicará cual tiene configurada: chanae:~# rdev /boot/vmlinuz Root device /dev/hda3

News off-line con Netscape El Netscape no hay ninguna opción para bajarse las news, pero con el siguiente truco se puede conseguir el mismo efecto: Lo primero es crearse dos nuevos directorios en el Message Center con "New Folder" (yo los llamo Linux y Linux_Archive). Abres el grupo es.comp.os.linux y le dices que te baje todos los mensajes. Después en menú "View" marcas "Messages" y "News". Eso expande todos los Treads. Ahora los marcamos para bajarlos. Lo podemos hacer con menú "Edit", "Select", "All" (o más rápido Alt+A). Y los bajamos con "File" al directorio que hemos creado. Sin cerrar la conexión debemos marcarlos todos como leídos. Para ello "Mark" y "All Read". Y ahora podemos cerrar la conexión. Para leerlos vamos a nuestro nuevo directorio Linux y los podemos ordenar cómo queramos... "View", "Sort"... yo lo tengo en "By Subject". Los que me interesan los archivo en el otro directorio que creé ("Linux_Archive") y los que no a la papelera ("Delete"). Como seleccionamos la opción "View", "New", la próxima vez que entremos en el grupo sólo nos bajará los nuevos mensajes.

Como formatear diskettes formato tipo msdos: mformat a: formato tipo ext2: fdformat /dev/fd0H1440 mkfs.ext2 /dev/fd0 Para Linux --> ext2 $ mkfs.ext2 [options] /dev/fd0 ó $ mke2fs [options] /dev/fd0 El usuario que formatea deberá tener permiso de escritura para `/dev/fd0'. Eso normalmente se consigue añadiéndolo al grupo `floppy' (addgroup user group). Para msdos $ mkfs.msdos [options] /dev/fd0 ó $ mkdosfs [options] /dev/fd0 Pero también hay otras utilidades para formatear discos DOS. Mira a ver si tienes el paquete `fdutils', que permite formatear los discos a mayor capacidad.

Como hacer que linux reconozca ampliacion de memoria

He añadido 64 megas nuevos al aparato con lo que sumo 80 megas el problema es que linux solo me reconoce 64 ¿como hago para que reconozca los 80?

Page 54: trucos de linux.pdf

pon append="mem=80M" en lilo.conf o loadlin vmlinuz mem=80M

Primer editor Una de las primeras dificultades con las que se topan los novatos es cómo ver y editar ficheros. El "less" está más o menos bien aunque es un poco "soso". El "vi" puede ser un auténtico trauma. Para los que acaban de llegar a linux puede que les sea interesante este "truco": 1) Instalar el Midnight Commander. 2) Añadir en el ~/.bashrc estás líneas: alias lee='mc -v ' #ojo, que hay un espacio detrás de la v. alias edit='mcedit' 3) teclear "exit" e iniciar una nueva sesión. A partir de entonces se puede ver el contenido de un fichero con "lee fichero" (además lee fichero comprimidos) y editarlo con "edit fichero". La tecla F10 es para salir, y la tecla F9 para abrir el menú. Bueno, esto es lo que he hecho yo, y me gusta más que less y vim, pero hay una pega, y es que no puedo pegar en el mcedit con el ratón lo que previamente he copiado en otro terminal. (ricardovm) Pues lo acabo de probar: Mayúsculas + Botón Izquierdo: inicio de la selección Mayúsculas + Botón Derecho: fin de la selección Mayúsculas + Botón Central: pegar NOTA: el bloque así seleccionado se maneja de forma estándar: si desde otra consola pulsamos el botón central del ratón, lo pegamos, etc. Además el mc tiene su propia herramienta de selección de bloques (F3, o May+Flechas), y con esto se puede copiar (Ctrl+Ins), cortar (May+Del) y pegar (May+Ins) incluso de una sesión a otra, pues lo copiado (cortado) se guarda en /.cedit/cooledit.clip. Ambas herramientas se pueden usar simultánea e independientemente.

Acelerar la compilación del kernel Cuando se da la orden de compilar en vez de: make zdisk hay que escribir make -j5 zdisk Esto inicia hasta 5 procesos de compilado simultaneos. Idem con make -j5 modules

Trucos para recompilar el kernel. Casi todos no hemos topado con la consabida configuracion del nucleo de Linux, seguida de su compilacion, instalacion, etc... make config (menuconfig, xconfig) make dep make clean make zImage cp arch/i386/boot/zImage /boot/vmlinuz cp System.map /boot make modules make modules_install Bueno pues los pasos zImage y cp's los podemos olvidar editando el fichero Makefile que hay en /usr/src/linux, buscar : #INSTALL_PATH=/boot

Page 55: trucos de linux.pdf

Descomentar la linea (¡ quitar la #, corcho !) Para los que tienen su Linux mas personalizado que la Harley, podeis poner el directorio donde queries poner el nuevo kernel, ese directorio debe corresponderse al que pone en el /etc/lilo.conf. Una vez hecho esto, se puede reemplazar el make zImage y cp's por make zlilo. Por Manuel Soriano.

Lanzar procesos con nohup Para lanzar un proceso y luego poder matar el shell padre, solo debemos hacerlos de la siguiente manera: nohup proceso & por ejemplo si queremos lanzar licq con el parámetro -p \qt-gui la linea correspondiente seria la siguiente: nohup licq -p \qt-gui &

Creando alias para montar y desmontar el CD-ROM Para ahorrarnos tiempo al momento de montar y desmontar el CD podemos aprovechar una de las propiedades del shell bash, esto es definir alias, para ello solo tenemos que agregar en el archivo .bashrc que se encuentra en nuestro directorio home las lineas: alias cdr='mount -t iso9660 /dev/cdrom /mnt/cdrom -r' alias ucdr='umount /cdrom' Donde, /dev/cdrom especifica el dispositivo correspondiente a nuestro CD-ROM, y /mnt/cdrom debe ser un directorio vacío.

Caracteres en español en el shell Para poder visualizar todo el set de caracteres españoles en Linux solo debemos agregar la siguiente línea a uno de los archivos de inicialización del sistema, por ejemplo /etc/profile, en algunas distribuciones esta línea ya esta incluída y solo debemos modificarla: /usr/bin/setfont /usr/lib/kbd/consolefonts/lat1u-16.psf Según las distribución que usemos los archivos con los sets de caracteres se ubican en distintos lugares, por ejemplo en Debian están en /usr/share/consolefonts/

Cambiando el prompt del Bash Agregando en el archivo .bashrc de nuestro directorio home (/root si nos logeamos como usuario "root") la siguiente función dispondremos de un prompt mas atractivo que el común: function promptmio { PS1="\[\033[31m\]\332\304\[\033[34m\](\[\033[31m\]\u\[\033[34m\]@\ [\033[31m\]\h\ \[\033[34m\])\[\033[31m\]-\[\033[34m\](\[\033[31m\] \$(date +%I:%M%P)\ \[\033[34m\]-:-\[\033[31m\]\$(date +%m)\[\033[34m\033 [31m\]/\$(date +%d)\ \[\033[34m\])\[\033[31m\]\304-\[\033[34m]\\371\[\033 [31m\]-\371\371\ \[\033[34m\]\372\n\[\033[31m\]\300\304\[\033[34m\](\[\033 [31m\]\W\[\033[34m\])\ \[\033[31m\]\304\371\[\033[34m\]\372\[\033[00m\]" PS2="> " }

Luego solo tenemos que salir de la sesión en curso y volver a entrar para finalmente llamar a la función mediante: promptmio

Page 56: trucos de linux.pdf