Vous êtes sur la page 1sur 74

Manual de Linux Recopilación

1. Configurar un hotspot rápidamente sobre 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).

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 opciones
podemos optar 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 opciones de este software es el acceso a la red.


Se le puede configurar para permitir libre acceso a ciertos servicios y a ciertas IPS. Así 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, Fedora, 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 demás
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) La configuración en general podria ser la siguiente:

En nuestro caso, todos los servidores se encuentran sobre la misma maquina, pudiendo estar
separados (seria lo mejor por temas de seguridad, pero no le pidamos peras al árbol... :))

EL S.O. , CONFIGURACIONES VARIAS


Deberemos tener un Debian instalado. (Más 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 mínima contestando todo lo bien que queramos a las preguntas
necesarias para las ssl (lugar, nombre, mail....) que aparecerán posteriormente en la info. del
certificado al acceder al nodo.
Instalamos también 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 fácil, copiemos hotspotlogin.cgi a nuestro sitio de cgi,


/usr/lib/cgi.bin/

Podemos también 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 línea a /etc/modules.conf


"alias char-major-10-200 tun"
luego "depmod -a " para actualizar cambios.
ahora, ya tenemos configurado el equipo.

FREERADIUS

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 así 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 código 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 erróneo. , 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, así que podemos modificarlo a nuestro gusto con la web que queramos,
bien pegándolo en este archivo o incluyéndolo 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 estaría 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 queréis :) el apache también :),
si asociamos cualquier cliente al AP y le decimos que obtenga la IP automáticamente
mediante dhcp, las peticiones a cualquier web nos llevarían 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
serán las configuradas en el servidor. y una de las cosas que tiene de bueno (que también 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

Dejamos acceso libre a estas Webs. Y dejaríamos 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 sniffing. 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 algún malo malísimo :) . Para
asegurarlo mejor, se podria configurar un proxy seguro con un squid y ssl de forma que todas
las peticiones al web estén encriptadas y procurar utilizar puertos seguros para el resto... pero
eso es cantar de otro día :)
Habrá 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.
salu2 y suerte :)

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á tienes 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 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 eres 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 quieres bajar el Amule e instalarlo tendrías que bajar el source y instalarlo
manualmente

./configure
Make
Make install
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 tienes que hacer lo siguiente, abrir una terminal
root y coloca:

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

Nota: utilizar repositorios actualizados en vez de los de la guía, 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 license. 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 sustitúyela 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

## 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 license. 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 tienes 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)

Si luego quieres remover estos paquetes tienes que hacer aptitude purge "nombre".

Instalación (Mp3, Codecs, Flash pluggin, 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 pluggin 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"

/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 quieres instalar más tipos de fuentes acá tienes 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

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 tienes 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

Comentarios

Para cualquier duda, observación o sugerencia sobre este documento puedes hacerlo a través
del siguiente enlace:
Foro: Guia básica de Ubuntu Linux

Licencia original del documento

Derechos de Autor © 2005 por Santiago (Paperwork).

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la
Licencia de Documentación Libre GNU, Versión 2 o cualquier otra versión posterior publicada
por la Free Software Foundation; con la Sección Invariante "Licencia original del documento".
Una copia de la licencia es proveída en el sitio a través de este enlace: Licencia de
Documentación Libre GNU.

Autor: Santiago (Paperwork)


Colaboración para espaciolinux.com

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.

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.
• 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, usted 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.

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 disponibles 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:

mkdir /mount/C
mount server:/exported.directory /mount/C
dd if=/mount/C/my.image of=/dev/had
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.

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 Éste es el modo nativo que los sistemas Un*x emplean para compartir
de Archivos en archivos; es robusto y fácil de instalar. Mi favorito.
Red)

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

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

Muy fácil de instalar en el servidor, muy fácil de usar el cliente. Muchos


TFTP (trivial FTP) enrutadores (p. ej. Cisco) usan tftp para almacenar sus archivos de
configuración.

Sí, éste funciona. Su servidor puede correr bajo, bien Linux + Samba o
SMB (o Netbios) 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.

Lecturas posteriores

Otro programa usado por muchos administradores de clusters científicos es dolly. He oído
mucho y bueno de él, pero aún no lo he probado.

Al lanzar desde una red, mire etherbootPXE


Autor:Alan Ward
Traducción al español por José Gregorio Del Sol Cobos

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 cualquier 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 una 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

# 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.

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 abrir sus
sistemas informáticos a Internet, unas consecuencias que no sólo son de carácter 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.
¿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

• 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.
• 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.


• -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úmeros 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

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 acertado 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

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 port 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 rehusar 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.

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 iptables-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.
Un artículo de:
Daniel Fernández Garrido

6. Comandos básicos de Linux

Aquí les dejo un resumen de una lista de comandos básicos para los que recién 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 disco
du = muestra el espacio en disco utilizado
fdformat = formatea un diskete
fdisk = particiona unidades
file = determina el tipo de archivo a través del análisis 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 = crea 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 señalando 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 señalando 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 árbol
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
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 = actualiza la base de datos de los paquetes .deb


apt-get upgrade = actualiza los paquetes a su ultima versión
apt-get install "paquete" = instala lo que escribirás en "paquete"
apt-get remove "paquete" = desinstala lo que escribirás 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 módulos 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 configuración 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

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
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

(puerto serie 1) ln -sf /dev/ttyS0 /dev/mouse


(puerto serie 2) ln -sf /dev/ttyS1 /dev/modem

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 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
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 sistema 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 "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 monitorización
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 almacenamiento en 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 el usuario 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 utilizando 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

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 mínima 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 aplicación que proporciona una serie de mecanismos
para el registro y filtro de aquellos servicios invocados o llamados a través 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

El estándar 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, repitiéndose 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 función
DES, esto es, un valor que puede variar de 0 a 4095. Asi que para cada contraseña posible
existen 4096 formas de encriptación 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
función 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.

También podemos usar programas de adivinación 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 música, 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 fácilmente diseñables, en realidad uno sencillo
puede crearse en menos de 30 líneas de código.
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.

Para mantener una seguridad decente en tu sistema Linux, en lo concerniente a la


entrada al sistema, dos son las medidas básicas 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, Mayúsculas-
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
minúsculas, mayúsculas, números y símbolos 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?

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 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.

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.

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 defecto tienes todos los puertos abiertos, 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 por defecto, esto se consigue modificando en el /etc/services la línea
correspondiente al servicio, en nuestro caso podríamos sustituir:

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.
Además para los pies a la mayoría de crakeadores de passwords. Aunque parezca una
tontería, usar shadow passwords es una de las protecciones más 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
línea. Eliminando las líneas 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:

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 línea 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 línea, 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 línea
ALL: ALL: todas las conexiones serán aceptadas independientemente de que en líneas
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 línea 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 líneas 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 más información en man services.

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 líneas 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:
/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.

Actualízate!:

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 sustituir este
servicio por el SSH (Secure SHell) muchas más seguras 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.
• 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.
• 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.

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
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 último, 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
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 Boot Record de hda (en mi caso).


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 logeen 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

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.

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 servirán 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

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.

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 ampliación 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?

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 simultáneos.


Idem con
make -j5 modules

Trucos para recompilar el kernel.

Casi todos no hemos topado con la consabida configuración del núcleo de Linux, seguida de su
compilación, 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
Descomentar la línea (¡ quitar la #, corcho !)

Para los que tienen su Linux mas personalizado que la Harley, podeis poner el directorio donde
quieres 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 línea 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

Vous aimerez peut-être aussi