Páginas

viernes, 29 de mayo de 2009

Compilación en Debian del kernel (Debian way)

Fuente: http://kernel-handbook.alioth.debian.org/
Josep Jorba Esteve. Ingeniero superior y doctor en Informática por la UAB. Curso completo, (12 modulos) disponibles para descargar:
Master internacional de Software Libre Universidad Autonoma de Barcelona


En Debian, hay que añadir la configuración por el método denominado Debian Way. Un método que nos permite construir el kernel de una forma flexible y rápida.

Para el proceso serán necesarias una serie de utilidades (instalar los paquetes, o similares): kernel-package, ncurses-dev, fakeroot, wget, bzip2.

Podemos observar el método desde dos perspectivas, reconstruir un kernel equivalente al proporcionado por la distribución, o bien personalizarlo y utilizar así el método para construir un kernel equivalente personalizado.

En el primer caso, pasamos por obtener la versión de las fuentes del kernel que nos proporciona la distribución (sea x la revisión del kernel 2.6):

# apt-get install linux-source-2.6.x
$ tar -xvjf /usr/src/linux-source-2.6.x.tar.bz2

donde obtenemos las fuentes y las descomprimimos (el paquete deja el archivo en /usr/src).

Instalación de herramientas básicas:

# apt-get install build-essential fakeroot

Comprobar dependencias de las fuentes

# apt-get build-dep linux-source-2.6.x

Y construcción del binario, según configuración preestablecida del paquete
(semejante a la incluida en los paquetes image oficiales del kernel en Debian):

$ cd linux-source-2.6.x
$ fakeroot debian/rules binary

Existen algunos procedimientos extra para la creación de kernels en base a diferentes niveles de patch proporcionados por la distribución, y posibilidades de generar diferentes configuraciones finales (puede verse la referencia de la nota para complementar estos aspectos).

En el segundo caso, más habitual, cuando deseamos un kernel personalizado,
deberemos realizar un proceso semejante a través de un paso de personalización típico (por ejemplo, mediante make menuconfig), los pasos:

Obtención y preparación del directorio (aquí obtenemos los paquetes de la
distribución, pero es equivalente obteniendo las fuentes desde kernel.org):

# apt-get install linux-source-2.6.x
$ tar xjf /usr/src/linux-source-2.6.x.tar.bz2
$ cd linux-source-2.6.x

a continuación realizamos la configuración de parámetros, como siempre podemos basarnos en ficheros .config que hayamos utilizado anteriormente, para partir de una configuración conocida (para la personalización, también puede usarse cualquiera de los otros métodos, xconfig, gconfig...):

$ make menuconfig

construcción final del kernel dependiendo de initrd o no, sin initrd disponible (hay que tener cuidado con la versión utilizada; a partir de cierta versión del kernel, puede ser obligatorio el uso de imagen initrd):

$ make-kpkg clean
$ fakeroot make-kpkg --revision=custom.1.0 kernel_image

o bien si disponemos de initrd disponible (construido ya)

$ make-kpkg clean
$ fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image

El proceso finalizará con la obtención del paquete asociado a la imagen del kernel, que podremos finalmente instalar:

# dpkg -i ../linux-image-2.6.x_custom.1.0_i386.deb

Añadimos, también en este apartado, otra peculiaridad a tener en cuenta en Debian, que es la existencia de utilidades para añadir módulos dinámicos de kernel proporcionados por terceros. En particular la utilidad module-assistant permite automatizar todo este proceso a partir de las fuentes del módulo.

Necesitamos disponer de los headers del kernel instalado (paquete linux-headers-version) o bien de las fuentes que utilizamos en la compilación del kernel. A partir de aquí module-assistant puede utilizarse interactivamente, permitiendo seleccionar entre una amplia lista de módulos registrados previamente en la aplicación, y puede encargarse de descargar el módulo, compilarlo e instalarlo en el kernel existente.

También en la utilización desde línea de comandos, podemos simplemente especificar (m-a es equivalente a module-assistant):

# m-a prepare
# m-a auto-install nombre_modulo

Lo cual prepara el sistema para posibles dependencias, descarga fuentes del módulo, compila y, si no hay problemas, instala para el presente kernel. El nombre del módulo podemos observarlo de la lista interactiva de module-assistant.

sábado, 16 de mayo de 2009

Ip publica y privada linea de comandos

Fuente: go2linux.org

Averiguar direccion ip publica utilizando la consola.

# echo "Mi IP pública es " && wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

Aunque la ip privada podemos verla utilizando el comando ifconfig (sin argumentos), en este caso lo combinaremos con el comando sed para obtener la salida de solo la direccion ip privada.

# ifconfig | sed -n "/inet addr:.*255.255.255.0/{s/.*inet addr://; s/ .*//; p}"

Interesante, como todo en GNU-Linux, esto no es posible en sistemas NO UNiX.

Notese que el ejemplo anterior sera valido en una red de tipo 192.168.1.0/24. Evidentemente tendra que adaptarlo a las particularidades de su Red.

viernes, 15 de mayo de 2009

Instalar y configurar tarjeta Ethernet

Instalar y configurar una tarjeta Ethernet como interfaz de Red.

Instalar tarjeta 3COM 3C905

- Ingrese como root.
- Buscar el modulo a utilizar para el dispositivo.
# /sbin/modprobe -l

Para enumerarlos una pagina a la vez
# /sbin/modprobe -l | less

Primero tendremos que googlear un poco para averiguar que modulo utiliza esta tarjeta, encontramos esta pagina
http://www.linux-cd.com.ar/manuales/rh9.0/rhl-rg-es-9/s1-modules-ethernet.html, aqui vemos que nuestra tarjeta:
Hardware
3Com EtherLink PCI III/XL Vortex (3c590, 3c592, 3c595, 3c597) Boomerang (3c900, 3c905, 3c595) utiliza el
modulo
3c59x.o

Utilizamos el comando cut para delimitar la busqueda (barra), que nos saque por pantalla las columnas 8 y 10, en orden alfabetico (sort) y filtramos solo las lineas que contienen 3c5loquesea (3c5*), que es lo que nos interesa.
# modprobe -l | cut -d'/' -f8,10 | sort | grep -i 3c5*
3c501.ko
3c503.ko
3c505.ko
3c507.ko
3c509.ko
3c515.ko
3c59x.ko
bt3c_cs.ko
eeprom_93cx6.ko
NCR53c406a.ko
sym53c416.ko
sym53c8xx_2

Instalamos el modulo
# /sbin/insmod 3c59x

Para asegurarse que el modulo ha sido instalado correctamente.
# /sbin/lsmod

Utilice ifconfig para asignarle una direccion IP
# ifconfig eth0 192.168.1.15 up

Manipular la tabla de enrutamiento para establecer las rutas estaticas en la red.
# /sbin/route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

Ver si la tarjeta Ethernet esta activa en la red.
# sbin/ifconfig

miércoles, 13 de mayo de 2009

CISCO SOBRE LINUX - CCNA

Fuente: Antonio Perpiñan http://www.codigolibre.org
http://www.cisco.com
Técnicas De Routers Cisco. ARIGANELLO.

1. Sistemas de almacenamiento en el router

i) ROM

La memoria ROM es utilizada para almacenar el programa de arranque
del router (boot), partes del sistema operativo y los programas de
diagnóstico del arranque. Es una memoria de solo lectura por
lo que para realizar actualizaciones de la ROM es necesario
reemplazar un chip de la placa madre del router.


ii) Flash Memory

La memoria flash almacena el sistema operativo. Es una memoria que
permite operaciones de lectura y escritura, lo cual hace posible
realizar actualizaciones del sistema operativo sin tener que
reemplazar ningún chip.

El contenido de la memoria flash no se pierde cuando se apaga o
reinicia el router.



iii) RAMf

La memoria RAM es utilizada para almacenar las partes operativas
del sistema como por ejemplo las tablas de rutas o la configuración
activa del sistema. Además esta memoria puede ser utilizadas
para el encolado de paquetes o el mantenimiento de información
cacheada.

El contenido de la memoria RAM se pierde cuando se apaga o
reinicia el router.


iv) NVRAM

La NVRAM es una memoria RAM no volátil, es decir, que no
pierde los datos que contiene cuando el equipo se apaga o reinicia.

Es utilizada generalmente para almacenar la configuración
de arranque del router.


2. Proceso de arranque del router Cada vez que se enciende el router, ejecuta unos diagnósticos de auto-test para verificar el correcto funcionamiento de la CPU, la memoria y los interfaces de red. Tras ello, se ejecuta el software de arranque almacenado en la ROM que busca una imagen válidad del sistema operativo (IOS). Hay tres lugares donde puede localizarse la imagen del sistema operativo:
En la memoria flash
En un servidor TFTP
En la ROM

En el caso de que no se encontrase una imagen válida del sistema operativo el sistema entraría en el modo ROM Monitor. Si por el contrario se encuentra una imagen válida, se carga y se procede a buscar el fichero de configuración almacenado generalmente en la NVRAM. Este fichero almacena la configuración de los interfaces de red (direcciones IP, máscaras de red ...), procesos de enrutado y características del medio. En el caso de que el fichero de configuración no existiese, el sistema operativo ejecutaría un cuestionario para crear un nuevo fichero de configuración. En cambio, si existe el fichero, el sistema operativo lo ejecuta línea a línea.

3. Cisco IOS y CLI
El Cisco IOS (Internetworking Operating System) es el sistema operativo empleado por los routers de Cisco Systems. El Cisco IOS CLI (Command-Line Interface) es el método principal para la configuración, monitorización y mantenimiento de equipos Cisco. El acceso a este interfaz se realiza normalmente a través del puerto de consola de los routers. El conector de este puerto puede ser de diferentes tipos. Uno muy común es un conector RJ45 (lo cual NO quiere decir que sea un interfaz Ethernet). Se suele emplear un cable especial que ofrece un conector RJ45 en un extremo y serie para un PC en el otro. El interfaz CLI permite ejecutar comandos del Cisco IOS y una vez configurado el router se puede permitir el acceso a dicho interfaz a través de un interfaz de red además de por el puerto de consola.

4. Conectándose al puerto de consola
Enchufen a la corriente su router pero no lo enciendan todavía. Se les ha suministrado un cable para conectarse al mismo. Un extremo (RJ45) va al puerto de consola del router, el otro (DB9) al puerto serie del PC. Ejecuten la aplicación minicom en el PC y configuren el puerto serie para 9600 bps, 8 bits de datos, 1 de parada, sin paridad. Ahora enciendan el router. Deberían poder ver el proceso de arranque del mismo.

Conexión al puerto de consola
Ingrese al sistema como ROOT y ejecute:
# minicom -s

Despues de ejecutar el minicom teclee CTRL-a y luego z o para configurar el puerto serial de minicom. Asegurese que la configuracion se desplega asi.

A - Serial Device : /dev/ttyS0
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 9600 8N1
F - Hardware Flow Control : Yes
G - Software Flow Control : No


Guarde su configuracioncon cualquier nombre, en este caso algo como “cisco-1700”. La proxima vez que deseamos configurar este router utilizando el minicom, solo deberemos escribir en la linea de comandos:

# minicom cisco-1700


Al finalizar el arranque del router seguramente se encontrarán (a través del minicom) con algo como:

Router>

En este punto estamos en modo de comandos de usuario (User EXEC Mode) que es el de menos privilegios y con el que no vamos a poder cambiar la configuración del router. Puede ver los comandos disponibles desde este modo con el interrogante:

Router> ?
Exec commands:
<1 -99="-99"> Session number to resume
access-enable Create a temporary
Access-List entry access-profile Apply user-profile to interface
clear Reset functions
...

Para continuar viendo el resto de los comandos podemos dar a barra espaciadora o enter.

Podemos obtener ayuda de cada comando e incluso de las opciones del comando terminándolo con un interrogante. Por ejemplo:

Router> show ?
backup Backup status
clock Display the system clock
compress Show compression statistics
dialer Dialer parameters and statistics
flash: Display information about flash: file system
history Display the session command history

Podemos limpiar la pantalla usando los comandos de minicom:
Ctrl+A, luego C

Podemos ver la versión del sistema operativo y el hardware disponible (RAM, interfaces...) mediante el comando show version.
Router> show version

¿Qué versión del sistema operativo tiene su router?
¿Cuánta RAM tiene instalada?
¿De cuántos interfaces dispone su router?
¿De qué tipo son?
Identifíquelos físicamente en el router.

Con el comando show interfaces:
Router>show interfaces

pueden ver los interfaces de red de los que dispone el router y muchas características de estos. Averigüe la dirección MAC de cada uno de sus interfaces Ethernet.

Averigüe cómo ver los ficheros que existen en la flash con el comando show flash.
Router>show flash

Podemos acceder a información referente a IP con las opciones de show ip:
Router>show ip interface

(vea un poco las opciones existentes). Por ejemplo podemos ver información referente a IP de cada interfaz con show ip interface, especificar un solo interfaz u obtener información muy resumida de la configuración ip de los interfaces, para esto pruebe:

Router>show ip interface brief

También podemos ver la tabla de rutas con:
Router>show ip route

Lo más probable es que ahora vea que ningún interfaz tiene asignada dirección IP y que no hay ninguna entrada en la tabla de rutas. Podremos remedio a todo esto en breve.

A continuacion damos muchos comandos que podemos ejecutar fuera del modo privilegiado, que son para mostrar configuraciones actuales...
Ver informacion de version show version
Ver config actual del DRAM show running-config
Ver config de startup (NVRAM) show startup-config
Ver archivo del IOS y espacio de flash show flash
Ver los logs del router en su memoria show log
Ver esado de la interfaz e0 show interface e0
Ver todas las interfaces del router show ip interfaces brief
Ver tipo de cable serial en s0 show controllers 0 (note el espacio entre 's' y '0')
Ver resumen de los dispositivos cdp conectados show cdp neighbor

Desplegar informacion detallada de todos los dispositivos show cdp entry *
Desplegar protocolos de enrutamiento actual show ip protocol
Desplegar tabla de enrutamiento de IP show ip route
Desplegar listas de acceso show access-lists

Revisar que el enrutador puede ver el switch ISDN show isdn status
Revisar una conexion PVC de un Frame Relay show frame-relay pvc

Mostrar estadisticas de un trafico lmi show frame-relay lmit
Desplegar la tabla del ARP invera show frame-relay map

Ahora algunos ejemplos:
Router> show version
Displaya la configuración del hardware, la versión de software, los nombres de los archivos de configuración e IOS.

Router> show processes
Displaya información acerca de los procesos activos.

Router> show protocols
Displaya el estado de los protocolos configurados en el nivel 3.

Router> show mem
Muestra las estadísticas de la memoria del router, incluyendo las estadísticas de la memoria libre del pool.

Router> show ip route
Displaya las entradas en la tabla de rutas.

Router> show flash
Muestra la información de la memoria flash.

Router> show interfaces
Muestra las estadísticas de todas las interfaces configuradas en el router.

Ahora mostramos comandos basicos de operaciones:
Entrar al modo privilegiado enable
Returnar al modo de usuario disable
Salir del Router logout/exit/quit
Regresar al ultimo comando Flechas cursoras arriba/Ctrl+P
Regresar al proximo comando Flecha curso abajo/Ctr+N
Suspender o abortar Shift y Ctrl y 6 luego x
Refrescar la salida Ctr+R
Completar un comando TAB

Muchos de estos comandos podemos ejecutarlo en modo no privilegiado pero, muchos no, asi que mejor nos convertimos en root, digamos, ejecutando enable.
Router> enable

Nos cambia al modo privilegiado, si colocamos un password nos la pide en en este momento sino NO.
Si deseamos coloca la contraseña “solucion” al router lo hacemos de la siguiente manera:
Router# con?
configure connect

Router# configure t

Router# configure terminal
Router(config)# enable secret solucion
Router(config)# Ctrl+Z
Router# copy running-config startup-config

o posiblemente

Router# write Router# exit

Ahora nos encontramos nuevamente en el modo de usuario y si deseamos regresar al modo de administracion nos pide la clave:
Router> enable Password: solucion
Router#

Ahora podemos dejarle una lista de otros comandos del modo CONFIG
Establecer la password de consola a solucion Router(config)#line con 0
Router(config-line)#password solucion
Router(config-line)#login

Establecer la contrasena del telnet a clave
Router(config)#line vty 0 4
Router(config-line)#password solucion
Router(config-line)#login

Detener que la consolo se inactive o time out
Router(config)#line con 0
Router(config-line)#exec-timeout 0 0

Establecer la contrasena a solucion
Router(config)#enable password solucion

Establecer la contrasena secreta a fcld, esta es sobre la de enable
Router(config)#enable secret fcld
y esta encriptada dentro del archivo config.

Habilitar una interfaz
Router(config-if)#no shutdown

Deshabilitar una interfaz
Router(config-if)#shutdown

Establecer la velocidad del reloj del router con el cable DCE a 64K R
outer(config-if)clock rate 64000

Establecer el ancho de banda a 64K al interfaz serial
Router(config-if)bandwidth 64
Note que los ceros no faltan

Agregar una direccion IP a una interfaz
Router(config-if)#ip addr 10.1.1.1 255.255.255.0

Habilitar RIP en todas las interfaces 172.16.x.y
Router(config)#router rip
Router(config-router)#network 172.16.0.0

Deshabilitar RIP
Router(config)#no router rip

Habilitar el IRGP con un AS de 200, a todas las interfaces
Router(config)#router igrp 200
Router(config-router)#network 172.16.0.0

Deshabilitar IGRP
Router(config)#no router igrp 200

Ruta estatica de la red es 172.16.1.0, con un a mascara de 255.255.255.0, el proximo salto es 172.16.2.1, a un costo de 5 salto
Router(cfig)#ip route 172.16.1.0 255.255.255.0 172.16.2.1 5

Deshabilitar CDP para el router por completo
Router(config)#no cdp run

Habilitar CDP para todo el router
Router(config)#cdp run

Deshabilitar CDPen una interfaz
Router(config-if)#no cdp enable

Ya que sabemos configurar el router necesitamos poder almacenar nuestros cambios y poder iniciar el router desde otras fuentes que no sean el flashran, etc.

Alguardar configuracion actual desde el DRAM a NVRAM copy running-config startup-config
Llevar config del NVRAM al DRAM copy startup-config running-config
Copiar config del DRAM a un servidor TFTP copy runing-config tftp
Juntar el config TFTP con la config actual en el DRAM copy tftp runing-config
Backup the IOS onto a TFTP server copy flash tftp
Upgrade the router IOS from a TFTP server copy tftp flash

Ejemplo de Recuperar Contrasena de Router CISCO desde LINUX:
Router>enable
Password:********
Password:*******
Password:*******
% Bad secrets

UPS!! parece que se nos olvido la contrasena... primero vamos a ver nuestra version ....

Router>show version
Cisco Internetwork Operating System Software
IOS (tm) 2500 Software (C2500-JS-L), Version 12.0(7)T, RELEASE SOFTWARE (fc2)
Copyright (c) 1986-1999 by cisco Systems, Inc.
............. .............
Configuration register is 0x2102

Router>
!--- El router acaba de encenderse y durante el arranque
!--- desde minicom se preciona la Ctrl+A+f para enviar
!--- sequencia enviada al router.

Abort at 0x10EA83C (PC)
>o/r 0x2142
>i

System Bootstrap, Version 5.2(8a), RELEASE SOFTWARE
Copyright (c) 1986-1995 by cisco Systems
2500 processor with 8192 Kbytes of main memory
.............
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
!--- Presione Ctrl-C
!
Press RETURN to get started!
00:00:08: %LINK-3-UPDOWN: Interface Ethernet0, changed state to up
00:00:08: %LINK-3-UPDOWN: Interface Serial0, changed state to up
...............
...............

00:01:34: %LINEPROTO-5-UPDOWN: Line protocol on Interface TokenRing0, te to down

Router>enable
Router#copy start running-config
Destination filename [running-config]? [Enter]
1278 bytes copied in 10.448 secs (127 bytes/sec)

Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#enable secret solucion
Router(config)#int e0
Router(config-if)#no shutdown
*Mar 1 00:04:12.863: %LINK-3-UPDOWN: Interface Ethernet0, changed state to up
*Mar 1 00:04:13.947: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0, changed state to up

Router(config-if)#int s0
Router(config-if)#no shut
*Mar 1 00:04:18.107: %LINK-3-UPDOWN: Interface Serial0, changed state to up
*Mar 1 00:04:19.167: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0, changed state to up

Router(config-if)#int s1
Router(config-if)#no shut
Router(config-if)#
*Mar 1 00:04:27.055: %LINK-3-UPDOWN: Interface Serial1, changed state to up
*Mar 1 00:04:28.071: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to up

Router(config-if)#exit
Router(config)#config-register 0x2102
Router(config)#^Z Router#wr mem
*Mar 1 00:05:09.035: %SYS-5-CONFIG_I: Configured from console by console
Building configuration... [OK]
Router#

6. Configuración IP básica de un interfaz Ethernet del router
Para hacer cualquier cambio en la configuración del router lo primero que debemos hacer es pasar al modo de comandos privilegiado (priviledged EXEC mode). Para ello ejecute nuevamente:
Router> enable

En este punto el router podría (y debería) solicitar una password. De momento esa password está quitada pero en los siguientes pasos la configuraremos de nuevo.

Si el comando se ejecuta con éxito el prompt debería cambiar a algo como:
Router#
para indicarnos que estamos en modo privilegiado.

Tras terminar el reinicio vuelva a entrar en modo privilegiado. De ahí pasamos al modo de configuración con el comando:
Router# configure terminal

Lo primero que vamos a hacer es activar que el equipo actúe como un router. Para ello emplearemos el comando ip. Vea las opciones de este comando con: Router(config)# ip ? Lo activamos escribiendo:
Router(config)# ip routing

A continuación vamos configurar la dirección IP de uno de los interfaces Ethernet. Para ello hemos de pasar al modo de configuración de ese interfaz. Esto se hace con el comando interface especificando a continuación el nombre del interfaz. Entre en modo configuración del primer interfaz Ethernet de su router. El prompt debería ser ahora:
Router(config-if)#

Una vez en este modo primero le indicamos al IOS que active el interfaz con:
Router(config-if)# no shutdown

A continuación especificamos la dirección IP del interfaz empleando el comando ip.
Router(config-if)#interface NombreInterface
Router(config-if)#ip address 192.168.5.1 255.255.255.0
Router(config-if)#exit

Conexión a hub
Ahora podemos hacer también un telnet desde el PC al router por el interfaz IP, sin embargo, para poder conectarnos al mismo antes hay que asignar una password para las conexiones que vienen por la red. Para ello, de nuevo desde el minicom entre en modo privilegiado y en modo configuración. Desde ahí pasamos al modo de configuración de líneas con:
Router(config)# line vty 0 4

Y ahora activamos que se pueda hacer login y asignamos una password:
Router(config-line)# login
Router(config-line)# password lpr2003

Para asignar una password al modo privilegiado vuelva al minicom, entre en modo configuración y emplee el comando:
Router(config)# enable secret 0 telemat

Con lo que estamos asignando la password telemat al modo privilegiado.

Compruebe que ahora con un telnet puede acceder al modo de configuración.

Para que los cambios sean permanentes lo que se hace es guardar la configuración actual con el nombre del fichero de configuración que lee en el arranque el router y que se encuentra en la NVRAM, es decir, desde modo privilegiado debemos ejecutar:
Router# copy running-config startup-config
Para ver la configuración del router puede ejecutar desde modo privilegiado:
Router# show running-config

Si en algún momento deseamos deshacer un comando lo único que hace falta es ejecutarlo de nuevo poniendo delante no. Por ejemplo, para desactivar el routing podríamos desde modo configuración:
Router(config)# no ip routing.

Compilar kernel Vainilla

Fuente: Antonio Perpiñan http://www.codigolibre.org

En esta practica compilamos un kernel que descargamos desde kernel ORG Descarguemos el Fuente desde www.kernel.org y lo guardamos en /usr/src
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

Lo desempaquetamos:
# tar xjf linux-2.6.18.2.tar.bz2
# ln -s linux-2.6.18.2 linux
# cd /usr/src/linux

3.2 Aplicar los Parches al Fuente del Kernel (Opcional)
Descargue el parche que necesita y guardelo en el directorio /usr/src/linux:
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1
El primero es de prueba, no hace nada. El segundo es el real si el primero corre sin errores! Aqui mostramos por ejemplo como aplicamos el parche 2.6.19-rc5 al kernel 2.6.18:
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2
# cd /usr/src/linux
# bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1 --dry-run
# bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1

3.3 Configurar el Kernel Es buena idea utilizar su vieja configuracion del kernel actual:
# make mrproper
# cp /boot/config-`uname -r` ./.config

Luego ejecute:
# make menuconfig

Esto lanza el menu de configuracion del kernel. Como ya copio el archivo de configuracion viejo este debe ser el que escoje. Al finalizar elija guardar y salga. 3.4 Construya e Instale el Kernel Ejecute estos comandos:
# make all
# make modules_install
# make install

Esto puede tomar varias horas, dependiendo de la configuracion y la velocidad del procesador. El ultimo comando nos creara automaticamente el ramdisk y configurara nuestra entrada en el archivo /boot/grub/menu.lst.
# shutdown -r now

martes, 12 de mayo de 2009

Generalitat de Catalunya y Software libre

Sr. Carlos Camilo

Bienvenido señor:

Acusamos recepción del mensaje electrónico dirigido a la Presidencia de la Generalitat*, donde demanda que la Administración impulse el software informático libre, especialmente GNU-Linux.

Desde nuestro gabinete tenemos que decir que la Generalitat, a traves del departamento de educación, extenderá progesivamente a todos los centros educativos la versión 2.0 de la distribución Linkat** GNU-Linux, sobre todo por sus numerosas aplicaciones educativas.

Dispone de una serie de características que lo convierten en una herramienta idonea para trabajar en los centros, ya que incluye ofimática, internet, multimedia y juegos. Todos los centros nuevos que se creen en Catalunya ya tienen incorporada la tecnologia necesaria para poder utilizar Linkat, (de Linux en Catalán).

La versión 2.0 presenta una serie de novedades respecto a la anterior versión: un nuevo escritorio con efectos 3D, que amplía las posibilidades de interacción con el usuario; nuevas aplicaciones, hasta un total de 50; síntesis de voz en catalán; y compatibilidad con la mayoría del hardware de los ordenadores (computadoras), existentes en el mercado.

De esta manera, tratándose de software libre, la Generatiltat se ahorra una importante cantidad económica, coherente con la política de contención presupuestaria que se lleva a cabo en momentos de crisis global como la que vivimos.

Atentamente,
Narcís Castanyer
Barcelona, 5 de mayo de 2009
Cap del Gabinete de Gestión del Presidente de la Generalitat

* Generalidad de Catalunya (en catalán y oficialmente: Generalitat de Catalunya) es el sistema institucional en que se organiza políticamente el autogobierno de Cataluña (España). Está formada por el Parlamento, el Consejo Ejecutivo o Gobierno, por la Presidencia de la Generalidad, y por las otras instituciones que el Estatuto de autonomia de catalunya y las leyes establecen.)

** Linkat es la distribución GNU/Linux del Departamento de Enseñanza de la Generalidad de Cataluña. Está basada en la distribución SUSE Linux Enterprise Desktop (SLED) y el funcionamiento de los programas se basa en paquetes rpm. Actualmente está en fase 2.1 y utiliza por defecto el entorno de escritorio Gnome, aunque también están disponibles los entornos KDE y XFCE.

lunes, 11 de mayo de 2009

Conectando wireless chipset rt73 Debian 5.0 Lenny

Fuente: ralink-Lenny

Probando mi wireless usb Edimax7318usg.-

Debian 5 incluye en el kernel (2.6.26), los controladores para los dispositivos usb wifi que utilizan el chipset ralink rt73. Estos se encuentran en:
/lib/modules/2.6.22-3/kernel/drivers/net/wireless/rt2x00/

Conecte el dispositivo a un puerto usb de su maquina.

Haga un ifconfig para ver las interfaces de red de su maquina

$ ifconfig -a

wlan1 (esta es la que nos interesa)

Link encap:Ethernet HWaddr 00:1F:3C:FB:C0:3B
BROADCAST NOTRAILERS PROMISC ALLMULTI MTU:1500 Metric:1
RX packets:20456 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1830825 (1.7 MiB) TX bytes:0 (0.0 B)

Abra una terminal y teclee:

$ ls /lib/modules/2.6.22-3/kernel/drivers/net/wireless/rt2x00/

Dentro de esta carpeta encontrara los controladores para el chipset rt73usb.

Utilice el comando lsmod para listar los modulos, (aparecera rt73usb)

$ lsmod

Module Size Used by
rt2500usb 19360 0
rt73usb 22432 0
crc_itu_t 2080 1 rt73usb
rt2x00usb 9792 2 rt2500usb,rt73usb
rt2x00lib 22432 3 rt2500usb,rt73usb,rt2x00usb
rfkill 5652 1 rt2x00lib
input_polldev 3752 1 rt2x00lib
....... ....... .. ........


Como usuario root escriba:

# m-a a-i rt73-source

Y luego instale el firware del dispositivo usb

# apt-get install firmware-ralink

Levante la interface

# ifconfig wlan1 up

# iwconfig

wlan1

IEEE 802.11 ESSID:""
Mode:Managed Frequency:2.467 GHz Access Point: Not-Associated
Tx-Power=11 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Esta tarjeta soporta el modo monitor imprescindible para realizar auditoria de redes. Auditoria wireless

sábado, 9 de mayo de 2009

Compilar kernel de GNU-Linux 2.6

Compilar kernel Linux 2.6

Autor: nixcraft (http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html)

Compilar el kernel tiene sus propias ventajas y desventajas. Sin embargo, para los nuevos usuarios de Linux-Admin es difícil compilar el kernel de Linux. En la Compilación del kernel es necesario entender algunas cosas antes de escribir los comandos. Este paso a paso se refiere a la compilación del núcleo de Linux versión 2.6.xx en Debian GNU-Linux aunque las instrucciones siguen siendo las mismas para cualquier otra distribución con excepción del comando apt-get.

. Descargue el codigo fuente del kernel Linux

Visite http://kernel.org/ y descargue el código fuente. El nombre del archivo sería linux-x.y.z.tar.bz2, donde x.y.z es el número de versión real. Un ejemplo seria el archivo linux-2.6.26.tar.bz2 representa la versión 2.6.26 del núcleo. Una alternativa seria utilizar el comando wget para descargar el código fuente del kernel. Nos movemos al directorio temporal:

$ cd /tmp
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-x.y.z-tar.bz2

Reemplace xyz con el número de versión real.

Extraer tar (.tar.bz2) archivo

Con el siguiente comando (donde -C significa cambiar a directorio dir):
# tar -xjvf linux-2.6.26.tar.bz2 -C /usr/src
# cd /usr/src

Configuración del kernel

Antes de configurar el kernel asegúrese de tener las herramientas de desarrollo (compiladores gcc y herramientas relacionadas) instaladas en su sistema. Si el compilador gcc no esta instalado, utilice apt-get en Debian Linux para instalar las herramientas de desarrollo.

# apt-get install gcc

Es posible que tambien necesite instalar los paquetes:
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential udev devhelp

Ahora puede comenzar la configuración del kernel escribiendo uno de los comandos:

* $ make menuconfig - Texto basado en los menús de color, radiolists y diálogos. Esta opción también es útil en el servidor remoto si quiere compilar el núcleo a distancia.
* $ make xconfig - X ventanas (Qt), basada en la herramienta de configuración, funciona mejor en virtud de escritorio KDE
* $ make gconfig - X ventanas (Gtk), basada en la herramienta de configuración, que funciona mejor bajo Gnome Escritorio.

Por ejemplo comando make menuconfig lanza la siguiente pantalla:
$ make menuconfig








Tiene que seleccionar diferentes opciones según su necesidad. Cada opción de configuración tiene un boton de HELP asociado con el fin de obtener ayuda.

. Compilar el núcleo

Comienza la compilación para crear una imagen comprimida del kernal, escriba:
$ make

Compilando los módulos del kernel:
$ make modules

Instalar módulos del núcleo (conviertase en un usuario root, utilice su comando):
$ su -
# make modules_install

Instalación del kernel.

Hasta ahora hemos compilado el núcleo y los módulos del kernel instalado. LLego el momento de instalar el núcleo en sí.
# make install

Se van a instalar tres archivos en el directorio de arranque /boot, así como el archivo de configuración de grub del kernel modificado:

* System.map-2.6.26
* config-2.6.26
* vmlinuz-2.6.26

. Crear una image initrd

Teclee el siguiente comando en el intérprete de comandos:
# cd /boot
# mkinitrd -o initrd.img-2.6.26 2.6.26
# mkinitrd -o initrd.img-2.6.26 2.6.26

initrd image contiene controladores de dispositivos necesarios para cargar el resto del sistema operativo más adelante. No todas las computadoras requieren los initrd, pero es seguro para crear uno.

. Modificar el archivo de configuración del cargador de arranque /boot/grub/ menu.lst

Abra el archivo con vi (nano, gedit, etc.):
# vi /boot/grub/menu.lst

title Debian GNU/Linux, kernel 2.6.26 Default
root (hd0,2)
kernel /boot/vmlinuz-2.6.26 root=/dev/sda3 ro
initrd /boot/initrd.img-2.6.26
savedefault
boot

Recuerde utilizar la configuración correcta del dispositivo, root=/dev/sdxx. Guarde y cierre el archivo. Si usted cree que la edición y la escritura a mano todas las líneas es demasiado para usted, pruebe update-grub comando para actualizar las líneas para cada núcleo en /boot/grub/menu.lst. Sera suficiente con escribir el comando:
# update-grub

# reboot

viernes, 8 de mayo de 2009

Debian 5.0 Lenny - Wireless 3945ABG

En un portatil Dell Inspiron 1525 Core 2 Duo CPU T5750 2.00GHz con el Sistema Operativo Ubuntu 8.04 preinstalado, el controlador para la tarjeta intel PRO/Wireless 3945ABG viene incluido en la distribucion. Al formatear el disco duro e instalar Debian 4.0 fue necesario realizar la instalacion del driver de la tarjeta manualmente.

Recientemente ha ingresado a la versión stable de Debian la 5.0 (Lenny), la serie del kernel 2.6.26, este contiene el nuevo modulo iwl3945 que reemplaza al viejo ipw3945. Una de las ventajas de este cambio es que ya no hay necesidad de tener activo el demonio ipw3945d. Sin embargo, aun se necesita del firmware que se encuentra en la sección non-free del repositorio de Debian.

Un caso practico, un compañero del ramo de la informatica compró un portatil que trae la misma tarjeta wifi. Como ya es costumbre en los seguidores de sistemas derivados de UNiX, el disco duro lo formateamos con el System Rescue cd y empezamos la instalacion de la ulltima version estable de Debian, la 5.0.

En el momento en que el hardware de red es detectado, el instalador de Debian avisó que, para el correcto funcionamiento de la tarjeta wifi le suministrara a traves de un dispositivo de almacenamiento usb, (pendrive), el archivo iwlwifi-3945-1.ucode. Descargar iwlwifi-3945-ucode-2.14.5.tgz. Descargar, descomprimir y copiar al pendrive.

Despues de instalado el software, es necesario instalar el firmware de la tarjeta. Al dia de hoy la manera mas facil es descargarlo de los repositorios de Debian. Primero agregue los repositorios a su archivo /etc/apt/sources.list :

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
deb http://ftp.es.debian.org/debian/ lenny main contrib non-free

Actualizar la lista de paquetes:
apt-get update

Instalar el firmware:
aptitude install firmware-iwlwifi

A partir de ese momento y despues de introducir el SSID y la key en formato hexadecimal la conexion a Internet quedó configurada.

jueves, 7 de mayo de 2009

Iptables

Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red.

Autor: Pello Xabier Altadill Izura
Firewall simple
######################################################################
## SCRIPT de IPTABLES ##
## Pello Xabier Altadill Izura I+D+I+I en tiempo record ##
## Investigación, Desarrollo, Innovación e IMPLANTACIÓN ##
## Este script es de ejemplo y no es el mejor ejemplo, ##
## pero funciona en RedHat 7.2 y es muy pedagógico ##
#####################################################################

## Notas para usuarios de IPCHAINS:
# ipchains e iptables son módulos del kernel que
# NO pueden convivir juntos
# DENY ahora es DROP
# Los LOG se guardan de otra forma
echo -n Aplicando Reglas de Firewall...

## Instalando módulos
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

## Variables
EXTIF="eth0" # La que va al router
INTIF="eth1" # La que va a la LAN

## Primeras reglas
/sbin/iptables -P INPUT ACCEPT # INPUT se acepta por defecto MAL HECHO
/sbin/iptables -F INPUT
/sbin/iptables -P OUTPUT ACCEPT # OUTPUT se acepta por defecto, weno..
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD ACCEPT # FORWARD se acepta por defecto buf
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -F

## se deniega 80 y se guarda log (ejemplo)
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport www -j LOG --log-prefix "IPTablesFW> "
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport www -j DROP

## Acceso al 3128 (proxy squid) desde LAN
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 3128 -j ACCEPT
# El resto se tira
/sbin/iptables -A INPUT -i $INTIF -s 0.0.0.0/0 -p TCP --dport 3128 -j DROP

## Acceso al 143 desde LAN
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 143 -j ACCEPT

## Acceso al ssh desde la LAN
/sbin/iptables -A INPUT -i $EXTIF -s 213.195.64.0/24 -p TCP --dport 22 -j ACCEPT

## Acceso al ssh un rango externo
/sbin/iptables -A INPUT -i $EXTIF -s 213.195.64.0/24 -p TCP --dport 22 -j ACCEPT
# el resto se tira
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p TCP --dport 22 -j DROP
## Acceso al puerto 25
/sbin/iptables -A INPUT -i $EXTIF -s 213.191.89.0/24 -p TCP --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.1.0/24 -p TCP --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p TCP --dport 25 -j DROP


## FORWARD
# Que me haga log de todo el forward
/sbin/iptables -A FORWARD -j LOG

## He aqui el forward para la LAN, una regla mágica
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Ese peazo de bit que hay que habilitar
echo 1 > /proc/sys/net/ipv4/ip_forward

Ejemplo de Firewall más Completo
Este ejemplo es algo más serio, ya que la regla de input por defecto es DROP. Esta política de reglas es
la más segura, ya que por defecto se denegará TODO, y poco a poco se van habilitando las entradas precisas.
#!/bin/sh
## SCRIPT de IPTABLES
## Pello Xabier Altadill Izura
echo -n Aplicando Reglas de Firewall...

## Paramos el ipchains y quitamos el módulo
/etc/rc.d/init.d/firewall stop
rmmod ipchains

## Instalando módulos
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

## Variables
IPTABLES=iptables
EXTIF="eth1"
INTIF="eth0"

## En este caso,
## la tarjeta eth1 es la que va al ROUTER y la eth0 la de la LAN

## Primeras reglas
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -F

### En principio, si las reglas INPUT por defecto hacen DROP, no haria falta
### meter más reglas, pero si temporalmente se pasa a ACCEPT no esta de más.

## Todo lo que viene de cierta IP se deja pasar (administradores remotos...)
/sbin/iptables -A INPUT -i $EXTIF -s 203.175.34.0/24 -d 0.0.0.0/0 -j ACCEPT

## El localhost se deja
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

## Aceptar al exterior al 80 y al 443

# Permitir salida al 80


/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 80 -j ACCEPT
# Permitir salida al 443
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 443 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 443 -j ACCEPT

## SALIDA SMTP - Para que el servidor se pueda conectar a otros MTA
# Permitir salida SMTP
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 25 -j ACCEPT

## SALIDA FTP - Para que el servidor se pueda conectar a FTPs
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
# ftp activo
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
# ftp pasivo
/sbin/iptables -A INPUT -i $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -o $EXTIF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

## El acceso al 19720 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 19720 -j DROP

## El acceso al 19720 desde dentro, ACEPTADO
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 19720 -j ACCEPT

## El acceso al 19721 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 19721 -j DROP

## El acceso al SSH desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 1972 -j DROP

## El acceso al SMTP desde dentro, permitido.
/sbin/iptables -A INPUT -i $INTIF -p tcp --dport 25 -j ACCEPT
## El acceso al SMTP desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 25 -j DROP

## Acceso al 80 desde el interior ACCEPTADO PARA DOS IPs
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.11/32 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.54/32 -p tcp --dport 80 -j ACCEPT
## Acceso al 80 desde el interior DENEGADO PARA EL RESTO
#/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 80 -j DROP

## Acceso al PROXY
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 8082 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 8082 -j ACCEPT
/sbin/iptables -A INPUT -s 127.0.0.0/8 -p tcp --dport 8082 -j ACCEPT

# Desde el exterior denegado
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 8082 -j DROP

## Acceso a POP3 e IMAP desde el EXTERIOR, DENEGADO
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.9.0/24 -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i $INTIF -s 192.168.10.0/24 -p tcp --dport 143 -j ACCEPT


## Acceso a POP3 e IMAP desde el EXTERIOR, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 110 -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 143 -j DROP
## Acceso al 8082 desde fuera, DENEGADO
/sbin/iptables -A INPUT -i $EXTIF -s 0.0.0.0/0 -p tcp --dport 8082 -j DROP

## FORWARD
# Que me haga log de todo el forward
#/sbin/iptables -A FORWARD -j LOG

# He aqui el forward
## Norma general
##iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.11/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.16 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.54/32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.9.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.10.0/24 -j MASQUERADE

# Habilitar el forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

Reglas de Protección
Tranquilos , aquí no vamos a hablar de la última maza de cartas Magic que me he comprado, ni de for-
mulas para salir airosos jugando a La Llamada de Cthulhu, entre otras cosas porque no juego a esas cosas (mi hijo si). En esta breve sección listamos algunas reglas para proteger nuestro equipo y por extensión la red, de
ciertos ataques muy habituales en las redes como el smurf y otras formas de inundación y DoS.

¿Es recomendable usar todas estas normas? Según como administremos el nivel de paranoia.

Nota: hay que dar valores concretos a las variables $
# Deshabilitar broadcast
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deshabilitar el ping... quizá discutible.
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Deshabilitar la redirección del ping
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Registrar los accesos extraños, paquetes falseados, etc..
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood
iptables -A INPUT -i $IFACE -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP
# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
iptables -A INPUT -i $IFACE -f -j LOG --log-prefix "Fragmento! "
iptables -A INPUT -i $IFACE -f -j DROP

# Anti-spoofing (falseo de ip origen)


iptables -A INPUT -i $IFACE -s $IPADDR -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_A -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_B -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_C -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_D_MULTICAST -j DROP
iptables -A INPUT -i $IFACE -s $CLASS_E_RESERVED_NET -j DROP
iptables -A INPUT -i $IFACE -d $LOOPBACK -j DROP
iptables -A INPUT -i $IFACE -d $BROADCAST -j DROP
(bien explicado en el script de linuxguruz)
# Proxy Transparent: peticiones al puerto 80 redirigir al SQUID(3128)
iptables -t nat -A PREROUTING -p tcp -s 0.0.0.0/0 --dport 80 -j REDIRECT --to 3128