lunes, 22 de diciembre de 2008

Intrusos en mi red?

Muchos de los usuarios protegen sus datos que circundan en su red local, el problema es cuando tenemos redes inalámbricas, los datos están expuestos a todo ordenador que capte dicha señal, para evitar intrusos, protegemos nuestra red mediante contraseñas y métodos de seguridad que eviten que ordenadores desconocidos reciban ip o que vean la red privada, pero ¿Que y quien nos asegura que nadie esta accediendo a nuestra red y usando nuestro ancho de banda?

Los sniffer son herramientas muy útiles, a pesar de ser nuestras enemigas, si sabemos usarlas podemos colocar esas herramientas de nuestro lado. Un sniffer puede detectar nuestra red oculta, pero también con los sniffer podemos detectar los que usan nuestra red así como también los que intentan acceder a la misma.

Teóricamente un sniffer escucha las tramas de la red, puede captar paquetes y actividades de la red en escucha. Los sniffer son tanto peligrosos como muy útiles dependiendo del uso que se les de, ya que con los mismos se pueden captar datos privados y hasta contraseñas privadas de uso personal.

Si nuestra red la tenemos oculta con los sniffer se pueden descubrir dicha red, pero con los mismos podemos defendernos de dichos intrusos.

Entre los sniffers mas populares estan el ethereal y el etherape.

d4x

d4x es un programa que permite administrar la descargas de archivos, este permite que una descarga pueda ser pausada y reiniciada sin perder los datos ya bajados continuando en el ultimo momento donde quedo. Esto es muy util si al momento de bajar un fichero se va la luz, evitando que los datos bajados hasta el momento se pierdan.

sábado, 19 de julio de 2008

Configurando usb(wireless)

Muchos de los dispositivos de red inalambrico aun no tienen controladores natos en GNU/Linux, pero no todo esta perdido, mientras dichos controladores aun estan siendo desarrollados existe un encapsulador que resuelve el problema.

NDiswrapper es un encapsulador que toma un driver de windows y lo encapsula siendo este el que controla al dispositivo funcionando como un intermediario entre el dispositivo y el kernel Linux.

NDiswrapper necesita de dos ficheros el .inf y el .sys del driver a usar con estos dos ficheros el puede realizar la encapsulacion del driver e interpretar su funcionalidad.

Para instalarlo en Opensuse basta con hacer como usuario root el siguiente comando:

# yast2 -i ndiswrapper

Una vez instalado usa las siguientes opciones:

# ndiswrapper -i nombredriver.inf {{{Instala el driver}}}

# ndiswrapper -m {{{Para mas informacion use la ayuda}}}

# ndiswrapper -mi {{{Para mas informacion use la ayuda}}}

# ndiswrapper -ma {{{Para mas informacion use la ayuda}}}

# ndiswrapper -l {{{Lista los dispositivos instalados}}}
# depmod -a {{{Dependencia de los modulos}}}
# modprobe ndiswrapper {{{Agregarlo como un modulo}}}

Aqui el encapsulador esta listo y el driver esta funcionando, pero si aun no ve su dispositivo pruebe con reiniciar su sistema, dicha accion es poco frecuente, luego puede ver que su dispositivo esta presente con {{{iwconfig}}}. Pero siempre y cuando el driver instalado sea el correcto.

Referencia:
http://sourceforge.net/projects/ndiswrapper/
http://es.wikipedia.org/wiki/NDISwrapper

jueves, 12 de junio de 2008

Primeros conocimientos

¿Que es la swap?


Una memoria virtual es una tecnica para habilitar que un sistema use mas memoria que la fisica disponible para el SO. Por lo tanto la swap no es mas que una particion de intercambio que es necesaria ser creada para evitar el colapso de aplicaciones o procesos que requieran ser procesados cuando la memoria fisica reusa la entrada debido a que esta llena.

¿Que es la particion /-(raiz o root)?


En cualquier SO GNU/Linux o Unix se requiere como minimo esta particion ademas de la swap para que pueda funcionar, esta particion es conocida tambien como (/). Esta particion no es mas que un directorio en el que se encuentran los sub-directorios del sistema para el funcionamiento del propio SO.

¿Que es el shell?


Los shell's mas populares son los siguientes:
1.- ash: Es pequeño y muy usado cuando no hay mucha memoria.
2.- bash: Es una version mas poderosa proveniente del sh.
3.- csh: El original C shell, es generalmente lo mismo que tcsh
4.- ksh: Es un shell de Open source.
5.- nash: Otro shell pequeño para cuando hay poca memoria.
6.- sh: bash y sh, generalmente la misma cosa.
7.- tcsh: La mejora del C shell original.
8.- zsh: Reensambla bash y ksh, con muchos ademanes y mejoras.
El shell no es mas que un interprete de comandos.

Proceso de Arranque en un sistema GNU/Linux


Las etapas básicas del proceso de arranque son las siguientes:
1.- La BIOS tiene el poder del sistema y comprueba el mismo y el MBR del disco duro primario.
2.- Se carga el GRUB en memoria y lanza el gestor de arranque desde /boot.
3.- Se carga el kernel en memoria, se cargan los módulos y se monta /root.
4.- El kernel transfiere el control del proceso de arranque a /sbin/init.
5.- /sbin/init carga los servicios y herramientas del espacio del usuario y loas particiones listadas en /etc/fstab.
6.- Inicio de sesión.

¿Qué es un servicio en GNU/Linux?


Un servicio es una aplicacion que se ejecuta de manera ininterrumpida escuchando y atendiendo peticiones realizadas a un servidor, todo servicio debe de evitar que el servidor se sature de igual manera no debe de crear conflicto con otros existentes en el servidor.
1.- Apache2.
2.- Bind.
3.- Mysql.
4.- Dhcp.
Son solo parte de los servicios que las distribuciones GNU/Linux pueden brindar.

miércoles, 28 de mayo de 2008

Como configurar xgl en openSUSE

En openSUSE es muy sencillo configurar el driver con el que se ejecuta o trabajan los videos, originalmente openSUSE trabaja con Xorg, pero tambien este puede ser cambiado para trabajar con Xgl, este funciona perfectamente en tarjetas de video NVidia o ATI, solo hay que hacer cambios a un simple archivo y reiniciar el modo grafico para que los cambios surtan efecto, para usuarios novatos sugiero reiniciar la maquina.

Primero sugiero que se lea muy bien que tarjeta de video se tiene y si se tiene los drivers de video para esta, puedes encontrar mayor informacion en '/usr/share/doc/packages/xgl/README.SUSE'.

Si crees que todo esta bien entonces vete al fichero /etc/sysconfig/displaymanager y cambia la siguiente linea:
{{{
DISPLAYMANAGER_XSERVER="Xorg"
}}}
para que quede:
{{{
DISPLAYMANAGER_XSERVER="Xgl"
}}}
luego ejecutas xdm que muy bien explicado sale en la ayuda 'README.SUSE'.

En Open Suse puedes ejecutar
rcxdm restart.

Esto debería trabajar bien por ahora, si tienes problemas, verifica tu driver o tu tarjeta de video.

Si tu tarjeta es nvidia, puedes decirle que trabaje con nvidia en lugar de Xorg o Xgl quedando de esta forma:
{{{
DISPLAYMANAGER_XSERVER="nvidia"
}}}

miércoles, 16 de abril de 2008

Escribiendo Shell Scripts

Linux es ademas de un Sistema Operativo un lenguaje de programacion, al igual que los lenguajes de bajo u alto nivel posee caracteristicas similares tales como variables locales y globales, como ademas posee interpretes con los cuales se puede realizar programas para este Sistema Operativo.

Entre los interpretes mas comunes esta el '/bin/bash', interprete bajo el cual se trata esta entrada.

Hagamos una pequena introduccion, empecemos escribiendo un archivo simple:
admin escribió:

#!/bin/bash
# Esto es un comentario
echo "Hola " $USER ", es un placer verlo por aqui!"
echo "Usted se encuentra en: " $PWD
echo "La fecha de hoy es: "`date +"%d/%m/%Y"`


Ahora almacenas esto en un archivo llamado 'ejemplo1.sh', entonces tendras un simple shell script. Puedes correrlo de las cuatro formas siguientes:

1)Usando el comando source:
admin escribió:

fred@test:~> source ejemplo1.sh
Hola fred, es un placer verlo por aqui!
Usted se encuentra en: /home/fred
La fecha de hoy es: 05/05/1994

2)Usando el punto como el comando source:
admin escribió:

fred@test:~> . ejemplo1.sh
Hola fred, es un placer verlo por aqui!
Usted se encuentra en: /home/fred
La fecha de hoy es: 05/05/1994

3)Usando el comando bash
admin escribió:

fred@test:~> bash ejemplo1.sh
Hola fred, es un placer verlo por aqui!
Usted se encuentra en: /home/fred
La fecha de hoy es: 05/05/1994

4)Haciendo ejecutable:
admin escribió:

fred@test:~> chmod a+x ejemplo1.sh
fred@test:~> ./ejemplo1.sh
Hola fred, es un placer verlo por aqui!
Usted se encuentra en: /home/fred
La fecha de hoy es: 05/05/1994

Continuando les anexo aqui otro ejemplo:
admin escribió:

#! /bin/bash
for i in 1 2 3 4 5
do
echo $i
done
--------
fred@test:~> chmod a+x ejemplo2.sh
fred@test:~> ./ejemplo2.sh
1
2
3
4
5

Aqui les doy otro ejemplo:
admin escribió:

#! /bin/bash
for i in *.html
do
grep -i \<title\> $i >> tittles.list
done
--------
fred@test:~> chmod a+x ejemplo3.sh
fred@test:~> ./ejemplo3.sh
<title>Yahoo! Telemundo</title>

Para hacer funciones:
admin escribió:

#!/bin/bash
function Imprimir(){
echo $1
}
Imprimir "Hola Mundo"
--------
fred@test:~> chmod a+x ejemplo4.sh
fred@test:~> ./ejemplo4.sh
Hola Mundo

Para leer datos de parte del usuario hay cuatro formas:

1) Usando read:
admin escribió:

#!/bin/bash
read -p "Ingrese un valor: " -e input
echo "Su valor es: '$input'"
--------
fred@test:~> ./ejemplo5.sh
Ingrese un valor: 6
6


2) Usando dialog:
admin escribió:

#!/bin/bash
dialog --inputbox \
"Escriba un valor: " 0 0 2> /tmp/inputbox.tmp.$$
retval=$?
input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$
case $retval in
0)
echo "Su valor es: '$input'";;
1)
echo "Cancelo la operacion.";;
esac
--------
fred@test:~> ./ejemplo6.sh
<--Aun no e hecho las imagenes-->


3) Usando Xdialog:
admin escribió:

#!/bin/bash
Xdialog --title "INPUT BOX" --inputbox \
"Escriba un valor: " 0 0 2> /tmp/inputbox.tmp.$$
retval=$?
input=`cat /tmp/inputbox.tmp.$$`
rm -f /tmp/inputbox.tmp.$$
case $retval in
0)
echo "Su valor es: '$input'";;
1)
echo "Cancelo la operacion.";;
255)
echo "Cerro la ventana.";;
esac
--------
fred@test:~> ./ejemplo7.sh
<--Aun no e hecho las imagenes-->


4) Usando zenity:
admin escribió:

#!/bin/bash
input=$(zenity --text "Escriba un valor: " --entry)
retval=$?
case $retval in
0)
echo "Su valor es: '$input'";;
1)
echo "Cancelo la operacion.";;
esac
--------
fred@test:~> ./ejemplo8.sh
<--Aun no e hecho las imagenes-->


Quizas zenity sea la mejor opcion cuando tienes funcionando una X, pero cuando no dialog es la mejor opcion o read como lo mas simple para un script.
Las paginas man ofrecen mayor documentacion.


Usando ciclos:
Con los ciclos podemos hacer maravillas, tanto moviendonos de un rango a otro como usandolos para movernos en el mismo sistema, empecemos con lo basico:
admin escribió:

#!/bin/bash
for (( i=1;i<=5;i++ ));do
echo $i
done
--------
fred@test:~> ./ejemplo9.sh
1
2
3
4
5
fred@test:~> _


Haciendo algo mas complejo, mostrando si es directorio o archivo los datos contenidos en una carpeta dada:
admin escribió:

#!/bin/bash
for item in `ls $1`;do
if [[ -d $item ]];then
echo $item": Es una carpeta"
else
echo $item": Es un archivo"
fi
done
--------
fred@test:~> ./ejemplo10.sh /home/test
avion.wmv: Es un archivo
Desktop: Es una carpeta
Documents: Es una carpeta
Pictures: Es una carpeta
video.avi: Es un archivo
fred@test:~> _

martes, 18 de marzo de 2008

Sistemas de Archivos

Un sistema de Archivo provee una base para sus archivos a ser almacenados en su Disco Duro. Para entender mejor esta ideología veamos a los discos duros sin formatear como un terreno vacío, cuando en el terreno vacío levantamos cuatro paredes y una infraestructura, se podría decir que le damos un formato, hemos particionado el terreno en un numero determinado de cuartos y es cuando ya se puede ingresar los elementos en la casa tales como: cama, cocina, mesa, sillas, etc., cada uno en el cuarto o habitación correspondiente.

Volviendo a los discos duros, un disco sin formato no tiene sectores o áreas en donde se pueda almacenar un dato, para que el disco este disponible y utilizable se le da un formato, esto crea en el disco sectores para proveer el acceso al disco.

Al darle un formato al disco tenemos que hacer uso de un metodo de particionamiento que nos permita almacenar los datos, a esto se le denomina sistema de archivo, es decir como trabajara el disco duro para almacenar los datos. (GNU/Linux) soporta diferentes tipos de sistemas de archivos, esto es por que (GNU/Linux) usa un software en el kernel conocido como driver que entiende la estructura interna de un sistema de archivo específico.

Para proveer un acceso a un amplio rango de tipos diferentes de sistemas de archivos, (GNU/Linux) provee un metodo general que es simplemente extendido. (GNU/Linux) provee un sistema de archivos virtual (VFS/Virtual File System) que es como una capa que un driver de sistema de archivos lleva dentro, proporcionando un acceso basado en archivos para la información.

Cuando se crean particiones, por lo general usted a creado un sistema de archivos en una partición para hacer uso del nuevo espacio alocado, como ya habia explicado con el ejemplo del terreno. Varios tipos de sistemas de archivos estan disponibles para este propósito.

Según la historia EXT2, es un sistema de archivos muy rápido y simple que no tiene la caracteristica de journaling.

Debido a que (GNU/Linux) tiene un amplio soporte a multiple sistemas de archivos, hace que la opción de seleccionar no solo uno, sino que más de un sistema de archivos de forma opcional por el mismo usuario y no por el propio sistema, un sistema operativo libre para el usuario y no cerrado.



SISTEMAS DE ARCHIVOS QUE USAN JOURNALING



El journaling con respecto al sistema de archivos, es un área del disco usada para almacenar información con respecto a cambios pendientes hechos en el sistema, los sistemas de archivos contienen dos tipos generales de información: archivos y directorios actuales donde se almacenan los datos y sistemas de archivos de metadatos, lo cual es información interna acerca de los propios sistema de archivos.

Existen situaciones en las que usar journaling es una muy mala idea, por ejemplo las bases de datos que ya contiene su propio sistema de log de cambios y que son capaces de usar metodos internos propios de recuperación.


  1. EXT2: Ha sido por defecto el sitema de archivos preferido de (GNU/Linux) por muchos años, sigue siendo usado para discos ram iniciales. No usa Journaling debido a su extrema estabilidad y ligereza en terminos de overhead, esto se debe a que mantiene la integridad de los datos y metadatos.
  2. EXT3: Este sistema de archivos surge al agregarle al sistema EXT2 el método de journaling, esto permite actualizaciones de manera fácil de EXT2 a EXT3, se permiten tres modos de journaling:
  • Journal: Logs todos cambios a los sitemas de archivos de datos y metadatos.
  • Ordered: Logs solo los cambios a los sistemas de archivos de metadatos.
  • Writeback: Logs solo los cambios a los sitemas de archivos de metadatos pero dependientes en el proceso estandard de escritura de sistema de archivos para escribir cambios de datos de archivos al disco.
  1. ReiserFS: Es uno de los sistemas mas estabables con journaling para (GNU/Linux) disponibles. Este sistema no trabaja bloque por bloque como lo hace EXT2, sino que en cambio trabaja con un algoritmo de árbol binario para encontrar espacio libre y archivos existentes en el disco. Este b-tree le agrega un simple pero elegante método para tratar con archivos pequeños, es decir archivos más pequeños que el bloque, esto lo hace almacenandolo en el arbol binario en lugar de ser redireccionado. Además almacena fragmentos de archivos empaquetandolos junto a otros bloques libres del disco, aprovechando al maximo toda la capacidad del disco sin perder bloques del mismo.
  2. JFS: Similar a ReiserFS, ya que usa un b-tree(árbol binario), esta basado en transacciones pesadas, provee un método muy rápido para el alojamiento de datos basado en extendidos, es decir a una serie continua de bloques de datos que pueden se alojados, leidos, escritos y manejados a la vez.
  3. XFS: Es un SGI de alto rendimiento para sistemas de archivos de 64-bits, originalmente fue desarrollado para ser usado con el sistema operativo IRIX. Máquinas SGI tradicionalmente han tenido que trabajar con largos juegos de datos en máquinas con más de un procesador, lo cual refleja como trabaja el sistema XFS. Ofrece dominios independientes de datos atravéz del sistema de archivos. Permitioendo al sistema multiprocesador, acceder y cambiar los datos en diferentes grupos de alojamientos idependientes de cada uno. Quizás el hecho que varios procesadores esten leyendo, escribiendo y modificando datos no suene tradicional para un simple disco de una PC hogareña, si lo tiene para una empresa en la cuan se pueda tener un área de almacenamiento compartido en la red proveida por multiples discos. De igual forma como ReiserFS y XFS, usa journaling para almacenar la información acerca de los archivos metadatos y emplea un b-tree para manejar alojamiento de datos. En adición tiene como característica usar un b-tree para almacenar la información del espacio libre. Ayudando a incrementar la velocidad de alojamiento de bloques para nueva información. No es un sistema de archivos atractivo para usuarios hogareños ya que es un sistema de archivos empresarial para manegar archivos de datos realmente gigantescos.
  4. VFAT/NTFS: Son sistemas de archivos de Microsoft, debido a que la manera en que trabaja el sistema de archivos VFAT(Virtual File Allocation table), fue liberado de forma libre, (GNU/Linux) soporta el manejo de particiones bajo el sistema de archivos FAT, permitiendo la edición del contenido del propio sistema, en cambio Microsoft no ha liberado la manera en que el sistema NTFS(New Technology File System) trabaja, por lo tanto NTFS esta en desarrollo y ha sido recientemente agregado al nucleo.

viernes, 15 de febrero de 2008

Detrás de los discos duros

Ahora hoy en día, si tu eres informático o no, conoces lo que es un disco duro, o al menos la idea de lo que es un disco duro.

Existen dos tipos de particiones para los discos duros: Primarias y Lógicas. Un disco duro puede tener solo hasta 4 particiones Primarias y tantas particiones lógicas como tu desees. Una partición primaria es una partición principal, una lógica es una partición en la cual pueden albergar una o mas particiones según le convenga al usuario.

Hasta el momento los tipos de discos duros son SATA, SCSI o IDE, en linux estos tipos de discos son montados por de dos formas sd (Discos Seriales) y hd (Discos IDE), pero esto no ocurre siempre esto depende del kernel que es el que define como seran montados. Actualmente hd ya no es usado, eso era en los viejos tiempos, los ultimos kernels ya no manejan de esta manera los discos SATA, SCSI e IDE, mas sin embargo algunas distribuciones puede que aun usen convencionalmente el viejo sistema.

NOTA: Este signo '|' significa 'o' escribir "SATA|SCSI" es lo mismo que decir "SATA o SCSI".

Trabajaremos con el viejo sistema como ejemplo, con el nuevo sistema solo existe sd por lo tanto es equivalente. Para diferenciar los discos duros en gnu/linux, los discos se etiquetan con una letra de [a-z] y las particiones se etiquetan con números[1-etc], por ejemplo supongamos que tengamos dos discos (SATA|SCSI) de tipo Serial y dos (IDE), en linux se podrían ver así:
1er (SATA)
sda
2do (SCSI)
sdb
1er (IDE)
hda
2do (IDE)
hdb

En el ejemplo anterior estos discos aun no tienen particiones por lo tanto están inutilizables, para poder hacerlos funcionales tendríamos que hacerles al menos una partición o más, dependiendo de nuestra necesidad se le hará a cada disco la partición correspondiente, supongamos que les demos particiones entonces se verá algo así:
1er (SCSI)
sda sda1 sda2
2do (SCSI)
sdb sdb1 sdb2 sdb3
1er (IDE)
hda hda1
2do (IDE)
hdb hdb1 hdb2

Podemos ver que las particiones para sda -> 2 particiones, para sdb -> 3 particiones, para hda -> 1 partición y para hdb -> 2 particiones.

¿Para qué es útil particionar los discos duros? Cuando los discos duros son de tamaños enormes mayores a 40GB u 80GB si se les deja con una sola partición estos se vuelven muy lentos, por ello se recomiendo realizar particiones del mismo disco duro en particiones pequeñas para que los datos puedan accederse de forma más rápida.

En pocas palabras los discos duros cumplen con una regla: Mientras más GB's tenga un Disco Duro, más lento será el acceso a los datos, en cambio mientras menos GB's tenga un Disco Duro, más rápido será el acceso de los datos al disco duro. 'El tamaño de un disco duro será inversamente proporcional a la velocidad de acceso a los datos'.

Por ello cuando se tiene un Disco Duro de 500GB's se recomienda en hacer particiones pequeñas de 40GB u 80GB, y así aprovechar la capacidad del disco duro y permitir el acceso a los datos lo más rápido posible.

jueves, 7 de febrero de 2008

(GNU/Linux)

¿Qué significa kernel?


Anglicismo de núcleo, kernel es el que hace que todo marche bien, su función es servir de intermediario entre el hardware y el usuario, permitiendo una abstracción del hardware y facilitando la administración y uso del mismo.

El kernel se podria tomar como el motor o base del sistema, para que un sistema operativo trabaje como tal requiere de un motor o nucleo que le permita hacerse del control del hardware del computador, este papel es el que toma el kernel.


¿Qué significa GNU/Linux?


Significa la unión entre el núcleo Linux y las herramientas GNU(ñu). Richard Stallman es el fundador del movimiento del software libre, defiende junto a otros desarrolladores que el nombre es GNU/Linux y no Linux, esto debido a que el Sistema Operativo que se usa actualmente no solo contiene el núcleo Linux sino tambien un conjunto de herramientas GNU que lo componen, por ello solo decir Linux es desacreditar y no tomarle en cuenta a la comunidad desarrolladora participante del proyecto.

¿Por que hice este blog?

No soy bueno dando discursos, así que mi único objetivo es compartir información y centralizarla en un solo sitio.

Además, no pienso inventar el agua helada, pero si dar una guía, algo a seguir, datos mas detallados haz de encontrarlos en las man pages y documentacion.