miércoles, 21 de diciembre de 2011

Seguridad en Redes Sociales


Red Social: Concepto y Objeto
 Las redes sociales son estructuras sociales compuestas de grupos de personas, las cuales están conectadas por uno o varios tipos de relaciones, tales como amistad, parentesco, intereses comunes o que comparten conocimientos.


Red Social en Internet:
El concepto germinal de las redes sociales parte de la teoría de los Seis grados de separación, según la cual toda la gente del planeta está conectada a través de no más de seis personas.
Según esta Teoría, cada persona en promedio, entre amigos, familiares y compañeros de trabajo o escuela, a unas 100 personas. Si cada uno de esos amigos o conocidos cercanos se relaciona con otras 100 personas, cualquier individuo puede pasar un recado a 10.000 personas más tan solo pidiendo a un amigo que pase el mensaje a sus amigos.
Evidentemente cuanto más pasos haya que dar, más lejana será la conexión entre dos individuos y más difícil la comunicación. Internet, sin embargo, ha eliminado algunas de esas barreras creando verdaderas redes sociales mundiales, especialmente en segmento concreto de profesionales, artistas, etc.


Ventajas de las Redes Sociales en Internet:  (perfil personal)
Reencuentro con conocidos.
Excelentes para propiciar contactos afectivos (pareja, amistad, o compartir intereses, etc.).
Compartir momentos especiales con las personas cercanas a nuestras vidas.
Diluyen fronteras geográficas y sirven para conectar gente sin importar la distancia.
Perfectas para establecer conexiones con el mundo profesional.
Tener información actualizada acerca de temas de interés, además permiten acudir a eventos, participar en actos y conferencias.
Pueden generar movimientos masivos de solidaridad ante una situación de crisis.
Bastantes dinámicas para producir contenido en Internet.


Ventajas de las Redes Sociales en Internet: (perfil empresarial o de negocios)
Útiles para la búsqueda de personal.
Son utilizadas en forma de Intranet.
Permiten foros y conferencias online
Modificaron al marketing, generando una mayor interactividad con sus consumidores.
El consumidor puede interactuar y conocer las características de los productos (promociones, noticias,nuevos productos, etc).
Es una excelente forma de hacer mercadotecnia y publicidad a bajos costos.
Perfecta fuente de información para saber lo que quiere el cliente.


Desventajas de las Redes Sociales: (perfil Personal)
Son peligrosas si no se configura la privacidad correctamente, pues exponen nuestra vida privada.
Pueden darse casos de suplantación de personalidad.
Pueden ser adictivas y devorar gran cantidad de nuestro tiempo, pues son ideales para el ocio.
Pueden apoderarse de todos los contenidos que publicamos.
Pueden ser utilizadas por criminales para conocer datos de sus víctimas en delitos: como el acoso y abuso sexual, secuestro, tráfico de personas, etc.


Precauciones para tener en cuenta
Elegir bien la red en la que se va a registrar
Ser cuidadoso a la hora de Completar mucho el perfil profesional
Ser cauto con la información personal (mode paranoic on).
Seleccionar bien a los amigos que se admiten.
Hacer uso de las listas de amigos
Mantener a nuestros amigos en privado.
Evitar que nos etiqueten (tag) en fotos o vídeos comprometedores.
Proteger los álbumes.
Evitar al máximo que se publiquen noticias sobre relaciones personales.
Controlar lo que publican en el muro (wall) -evitar que diga algo poco o nada apropiado.
Filtrar las noticias que publican las aplicaciones.
Si se busca mas privacidad, es importante auto-eliminarse de las búsquedas en google o cualquier otro buscador.


Métodos mas comunes para robar contraseñas

  • El método de la postal de virtual: este método es de los más efectivos porque el usuario regularmente recibe una postal, por ejemplo de gusanito.com, pero para poder ver la postal te pide que introduzcas tu contraseña y dirección de correo electrónico haciéndole creer al usuario que la sesión de su cuenta se cerró y necesita volver a introducir sus datos, así la persona que quiere robar la contraseña recibirá por correo electrónico la contraseña de la víctima.   
  • El archivo ejecutable que te envían por el MSN Messenger, este método casi siempre funciona cuando la víctima no tiene antivirus, ya que la mayoría de los antivirus detectan este tipo de archivos cómo virus, su forma de trabajar es la siguiente: alguien te envía un supuesto juego, lo abres y te aparece una ventana que dice que tu sesión del MSN Messenger se ha cerrado y que vuelvas a introducir tus datos, y cuando lo hagas quien te envió el archivo recibirá tu contraseña. 
  • La ingeniería social, cómo te habrás dado cuenta en los métodos anteriores el concepto es el mismo, y se trata de preguntarle la contraseña a la víctima sin que esta sepa que se lo estás preguntando, así que hay que tener mucho cuidado con todo tipo de métodos del estilo. 
  • Dejar guardada tu contraseña en el navegador, esto es muy frecuente también y es tal vez el método más fácil para robar contraseñas, por ejemplo en Mozilla Firefox cuando inicias sesión en algún sitio web te pregunta si deseas recordar los datos, si pones que sí, después alguien con acceso a la computadora podrá visualizar las contraseñas guardadas. También muchas veces estas contraseñas son almacenadas en Cookies y existen algunos método para sacar contraseñas de las Cookies guardadas en el navegador.
  • Key logs: programa que guarda todo lo que presionamos en el teclado. La información recolectada será utilizada luego por la persona que lo haya instalado. Actualmente existen dispositivos de hardware o bien programas (software) que realizan estas tareas. 



Recomendaciones para evitar robo de contraseñas
Mantén actualizado tu antivirus
No permitas que los navegadores almacenen tu contraseña
En lugares públicos cómo cybercafés o centro de cómputo de tu colegio, escuela o universidad utiliza el teclado en pantalla. (Inicio Todos los programas -> herramientas de sistema -> Teclado en pantalla)
Cambia tu contraseña con regularidad
Usa una contraseña muy complicada y una pregunta secreta difícil


Enlaces de Intereses y que ayudaron a la redaccion de este Post


  • http://cxo-community.com/articulos/blogs/blogs-seguridad-informatica/2701-delitos-en-las-redes-sociales
  • http://www.infosol.com.mx/espacio/cont/aula/redes_sociales.html
  • http://eduredes.ning.com/page/lista-de-redes-sociales
  • http://www.societic.com/2010/03/seguridad-en-las-redes-sociales
  • http://www.pillateunlinux.com/los-peligros-de-las-redes-sociales-facebook-tuenti
  • http://es.shvoong.com/internet-and-technologies/blog/1873616-precauciones-que-se-deben-tomar/#ixzz1eOqlTHzr
  • http://www.ymipollo.com/~demon/128299.algunas-tecnicas-para-robar-contrasenas.html
  • http://culturacion.com/2009/07/ingenieria-social-para-robar-contrasenas/
  • http://www.societic.com/2010/02/reglas-basicas-de-seguridad-en-facebook/l







martes, 20 de diciembre de 2011

Listado de Numeros Primos

Hola Perleros amigos!!

En esta oportunidad he logrado un programita sencillo que calcula los "n" primeros numeros primos, tiene una vuelta de tuerca mas, ya que hace uso de la logica del programa es_primo.pl, para este caso converti parte de ese codigo en una funcion.

Espero les agrade, les sea de utilidad y como siempre digo "todo es mejorable" asi que a mejorarlo!!



#!/usr/bin/perl
# este programa lee un numero N
# y muestra los N primeros numeros Primos
print"**********************\n";
print"*                    *\n";
print"* Listado de primos  *\n";
print"*                    *\n";
print"**********************\n";
print"Cuantos numeros primos quiere encontrar :";
chop($num=<STDIN>);
print "\n";
$t=1;
$tg=1;
$bandera=0;
while ($tg<=$num){ # este while controla que se haya llegado a total de primos
    $bandera=&esprimo($t); # llama a la funcion que controla que sea primo
    if ($bandera) {
        print "$tg )- es :\t $t \n"; # si es primo, lo muestra,
        $tg++;       # lo suma
        $bandera=0;  # vuelve la bandera a falso para controlar al proximo numero
    }
    $t++;

}

sub esprimo {
local ($t2)= @_;
$con=0;for($i=1;$i<=$t2;$i++){
    $res=$t%$i; # calcula el resto de la division del numero con el indice
    if($res==0){$con++;}
    if ($con>2){last;} # si tiene mas de dos divisores y aun no llego al final, sale de la repeticion.
}
if ($con<=2){$ban=1;}
    else{$ban=0;}
return $ban;
}

lunes, 19 de diciembre de 2011

Encuentra divisores


Buenas noches, para poder ayudar a terminar los deberes a un niño , puse a programar esto que enlista los divisores (enteros )de un numero N. (que no sea muy grande, por la salud de su microprocesador)


#!/usr/bin/perl
# este programa lee un numero N
# y calcula todos sus divisores
# autor: Juan Manuel Ovejero
print"*************\n";
print"* DIVISORES *\n";
print"*************\n";
print"ingrese el numero :";
chop($num=<STDIN>);
print "\n";
for($i=1;$i<=$num;$i++){
$res=$num%$i; # calcula el resto de la division del numero con el indice 
if($res==0){
$con++; # si el resto, es decir si el indice es divisor del numero, suma uno a al cantidad de divisores
print "$i \n";
}


print "listo! \n";

sábado, 17 de diciembre de 2011

Algoritmo numero primo

Hola a todos!!

Esta mañana me desperté con una inquietud programeral.  Y es otro procedimiento sencillo : ¿cuando un numero es primo?

segun la wikipedia.

Un número primo es un número natural mayor que 1 que tiene únicamente dos divisores distintos: él mismo y el 1. Se contraponen así a los números compuestos, que son aquellos que tienen algún divisor natural aparte de sí mismos y del 1. El número 1, por convenio, no se considera ni primo ni compuesto. Los números primos menores que cien son los siguientes: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97
entonces me puse a pensar (poco a decir verdad) como responder a la pregunta ¿es el 3.651.497 un numero primo? con esto en mente y conociendo la deficion me puse a programar un poco en PERL y encontré esta solución:

  1. #!/usr/bin/perl
  2. # este programa lee un numero N
  3. # y avisa si es un numero primo
  4. print"*******************************\n";
  5. print"* AVISO DE PRIMO              *\n";
  6. print"* ----- -- ------             *\n";
  7. print"*******************************\n";
  8. print"ingrese el numero :";
  9. chop($num=<STDIN>);
  10. print "\n";
  11. $con=0; # contador de divisores
  12. for($i=1;$i<=$num;$i++){
  13. $res=$num%$i; # calcula el resto de la division del numero con el indice 
  14. if($res==0){
  15. $con++; # si el resto, es decir si el indice es divisor del numero, suma uno a al cantidad de divisores
  16. }
  17. if ($con>2){ 
  18. last; # si tiene mas de dos divisores y aun no llego al final, sale de la repeticion.
  19. }
  20. if ($con<=2){
  21. print "el numero $num ES primo \n";
  22. }
  23. else{
  24. print "el numero $num NO es primo! \n";
  25. }
  26. print "listo! \n";
corriendolo me queda asi

con lo que resulta que 3.651.497 es un numero primo!

espero que este algoritmo le sirva a algún estudiante , colega, etc. obviamente se puede mejorar, pero ya se me hace tarde para almozar! lo hare otro dia.

Hasta la proxima lectores!

saludos!

viernes, 16 de diciembre de 2011

Sumar impares

Hola! por esas cosas de la vida, tuve que volver a mi viejo amor, a programar, fabricar herramientas informaticas a partir que otras, que sirvan para solucionar problemas en el tratamiento y presentacion de datos.!! 

Una grata sorpresa es saber que existe un lenguaje de programacion como PERL. 

Este es mi primer código fuente. Es una programa para la consola de linux que suma los N primeros números impares. Es simple como procedimiento, lo encuadro en un nivel de dificultad "ni media neurona". 

Helo aqui

#!/usr/bin/perl
# este programa calcula la suma de los N (es el limite) primeros numeros 
# utiliza un bucle for. 
print"*************************************\n";
print"* SUMA DE IMPARES 0.1               *\n";
print"* ---- -- ------- ---               *\n";
print"*************************************\n";
print"cuantos impares desea sumar :";
chop($limite=<STDIN>);
print "\n";
# iniciar las variables que voy a usar en los calculos
# $suma llevara los totales de las sumas sucesivas
$suma=1;
for ($i=1;$i<$limite;$i++){
$suma=$suma+(($i*2)+1);
}
print "la suma de los $limite es : $suma \n";

Seguramente en un proximo encuentro subire mas.

miércoles, 30 de noviembre de 2011

Archivos y Permisos


La definicion de archivo en linux expresa lo siguiente “Un archivo es una sucesion de bytes” punto.


Es decir que todo, en el universo de LINUXse puede representar como un archivo, desde la configuracion pasando los sockets, los objetos del kernel en /proc, etc.
Por todo ello el manejo y administración de archivos ocupa una gran parte de comandos y procesos internos. Recordar que la seguridad es un aspecto importantisimo del diseño del sistema operativo.

Permisos

Los permisos de un archivo se componen de tres grupo de tres caracteres.
Cada grupo esta formado por la combinacion de las letras “r”,”w”, “x” y el guión “-” siempre en el orden “rwx”. El guion indica la ausencia de la letra que reemplaza. El primer grupo indica los permisos del propietario del archivo, el segundo grupo indica los permisos del grupo al que pertenece el usuario propietario y el tercer grupo establece los permisos que el resto de los usuarios tienen sombre ese archivo.
Permiso
Archivo
Directorio
r
Lectura del contenido
Listado del contenido
w
Escritura y borrado
Creacion y borrado de archivos
x
Ejecucion
Acceso al directorio.


Usuarios y Grupos


Actualmente la mayoría de sistemas operativos son multiusuario y multitarea. Esto implica que más de un usuario puede trabajar en el sistema de forma simultánea a otros, ejecutando más de una tarea a al vez. Por este motivo es muy importante que el sistema operativo incorpore mecanismos para manipular y controlar correctamente los usuarios: el sistema de login, los programas que puede ejecutar cada uno, protección para los ficheros de los usuarios, etc.

Los sistemas basados en Unix organizan todo esto por usuarios y grupos; al entrar en el sistema debemos identificarnos con un login y una contraseña. El sistema de contraseñas es unidireccional. Esto quiere decir que nuestra contraseña encripta y luego se almacena. Para encriptarla se usa un algoritmo unidireccional, es decir, que a partir de la contraseña cifrada es imposible obtener la original. Por ello, para verificar nuestra cuando hacemos un login, se encripta la contraseña introducida y se comparan las contraseñas encriptadas.1
Si un usuario es un individuo particular que puede entrar en el sistema, un grupo es un conjunto de usuarios con acceso al sistema que comparten unas mismas características, de forma que nos es útil agruparlos para poder darles una serie de permisos especiales en el sistema. Un usuario debe pertenecer, al menos, a un grupo.
En todo sistema debe haber un superusuario (root), que tendrá todos los permisos y privilegios máximos que le permitirán hacer cualquier operación sobre el sistema. Es importante que esta cuenta no se utilice para trabajar habitualmente en el sistema. Sólo deberíamos entrar como root cuando sea necesario, utilizando otras cuentas para el trabajo normal.
Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso simultáneamente. Cada usuario podrá tener su configuración y sus archivos independientes. Una cuenta de usuario tiene por finalidad permitir el acceso a una sesión de trabajo.
Los grupos permiten asignar permisos de ficheros y directorios a muchos usuarios de una vez. A un grupo pueden pertenecer varios usuarios y un usuario puede pertenecer a varios grupos. Los grupos son contenedores de cuentas con el fin de otorgar permisos a través de ellos
Un usuario tiene asignado un grupo principal o por defecto.
La pertenencia de un usuario a un determinado conjunto de grupos define un entorno de seguridad, que restringe las tareas que ese usuario puede o no puede realizar en el sistema.
El funcionamiento normal del proceso de autenticación de GNU/linux, se baja en tres archivos. /etc/passwd; /etc/group y /etc/shadow.
  • /etc/passwd = contiene ifnormacion las cuentas de usuarios
  • /etc/shadow = contiene las contraseñas.
  • /etc/group = contiene los grupos.
Se podria añadir un par mas
  • /etc/gshadow = contiene las contraseñas de grupo. (no en todos los casos)
  • /etc/skel= directorio que contiene el contenido del directorio de los nuevos usuarios.
Los campos de estos ficheros contienen toda la información que podemos manipular de los usuarios. Pero esto no suele hacerse editando directamente estos ficheros (aunque puede hacerse) sino que existen unos comandos específicos para facilitarnos esta tarea.

Campos de /etc/passwd

  • Nombre de usuario: es unico en el sistema, es el que se ingresa en la pantalla de bienvenida.
  • Contraseña: cuando se hace uso del mecanismo de shadow, aquí solo aparece una “x”, la verdadera contraseña cifrada se encuentra en el archivo /etc/shadow
  • identificador de usuario: es el uid, un numero unico, asociado al usuario. 0=root
  • Grupo: grupo al que pertenece el usuario, debe pertenecer al menos a un grupo.
  • Comentarios: nombre completo del usuario.
  • directorio personal: muestra el directorio home del usuario. Es decir donde estaran su informacion y archivos personales.
  • interprete de comandos: es la shell, que el administrador definio para el uso de ese usuario.
Formato de cada linea del /etc/passwd
usuario:Contraseña:identificador:Grupo:comentarios:directorio :interprete.


Campos de /etc/group

Nombre del grupo
Contraseña cifrada de grupo (si existe)
Lista de integrantes del grupo separados por comas.
1El hecho de que las contraseñas encriptadas puedan ser leídas no compromete la seguridad de nuestro sistema

El sistema de archivos


Definicion

Los sistemas de archivos (en inglés:filesystem), estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.

Rutas y nombre de archivos


Normalmente los archivos y carpetas se organizan jerárquicamente.
La estructura de directorios suele ser jerárquica, ramificada o "en árbol", aunque en algún caso podría ser plana. En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y números de versión. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.
En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta" —o path en inglés—. La nomenclatura para rutas varía ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura. Una ruta viene dada por una sucesión de nombres de directorios y subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún carácter especial que suele ser una diagonal ('/') o diagonal invertida ('\') y puede terminar en el nombre de un archivo presente en la última rama de directorios especificada.

Jerarquia del sistema de archivos.

Los sistemas de archivos necesitan disponer de una forma estructurada de almacenar la información en la memoria secundaria, los discos duros y otros dispositivos de almacenamiento. Para eso se crean el sistema de archivos que organiza dicha informacion, de forma jerarquica como un arbol invertido. En GNU/linux se utiliza la Filesystem Hyerachy Standard (FHS) que especifica cómo se han de organizar. Los dispositivos de almacenamiento de un PC con ubuntu, no tienen letras de unidad, sino que son accedidos mediantes su montaje (enlace) en el sistema de archivos.

Ejemplo de 'ruta' en un sistema Unix

Así, por ejemplo, en un sistema tipo Unix como GNU/Linux, la ruta para la canción llamada "canción.ogg" del usuario "álvaro" sería algo como:
/home/álvaro/Mi música/La canción.ogg
en donde:
'/' representa el directorio raíz donde está montado todo el sistema de archivos.
'home/álvaro/Mi música/' es la ruta del archivo.
'La canción.ogg' es el nombre del archivo.
que se establece como único.

Ejemplo de 'ruta' en un sistema Windows

Un ejemplo análogo en un sistema de archivos de Windows (específicamente en Windows XP) se vería como:
C:\Documents and Settings\alvaro\Mis Documentos\Mi Música\canción.mp3
donde:
'C:' es la unidad de almacenamiento en la que se encuentra el archivo.
'\Documents and Settings\alvaro\Mis Documentos\Mi Música\' es la ruta del archivo.
'canción' es el nombre del archivo.
'.mp3' es la extensión del archivo, este elemento, parte del nombre, es especialmente relevante en los sistemas Windows, ya que sirve para identificar qué aplicación está asociada con el archivo en cuestión, es decir, con qué programa se puede editar o reproducir el archivo.

Algunos directorios importantes.

El sistema de archivos se estructura como ya hemos dicho, deforma jerarquica, desde su raíz “/” y siguiendo la FHS lo comun es encontrar los siguientes directorios.
  • /bin: en este directorio se almacenan los comandos básicos para todos los usuarios que utilicen el sistema.
  • /boot: en este directorio se almacenan los archivos estaticos necesarios para el arranque del sistema, incluido lo necesario para que el cargador de arranque funcione correctamente.
  • /dev: en este directorio se almacenan los archivos que representan a los dispostivos del sistema.
  • /etc: en esta ubicación se suelen almacenar los archivos de configuración del sistema y de los programas que se instalaron en el mismo. En muchas distribuciones tambien se almacenan aquí los scripts de arranque del propio sistema operativo.
  • /home: de este directorio cuelgan los directorios personales de cada uno de los usuarios registrados en el sistema.
  • /lib: aquí se disponen las librerias que el kernel, los modulos, y los programas necesitan para funcionar.
  • /mnt: En este directorio se solian montar los dispositivos como discos adicionales, unidades de CD o pendrives USB, en la actualidad muchas distribuciones prefieren por usar el directorio /media para esto.
  • /proc: este es un directorio no fisico. Ya que no existe como tal en el disco rígido. Guarda el estado del kernel, variables y procesos.
  • /root: es el directorio del superusuario.
  • /sbin: en este directorio los comando de administracion que utiliza el root o superusuario.
  • /usr: es una segunda estructura. Se utiliza para almacenar todo el software instalado.
  • /var: es un directorio que “en teoria” debe tener tamaño debe ser muy cambiante. Ya que contiente los subdirectorios de logs, colas de impresion, almacen de correo electronico y paginas web dinamicas. En los servidores fisicamente se coloca en una pariticion o disco fisico distinto al resto del sistema de archivos.

Otra forma de arrancar UBUNTU


Existen formas sencillas para arrancar UBUNTU una computadora sin la necesidad de instalar el sistema y evitar los riesgos que dicha instalacion conlleva.
Wubi: desde la version 08.04, el proyecto Ubuntu distribuye una herramienta muy curiosa, llamada Wubi. Es un instalador de Ubuntu para Windows, y su funcionamiento es simple pero efectivo: Instala Ubuntu en un archivo que se guarda en el la particion windows, mas particularmente en C:/ubuntu/disk/root.disk, modifica el gestor de arranque de windows agregandole una entrada para ubuntu, y listo! Al arrancar la PC en el cargador de windows aparace una nueva opcion “Ubuntu” que si la seleccionamos arrancará perfectamente, leyendo todo lo necesario de ese arhivo al que, el sistema, indetifica como un disco rigido.
Esta forma de trabajo no modifica en absoluto las tablas de particiones, lo cual es recomendable para los usuarios sin experiencia y por otro lado facilita enormente a la instalación, ya que en la pantalla wubi solicita todos los datos necesarios. No es una virtualizacion, es una instalación real, con la excepción que se usa un archivo en una particion windows.





Inicio/arranque del sistema


El arranque de un sistema GNU/Linux consta de las siguientes fases:

  • Ejecución del gestor de arranque (ej.: LILO o GRUB).
  • Carga y ejecución del kernel.
  • Ejecución de init (proceso número 1)* Ejecución de scripts de iniciación genéricos en /etc/rcS.d.
  • Entrada en el runlevel por defecto: ejecución de scripts del runlevel en /etc/rcX.d, donde X el el número del runlevel.

A grandes rasgos el proceso ocurre así:

Al conectar o reiniciar el ordenador, la BIOS busca en su configuración el dispositivo de arranque por defecto, el cual suele ser un disco duro, indicado generalmente en la configuración de la BIOS por C. Entonces carga en memoria el primer sector del dispositivo de arranque y le transfiere el control. Cuando se trata de un disco duro, este primer sector es el Master Boot Record (MBR) y contiene, además del código cargado por la BIOS, la tabla de particiones del disco. El código en el MBR, generalmente, lee en la tabla de particiones cuál es la partición activa y carga en memoria el primer sector de la misma, transfiriéndole el control.

En nuestro caso, este sector estará ocupado por un gestor de arranque que nos permitirá arrancar GNU/Linux u otro sistema operativo. Opcionalmente, puede instalarse el gestor en el MBR, tomando antes el control. Una vez cargado el gestor de arranque, éste se ejecuta, busca el kernel de Linux en una posición conocida del disco, carga el kernel en memoria y le cede el control. El kernel se almacena comprimido en disco, por lo que lo primero que hace el código del kernel que se ejecuta inicialmente es descomprimir el propio kernel y situarlo en memoria. Entonces se ejecuta realmente el kernel y empieza una lista de comprobaciones y activación de módulos internos del mismo.
Una vez funcionando, el kernel monta el disco principal donde se almacena el sistema operativo (root filesystem y ejecuta el primer proceso: init. La misión de init es ejecutar el resto de procesos del sistema: comprobación de discos, detección/configuración de hardware adicional, apertura de terminales, servidores, etc.
Una vez que el kernel se ha cargado en memoria, ejecuta el programa init, que se convierte en el proceso número 1 y se encarga de ejecutar el resto de programas que hacen que el sistema funcione. La operación de init se configura en el fichero /etc/inittab. Empezando en este fichero se puede seguir paso a paso el proceso de arranque (y parada) del sistema. Lo importante a saber aquí es que init no hace demasiado por si mismo, sino que se limita a ejecutar una serie de guiones o scripts que activan ordenadamente los diferentes servicios que hacen funcionar el sistema.
En primer lugar se ejecutan por orden alfabético todos los scripts que se encuentren bajo el directorio /etc/rcS.d que comiencen por ’S’ con “start” como argumento. Por convenio estos scripts se nombran comenzando por un número de dos cifras para establecer el orden adecuado. Cada script tiene una función particular, por ejemplo:
S10checkroot.sh comprueba el sistema de ficheros.
S20adjtimex ajusta el reloj del sistema.
S40networking activa los interfaces de red.
En realidad, y por convenio, estos scripts no se sitúan directamente en /etc/rcS.d, sino que se guardan en el directorio /etc/init.d y desde ahí se hacen enlaces simbólicos a /etc/rcS.d. De esta forma es más fácil añadir, eliminar y ordenar los componentes. Las tareas realizadas por los scripts en /etc/rcS.d son las básicas para arrancar el sistema. Luego se ejecutan otra serie de scripts correspondientes a un runlevel o nivel de ejecución.
Los runlevels (niveles de ejecución) son un mecanismo para permitir que el ordenador trabaje con diferentes configuraciones de arranque (diferentes servicios, etc.).
Los runlevels se numeran del 0 al 6. El 0 se ejecuta para parar el sistema (halt), el 6 para reiniciar (reboot) y el 1 para arrancar en modo single user, que viene a ser una cofiguración mínima para realizar tareas de administración.
El resto de los runlevels son para funcionamiento normal. El runlevel por defecto es el 2 (se configura en /etc/inittab), empleando los otros sólo en situaciones especiales. En Debian, los runlevels del 2 al 5 se configuran inicialmente de forma idéntica.
Así, el proceso de arranque suele continuar ejecutando los scripts del runlevel correspondiente situados en /etc/rcX.d, donde X es el número del runlevel. La forma de ejecutar estos scripts es análoga al caso anterior, salvo que ahora se ejecutan primero los scripts que comiencen con ’K’ con argumento “stop” y luego los que comienzan con ’S’ con argumento “start”.
La idea es que cada script gestione una tarea o servicio. Este servicion se inicia cuando el script se ejecuta con el argumento “start” y se detiene cuando se usa el argumento “stop”. De esta forma en cada runlevel puden detenerse los servicios que no se necesiten y activarse aquellos que interese. Este sistema también facilita el arranque y parada de servicios, ejecutando estos scripts manualmente con el argumento apropiado. En cualquier momento, el administrador puede hacer que el sistema cambie a otro runlevel ejecutando el comando telinit con un argumento numérico indicando el nuevo runlevel. Por ejemplo:
# telinit 3
En general, no hay que preocuparse por la configuración del arranque, ya que el sistema de instalación se ocupa automáticamente de actualizar la configuración en función de los paquetes instalados.

Tras todos estos pasos, el sistema muestra la pagina de bienvenida. Donde se debe escribir el nombre de usuario y la clave de acceso y si existen instalados mas de una interfaz, se puede elegir en cual trabajar.

Proyecto UBUNTU

Acerca del nombre
Ubuntu es una ideología ética propia de Sudáfrica, que se centra en la lealtad a las personas y en las relaciones entre ellas. La palabra procede de los idiomas zulú y xhosa. Ubuntu se percibe como un concepto tradicional africano, siendo considerado uno de los principios fundadores de la nueva república de Sudáfrica, y está conectado a la idea de un Renacimiento Africano.
Una traducción a grandes rasgos del principio de Ubuntu sería «humanidad hacia los demás». Otra traducción podría ser: «la creencia en un vínculo universal de convivencia que conecta a toda la humanidad».
«Una persona con ubuntu está abierta y disponible para los demás, se afirma en los demás, no se siente amenazada por la habilidad y bondad de los demás, tiene una seguridad en sí mismo que proviene del hecho de saber que él o ella forman parte de un gran todo y se reduce cuando los demás son humillados o disminuidos, cuando los demás son torturados u oprimidos.» Arzobispo Desmond Tutu
Como una plataforma basada en software libre, el sistema operativo Ubuntu lleva el espíritu de ubuntu al mundo del software.

Pilares de Ubuntu

  • Ubuntu siempre será gratuito y no tiene costes adicionales en la «enterprise edition»; hacemos accesible nuestro mejor trabajo a cualquiera en los mismos términos de gratuidad.
  • Ubuntu usa lo mejor en infraestructura de traducciones y accesibilidad que la comunidad del software libre es capaz de ofrecer, para hacer que Ubuntu sea utilizable por el mayor número de personas posible.
  • Ubuntu se publica se manera regular y predecible; se publica una nueva versión cada seis meses. Puede usar la versión estable actual o ayudar a mejorar la versión actualmente en desarrollo. Cada versión está soportada al menos durante 18 meses.
  • Ubuntu está totalmente comprometido con los principios del desarrollo de software de código abierto; animamos a la gente a utilizar software de código abierto, a mejorarlo y a compartirlo.
Hay muchos sistemas operativos distintos basados en Linux: Debian, SuSE, Gentoo, RedHat y Mandriva son algunos ejemplos. Ubuntu es otro competidor más en lo que ya es un mundo altamente competitivo. Así que ¿qué hace a Ubuntu diferente?
Basada en Debian, una de las distribuciones más aclamadas, tecnológicamente avanzadas, y bien soportada, Ubuntu intenta crear una distribución que proporcione un sistema al día y coherente con sistemas Linux de escritorio y servidor. Ubuntu incluye un cuidadoso número de paquetes seleccionado de la distribución Debian y manteniendo su poderoso sistema de administración de paquetes que permite una fácil instalación y eliminación limpia de programas. A diferencia de la mayoría de las distribuciones que vienen con una gran cantidad de programas que pueden o no ser útiles, la lista de paquetes de Ubuntu se reduce a un número importante de aplicaciones de alta calidad.
Al centrarse en la calidad, Ubuntu produce un entorno robusto y lleno de características que es adecuado para su uso en el hogar y en entornos comerciales. El proyecto se toma el tiempo necesario para centrarse en los detalles más pequeños y es capaz de liberar una versión que ofrece lo último y lo mejor de hoy en día el software, una vez cada seis meses. Ubuntu está disponible para 32-bit y 64-bit y se ejecuta en la mayoría de los equipos modernos. También está disponible para las arquitecturas Sun UltraSPARC y Amazon EC2.

Lanzamiento y Versiones

Las versiones estables se liberan cada 6 meses y Canonical proporciona soporte técnico y actualizaciones de la seguridad para la mayoría de las versiones de Ubuntu durante 18 meses, excepto para las versiones LTS (Long term support) que ofrece 3 años para la versión escritorio y 5 años para la versión servidor, a partir de la fecha del lanzamiento.

Soporte técnico extendido (LTS)

Cada 4 versiones de Ubuntu se libera una versión con soporte técnico extendido a la que se añade la terminación LTS.
Esto significa que los lanzamientos LTS contarán con actualizaciones de seguridad de paquetes de software durante tres años en entorno de escritorio y cinco años en servidor por parte de Canonical, a diferencia de los otros lanzamientos de Ubuntu que sólo cuentan con 18 meses de soporte.

El software incluido

Posee una gran colección de aplicaciones para la configuración de todo el sistema, valiéndose principalmente de interfaces gráficas. El entorno de escritorio predeterminado de Ubuntu es GNOME y se sincroniza con sus liberaciones. Existen otras dos versiones oficiales de la distribución, una con el entorno KDE, llamada Kubuntu, y otra con el entorno Xfce, llamada Xubuntu; existen otros escritorios disponibles, que pueden ser instalados en cualquier sistema Ubuntu independientemente del entorno de escritorio instalado por defecto.
Aplicaciones de Ubuntu: Ubuntu es conocido por su facilidad de uso y las aplicaciones orientadas al usuario final. Las principales aplicaciones que trae Ubuntu son: navegador web Mozilla Firefox, cliente de mensajería instantánea Empathy, cliente de redes sociales Gwibber, cliente de correo Thunderbird, reproductor multimedia Totem, reproductor de música Banshee, gestor y editor de fotos Shotwell, cliente de torrents Transmission, grabador de discos Brasero, suite ofimática LibreOffice, y el instalador central para buscar e instalar aplicaciones Centro de software de Ubuntu.
Seguridad y accesibilidad: El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un cortafuegos predeterminado, ya que no existen servicios que puedan atentar a la seguridad del sistema. Para labores o tareas administrativas en la línea de comandos incluye una herramienta llamada sudo (de las siglas en inglés de SuperUser do), con la que se evita el uso del usuario administrador. Posee accesibilidad e internacionalización, de modo que el sistema esté disponible para tanta gente como sea posible.
No sólo se relaciona con Debian por el uso del mismo formato de paquetes .deb. También tiene uniones muy fuertes con esa comunidad, contribuyendo con cualquier cambio directa e inmediatamente, y no sólo anunciándolos. Esto sucede en los tiempos de lanzamiento. Muchos de los desarrolladores de Ubuntu son también responsables de los paquetes importantes dentro de la distribución Debian.
Para centrarse en solucionar rápidamente los bugs, conflictos de paquetes, etc. se decidió eliminar ciertos paquetes del componente main, ya que no son populares o simplemente se escogieron de forma arbitraria por gusto o sus bases de apoyo al software libre. Por tales motivos inicialmente KDE no se encontraba con más soporte de lo que entregaban los mantenedores de Debian en sus repositorios, razón por la que se sumó la comunidad de KDE creando la distribución GNU/Linux Kubuntu.

Modos de instalar.

  • Wubi: un instalador libre y oficial de Ubuntu para sistemas operativos Windows cuyo objetivo es el de permitir que usuarios de ese sistema, no acostumbrados a Linux, puedan probar Ubuntu sin el riesgo de perder información durante un formateo o la modificación de particiones. El programa viene de serie en el LiveCD de Ubuntu, aunque es posible descargarlo de la página oficial.
  • LiveUSB: una herramienta que viene de serie y que permite la creación de un LiveUSB de la distribución, de modo que se pueda cargar el sistema desde una memoria USB permitiendo guardar datos y configuraciones en el mismo, pero con la limitación de que sólo funciona en una computadora cuya placa base soporte el arranque desde un medio USB.95
  • LiveCD/DVD personalizado: existen herramientas como Reconstructor, UCK o remastersys que permiten a cualquiera crear fácilmente un LiveCD/DVD personalizado de una instalación existente de Ubuntu.
  • CD de instalación mediante red: se trata de una imagen ISO de apenas unos 10 MB que contiene los paquetes necesarios para descargar el sistema base desde los repositorios oficiales de Ubuntu y posteriormente elegir el escritorio deseado.96

Distribuciones


Antes de que aparecieran las primeras distribuciones, cualquier usuario de Linux debía tener una alta capacitación en Unix; no solo debía saber qué bibliotecas y binarios (ejecutables) necesitaba para iniciar el sistema y que funcionase, sino también los detalles importantes que se requieren en la instalación y configuración de los archivos en el sistema.
Las distribuciones eran originalmente una cuestión de comodidad para el usuario medio, evitándole la instalación (y en muchos casos compilación) por separado de paquetes de uso común, pero hoy se han popularizado incluso entre los expertos en éste tipo de sistemas operativos (UNIX/Linux). Si bien, históricamente, Linux estuvo mejor posicionado en el mercado de los servidores, distribuciones centradas en la facilidad de instalación y uso, tales como Fedora, Mandriva, OpenSuSE, Knoppix y Ubuntu, entre otras, han logrado una mayor aceptación en el mercado doméstico.
Entre las distribuciones más antiguas se incluían: 
  • Dos discos denominados H J Lu's «Boot-root» con el núcleo y un mínimo de herramientas para utilizar. 
  • MCC Interim Linux, que se podía descargar en un servidor público FTP de la Universidad de Mánchester en febrero de 1992. 
  • TAMU, creado por entusiastas de la Universidad de Texas A&M al mismo tiempo que SLS 
  • SLS (Softlanding Linux System). Esta distribución no estuvo bien mantenida; así pues, Patrick Volkerding lanzó una distribución basada en SLS a la que llamó Slackware; lanzada el 16 de julio de 1993. Esta es la distribución más antigua que está en desarrollo activo.
  • Yggdrasil Linux creó el primer CD-ROM de una distribución Linux.

Tipos de Distribuciones
En general, las distribuciones Linux pueden ser:

  • Comerciales o no comerciales.
  • Ser completamente libres o incluir software privativo.
  • Diseñadas para uso en el hogar o en las empresas.
  • Diseñadas para servidores, escritorios o dispositivos empotrados.
  • Orientadas a usuarios regulares o usuarios avanzados.
  • De uso general o para dispositivos altamente especializados, como un cortafuegos, un enrutador o un cluster computacional.
  • Diseñadas e incluso certificadas para un hardware o arquitectura específicos.
  • Orientadas hacia grupos en específico, por ejemplo a través de la internacionalización y localización del lenguaje, o por la inclusión de varios paquetes para la producción musical o para computación científica.
  • Configuradas especialmente para ser más seguras, completas, portables o fáciles de usar.
  • Soportadas bajo distintos tipos de hardware.

La diversidad de las distribuciones Linux es debido a cuestiones técnicas, de organización y de puntos de vista diferentes entre usuarios y proveedores. El modo de licenciamiento del software libre permite que cualquier usuario con los conocimientos e interés suficiente pueda adaptar o diseñar una distribución de acuerdo a sus necesidades.
Una distribución live o Live CD o Live DVD, más genéricamente Live Distro, (traducido en ocasiones como CD vivo o CD autónomo), es una distribución almacenada en un medio extraíble, tradicionalmente un CD o un DVD (de ahí sus nombres), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro de una computadora, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de archivos.
Cuando el sistema operativo es ejecutado por un dispositivo de sólo lectura como un CD o DVD, el usuario necesita utilizar una memoria USB o un disco duro instalado en la máquina para conservar su información entre sesiones. La información del sistema operativo es usualmente cargada en la memoria RAM.
La portabilidad de este tipo de distribuciones las hace ideales para ser utilizadas en demostraciones, operaciones de recuperación, cuando se utiliza una máquina ajena o como medio de instalación para una distribución estándar. Actualmente, casi todas las distribuciones tienen una versión CD/DVD autónomo o «vivo».

GNU/Linux vs Windows


Ventajas tiene GNU/Linux sobre Windows


  • Es más seguro: Ya que la gran mayoría de los ataques de hackers son dirigidos a servidores Windows al igual que los virus los cuales se enfocan principalmente a servidores con éste sistema operativo. La plataforma Linux es más robusta lo cual hace más difícil que algún intruso pueda violar el sistema de seguridad de Linux. 
  • Es más rápido:  Al tener una plataforma más estable, ésto favorece el desempeño de aplicaciones de todo tipo tales como: bases de datos, aplicaciones XML, multimedia, etc. La eficiencia de su código fuente hace que la velocidad de las aplicaciones Linux sean superiores a las que corren sobre Windows lo cual se traduce en velocidad de su página.
  • Es más económico: Ya que requieren menor mantenimiento. En servidores windows es más costoso debido a que es necesaria una frecuente atención y monitoreo contra ataques de virus, hackers y errores de código, instalación y actualización de parches y service packs. El software Linux así como también un sin número de aplicaciones son de código abierto (gratuitos).
  • No requieren supervisión tan estrecha ni pagos de pólizas de mantenimiento necesarias para obtener los Service Packs.



¿Qué ventajas tiene Windows sobre GNU/Linux?


  • Es más fácil: Al ser de mayor facilidad de uso Windows en este momento continúa siendo el sistema operativo más comercial lo cual se refleja en la disponibilidad de aplicaciones, facilidad de mantenimiento así como soporte en el desarrollo de nuevas aplicaciones, puntos que pueden ser cruciales en la elección de servidores que corren aplicaciones web.
  • Aplicaciones desarrolladas en menor tiempo : Fruto de la inversión realizada por Microsoft y aunado a una comunidad de programadores cada vez más grande se ha logrado facilitar el desarrollo de aplicaciones y sistemas que corran sobre servidores Windows lo cual se ve reflejado en tiempos de desarrollo menores.
  • La curva de aprendizaje en el sistema Windows es mucho menor.

Ventajas y desventajas del Software Libre

Ventajas
  • Bajo costo de compra: Se trata de un software económico ya que permite un ahorro de grandes cantidades en la adquisición de las licencias. 
  • Innovación tecnológica: esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y así decidir de manera conjunta hacia donde se debe dirigir la evolución y el desarrollo del software. Este es un gran avance en la tecnología mundial. 
  • Independencia del proveedor: al disponer del código fuente, se garantiza una independencia del proveedor que hace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software. 
  • Control  público: esto hace que la corrección de errores y la mejora del producto se lleven a cabo de manera rápida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto. 
  • Maleabilidad del software : esta cualidad resulta de gran utilidad para empresas e industrias específicas que necesitan un software personalizado para realizar un trabajo específico y con el software libre se puede realizar y con costes mucho más razonables. 
  • Diversidad de Idioma: aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traducción y localización para que usuarios de diferentes partes del mundo puedan aprovechar estos beneficios.
Desventajas
  • La curva de aprendizaje es mayor.
  • El software libre no tiene garantía proveniente del autor.
  • Se necesita dedicar recursos a la reparación de erratas.
  • No existiría una compañía única que respaldará toda la tecnología.
  • Las interfaces amigables con el usuario (GUI) y la multimedia apenas se están estabilizando.
  • El usuario debe tener nociones de programación, ya que la administración del sistema recae mucho en la automatización de tareas y esto se logra utilizando, en muchas ocasiones, lenguajes de guiones (perl, python, shell, etc).
  • La diversidad de distribuciones, métodos de empaquetamiento, licencias de uso, herramientas con un mismo fin, etc., pueden crear confusión en cierto número de personas.

Origenes de GNU/linux.


Un sistema operativo es software que se ejecuta en el hardware de una computadora u otro dispositivo electronico (celular, tablet, etc.) para administrar los recursos de hardware y software del sistema. El sistema operativo debe ofrecer al usuario, una maquina  virtual simple con la sea sencillo interactuar. Entre estos servicios se cuenta la ejecucion de programas (aplicaciones), las operaciones de entrada / salida, la comunicación entre procesos, la deteccion de errores y la manipulacion de archivos.
GNU/ Linux es un sistema operativo completamente gratuito. Es la creación de Linus B. Torvalds. A comienzos de la década de 1990, Torvalds quiso crear su propio sistema operativo para su proyecto de graduación. Linus Torvalds intentó desarrollar una versión de UNIX que pudiera utilizarse en una arquitectura de tipo 80386. El primer clon de UNIX que funcionó en un PC fue Minix, escrito por Andrew Tanenbaum. Éste era un sistema operativo mínimo que se podía usar en un PC. Después, Linus Torvalds decidió ampliar las posibilidades de Minix al desarrollar lo que se convertiría en Linux. Entusiasmados con esta iniciativa, diversas personas contribuyeron para ayudar a Linus Torvalds a hacer de su sistema una realidad. En 1991, la primera versión del sistema salió al mercado. En marzo de 1992 se distribuyó la primera versión, la cual no tenía prácticamente ningún error.
Al aumentar la cantidad de desarrolladores que trabajaban en el sistema, éste integró rápidamente nuevos desarrollos gratuitos de herramientas disponibles en sistemas UNIX comerciales. Después, comenzaron a aparecer nuevas herramientas para Linux con una velocidad increíble.

La originalidad de este sistema radica en el hecho de que Linux no se desarrolló con fines comerciales. De hecho, no se copió ni una sola línea de código de los sistemas UNIX originales (en realidad, Linux se inspira en diferentes versiones comerciales de UNIX: BSD UNIX, System V). Por lo tanto, una vez creado, todos pueden usar Linux gratuitamente e incluso pueden mejorarlo. Si bien en un principio Linux se diseñó para ejecutarse en una plataforma de PC, se ha expandido (es decir, adaptado) para otras plataformas como Macintosh, estaciones SPARC, DEC Alpha e incluso plataformas como las que utilizan los asistentes personales (PDA), ¡hasta consolas de videojuegos!



sábado, 15 de octubre de 2011

Hacer un Servidor de Infraestructura de Red (parte I)

Hola mis estimados "leyentes" gracias por su intereses, en este articulo voy a tratar de contarles como se pone en funcionamiento un servidor de infraestructura de red.
Introducción
Este trabajo corresponde al proyecto final de una Asignatura correspondiente al 2do año de la Carrera que estoy cursando: "Laboratorio de Sistemas Operativos II", utilizando sistemas no propietarios, Es decir, GNU/Linux, me correspondió por sorteo el tema de este articulo, "servidor de infraestructura de red".
Lo primero que corresponde es saber ¿que es un servidor de infraestructura de red?
"es una computadora (usando el termino en un sentido genérico) que se coloca como pasarela entre Internet y una red interna (hogar, escuela, oficina, y un gran etc.) para que controle, organice, vigile el transito de los datos (trafico) entre Internet y la red interna.

Este servidor debe proveer los siguientes servicios.
  • DHCP
  • Cache DNS
  • Proxy
  • Control de Contenido
  • Antivirus
A continuación trataré de explicar que significan cada uno de estos servicios, los programas que los realizan y como queda la configuración final de los mismos, debo aclarar que para cumplir con este punto realicé  el trabajo en una Netbook Banghó, que tenia instalado GNU/linux Ubuntu 11.04.





Servidor DHCP:
Imagine estimado lector que tanto nuestro servidor y las PCs. establecen el siguiente dialogo:

Servidor - Yo soy la maquina que reparte numeros IP, estoy escuchando pedidos de numeros IP!
PC2 - me acabo de encender, mi placa de red tiene el numero 99aaF165cce9, que numero ip me das?
Servidor -  tu numero de IP es 10.0.5.10, si no te volvés a conectar en XX horas voy a darle ese numero a otra placa de red.
PC2 - OK. Gracias!

Bien , creo si bien el método didactico esta un poco traído de los pelos, tambien me parece que se entiende el sentido del dialogo y la función final del programa. El servicio dhcp, es el que reparte los números IP a cada computadora de la red para identificarla univocamente.

Una definición mas formal dice que :
DHCP (sigla en inglés de Dynamic Host Configuration Protocol - Protocolo de configuración dinámica de host) es un protocolo de red que permite a los clientes de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después (fuente wikipedia).
Servidor DNS:
El servicio DNS (servidor de dominios de nombre) son formas y procesos que permiten "traducir"  una direccion de Internet de una pagina web como por ejemplo "http://ovejero.dyndns.org" a una direccion ip 190.229.239.266 para lograr esto existen computadoras que funcionan como una gran "guía de teléfonos",  solo que en vez de los nombres y números de teléfonos, tenemos direcciones de Internet y números ips de correspondientes a esas direcciones.
Ahora bien cuando usted solicita acceso a una direccion web su sistema le pregunta al módem cual es el numero IP de esa direccion (URL), si no lo sabe le pregunta al servidor central, y así hasta que algún servidor de dns tiene la direccion que ud solicita y la devuelve. (resolución de nombres)
Ahora piense, que cantidad de saltos entre servidores hay que realizar ¿verdad? entonces habría que hacer 2 preguntas mas
1) ¿no es mejor indicarle la direccion de algun servidor DNS conocido e idóneo?
2) ¿No seria aun mejor si en la memoria de nuestra PC (servidor) tuviéramos una "guía" de todas las resoluciones de sitios que generalmente visitan las pc de nuestra red?(para no tener que ir a buscarla a otro servidor)

Respuestas:
1) Claro, en GNU/Linux existe un programa (entre tantos) que cumple esta funcion y se llama dnsmasq
2) claro! este proceso se llama cache dns y se puede configurar en dnsmasq

dnsmasq
este programa es uno de los indicados para cumplir con estas tareas del servidor DNS, DNS-CACHE

Servidor Proxy:
Un proxy es un programa o dispositivo que realiza una tarea acceso a Internet en lugar de otro ordenador. Un proxy es un punto intermedio entre un ordenador conectado a Internet y el servidor al que está accediendo. Cuando navegamos a través de un proxy, nosotros en realidad no estamos accediendo directamente al servidor, sino que realizamos una solicitud sobre el proxy y es éste quien se conecta con el servidor que queremos acceder y nos devuelve el resultado de la solicitud. Este servicio también se puede configurar como filtro a dominios o direcciones inconvenientes de visitar (firewall -aunque no es el uso para el cual fue diseñado), y también para acelerar la navegación por paginas mas visitadas desde la red interna y que están "cacheadas" en el servidor.
El programa que voy a usar y comentar para que mi servidor tenga Proxy: squid


En un próximo articulo. Control de Contenido