Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

MANUAL BÁSICO DE CRON

Esta es una introducción a cron, cubre lo básico de lo que cron puede hacer y la manera de usarse.

¿Qué es cron?

Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automáticamente comandos o scripts (grupos de comandos) a una hora o fecha específica. Es usado normalmente para comandos de tareas administrativas, como respaldos, pero puede ser usado para ejecutar cualquier cosa. Como se define en las páginas del manual de cron (#> man cron) es un demonio que ejecuta programas agendados.

En prácticamente todas las distribuciones de Linux se usa la versión Vixie Cron, por la persona que la desarrolló, que es Paul Vixie, uno de los grandes gurús de Unix, también creador, entre otros sistemas, de BIND que es uno de los servidores DNS más populares del mundo.

Iniciar cron

Cron es un demonio (servicio), lo que significa que solo requiere ser iniciado una vez, generalmente con el mismo arranque del sistema. El servicio de cron se llama crond. En la mayoría de las distribuciones el servicio se instala automáticamente y queda iniciado desde el arranque del sistema, se puede comprobar de varias maneras:

#> /etc/rc.d/init.d/crond status
#> /etc/init.d/crond status Usa cualquiera de los dos dependiendo de tu distro
crond (pid 507) is running...

o si tienes el comando service instalado:
#> service crond status
crond (pid 507) is running...

se puede también revisar a través del comando ps:
# ps -ef | grep crond

si por alguna razón, cron no esta funcionando:
#> /etc/rc.d/init.d/crond start
Starting crond: [ OK ]

Si el servicio no estuviera configurado para arrancar desde un principio, bastaría con agregarlo con el comando chkconfig:

#> chkconfig --level 35 crond on
Usando cron

Hay al menos dos maneras distintas de usar cron:

La primera es en el directorio /etc, donde muy seguramente encontrarás los siguientes directorios:

  • cron.hourly
  • cron.daily
  • cron.weekly
  • cron.monthly

Si se coloca un archivo tipo script en cualquiera de estos directorios, entonces el script se ejecutará cada hora, cada día, cada semana o cada mes, dependiendo del directorio.

Para que el archivo pueda ser ejecutado tiene que ser algo similar a lo siguiente:

 #!/bin/sh
#script que genera un respaldo
cd /usr/documentos
tar czf * respaldo
cp respaldo /otra_directorio/.

Nótese que la primera línea empieza con #!, que indica que se trata de un script shell de bash, las demás líneas son los comandos que deseamos ejecute el script. Este script podría nombrarse por ejemplo respaldo.sh y también debemos cambiarle los permisos correspondientes para que pueda ser ejecutado, por ejemplo:

#> chmod 700 respaldo.sh
#> ls -l respaldo.sh
-rwx------ 1 root root 0 Jul 20 09:30 respaldo.sh

La "x" en el grupo de permisos del propietario (rwx) indica que puede ser ejecutado.

Si este script lo dejamos en cron.hourly, entonces se ejecutará cada hora con un minuto de todos los días, en un momento se entenderá el porque.


Como segundo modo de ejecutar o usar cron es a través de manipular directamente el archivo /etc/crontab. En la instalación por defecto de varias distribuciones Linux, este archivo se verá a algo como lo siguiente:

#> cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Las primeras cuatro líneas son variables que indican lo siguiente:

SHELL es el 'shell' bajo el cual se ejecuta el cron. Si no se especifica, se tomará por defecto el indicado en la línea /etc/passwd correspondiente al usuario que este ejecutando cron.

PATH contiene o indica la ruta a los directorios en los cuales cron buscará el comando a ejecutar. Este path es distinto al path global del sistema o del usuario.

MAIL TO es a quien se le envía la salida del comando (si es que este tiene alguna salida). Cron enviará un correo a quien se especifique en este variable, es decir, debe ser un usuario válido del sistema o de algún otro sistema. Si no se especifica, entonces cron enviará el correo al usuario propietario del comando que se ejecuta.

HOME es el directorio raíz o principal del comando cron, si no se indica entonces, la raíz será la que se indique en el archivo /etc/passwd correspondiente al usuario que ejecuta cron.

Los comentarios se indican con # al inicio de la línea.

Después de lo anterior vienen las líneas que ejecutan las tareas programadas propiamente. No hay límites de cuantas tareas pueda haber, una por renglón. Los campos (son 7) que forman estas líneas están formados de la siguiente manera:

Minuto Hora DiaDelMes Mes DiaDeLaSemana Usuario Comando
CampoDescripción
MinutoControla el minuto de la hora en que el comando será ejecutado, este valor debe de estar entre 0 y 59.
HoraControla la hora en que el comando será ejecutado, se especifica en un formato de 24 horas, los valores deben estar entre 0 y 23, 0 es medianoche.
Día del MesDía del mes en que se quiere ejecutar el comando. Por ejemplo se indicaría 20, para ejecutar el comando el día 20 del mes.
MesMes en que el comando se ejecutará, puede ser indicado numéricamente (1-12), o por el nombre del mes en inglés, solo las tres primeras letras.
Día de la semanaDía en la semana en que se ejecutará el comando, puede ser numérico (0-7) o por el nombre del día en inglés, solo las tres primeras letras. (0 y 7 = domingo)
UsuarioUsuario que ejecuta el comando.
ComandoComando, script o programa que se desea ejecutar. Este campo puede contener múltiples palabras y espacios.

Un asterisco * como valor en los primeros cinco campos, indicará inicio-fin del campo, es decir todo. Un * en el campo de minuto indicará todos los minutos.

Para entender bien esto de los primeros 5 campos y el asterisco usaré mejor varios ejemplos:

EjemploDescripción
01 * * * *Se ejecuta al minuto 1 de cada hora de todos los días
15 8 * * * A las 8:15 a.m. de cada día
15 20 * * *A las 8:15 p.m. de cada día
00 5 * * 0A las 5 a.m. todos los domingos
* 5 * * SunCada minuto de 5:00a.m. a 5:59a.m. todos los domingos
45 19 1 * *A las 7:45 p.m. del primero de cada mes
01 * 20 7 *Al minuto 1 de cada hora del 20 de julio
10 1 * 12 1A la 1:10 a.m. todos los lunes de diciembre
00 12 16 * WenAl mediodía de los días 16 de cada mes y que sea Miércoles
30 9 20 7 4A las 9:30 a.m. del dia 20 de julio y que sea jueves
30 9 20 7 *A las 9:30 a.m. del dia 20 de julio sin importar el día de la semana
20 * * * 6Al minuto 20 de cada hora de los sábados
20 * * 1 6Al minuto 20 de cada hora de los sábados de enero

También es posible especificar listas en los campos. Las listas pueden estar en la forma de 1,2,3,4 o en la forma de 1-4 que sería lo mismo. Cron, de igual manera soporta incrementos en las listas, que se indican de la siguiente manera:

Valor o lista/incremento
De nuevo, es más fácil entender las listas e incrementos con ejemplos:
EjemploDescripción
59 11 * 1-3 1,2,3,4,5A las 11:59 a.m. de lunes a viernes, de enero a marzo
45 * 10-25 * 6-7Al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea sábado o domingo
10,30,50 * * * 1,3,5En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes
*/15 10-14 * * *Cada quince minutos de las 10:00a.m. a las 2:00p.m.
* 12 1-10/2 2,8 *Todos los minutos de las 12 del día, en los días 1,3,5,7 y 9 de febrero a agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1)
0 */5 1-10,15,20-23 * 3Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea miércoles
3/3 2/4 2 2 2Cada 3 minutos empezando por el minuto 3 (3,6,9, etc.) de las horas 2,6,10, etc (cada 4 horas empezando en la hora 2) del día 2 de febrero y que sea martes

Como se puede apreciar en el último ejemplo la tarea cron que estuviera asignada a ese renglón con esos datos, solo se ejecutaría si se cumple con los 5 campos (AND). Es decir, para que la tarea se ejecute tiene que ser un martes 2 de febrero a las 02:03. Siempre es un AND booleano que solo resulta verdadero si los 5 campos son ciertos en el minuto específico.

El caso anterior deja claro entonces que:

El programa cron se invoca cada minuto y ejecuta las tareas que sus campos se cumplan en ese preciso minuto.

Incluyendo el campo del usuario y el comando, los renglones de crontab podrían quedar entonces de la siguiente manera:

0 22 * * * root /usr/respaldodiario.sh
0 23 * * 5 root /usr/respaldosemanal.sh
0 8,20 * * * sergio mail -s "sistema funcionando" sgd@ejemplo.com

Las dos primeras líneas las ejecuta el usuario root y la primera ejecuta a las 10 de la noche de todos los días el script que genera un respaldo diario. La seguna ejecuta a las 11 de la noche de todos los viernes un script que genera un respaldo semana. La tercera línea la ejecuta el usuario sergio y se ejecutaría a las 8 de la mañana y 8 de la noche de todos los día y el comando es enviar un correo a la cuenta sgd@ejemplo.com con el asunto "sistema funcionando", una manera de que un administrador este enterado de que un sistema remoto esta activo en las horas indicadas, sino recibe un correo en esas horas, algo anda mal.

Siendo root, es posible entonces, modificar directamente crontab:

#> vi /etc/crontab
Ejecutando Cron con múltiples usuarios, comando crontab

Linux es un sistema multiusuario y cron es de las aplicaciones que soporta el trabajo con varios usuarios a la vez. Cada usuario puede tener su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab del usuario root, aunque no hay problema que se incluyan otros usuarios, y de ahí el sexto campo que indica precisamente quien es el usuario que ejecuta la tarea y es obligatorio en /etc/crontab.

Pero cuando los usuarios normales (e incluso root) desean generar su propio archivo de crontab, entonces utilizaremos el comando crontab.

En el directorio /var/spool/cron (puede variar según la distribución), se genera un archivo cron para cada usuario, este archivo aunque es de texto, no debe editarse directamente.

Se tiene entonces, dos situaciones, generar directamente el archivo crontab con el comando:

$> crontab -e
Con lo cual se abrira el editor por default (generalemente vi) con el archivo llamado crontab vacio y donde el usuario ingresará su tabla de tareas y que se guardará automáticamente como /var/spool/cron/usuario.

El otro caso es que el usuario edite un archivo de texto normal con las entradas de las tareas y como ejemplo lo nombre 'mi_cron', después el comando $> crontab mi_cron se encargará de establecerlo como su archivo cron del usuario en /var/spool/cron/usuario:

$> vi mi_cron
# borra archivos de carpeta compartida
0 20 * * * rm -f /home/sergio/compartidos/*
# ejecuta un script que realiza un respaldo de la carpeta documentos el primer día de
cada mes
0 22 1 * * /home/sergio/respaldomensual.sh
# cada 5 horas de lun a vie, se asegura que los permisos sean los correctos en mi home
1 *5 * * * 1-5 chmod -R 640 /home/sergio/*
:wq (se guarda el archivo)
$> ls
mi_cron
$> crontab mi_cron
(se establece en /var/spool/cron/usuario)

Resumiendo lo anterior y considerando otras opciones de crontab:

$> crontab archivo.cron (establecerá el archivo.cron como el crontab del usuario)
$> crontab -e (abrirá el editor preestablecido donde se podrá crear o
editar el archivo crontab)

$> crontab -l (lista el crontab actual del usuario, sus tareas de cron)
$> crontab -r (elimina el crontab actual del usuario)

En algunas distribuciones cuando se editan crontabs de usuarios normales es necesario reiniciar el servicio para que se puedan releer los archivos de crontab en /var/spool/cron.

#> service crond restart

Para entender mejor como iniciar/detener/reiniciar servicios, en este artículo encontrarás más información.

Controlando el acceso a cron

Cron permite controlar que usuarios pueden o no pueden usar los servicios de cron. Esto se logra de una manera muy sencilla a través de los siguientes archivos:

  • /etc/cron.allow
  • /etc/cron.deny

Para impedir que un usuario utilice cron o mejor dicho el comando crontab, basta con agregar su nombre de usuario al archivo /etc/cron.deny, para permitirle su uso entonces sería agregar su nombre de usuario en /etc/cron.allow, si por alguna razón se desea negar el uso de cron a todos los usuarios, entonces se puede escribir la palabra ALL al inicio de cron.deny y con eso bastaría.

#> echo ALL >>/etc/cron.deny
o para agregar un usuario mas a cron.allow
#> echo juan >>/etc/cron.allow

Si no existe el archivo cron.allow ni el archivo cron.deny, en teoría el uso de cron esta entonces sin restricciones de usuario. Si se añaden nombres de usuarios en cron.allow, sin crear un archivo cron.deny, tendrá el mismo efecto que haberlo creado con la palabra ALL. Esto quiere decir que una vez creado cron.allow con un solo usuario, siempre se tendrán que especificar los demás usuarios que se quiere usen cron, en este archivo.

Fuente: http://www.linuxtotal.com.mx/index.php?cont=info_admon_006

Software para particionar tu disco duro en Linux

Gparted Logo

En Linux existen diferentes maneras de realizar particiones en tu disco duro, aunque los programas estrella no sean más que interfaces de uno solo: parted.

Para los puristas de KDE hay que decir que existió un particionar específico para KDE, el llamado KParted, pero parece ser que éste cayó en el olvido.

Así que nos queda, que no es poco, qtparted, que como su propio nombre indica utiliza librerías qt. Qtparted es un particionar sencillo, fácil de manejar y que se instala desde repositorio. Tiene un grave problema: hace mucho tiempo que no se actualiza (2005) con lo que le auguro un futuro tan oscuro como Kparted.

QT-parted

La verdadera estrella entre los particionadores de Linux es GParted, que como su inicial indica es propia de Gnome pero que funciona perfectamente en KDE. Su aspecto es prácticamente igual a qtparted pero tiene muchas más funciones, manteniendo siempre la sencillez como bandera.

Gparted

Además, dispone de un LiveCD (y Live USB) utilísimo para poder utilizar Gparted como herramienta antes de instalar un Sistema operativo, como veremos en próximos artículos.

Algunas distribuciones, como Ubuntu, ofrecen GParted como utilidad dentro de su LiveCD con lo que si aprendemos a utilizar dicho programa podemos particionar correctamente nuestros discos para disponer de dos o más sistemas operativos en nuestros PC o a tener la información mejor organizada.

Fuente: http://www.kdeblog.com/software-para-particionar-tu-disco-duro-en-linux.html

Por qué no es necesario desfragmentar en Linux

| 0 comentarios

Este articulo no es mio, pero me parecio interesante ponerlo.

Es una pregunta que sale con bastante frecuencia, ¿porqué no es necesario desgragmentar en Linux? Aqui va la traducción de este artículo para los lectores que tienen dificultades con el inglés. En lugar de intentar explicarlo con términos muy técnicos, he optado por un cuadro de ASCII dado que una imagen vale más que mil palabras. Aquí está el cuadro que utilizaré para explicarlo:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Esto es una representación (muy pequeña) de un disco duro, completamente vacío – por eso a ceros. El a-z en la parte superior y en el lado izquierdo del cuadro son utilizados para localizar cada byte individual de datos: el izquierdo superior es aa, superior derecho za y el último de la izquierda es az. Estoy seguro van cogiendo la idea…

Empezaremos con un sistema de ficheros muy sencillo de una clase que seguro están muy familiarizados: uno que necesita defragmentar ocasionalmente. Desde que los usuarios tanto de Windows como de Linux usan sistemas de ficheros FAT, aunque sea para discos flash USB, es un sistema de ficheros importante, aunque desafortunadamente padece de fragmentación.

Añadiremos un archivo a nuestro sistema de ficheros, y nuestro disco duro se parecerá a esto:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(Las filas vacías g-z se han omitido para más claridad)

Para explicar lo que están viendo: las primeras cuatro filas del disco se reservan para una “tabla de contenidos” o TOC. Este TOC almacena la localización de cada fichero en el sistema de ficheros. En el ejemplo anterior, TOC contiene un fichero, denominado “hello.txt”, y nos dice que el contenido de este fichero se puede localizar entre ae y le. Miramos esas posiciones y vemos que el contenido del fichero es “Hello, world”.

¿Todo bien hasta aquí? Añadimos ahora otro fichero:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Como se puede ver, el segundo fichero se ha añadido inmediatamente después del primero. La idea aquí es que si todos los ficheros se guardan juntos, acceder a ellos será más rápido y fácil: la parte lenta del disco duro es la aguja, cuanto menos se tiene que mover, tanto más rápido se podrá leer/escribir.

El problema que esto causa lo podemos ver cuando decidimos editar nuestro primer fichero. Digamos que queremos añadir algún símbolo de exclamación a nuestro “Hello” para que parezca más entusiasta. Entonces tenemos un problema: no hay sitio para nuestro símbolo de exclamación en nuestro sistema de ficheros: el fichero “byte.txt” está en medio. Tenemos solamente dos opciones, ninguna ideal:

  1. Borrar el fichero de su posición original, y añadimos el nuevo y más grande al final del segundo fichero.
  2. Fragmentamos el archivo, de manera que exista en dos sitios pero sin espacios vacíos.

Para ilustrarlo, aqui teneis una aproximación a la primera opción:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a f n f b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 G o o d b y e , _ w o r l d
f H e l l o , _ w o r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0

Y aquí a la segunda:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e a f b f b y e . t x
b t m e z e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Esta es la razón del porqué los sistemas de ficheros FAT necesitan defragmentar regularmente. Todos los ficheros se sitúan justo a la derecha del anterior, así si algún fichero se agranda, se fragmenta. Y si un fichero se reduce, deja un espacio. Pronto el disco duro se convierte en una masa de fragmentos y espacios, y su rendimiento empieza a bajar.
Y luego está Linux. Que tiene una filosofía diferente. Los sistemas de ficheros de windows son ideales si tienen un único usuario, accediendo a los ficheros en más o menos el orden en que son creados, uno detrás de otro. Linux, sin embargo, está pensado como un sistema multi-usuario: está garantizado que tendrás más de un usuario intentando acceder a más de un fichero al mismo tiempo. Así que se usa un enfoque diferente: cuando creamos “hello.txt” en un sistema de ficheros de Linux, se asemeja a lo siguiente:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n s n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Y cuando añadimos el otro fichero:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n s n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n
0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Lo inteliente de este enfoque es que la aguja del disco está en la mitad, y la mayoría de ficheros, por término medio, están bastante cerca: así es como funcionan los promedios después de todo.

Cuando añadimos nuestros símbolos de exclamación a este sistema de ficheros, observad cuantos problemas causa:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n u n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d ! ! 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Correcto: absolutamente ningún problema.

Windows intenta poner todos los ficheros lo más cerca del comienzo del disco, lo que provoca que constantemente se fragmente los ficheros al modificarlos y no hay espacio libre disponible.
Linux esparce ficheros por todo el disco con lo que hay cantidad de espacio libre si el fichero cambia de tamaño. También reordena ficheros al momento, dado que tiene cantidad de espacio vacío para barajar. Defragmentar un sistema de ficheros de Windows es un proceso más intensivo y no muy práctico de ejecutar durante su uso habitual.
De esta forma la fragmentación sólo se convierte en un problema en Linux cuando un disco está tan lleno que no queda ningún espacio para insertar un fichero grande sin tener que partirlo. Mientras el disco está lleno menos del 80 %, es bastante improbable que ocurra.
También vale la pena saber que cuando un sistema operativo nos indica que un disco está completamente defragmentado, a pesar de la naturaleza de la geometría del disco duro, la fragmentación puede seguir presente: un disco duro típico actualmente tiene múltiples discos en su interior.
Pongamos por ejemplo que nuestro disco duro está actualmente en dos platos, el primero de aa a zm y el segundo de an a zz:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   a b c d e f g h i j k l m n o p q r s t u v w x y z
n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

El siguiente fichero sería considerado no-fragmentado, porque va de una fila m a la fila n, pero se ignora el hecho de que la aguja tendrá quemoverse desde el final de un plato al principio del otro para poder leer el fichero:

   a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t r m e n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H e l l o , _ w o
   a b c d e f g h i j k l m n o p q r s t u v w x y z

n r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Espero esto haya ayudado a entender porqué no viene ningún programa de defragmentación en una instalación de Linux.

Fuente: http://ceugenio.wordpress.com/

10 Best Hacking and Security Software Tools for Linux

Linux is a hacker’s dream computer operating system. It supports tons of tools and utilities for cracking passwords, scanning network vulnerabilities, and detecting possible intrusions. I have here a collection of 10 of the best hacking and security software tools for Linux. Please always keep in mind that these tools are not meant to harm, but to protect.

1. John the Ripper

John the Ripper is a free password cracking software tool initially developed for the UNIX operating system. It is one of the most popular password testing/breaking programs as it combines a number of password crackers into one package, autodetects password hash types, and includes a customizable cracker. It can be run against various encrypted password formats including several crypt password hash types most commonly found on various Unix flavors (based on DES, MD5, or Blowfish), Kerberos AFS, and Windows NT/2000/XP/2003 LM hash. Additional modules have extended its ability to include MD4-based password hashes and passwords stored in LDAP, MySQL and others.


2. Nmap

Nmap is my favorite network security scanner. It is used to discover computers and services on a computer network, thus creating a "map" of the network. Just like many simple port scanners, Nmap is capable of discovering passive services on a network despite the fact that such services aren't advertising themselves with a service discovery protocol. In addition Nmap may be able to determine various details about the remote computers. These include operating system, device type, uptime, software product used to run a service, exact version number of that product, presence of some firewall techniques and, on a local area network, even vendor of the remote network card.

Nmap runs on Linux, Microsoft Windows, Solaris, and BSD (including Mac OS X), and also on AmigaOS. Linux is the most popular nmap platform and Windows the second most popular.


3. Nessus

Nessus is a comprehensive vulnerability scanning software. Its goal is to detect potential vulnerabilities on the tested systems such as:

-Vulnerabilities that allow a remote cracker to control or access sensitive data on a system.
-Misconfiguration (e.g. open mail relay, missing patches, etc).
-Default passwords, a few common passwords, and blank/absent passwords on some system accounts. Nessus can also call Hydra (an external tool) to launch a dictionary attack.
-Denials of service against the TCP/IP stack by using mangled packets

Nessus is the world's most popular vulnerability scanner, estimated to be used by over 75,000 organizations worldwide. It took first place in the 2000, 2003, and 2006 security tools survey from SecTools.Org.


4. chkrootkit

chkrootkit (Check Rootkit) is a common Unix-based program intended to help system administrators check their system for known rootkits. It is a shell script using common UNIX/Linux tools like the strings and grep commands to search core system programs for signatures and for comparing a traversal of the /proc filesystem with the output of the ps (process status) command to look for discrepancies.

It can be used from a "rescue disc" (typically a Live CD) or it can optionally use an alternative directory from which to run all of its own commands. These techniques allow chkrootkit to trust the commands upon which it depend a bit more.

There are inherent limitations to the reliability of any program that attempts to detect compromises (such as rootkits and computer viruses). Newer rootkits may specifically attempt to detect and compromise copies of the chkrootkit programs or take other measures to evade detection by them.


5. Wireshark

Wireshark is a free packet sniffer computer application used for network troubleshooting, analysis, software and communications protocol development, and education. In June 2006, the project was renamed from Ethereal due to trademark issues.

The functionality Wireshark provides is very similar to tcpdump, but it has a GUI front-end, and many more information sorting and filtering options. It allows the user to see all traffic being passed over the network (usually an Ethernet network but support is being added for others) by putting the network interface into promiscuous mode.

Wireshark uses the cross-platform GTK+ widget toolkit, and is cross-platform, running on various computer operating systems including Linux, Mac OS X, and Microsoft Windows. Released under the terms of the GNU General Public License, Wireshark is free software.


6. netcat

netcat is a computer networking utility for reading from and writing to network connections on either TCP or UDP.

Netcat was voted the second most useful network security tool in a 2000 poll conducted by insecure.org on the nmap users mailing list. In 2003, it gained fourth place, a position it also held in the 2006 poll.

The original version of netcat is a UNIX program. Its author is known as *Hobbit*. He released version 1.1 in March of 1996.

Netcat is fully POSIX compatible and there exist several implementations, including a rewrite from scratch known as GNU netcat.


7. Kismet

Kismet is a network detector, packet sniffer, and intrusion detection system for 802.11 wireless LANs. Kismet will work with any wireless card which supports raw monitoring mode, and can sniff 802.11a, 802.11b and 802.11g traffic.

Kismet is unlike most other wireless network detectors in that it works passively. This means that without sending any loggable packets, it is able to detect the presence of both wireless access points and wireless clients, and associate them with each other.

Kismet also includes basic wireless IDS features such as detecting active wireless sniffing programs including NetStumbler, as well as a number of wireless network attacks.


8. hping

hping is a free packet generator and analyzer for the TCP/IP protocol. Hping is one of the de facto tools for security auditing and testing of firewalls and networks, and was used to exploit the idle scan scanning technique (also invented by the hping author), and now implemented in the Nmap Security Scanner. The new version of hping, hping3, is scriptable using the Tcl language and implements an engine for string based, human readable description of TCP/IP packets, so that the programmer can write scripts related to low level TCP/IP packet manipulation and analysis in very short time.

Like most tools used in computer security, hping is useful to both system administrators and crackers (or script kiddies).


9. Snort

Snort is a free and open source Network Intrusion prevention system (NIPS) and network intrusion detection (NIDS) capable of performing packet logging and real-time traffic analysis on IP networks.

Snort performs protocol analysis, content searching/matching, and is commonly used to actively block or passively detect a variety of attacks and probes, such as buffer overflows, stealth port scans, web application attacks, SMB probes, and OS fingerprinting attempts, amongst other features. The software is mostly used for intrusion prevention purposes, by dropping attacks as they are taking place. Snort can be combined with other software such as SnortSnarf, sguil, OSSIM, and the Basic Analysis and Security Engine (BASE) to provide a visual representation of intrusion data. With patches for the Snort source from Bleeding Edge Threats, support for packet stream antivirus scanning with ClamAV and network abnormality with SPADE in network layers 3 and 4 is possible with historical observation.


10. tcpdump

tcpdump is a common computer network debugging tool that runs under the command line. It allows the user to intercept and display TCP/IP and other packets being transmitted or received over a network to which the computer is attached.

In some Unix-like operating systems, a user must have superuser privileges to use tcpdump because the packet capturing mechanisms on those systems require elevated privileges. However, the -Z option may be used to drop privileges to a specific unprivileged user after capturing has been set up. In other Unix-like operating systems, the packet capturing mechanism can be configured to allow non-privileged users to use it; if that is done, superuser privileges are not required.

The user may optionally apply a BPF-based filter to limit the number of packets seen by tcpdump; this renders the output more usable on networks with a high volume of traffic.


Do you have a favorite security software tool for Linux? Feel free to comment and tell us about it.

Source: http://www.junauza.com/2008/07/10-best-hacking-and-security-software.html

Nagios 3 en Debian 5 (Monitor Redes Ahora Mas Potentes)

Esta es una instalacion por la via manual, aunque Ya Debian y sus derivados ya tiene un Repositorio incluido para esta instalacion Synaptic Packege Manager de Debian o sus derivados, como Ubuntu, y otros, aunque esta guia se pude correo en cualquier ditro teniendo en cuenta las rutas de los archivos simplemente.

AHORA que es NAGIOS ?:

smalllogo7nagiosNagios es un sistema open source de monitorización de redes ampliamente utilizado, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado. Entre sus características principales figuran la monitorización de servicios de red (SMTP, POP3, HTTP, SNMP…), la monitorización de los recursos de sistemas hardware (carga del procesador, uso de los discos, memoria, estado de los puertos…), independencia de sistemas operativos, posibilidad de monitorización remota mediante túneles SSL cifrados ó SSH, y la posibilidad de programar plugins específicos para nuevos sistemas.

Partimos de una instalación limpia de debian etch con apache2. Lo primero que necesitamos es instalar nuestro entorno de compilación. Hay un paquete en debian con todo lo que necesitas para ello.

apt-get install build-essential

El segundo paso es instalar las librerías necesarias para, posteriormente, compilar nagios. Necesitamos las jpeg, png y gd2. Para las dos primeras no tuve ningún problema en instalar las que vienen con la distribución estable:

apt-get install libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev

Para las gd2 sin embargo me lié un poco ¿necesito las que traen soporte para xpm o las que no?¿es indiferente, tal vez? Cómo no tenía ni idea y no encontré información referente a ello visité la página del proyecto y vi que allí no hacían distinción alguna… Reconozco que lo de los formatos gráficos no es lo mío (ni los de audio, ni los de video, ni…) así que tiré por la calle de enmedio y decidí bajarme los fuentes y compilarlos también:

cd /tmp
wget -c http://www.libgd.org/releases/gd-2.0.35.tar.gz
tar xzf gd-2.0.35.tar.gz
cd gd-2.0.35
./configure
make
make install

Lo siguiente es crear los grupos y usuarios necesarios para nagios:

useradd nagios
passwd nagios
groupadd nagios
groupadd nagcmd
usermod -G nagios nagios
usermod -G nagios josemaria
usermod -G nagcmd nagios
usermod -G nagcmd www-data

Con esto hemos creado un nuevo usuario (nagios), le asignamos una contraseña, creamos dos grupos (nagios y nagcmd). Añadimos nagios a ambos grupos, el usuario www-data (el que usa Apache) al grupo nagcmd y, por comodidad aunque no es indispensable, nuestro usuario común al grupo nagios para que la edición de ficheros de configuración nos resulte maś cómoda.

Ya lo tenemos todo listo. Ahora toca bajarse Nagios, compilarlo e instalarlo. Visita la página oficial para asegurarte de que usas las últimas versiones disponible. Por lo demás, la secuencia usando las versiones actuales es la siguiente:

cd /tmp
wget -c http://tinyurl.com/2jyzao/nagios-3.0a5.tar.gz
wget -c http://tinyurl.com/2mqzzk/nagios-plugins-1.4.9.tar.gz
tar xzf nagios-3.0a5.tar.gz
cd nagios-3.0a5
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
cd ..
tar xzf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

Creamos una contraseña para el acceso web del usuario nagiosadmin y reiniciamos apache:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
/etc/init.d/apache2 reload

Y por último arrancamos nagios y, si no presenta ningún error, creamos un enlace para que de ahora en adelante arranque de forma automática al iniciar la máquina:

/etc/init.d/nagios start
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Y ya. Con esto nuestro nagios debe de estar totalmente funcional y accesible vía web a través de la URL “http://hostname/nagios”. La configuración por defecto monitoriza algunos servicios en la propia máquina dónde se instala y nos debe de bastar para saber que funciona correctamente. Para sacarle partido debemos de hacer algunas cosillas más que os enumero, aunque con menor detalle, a continuación.

nagiosmap

Configurando Nagios 3x

El primer archivo que tenemos que tocar es /usr/local/nagios/etc/nagios.cfg. En el, entre otras cosas, se dicen los archivos de configuración que nagios tendrá en cuenta. En el apartado correspondiente a los objetos, que es lo único que vamos a tocar, localizamos la entrada correspondiente al fichero activo como ejemplo (linux.cfg). Comentamos la línea correspondiente a este fichero e introducimos una nueva con el archivo cfg que usaremos y que se llamará, por ejemplo, mired.cfg. Editamos el archivo nagios.cfg e introducimos los siguientes cambios (en negritas):

# Definitions for monitoring the local (Linux) host
# cfg_file=/usr/local/nagios/etc/objects/linux.cfg

# Definición de nuestra pequeña red local de ejemplo
cfg_file=/usr/local/nagios/etc/objects/mired.cfg

La red que vamos a definir como ejemplo constará de dos servidores windows, dos linux (uno de ellos el propio que alberga a Nagios), un router que nos da salida a Internet y un switch al que están conectados todos ellos. Vamos a crear el archivo mired.cfg en el directorio especificado y en el incluiremos la definición de estos objetos:

define host{
use linux-server
host_name nagios
alias Nagios Server
address 127.0.0.1
}

define host{
use generic-switch
host_name switch#1
alias Switch
address 192.168.0.2
parents nagios
}

define host{
use generic-switch
host_name router#1
alias Router ADSL
address 192.168.0.1
parents switch#1
}

define host{
use linux-server
host_name intranet
alias Servidor Linux
address 192.168.0.3
parents switch#1
}

define host{
use windows-server
host_name windows#1
alias Servidor principal del dominio
address 192.168.0.4
parents switch#1
}

define host{
use windows-server
host_name windows#2
alias Servidor secundario del dominio
address 192.168.0.5
parents switch#1
}

Como podeis ver las definiciones son bien sencillas. Esta simpleza deriva de que Nagios usa una estructura jerárquica en la que cada objeto hereda las características definidas previamente en las plantillas que está usando. La declaración de estas plantillas se hace en el archivo templates.cfg. Allí podemos ver, por ejemplo, el contenido del objeto linux-server que, a su vez, se deriva de otro denominado generic-host. Por el momento os digo esto sólo por culturilla porque no nos va a hacer falta. Nos basta con saber que tenemos disponibles las siguientes plantillas para empezar a trabajar con ellas:

  • linux-server
  • windows-server
  • generic-printer
  • generic-switch

Otra cosa interesante es la clausula parents mediante la que especificamos las conexiones entre los diferentes hosts. Como veis la única máquina a la que no le hemos asignado un padre es a la que tiene Nagios instalado. Pensad que esa máquina será el corazón de nuestra red de monitorización porque es desde ella desde donde se ejecutaran todos los comandos.

Aunque aquí no aparece ninguna, una máquina puede tener más de un host como padre (imaginaos una estructura de switches con conexiones redundantes entre ellos). Para ello basta con especificar los nombres de todos los padres que consideremos necesarios separados por comas.

A continuación y en el mismo fichero añadiremos las definiciones necesarias para crear grupos y organizar nuestros objetos y para monitorizar un primer servicio común a todos ellos: el PING

define hostgroup{
hostgroup_name linux-servers
alias Servidores Linux
members nagios, intranet
}

define hostgroup{
hostgroup_name windows-servers
alias Servidores Windows
members windows#1, windows#2
}

define hostgroup{
hostgroup_name switches
alias Electrónica de red
members switch#1, router#1
}

define service{
use generic-service
host_name nagios, intranet, switch#1, router#1, windows#1, windows#2
service_description PING
check_command check_ping!200.0,20%!600.0,60%
normal_check_interval 5
retry_check_interval 1
}

La definición de los grupos es autoexplicativa ¿verdad? Luego nos serviran para organizar las vistas adecuadamente. Y desde luego que esta clasificación no es obligatoria. Podeis crear grupos en función del entorno donde estén las máquinas (desarrollo, preproducción, producción), la localización geográfica, el color de la carcasa… a vuestro rollo, vamos.

Para los servicios quizás sea necesario contar algunas cosas más. Como podemos ver el servicio que hemos definido también deriva de un objeto denomimado generic-service y que también se encuentra en el archivo templates.cfg. Podemos echarle allí un vistazo a esa definición pero por el momento no conviene que os despisteis y lo más interesante es la linea etiquetada como check_command que es donde realmente invocamos al comando que se va a encargar de monitorizar el servicio con una curiosa estructura de argumentos separados mediante signos de exclamación. Para comprender lo que estamos haciendo realmente tenemos que echar mano del fichero commands.cfg. Alli buscamos la definición del comando check_ping:

# ‘check_ping’ command definition
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

$USER1$ es una variable que apunta al directorio donde se encuentran los plugins (/usr/lib/nagios/plugins/) y $HOSTADDRESS$ es la IP del host que estamos monitorizando. Los argumentos que invocamos separados por signos de exclamación se sustituyen aquí por los $ARG1$ y $ARG2$. Es decir, cuando Nagios lanza esta comprobación para, por ejemplo, la máquina que aloja nuestra intranet está ejecutando lo siguiente:

/usr/lib/nagios/plugins/check_ping -H 192.168.0.3 -w 200.0,20% -c 600.0,60% -p 5

No creo que por el momento merezca la pena meterse en muchas interioridades pero básicamente lo que hacemos (y esto es común para casi todos los scripts que monitorizan servicios en Nagios) es pasar un umbral que consideraremos como warning y otro como critical (-w y -c respectivamente). Si te interesa saber más sobre lo que realmente estás haciendo basta con que ejecutes el comando con un -h.

Conocer como funcionan realmente los comandos de nagios es muy importante porque cuando empecemos a desarrollar nuestros propios scripts o queramos modificar los que vienen por defecto lo mejor es ejecutarlos directamente desde línea de comando y comprobar la salida que dan hasta que estemos satisfechos.

Y, si os parece, lo dejamos aquí por el momento. En la próxima entrega añadiremos algunos servicios más y adornaremos con iconos apropiados el mapa de nuestro sistema.

nagios-1

Ahora vamos a empezar por ponerlo bonito. Lo primero que necesitamos son logotipos. En el apartado correspondiente de Nagios Exchange tenemos varias colecciones para elegir. Yo uso habitualmente dos de ellas: Base Images para los ordenadores y Cook Images para la electrónica de red. Los descargamos, los descomprimimos y los copiamos en el directorio /usr/local/nagios/share/images/logos. Cada icono suele venir en cuatro formatos diferentes: gif, jpg, png y gd2.

Ahora tenemos que indicar en las definiciones de nuestros hosts los iconos que queremos usar para representarlos. Como ya os he dicho en otras ocasiones soy un poco torpe para los formatos así que suelo hacer caso a las recomendaciones que leí en algún momento (no recuerdo donde) y escojo el .gif como icono general y el .gd2 para el mapa de estado. No voy a poneros de nuevo la definición de todos los hosts con las líneas que hay que incluir para ello. La sintaxis es tan simple que, creo, basta con uno como ejemplo (lo añadido en negrita):

define host{
use linux-server
host_name nagios
alias Nagios Server
icon_image debian.gif
statusmap_image debian.gd2

address 127.0.0.1
}

Los iconos elegidos para el resto de los hosts han sido network_switch.gif, router.gif, linux40.gif, win40.gif y sus respectivos .gd2 para el mapa de estado. Reiniciamos el servicio y ahora ya se ve mejor ¿verdad?

nagios-mejor

Añadamos ahora algunos sevicios adicionales. Para ello vamos a volver a echarle un vistazo al fichero /usr/local/nagios/etc/objects/commands.cfg. En el apartado SAMPLE SERVICE CHECK COMMANDS tenemos los que vienen preconfigurados y listos para usar pero ojo con algunos de ellos: los que comienzan con check_local sólo sirven para monitorizar servicios en la propia máquina en la que está instalado nagios. Advertido esto, vamos a añadir los siguientes servicios:

  • Número de usuarios, número de procesos y carga de cpu para la máquina que alberga a nagios.
  • Servicios SSH y HTTP en ambas máquinas con Linux.
  • Servicios SMTP y POP3 en la máquina que alberga la intranet y que, para este ejemplo, también hace las veces de servidor de correo.
  • Servicio DHCP en el servidor secundario de dominio de windows.

Para ello añadimos lo siguiente al final de nuestro fichero mired.cfg y volvemos a reiniciar el servicio que ejecuta nagios:

define service{
use generic-service
host_name nagios
service_description Current Users
check_command check_local_users!20!50
}

define service{
use generic-service
host_name nagios
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
}

define service{
use generic-service
host_name nagios
service_description Current Load
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}

define service{
use generic-service
host_name nagios, intranet
service_description SSH
check_command check_ssh
}

define service{
use generic-service
host_name nagios, intranet
service_description HTTP
check_command check_http
}

define service{
use generic-service
host_name intranet
service_description SMTP Response Check
check_command check_smtp!-t 5 -e “midominio.es”
}

define service{
use generic-service
host_name intranet
service_description POP3 Response Check
check_command check_pop!-t 5 -e “midominio.es”
}

define service{
use generic-service
host_name windows#2
service_description DHCP
check_command check_dhcp
}

La única personalización que requiere para adecuarlo a vuestra red es cambiar “midominio.es” en los servicios SMTP y POP3 por los que maneje vuestro servidor de correo.

Ahora la vista del grid de servicios de nuestra red queda bastante mejor (notad que he bajado a propósito el servicio POP3 de la máquina correspondiente para que no todo parezca tan idílico):

nagios-servicios

¿Sigue diciendo alguien por ahí que la configuración de nagios es complicada?

Y aquí lo dejamos por hoy. En la próxima entrega veremos como añadir nuevos servicios a los que vienen por defecto en el fichero commands.cfg

Fuente: http://blogs.clavedigital.com/ncastillo/2009/07/14/nagios-3-en-debian-5-monitor-redes-ahora-mas-potentes/

Red Hat invierte más de $100 millones al año para impulsar a Linux

http://itvoir.com/portal/boxx/modules/blogs/Piczoom.asp?type=blog&id=5686

Y no se podía esperar menos, ya que Red Hat es la compañía que más aporta al kernel Linux con un 12.3% y ha mantenido su negocio exitosamente alrededor de este sistema y el código abierto.

En una entrevista para la BBC, Matthew Szulik, presidente de Red Hat, habla sobre el aporte que hace la compañía cada año para impulsar el sistema Linux y proyectos de código abierto con más de $100 millones, por supuesto, esta inversión forma parte del negocio productivo que mantiene con sus servicios basados en Red Hat Enterprise y otras soluciones libres.

La crisis mundial para Red Hat le ha traído mejores oportunidades; en los informes financieros recientes ha aumentado sus ganancias con respecto a los ciclos iguales en los años anteriores, parte de estos resultados es por la preferencia de las empresas por soluciones libres a bajo costo, de las cuales Red Hat está proporcionando satisfactoriamente..

Red Hat ha encontrado su nicho de mercado, y lo está aprovechando muy bien. Años atrás estaba ofreciendo conjuntamente su distribución Red Hat Linux de manera gratuita, para la comunidad, enfocada al escritorio. También ofrecía Red Hat Enterprise Linux para los negocios y las empresas. Al final, termino por dejar de producir Red Hat Linux para enfocarse completamente a ofrecer servicios de clase empresarial. No obstante, apoya al proyecto Fedora como una secuela del desaparecido Red Hat Linux, en donde la compañía aprovecha para hacer algunas pruebas de nuevas características para su distribución estrella.

Otra de las compañías que está apostando fuerte por el código abierto es Google, basando sus productos en el kernel Linux, y aplicaciones libres, reflajadas en Android, el navegador Chrome, el nuevo sistema Chrome OS y muchas más, por lo que se dice que la inversión que hace al año para seguir con este modelo es todavía mucho más que la que hace Red Hat.

Fuente: http://www.espaciolinux.com/2009/08/red-hat-invierte-mas-100-millones-ano-para-impulsar-linux/

How To: Manual Network Configuration without the need for Network Manager

In setting up their wireless connection for the first time, Im discovering many individuals having problems connecting through Network Manager or other GUI wireless connection tools. In fact my Network Manager is intermittently buggy, connecting sometimes and not others. This guide benefits all users in case the GUI tools are not working, and is useful for testing a wireless connection during initial installation of wireless drivers since it provides for good debugging output.

Clarification to those about to read this Guide
1. This method provides the most low level method to establish your network connection. It is the least common denominator. It does not use any reference to the /etc/network/interfaces file, as this file requires a method that is more high level.
2. If you are interested in making modifications to your /etc/network/interfaces guide to establish your connection, possibly Weiman01's guide covering this topic would be more applicable to your situation: http://ubuntuforums.org/showthread.php?t=318539. This method however uses processes that are more high level. If editing or use of the /etc/network/interfaces file fails, I would recommend reading the guide provided below, as it is "lower level".

Unencrypted/ WEP / WPA (PSK and EAP-TLS) connections will be covered in this guide.
This guide is for anyone attempting to establish a network connection manually at the command line.

Pre-requisites
1. Properly installed network driver -- This guide can be used to troubleshoot driver installation to see if it is properly functioning
2. The ESSID of your router must be broadcasted and not hidden
3. Knowlege of your wireless cards driver (please see Prerequisite #4 to determine driver). Those using the r8187/r818x driver please see the end of the guide
4. Knowledge of your wireless card's Interface Name - The user must know the proper interface of the wireless connection (wlan0, eth1, rausb1, etc). To discover this information, at command line type:

Code:
lshw -C network
There may be multiple interfaces listed, however look under the section appropriate to your wireless device for the line labeled logical name. Here is an example:

Code:
  *-network             
description: Wireless interface
product: BCM4306 802.11b/g Wireless LAN Controller
vendor: Broadcom Corporation
physical id: 0
bus info: pci@06:00.0
logical name: wlan0
version: 03
serial: 00:12:17:35:17:10
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ndiswrapper+lsbcmnds driverversion=1.48rc1+Cisco-Linksys ,LLC.,02/1 ip=192.168.1.101 latency=64 multicast=yes wireless=IEEE 802.11g
resources: iomemory:3c000000-3c001fff irq:11
In the example above the interface name is wlan0. I will refer to the interface name throughout the rest of this guide as .

Attention All Users: Please Read
****All users of Atheros or Intel Chipsets (ipw****) -- Although lshw may list your interface as wmaster0 or wifi0 -- PLEASE NOTE this refers to the actual assigned interface name to the device, HOWEVER you interact through an assigned VIRTUAL INTERFACE!!!. Your will NEVER USE wmaster0 or wifi0 as the device name. If you type iwconfig, this may give you information on the assigned virtual interface used to access the physical device. -- BOTTOM LINE -- You will never use wmaster0 or wifi0 as the interface name, rather some other interface such as wlan0 of eth1. Please check ifconfig or iwconfig for cross referencing!!


***Please note -- as there exist exceptions to every rule, an exception applies to Atheros chipset employing the madwifi kernel module. Atheros cards are typically identified as wifi0. This is the physical logical name of the device. When working with madwif modules however, one or more virtual interfaces are made for every actual device. All configurations must be completed using the virutal interface device rather than the actual interface to the device. In most cases, Atheros chipsets will need to use the ath0 interface rather than the wifi0 interface.

For people first setting up their connection, please note that the above also lists the driver used for the network card. In the example above, the driver used is ndiswrapper. If your network device comes back UNCLAIMED or there is no driver listed, then you have not correctly installed the driver for your device. You must review the procedures for installation of your wireless driver.

For those wanting to use static IP addresses, please see section at bottom of guide regarding configuration for static IP addresses

__________________________________________________ __________________________
Unencrypted Connection

All commands typed at the command line:
Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig mode Managed
sudo dhclient
__________________________________________________ __________________________
WEP Connection

You must have either your 64bit or 128 bit HEX Key or the ASCII Equivalent of your HEX Key.

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig key HEX_KEY <<<-------- If using ASCII Equivalent, this is s:ASCII_KEY (please make note of the prefix s:) ****Additional Comand that may be needed -- sudo iwconfig key open <<<----See note below sudo iwconfig mode Managed
sudo dhclient
***The security mode may be open or restricted, and its meaning depends on the card used. With most cards, in open mode no authentication is used and the card may also accept non-encrypted sessions, whereas in restricted mode only encrypted sessions are accepted and the card will use authentication if available.
__________________________________________________ __________________________
WPA Connection - WPA-PSK or WPA2-PSK (PSK=Pre-Shared Key) or WPA-EAP-TLS

For uses of Ra-based chipsets: rt61, rt73, rt2500 please skip directly to the WPA Section entitled WPA with Ra based chipsets

Requirements: In most cases the wpa_supplicant package is required in order to connect via WPA. If you have a working ethernet or unencrypted/WEP wireless connection, this package may be installed via:
Code:
sudo aptitude install wpasupplicant
If only wireless is available, I would recommend that an unencrypted connection first by established and tested first before directly proceeding to make a WPA connection. WPA adds another layer of complexity.

WPA-PSK - Covers WPA(1) and WPA(2)

1. Creation of /etc/wpa_supplicant.conf file

At command line:
Code:
gksu gedit /etc/wpa_supplicant.conf
Inside the file add the following for WPA(1):

Code:
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
scan_ssid=0
proto=WPA
key_mgmt=WPA-PSK
psk="ASCII PSK Password in Quotes"
pairwise=TKIP
group=TKIP
}
For WPA(2) (see this thread: http://ubuntuforums.org/showthread.php?t=607410):
Code:
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="ESSID_IN_QUOTES"
psk="ASCII PSK Password in Quotes"
key_mgmt=WPA-PSK
proto=RSN WPA
pairwise=CCMP TKIP
group=CCMP TKIP
}
***Word of caution -- In some cases I have found WPA(2) to have different settings than the above. Some Broadcom cards use the pairwise/group TKIP cipher for WPA2 rather than CCMP. I would suggest all initially use WPA(1) and then later convert to WPA2 since some variations to the above may be needed

**WPA2 capabilities must also be built-into the driver set used with your hardware. If using ndiswrapper with an old windows driver, the driver may not contain code for wpa2.

2. Connect via command line
Code:
sudo ifconfig  down
sudo dhclient -r
sudo wpa_supplicant -D<****see footer below***> -i -c/etc/wpa_supplicant.conf -dd

***Note that starting with the -dd flag will create a lot of debuggin output.
If you choose to use the -dd flag to troubleshoot your connection, you must
open up a separate terminal and type the rest of the commands listed below in a
separate terminal window. You can also replace the -dd flag with the -B flag to
send the process to the background, avoiding the need to open up a separate
terminal window (however no debugging output will be generated)

sudo dhclient
***footer
The value listed here is dependent on the driver you have installed. Typing man wpa_supplicant at command line will give you the full gamut of choices however most recent versions of wpa_supplicant only recognize wext as the appropriate value (Despite all the information on the internet). If you would like to verify what drivers besides wext your installed version of wpa_supplicant recognizes, type at the command line:
wpa_supplicant -l
And look specifically at the section called drivers:

Here is what my stock wpa_supplicant lists for its drivers:

drivers:
wext = Linux wireless extensions (generic)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = wpa_supplicant wired Ethernet driver

Other drivers can be compiled into wpa_supplicant if you compile wpa_supplicant, however please not that in recent kernel versions this is unnecessary. wext will work for ndiswrapper, madwifi, intel, etc.

WPA-PSK with Ra Based Chipsets

Ra cards do not require the wpa_supplicant package to use WPA. Here is how to connect from the command line with these cards:
References: http://ubuntuforums.org/showthread.p...=serial+monkey, http://rt2x00.serialmonkey.com/wiki/...owto#Using_WPA

WPA-PSK(1)
Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwpriv set AuthMode=WPAPSK
sudo iwpriv set EncrypType=TKIP
sudo iwpriv set WPAPSK="YOUR_WPA_PSK_KEY"
sudo dhclient
For WPA-PSK(2), I have no working configuration yet. If someone would like to help me refine these instructions for WPA2 with Ra-based chipsets, I would appreciate your help!

WPA EAP-TLS
Information Provided Referenced from http://www.codealias.info/technotes/...x_client_setup
Thanks to CodeAlias for Providing Information

1. Prepare TLS Certificates

EAP-TLS requires client TLS certificates to be installed in the system. You need to ask the administrators in your institution to provide you your own TLS certificate.

In the most common cases, your admin will issue you a .p12 file and a password.

We need to create three files from this .p12 certificate

These files are cacert.pem, cert.pem and key.pem (The names may vary). Assuming that your certificate file name is example.p12, run the following :
Code:
 openssl pkcs12  -in example.p12  -out cacert.pem -cacerts -nokeys
openssl pkcs12 -in example.p12 -out cert.pem -clcerts -nokeys
openssl pkcs12 -in example.p12 -out key.pem -nocerts
Put the three generated files somewhere in the file system of your wireless device (e.g /etc/certs)

2. Configuration of the wpa_supplicant.conf file

Edit the wpa_supplicant configuration file (e.g. /etc/wpa_supplicant.conf), ant put the following:

Code:
  network={
ssid="ESSID_IN_QUOTES"
scan_ssid=1
key_mgmt=WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
eap=TLS
identity="XXXXX@yourdomain.com"
ca_cert="/etc/certs/cacert.pem"
client_cert="/etc/certs/cert.pem"
private_key="/etc/certs/key.pem"
private_key_passwd="YOUR-PASSWORD"
}
---“YOUR-PASSWORD” is the password provided by your administrator when your received your .p12 certificate

3. Connect via the command line
Code:
sudo ifconfig  down
sudo dhclient -r
sudo wpa_supplicant -D<****see footer below***> -i -c/etc/wpa_supplicant.conf -dd

***Note that starting with the -dd flag will create a lot of debuggin output.
If you choose to use the -dd flag to troubleshoot your connection, you must
open up a separate terminal and type the rest of the commands listed below in a
separate terminal window. You can also replace the -dd flag with the -B flag to
send the process to the background, avoiding the need to open up a separate
terminal window (however no debugging output will be generated)

sudo dhclient
***footer
The value listed here is dependent on the driver you have installed. Typing man wpa_supplicant at command line will give you the full gamut of choices however most recent versions of wpa_supplicant only recognize wext as the appropriate value (Despite all the information on the internet). If you would like to verify what drivers besides wext your installed version of wpa_supplicant recognizes, type at the command line:
wpa_supplicant -l
And look specifically at the section called drivers:

Here is what my stock wpa_supplicant lists for its drivers:

drivers:
wext = Linux wireless extensions (generic)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = wpa_supplicant wired Ethernet driver

Other drivers can be compiled into wpa_supplicant if you compile wpa_supplicant, however please not that in recent kernel versions this is unnecessary. wext will work for ndiswrapper, madwifi, intel, etc.
__________________________________________________ __________________________
A successful connection in all cases will similarly result in: (Example Provided Below):
Code:
user@computer:~$ sudo dhclient wlan0
There is already a pid file /var/run/dhclient.pid with pid 134993416
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/wlan0/00:12:17:35:17:10
Sending on LPF/wlan0/00:12:17:35:17:10
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.101 -- renewal in 299133 seconds.
The computer in this example has received an IP address of 192.168.1.101

__________________________________________________ __________________________
Users of RTL 8180, RTL8185, RTL 8187 using the built in native r8187 / r818x drivers

By default the r8187 and r818x drivers are blacklisted due to a know bug. These drivers are usuable however with a twist to the above methods

If you want to try using these drivers, please load the kernel modules:
Code:
sudo modprobe r818x
sudo modprobe r8187
These drivers require a bogus or extra letter be suffixed to the essid name in order for these drivers to work
For example if your are trying to connect to a router with essid=Router, at he command line you would type essid=Routerx. Notice the extra x or bogus character. I have provided an example using the unencrypted connection procedure below, however this extra character needs to be used if attempting to connect to all network types (unencrypted/ WEP / WPA)

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig up
sudo iwconfig essid "Routerx"
sudo iwconfig mode Managed
sudo dhclient
If these drivers work for you, and you would like these drivers to load automatically at startup for you, avoiding to have to type sudo modprobe everytime, please edit your blacklist file:

Code:
gksu gedit /etc/modprobe.d/blacklist
And comment out (or prefix the following lines with a # sign). You want the following lines to appear as below:
Code:
#blacklist r8187
#blacklist r818x

__________________________________________________ __________________________
Static IP Addresses

Im going to give an example of how to configure your interface using a static IP address using an unencrypted wireless connection. The two lines highlighted below however can be used with WEP and WPA connections. Values in italics must be customized to meet your particular situation

Code:
sudo ifconfig  down
sudo dhclient -r
sudo ifconfig 192.168.1.100 netmask 255.255.255.0 up
sudo route add default gw 192.168.1.1

sudo iwconfig essid "ESSID_IN_QUOTES"
sudo iwconfig mode Managed
If when using static IP addresses you are getting a problem with name resolution, you will have to specifiy specific dns (domain name servers) in order to translate URLs to IP addresses. Unfortunately there is not an easy way to configure this from the command line. This requires that you edit the /etc/resolv.conf file and manually enter the domain name server(s) you want to use. In many cases users can specifiy their router, their internet service providers dns servers, or use opendns (or use all three). Up to three nameservers can be specified.

Code:
sudo gedit /etc/resolv.conf
and add the nameservers you want to use, one to a line, in the following format.
Code:
nameserver 
***Spaceboy909 has also reported that when using this technique with static IP addresses, network manager has to be uninstalled because it keeps trying to reset the connection. In order to uninstall networkmanager:

In Ubuntu:
Code:
sudo aptitude uninstall network-manager-gnome
In Kbuntu:
Code:
sudo aptitude uninstall knetworkmanager
__________________________________________________ _________________________
Setting the Wireless Interface to Connect at Boot ***Courtesy of Maricaibo

If you are successful in bringing up the Interface Manually, the commands may be placed inside the /etc/rc.local file to run the commands at boot, and establish a wireless connection. There is no GUI to give visual confirmation of the connection. The user should type ifconfig at the command line to verify an IP address has indeed been granted by the router.

The process of adding the commands to the /etc/rc.local file is documented below (this connects to an unencrypted network -- to connect to a WEP or WPA encrypted network, some modifications as used above will need to be added):

Code:
gksu gedit /etc/rc.local
This opens up the file in the gedit utility and allows you to make changes and save the file

Code:
ifconfig <wired network connection interface> down
ifconfig <wireless network connection interface> down
dhclient -r
iwconfig essid
iwconfig mode Managed
ifconfig up
dhclient
Be sure this text goes into the /etc/rc.local file BEFORE the line reading "exit 0".

Save and close the /etc/rc.local file.

Open up a Terminal window (the shell) and type in:

Code:
sudo chmod +x /etc/rc.local
This command turns the rc.local file into an executable that will run at startup. Here's an example of what the /etc/rc.local file should contain. Your device names may be different:

Code:
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

ifconfig eth0 down
ifconfig wlan0 down
dhclient -r wlan0
iwconfig wlan0 essid "ESSID_IN_QUOTES"
iwconfig wlan0 mode Managed
ifconfig wlan0 up
dhclient wlan0

exit 0
NOTE: The first line in the rc.local file downs your wired connection, so if for some reason you need the wired connection back just open up a Terminal window (shell) and type:

sudo up
sudo dhclient
__________________________________________________ __________________________
Useful Commands

ifconfig - lists IP address (similar to ipconfig in Windows)
iwlist scan - shows wireless networks that are available in the area along with basic encryption information
lshw -C network - Shows interface and driver associated with each networking device
lspci -nn - Shows hardware connected to the pci bus
lsusb - Shows USB connected hardware
lshw -C usb - Additional info on USB related hardware (good for USB dongles)
cat /etc/modprobe.d/blacklist - List modules that will not be loaded by the Operating System at boot time
lsmod - lists currently loaded kernel modules. (Example usage - lsmod | grep ndiswrapper)
route -n - Lists kernel IP routing table -- Good for troubleshooting problems with the gateway (netstat -rn = equivalent command)
sudo route add default gw 192.168.1.1 - Example of how to set the default gateway to 192.168.1.1
sudo route del default gw 192.168.1.1 - Example of how to delete the default gateway setting
sudo modprobe ***** - Loads the kernel module **** . (Example usage - sudo modprobe ndiswrapper, sudo modprobe r818x, sudo modprobe ath_pci)
sudo modprobe -r **** - Unloades the kernel module ****. (Example usage - sudo modprobe -r ndiswrapper)
sudo ifup/ifdown - Brings up/down the interface and clears the routing table for the specified interface
sudo ifconfig up/down - Brings up/down the interface for the specified interface
sudo dhclient - Request IP address from DNS server for specified interface
sudo dhclient -r - Release IP address associated with specified interface
sudo iptables -L - Lists firewall rules
dmesg | more - Lists boot log -- good for troubleshooting problems with modules/drivers not being loaded
uname -r - Displays kernel version
/etc/iftab (Feisty and pre-releases (Edgy, etc)) - /etc/udev/rules.d/70-persistent-net.rules (Gutsy) - File which assigns logical names (eth0, wlan0, etc) to MAC addresses
cat /etc/resolv.conf - Lists DNS servers associated with network connections (Network Manager)
/etc/dhcp3/dhclient.conf - File which sets or modifies dns (domain name servers) settings

__________________________________________________ __________________________
WPA_SUPPLICANT.CONF - Good Description and Explanations of All Available Options that can be Placed with the wpa_supplicant.conf file
http://hostap.epitest.fi/cgi-bin/vie...?revision=HEAD

__________________________________________________ __________________________
References for Specific Wireless Chipsets - Please see Link if Your Specific Chipset is Not Working with Above Tutorial's Instructions

Official Broadcom site for bcm43xx firmware - http://linuxwireless.org/en/users/Drivers/b43
Broadcom 64bit Drivers for Use with Ndiswrapper - http://www.linuxant.com/driverloader/drivers.php
Broadcom Guid for Ubuntu Hardy/Intrepid and Ibex -- A very informative sight! - http://linuxfans.betaserver.org/inde...ides&Itemid=61 - Author Ayuthia

Ra chipsets - Serial Monkey Drivers - rt2500, rt73, rt61, rt2570 drivers - http://ubuntuforums.org/showthread.p...=serial+monkey - Author diepruis
rt2500 chipsets with the Serial Monkey rt2500 CVS driver - http://ubuntuforums.org/showthread.p...ghlight=rt2500 - Author zoiks
Ralink RT2860 (m)PCI(e) (RT2760/RT2790/RT2860/RT2890) - http://ubuntuforums.org/showthread.php?t=1045703 - Author Fass
Rutilt - A Network Manager Like GUI for Ra Chipsets - http://ubuntuforums.org/showthread.p...ghlight=rutilt - Author sulilogs
Ndiswrapper Official Compatibility Reference - http://linuxfans.betaserver.org/ndis_drivers/toc.html - Author Ayuthia (Borrowed from the Ex-Official Ndiswrapper Site)
Ndiswrapper installation for Broadcom chipsets - http://ubuntuforums.org/showthread.php?t=475963 - Author Jamie Jackson
Ndiswrapper General Installation Guide - SVN, Troubleshooting Tips (My Personal Guide) - http://ubuntuforums.org/showthread.php?t=574501 - Author KevDog
Madwifi website for certain Atheros Chipsets - http://madwifi.org/ -- If your Atheros chipset is listed on this website - it should work out of the box with installation of the linux restricted drivers package for your kernel version
Atheros 5006eg Chipset work-around - Card apparently listed as 5007eg - http://ubuntuforums.org/showpost.php...5&postcount=14 - Author ugm6hr
Does your madwifi connection keep dropping??? Possible solution -- http://ubuntuforums.org/showthread.php?t=540101 = Author robnz/tranalbert
Realtek win98 driver - http://www.majorgeeks.com/Realtek_RT...0XP_d5165.html - For use with ndiswrapper if native r818x, r8187 driver is buggy
Realtek win98 driver installation - http://ubuntuforums.org/showthread.p...highlight=8187 - Author Panurge
Realtek - Installation with Native Driver - http://ubuntuforums.org/showthread.php?t=567505
Realtek 8187B Native Patch for Realtek 818x USB Devices -- Relevant only to rtl8187B USB wireless devices - Toshiba Laptops - http://www.datanorth.net/~cuervo/rtl8187b/ - Author Cuervo

__________________________________________________ __________________________
Wireless Security
WPA with EAP-TLS - http://www.codealias.info/technotes/...x_client_setup

__________________________________________________ __________________________
Other Interesting Sites

Control Programs Kept in Swap vs Memory - http://ubuntuforums.org/showpost.php...&postcount=150
If your Wireless Freezes after Suspend/Resume - Check here - http://ubuntuforums.org/showpost.php...7&postcount=12 - Author Harty83
DNS related problems?? - Configuration for OpenDNS servers - http://ubuntuforums.org/showthread.php?t=543659 - Author noob12
Turn off/Disable IPv6 - http://ubuntuforums.org/showthread.php?t=282034 - Author handy
General Linux Page Discussing Network Setups - Default Gateways - http://linux-ip.net/html/basic-changing.html
Log Files -- Your Friend to Debug almost anything on your System - https://help.ubuntu.com/community/Li...f98267e009db55
Using OpenVPN to bridge networks - http://ubuntuforums.org/showthread.php?t=752127 - Author SpaceTeddy

Source: http://ubuntuforums.org/showthread.php?t=571188

More responses, troubleshooting, and ideas, go to the original source and continue the post.