Está en la página 1de 240

ADMINISTRADOR

GNU/LINUX

Creative Commons
Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0
Usted es libre de:

copiar, distribuir y reproducir pblicamente la obra

hacer obras derivadas

Bajo las siguientes condiciones:

Reconocimiento. Debe reconocer los crditos de la obra de la manera


especificada por el autor o el licenciante (pero no de una manera que
sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

No comercial. No puede utilizar esta obra para fines comerciales.

Compartir bajo la misma licencia. Si altera o transforma esta obra, o


genera una obra derivada, slo puede distribuir la obra generada bajo una
licencia idntica a sta.

Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la
licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor
Nada en esta licencia menoscaba o restringe los derechos morales del autor.

Los derechos derivados de usos legtimos u otras limitaciones


reconocidas por ley no se ven afectados por lo anterior.
Esto es un resumen fcilmente legible del texto legal de versin original en Idioma Ingls (la
licencia completa)
http://creativecommons.org/licenses/by-nc-sa/3.0/ec/legalcode

NDICE DE CONTENIDOS

INTRODUCCIN.....................................................................................................................................7
UNIDAD I - INSTALACIN DE GNU/LINUX - DISTRIBUCIN CANAIMA...............................10
PREVIOS A LA INSTALACIN DE GNU/LINUX..............................................................................10
PROCESO DE INSTALACIN DE GNU/LINUX - DISTRIBUCIN CANAIMA............................15
UNIDAD II - SISTEMA X.Org...............................................................................................................21
EL SISTEMA X.Org................................................................................................................................21
SESIONES...............................................................................................................................................26
UNIDAD III - EL SHELL.......................................................................................................................28
USANDO EL SHELL..............................................................................................................................28
SHELL SCRIPTS.....................................................................................................................................30
USANDO HISTORY...............................................................................................................................31
PROCESOS.............................................................................................................................................33
COMANDOS...........................................................................................................................................37
UNIDAD IV - GESTIN DE USUARIOS Y GRUPOS.........................................................................47
GESTIN DE USUARIOS.....................................................................................................................47
GESTIN DE GRUPOS ........................................................................................................................51
PERMISOS DE ARCHIVOS ..................................................................................................................52
PERMISOS: SUID y SGID ....................................................................................................................52
UNIDAD V - EDITOR VIM ...................................................................................................................56
INTRODUCCIN A VIM.......................................................................................................................56
UNIDAD VI - INSTALACIN DE PAQUETES...................................................................................67
ADVANCED PACKAGING TOOL (APT).............................................................................................67
APTITUDE
Aptitude es un envoltorio que trabaja sobre apt. No es grfico, sino que tiene una interfaz con debconf
y tambin puede usarse en lnea de comandos. Qu lo diferencia de apt? ............................................69
SYNAPTIC..............................................................................................................................................70
DPKG.......................................................................................................................................................70
DSELECT................................................................................................................................................71
ALIEN......................................................................................................................................................71
3

UNIDAD VII - KERNEL........................................................................................................................72


DEFINICIN DE KERNEL ..................................................................................................................72
UNIDAD VIII - MANEJO Y TIPOS DEL SISTEMA DE ARCHIVOS.................................................76
CONSIDERACIONES AL MOMENTO DE HACER UN FILE SYSTEM...........................................76
DISPOSITIVOS EN LINUX...................................................................................................................76
PARTICIONES........................................................................................................................................77
SISTEMA DE ARCHIVOS.....................................................................................................................81
CUOTAS DE DISCO...............................................................................................................................87
UNIDAD IX - FUNDAMENTOS DE REDES TCP/IP..........................................................................91
PROTOCOLO TCP/IP.............................................................................................................................91
PROTOCOLOS DE APLICACIONES....................................................................................................91
DIRECCIONES PRIVADAS...................................................................................................................92
CONFIGURACIN DE LA RED...........................................................................................................93
SECURE SHELL SSH..........................................................................................................................99
COMANDOS SSH Y SCP.....................................................................................................................101
SERVICIO VNC ...................................................................................................................................102
UNIDAD X - SERVICIO CUPS............................................................................................................104
FUNCIONAMIENTO DE CUPS..........................................................................................................104
PPDS......................................................................................................................................................105
LA INTERFAZ WEB DE ADMINISTRACIN DE CUPS.................................................................106
IMPRESORAS LOCALES (USB Y PARALELO)...............................................................................107
UNIDAD XI: SERVICIO NFS..............................................................................................................110
DEFINICIN DE NFS..........................................................................................................................110
CARACTERSTICAS TILES DE NFS..............................................................................................110
EL SERVIDOR NFS..............................................................................................................................110
EL CLIENTE NFS.................................................................................................................................114
PRECAUCIONES..................................................................................................................................115
USANDO NIS, NFS Y AUTOFS...........................................................................................................116
UNIDAD XII - SERVICIO SAMBA.....................................................................................................118
INTRODUCCIN ................................................................................................................................118
INSTALACIN DEL SERVIDOR SAMBA ........................................................................................118
4

CONFIGURACIN DEL SERVIDOR ................................................................................................118


COMANDOS SOBRE EL SERVIDOR ................................................................................................119
DANDO DE ALTA USUARIOS ..........................................................................................................120
EL CLIENTE SAMBA .........................................................................................................................121
UNIDAD XIII FIREWALL................................................................................................................125
DEFINICIN DE FIREWALL..............................................................................................................125
ESQUEMA BSICO DE UN CONTRAFUEGO.................................................................................125
POLTICAS DE FIREWALL................................................................................................................125
CMO CREAR UNA POLTICA DE SEGURIDAD?.......................................................................126
TIPOS DE FIREWALL.........................................................................................................................126
SERVIDOR PROXY DE APLICACIN..............................................................................................127
WCCP....................................................................................................................................................129
SNMP.....................................................................................................................................................130
CONTROLES DE ACCESO (ACL)......................................................................................................132
acl red_local src 192.168.1.0/24................................................132
AUTENTICACIN EN SQUID...........................................................................................................135
PROTECCIN DEL FIREWALL.........................................................................................................138
QU ES IPTABLES?...........................................................................................................................138
CREANDO UN FIREWALL CON IPTABLES....................................................................................140
CMO DEPURAR EL FUNCIONAMIENTO DEL FIREWALL?....................................................165
UNIDAD XIV SERVICIO DE DIRECTORIO LDAP.......................................................................166
QU ES LDAP?...................................................................................................................................166
RAZONES PARA UTILIZAR LDAP...................................................................................................166
QU ES UN SERVICIO DE DIRECTORIO?.....................................................................................167
QU TIPO DE INFORMACIN SE PUEDE ALMACENAR EN UN DIRECTORIO?...................168
CMO SE ALMACENA LA INFORMACIN EN LDAP?..............................................................168
CMO SE REFERENCIA LA INFORMACIN EN LDAP?............................................................170
CMO SE ACCEDE A LA INFORMACIN EN LDAP?.................................................................170
CMO PROTEGE LA INFORMACIN DE ACCESOS NO AUTORIZADOS?.............................171
CMO TRABAJA LDAP?.................................................................................................................171
X.500......................................................................................................................................................171
DIFERENCIAS ENTRE LDAP V2 Y V3.............................................................................................172
5

QU ES SLAPD?.................................................................................................................................173
SASL......................................................................................................................................................175
SLDAP (SERVIDOR LDAP) EN DEBIAN........................................................................................175
ADMINISTRACIN DE USUARIOS.................................................................................................180
ADMINISTRACIN DE GRUPOS......................................................................................................190
AUTENTICACIN DE CLIENTES EN LDAP...................................................................................191
LISTAS DE ACCESO EN LDAP..........................................................................................................194
CONEXIONES SEGURAS...................................................................................................................196
MLTIPLES DIRECTORIOS RPLICAS Y CACHE.........................................................................198
CONFIGURACIN DE SERVIDORES ESCLAVOS LDAP .............................................................199
PROXY LDAP.......................................................................................................................................199
UNIDAD XV SERVICIO DE CORREO............................................................................................201
INTRODUCCIN.................................................................................................................................201
PROTOCOLO SMTP............................................................................................................................201
SMTP-AUTH ........................................................................................................................................204
INSTALACIN Y CONFIGURACIN DE UN SISTEMA POSTFIX CON SMTP-AUTH Y TLS EN
DEBIAN ETCH.....................................................................................................................................205
POP3......................................................................................................................................................213
IMAP......................................................................................................................................................215
INSTALACIN DE SERVIDOR IMAP/POP3 COURIER..................................................................218
CORREO BASADO EN WEB (WEBMAIL).......................................................................................218
RoundCube.............................................................................................................................................220
SECCIN DE EJERCICIOS.................................................................................................................221

INTRODUCCIN

SISTEMA OPERATIVO GNU/LINUX


Un sistema operativo consiste en varios programas fundamentales que necesita el computador para
poder comunicar y recibir instrucciones de los usuarios, tales como: leer y escribir datos en el disco
duro e impresoras, controlar el uso de la memoria y ejecutar otros programas. GNU/Linux es un
Sistema Operativo, es una implementacin de libre distribucin UNIX para computadoras personales
(PC), servidores, y estaciones de trabajo.
Como sistema operativo es muy eficiente y tiene un excelente diseo. Es multitarea, multiusuario,
multiplataforma y multiprocesador; en las plataformas Intel corre en modo protegido, protege la
memoria para que un programa no pueda hacer caer al resto del sistema, carga slo las partes de un
programa que se usan, comparte la memoria entre programas aumentando la velocidad y disminuyendo
el uso de memoria, usa un sistema de memoria virtual por pginas, utiliza toda la memoria libre para
cach, permite usar bibliotecas enlazadas tanto esttica como dinmicamente, se distribuye con cdigo
fuente, usa hasta 64 consolas virtuales, tiene un sistema de archivos avanzado pero puede usar los de
los otros sistemas y soporta redes tanto en TCP/IP como en otros protocolos.
En GNU/Linux, Linux es el ncleo y el resto del sistema consiste en otros programas, muchos de los
cuales fueron escritos por o para el proyecto GNU. Dado que el ncleo de Linux en s mismo no forma
un sistema operativo funcional, se prefiere utilizar el trmino GNU/Linux para referirse a los sistemas
que la mayor parte de las personas llaman de manera informal Linux.
La mayor parte del desarrollo de GNU/Linux lo realizan voluntarios de forma altruista, lo que significa
que nadie es dueo del sistema como sucede en otros casos; esto le permite tener grandes ventajas, tales
como: poder elegir entre docenas de distintos intrpretes de lnea de comandos y entre distintos
entornos de escritorio. Tantas opciones confunden a veces a los usuarios de otros sistemas operativos
que no estn acostumbrados a poder modificar el intrprete de lnea de comando o el entorno de
escritorio. Es menos probable que un sistema GNU/Linux se colapse, adems tiene mejor capacidad
para ejecutar mltiples programas al mismo tiempo y es ms seguro que muchos otros sistemas
operativos. Debido a estas ventajas, es el sistema operativo que ha experimentado mayor crecimiento
en el mercado de los servidores.

DEBIAN GNU/LINUX
Dentro de lo que se conoce como proyecto GNU/Linux existen mltiples distribuciones con un punto
comn, el ncleo Linux. Una distribucin GNU/linux es un conjunto de aplicaciones reunidas para
permitir la instalacin sencilla del sistema,

incorpora determinados paquetes de software para

satisfacer las necesidades de un grupo especifico de usuarios, dando as origen a ediciones hogareas,
empresariales y para servidores. Pueden ser exclusivamente de software libre, o tambin incorporar
aplicaciones o controladores propietarios.
Debian GNU/Linux o mejor conocido como Debian, es una de las mltiples distribuciones que hoy en
da se puede encontrar en la red trabajando con el ncleo Linux y basada en el proyecto GNU.
Actualmente, Debian GNU/Linux ofrece 18733 paquetes, programas precompilados distribuidos en un
formato que hace ms fcil su instalacin.
CANAIMA
Es una distribucin GNU/Linux venezolana basada en Debian, excepto por un determinado nmero de
paquetes necesarios para la adaptacin a las necesidades locales de la Administracin Pblica Nacional
(APN), de hecho, surge como una solucin para cubrir las necesidades ofimticas de los usuarios
finales de la APN y para dar cumplimiento al decreto presidencial Nro. 3.390 sobre el uso de
Tecnologas Libres en la APN. Canaima es 100% compatible con Debian y sus paquetes pueden ser
actualizados usando los repositorios oficiales de esta ltima. Entre las caractersticas ms relevantes de
Canaima estn:
Totalmente desarrollada en Software Libre.
No est limitada al uso en la APN, sino que puede ser usado por cualquier persona.
Se encuentra equipado con herramientas ofimticas como OpenOffice, (procesador de palabras,
hojas de clculo, presentaciones), diseo grfico, planificacin de proyectos y bases de datos.
Permite la interaccin con Internet, a travs de su navegador web, gestor de correo electrnico y
aplicaciones para realizar llamadas telefnicas por la red.
Es estable y segura, basada en la versin estable de Linux Debian, la cual pasa por una serie de
procesos y pruebas rigurosas de calidad.

Realizada en Venezuela por talento nacional.


Huso horario nacional actualizado.

UNIDAD I - INSTALACIN DE GNU/LINUX - DISTRIBUCIN CANAIMA

PREVIOS A LA INSTALACIN DE GNU/LINUX


A continuacin se describen los pasos a seguir durante el proceso de instalacin de cualquier
distribucin GNU/Linux:

Realizar una copia de seguridad de los datos o documentacin existente en el disco duro donde
se planea realizar la instalacin.

Reunir informacin sobre el sistema, as como toda la documentacin que se necesite antes de
iniciar la instalacin.

Crear un espacio particionable en el disco duro para la instalacin del sistema operativo, de ser
necesario.

Localizar y/o descargar el programa instalador, as como los archivos de cualquier controlador
especializado que la computadora donde se va a instalar el sistema necesite.

Instalar los archivos de arranque (la mayora de los usuarios de CD pueden arrancar desde uno
de stos).

Arrancar el sistema de instalacin.

Elegir el idioma para la instalacin.

Activar la conexin de red, si est disponible.

Crear y montar las particiones en las que se instalar el sistema operativo.

Esperar a la descarga/instalacin/configuracin automtica del sistema base.

Instalar el gestor de arranque.

Informacin del Hardware de la Computadora.


En la mayora de los casos, el instalador detecta automticamente el hardware del computador donde se
instala el sistema. Sin embargo, es posible que esto no suceda, si es este el caso, se debe estar

preparado. Por lo tanto, se recomienda estar familiarizado con el hardware de la mquina antes de la
instalacin. En este sentido, se debe obtener la informacin del hardware de la computadora, para esto
se pueden utilizar:

Los manuales que vienen con cada pieza de hardware.

Las pantallas de configuracin de la BIOS del computador. Estas pueden verse cuando se
enciende la mquina y se presiona una combinacin de teclas (verificar el manual para saber la
combinacin, la mayora de las veces se utiliza la tecla Supr ).

Las cajas y cubiertas de cada pieza de hardware.

rdenes del sistema o herramientas de otros sistemas operativos, incluyendo las capturas de
pantallas de los gestores de archivos. Esta fuente de informacin es especialmente til para
obtener informacin sobre la memoria RAM y el espacio disponible en el disco duro.

El administrador de sistemas o proveedor de servicio de Internet puede ofrecer informacin


necesaria para configurar la red y el correo electrnico, sto si se sistema est conectado a
alguna red durante todo el da. Por ejemplo, si utiliza una conexin Ethernet o equivalente, pero
no si tiene una conexin PPP (Protocolo Punto a Punto).

HARDWARE

INFORMACIN QUE SE PUEDE NECESITAR

Discos duros

El nmero de discos que tiene.


Orden en el sistema.
Si es IDE SCSI
Espacio libre disponible.
Particiones.
Particiones con otros sistemas operativos instalados.

Monitor

Modelo y fabricante.
Resoluciones soportadas.
Rango de refresco horizontal.
Rango de refresco vertical.
Profundidad de color soportada (nmero de colores).
.Tamao de la pantalla.

Ratn

Tipo: serie, PS/2 USB.


Puerto.
Fabricante.
Nmero de botones.

Red

Modelo y Fabricante.
Tipo de adaptador.

Impresora

Modelo y fabricante.
Resoluciones de impresin soportadas.

Tarjeta de vdeo

Modelo y fabricante.
Memoria RAM de vdeo disponible.
Resoluciones e intensidad de colores soportadas .

Medios de Instalacin
En esta seccin se puede determinar los diferentes tipos de medios que se usan para instalar el sistema
operativo GNU/Linux.

CD-ROM/DVD-ROM: existe soporte para la instalacin basada en CD-ROM para algunas


arquitecturas o para propsitos de recuperacin del sistema.

Dispositivo de memoria USB: son utilizados para gestionar (instalar y cuando sea necesario
recuperar el sistema) servidores y en los casos de sistemas pequeos que no tienen espacio para
unidades innecesarias.

Red: se utiliza durante la instalacin para recuperar archivos. El que se utilice la red o no,

depende del mecanismo de instalacin que se escoja y de las respuestas dadas a algunas
preguntas que se realizarn durante la instalacin. Este sistema de instalacin puede utilizar la
mayor parte de las conexiones de red a travs tanto de HTTP como FTP. Tambin se puede
arrancar el sistema de instalacin a travs de la red.
Tarjetas de Red Inalmbricas
En GNU/Linux existe un buen soporte de la mayora de las tarjetas inalmbricas pero con un factor que
se debe tener en cuenta, y es que una gran cantidad de adaptadores inalmbricos han de utilizarse con
controladores que o bien no son libres o bien no se han aceptado en el ncleo oficial Linux. Estas
tarjetas generalmente pueden configurarse para que funcionen en GNU/Linux, pero no estn soportadas
durante la instalacin.
En algunos casos el controlador que se necesita puede no estar disponible como paquete, en esa
situacin se debe comprobar si existe cdigo fuente disponible en Internet y compilar el controlador
por si mismo. Si no hay algn controlador de Linux disponible se puede utilizar como ltimo recurso el
paquete NDISwrapper que permite el uso de tarjetas inalmbricas en Sistema Operativo GNU/Linux
utilizando el kernel de Windows.
Requisitos de Memoria y Espacio en Disco Duro
En ciertas ocasiones nos puede interesar conocer cules son los requisitos de hardware que necesitan
una u otra distro para su instalacin. No siempre es fcil encontrar dichos datos, por lo que se ha
recopilado

la

informacin

con

ella

se

ha

creado

una

tabla

comparativa

(http://www.microteknologias.cl/blog/?p=904#more-904) que permite decidir cul distribucin


funcionar mejor en la computadora donde se desea instalar el sistema.
En nuestro caso nos interesa las distro Debian y Canaima, por lo tanto la informacin es la siguiente:
Debian 3.0:

Procesador: Intel Pentium 1-4, AMD Duron, Celeron, Athlon, Semprom u Opteron.

RAM: Mnimo 16 MB para modo texto, 64 MB interfaz grfica / Recomendado: 128 MB.

Espacio en Disco Duro: Mnimo 450 MB / Recomendado 4 GB.

Debian 3.1:

Procesador: Intel Pentium 1-4, AMD Duron, Celeron, Athlon, Semprom u Opteron.

RAM: Mnimo 32 MB para modo texto, 194 MB interfaz grfica / Recomendado: 256 MB.

Espacio en Disco Duro: Mnimo 500 MB / Recomendado 3 GB.

Canaima:

Procesador: Basado en Intel x86 i386, mnimo Pentium III.

RAM: Mnimo 64 MB / Recomendado 512 MB.

Espacio en Disco Duro: Mnimo 5 GB.

Esquema de Particiones
El particionamiento es la creacin de divisiones lgicas en un disco duro que permite aplicar el formato
lgico de un sistema operativo especfico. Cada particin aparece ante el sistema como si fuese un
disco independiente.
Un disco duro puede tener un mximo de 4 particiones primarias, porque la informacin de la tabla de
particiones reside (junto con el cdigo de arranque) en el MASTER BOOT RECORD (MBR): el sector
0 del disco. Sin embargo, una de las particiones primarias puede ser designada como particin
extendida y ser subdividida en un nmero ilimitado de particiones lgicas.
GNU/Linux puede ser instalado en cualquier tipo de particin y suele numerar las particiones primarias
de un disco desde 1 a 4 reservando los nmeros 5 y superior para las particiones lgicas.
Es usual que en los sistemas GNU/Linux se creen hasta 3 particiones: la principal representado por el
simbolo / la cual contiene todo el software del Sistema Operativo, una segunda para el directorio home
que contiene las configuraciones de usuario y una tercera llamada swap para la memoria virtual
temporal que es utilizada en casos de sobrecarga de trabajo, esto para un esquema simple y efectivo. Si
el usuario es avanzado puede necesitar particiones separadas para aplicaciones, archivos temporales,
entre otros. Por ejemplo: /usr para el directorio de aplicaciones, /var para el directorio de logs y otros
archivos de tamao variable, /tmp para directorio de archivos temporales y /opt para directorio de
software comercial especfico.

Nomenclatura para Discos y Particiones


En el diseo tradicional UNIX, todo es un fichero y los discos se nombran mediante su fichero de
dispositivo: IDE, SCSI y USB.

IDE : /dev/hda Disco Maestro en canal IDE 0, /dev/hdb Disco Esclavo en canal IDE 0, /dev/hdc
Disco Maestro en canal IDE 1, /dev/hdb Disco Esclavo en canal IDE 1.

SCSI y USB: /dev/sda, /dev/sdbb, entre otros.

Las particiones de un disco se nombran mediante el nombre de dispositivo y el nmero de particin:

Primarias: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4.

Lgicas: /dev/hda5, entre otras.

Gestor de Arranque
Un gestor de arranque es un programa que se carga en el momento de arrancar el computador y permite
elegir qu sistema operativo, de entre los que haya instalados en el disco duro, se quiere iniciar.
Conceptualmente todos los gestores funcionan de la siguiente manera: primero la BIOS del computador
debe leer el cdigo de arranque del MBR (sector 0 del disco). Para ello se debe configurar la BIOS para
que pueda arrancar del disco que se queiere. La BIOS slo sabe arrancar el programa que se encuentra
en el MBR, dicho programa es el gestor de arranque, en su primera etapa y a su vez sabe a qu
particiones tiene que ir a leer para continuar con la carga de la siguiente etapa, y de ah ofrecer un men
para que el usuario seleccione uno u otro sistema operativo.
Uno de los gestores ms flexibles y el que se ha convirtido en estndar es GRUB (GRand Unified
Bootloader) el cual es un gestor de arranque mltiple que se usa comnmente para iniciar dos o ms
sistemas operativos instalados en un mismo computador. GRUB viene preinstalado en la mayora de las
distribuciones de GNU/Linux modernas, entre ellas Debian y sus derivadas.
PROCESO DE INSTALACIN DE GNU/LINUX - DISTRIBUCIN
CANAIMA
Para instalar Canaima se debe bootear con el CD de instalacin, una vez que se inicie el instalador, se
mostrar una pantalla inicial que da la bienvenida al sistema, all se debe pulsar la tecla Enter.

Despus de unos instantes se solicita elegir el idioma. Por defecto, el idioma seleccionado es
Espaol, se puede usar las teclas de desplazamiento para elegir otro idioma si es el caso, luego
presionar la tecla Enter para continuar.
Las opciones de nuestro pas vienen preconfiguradas por defecto, por ejemplo: la zona horaria y la
distribucin del teclado.
En la siguiente pantalla el instalador verifica el hardware de la computadora y configura la red. Si la
mquina est conectada a una red que asigne direcciones IP automticas, el proceso de instalacin lo
detectar de manera automtica por medio de DHCP (Dynamic Host Configuration Protocol), de lo
contrario el usuario debe comunicarse con el administrador de la red quien le proporcionar los datos
que se deben colocar para configurar la red en el sistema. Si la mquina no se encuentra conectada a
ninguna red, igualmente se solicitar una direccin IP, en tal caso se puede colocar una como por
ejemplo: 192.168.0.1 con una mscara 255.255.0.0 sin ninguna pasarela o gateway y se continua con la
instalacin.

Ahora corresponde particionar los discos. Para ello, el sistema instalador le brinda al usuario la
oportunidad de particionar automticamente o de manera manual el disco. En este sentido se presentan
las siguientes opciones:

Guiado- Utilizar todo el disco: recomendado para usuarios noveles, propone un particionado
adecuado de forma automtica y utilizando todo el disco, al seleccionar esta opcin se mostrar
otro men para escoger entre todos los archivos en una particin. Las opciones del men son:

Crear solo 2 particiones, una para el rea de intercambio o swap y la otra para el sistema de
archivos raz ( / ) de donde se crean los dems directorios y archivos del sistema.

Separar la particin /home, esta opcin permite separar la particin /home de la particin
raz ( / ), esto tiene la ventaja de que los directorios y archivos de los usuarios quedan
separados y a la hora de que por algn motivo se tenga que rehacer el sistema, los datos de
los usuarios quedarn en una particin aparte y no se tendr la necesidad de formatear la
misma, ya que nicamente se trabajar con la particin raz ( / ).

Separar particiones /home, /usr, /var y /tmp, sta opcin requiere de un mayor conocimiento
sobre el sistema de archivos en Linux y no es recomendado para usuarios noveYuddeliales.

Guiado - utilizar el disco completo y configurar LVM (Logical Volume Management): al igual
que en la opcin anterior propone de forma automtica y utilizando todo el disco, el
particionamiento adecuado y, adems, permite configurar LVM. LVM permite agrupar discos
fsicos en grupos virtuales de discos y posteriormente crear particiones o volmenes lgicos.

Guiado - utilizar el disco completo y configurar LVM cifrado: funciona de igual manera que la
opcin anterior, pero adicionalmente cifra los datos.

Manual: particionamiento completamente manual, es recomendable para usuarios avanzados.


Con esta opcin el usuario debe crear todas las unidades necesarias (/, swap, ext3, entre otras)
manualmente. Luego de seleccionar el particionado de disco y continuar, aparece una pantalla
de confirmacin donde se pueden ver las particiones que se van a crear, si se est de acuerdo se
escoge la opcin S, de lo contrario la opcin No. Si la opcin escogida es No se selecciona
nuevamente el tipo de particionado para elaborar las particiones como se desean.

Es importante resaltar que una vez que se es seleccionada la opcin S, los cambios realizados no se
pueden deshacer, por lo tanto se debe estar seguro del particionado que se est realizando.
A continuacin se solicitar lo siguiente:

Nombre para el usuario del computador. Por ejemplo: Rafael Mndez.

Nombre para la cuenta de usuario. Por ejemplo rmendez

Contrasea, la cual debe ser verificada por el usuario.

A partir de ese momento el programa instalador formatea las particiones y empieza a instalar el sistema
base, lo que puede tomar un tiempo. Tras esto se llevar a cabo la instalacin del ncleo. El ltimo paso
es la instalacin del gestor de arranque, el cual es agregado automticamente por el instalador y ste
mostrar un aviso si detecta otros sistemas operativos en el computador. GRUB se instala de forma
predeterminada en el sector de arranque del primer disco duro. Sin embargo, se puede cambiar e
instalar en otra ubicacin si as se desea.
Luego el programa instalador pregunta si se quiere usar una rplica de red, si se selecciona S se
agregan los repositorios de preferencia del usuario, por defecto la distribucin Canaima tiene
configurados los repositorios del Centro Nacional de Tecnologas de Informacin (CNTI) por lo que no
es necesario ingresarlos en este punto, luego pregunta si se dispone de un servidor proxy, si se
selecciona la opcin No igualmente se instalar el sistema con entorno grfico, los paquetes bsicos y
adicionales que se encuentran en el CD.
Ahora el programa instalador indicar que la instalacin ha finalizado, se debe retirar el CD de
instalacin y pulsar la tecla Enter para reiniciar la computadora.

Al finalizar el reinicio aparece la pantalla para iniciar sesin, donde se debe colocar el usuario y la
clave que se escogi anteriormente y finalmente poder acceder al sistema.

La distribucin Canaima por defecto tiene el usuario root deshabilitado por lo que para las tareas
administrativas se utiliza sudo.
Por ejemplo:

Si se desea instalar un paquete se debe escribir en consola $ sudo aptitude install


nombre_paquete.

Si se desea activar el usuario root se debe ejecutar la siguiente instruccin $sudo -u root
passwd, se ingresa el password del usuario con el que se inici la sesin y luego se coloca una
clave para el usuario root.

Si ms adelante se desea deshabilitar el usuario root, se puede hacer de la siguiente manera:


$sudo passwd -l root

UNIDAD II - SISTEMA X.Org


EL SISTEMA X.Org.
X es el componente de los sistemas Unix encargado de mostrar la informacin grfica, en particular, de
dibujar los iconos, fondos y ventanas en las que se ejecutan las aplicaciones y es totalmente
independiente del sistema operativo.
El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces clienteservidor. El servidor provee servicios para acceder a la pantalla, teclado y ratn (determina la
resolucin de la pantalla y la profundidad de color, mueve el cursor del ratn alrededor de la pantalla,
entre otras acciones) mientras que los clientes son las aplicaciones que utilizan estos recursos para la
interaccin con el usuario. De este modo, mientras el servidor se ejecuta de manera local, las
aplicaciones pueden ejecutarse remotamente desde otras mquinas, proporcionando as el concepto de
transparencia de red.
X.Org es una implementacin libre del sistema grfico de ventanas X (tambin conocido como X11)
que surgi como una bifurcacin de Xfree86 despus de un cabio de licencia que muchos consideran
incompatible con la Licencia Pblica General (GPL), esta ha sido adoptada por la mayora de las
distribuciones GNU/Linux.
X-Windows
UNIX y GNU/Linux no incorporan la interfaz grfica de usuario dentro del ncleo, en su lugar, es
implementada por programas a nivel de usuario. Esto se aplica tanto a entornos grficos como al modo
texto. Esta disposicin hace que el sistema sea ms flexible, pero tiene la desventaja de que, al ser
simple, implementar una interfaz de usuario diferente para cada programa, dificulta el aprendizaje del
sistema.
El entorno grfico principalmente utilizado con GNU/Linux se llama Sistema X-Windows (X para
abreviar X11). X tampoco implementa por s mismo una interfaz de usuario, sino solo un sistema de
ventanas. Es decir, las herramientas bases con las cuales se puede construir una interfaz grfica de
usuario. Algunos administradores de ventanas populares son: FVWM, ICEWM, BLACKBOX Y
WINDOW MAKER, METACITY. Existen tambin dos populares administradores de escritorios, KDE
y GNOME.

Modos VESA
VESA (Video Electronics Standards Association - Asociacin para estndares electrnicos y de video)
es una asociacin internacional de fabricantes de electrnica. Fue fundada por NEC en los aos 80 del
siglo XX con el objetivo inicial de desarrollar pantallas de vdeo con una resolucin comn de 800x600
pxeles. Desde entonces, la VESA ha realizado otros estndares relacionados con funcionalidades de
vdeo en perifricos de los IBM PC y compatibles, como conectores, BIOS caractersticas de la
frecuencia, transmisin y sincronizacin de la imagen.
Los modos VESA ms tpicos son: hexadecimal y decimal.
Hexadecimal
Colores

64048
800600 1024768 12801024
0

16001200

256 (8 bits) 00301 00303

00305

00307

0031C

32,768 (15
00310 00313
bits)

00316

00319

0031D

65,536 (16
00311 00314
bits)

00317

0031A

0031E

16.8M (24
00312 00315
bits)

00318

0031B

0031F

Decimal
Colores

64048
800600 1024768 12801024
0

16001200

256 (8 bits)

769

771

773

775

796

32,768 (15
bits)

784

787

790

793

797

65,536 (16
bits)

85

788

791

794

798

16.8M (24
bits)

86

789

792

795

799

Reconfigurar Servidor Grfico X.org


Si por alguna razn despus de realizar la instalacin del sistema operativo se necesita configurar el

servidor grfico de nuevo, por ejemplo, al no haber detectado en la instalacin la resolucin correcta
del monitor, o en algn momento se cambia el monitor de la computadora y los parmetros que tienen
configurados en el antiguo no funcionan con el nuevo, existe un script de configuracin que ayuda a la
reconfiguracin del Servidor X sin necesidad de estar retocando a mano el fichero /etc/X11/xorg.conf.
Para invocar el script se recomienda que se inicie sesin como usuario root en una consola de texto
(CTRL+ALT+F1) y seguir los pasos a continuacin:

$ login: root
$ password:

Antes de ejecutar el script, si ya se tiene configurado el servidor X, es recomendable que se realice una
copia de seguridad del archivo xorg.conf de la siguiente manera: # cp /etc/X11/xorg.conf /root. As se
ha guardado una copia en el directorio de root. Para restaurarla se ejecutara el siguiente comando: # cp
/root/xorg.conf /etc/X11/xorg.conf.
Una vez hecha la copia de seguridad, se ejecuta el script de configuracin: # dpkg-reconfigure xserverxorg

Las Secciones de xorg.conf


El archivo /etc/X11/xorg.conf contiene la configuracin de X.Org y est dividido en secciones. Cada
seccin empieza con la instruccin <Section>, seguido por el nombre de la seccin entre comillas y

siempre termina con <EndSection>.


Seccin Monitor
Define las propiedades del monitor. Las especificaciones del Sync Horizontal definen cunto ancho de
banda puede soportar el monitor y es especificado en kilohertz. Esto ayuda a identificar qu resolucin
es capaz de soportar el monitor. El Refrescado Vertical dice cuantas veces por segundo el monitor
puede refrescar las imgenes. Estas dos especificaciones pueden ser definidas en rango de valores que
los monitores pueden soportar. Se recomienda revisar las especificaciones en el manual del monitor o
buscar las especificaciones usando unas de las herramientas de configuracin disponibles.
Otros parmetros que se encuentran en la seccin Monitor son los de los modes. Se tiene dos maneras
de especificarlos: el primero, usar la directriz ModeLine y especificar todos los nmeros en una lnea.
El segundo, usar la subseccin Mode, especificando los parmetros con el uso de marcados (tags). En
ambas, stos parmetros le comunican al Servidor X qu frequencias y posicionamiento usar para cada
resolucin.
Section "Monitor"
Identifier

"Failsafe Monitor"

Vendorname

"AOC"

Modelname

"AOC SPECTRUM 4V,4VA,4Vlr & 4VlrA, 4Vn, 4VnA"

Horizsync

30.0-50.0

Vertrefresh

50.0-100.0

modeline "800x600@56" 36.0 800 824 896 1024 600 601 603 625 +hsync
+vsync
modeline "800x600@72" 50.0 800 856 976 1040 600 637 643 666 +hsync
+vsync
modeline "800x600@60" 40.0 800 840 968 1056 600 601 605 628 +hsync
+vsync
modeline "1024x768@60" 65.0 1024 1048 1184 1344 768 771 777 806 -vsync
-hsync
Gamma 1.0
EndSection

Seccin Device
Especifica los parmetros de la tarjeta de video. En la misma se puede especificar el chipset que el
adaptador utiliza, quota de RAM de video que tiene, la velocidad qu puede usar y cualquier opcin
disponible para el driver asociado con el chipset utilizable. En la mayora de los casos, no se necesita
invocar stos parametros; ya que el servidor debe detectarlos.
Section Device
Identifier

"Failsafe Device"

Boardname

"vesa"

Busid

"PCI:1:0:0"

Driver

"vesa"

Screen 0
EndSection
Si por alguna razn el servidor no puede detectarlo correctamente, se pueden ingresar
correctos en esta seccin. Tambin se debe revisar la documentacin

los parmetros

del Xorg.

Seccin Screen
Unifica toda la informacin necesaria desde las otras secciones. Se puede tener ms de una seccin de
Device o Monitor en el archivo, pero slo los listado en la seccin Screen sern los utilizados, esta es la
razn por la que cada seccin incluye un identificador. De igual manera la seccin screen especifica
cul mdulo usar, la resolucin y la intensidad del color.
Section Screen
Identifier

"Default Screen"

Device

"Failsafe Device"

Monitor

"Failsafe Monitor"

Defaultdepth

24

SubSection "Display"
Depth 24
Virtual 1024
Modes

768

"640x480@85"

"800x600@56" "640x480@75"

"800x600@72" "640x480@72"
"800x600@60" "832x624@75"
"1024x768@43"

"800x600@75" "640x480@60"
"1024x768@60"

EndSubSection
EndSection
Seccin Input Device
Permite definir el protocolo que se va a usar para comunicarse con el mouse. Los protocolos del mouse
incluyen PS/2, IMPS/2, Microsoft, y Logitech. Para todo lo que va desde el puerto PS/2, se usa
/dev/psaux como el dispositivo. Para los ratones seriales, /dev/ttySO para el COM1, /dev/ttySl para el
COM2, y as sucesivamente. Muchas distribuciones permiten usar /dev/mouse sin importar qu tipo de
mouse se est usando. En la seccin Pointer, se puede especificar algunas opciones, como lo es emular
el botn del medio haciendo uso del izquierdo y el derecho simultneamente.
Section "InputDevice"
Identifier

"Configured Mouse"

Driver

"mouse"

Option

"CorePointer"

Option

"Device"

"/dev/input/mice"

Option

"Protocol"

"ImPS/2"

Option

"ZAxisMapping" "4 5"

Option

"Emulate3Buttons"

"true"

EndSection
Seccin Files
Informa al servidor de X dnde encontrar mdulos de servidor, la base de datos de color RGB y
archivos de tipografas. Esta opcin es para usuarios avanzados. En la gran mayora de los casos, se
debera dejar activada.
SESIONES
Una sesin es la duracin de una conexin empleando una capa de sesin de un protocolo de red, o la
duracin de una conexin entre un usuario y un servidor, generalmente involucrando el intercambio de

mltiples paquetes de datos entre la computadora del usuario y el servidor. Tpicamente es el tiempo
que transcurre entre que un usuario se identifica en un sistema y, bien por falta de actividad, bien por
desconexin voluntaria, el sistema deja de recordarle, la sesin le permite a un usuario, por ejemplo,
estar conectado a los foros durante un tiempo determinado sin tener que volver a identificarse. A
continuacin se detalla los tipos de sesiones:
Inicio de Sesiones desde Terminales
El inicio de sesiones desde terminales (a travs de lneas serie) y la consola (cuando no se est
ejecutando X-Windows) es suministrado por el programa getty. init inicia una instancia independiente
de getty por cada terminal en el que est permitido iniciar sesiones.
Getty lee el nombre de usuario y ejecuta el programa login, el cual se encarga de leer la password. Si el
nombre de usuario y la password son correctas, login ejecuta el intrprete de comandos. Al finalizar el
intrprete de comandos (en el caso en que, por ejemplo, el usuario finaliza su sesin; o cuando login
finaliza debido a que no concuerdan el nombre de usuario y la password), init se entera de este suceso e
inicia una nueva instancia de getty. El ncleo no tiene nocin sobre los inicios de sesiones, esto es
gestionado totalmente por los programas del sistema.
Inicio de sesiones a travs de la red
Es tipo de sesin funciona de un modo un poco diferente al inicio de sesiones normales. Existe una
lnea serie fsica separada para cada terminal a travs de la cual es posible iniciar sesin. Por cada
persona iniciando una sesin a travs de la red existe una conexin de red virtual, y puede haber
cualquier nmero (no hay lmite). Por lo tanto, no es posible ejecutar getty por separado por cada
conexin virtual posible. Existen tambin varias maneras diferentes de iniciar una sesin a travs de la
red, las principales en redes TCP/IP son Telnet y rlogin.
Los inicios de sesin a travs de la red tienen, en lugar de una cantidad enorme de getty's, un servicio
individual por tipo de inicio de sesin (telnet y rlogin tienen servicios separados) que escucha todos los
intentos de inicio de sesin entrantes. Cuando el servicio advierte un intento de inicio de sesin, inicia
una nueva instancia de si mismo para atender la peticin individual; la instancia original contina
atenta a otros posibles intentos. La nueva instancia trabaja de manera similar a getty.

UNIDAD III - EL SHELL

USANDO EL SHELL
El intrprete de comandos es la interfaz entre el usuario y el sistema operativo; por esta razn, se le da
el nombre en ingls shell, que significa caparazn. Por lo tanto, la shell acta como un intermediario
entre el sistema operativo y el usuario gracias a lneas de comando que este ltimo introduce. Su
funcin es la de leer la lnea de comandos, interpretar su significado, llevar a cabo el comando y
despus arrojar el resultado por medio de las salidas.
La shell es un archivo ejecutable que debe interpretar los comandos, transmitirlos al sistema y arrojar el
resultado. Existen varios shells. La ms comn es sh (llamada Bourne shell), bash (Bourne again
shell), csh (C Shell), Tcsh (Tenex C shell), ksh (Korn shell) y zsh (Zero shell). Generalmente, sus
nombres coinciden con el nombre del ejecutable.
Cada usuario tiene una shell predeterminada, la cual se activar cuando se abra un indicador del
comando. La shell predeterminada se especifica en el archivo de configuracin /etc/passwd en el ltimo
campo de la lnea que corresponde al usuario. Es posible cambiar de shell durante una sesin. Para esto,
slo se debe ejecutar el archivo correspondiente. Por ejemplo: /bin/bash
Indicador del Sistema
La shell se inicia al leer su configuracin completa (en un archivo del directorio /etc/) y despus
al leer la configuracin propia del usuario (en un archivo oculto cuyo nombre comienza con un punto y
que se ubica en el directorio bsico del usuario, es decir /home/user_name/.configuration_file). A
continuacin, aparece el siguiente indicador llamado prompt en ingls:
equipo:/directorio/actual$
De manera predeterminada, para la mayora de las shells, el indicador consiste en el nombre del equipo,
seguido de dos puntos (:), el directorio actual y despus un carcter que indica el tipo de usuario
conectado. Si el carcter es $ especifica un usuario normal, si es # especifica un usuario administrador,
llamado root.

Lnea de Comandos
Una lnea de comandos es una cadena de caracteres formada por un comando que corresponde a un
archivo ejecutable del sistema o, ms bien, un comando de shell junto con argumentos opcionales
(parmetros). Por ejemplo: ls -al /home/jean-francois/.
En el comando del ejemplo, ls es el nombre del comando, -al y home/jean-francois/ son argumentos.
Los argumentos que comienzan con - se denominan opciones. Por lo general, para cada comando, hay
una cierta cantidad de opciones que se pueden detallar al introducir, por ejemplo el siguiente comando:
man nombre_comando
Entrada-salida Estndar
Una vez que se ejecuta un comando, se crea un proceso. Este proceso abre tres flujos:
1) stdin, denominado entrada estndar, en cuyo caso el proceso lee los datos de entrada. De
manera predeterminada, stdin se refiere al teclado. stdin se identifica con el nmero 0.
2) stdout, denominado salida estndar, en cuyo caso el proceso escribe los datos de salida. De
manera predeterminada, stdout se refiere a la pantalla. stdout se identifica con el nmero 1.
3) stderr, denominado error estndar, en cuyo caso el proceso escribe los mensajes del error. De
manera predeterminada, stderr se refiere a la pantalla. stderr se identifica con el nmero 2.
Por lo tanto, de manera predeterminada, cada vez que se ejecuta un programa, los datos se leen desde el
teclado y el programa enva su salida y sus errores a la pantalla. Sin embargo, tambin es posible leer
datos desde cualquier dispositivo de entrada, incluso desde un archivo, y enviar la salida a un
dispositivo de visualizacin, un archivo, entre otros.
Redirecciones
Como cualquier sistema Unix, GNU/Linux posee mecanismos que permiten redirigir la entrada-salida
estndar a archivos. Por lo tanto, si se usa el carcter >, se puede redirigir la salida estndar de un
comando que se encuentra a la izquierda a un archivo que se encuentra a la derecha. Por ejemplo:
ls -al /home/jf/ > toto.txt echo "Toto" > /etc/miarchivodeconfiguracin
El propsito de la redireccin > es el de crear un archivo nuevo. En el caso de que un archivo ya exista

con el mismo nombre, se debe eliminar. El siguiente comando simplemente crea un archivo vaco: >
nombre_archivo.
El uso del carcter doble >> permite agregar la salida estndar al archivo, es decir, permite agregar la
salida despus del archivo sin eliminarlo. De manera similar, el carcter < indica una redireccin de la
entrada estndar. El siguiente comando enva el contenido del archivo toto.txt con el comando cat, cuyo
nico propsito es mostrar el contenido en la salida estndar (el ejemplo no es til, pero es instructivo):
cat < toto.txt.
Por ltimo, el uso de la redireccin << permite la lectura, en la entrada estndar, hasta que se encuentre
la cadena ubicada a la derecha. En el siguiente ejemplo, se lee la entrada estndar hasta que se
encuentra la palabra STOP. Despus, se muestra el resultado: cat << STOP.
Tuberas de Comunicacin
Las tuberas (en ingls pipes - literalmente tuberas) son mecanismos de comunicacin especficos para
todos los sistemas UNIX. Una tubera, simbolizada por una barra vertical (carcter |), permite asignar la
salida estndar de un comando a la entrada estndar de otro, de la misma forma en que una tubera
permite la comunicacin entre la entrada estndar de un comando y la salida estndar de otro.
En el siguiente ejemplo, la salida estndar del comando ls -al se enva al programa sort, el cual debe
extraer el resultado en orden alfabtico. ls -al | sort. Esto permite conectar una cierta cantidad de
comandos a travs de sucesivas tuberas.
En el siguiente ejemplo, el comando muestra todos los archivos del directorio actual, selecciona las
lneas que contienen la palabra "zip" (utilizando el comando grep) y cuenta la cantidad total de lneas:
ls -l | grep zip | wc -l.
SHELL SCRIPTS
Los shell scripts son programas escritos con comandos UNIX y son equivalentes a los batch de DOS
aunque mucho ms potentes, puesto que admiten ejecuciones en segundo plano y tienen un conjunto de
expresiones mucho ms amplia.
Una de las ventajas que presentan los shell scripts es que pueden ser portadas de una mquina UNIX a
otra sin problemas, sin necesidad de retocar nada, salvo que se utilicen llamadas a programas muy

concretos especficos de una versin de UNIX, mientras que los programas compilados (desarrollados
en C, Pascal, entre otros.) deben ser recompilados, pues el cdigo se generar en funcin del
microprocesador de cada mquina. Otra ventaja es la facilidad de lectura e interpretacin.
El principal inconveniente que presentan respecto a los programas compilados es la lentitud de
ejecucin, que se puede paliar usando las utilidades built-in incluidas en el propio kernel en lugar de
llamar a comandos externos que han de ser leidos de disco. Otro inconveniente es que el cdigo resulta
visible a cualquier usuario que lo pueda ejecutar.
En los shell scripts se deben aadir comentarios con el fin de facilitar la lectura del programa; los
comentarios se insertan anteponiendo el carcter # al comentario, que se extender hasta el final de la
lnea. Estos deben colocarse en las cabeceras de los scripts indicando el nombre de archivo y lo que
hace el script. Se colocan comentarios de documentacin en diferentes partes del script para mejorar la
comprensin y facilitar el mantenimiento. Un caso especial es el uso de # en la primera lnea, seguido
del carcter admiracin y el path de la subshell, para indicar el intrprete con que se ejecutar el script.
Por ejemplo: #!/bin/sh.
Es interesante saber que muchos comandos devuelven un valor despus de ejecutarse, y que este valor
indicar si la ejecucin ha sido buena o si ha habido algn fallo y qu tipo de fallo se ha producido.
Para conocer si un comando devuelve o no un valor y qu es lo que devuelve en cada caso se deber
consultar la documentacin, pero por lo general en caso de una ejecucin correcta devolvern el valor
0, y en caso de fallo otro nmero, positivo o negativo.
Para poder ejecutar un archivo de comandos es necesario que se tengan activados, al menos, los
permisos de lectura y ejecucin.
USANDO HISTORY
La Instruccin history se utiliza para visualizar la lista de comandos previamente ejecutados, se invoca
la utilidad history colocando simplemente: # history
Variables de Entorno y Configuraciones
Las variables de entorno y configuraciones son aquellas que que tienen un significado propio para la
shell o algn otro programa. Ciertos programas leen el contenido de las variables de entorno para

modificar su comportamiento, entre ellos la propia shell. Entre las variables de entorno ms
importantes se pueden citar:

PATH, indica la ruta de bsqueda de programas ejecutables. Est constituida por una lista de
directorios separados por dos puntos (:). El directorio actual, de forma predeterminada, no viene
incluida en PATH.

PS1, especifica el indicador del sistema. Lo habitual es que PS1 sea el simbolo $ para usuarios
normales y # para usuario root.

PS2, especifica el indicador secundario del sistema. Aparece cuando no se ha completado una
orden. LANG, especifica el lenguaje que se aplica al usuario; para espaol se utiliza es.

LC_ALL, contiene el idioma y se utiliza para usar los valores locales como mensajes del
sistema, smbolo monetario, formato de fecha, formato de nmeros decimales y otras
caractersticas.

TERM, almacena el tipo de teminal desde el que se est trabajando.

EDITOR, especifica el editor por omisin del sistema. Lo habitual en los sistema Unix es que
el editor por omisin sea vi.

DISPLAY, especifica qu equipo muestra la salida que se efecta en modo grfico. Ese equipo
deber tener un servidor grfico.

LD_LIBRARY_PATH, se utiliza para definir rutas alternativas de bsqueda para bibliotecas de


funciones del sistema.

PWD, contiene el directorio de trabajo efectivo.

Dmidecode, informacin sobre las caractersticas del hardware del sistema.

Last, informacin sobre los ltimos usuarios que han usado el sistema.

Con la orden environment se puede comprobar el valor de las variables de entorno del sistema. Para
modificarlas basta asignarle un nuevo valor.
PROCESOS
El shell utiliza el kernel para la ejecucin de procesos, los cuales quedan bajo su control. Es posible
definir un proceso como un programa en ejecucin. Ya que UNIX es multitarea, utiliza una serie de
mtodos de tiempo compartido en los cuales parece que hay varios programas ejecutndose a la vez,
cuando en realidad lo que hay son intervalos de tiempo cedidos a cada uno de ellos segn un complejo
esquema de prioridades.
Propiedades de los Procesos
Bsicamente, un proceso tiene las siguientes propiedades:

Un nmero identificador, (Process ID o PID), identificador de proceso, es necesario para


referirse a un proceso en concreto de los varios que se encuentran en ejecucin.

Un PPID (Identificador del Proceso Padre), es el nmero que indica qu proceso cre al proceso
en cuestin.

Estado de los Procesos


Hay momentos en los que un proceso sigue existiendo en el sistema, pero en realidad no estn
realizando algo, quizs porque pueden estar esperando a que una seal le sea enviada para volverse
activo, o a un usuario le puede interesar detenerlo o pausarlo bajo determinadas circunstancias. Los
estados ms importantes son dormido (S), y en ejecucin (R).
Procesos en Ejecucin y sus Propiedades
Para empezar, se pueden ver las tareas y las subtareas en una estructura anidada mediante el comando
pstree es decir, permite visualizar un rbol de procesos. Asimismo, pstree -p muestra entre parntesis el
nmero identificador (PID) de los procesos, algo muy importante cuando se quiere pasar de actuar de
forma pasiva a interactuar con los procesos, cosa que normalmente se hace sealando sus PIDs.
Aunque dicha informacin estructurada resulta interesante, existen dos comandos muy conocidos que

muestran una cantidad ingente de informacin sobre los procesos, estos son:
Comando ps, muestra una lista de los procesos en ejecucin. Las opciones ms habituales son: ps u
que muestra los procesos que pertenecen al usuario actual, ps aux muestra informacin detallada de
todos los procesos en ejecucin. Algunos de los campos ms importantes mostrados por ps son:

USER - usuario dueo del proceso.

PID - nmero identificador del proceso.

%CPU - porcentaje de uso del microprocesador por parte de este proceso.

%MEM - porcentaje de la memoria principal usada por el proceso.

VSZ - tamao virtual del proceso (lo que ocupara en la memoria principal si todo l estuviera
cargado, pero en la prctica en la memoria principal slo se mantiene la parte que necesita
procesarse en el momento).

RSS - tamao del proceso en la memoria principal del sistema (generalmente son KBytes,
cuando no lo sea, se indicar con una M detrs del tamao).

TTY - nmero de terminal (consola) desde el que el proceso fue lanzado. Si no aparece,
probablemente se ejecut durante el arranque del sistema.

STAT - estado del proceso.

START - cundo fue iniciado el proceso.

TIME - el tiempo de CPU (procesador) que ha usado el proceso.

COMMAND - el comando que inici el proceso.

Comando top, es la versin interactiva de ps, y tiene algunas utilidades interesantes aadidas. Si se
ejecuta en una terminal y sin opciones, aparecer arriba informacin del sistema: usuarios, hora,
informacin del tiempo de funcionamiento de la mquina, nmero de procesos, uso de CPU, uso de
memoria y uso del swap y a continuacin muestra una lista de procesos similar a la que se muestra con
ps, la diferencia entre ambos radica en que sta se actualiza peridicamente, permitindo ver la
evolucin del estado de los procesos.
Con top, se tiene dos posibilidades de especificar opciones, bien en lnea de comandos en el shell, o

bien interactivamente (mientras est en ejecucin y sin salir de l). La pgina del manual de top es
tambin muy buena, con descripciones detalladas de los campos y de las opciones, tanto de lnea de
comandos como interactivas.
Tareas de Bash - Programas en Primer y Segundo Plano.
El control de tareas es una interesante caracterstica que bash ofrece. As, cada programa o tubera que
se ejecute tiene asignado un nmero de tarea por parte de bash (diferente al PID). Los programas que se
pueden ejecutar desde una lnea de comandos pueden estar en primer o segundo plano, y de hecho
pueden pasar de un estado a otro.
Una consola concreta est bloqueada cuando un proceso est en primer plano, mientras que si est en
segundo plano la consola est libre y se puede teclear comandos en ella. Esto est ms relacionado con
la terminal en s que con el concepto de proceso que se ha aprendido.
Normalmente al ejecutar un comando no se recupera el prompt hasta que ste no termina. La necesidad
que surge es poder usar esa terminal sin abrir otra nueva a la vez que el comando continue haciendo lo
que tenga que hacer.
En bash, se colocan las tareas en segundo plano aadiendo un & al final del comando. El comando se
ejecuta mientras la terminal queda libre. Por ejemplo:
$ sleep 10 &
[1] 6190
$ # tras 10 segundos presionamos INTRO
[1]+ Done
sleep 10
El comando sleep simplemente espera el nmero de segundos del primer argumento. Al ejecutarlo en
segundo plano, bash imprime la lnea [1] 6190 y devuelve al prompt, aunque el comando se sigue
ejecutando ahora en segundo plano. El nmero entre corchetes es el Nmero de Tarea (o, tambin
llamado trabajo job) que bash le asign al pasarlo a segundo plano, y el nmero que hay a
continuacin (6190) es el nmero de proceso que ha generado la ejecucin del comando. Cada vez que
al presionar INTRO hay novedades en la gestin de tareas, bash informa de ello. En este caso, ha
terminado la tarea.

Teniendo una tarea en segundo plano, arrojar su salida a la terminal actual a pesar de todo. En estos
casos se pueden usar las redirecciones para evitarlo. Para recuperar una tarea en segundo plano a
primer plano, se puede usar fg, seguido de %N , donde N es el nmero de tarea que se quiere
recuperar, por ejemplo fg %2 traera a primer plano la segunda tarea.
Con una tarea en primer plano, se puede usar Ctrl+Z y se detendr. Ahora se puede elegir entre
continuar con dicha tarea en primer plano, o mandarla a segundo plano. Para continuarla en primer
plano, se teclea fg %1. Para seguirla en segundo plano, se usa bg %1, suponiendo que es la tarea
nmero 1.
Un comando ejecutndose en primer plano puede ser cancelado con Ctrl+C, lo que a su vez har
desaparecer al proceso resultante de la tabla de procesos del kernel. El comando kill -SEAL PID es el
que se usa para enviar seales a los procesos. Se puede indicar varios PIDs para que reciban esa seal
en un solo comando separndolos con espacios al final. Son equivalentes:

# kill -SIGKILL 1283

# kill -9 1283
Para un usuario, observar en cada momento qu PID tiene el proceso originado por un comando puede
ser incmodo. Para eso existe el comando killall -SEAL nombre_comando, donde "nombre_comando"
es el nombre del comando que di lugar al proceso en cuestin.
Prioridad de los Procesos.
Lo ms comn es tener muchos procesos a la vez ejecutndose en una computadora. Pero no todos son
igual de importantes. Por ejemplo, si se est grabando un CD, este debera ser un proceso ms
importante que el resto, porque si el disco duro no enva los datos a la velocidad suficiente a la
grabadora, se pierde el disco grabable.
En dicha situacin se le dice al kernel: si el procesador no puede con todo, lo ltimo que debes retrasar
es la grabacin del CD. Se puede notar entonces, que el resto de las aplicaciones van ms lentas, pero
eso no garantiza que la grabacin no va a ser interrumpida. Esto se puede resolver ejecutando desde el
principio el comando interesado usando nice, o bien, conseguir su PID si ya se est ejecutando y usar
renice para cambiar su prioridad. Por ejemplo: $ nice -n prioridad comando
-$ renice prioridad pid_proceso
Donde:

prioridad, es un valor que va desde -20 a +20 (con el signo incluido). -20 es la prioridad ms
alta (al contrario de lo que se puede pensar) y +20 la ms baja. Slo root puede establecer una
prioridad negativa a un proceso, los usuarios como mximo pueden colocar un proceso en
prioridad 0.

comando, es el comando que se quiere ejecutar (slo aplicable con nice), el mismo comando
que se ejecutara normalmente con todos sus parmetros y opciones.

proceso (slo aplicable con renice) cambia la prioridad del proceso cuyo PID es
PID_PROCESO al nuevo valor indicado.
COMANDOS

Un comando es una instruccin o mandato que el usuario proporciona a un sistema informtico, desde
la lnea de comandos (como una shell) o desde una llamada de programacin. Puede ser interno
(contenido en el propio intrprete) o externo (contenido en un archivo ejecutable). Suele admitir
parmetros (argumentos) de entrada, lo que permite modificar el comportamiento predeterminado del
comando. Suelen indicarse tras una barra / en sistemas operativos DOS un guin simple - doble -en sistemas operativos Unix. A continuacin algunos comandos de gran utilidad.
Comando ps
Cuando el shell lanza un programa, se crea un nuevo proceso y se le asigna un nmero entero (PID)
entre 1 y el 30.000, del cual se tiene la seguridad que va a ser unvoco mientras dure la sesin. Se puede
verificar ejecutando el comando ps, el cual muestra los procesos activos que se tienen asociados a la
terminal.
Un proceso que crea a otro se lo denomina proceso padre. El nuevo proceso, en este mbito se le
denomina proceso hijo. Este hereda casi la totalidad del entorno de su padre (variables, entre otras),
pero slo puede modificar su entorno, y no el del padre. La mayora de las veces, un proceso padre se
queda en espera de que el hijo termine, esto es lo que sucede cuando se ejecuta un comando, el proceso
padre es el shell, que lanza un proceso hijo (el comando). Cuando este comando acaba, el padre vuelve
a tomar el control, y recibe un nmero entero donde recoge el cdigo de retorno del hijo (0 =
terminacin sin errores, otro valor = aqu ha pasado algo).

Cada proceso posee tambin un nmero de grupo de procesos. Los miembros de un grupo de procesos
(procesos cuyo PGID es igual al PGID de la terminal en curso) reciben seales generadas por el teclado
como SIGINT. Se dice que estos procesos estn en primer plano. Los procesos en segundo plano son
aqullos cuyo PGID difiere del de la terminal; tales procesos son inmunes a seales generadas desde el
teclado. Slo los procesos en primer plano tienen permitido leer o escribir en la terminal. A los
procesos en segundo plano que intenten leer de (o escribir en) la terminal, el controlador de terminal les
manda una seal SIGTTIN (SIGTTOU) que, a menos que sea capturada, suspende el proceso.
Es posible utilizar algunas variantes del comando ps para ver qu procesos se tienen en el equipo:

ps -e : de todas las sesiones.

ps -f : full listing: da los nmeros del PID, del Ppid (padre), uso del procesador y tiempo de
comienzo.

ps -j: da el PGID (nmero de grupo de los procesos - coincide normalmente con el padre de
todos ellos).

comando kill
Este comando sirve para matar o anular procesos indeseados. Se debe tener en cuenta que cada proceso
lleva su usuario y por tanto solo l (o el superusuario) pueden matarlo. Normalmente, si los programas
que componen el grupo de procesos son civilizados, al morir el padre mueren todos ellos siempre y
cuando el padre haya sido sealizado adecuadamente. Para ello, se emplea el comando $kill
<nmero_seal> PID, siendo PID el nmero del proceso o del grupo de procesos. Los nmeros de
seales (nmero_seal) utilizados con ms frecuencia son:

-15: TERM o terminacin, se manda para que el proceso cancele ordenadamente todos sus
recursos y termine.

-1: corte.

-2: interrupcin.

-3: quit.

-5: hangup.

-9: kill, la ms enrgica de todas pero no permite que los procesos mueran ordenadamente. El
proceso que la recibe finaliza inmediatamente.

Comando ls
Lista el contenido del directorio en el que se encuentra el usuario. Si se coloca slo ls se obtiene una
lista con el nombre de los archivos; si se quiere obtener ms informacin sobre esos archivos se utilizan
las opciones del comando que se muestran a continuacin:

-a lista los archivos invisibles es decir, los que empiezan por punto.
-s muestra el tamao del archivo en kilobytes (1024 bytes). Precede al nombre de cada
archivo.

-F aade un slash ( / ) a los directorios y un astersco ( * ) a los archivos ordinarios


ejecutables.

Estas opciones se pueden combinar para obtener la informacin que se quiera al mismo tiempo; por
ejemplo, ls -sF, dar la lista de los archivos en la que el nombre de cada archivo va precedido por su
tamao (en kilobytes) y va seguido de un slash (/) en el caso de que sea un directorio o de un asterisco
(*) en el caso de que sea un archivo ejecutable.
De igual manera, se puede listar el contenido de un directorio diferente al que est el usuario, en ese
caso solo se debe especificar el path correspondiente a continuacin de las opciones requeridas. Por
ejemplo: ls /usr/share/doc/
Comando cat
El comando cat (concatenate) se utiliza para visualizar por pantalla el contenido de uno o ms archivos.
Cuando se especifica ms de un archivo, cat los edita uno detrs de otro. La sintaxis del comando es: $
cat [-ns] archivo(s), donde:

-n numera las lneas.

-s elimina las lneas en blanco.

archivo(s) nombre o nombres de los archivos que se van a editar.

El comando cat no pagina, entonces se utiliza: CTRL-S para parar la pantalla y CTRL-Q para continuar

con la edicin. Si el sistema es demasiado rpido se puede utilizar el comando more (el cual se
explicar ms adelante). Por ejemplo: cat archivo | more.
El comando cat permite tambin concatenar archivos; para ello se ejecutara el siguiente comando : $
cat archivo1 archivo2 ... > archivo n , que permite unir los archivos archivo1, archivo2, ... y lo
almacena en el archivo n.
Si se utiliza por equivocacin el comando cat sin ningn argumento, intenta leer de la pantalla, por lo
que no sale el prompt del sistema (se queda como colgada); entonces hay que pulsar CTRL-C para
salir.
Comando grep
Busca una cadena de caracteres en uno o ms archivos y lista todas las lneas que la contienen. La
sintaxis del comando es: $ grep [- v l i w n r ] cadena archivo(s), donde:

-v lista las lneas que no contienen la cadena de caracteres.

-l lista el nombre del archivo que contiene la cadena de caracteres.

-i ignora la diferencia entre letras maysculas y minsculas.

-w se utiliza cuando la cadena de caracteres es una nica palabra.

-n muestra el nmero de la lnea en la que se encuentra la cadena de caracteres.

-r en caso que sea un directorio, para buscar en todos los que cuelgan de l.

cadena cadena de caracteres que se quiere buscar.

archivo(s) nombre o nombres de los archivos en los que se quiere buscar la cadena de
caracteres especificada.

Comando more
Se utiliza para editar archivos por la pantalla; la principal diferencia con cat es que se puede controlar
el nmero de lneas que aparecen en la pantalla utilizando las teclas siguientes:

Barra Espaciadora se avanza una pgina.

Tecla Return se avanza una lnea.

Tecla DEL Q se sale de la edicin.

La sintaxis del comando more es: $ more [-cd] [+nmero de lneas] [+/path] archivo(s) donde:

-c edita pantalla a pantalla.

-d nmero de lneas que se van a editar.

+nmero de lneas nmero de la lnea a partir de la cual se va a editar.

+/path path correspondiente al archivo que se va a editar.

archivo(s) nombre o nombres de los archivos que se van a editar.

Por ejemplo: more -c10 +25 +/usr/share/doc/gedit/README, muestra 10 lneas, empezando por la 25,
del archivo llamado README que se encuentra en el directorio /usr/share/doc/gedit.
El comando more se puede usar con otros comandos para paginar la salida por pantalla.
Comando cp
Se utiliza para copiar archivos. Su sintaxis es: cp [-i] archivo_entrada archivo_destino, donde:

-i origina que el comando requiera una confirmacin, en el caso de que el archivo destino ya
exista es decir, pregunta si se desea hacer la copia.

-r para copiar un directorio completo.

archivo_entrada nombre del archivo que se va a copiar.

archivo_destino nombre del archivo en el que se va a copiar el contenido del archivo de


entrada

Comando du
El comando du informa al usuario de la cantidad de almacenamiento utilizado por los archivos
especificados, posee varias opciones, su sintaxis es la siguiente:du [opciones][archivo]. Sus opciones
ms significativas son:

-s muestra nicamente los tamaos de los archivos especificados en la lnea de comandos.

-h muestra los tamaos de archivo en un formato ms legible.

-c muestra en pantalla el espacio total ocupado por los archivos especificados.

-x omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos.

Comando df
Informa sobre la ocupacin de disco que realiza el sistema. Por defecto, esta utilidad muestra el tamao
de las particiones en bloques de 1 kilobyte y el tamao del espacio libre en kilobytes. Para ver esta
informacin en megabytes y gigabytes, se utiliza el comando $ df -h.
Comando fdisk
Es una herramienta que permite crear particiones de disco y escribe la tabla de particiones en el sector
0. Cuando se utiliza sin parmetros presenta un men de opciones con las que se puede interactuar.
Algunas opciones de utilidad son:

-l lista las tablas de particiones.

-v muestra la versin de fdisk.

Comando rm
Se utiliza para borrar archivos. La sintaxis de este comando es: $ rm [-i] archivo(s), donde:

-i origina que el comando requiera confirmacin para ejecutarse.

archivo(s) nombre o nombres de los archivos que se van a borrar.

Comando mv
Se utiliza para renombrar archivos es decir, el contenido del archivo no cambia, slo cambia el nombre
o para mover archivos entre directorios. La sintaxis del comando es:
$ mv [-i] archivo_entrada archivo_destino
Donde:

-i origina que el comando requiera una confirmacin, en el caso de que el archivo destino ya
exista; es decir, pregunta si se desea hacer la copia.

archivo_entrada nombre del archivo que se va a renombrar.

archivo_destino nombre del archivo en el que se va a copiar el contenido del archivo de


entrada.

Comando pwd
Muestra la ruta completa del directorio en el que est el usuario. Sintaxis: $pwd.
Comando cd
Permite cambiar el directorio de trabajo (o directorio actual). Ejemplos:

cd /directorio cambia al directorio utilizando la ruta absoluta.

cd directorio cabia al directorio utilizando una ruta relativa al directorio de trabajo actual.

cd ~luis cambia al directorio de trabajo (home) del usuario Luis.

Otras opciones de navegacin entre directorios son cd . que se refiere al directorio actual y cd .. se
refiere al directorio inmediatamente anterior (superior) al de trabajo actual.
Comando mkdir
Permite crear directorios. Sintaxis: $ mkdir nombre_directorio.
Comando rmdir
Permite borrar directorios, su sintaxis $ rmdir nombre_directorio. Si el directorio no est vaco se
puede ejecutar $ rm -r nombre_directorio.
Comando gzip
gzip es el compresor por excelencia en cualquier sistema Unix. Sus operaciones bsicas son:

Comprimir un archivo: gzip [-n] archivo, siendo n un nmero del 1 al 9 donde 1 es ms rapido
y 9 ms comprimido.

Descomprimir un archivo: gzip -d archivo.gz

Tambin existe otro compresor bzip2, que a pesar de ser ms lento es bastante ms eficiente. La
sintaxis es prcticamente la misma, solo que el sufijo del archivo es .bz2.
En cualquier caso, la forma estndar de juntar y comprimir varios archivos consiste en hacer un .tar

con todos ellos y luego comprimir el archivo con gzip


Comando tar
tar es la forma estndar de hacer un volumen de archivos (un archivo que contiene varios archivos).
Hay que notar que tar no comprime el volumen resultante. Somos nosotros los que elegimos el
algoritmo de compresin mediante otro programa (normalmente gzip). Sintxis bsica:

tar

[OPERACIONES Y OPCIONES] archivos_involucrados donde las operaciones bsicas son:

Creacin de un volumen: tar -cf archivo.tar archivo_o_dir1 [archivo_o_dir2] ...

Aadir archivos a un volumen: tar -rf archivo.tar archivo_o_dir1 [archivo_o_dir2] ...

Extraer archivos de un volumen: tar -xf archivo.tar [archivo_o_dir1] [archivo_o_dir2] ...

Listar los archivos contenidos: tar -tf archivo.tar

Comando gunzip
Es muy comn encontrarse en internet este tipo de formato y es tan fcil de descomprimir con solo
colocar en el interprete de comandos: gunzip nombre_del_archivo.gz
Comando fsck
En ciertas ocasiones es necesario verificar la integridad del sistema de archivos y corregir los posibles
errores que hubiese. Esta accin la realiza la orden fsck. Para verificar un sistema de archivos es
aconsejable hacerlo mientras este est desmontado. Es una forma de evitar riesgos innecesarios. # fsck
[-opciones] /dev/hdXXX , donde opciones:

-a confirmar automticamente. Usar con cuidado!

-c comprobar bloques malos en el disco.

-v verbose, despliega ms informacin.

-r reparar pidiendo confirmacin (Modo interactivo).

-y asume respuesta de "yes" siempre (se corre un riesgo).

-f forzar el chequeo aunque todo parezca en orden.

Comando ln
En Linux pueden definirse enlaces a elementos del sistema de archivos para poder acceder a ellos
desde distintos lugares en la jerarqua. Un enlace no es ms que un nombre que apunta a un
determinado recurso del sistema de archivos, sea fsico o lgico. Debido a esto se clasifican en dos
tipos:

Fuertes o duros: son aquellos que no se diferencian en nada del archivo original. Realmente un
archivo existe fsicamente (ocupa una zona en algn dispositivo de almacenamiento) y su
nombre no es ms que un enlace fuerte a l. Si se creara otro enlace fuerte, solo se estara
apuntando a la misma zona fsica a travs de otro nombre. De esta forma se obtendran dos o
ms copias lgicas de un archivo, pero solo habra una copia fsica. De aqu se deduce que un
archivo no desaparece fsicamente hasta que no se borren todos los enlaces fuertes que apunten
a l. Los enlaces duros a un archivo determinado se almacenan en la estructura del i-nodo que lo
representa.
Si modificamos un archivo, los mismos cambios aparecern en cualquier enlace fuerte.
Imaginemos que queremos compartir en red un archivo situado en nuestro directorio de trabajo,
pero que no queremos compartir todo el directorio. La solucin ms simple consiste en crear un
enlace fuerte desde dentro de un directorio que s queramos compartir.

Simblicos o dbiles: son apuntadores al nombre del archivo, no a su contenido. Si desaparece


el archivo original (todos los enlaces duros a este) los enlaces simblicos correspondientes
quedan inconsistentes.

No se pueden crear enlaces fuertes a directorios, ni a archivos en particiones distintas. Para crear
enlaces se emplea el comando ln.
Sintaxis: ln [opciones] archivo_o_directorio [nombre_del_enlace], donde opcin:

-s se utiliza para crear enlaces simblicos en lugar de fuertes (como es por defecto).

Nota: el nombre del archivo o el directorio al que queremos hacer el enlace debe escribirse con todo el
path, es decir, "/ruta_al_archivo/archivo".
Ejemplos:

ln -s /home/pepe/public_html/raiz.html index.html Hace que al acceder al archivo"index.html"


nos enve al archivo "raiz.html".

ln -s /usr/bin /binarios Si entramos en el directorio "/binarios" nos enviar al directorio


"/usr/bin"

UNIDAD IV - GESTIN DE USUARIOS Y GRUPOS

GESTIN DE USUARIOS
Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso
simultneamente. Cada usuario podr tener su configuracin y sus archivos independientes.
Los grupos permiten asignar permisos de archivos y directorios a muchos usuarios de una vez.
A un grupo pueden pertenecer varios usuarios y un usuario puede pertenecer a varios grupos. Un
usuario tiene asignado un grupo principal o por defecto.
El Superusuario dentro del entorno de GNU/linux, es aquel usuario que posee todos los privilegios
dentro del sistemas, es capaz de realizar cualquier operacin dentro del sistema, es equivalente al
usuario administrador dentro de los sistemas microsoft windows. Adems de entrar en el login del
sistema como root, hay dos formas para ampliar los privilegios de un usuario y adquirir los de root. Los
dos programas para hacer esto son su y sudo.
El comando su hace que un usuario que se haya identificado con su propia cuenta pueda cambiar su uid
al de root. Por supuesto debe saber el password del root.
El comando sudo, en este caso no es necesario que el usuario conozca la contrasea de root.
Este programa permite que un usuario pueda ejecutar determinados comandos con privilegios de root.
Estos usuarios y los comandos permitidos para l deben de estar en el archivo /etc/sudoers.
Por ejemplo para que el usuario carlos pueda hacer un shutdown del sistema debe haber una entrada en
el archivo sudoers como: carlos /sbin/shutdown -[rh] now.
Comandos ms utilizados:

Comando who: informacin sobre los usuarios que usan el sistema en este momento.

Comando finger: informacin sobre el usuario usuario.

Comando adduser: registra y crea una cuenta de usuario.

En ese momento, no slo se crear la cuenta del usuario sino tambin su directorio de trabajo, un nuevo
grupo de trabajo que se llamar igual que el usuario y aadir una serie de archivos de configuracin al
directorio de trabajo del nuevo usuario:
root@cila:/home# adduser luis
Adding user luis...
Adding new group luis (1000).
Adding new user luis (1000) with group luis
Creating home directory /home/luis
Copying files from /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for luis
Enter the new value, or press return for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct?
[y/n] y
En ese momento, el usuario ya puede trabajar en el sistema. Otro comando utilizado es deluser, el cual
borra la cuenta de usuario usuario. Este comando no elimina automticamente el directorio de trabajo
del usuario.
root@cila:/home# deluser luis
Removing user luis...
done.
Una vez realizado este proceso, es responsabilidad del administrador decidir si elimina el directorio de

trabajo del antiguo usuario.


Comando passwd: cambia la clave de acceso para el usuario actual. root puede cambiar la clave de
cualquier usuario con passwd usuario. # passwd victor.
La base de datos bsica de usuarios en un sistema Unix es un archivo de texto /etc/passwd (llamado el
archivo de contraseas), que lista todos los nombres de usuarios validos y su informacin asociada.
El archivo tiene una lnea por usuario, y es dividido en siete colon-delimited campos:

nombre de usuario.

contrasea, de modo encriptado.

Identificacin (Id) de numero de usuario.

Identificacin (Id) de numero de grupo

Nombre completo u otra informacin descriptiva de la cuenta.

Directorio Inicio (directorio principal del usuario).

Interprete de comandos (programa a ejecutar al ingresar al sistema).

Cualquier usuario del sistema puede leer el archivo de contraseas, para por ejemplo conocer el nombre
de otro usuario del mismo. Esto significa que la contrasea (el segundo campo) esta tambin disponible
para todos. El archivo de contraseas encripta las contraseas, as que en teora no hay problema, pero
dicho encriptado puede ser quebrado, sobre todo si dicha contrasea es dbil. Por lo tanto no es buena
idea tener las contraseas en el archivo de contraseas.
Muchos sistemas GNU/Linux tienen contraseas sombra. Esto es una alternativa en la manera de
almacenar las contraseas: las claves encriptadas se guardan en un archivo separado /etc/shadow que
solo puede ser ledo por el administrador del sistema. As el archivo /etc/passwd solo contiene un
marcador especial en ese segundo campo. Cualquier programa que necesite verificar un usuario o uid,
pueden tambin acceder al archivo shadow/sombra. Significa tambin que programas normales que
solo usan otros campos del archivo de contraseas, no pueden acceder a las contraseas. Paralelamente
tambin existe /etc/gshadow para cierta informacin segn grupos.

Crear un usuario manualmente


Para crear una nueva cuenta a mano, sigue estos pasos:

Editar /etc/passwd con vipw y agregar una nueva linea por cada nueva cuenta.Teniendo cuidado
con la sintaxis. No se debe editar directamente con un editor, se debe usar vipw que bloquea el
archivo, as otros comandos no tratarn de actualizarlo al mismo tiempo. Se debera hacer que
el campo de la contrasea sea `*', de esta forma es imposible ingresar al sistema.

Similarmente, edite /etc/group con vigr, si necesita crear tambin un grupo.

Cree el directorio Inicio del usuario con el comando mkdir.

Copie los archivos de /etc/skel al nuevo directorio creado.

Corrija la pertenencia del dueo y permisos con los comandos chown y chmod. La opcin -R es
muy til. Los permisos correctos varan un poco de un sitio a otro, pero generalmente los
siguientes comandos harn lo correcto:
cd /home/nuevo-nombre-de-usuario
chown -R nombre-de-usuario.group .
chmod -R go=u,go-w . chmod go= .
Asigne una contrasea con el comando passwd

Despus de asignar la contrasea del usuario en el ultimo paso, la cuenta funcionara. No debera
configurar esto hasta que todo lo dems este hecho, de otra manera el usuario puede inadvertidamente
ingresar al sistema mientras copias los archivos de configuracin de su entorno de trabajo.
A veces es necesario crear cuentas falsas que no son usadas por personas. Por ejemplo, para configurar
un servidor FTP annimo (as cualquiera podr acceder a los archivos por l, sin tener que conseguir
una cuenta de usuario en el sistema primero) podra crear una cuenta llamada "ftp". En esos casos,
usualmente no es necesario asignar una contrasea (el ultimo paso de arriba). Verdaderamente, es mejor
no hacerlo, para que nadie puede usar la cuenta, a menos que primero sea root/cuenta administrador, y
as convertirse en cualquier usuario.

GESTIN DE GRUPOS
Cuando creamos un usuario, siempre lo vamos a incluir en algn grupo de trabajo, ya sea el suyo
propio o bien, en uno comn. Los comandos utilizados para el manejo de grupos son:
Comando addgroup, crea el grupo grupo.
La forma de hacerlo es: root@cila:/home# addgroup usuarios
Adding group usuarios (105)...
Done.
El nmero 105 nos indica que se es el identificador numrico que se le asigna al nuevo grupo en el
momento de su creacin.
Comando delgroup, borra el grupo. Sintaxis: # delgroup nombre_ grupo. De forma similar, la
eliminacin de un grupo se hace de esta forma:
root@cila:/home# delgroup usuarios
Removing group usuarios...
Done.
Qu puede pasar si tratamos de eliminar un grupo inexistente? El sistema nos avisar con el siguiente
mensaje:

root@cila:/home# delgroup usuarios


/usr/sbin/delgroup: `usuarios' does not exist.

Aadiendo y Eliminando usuarios de los grupos.


Para aadir un usuario pepe a un grupo usuarios haremos:
root@cila:/home# adduser carla usuarios
Adding user pepe to group usuarios...
Done.
Para eliminarlo de ese grupo:
root@cila:/home# deluser pepe usuarios
Removing user pepe from group usuarios...
done.

PERMISOS DE ARCHIVOS
El sistema UNIX posee un medio sencillo para controlar quin puede acceder o no a sus archivos.
Existen tres clases diferentes de usuarios de un archivo y tres modos diferentes de acceso al archivo.
Entre ellos se encuentran:

Propietario: usuario que ha creado el archivo. El propietario tiene capacidad de controlar quien
puede acceder al archivo.

Grupo: grupo de usuarios, normalmente relacionados por un departamento o funcin. Un


usuario de este tipo puede acceder al archivo, pero no puede cambiar quien puede acceder al
archivo.

Otros: cualquier otro usuario del sistema. Estos usuarios pueden nicamente acceder al archivo
si tienen permiso para ello.
rwx

rwx

rwx

Permisos para el usuario

Permisos para el grupo de

Permisos para otros

propietario

usuarios

usuarios

Para cada una de las tres clases de usuarios existen 3 modos de acceso diferentes, como se muestran en
la siguiente tabla:
MODO

ARCHIVO

DIRECTORIO

Lectura(r)

Examinar el contenido.

Listar los archivos contenidos en l.

Escritura(w)

Cambiar el contenido.

Crear y borrar archivos.

Ejecucin(x)

Ejecutarlo como un comando. Buscar en el directorio.

PERMISOS: SUID y SGID


Hablaremos brevemente de dos permisos especiales: SGID y SUID. En cuanto a estos permisos, decir
que los programas con este tipo de permisos especiales respetan los permisos del propietario aun

cuando sean usados por otro usuarios. Es decir, que si un usuario ejecuta un archivo con SUID y el
propietario es root, tendr privilegios de root en ese archivo con los peligros que conlleva.
Los archivos con SUID podemos buscarlo introduciendo este simple comando en una terminal: # find /
-perm +4000 (+2000 para SGID).
Con los permisos es muy utilizado el comando chmod (change mode) ya que sirve para cambiar los
permisos de un archivo ordinario y de un directorio. Existen dos formas de cambiar los permisos. Se
pueden cambiar teniendo en cuenta los permisos existentes (modo simblico), o se pueden asignar
permisos independientemente de los ya existentes (modo absoluto).
Modo simblico: cuando se utiliza el modo simblico se pueden aadir o quitar permisos a los archivos
y directorios. El formato del comando chmod simblico es: # chmod [who] cdigo-operador permisos
archivo. Donde,
who, es el tipo de usuario y puede tener los siguientes valores:

u : propietario del archivo.

g : grupo del que el propietario es miembro

o : usuarios clasificados como otros.

a : todos los usuarios del sistema (propietario, grupo y otros)

cdigo-operador, indica la operacin que se va a realizar:

+ : aadir permisos.

- : quitar permisos.

permisos r : permiso de lectura, w : permiso de escritura y x : permiso de

ejecucin.

Archivo nombre de archivo o directorio.


Por ejemplo, supongamos que el archivo datos tiene los siguientes permisos: -rwxr--r-- y supongamos
que queremos dar al grupo de usuarios y al resto de los usuarios del sistema, el permiso de ejecucin;
entonces se colocara: chmod go+x datos

Modo absoluto: en este modo se especifica con 3 dgitos numricos; cada nmero representa los
permisos de cada tipo de usuario. Estos dgitos se obtienen, para cada clase de usuario, a partir de los
valores siguientes:
4 : permiso de lectura.
2 : permiso de escritura
1 : permiso de ejecucin.
As tendremos:
0 : ningn permiso
1 : permiso de ejecucin
2 : permiso de escritura
3 : permiso de ejecucin y escritura (1+2)
4 : permiso de lectura
5 : permiso de lectura y ejecucin (4+1)
6 : permiso de lectura y escritura (4+2)
7 : permiso de lectura, escritura y ejecucin (4+2+1)
La sintaxis para el comando chmod absoluto es: chmod modo archivo donde:

modo: son 3 dgitos numricos. Cada uno de ellos corresponde a los permisos de cada tipo de
usuario.

Archivo, nombre de archivo o directorio.

Por ejemplo: chmod 777 datos, concede permisos de lectura, escritura y ejecucin sobre el archivo
datos, a todos los usuarios.
El comando chown se utiliza para cambiar el dueo y el grupo de un archivo. El dueo de un archivo
solo lo puede cambiar el usuario root mientras que el grupo adems de root, lo puede cambiar el propio
dueo, siempre que pertenezca al nuevo grupo.

Sintaxis: chown [opciones] dueo[:grupo] archivos


chown [opciones] :grupo archivos
Opcin: -R en los directorios cambia el dueo y/o el grupo recursivamente.
Ejemplos: chown luis.grupopp tesis, coloca a luis como propietario y como grupo "grupopp" del
archivo tesis. chown -R root /tmp/oculto coloca a root como propietario del directorio "/tmp/oculto" y
de todo su contenido.
Existe tambin el comando chgrp que se emplea de forma similar pero para cambiar exclusivamente el
grupo. chgrp ftp /usr/ftp, coloca como grupo "ftp" del archivo "/usr/ftp"

UNIDAD V - EDITOR VIM

INTRODUCCIN A VIM
vi (visual editor) es un editor de texto realizado originalmente por William Joy para la versin de UNIX
de la universidad de Berkeley: BSD. Posteriormente este potentsimo editor se incorpor al System V
de AT&T convirtindose en herramienta estndar.
VIM (vi Improved) es un moderno editor de GNU compatible con vi pero con muchas funcionalidades
aadidas, entre otras deshacer multinivel, multiventanas, multibuferes, coloreado de sintaxis,
autocompletado de nombres de archivos, ayuda en lnea, apertura de directorios... Normalmente en los
sistemas que disponen de Vim existe un enlace llamado vi para que est disponible como tal.
El xito de vi se debe a varios factores. El primero es que vi es un editor pensado para utilizar en
pantalla completa; hay que tener en cuenta que antes los editores de texto solo mostraban la lnea que
estabas editando. De hecho vi est basado en el editor de lneas ex y se puede alternar entre un editor y
otro mientras se trabaja o ejecutar comandos de ex en vi.
El segundo valor que populariz vi es que todos sus comandos se realizan con el teclado alfanumrico
permitiendo su uso indiscriminado entre terminales con distintas configuraciones. As por ejemplo para
mover el cursor no se utilizaban las flechas del teclado sino las letras h(izq)-j (abj)-k(arr)-l(der), aunque
hoy da permite los dos sistemas. De nuevo hay que tener en cuenta que hasta el System V no exista
apenas compatibilidad entre los distintos UNIX.
Hoy da los principales valores de vi son su universalidad (disponible en todos los sistemas
UNIX/GNU), su eficiencia (es ligero y usa poca memoria) y sobre todo su potencia (no conozco nadie
que sepa utilizar todas sus funciones, siempre se aprende alguna nueva). Esta potencia viene de la
distincin entre modo comando y modo edicin y en la versatilidad de los comandos; todos, por
sencillos que parezcan, pueden combinarse con repeticiones, marcas, rangos de lneas y/o expresiones
regulares e ir complicndose cuanto se desee, con gran versatilidad.
vi, como veremos, es un editor dficil de aprender, pero fcil de utilizar. A lo largo del texto
empezaremos con versiones sencillas de los comandos e iremos complicando los ejemplos como

muestra de lo que se puede hacer. En las distribuciones GNU/Linux derivadas de de Debian (Canaima,
Ubuntu, entre otros.), para activar todas las funcionabilidades de vim, hay que instalarlo mediante el
siguiente comando: # apt-get install vim
Generalidades
Para aprender a utilizar vim es bueno tener en cuenta dos cosas muy importantes.
La fundamental, por hacerlo diferente a los dems editores, es que vim tiene dos modos bsicos de
funcionamiento, el modo comando y el modo edicin (insercin o sustitucin).
Cuando abrimos un archivo con vim (vim nombre_archivo) comenzamos en modo comando. Esto
quiere decir que no podemos escribir. La primera sorpresa de un usuario novel con vim ser que si
empieza a escribir no aparecer el texto. Es ms, seguramente empiecen a ocurrir cosas 'raras' (se estn
ejecutando comandos).
Tambin hay que tener en cuenta que los comandos distinguen entre maysculas y minsculas. No es lo
mismo el comando 'j' que el comando 'J'; no es lo mismo el comando 'p' que el comando 'P'; etc.
Para encontrar todas las funciones disponibles de vim puedes utilizar el comando 'man vim'.
Iniciando vim
El modo de iniciar vim es: vim [opciones] [nombres_archivo]
Ejemplos:

vim prueba abrir el archivo prueba o lo crear si no existe.

vim iniciar el editor vim creando un archivo nuevo an sin nombre.

vim -R prueba abrir el archivo prueba en modo 'solo lectura'.

Otro modo de invocar vim es con view que equivale a vim -R e implica 'solo lectura'.

En algunos sistemas tambin se puede llamar a vedit que equivale a vim con los modos
'novice', 'showmode' y 'nomagic' activos.

Para el resto del manual supondr que el lector dispone mientras lo lee de un sistema con el
editor vim para ir realizando los ejercicios que se comentan.

Ejecute 'vim prueba', el editor limpiar la pantalla. La primera lnea aparece en blanco con el cursor. La
ltima lnea es la lnea de estado en la que aparecer "prueba" [New file]. Las dems lneas aparecen
con el caracter '~' que indica que en esas lneas no hay ningn texto (lneas tras el final del archivo).
Modo comando (introduccin)
Como ya se ha comentado al lanzar el editor comenzamos en 'modo comando'. Esto quiere decir que
vim interpretar nuestras pulsaciones como mandatos, no como texto. Por ejemplo pulse las teclas Ctrl
+ G. El editor nos informar en la lnea de estado sobre el archivo. En nuestro caso mostrar: "prueba"
line 1 of 1 100%-Otra de las cosas que podemos hacer es utilizar los comandos del editor en lnea ex, paras ello
utilizamos ':' (dos puntos). Por ejemplo, pulse ':' despus 'q' (quit) e INTRO -en adelante ':q'- con lo que
finalizaremos la sesin de trabajo del editor 'vim'.
Recuerde que en los comandos de ex (precedidos por ':') necesita pulsar INTRO ya que generalmente
admiten parmetros, mientras que en los comandos 'visuales' se ejecutan inmediatamente (no necesita
pulsar INTRO).
Modo edicin (introduccin)
Volvamos a vim (ejecute 'vim prueba'). Pulsemos simplemente la tecla 'i' (significa insert). En
apariencia no pasar nada ya que vim no indica el modo en que nos encontramos. Sin embargo en este
momento vim interpretar nuestras pulsaciones como texto, no como mandatos, con las siguientes
excepciones:

INTRO -- Comienza una nueva lnea.

BACKSPACE -- Borra el carcter anterior.

CTRL-W -- Borra la palabra anterior.

CTRL-U -- Borra la lnea actual.

CTRL-V -- Permite la insercin de caracteres especiales (INTRO, ESC...)

Escriba:
S fiel a tus verdaderas aspiraciones INTRO

pase lo que pase a tu alrededor. INTRO


Epicteto de Frigia. INTRO
Si buscas resultados distintos, INTRO
No hagas siempre lo mismo. INTRO
Albert Einstein
Para finalizar el modo insercin pulse ESC (Tecla Escape).
La Tecla ESC
El principal uso de la tecla ESC es finalizar el modo edicin para volver al modo comando. Adems se
utiliza para cancelar un comando a mitad. En todo caso con dos pulsaciones de la tecla ESC nos
encontraremos en modo comando y sin ningn comando a medias. Si ya se encuentra en modo
comando sin ningn comando que cancelar y pulsa ESC, vim le avisar emitiendo un breve pitido.
Ante la duda pulse dos veces ESC y se encontrar en el modo comando.Una vez en modo comando
pruebe a pulsar ':q' vim le responder con: No write since last change (:quit! Overrides) y no
finalizar su sesin de trabajo.
vim le avisa que no ha guardado (escrito) el archivo tras los ltimos cambios y tambin le indica como
'sobrepasar' los avisos.
! indica imperativo, y su significado lo veremos un poco ms adelante.
Pulse ':' despus 'w' (write) e INTRO -en adelante ':w'-. vim responde:
"prueba" [New file] 5 lines, 178 characters
Ahora el archivo prueba se ha creado realmente en el sistema de archivos y contiene nuestra cita.
Desplazamiento (introduccin)
Para desplazarnos por el texto debemos estar en modo comando. Podemos utilizar indistintamente las
flechas de cursor o las letras h(izq)-j (abj)-k(arr)-l(der). Tambin puede utilizar SPACE para avanzar y
BACKSPACE para retroceder. Desplcese hasta el comienzo del texto.

El imperativo !
Ahora pulse 'i' y a continuacin escriba: "Cita: INTRO" y pulse ESC. Pulse luego ':q' y como antes vim
responde No write since last change (:quit! overrides)
Ahora pulse ':q!'. Al hacerlo saldr de vim sin guardar los ltimos cambios. El imperativo tambin se
usa para otros casos, como por ejemplo sobreescribir archivos existentes o salir sin haber editado todos
los archivos abiertos (estos temas se vern ms adelante).
Configurando vim
Se puede alterar el funcionamiento estndar de vim. Para ello pueden utilizarse archivos de
configuracin cuyo nombre y ubicacin puede variar segn el sistema. Los ms habituales son
.vimrc .viminfo .virc .exrc...
Adems puede utilizarse, por supuesto, el modo comando. Por ejemplo con ':showmode' vim nos
indicar si estamos en modo comando (no indica nada) modo insercin (insert mode) o modo
sustitucin (replace mode). Estos dos ltimos son variantes del modo edicin. Tambin se puede
utilizar ':set number' para ver a la izquierda del texto el nmero de lnea (til para programar). Se quitan
con ':set nonumber'. En caso de tener activado el coloreado de sintaxis puede ser util ':set
background=dark' o ':set background=light'
Desplazamiento (movimientos ms rpidos)
Adems de utilizar para mover el cursor las teclas vistas, podemos utilizar las siguientes:

inicio de la lnea siguiente.

0 (cero) inicio de la lnea actual.

$ final de la lnea actual.

- Inicio de la lnea anterior.

^F pgina (pantalla) siguiente.

^B pgina (pantalla) anterior.

h lnea superior de la pantalla.

m lnea del centro de la pantalla.

l lnea inferior de la pantalla.

b comienzo de palabra anterior.

w comienzo de palabra siguiente.

e siguiente final de palabra.

xG lnea x del texto, siendo x un nmero de lnea.

G ltima lnea del texto

Algunas consideraciones sobre el texto


vim distingue entre:

Palabras caracteres separados por espacios, tabuladores o saltos de lnea.

Expresiones igual a las palabras pero considerando caracteres especiales (man vim para ms
informacin.

Sentencias caracteres entre los signos '.' (punto), '?' (interrogacin) y '!' (exclamacin) o
saltos de lnea.

Lneas texto entre dos saltos de lnea (INTRO).

Prrafos texto separado por lneas en blanco.

Adems el final de archivo tambin termina todas ellas.

Principalmente los comandos de vim trabajan con palabras y lneas. Es importante tener en cuenta que
una lnea de texto puede ocupar ms que el ancho de pantalla. En este caso vim nos la mostrar en
varias lneas de pantalla, pero seguir considerndose una nica lnea de texto.
Pulse ':set number' para que le muestre los nmeros de lnea.
Pulse '1G' para situar el cursor al principio del texto. Pulse 'i' y escriba:
Esta es una lnea larga de texto que ocupa ms que el ancho de la pantalla, por lo que el editor
me la mostrar en varias lneas de pantalla, siendo solo una lnea de texto. INTRO ESC

El texto queda como sigue:


1 Esta es una lnea larga de texto que ocupa ms que el ancho de la pantalla, por lo que el editor me la
mostrar en varias lneas de pantalla, siendo solo una lnea de texto.
2 Aquel que luche con monstruos
3 que procure no convertirse en un monstruo l mismo;
4 que tenga cuidado aquel que mire al abismo,
5 pues el abismo le devolver la mirada.
6 F. Nietzsche
Teclee '1G' para situarse al principio del texto y despus pulse '^G' (Ctrl+g). El editor mostrar:
"prueba" line 1 of 6 16%-Tambin puede pulsar varias veces '+' y '-' para comprobar que el nuevo texto es una sola lnea de texto,
aunque se muestre en dos lneas de pantalla.
Pulse ':set nonumber' para que desaparezcan los nmeros de lnea.
Borrando texto
Estando en modo comando, el modo simple de borrar es utilizar:

x borra el carcter indicado por el cursor

X borra el carcter anterior al indicado por el cursor

D borra desde el carcter indicado por el cursor hasta el final de lnea

dd borra la lnea indicada por el cursor

El comando 'd' (delete) borra desde el carcter indicado por el cursor hasta lo indicado por el siguiente
comando de desplazamiento. As:

dw -- borra hasta el comienzo de palabra siguiente

db -- borra hasta el comienzo de palabra anterior

dxG -- borra hasta la lnea x del texto, siendo x un nmero de lnea

dG -- borra hasta la ltima lnea del texto

d$ -- borra hasta el final de lnea (equivale a 'D')

Estando al principio del texto pruebe a borrar algunos caracteres y un par de palabras. Por ltimo borre
toda la lnea con 'dd'.
Modo edicin (un poco ms)
Hasta ahora solo se ha visto el modo ms sencillo de insertar texto con el comando 'i'. Este comando
permite insertar delante del texto indicado por el cursor. Sin embargo existen multitud de comandos
para cambiar al modo edicin, distinguiendo entre modo insercin (el texto que escribimos se aade al
existente) y modo reemplazo (el texto que escribimos sustituye a texto existente). Los comandos
principales son:

a (append) permite insertar texto detrs del texto indicado por el cursor.

I (Insert) permite insertar texto al inicio de la lnea indicada por el cursor.

A (Append) permite insertar texto al final de la lnea indicada por el cursor.

o aade una lnea despus de la actual y permite insertar texto.

O aade una lnea antes de la actual y permite insertar texto.

r (replace) sustituye el carcter indicado por el cursor por otro carcter. (No hace falta pulsar
ESC para volver al modo comando).

R (Replace) permite sobreescribir el texto a partir del carcter indicado por el cursor.

s (substitute) sustituye el carcter indicado por el curso por el texto introducido.

S (Substitute) sustituye la lnea indicada por el cursor por el texto introducido.

C (Change) -- sustituye desde el carcter indicado por el cursor hasta el final de lnea.

El comando 'c' (change) cambia el texto desde el carcter indicado por el cursor hasta lo indicado por el
siguiente comando de desplazamiento. As:

cw cambia hasta el comienzo de palabra siguiente

cb cambia hasta el comienzo de palabra anterior

cxG cambia hasta la lnea x del texto, siendo x un nmero de lnea

cG cambia hasta la ltima lnea del texto

c$ cambia hasta el final de lnea (equivale a 'C')

Teclee '1G' para situarse al principio del texto y despus pulse 'o' y escriba 'puede salir escaldado' y
pulse ESC. Despus pulse 'O' y escriba 'cuidado porque' y pulse ESC. Ahora pulse 'I' y escriba 'tenga
mucho' y ESC. El texto habr quedado como sigue:
Aquel que luche con monstruos
tenga mucho cuidado porque
puede salir escaldado
que procure no convertirse en un monstruo l mismo;
que tenga cuidado aquel que mire al abismo,
pues el abismo le devolver la mirada.
F. Nietzsche
Otros comandos tiles

Uno de los comandos ms tiles en cualquier editor es el comando 'deshacer' (undo).


En vim el comando 'u' deshace el ltimo cambio. Si se vuelve a pulsar 'u' deshace la accin de
deshacer, es decir pulsar 'uu' hace que el texto quede igual.

Pulse 'u' y desaparecer 'tenga mucho' en la segunda lnea. Vuelva a pulsar 'u' varias veces para
comprobar su efecto.

Vim tiene 'deshacer multinivel' lo que permite, segn la configuracin, que al pulsar varias
veces 'u' se deshagan los ltimos cambios que se han ido realizando.

El comando 'J' elimina el salto de lnea de la lnea actual. De este modo une la lnea siguiente al

final de la lnea actual.

El comando ':w' escribe (guarda) el texto actual. Tambin se puede utilizar ':w
nombre_archivo2' con lo que guardar el texto en el archivo nombre_archivo2 (aunque
seguiremos trabajando con nombre_archivo). ':2,5w nombre_archivo2' guarda las lneas 2 a 5
en nombre_archivo2.

Tambin se puede combinar el comando ':w' con el comando ':q' escribiendo ':wq'.
El comando ':x' equivale a ':wq' (guardar los cambios y salir).

El comando ':r nombre_archivo3' lee el archivo nombre_archivo3 y lo escribe despus de la


lnea indicada por el cursor. ':5r nombre_archivo3' lo inserta en la lnea 5.

^g (Ctrl+g) -- muestra informacin sobre el archivo, as como el nmero de lnea


(muy til para desplazarse a una lnea copiar desde donde estamos hasta la lnea x, etc.)

^l (Control+l (ele)) -- redibuja la pantalla. Muy til cuando el terminal hace que el scroll del
texto monte las lneas y ya no sabes si lo que ves es realmente lo que pone

Repeticiones de comandos
Una de las posibilidades ms verstiles de vim es la repeticin de cualquiera de sus comandos. Hay dos
modos bsicos de hacerlo.

A posteriori: . (punto) repite el ltimo comando de modificacin del texto. Este ltimo
comando puede haber sido cambiar una palabra por una frase, aadir un texto a final de lnea,
borrar un prrafo, insertar una tabulacin.

A priori, se puede pulsar un nmero antes de ejecutar un comando y ste se repetir tantas veces
como hayamos indicado.

Ejemplos:
5+, nos llevar al inicio de la 5a lnea despus de la indicada por el cursor.
3Dd, borrar 3 lneas.
3J, unir tres lneas.
8IlaESC, insertar 8 veces la palabra la (insertar 'lalalalalalalala').

2s(texto)ESC, sustituye dos caracteres por el texto introducido.


2cw(texto)ESC, sustituye dos palabras por el texto introducido.

UNIDAD VI - INSTALACIN DE PAQUETES

ADVANCED PACKAGING TOOL (APT)


apt es un conjunto de herramientas avanzadas de gestin de paquetes; hace muchas ms que synaptic ya
que esta ltima es una herramienta grfica basada en un subconjunto de comandos de apt. Los nombres,
versiones y descripciones de los paquetes disponibles se guardan en una base de datos en el directorio /
var/cache/apt.
Antes de usar apt y los programas que dependen de l, hay que indicarle dnde debe buscar los
paquetes Debian. Las fuentes de paquetes se indican en el archivo /etc/apt/sources.list; estas fuentes se
denominan repositorios.
Si escribimos en un terminal el comando:
# cat /etc/apt/sources.list
##
deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 NETINST Binary-1
20070407-11:29]/ etch contrib main
#deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 NETINST Binary-1
20070407-11:29]/ etch contrib main
#deb http://192.168.1.100/debian/mirror/ stable main contrib non-free
#deb http://ftp.es.debian.org/debian stable main contrib non-free
deb file:/mnt/debian/mirror stable main contrib non-free
#deb http://http.us.debian.org/debian stable main contrib non-free
# Line commented out by installer because it failed to verify:
#deb http://security.debian.org/ etch/updates main contrib

# Line commented out by installer because it failed to verify:


#deb-src http://security.debian.org/ etch/updates main contrib
Las lneas que comienzan con # son ignoradas. Todas empiezan por deb, seguido de la URL del
repositorio, y a continuacin los directorios en los que se buscarn los paquetes. Alternativamente se
puede aadir un CD con paquetes, para cargarlos se utiliza el comando: # apt-cdrom add
automticamente se aaden a la base de datos los paquetes del CD.
El sistema apt incluye herramientas que permiten actualizar un gran nmero de paquetes
simultneamente, incluso renovar la distribucin completamente.Para actualizar la lista de paquetes de
todos los repositorios se puede utilizar la orden: # aptget update y para actualizar a las nuevas
versiones todos los paquetes de los que exista una versin nueva:# apt-get upgrad.
Si la actualizacin supone un cambio a una versin completamente nueva de la distribucin
necesitamos: #apt-get dist-upgrade. Puede tardar mucho tiempo en instalar las listas de paquetes en
estas dos ltimas operaciones.apt-get install.
La instalacin y desinstalacin de paquetes con apt es sencilla. Basta con ejecutar el comando apt-get
con el argumento install y la lista de paquetes a instalar. # apt-get install "paquetes". apt instalar los
paquetes seleccionados y cualquier otro del que estos dependan.
Para la instalacin considerar todas las fuentes del archivo sources.list, obteniendo las versiones ms
actualizadas de los paquetes. Si un paquete se encuentra en varias fuentes, utilizar aquella que
aparezca en primer lugar en el archivo. Si estamos interesados en descargar un paquete pero no
queremos instalarlo, tenemos que incluir la opcin -d, de esta forma: # apt-get -d install "paquete"
Para desinstalar paquetes se emplea la opcin remove de apt-get. Por defecto se conservan los
archivos de configuracin del paquete que se desinstala, pero se puede indicar que se borren con la
opcin --purge. Para desinstalar el paquete fortune-es sin eliminar los archivos de instalacin: # aptget remove fortune-es. Y si quisiramos eliminar tambin los archivos de instalacin: # apt-get --purge
remove fortune-es.
Los paquetes descargados se guardan por defecto en /var/cache/apt/archives, por si se necesita
utilizarlos en otra ocasin. Es aconsejable eliminar los paquetes que ya se han instalado y no son
necesarios mediante el comando: # apt-get clean

Existe un programa disponible referente a apt, llamado apt-cache, que permite obtener informacin
diversa sobre los paquetes y permite realizar bsquedas, tanto en los nombres como en las
descripciones. Para ver la informacin referente a un paquete (nombre, versin, dependencias,
descripcin, ...) se utiliza el parmetro show: # apt-cache show dselect
Si por el contrario queremos buscar todos los paquetes relacionados con dselect usaramos: #aptcache search dselect y se obtendra:
apt - Advanced front-end for dpkg
apt-zip - Update a non-networked computer using apt and removable media
aptitude - terminal-based apt frontend
checksecurity - basic system security checks
cron - management of regular background processing
debarchiver - Tool to handle debian package archives
dpkg - Package maintenance system for Debian
dpkg-ftp - Ftp method for dselect.
dpkg-multicd - Installation methods for multiple binary CDs
dselect - a user tool to manage Debian packages
grep-dctrl - Grep Debian package information
isdnutils - Most important ISDN-related packages and utilities que son los paquetes
disponibles que contienen, en el nombre o en su descripcin, la palabra: dselect.
APTITUDE
Aptitude es un envoltorio que trabaja sobre apt. No es grfico, sino que tiene una
interfaz con debconf y tambin puede usarse en lnea de comandos. Qu lo
diferencia de apt?

Automatizacin de dependencias, en el sentido de que, si un paquete depende de la librera


libX, y en una versin futura deja de hacerlo, aptitude eliminar libX en ese momento (y
comprobar que nadie ms la est usando).

Posibilidad de ver mucha informacin de un paquete de manera sencilla. Por ejemplo, tienes la
posibilidad de actualizar un paquete pero no sabes si te interesa? Con aptitude puedes ver el

changelog de la nueva versin disponible antes de instalarla. Quieres ver qu paquetes


dependen de uno dado?

Resolucin inteligente de conflictos.

Sintaxis: #aptitude install nombre_paquete. Por ejemplo, #aptitude install nmap


SYNAPTIC
Para la instalacin del programa Synaptic sigue los pasos del Programa Synaptic.
DPKG
Es una herramienta que permite la manipulacin directa de archivos .deb. Gracias a la existencia de
apt, slo es necesario recurrir a ella cuando nos encontramos con paquetes sueltos, es decir, que no
forman parte de ningn repositorio. Tambin es til si hemos usado aptget con la opcin -d y
llevamos los paquetes descargados a otro PC para instalarlos. Para instalar un paquete llamado
paquete.deb la forma de hacerlo es:
# dpkg --install paquete.deb
En el caso de que se produzcan problemas de dependencias el paquete no ser configurado pero s
desempaquetado; es necesario instalar los paquetes para resolver estas dependencias de otros paquetes.
Si ese es el caso, una vez instalados todos hay que ejecutar:
# dpkg --configure --pending
De esta forma se configuran los paquetes pendientes de configuracin. Hay que ser muy cuidadoso con
los paquetes instalados directamente con dpkg, ya que la lista de dependencias puede ser tan grande
que haga inviable la instalacin a mano (por eso se cre apt).
Para desinstalar paquetes se emplea: # dpkg --remove paquete. Y si tambin se quieren eliminar los
archivos de configuracin: # dpkg --purge paquete. Ntese que en ambos casos hay que poner el
nombre del paquete, no el nombre del archivo .deb.

DSELECT
Es una interfaz para manejar dpkg. Para verla abre un terminal y ejecuta dselect.
ALIEN
Es un paquete que convierte entre Ret Hat rpm, Debian .deb, Slackware .slp y pkg en Solaris. En
formatos de achivos, si por alguna razn quieres usar un paquete de otro distrubuidor en linux, que no
sea de tu sistema actual, puedes usar el comando alien para convertirlo al formato que corresponde a tu
sistema. Pero alien no debe ser usado para suplantar paquetes importantes como init, libc y otras cosas
que no son necesarias para tu sistema. Ejemplo para convertir paquete de RedHat rpm a debian: #alien
nombre_paquete.rpm, nos generar un nombre_paquete.deb
Es muy tpico aplicar el comando alien para convertir controladores de impresoras preparados en *.rpm
a paquetes *.deb

UNIDAD VII - KERNEL

DEFINICIN DE KERNEL
El Kernel es el ncleo del sistema operativo. El acta como un intrprete entre el usuario y el hardware.
El kernel controla el acceso a los recursos de hardware de la computadora y determina como compartir
estos recursos de una manera equitativa. El incluye los drivers del hardware, sistema de archivos, redes,
manejo de memoria y administracin de los procesos.
Virtualmente, el Kernel puede ser configurado y optimizado para cualquier entorno, a travs de
recopilacin del kernel mismo. Podras querer recompilar el kernel para incluir drivers para hardware
especfico o para actualizar drivers para la correccin de errores o para incluir nuevas caractersticas.
El Kernel es de los primeros software a ejecutarse en un computador. Una vez el kernel ha terminado
su iniciacin, hace un llamado al proceso init (llamado el proceso padre de todos los procesos). El
kernel provee todas las funcionalidades bsicas a los programas as como el manejo de los recursos del
sistema: hardware, procesos, memoria, I/O y sistema de archivos. La funcionalidad del kernel es
mejorada sumndole/removindole cdigo compilado llamado mdulos o manejadores (drivers) de
dispositivos.
Tipo de kernel
El kernel de Linux es un proyecto activo con un desarrollo continuado. En este proceso existen dos
ramificaciones que viajan en paralelo. La primera es la denominada versin estable del kernel y su
intencin es para produccin solamente y no investigacin. La otra es la versin de desarrollo y es
donde los desarrolladores denominados hackers prueban y analizan propuestas de mejoras. Casi
siempre es inestable, con problemas y caractersticas incompletas. Puedes reconocer el tipo de kernel
por sus nmeros de versin. El formato de este nmero es: X.Y.Z, donde X es la versin mayor y es la
menor y Z es el nivel de patch o revisin de mejora. Si la versin menor es impar entonces es
desarrollo (developers) y si es par entonces es estable.
Obteniendo un nuevo kernel
Antes de poder compilar el kernel, primero debes desempacar el cdigo fuente en el sitio adecuado y

preparar el directorio fuente. Para obtener los fuentes de un kernel hay diferentes mecanismo o lugares
para encontrarlos. Una opcin es va ftp annimo en ftp.kernel.org. En Debian 2.2 otra opcin es
mediante los paquetes de la distribucin. Lo ms habitual es que vengan empaquetados en un nico
fichero de nombre linux- x.y.z.tar.gz o bien con sufijo bz2 lo cul indica que han sido comprimidos con
bzip2.
Preparacin de un nuevo kernel
Una vez obtenidos los fuentes hay que desempaquetarlos. Para ello hay que colocar el fichero
comprimido con los fuentes en el directorio /usr/src y, aqu, proceder a descomprimirlos bien con
gunzip (si tiene sufijo gz) o con bunzip2 (si tienen sufijo bz2).
Ejemplo: host:/usr/src# bunzip2 kernel-source-2.4.5 tar.bz2, una vez descomprimidos hay que deshacer
el tar, host:/usr/src# tar xvf kernel-source-2.4.5.tar
Ejemplo: host:/usr/src# bunzip2 x.y.z.tar.bz2, una vez descomprimidos hay que deshacer el tar,
host:/usr/src# tar xvf kernel-source-x.y.z.tar
Configurando el kernel
Este es el paso ms delicado en todo el proceso de compilacin de un nuevo kernel ya que podra
ocurrir que incluso no pudiera arrancarse el sistema si no se selecciona alguna opcin fundamental para
el mismo. Una vez que el superusuario se site en el directorio /usr/src/linux/ donde se encuentra toda
la estructura de directorios y ficheros que contienen los fuentes del kernel, se puede ejecutar el
comando: host:/usr/src/linux# make config
Sin embargo, existen otros modos ms adecuados y fciles de usar, en concreto en modo texto el ms
ampliamente usado es: host:/usr/src/linux# make menuconfig. Si est operativo el sistema grfico X
window, es ms cmodo usar: host:/usr/src/linux# make xconfig
Dentro de estos scripts hay que responder con si (y), con no (n) o con la opcin m de mdulo La opcin
si significa que este mdulo se compilar dentro del kernel, la opcin no indica que no se compilar,
mientras que la opcin m significa que se compilar el mdulo pero que no se incluir dentro del
kernel.

Objetivos de Compilacin
La mayora de las veces no ser necesario puesto que el ncleo estndar entregado con Debian gestiona
la mayora de configuraciones. Adems, Debian ofrece habitualmente varios ncleos alternativos. As,
debera comprobar si hay un paquete de imagen de ncleo alternativa que se ajuste mejor a su
hardware. En cualquier caso es til compilar un nuevo ncleo para:

Tratar necesidades especiales de hardware, o conflictos de los mismos con ncleos


predeterminados.

Utilizar opciones del ncleo que no estn soportadas en los ncleos preparados, como puede ser
el caso del soporte de memoria elevada (ms de 4GB).

Otimizar el ncleo eliminando controladores no usados para acelerar el tiempo de arranque.

Crear un ncleo monoltico en lugar de uno modular.

Ejecutar un ncleo actualizado o de desarrollo.

Aprender ms de los ncleos de Linux.

Compilar un nuevo ncleo


Una vez finalizada la fase de configuracin, cuando grabamos o almacenamos esta configuracin el
propio script nos pide que ejecutemos los siguientes comandos consecutivamente: host:/usr/src/linux #
make dep ; make clean
make dep asegura que todas las dependencias, como por ejemplo los include se encuentran en su sitio.
make clean borra todos los ficheros objeto que hubieran sido generados en una fase de compilacin
anterior. Tras las dependencias y la limpieza hay que compilar el kernel.
Gestin de la imagen del ncleo
Para ello se ejecuta el comando: host:/usr/src/linux# make bzImage o bien: host:/usr/src/linux# make
bzdisk
El primero compilar el kernel y lo guardar en fichero llamado bzimage en el directorio /usr/src/linux/
arch/i386/boot/. El segundo hace los mismo pero, adems, guarda el kernel en un dispositivo de
almacenamiento. Esta opcin permite que se pueda arrancar el sistema con el nuevo kernel sin tener

que instalar el kernel en el sector de arranque del disco duro, de tal forma que si existiesen problemas
de funcionamiento pudiera volver a arrancarse el sistema con el kernel anterior.
Instalando el nuevo kernel
Para poder arrancar con el nuevo kernel es necesario instalarlo en el sector de arranque adecuado con
un programa gestor de arranque. El ms conocido es lilo. En este proceso se tiene que copiar el kernel
al fichero /vmlinuz o bien hacer un link simblico. Adems, conviene pasar el antiguo kernel a
/vmlinuz.old para dejar activos tanto el antiguo como el nuevo, para poder arrancar desde cualquiera de
los dos. Una vez copiados o convenientemente enlazados se debe actualizar el fichero /etc/lilo.conf:
...
image=/vmlinuz
label=Linux
read-only
# restricted
alias=deb
image=/vmlinuz.old
label=LinuxOLD
read-only
optional
# restricted
alias=2
...
Una vez modificado este fichero de configuracin del gestor de arranque lilo, se debe ejecutar el
comando lilo para que se instale la nueva configuracin en el sector de arranque: # lilo

UNIDAD VIII - MANEJO Y TIPOS DEL SISTEMA DE ARCHIVOS

CONSIDERACIONES AL MOMENTO DE HACER UN FILE SYSTEM


Hay que tener en cuenta que en GNU/Linux no existen las unidades de discos ni dispositivos de
almacenamiento (floppys, USBSticks, pendrives, etc.), propiamente dicho por esta razn, antes de que
se pueda utilizar un sistema de archivos, debe ser montado. El sistema operativo realiza entonces
operaciones de mantenimiento para asegurarse que todo funciona. Como todos los archivos en UNIX
estn en un mismo rbol de directorios, la operacin de montaje provocar que el contenido del nuevo
sistema de archivos aparezca como el contenido de un subdirectorio existente en algn sistema de
archivos ya montado.
DISPOSITIVOS EN LINUX
UNIX, y por lo tanto GNU/Linux, reconocen dos tipos de dispositivos: dispositivos de bloques de
accesoaleatorio (tales como discos), y dispositivos de caracteres (tales como cintas y lineas seriales),
algunos de estos ltimos pueden ser de acceso secuencial y algunos de accesos-aleatorio. Cada
dispositivo soportado en GNU/Linux es representado en el sistema de archivos como un archivo de
dispositivo.
Cuando lea o escriba sobre un archivo de dispositivo, los datos van o vienen desde el dispositivo que
este representa. De esta manera no se necesitan programas especiales (y no se necesitan ningn mtodo
especial de programacin, como descubrir interrupciones o escudriar puertos seriales) para acceder a
los dispositivos. Por ejemplo, para enviar un archivo a la impresora, puede simplemente ejecutar: $ cat
filename > /dev/lp1 y el contenido del archivo es impreso (en este caso, el archivo debe estar en un
formato que la impresora comprenda). Note, que no es una buena idea tener a varias personas
realizando cat de sus archivos a la impresora al mismo tiempo. Generalmente se utiliza un programa
especial para enviar los archivos a que sean impresos (usualmente lpr). Estos programas se aseguran de
que solo un archivo est siendo impreso en un momento dado, y automticamente enva archivos a la
impresora en cuanto se finalice la impresin del archivo previo. Algo similar puede ser necesario para
la mayora de los dispositivos. De hecho, raramente los archivos de dispositivos son utilizados

directamente.
Desde que los archivos de dispositivos se muestran como archivos en el sistema (en el directorio /dev),
es fcil ver cuales de ellos existen, utilizando ls o algn otro comando similar. En la salida del comando
ls -l, la primera columna indica el tipo de archivo y sus permisos. Por ejemplo, observe la salida al
inspeccionar un archivo de dispositivo de un puerto serial:
$ ls -l /dev/ttyS0
crw-rw-r-- 1 root dialout 4, 64 Aug 19 18:56 /dev/ttyS0
El primer caracter en la primera columna arriba, es decir `c' en crw-rw-rw-, le indica el tipo de archivo,
en este caso un dispositivo de caracteres. Para archivos comunes el primer caractr es `-', para
directorios es`d' y para dispositivos de bloques es `b'. Examine la pgina de manual de ls para obtener
informacin mas detallada.Note que usualmente todos los archivos de dispositivos existen, an cuando
el dispositivo por si mismo no se encuentre instalado. Esto quiere decir que aunque exista un archivo
llamado /dev/sda, no significa que realmente haya un disco SCSI instalado. Tener todos los archivos de
dispositivos facilita la instalacin de los programas, y la incorporacin de nuevo hardware (no existe
Dispositivos IDE en Linuxla necesidad de tener que conocer los parmetros correctos para crear los
archivos de dispositivos de los nuevos dispositivos).
Dispositivos IDE en Linux
Cada disco rgido es representado por un archivo de dispositivo separado. Los archivos de dispositivos
para los discos rgidos IDE son /dev/hda, /dev/hdb, /dev/hdc, y dev/hdd, respectivamente
Dispositivos SCSI en Linux
Los archivos de dispositivos para los discos rgidos SCSI son /dev/sda, /dev/sdb, etc.
PARTICIONES
Un disco duro puede dividirse en varias particiones. Cada particin funciona como si fuera un disco
duro independiente. La idea es que si slo se tiene un disco, y se quieren tener, digamos, dos sistemas
operativos en l, se pueda dividir el disco en dos particiones. Cada sistema operativo utilizar su propia
particin tal y como se desea, y no tocar la otra. De esta forma los dos sistemas operativos pueden
coexistir pacficamente en el mismo disco duro. Sin particiones se tendra que comprar un disco duro

para cada sistema operativo.


Los disquetes generalmente no se particionan. No hay ninguna razn tcnica para ello, pero dado que
son tan pequeos, particionarlos sera til slo en extraas ocasiones. Los CD-ROM tampoco se suelen
particionar, ya que es ms fcil utilizarlos como un disco grande, y raramente existe la necesidad de
tener varios sistemas operativos en uno de ellos.
Particiones primarias y lgicas
El esquema original de particionamiento para discos duros de PC permita solamente cuatro
particiones. Esto rpidamente se volvi demasiado escaso para la vida real, en parte porque algunas
personas queran ms de cuatro sistemas operativos (Linux, MS-DOS, OS/2, Minix, FreeBSD,
NetBSD, o Windows/NT,mpor nombrar algunos), pero principalmente porque algunas veces es buena
idea tener varias particiones para un sistema operativo. Por ejemplo, el espacio swap est generalmente
mejor colocado para Linux en su propia particin en lugar de la particin principal por cuestiones de
rapidez.
Para superar este problema de diseo, se inventaron las particiones extendidas. Este truco permite
particionar una particin primaria en sub-particiones. Esta particin primaria subdividida es la
particin extendida; las sub-particiones son las particiones lgicas. Se comportan como particiones
primarias, pero se crean de diferente manera. No existen diferencias de rendimiento entre ellas.
La estructura de particiones de un disco duro debe parecerse a la que aparece en la siguiente Figura, A
sample hard disk partitioning.. El disco se divide en tres particiones primarias, la segunda de las
cuales se divide en dos particiones lgicas. Una parte del disco no est particionada. El disco como un
todo y cada particin primaria tienen un sector de arranque.

Figura: Esquema simple de Particionado

Crear Particiones
Existen muchos programas para crear y eliminar particiones. La mayora de sistemas operativos tienen
el suyo propio, y es buena idea utilizar el propio con cada sistema operativo, por si se diera el caso que
haga algo inusual que los otros no puedan hacer. Muchos de estos programas se llaman fdisk, incluido
el de Linux, o variaciones de esa palabra. Los detalles de uso del fdisk de Linux se dan en su pgina de
manual. El comando cfdisk es similar a fdisk, pero tiene una interfaz ms agradable (a pantalla
completa).
Cuando se utilizan discos EIDE, la particin de arranque (la particin con los archivos de imagen del
ncleo arrancable) debe estar completamente definida en los primeros 1024 cilindros. Esto es as
porque el disco se utiliza a travs de la BIOS durante el arranque (antes de que el sistema entre en el
modo protegido), y la BIOS no puede manejar ms de 1024 cilindros.
A veces es posible utilizar una particin de arranque que parcialmente se encuentre dentro de los
primeros 1024 cilindros. Esto funciona siempre que todos los archivos que lee la BIOS se encuentran
en los primeros 1024 cilindros.
Como esto es difcil de conseguir, es mala idea intentarlo; nunca se sabe si una actualizacin del ncleo
o una desfragmentacin del disco originar un sistema no arrancable. As que asegrese que su

particin de arranque est completamente colocada dentro de los primeros 1024 cilindros. 8 .
Algunas versiones modernas de BIOS y discos IDE pueden, de hecho, manejar discos de ms de 1024
cilindros, Si tiene uno de esos sistemas, se puede olvidar del problema; si no est seguro, coloque la
particin de arranque en los primeros 1024 cilindros.
Cada particin debe tener un nmero par de sectores, puesto que el sistema de archivos Linux utiliza un
tamao de bloque de 1 kilobyte , es decir, dos sectores. Un nmero impar de sectores provocar que el
ltimo no pueda utilizarse. Esto no es ningn problema, pero resulta feo, y algunas versiones de fdisk
avisarn de ello.
Cambiar el tamao de una particin requiere que primero se realice una copia de seguridad de todo lo
que quiera salvar de esa particin (a ser posible de todo el disco, por si acaso), borrar la particin, crear
una nueva, y entonces restaurarlo todo a la nueva particin. Si la particin crece, puede necesitar
ajustar los tamaos (y guardar y restaurar) las particiones adjuntadas tambin.
Como cambiar una particin es doloroso, es preferible establecerlas correctamente al principio, o tener
un rpido y fcil de utilizar sistema de copia de seguridad. Si est instalando desde un medio que no
requiere demasiada intervencin humana (digamos, desde un CD-ROM, en contraposicin a los
disquetes), es generalmente ms fcil probar con diferentes configuraciones al principio. Como no tiene
todava datos que guardar, no es tan costoso el modificar particiones varias veces.
Existe un programa de MS-DOS, llamado fips9 que redimensiona una particin MS-DOS sin tener que
guardar y restaurar, pero para otros sistemas de archivos es todava necesario.
Es importante resaltar que existe un programa muy til para Linux llamado ntfs-resize que pertenece al
proyecto Linux-ntfs. Puede redimensionar de manera segura y no destructiva particiones de tipo NTFS.
Adems soporta todas las versiones de NTFS y trabaja an cuando el sistema de archivos se encuentre
fragmentado.

SISTEMA DE ARCHIVOS
Un sistema de archivos se crea, esto es, se inicia, con el comando mkfs. Existen en realidad programas
separados para cada tipo de sistemas de archivos. mkfs es nicamente una careta que ejecuta el
programa apropiado dependiendo del tipo de sistemas de archivos deseado. El tipo se selecciona con la
opcin -t fstype.
Los programas a los que -t fstype llama tienen lneas de comando ligeramente diferentes. Las opciones
ms comunes e importantes se resumen ms abajo; vea las pginas de manual para ms informacin.

-t fstype, selecciona el tipo de sistema de archivos.

-c, busca bloques defectuosos e inicia la lista de bloques defectuosos en consonancia.

-l filename, lee la lista inicial de bloques defectuosos del archivo dado.

Herramientas del Sistema de Archivos


Comprobar la integridad de un sistema de archivos con fsck
Los sistemas de archivos tienden a ser propensos a los errores. La correccin y validacin de un
sistema de archivos puede ser comprobada utilizando el comando fsck. Puede ser instruido para reparar
cualquier problema menor que encuentre, y alertar al usuario si hay errores irreparables.
Afortunadamente, el cdigo implementado en los sistemas de archivos puede estudiarse de forma muy
efectiva, as que escasamente hay problemas, y normalmente son causados por fallos de alimentacin,
hardware defectuoso, o errores de operacin; por ejemplo, no apagar el sistema adecuadamente.
La mayora de los sistemas se configuran para ejecutar fsck automticamente durante el arranque, as
que cualquier error se detecta (y esperemos que corregido) antes que el sistema se utilice.
Utilizar un sistema de archivos corrupto tiende a empeorar las cosas: si las estructuras de datos se
mezclan, utilizar el sistema de archivos probablemente las mezclar an ms, resultando en una mayor
prdida de datos.
En cualquier caso, fsck puede tardar un tiempo en ejecutarse en sistemas de archivos grandes, y puesto
que los errores casi nunca suceden si el sistema se ha apagado adecuadamente, pueden utilizarse un par
de trucos para evitar realizar comprobaciones en esos casos. El primero es que si existe el archivo
/etc/fastboot, no se realizan comprobaciones. El segundo es que el sistema de archivos ext2 tiene una

marca especial en su superbloque que indica si el sistema de archivos se desmont adecuadamente


despus del montaje previo. Esto permite a e2fsck (la versin de fsck para el sistema de archivos ext2)
evitar la comprobacin del sistema de archivos si la bandera indica que se realiz el desmontaje (la
suposicin es que un desmontaje adecuado indica que no hay problemas). Que el truco de /etc/ fastboot
funcione en su sistema depende de sus guiones (scripts) de inicio, pero el truco de ext2 funciona cada
vez que utilice e2fsck. Debe ser sobrepasado explcitamente con una opcin de e2fsck para ser evitado.
La comprobacin automtica slo funciona para los sistemas de archivos que se montan
automticamente en el arranque. Utilice fsck de forma manual para comprobar otros sistemas de
archivos, por ejemplo, disquetes. Si fsck encuentra problemas irreparables, necesita conocimientos
profundos de cmo funciona en general un sistema de archivos, y en particular el tipo del sistema de
archivos corrupto, o buenas copias de seguridad. Lo ltimo es fcil (aunque algunas veces tedioso) de
arreglar, el precedente puede solucionarse a travs de un amigo, los grupos de noticias y listas de correo
de Linux, o alguna otra fuente de soporte, si no sabe cmo hacerlo usted mismo. Me gustara contarle
ms sobre el tema, pero mi falta de formacin y experiencia en este asunto me lo impiden. El programa
de Theodore Ts'o debugfs puede ser de ayuda.
fsck debe ser utilizado nicamente en sistemas dLuchar contra la Fragmentacine archivos
desmontados, nunca en sistemas de archivos montados (a excepcin del raz en slo-lectura en el
arranque). Esto es as porque accede al disco directamente, y puede por lo tanto modificar el sistema de
archivos sin que el sistema operativo se percate de ello. Habr problemas, si el sistema operativo se
confunde.
Comprobar errores en el disco mediante badblocks
Puede ser buena idea comprobar los bloques defectuosos peridicamente. Esto se realiza con el
comando badblocks. Saca una lista de los nmeros de todos los bloques malos que puede encontrar.
Esta lista puede introducirse en fsck para grabar en el sistema de archivos las estructuras de datos para
que el sistema operativo no intente utilizar los bloques malos para almacenar datos.
Luchar contra la Fragmentacin
Cuando un archivo se escribe en el disco, no puede escribirse siempre en bloques consecutivos.Un
archivo que no est almacenado en bloques consecutivos est fragmentado. Leer un archivo

fragmentado requiere mayor tiempo, puesto que la cabeza de lectura-escritura del disco debe moverse
ms. Es deseable evitar la fragmentacin, aunque es un problema menor en un sistema con un buen
cach buffer con lectura progresiva.
El sistema de archivos ext2 intenta mantener la fragmentacin al Comprobar la integridad de un
sistema de archivos con fsckmnimo, manteniendo todos los bloques de un archivo juntos, incluso
cuando no pueden almacenarse en sectores consecutivos. Ext2 efectivamente localiza el bloque libre
ms cercano a los otros bloques del archivo. Por lo tanto para ext2 hay poca necesidad de preocuparse
por la fragmentacin. Existe un programa para desfragmentar un sistema de archivos ext2, llamado
extraamente defrag.
Existen muchos programas de desfragmentacin MS-DOS que mueven los bloques por todo el sistema
de archivos para eliminar la fragmentacin. Para otros sistemas de archivos, la desfragmentacin debe
hacerse guardando el sistema de archivos, volverlo a crear, y restaurando los archivos de la copia
guardada. Guardar un sistema de archivos antes de desfragmentarlo es una buena idea para cualquier
sistema de archivos, puesto que muchas cosas pueden ir mal durante la desfragmentacin.
Montar un Sistema de Archivos
Ya se ha visto que Linux accede a los dispositivos mediante archivos (directorios de /dev), y, por este
motivo, en Linux no hay el concepto de unidades, ya que todo est bajo el directorio principal . En
Linux no se accede a la primera disquetera mediante la orden A: como en DOS sino que hay que
montarla.
De este modo, tenemos dos conceptos nuevos:

montar: decirle a Linux que se va a utilizar un determinado dispositivo con un determinado


sistema de archivos y estar en un directorio especficado.

En la siguiente tabla se muestran los sistemas de archivos ms comunes en Linux.


TIPO
ext3 reiserFS
msdos
vfat

DESCRIPCIN
Sistema de archivos de Linux.
Sistema de archivos de DOS.
Sistema de archivos de Windows 9X (nombres largos).

iso9660
nfs

Sistema de archivos de CD-ROM.


Sistema de archivos compartido por red ("exportado").

Desmontar: decirle a Linux que se ha dejado de utilizar un determinado dispositivo.

Para montar un determinado sistema de archivos de un dispositivo, se utiliza el comando mount. La


sintaxis es la siguiente: # mount -t sistema_archivos dispositivo directorio [-o opciones], donde:

sistema_archivos, puede ser cualquiera de los que aparece en la tabla anterior.

dispositivo, puede ser cualquier dispositivo del directorio /dev o, en el caso de nfs, un directorio
de otro PC.

directorio, es el directorio donde estar el contenido del dispositivo.

opciones pueden ser cualquiera de la tabla siguiente, en el caso de no poner ninguna opcin,
mount utilizar las opciones por defecto
OPCIN

DESCRIPCIN

rw

Lectura/escritura.

ro

Slo lectura.

exec

Se permite ejecucin.

user

Los usuarios pueden "montar"/"desmontar".

suid

Tiene efecto los identificadores de propietario y del grupo.

auto

Se puede montar automticamente.

async

Modo asncrono.

sync

Modo sncrono.

dev

Supone que es un dispositivo de caracteres o bloques.

Una vez montado el dispositivo, si no se va a volver utilizar se puede desmontarlo con el comando
umount con la siguiente sintaxis: # umount directorio

Siempre, despus de utilizar un dispositivo hay que desmontarlo, para que se almacenen correctamente
los datos en dicho dispositivo. Un ejemplo de ello, es el hecho de que, un lector de CD-ROM, que haya
sido montado, no se abrir hasta que no se desmonte.
Con un archivo /etc/fstab, cualquier usuario podra hacer: $ mount /mnt/msdos+
$ umount /mnt/msdos+
para montar y desmontar un disquete, respectivamente. Sin embargo, slo el administrador podra
montar y desmontar el directorio /mnt/host2.
Se muestran algunos ejemplos:

Disquete de DOS
mount -t msdos /dev/fd0 /mnt/floppy -o rw,noexec
umount /mnt/floppy

Disquete de Windows 9X
mount -t vfat /dev/fd0 /mnt/floppy -o user,rw
umount /mnt/floppy

CD-ROM
mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro
umount /mnt/cdrom

Directorio exportado de host2


mount -t nfs host2:/tmp /mnt/host2
umount /mnt/host2
Archivo /etc/fstab
Lista los sistemas de archivos montados automticamente en el arranque del sistema por el comando
mount -a (en /etc/rc o archivo de inicio equivalente). En Linux, este archivo tambin contiene
informacin acerca de reas de swap utilizadas automticamente por swapon -a.

El primer campo, (fs_spec), describe el dispositivo especial de bloque o sistema de archivos remoto a
ser montado.
El segundo campo, (fs_file), describe el punto de montaje para el sistema de archivos. Para particiones
de intercambio (swap), este campo debe decir ``none''.
El tercer campo, (fs_vfstype), describe el tipo del sistema de archivos. Actualmente, el sistema soporta
los siguientes tipos de sistemas de archivos. (y posiblemente otros - consulte /proc/filesystems): minix,
ext2, ext3, RaiserfS, msdos, hpfs, iso9660, nfs, swap. Si vfs_fstype tiene el valor ignore, la entrada es
ignorada. Esto es til para ver aquellas particiones del disco que no estn siendo usadas.
El cuarto campo, (fs_mntops), describe las opciones de montaje asociadas con el sistema de archivos.
Es una lista de opciones separadas por comas. Contiene como mnimo el tipo de montaje y otras
opciones apropiadas para el tipo del sistema de archivos. Las distintas opciones para sistemas de
archivos locales estn documentadas en mount(8). Las opciones especficas para nfs estn
documentadas en nfs(5). Las siguientes opciones son comunes para cualquier tipo de sistema de
archivos: noauto (no monta el sistema cuando se ejecuta "mount -a", p.ej., cuando arranca el sistema),
y user (permite que un usuario monte el sistema de archivos). Para mayor informacin.
El quinto campo, (fs_freq), lo utiliza el comando dump(8) para determinar qu sistemas de archivos
necesitan ser volcados (dumped). Si el quinto campo est vaco, dump asume que el sistema de
archivos no necesita ser volcado.
El sexto campo, (fs_passno), lo usa el programa fsck(8) para determinar el orden en el cual se van a
chequear los sistemas de archivos cuando el sistema arranca. El sistema de archivos raz debera llevar
fs_passno igual a 1, y otros sistemas de archivos deberan llevar fs_passno igual a 2. Sistemas de
archivos en un mismo disco sern comprobados secuencialmente, pero sistemas de archivos en
diferentes discos sern comprobados al mismo tiempo para utilizar el paralelismo disponible en el
equipo. Si el sexto campo no est presente o tiene un valor de 0, fsck asumir que los sistemas de
archivos no necesitan ser chequeados.
La forma apropiada de leer los registros de fstab es usando las rutinas getmntent

CUOTAS DE DISCO
Una cuota de disco es la serie de parmetros y limitaciones que se asignan para el uso sobre ciertos
recursos. Existen bsicamente dos tipos de cuotas:

Cuota de uso o de bloques: limita la cantidad de espacio en disco que puede ser utilizado.

Cuota de archivos o inodos: limita la cantidad de archivos y carpetas que pueden ser creadas.

Asmismo, usualmente se establecen dos niveles en la administracin de las cuotas:

Cuota suave: este nivel se establece como un nivel de advertencia, en donde el usuario (o
grupos) son informados de que estn prximos a alcanzar su lmite

Cuota dura: este nivel es el lmite de capacidad asignado al usuario o grupo, an cuando se
puede establecer un periodo de gracia (usualmente 7 das) en los que se pueden exceder estas
cuotas

Las cuotas se definen por usuario o por grupos, y son controladas por el administrador del sistema.
Estas cuotas se establecen para que los usuarios no hagan uso desmedido de los recursos que se les
proporciona, optimizando estos y reduciendo los costos asociados al despilfarro de capacidad.
Los sistemas de archivos manejados por Linux y Unix generalmente soportan la implementacin de
cuotas de disco. Entre estos encontramos a ext2, ext3, reiserfs, ufs, etc. Los sistemas de archivos msdos
(fat12, fat16, fat32) NO soportan la implementacin de cuotas, no as ntfs.
Regularmente las cuotas se asignan por cada sistema de archivos, de manera independiente.
Dependiendo del tipo de gestin que desee implementarse, se habilitarn o no las cuotas en distintos
sistemas de archivos.
Activando Cuotas
Para habilitar el soporte para cuotas en un sistema de archivos determinado, deberemos asegurarnos de
que ningn proceso est haciendo uso de dicho recurso. Para asegurarnos de que este requisito sea
cubierto, deberemos iniciar nuestro sistema en nivel de ejecucin monousuario.
NOTA: An cuando podemos cambiarnos del acutal nivel de ejecucin hacia el nivel monousuario (init
1), esto no nos asegura que no haya algn proceso haciendo uso del recurso. Es por ello que se

recomienda reiniciar el equipo e iniciarlo en dicho nivel de ejecucin.


Por cada sistema de archivos al que se desee implementar la cuota, se debern crear 4 archivos:
quota.user, quota.group, aquota.user, aquota.group. Estos archivos sern los responsables de
administrar las cuotas y llevar los ndices de los archivos de los usuarios y grupos.
Suponiendo que tenemos 3 distintos sistemas de archivos a los que queremos aplicar las cuotas (/home,
/var, /deptos), deberemos crear los 4 archivos arriba mencionados en cada punto de montaje: # touch
/home/quota.user,quota.group,aquota.user,aquota.group
# touch /var/quota.user,quota.group,aquota.user,aquota.group
# touch /deptos/quota.user,quota.group,aquota.user,aquota.group
Si queremos optimizar la ejecucin de dichos comandos, y se tiene un poco ms de pericia sobre el
manejo de bash, podremos resumir en una linea como sigue:
# touch /{home,var,deptos}/{,a}quota.{user.group}
En el archivo /etc/fstab, se debe especificar el montaje de dichos sistemas de archivos con las opciones
de cuotas de usuario y/o cuotas de grupo:

Cuota de uso o de bloques: limita la cantidad de espacio en disco que puede ser utilizado.

Cuota de archivos o inodos: limita la cantidad de archivos y carpetas que pueden ser creadas.

Asmismo, usualmente se establecen dos niveles en la administracin de las cuotas:


/dev/sda3
LABEL=/var
/dev/mapper/VG01/LV01

/home ext3 defaults,usrquota 1 1


/var ext3 defaults,usrquota,grpquota 1 1
/deptos ext3 defaults,grpquota 1 1

Debemos volver a montar dichos sistemas de archivos:


# mount -o remount /home
# mount -o remount /var
# mount -o remount /deptos

Una vez hecho esto, verificamos las opciones de montaje mediante el comando mount. Los archivos
que generamos, en este momento no son mas que simples archivos en blanco, tenemos que convertirlos
a un formato de cuotas:
# quotacheck -ugav
u : Activa las cuotas de usuarios
g : Activa las cuotas de grupos
a : Verifica la creacin de cuotas en todos los sistemas de archivos con soporte para estas
v : Muestra una salida detallada de la ejecucin del mandato. Es usual ver que el sistema nos
enva un mensaje de advertencia cuando ejecutamos este mandato por primera vez, ya que se estn
generando los ndices.
Activamos las cuotas en los puntos de montaje especificados:
# quotaon /home
# quotaon /var
# quotaon /deptos
Listo. Con esto, ya tenemos capacidad para la administracin de cuotas de disco en nuestro sistema.
Edicin de Cuotas
El mandato edquota nos permite editar las cuotas de disco que se implementarn. La sintxis de este
mandato es muy sencilla, solamente debemos enviarle como parmetro

el nombre del usuario o del

grupo del que requiramos:


# edquota paco
# edquota -g sistemas
Al ejecutar edquota, se ejecutar el editor de textos vi con opciones especficas para el manejo de
cuotas. En la primer lnea tenemos el identificador del usuario o grupo que estemos administrando. En
las lneas subsecuentes, encontramos 7 columnas:

Filesystem: sistema de archivos en el que se implementa la cuota.

blocks: la actual cantidad de espacio en disco utilizado por el usuario o grupo en ese sistema de
archivos. Este dato no se podr modificar manualmente, an cuando lo intentemos los cambios
no se guardarn.

soft: la cuota suave para la cantidad de espacio en disco utilizado. Se utiliza 0 para desactivar
esta cuota.

hard: La cuota dura para la cantidad de espacio en disco a utilizar. El valor 0 desactiva esta
cuota.

inodes: La actual cantidad de archivos y carpetas utilizados por el usuario. Este dato no se
podr modificar manualmente, an cuando lo intentemos los cambios no se guardarn

soft: La cuota suave para la cantidad de archivos about:y carpetas utilizados. Se utiliza 0 para
desactivar esta cuota.

hard: La cuota dura para la cantidad de archivos y carpetas utilizados. El valor 0 desactiva esta
cuota

# edquota -t
Este mandato nos permite establecer un periodo de gracia que acomode mejor a nuestras necesidades.
Lo podemos establecer en das, horas, minutos o segundos, y se especificar para cada sistema de
archivos.

UNIDAD IX - FUNDAMENTOS DE REDES TCP/IP

PROTOCOLO TCP/IP
La Familia de protocolos de internet es un conjunto de protocolos de red en la que se basa Internet y
que permiten la transmisin de datos entre redes de coputadoras. En ocasiones se la denomina conjunto
de protocolos TCP/IP, en referencia a los dos protocolos ms importantes que la componen: Protocolo
de Control de Transmisin (TCP) y Protocolo de Internet (IP), que fueron los dos primeros en definirse,
y que son los ms utilizados de la familia. Existen tantos protocolos en este conjunto que llegan a ser
ms de 100 diferentes, entre ellos se encuentra el popular HTTP (HyperText Transfer Protocol), que es
el que se utiliza para acceder a las pginas web, adems de otros como el ARP (Address Resolution
Protocol) para la resolucin de direcciones, el FTP (File Transfer Protocol) para transferencia de
archivos, y el SMTP (Simple Mail Transfer Protocol) y el POP (Post Office Protocol) para correo
electrnico, TELNET para acceder a equipos remotos, entre otros.
El TCP/IP es la base de Internet, y sirve para enlazar computadoras que utilizan diferentes sistemas
operativos, incluyendo PC, minicomputadoras y computadoras centrales sobre redes de rea local
(LAN) y rea extensa (WAN). TCP/IP fue desarrollado y demostrado por primera vez en 1972 por el
departamento de defensa de los Estados Unidos, ejecutndolo en ARPANET, una red de rea extensa
del departamento de defensa.
La familia de protocolos de internet puede describirse por analoga con el modelo OSI, que describe los
niveles o capas de la pila de protocolos, aunque en la prctica no corresponde exactamente con el
modelo en Internet. En una pila de protocolos, cada nivel soluciona una serie de problemas
relacionados con la transmisin de datos, y proporciona un servicio bien definido a los niveles ms
altos. Los niveles superiores son los ms cercanos al usuario y tratan con datos ms abstractos, dejando
a los niveles ms bajos la labor de traducir los datos de forma que sean fsicamente manipulables.
PROTOCOLOS DE APLICACIONES
La pila TCP/IP incluye protocolos de aplicacin tales como:

TELNET para el acceso interactivo de una terminal a un host remoto.

FTP ("File Transfer Protocol") para transferencias de alta velocidad de un disco a otro.

SMTP ("simple mail transfer protocol") como sistema de correo de Internet.

Estas son las aplicaciones implementadas ms ampliamente, pero existen muchas otras. Cada
implementacin TCP/IP particular incluye un conjunto ms o menos restringido de protocolos
de aplicacin.

Usan UDP o TCP como mecanismo de transporte. Recordar que UDP no es fiable ni ofrece control de
flujo, por lo que en este caso la aplicacin ha de proporcionar sus propia rutinas de recuperacin de
errores y de control de flujo. Suele ser ms fcil desarrollar aplicaciones sobre TCP, un protocolo
fiable, orientado a conexin. La mayora de los protocolos de aplicacin utilizan TCP, pero algunas
aplicaciones se construyen sobre UDP para proporcionar un mejor rendimiento reduciendo la carga del
sistema que genera el protocolo. La mayora de ellas usa el modelo de interaccin cliente/servidor.
DIRECCIONES PRIVADAS
Tradicionalmente, las redes IP fueron agrupadas en clases cuyas direcciones de red componentes eran
de 8, 16 o 24 bits de tamao.
direcciones IP

mscara de red
- 126.255.255.255

255.0.0.0

longitud

Clase A

1.0.0.0

= /8

Clase B

128.0.0.0

- 191.255.255.255

255.255.0.0

= /16

Clase C

192.0.0.0

- 223.255.255.255

255.255.255.0

= /24

Las direcciones IP que no se encuentran en estos rangos se utilizan para propsitos especiales.
En cada clase existen rangos de direcciones reservados para su uso en redes de rea local (LANs). Se

garantiza que estas direcciones no entren en conicto con las direcciones propias de Internet (en
consecuencia, si una de estas direcciones se asigna a un equipo ste no podr acceder a Internet
directamente sino a travs de una puerta de enlace que acte como proxy para los servicios individuales
o hacer la traduccin de direcciones de red NAT) Estos rangos de direcciones se dan en la siguiente
tabla junto con el nmero de rangos en cada clase.
direcciones de red

longitud

cantidad

Clase A

10.x.x.x

/8

Clase B

172.16.x.x - 172.31.x.x

/16

16

Clase C

192.168.0.x - 192.168.255.x

/24

256

La primera direccin en una red IP es la direccin de la propia red. La ltima direccin es la direccin
de difusin de la red. Todas las otras direcciones se pueden asignar a mquinas de la red. De stas, la
primera o la ltima direccin generalmente se asigna a la puerta de enlace para Internet.
CONFIGURACIN DE LA RED
Las herramientas tradicionales de conguracin de red a bajo nivel en sistemas GNU/Linux son los
programas ifconfig y route que vienen en el paquete net-tools. Estas herramientas han sido ocialmente
reemplazadas por ip que viene en el paquete iproute. El programa ip funciona con Linux 2.2 y superior
y es ms poderoso que las herramientas anteriores. Sin embargo, las herramientas anteriores an
funcionan y resultan ms familiares para muchos usuarios.
Conguracin de la red a bajo nivel ifconfig y route
Veamos una ilustracin de cmo cambiar la direccin IP de la interfaz eth0 de 192.168.0.3 a
192.168.0.111 y convertir a eth0 en la ruta a la red 10.0.0.0 va 192.168.0.1. Empiece ejecutando
ifconfig y route sin argumentos para mostrar el estado actual de todas las interfaces de red y
encaminamiento.
# ifconfig
eth0 Link encap:Ethernet

HWaddr 08:00:46:7A:02:B

inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1


RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB)
Interrupt:9
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB)
# route
Kernel IP routing table
Destination Gateway
192.168.0.0 *
default

192.168.0.1

Genmask
255.255.0.0

255.255.255.255 UG

Primero deshabilitamos la interfaz.


# ifconfig eth0 inet down
# ifconfig
lo

Flags Metric Ref Use Iface

Link encap:Local Loopback

0
0

0 eth0
0

0 eth0

... (no ms entradas eth0)


# route
... (no ms entradas en la tabla de rutas)
Luego la habilitamos con la nueva IP y la nueva ruta.
# ifconfig eth0 inet up 192.168.0.111 \
netmask 255.255.0.0 broadcast 192.168.255.255
# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
El resultado:
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
...

# route
Kernel IP routing table
Destination Gateway
192.168.0.0 *
10.0.0.0

Genmask

Flags Metric Ref Use Iface

255.255.0.0 U

192.168.0.1 255.0.0.0

Conguracin de la red a bajo nivel ip

0
UG

0
0

0 eth0
0

0 eth0

Los comandos ip equivalentes a los comandos ifconfig y route anteriores son:


ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/16 broadcast
192.168.255.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via
192.168.0.1
El programa ip muestra la sintaxis de sus comandos cuando se ejecuta con el argumento help. Por
ejemplo, ip link help imprime por pantalla:
Usage: ip link set DEVICE { up | down | arp { on | off } |
dynamic { on | off } |
multicast { on | off } | txqueuelen PACKETS |
name NEWNAME |
address LLADDR | broadcast LLADDR |
mtu MTU }
ip link show [ DEVICE ]
Congurando una interfaz
Para interfaces Wi-Fi se utiliza el programa iwconfig, que viene con el paquete wireless-tools, adems
de ifconfig o ip.
Configurar interfases de red

A n de facilitar la conguracin de la red, Debian proporciona una herramienta estndar de


conguracin de red de alto nivel que consiste en los programas ifup, ifdown y el archivo /etc/network/
interfaces. 9 Si elige utilizar ifupdown para realizar la conguracin de su red, entonces no debera usar
los comandos de bajo nivel. 10 Ifupdown se program bajo la suposicin que slo iba a ser utilizado
para congurar y descongurar las interfaces de red.
Para actualizar la conguracin de la interfaz haga lo siguiente:
# ifdown eth0
# editor /etc/network/interfaces

# modifique a su antojo

# ifup eth0
Congurando una interfaz con una direccin IP esttica
Supongamos que desea congurar una interfaz Ethernet que tiene una direccin IP ja 192.168.0.123.
Esta direccin comienza con 192.168.0 por lo tanto debe estar en una LAN. Supongamos adems que
192.168.0.1 es la direccin de la puerta de enlace de la LAN a Internet. Edite /etc/network/interfaces de
modo que incluya un fragmento como el siguiente:
iface eth0 inet
address
netmask

static
192.168.0.123
255.255.255.0

gateway 192.168.0.1
Si tiene instalado el paquete resolvconf puede aadir lneas para especicar la informacin relativa al
DNS. Por ejemplo:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
dns-search nicedomain.org

dns-nameservers 195.238.2.21 195.238.2.22


Luego que se activa la interfaz, los argumentos de las opciones dns-search y dns-nameservers quedan
disponibles para resolvconf para su inclusin en resolv.conf. El argumento lindodominio.org de la
opcin dns-search corresponde al argumento de la opcin search en resolv.conf(5). Los argumentos
195.238.2.21 y 195.238.2.22 de la opcin dns-nameservers corresponde a los argumentos de las
opciones nameserver en resolv.conf(5). Otras opciones reconocidas son dns-domain y dns-sortlist.
Congurando una interfaz usando DHCP
Para congurar una interfaz usando DHCP edite el /etc/network/interfaces de manera que incluya un
fragmento como el siguiente :
iface eth0 inet dhcp
Para que esto funcione debe tener instalado uno de los clientes DHCP mencionados anteriormente.
Congurando una interfaz Wi-Fi
El paquete wireless-tools incluye el script /etc/network/if-pre-up.d/wireless-tools que permite
congurar hardware Wi-Fi (802.11a/b/g) antes que se activela interfaz.
Para cada parmetro posible del comando iwconfig puede incluir una opcin en /etc/network/interfaces
con un nombre como el del parmeto con el prejo wireless-. Por ejemplo, para jar el ESSID de
eth0 en miessid y la clave de cifrado en 123456789e antesde activar eth0 usando DHCP, edite el
/etc/network/interfaces de modo que incluya un fragmento como el siguiente :
iface eth0 inet dhcp
wireless-essid miessid
wireless-key 123456789e
Obsrvese que no debera utilizar este mtodo para congurar el ESSID y la clave si est ejecutando
waproamd para esta interfaz. En el momento que se ejecuta ifup, waproamd ya tiene congurados
ESSID y la clave.
Congurando mltiples interfases Ethernet para una puerta de enlace
Supongamos que eth0 est conectada a Internet con un direccin IP congurada con DHCP y eth1 est

conectada a la LAN con una direccin IP esttica 192.168.1.1. Edite /etc/network/interfaces de modo
que incluya un fragmento similar al siguiente:
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Si activa NAT en esta mquina, puede compartir la conexin de Internet con todas las mquinas de la
LAN.
Congurando interfases virtuales
Usando interfaces virtuales puede congurar una nica tarjeta Ethernet para que sea la interfaz de
distintas subredes IP. Por ejemplo, supongamos que su mquina se encuentra en una red LAN
192.168.0.x/24. Desea conectar la mquina a Internet usando una direccin IP pblica proporcionada
con DHCP usando su tarjeta Ethernet existente. Edite /etc/network/interfaces de modo que incluya un
fragmento similar al siguiente:
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
iface eth0:0 inet dhcp
La interfaz eth0:0 es una interfaz virtual. Al activarse tambin lo har su padre eth0.
SECURE SHELL SSH
SSH (Secure SHell) es la manera segura de comunicarse a travs de Internet. Una versin libre de SSH
llamada OpenSSH se encuentra disponible en el paquete Debian ssh.

Fundamentos
Primero instale el cliente y el servidor OpenSSH. # apt-get update && apt-get install ssh.
/etc/ssh/sshd_not_to_be_run no debe estar presente si desea ejecutar el servidor
OpenSSH.
SSH tiene dos protocolos de autenticacin:

Protocolo SSH versin 1: la versin que viene con Potato admite nicamente este protocolo.
Mtodos de autenticacin disponibles: RSA Authentication (autenticacin del usuario basada en
una clave RSA), Rhosts Authentication (autenticacin basada en .rhosts - insegura,
desactivada), Rhosts RSA Authentication ( autenticacin basada en .rhosts combinada con una
clave RSA desactivada), Challenge Response Authentication: autenticacin basada en
challenge-response. RSA Password Authentication (autenticacin basada en contrasea).

Protocolo SSH versin 2: versiones posteriores a Woody usan este protocolo como protocolo
principal.

Mtodos de Autenticacin Disponibles

PubkeyAuthentication: autenticacin del usuario basada en una clave pblica

Hostbased Authentication: autenticacin basada en.rhosts o /etc/hosts.equiv combinada con la


autenticacin de la clave pblica de la mquina cliente (desactivada).

Password Authentication: autenticacin basada en contrasea.

Challenge Response Authentication: autenticacin basada en challenge response.

/etc/ssh/ssh_config es el archivo de configuracin ms importante, las entradas son:

Host: Restringe las siguientes declaraciones (up to the next Host keyword) siendo nada mas los
host que declaremos aqu los que se les dar una llave de auntentificacion ssh para entablar
comunicacin.

Protocol: especica la versin del protocolo SSH. Valor predeterminado 2,1.

Preferred Authentications: especica el mtodo de autenticacin para el cliente SSH2. Por

defecto: hostbased,publickey,keyboard-interactive,password.

ForwardX11: desactivado por defecto. Se puede no tener en cuenta mediante la opcin -X de


la lnea de comandos

Otro archivo de inters: /etc/ssh/sshd_config: valores predeterminados del servidor SSH.

Las

entradas ms importantes son:

ListenAddress: especica las direcciones locales que sshd debe escuchar. Se permiten mltiples
opciones.

AllowTcpForwarding: desactivado por defecto.

X11Forwarding: desactivado por defecto.

$HOME/.ssh/authorized_keys: la lista de las claves pblicas predeterminadas que los clientes usan para
conectarse con la cuenta en este host.
COMANDOS SSH Y SCP
Lo siguiente iniciar una conexin ssh desde un cliente:
$ ssh nombre_usuario@nombre_mquina.dominio.ext
$ ssh -1 nombre_usuario@nombre_mquina.dominio.ext # Fuerza la versin 1 de
SSH
$ ssh -1 -o RSAAuthentication=no -l username foo.host
# force password on SSH1
$ ssh -o PreferredAuthentications=password -l username foo.host
# force password on SSH2
Para el usuario, las funciones de ssh son mejores y ms seguras que las de telnet. Se pueden copiar
archivos hacia y desde un host remoto usando el programa scp. Su sintaxis es similar al convencional
cp con la excepcin que debe especificar un nombre de host antes del archivo, significando que el
camino del archivo est en el host especificado. El siguiente ejemplo ilustra la sintaxis de scp copiando
unarchivo local llamado /tmp/fred al /home/maggie/ del host remoto chianti.vbrew.com:

$ scp /tmp/fred vchianti.vbrew.com:/home/maggie/


maggie@vchianti.vbrew.com's password:
fred

100% |*****************************| 50165

00:01 ETA

De nuevo, se le pedir una clave. La orden scp muestra el progreso de la copia por omisin. Puede
copiar un archivo desde un host remoto con la misma facilidad; simplemente especificando su nombre
de host y ruta como origen y la ruta local como destino. Tambin se puede copiar un archivo desde un
host remoto a otro host remoto, pero habitualmente no necesitar hacer eso, porque todos los datos
viajan a travs de su host.
SERVICIO VNC
Hay muchos servidores VNC, pero explicaremos el uso de x11vnc porque es el ms sencillo de utilizar.
La mayora de servidores VNC requieren un display de las X particular y, aunque ofrecen un escritorio
remoto, lo que hacen es iniciar una nueva sesin grfica en vez de ofrecer acceso a una sesin ya
existente. Con x11vnc podremos permitir el acceso a una sesin X ya existente de una forma sencilla.
Instalacin de VNC
Instalamos el paquete para el Servidor: # apt-get install x11vnc
Arrancando el servidor
Para arrancar el servidor, abriremos una consola y escribiremos el comando x11vnc. Esto nos iniciar
un servidor bsico, sin contrasea, que permite el acceso a todo el mundo y que una vez ha
desconectado el cliente, se cierra.
Veremos ahora qu parmetros podemos pasarle al inicio, para configurar el servidor de una forma ms
razonable:

bg: Nos inicia el servidor en segundo plano. Para poder cerrar la consola y que siga en marcha.

passwd: Establece la contrasea que se pedir a los clientes al conectar.

gui: Inicia el interfaz grfico (un poco precario) del servidor.

Sabiendo estos parmetros, podramos iniciar el servidor de VNC de esta manera, para que nos

aparezca su ventana de configuracin:x11vnc -bg -gui -passwd mi_contrase, se nos abrir la pantalla
de configuracin, en la que podremos configurar las opciones del servidor. Ahora, abrimos otra consola
(en el equipo Cliente) y pasamos a instalar el Paquete para el Cliente, siendo ROOT # apt-get install
xtightvncviewer.
Para iniciar Sesin en el Servidor, desde la Consola cliente tecleamos: $xtightvncviewer.

UNIDAD X - SERVICIO CUPS

FUNCIONAMIENTO DE CUPS
El Sistema de impresin comn de Unix (Common Unix Printing System en ingls, abreviado CUPS)
es un sistema de impresin modular para sistemas operativos de tipo Unix que permite que un
computador acte como servidor de impresin. Un computador que ejecuta CUPS acta como un
servidor que puede aceptar tareas de impresin desde otros computadores clientes, los procesa y los
enva al servidor de impresin apropiado.
CUPS est compuesto por una cola de impresin con su planificador, un sistema de filtros que
convierte datos para imprimir hacia formatos que la impresora conozca, y un sistema de soporte que
enva los datos al dispositivo de impresin. CUPS utiliza el protocolo IPP(Internet Printing Protocol)
como base para el manejo de tareas de impresin y de colas de impresin. Tambin provee los
comandos tradicionales de lnea de comandosde impresin de los sistemas Unix, junto a un soporte
limitado de operaciones bajo el protocolo server message block (SMB).
Los controladores de dipositivos de impresin que CUPS provee pueden ser configurados utilizando
archivos de texto con formato Descripcin de impresoras PostScript (PPD, PostScript Printer
Description en ingls) de Adobe Systems. Existen varias interfaces de usuario para diferentes
plataformas para configurar CUPS; cuenta tambin con una interfaz como aplicacin Web. CUPS es
software libre y se distribuye bajo licencia GNU General Public License y GNU Lesser General Public
License, Versin 2.
Realizar la Instalacin de CUPS.
#apt-get install cupsys
Configurar el servicio CUPS.
Filtros, controladores, PPDs ... El flujo de impresin se compone de varios elementos que debemos
conocer para entender bien cmo encajan todas las piezas. El proceso general es el siguiente: la
aplicacin suministra un archivo en Postscript, PDF, texto plano o mapa de bits (JPG, PNG, etc.). El
contenido de este archivo va al sistema de impresin, que mira a qu impresora tiene que enviarlo. Una

vez decidido eso, busca las caractersticas de la impresora para saber si tiene que hacer alguna
transformacin: hay impresoras que pueden recibir Postscript sin traduccin, y en esos casos el sistema
de impresin solo pasa lo que a su vez le proporcion la aplicacin, convirtindolo a Postscript antes si
no viniera ya en ese formato. Como lo normal (para un usuario domstico) es que la impresora no
hable Postscript, el sistema de impresin tiene que buscar una forma de convertir los datos al
lenguaje nativo de sta. Los programas encargados de esto son los filtros. Estos filtros pueden recibir
como entrada los datos de la aplicacin, o necesitar un paso intermedio en el que se convierten a una
representacin grfica llamada raster.
Asimismo, los filtros pueden hacer otras cosas aparte de convertir un archivo raster a lenguaje nativo
de la impresora: pueden reducir el tipo de letra, poner varias pginas virtuales por pgina real, etc.
Estos filtros conocen los lenguajes nativos de las impresoras por varios controladores que tienen
configurados.
Nuestro sistema de impresin ser CUPS. Como filtros podemos usar, aparte de algunos filtros que trae
CUPS de serie (y que podemos ver en /usr/lib/cups/ filter), Ghostscript, Foomatic o los filtros que
proporcione el fabricante de nuestra impresora. Ghostscript trae controladores para muchas impresoras,
y Foomatic tambin; pero tambin podemos usar controladores externos, como los proporcionados por
Gutenprint.
PPDS
Otro elemento necesario para configurar una impresora en CUPS es un archivo PPD. Un archivo PPD
(Postscript Printer Description) describe las caractersticas de una impresora. Estos archivos solo sirven
para impresoras Postscript, pero CUPS ha extendido el concepto y tambin usa archivos PPD para
impresoras no Postscript. En ellos incluye las llamadas a los filtros que convertirn el cdigo Postscript
de entrada en el formato nativo de la impresora. Estn, por lo tanto, un nivel por encima de los filtros.
Todas las impresoras Postscript traern su archivo PPD correspondiente en el CD de instalacin, o
estar disponible en la pgina web del fabricante. Para las impresoras no Postscript, cientos de PPDs
han sido creados por los desarrolladores de CUPS y muchos otros voluntarios.
Foomatic, una suite de la que hablamos ms adelante, ofrece una coleccin de PPDs con soporte para
decenas de impresoras.

Configurar la Impresora Predeterminada.


La dificultad de instalacin de una impresora en CUPS depende de varios factores. Las impresoras
Postscript suelen ser las ms fciles de configurar, mientras que las impresoras caseras de tinta
pueden dar problemas.
Algunas impresoras de bajo coste hacen parte de sus funciones por software, y necesitan un controlador
especial que no est disponible para Linux. En cualquier caso, los pasos a seguir son siempre los
mismos: decir a CUPS cul es el interfaz a usar, y darle una forma de escoger cmo hablar con la
impresora.
CUPS viene de serie con soporte para varias familias de impresoras, pero podemos hacer que soporte
cualquier otra siempre que suministremos los PPDs y filtros adecuados.
Configuraciones
Hay dos formas de configurar CUPS. La primera es editando el archivo de configuracin
/etc/cups/cupsd.conf. La segunda es a travs de una interfaz web clsica, ubicada en el puerto 631. sta
es muy parecida a la configuracin web de muchas impresoras aptas para redes, y debera ser intuitva
para todos.
LA INTERFAZ WEB DE ADMINISTRACIN DE CUPS
Todas las labores de administracin de CUPS las haremos a travs de su interfaz web. A este interfaz se
puede acceder lanzando el navegador desde el mismo equipo en el que est CUPS, y apuntndolo a
http://localhost:631 (por defecto el interfaz solo funciona en localhost). Necesitamos usuario y
contrasea para entrar en este interfaz, que por defecto sern root y la contrasea de root del equipo.

Interfaz web de administracin de CUPS.


De momento solo nos interesa saber cmo instalar una impresora, y por suerte en cuanto entremos en el
interfaz veremos un botn titulado Aadir impresora y que vale justo para eso.
IMPRESORAS LOCALES (USB Y PARALELO)
Un primer paso importante pero que quizs se nos olvide es encender la impresora. En muchos casos,
CUPS puede detectar la impresora que est conectada en local, y nos la ofrecer como opcin cuando
empecemos a instalarla. Vamos a suponer que ste es el caso, porque es lo normal con las impresoras
USB. Las impresoras por puerto paralelo son, ahora mismo, una reliquia.
Los primeros datos que tenemos que rellenar sobre una impresora son el nombre, la ubicacin y una
descripcin. La ubicacin y la descripcin pueden ser cualquier cosa, y son solo datos cosmticos
para tener una idea ms clara de cul es la impresora (por si tuviramos muchas).
El nombre s que es un dato importante: el nombre que demos en CUPS a la impresora ser usado por
los programas que quieran imprimir en ella, es el identificador nico de la impresora en el sistema.
Como nos dice el comentario sobre la casilla que veremos en el interfaz, puede tener cualquier caracter

menos espacios, # y /. Por ejemplo: para una impresora Samsung ML-2010 (una impresora USB,
lser y monocromo, que hemos usado en nuestras pruebas), podramos usar nombres como ml2010,
ml-2010, samsungml2010, etc. Tras rellenar estos datos nos aparece un men desplegable marcado
como Conexin. Nuestra impresora USB aparecer en esa lista, marcada posiblemente con una
etiqueta tipo USB #1 o similar, en la que se indique el puerto USB que est ocupando.
La siguiente seccin que tenemos que atender es el controlador de la impresora. Por defecto, CUPS trae
unos cuantos, pero no son muchos. Si no est en la lista el que necesitamos, podemos proporcionar un
archivo PPD con las caractersticas de la impresora. Este archivo podemos haberlo obtenido en el CD
de controladores de la impresora, podemos haberlo descargado desde Internet, o podemos haberlo
creado con alguna utilidad, como Foomatic, que veremos ms adelante.
Con esto ya habremos instalado la impresora. Sin embargo, antes de llevarnos a la lista de impresoras,
el proceso de instalacin nos llevar a la pgina de opciones de la impresora. En esta seccin es donde
escogeremos cosas como el tipo de papel, copias por archivo que se mande a la impresora, etiquetas,
etc. Las opciones concretas dependern de cada impresora y del PPD que usemos. Ante la duda, lo
razonable es usar las opciones que vienen por defecto.
La nueva impresora aparecer en la pestaa Impresoras del interfaz web de CUPS. En los datos de la
impresora aparecern los que ya habamos introducido nosotros, y adems tambin el estado de la
impresora (que debera ser inactiva, aceptando trabajos, pblica) y la URI de la conexin. La URI
de la impresora es el dispositivo al que est conectada, o su ubicacin en la red si es una impresora
remota. En el caso de la impresora Samsung ML-2010 USB que hemos usado en las pruebas, aqu
aparecer usb://Samsung/ML-2010.
En otras impresoras, la URI cambiar para reflejar marca y modelo de forma parecida. Cuando el PPD
es obtenido del fabricante, es posible que ste tambin haya incluido algn filtro al que se hace
referencia en el PPD. Si es as, veremos que cuando vayamos a la lista de impresoras aparecer un
error. Generalmente, el error ser del tipo de archivo no encontrado, haciendo referencia al nombre
del filtro que aparece en el PPD pero no est en la instalacin de CUPS. No suele ser difcil buscar ese
archivo en el CD del fabricante y copiarlo a /usr/lib/cups/filter, reiniciando luego CUPS para que lea
otra vez la lista de filtros y lo encuentre. Si esto no funciona, puede que haya algn otro problema. Lo
recomendable en este caso es mirar el log de errores de CUPS, en /var/log/cups/error_log (tambin
podemos acceder desde la pestaa Administracin, opcin Ver archivo deregistro de errores). Los

mensajes que aparezcan ah nos darn una pista de cul es el problema.

UNIDAD XI: SERVICIO NFS

DEFINICIN DE NFS
El Sistema de archivos de Red (NFS, por sus siglas en ingls) es probablemente el servicio de red ms
prominente que usa RPC. Permite acceder a archivos en anfitriones remotos exactamente en la misma
manera que se accedera si fueran locales. Una mezcla de soporte en el ncleo y demonios en espacio
de usuario en el lado del cliente, junto con un servidor NFS en el lado del servidor, hace esto posible.
Este acceso a los archivos es completamente transparente al cliente y funciona con varias clases de
servidores y arquitecturas anfitrionas.
CARACTERSTICAS TILES DE NFS
NFS ofrece varias caractersticas tiles:Los datos accedidos por todos los usuarios pueden mantenerse
en un anfitrin central, con los clientes montando este directorio en tiempo de arranque. Por ejemplo,
se puede mantener todas la cuentas de usuario en un anfitrin y hacer que todos los anfitriones de la red
monten el directorio /home desde ese anfitrin. Si se instala NFS junto a NIS, los usuarios pueden
entrar en cualquier sistema y trabajar en un conjunto de archivos.
La informacin que consume grandes cantidades de disco puede mantenerse en un nico anfitrin. Por
ejemplo, todos los archivos y programas relativos a LaTeX y METAFONT pueden almacenarse y
mantenerse en un lugar...
Los datos administrativos pueden almacenarse en un nico anfitrin. No hay necesidad de usar rcp
para instalar el mismo archivo estpido en 20 mquinas diferentes. No es demasiado difcil preparar el
funcionamiento bsico de NFS en el cliente y el servidor
EL SERVIDOR NFS
NFS funciona de la siguiente manra: primero, un cliente intenta montar un directorio de un anfitrin
remoto en un directorio local justo de la misma manera que si fuese un dispositivo fsico. Sin embargo,
la sintaxis usada para especificar el directorio remoto es diferente. Por ejemplo, para montar /home
desde el anfitrin vlager en /users en vale, el administrador escribe la siguiente orden: # mount t nfs

vlager:/home /users
mount tratar de conectar con el demonio remoto sobre rpc.mountd de vlager va RPC. El servidor
verificar si vale tiene permiso para montar el directorio en cuestin, en cuyo caso, devuelve un
descriptor de archivo.
Este descriptor ser usado en todas las peticiones subsecuentes que se hagan sobre los archivos bajo
users. Cuando alguien accede a un archivo sobre NFS, el ncleo manda una llamada de RPC a rpc.nfsd
(el demonio de NFS) en la mquina servidor. Esta llamada toma el descriptor de archivo, el nombre del
archivo a acceder y los identificadores de usuario y grupo del usuario como parmetros. stos se usan
en la determinacin de los derechos de acceso al archivo especificado. Para prevenir que usuarios no
autorizados lean o modifiquen archivos, los identificadores de usuario y grupo deben ser iguales en
ambos anfitriones... En la mayora de las implementaciones de Unix, la funcionalidad NFS de cliente y
servidor se implementan como demonios a nivel de ncleo que arrancan desde el espacio de usuario al
arrancar la mquina. stos son los Demonios NFS (rpc.nfsd) en el anfitrin servidor, y Block I/O
Daemon (biod) en el anfitrin cliente.
Para mejorar el rendimiento, biod realiza la E/S usando prelectura y postescritura asncrona; tambin,
varios demonios rpc.nfsd usualmente se ejecutan concurrentemente. La implementacin actual de NFS
de Linux es un poco diferente del NFS clsico en la que el cdigo de servidor se ejecuta enteramente en
espacio de usuario, as que ejecutar mltiples copias simultneamente es ms complicado. La
implementacin actual derpc.nfsd ofrece una caracterstica experimental que permite soporte limitado
para mltiples servidores. Olaf Kirch desarroll el soporte para servidor NFS basado en el ncleo
ofrecido en la versin.
El servidor
La primera cosa a hacer, como ya hemos visto, es iniciar portmap ya que este protocolo es necesario
para NFS .
root >>/usr/sbin/rpcinfo -p
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
root >>/sbin/portmap
root >>/usr/sbin/rpcinfo -p
program vers proto port

100000 2 tcp 111 portmapper


100000 2 udp 111 portmapper
El comando rpcinfo muestra los servicios RPCs en la mquina especificada como argumento (opcin
-p). Notamos que portmap todava no est funcionando: lo iniciamos (la mayora de las distribuciones
Linux proveen scripts para automatizar esto en el arranque) y comprobamos que funciona. Otra razn
comn para que rpcinfo responda negativamente es que el portmapper no permita la respuesta a causa
de la restriccin de seguridad en los archivos /etc/hosts.{allow, deny}. En este caso, aada una entrada
"portmap: hosts" en el archivo hosts.allow.
Antes de que NFS se inicie por s mismo, debe ser configurado. Existe un nico archivo de
configuracin que se llama /etc/exports. Cada lnea muestra la ruta exportada seguido de una lista de
clientes a los que se permite el acceso. Se pueden aadir opciones al final de cada nombre de cliente.
La pgina de manual exports (man exports) explica la sintaxis para los nombres de cliente y las
opciones.
Se aceptan como nombres de cliente: nombre de la mquina, caracteres comodn en un nombre de
dominio (v.gr. : linux-*.mondomaine.fr), un netgroup ( @grupo) si se usa NIS, una direccin IP, entre
otras.
No vamos a detallar aqu todas las opciones de montaje disponibles, pero algunas de las ms
importantes son:

rw (lectura/escritura): el cliente puede leer y escribir en el sistema exportado.

ro (slo lectura): el cliente slo puede leer el sistema exportado.

root_squash : es preferible que un usuario root del cliente no pueda escribir con permisos de
root. Para impedirlo, UID/GID 0 (i.e. root) en el lado del cliente se traduce en el usuario
nobody. Esta opcin est activada por defecto, pero se puede cancelar con no_root_squash.

all_squash : todos los clientes que acceden al sistema exportado utilizan el UID/GID de nobody.

anonuid, anongid: el usuario nobody ahora usa los UID y GID definidos por estas opciones.

Ahora tenemos que iniciar los demonios rpc.mountd y rpc.nfs para tener funcionando el servidor NFS.
Comprobamos nuevamente que todo est funcionando con el comando rpcinfo. Incluso podemos

inicializar el servidor para los protocolos nsm y nlm (rpc.statd y rpc.lockd, respectivamente). No hay
ninguna premisa para arrancar un servidor NFS... pero es altamente recomendable que se reinicie por s
mismo, en caso de que la mquina falle, entre otras.
Cuando modificamos el archivo de configuracin /etc/exports, debemos avisar a los demonios
implicados que se deben hacer los cambios. El comando exportfs transmite esta informacin a nuestros
servidores. La opcin -r sincroniza el archivo /etc/mtab2 con el archivo /etc/exports file. La opcin -v
muestra juntos todos los sistemas de archivos exportados junto con sus opciones. Despus de ponerse
en marcha el servidor NFS, los siguientes archivos contienen informacin importante:

/var/lib/nfs/rmtab : cada lnea muestra el nombre del cliente y el sistema de archivos importado
desde este servidor.

/var/lib/nfs/etab: el archivo /etc/exports slo contiene una lista de peticiones. etab est creado
por exportfs. Contiene en cada lnea informacin detallada sobre las opciones usadas cuando se
exporta un sistema de archivos a un solo cliente. Es el archivo de referencia usado por
rpc.mountd cuando es arrancado

/proc/fs/nfs/exports contiene la lista de clientes conocida por el ncleo.

/var/lib/nfs/xtab: se usa por precisin cuando etab contiene nombres de clientes y grupos de
mquinas con comodines. Este archivo slo contiene nombres explcitos de mquinas.

Cuando un cliente quiere acceder a un sistema de archivos, empieza haciendo una peticin mountd.
Entonces se busca en etab si la peticin est disponible. Se comprueba el ncleo para saber si el cliente
tiene permitida la peticin (comprobando hosts.{allow, deny}, reglas de cortafuegos, ...). El ncleo
utiliza exportfs para la comprobacin, permitiendo actualizar el archivo /var/lib/nfs/etab. Si, en este
archivo, el sistema exportado tiene permitido ser exportado al grupo al que pertenece el cliente,
entonces mountd informa al ncleo que actualice xtab con este nuevo host.

EL CLIENTE NFS
El acceso al sistema de archivos exportado por NFS est controlado directamente por el ncleo. ste
tiene que haber sido compilado para soportar NFS. El archivo /proc/filesystems contiene una lista con
todos los sistemas de archivos soportados directamente por el ncleo. Entonces, lo nico que tiene que
hacer es decir al ncleo que quiere acceder a un sistema exportado por NFS.
El comando mount permite acceder a diferentes sistemas de archivos. Informa al ncleo que est
disponible un nuevo sistema de archivos indicando su tipo, su dispositivo y su punto de montaje. Se
puede usar la opcin -t para indicar el tipo del sistema de archivos a usar. Para NFS, escribimos: -t nfs.
mount tiene sus propias opciones para NFS. Por ejemplo, se pueden utilizar las opciones rsize y wsize
para cambiar el tamao de los bloques para lectura o escritura. Puede combinar opciones especficas de
NFS con opciones ms generales como intr, noexec o nosuid. La pgina de manual mount muestra
todas esas opciones.
Supongamos que la mquina charly tiene un servidor NFS y exporta su directorio /usr/local. Cuando
quiera acceder desde la mquina jill, tendr que montar el directorio exportado de charly a jill:
root@jill >> mount -t nfs -o nosuid,hard,intr charly:/usr/local /usr/local
El comando indica que estamos montando un sistema de archivos NFS (-t nfs), con las opciones
nosuid, hard e intr. Los dos ltimos argumentos son los ms interesantes. El primero de ellos especifica
el dispositivo a montar.
Para NFS la sintaxis es distinta de la lnea mount habitual, donde se especifica dispositivo y directorio.
Aqu especificamos servidor:directorio_exportado en vez de dispositivo. El ltimo argumento indica la
localizacin del sistema de archivos en la parte cliente. Hemos compartido exactamante el /usr/local de
charly con jill y as podemos evitar el tener que instalar programas en /usr/local ms de una vez. Para
hacer esta configuracin permanente, podemos especificarlo en el archivo /etc/fstab de jill. fstab
contiene todos los dispositivos que sern montados en el arranque. La sintaxis para /etc/fstab es:
#device mount point file system options dump fsckorder
charly:/usr/local /usr/loca nfs nosuid,hard,intr 0 0
Sin embargo, deber tener cuidado con una entrada permanente. Slo podr usarlo cuando el servidor
(charly) est siempre encendido, o cuando encienda charly antes que jill.

PRECAUCIONES
Uno de los mayores problemas con NFS viene del hecho de que exista por defecto una relacin de
confianza entre un cliente y un servidor NFS. En el caso de que la cuenta root del servidor est
comprometida, la del cliente tambin lo estar. El NFS-COMO describe un conjunto de medidas
esenciales que debe tomarse para conseguir cierta seguridad..
Un cliente no debe confiar ciegamente en un servidor, por ello debemos especificar opciones
restrictivas cuando usamos el comando mount. Ya hemos mencionado la primera de ellas: nosuid.
Cancela el efecto de los bits SUID y GID. Con esto alguien que est como root en el servidor primero
debe hacer login en el cliente como un usuario normal y despus hacerse root. Otra opcin, ms
restrictiva, es noexec. Prohbe ejecutar programas en sistema de archivos exportado. Esta opcin
nicamente se utiliza en sistemas que slo contengan datos.
En el lado del servidor NFS, podemos especificar que no confe en la cuenta root del cliente. Tenemos
que especificarlo en /etc/exports con la opcin root_squash. Entonces si un usuario con UID 0 (root) en
el cliente accediese al sistema de archivos exportado por el servidor, tomara el UID nobody para
consultar archivos. Esta opcin est activada por defecto bajo Linux pero se puede desactivar con la
opcin no_root_squash. Se puede especificar qu opciones deben aplicarse en un conjunto de UIDs.
Recuerde tambin que las opciones anonuid y anongid permiten cambiar los UID/GID de nobody por
los de otro usuario diferente.
Algunas opciones son ms generales y se efectan por el portmapper. Por ejemplo, prohibimos el
acceso a todas las mquinas con la siguiente lnea en el archivo /etc/hosts.deny:
#

hosts.deny

absolute

prohibition

for

every

one

to

use

the

portmap

portmap: ALL
Despus en el archivo /etc/hosts.allow esta estricta prohibicin se puede contrarrestar permitiendo el
acceso a las mquinas deseadas. Unas buenas reglas de cortafuegos tambin contribuyen a una
proteccin mejor. Observe los puertos usados por los diferentes servicios y los protocolos utilizados:
SERVICIO RPC

PUERTO

PROTOCOLOS

portmap

111

upd / tcp

nfsd

2049

udp

mountd

variable

udp / tcp

USANDO NIS, NFS Y AUTOFS


Fijmonos ahora en una red algo ms complicada, como la que podr encontrar e.g en una empresa. En
una pequea red en su casa probablemente pueda vivir sin NIS. El Servicio de Informacin en Red,
NIS (Network Information Service) es una forma de distribuir archivos de configuracin (e.g en /etc) a
otras mquinas.
El servidor principal en nuestra red se llamar "chicas" y otras 3 mquinas de la red sern "luisa",
"laura" y "karla". Configuramos charly como un servidor NIS para el dominio lolas. Las otras
mquinas son tan slo clientes NIS de chicas (podramos tener un servidor NIS secundario, pero hoy
no es se nuestro propsito).
Primero, veamos la configuracin de nuestro servidor chicas. Empezamos definiendo algunos mapas
NIS que contienen toda la informacin necesaria. El archivo /etc/netgroup contiene los grupos de
mquinas con caractersticas comunes (una misma arquitectura, por ejemplo). Un mapa NIS es muy til
para NFS. Slo tenemos que reunir todas las mquinas permitindoles acceder al mismo sistema de
archivos exportado. Entonces se usa este grupo en el archivo /etc/exports en lugar de especificar todos
los clientes uno a uno:
# /etc/netgroup chicas (luisa,,) (laura,,) (karla)
Por lo que concierne a NFS, sabemos que la configuracin es bastante restrictiva. El archivo
/etc/exports de chicas contiene:
# /etc/exports /usr/local @chicas(ro)
Decidimos utilizar automount para acceder al directorio exportado /usr/local. En vez de montar el
sistema en el arranque, se hace automticamente cuando un usuario accede a un archivo de este
directorio. Creamos el archivo /etc/auto.map para decidir qu ser accesible por automount y NIS: #
/etc/auto.map charly charly:/usr/local
Como queremos integrar esta informacin (el nuevo auto.map y los archivos netgroup) en la base de
datos NIS, tenemos que modificar el Makefile antes de reconstruirlo. Debemos estar seguros de qu

grupo acceder a la base. Por lo que respecta a auto.map, este archivo no est definido por defecto.
Slo tenemos que aadir una entrada en el Makefile, con la regla asociada (usando la existente como un
modelo):
#To be added in the Yellow Pages Makefile
AUTO_MAP = $(YPSRCDIR)/auto.map
# ...
#...
auto.map: $(AUTO_MAP) $(YPDIR)/Makefile
@echo "Updating $@..."
-@sed -e "/^#/d" -e s/#.*$$// $(AUTO_MAP) | $(DBLOAD) \
-i $(AUTO_MAP) -o $(YPMAPDIR)/$@ - $@
-@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@
Esta regla borra comentarios, aade una nueva entrada a la base de datos y despus transmite la
informacin a cada servidor, slo tenemos que ejecutar make desde el directorio /var/yp.
Ahora, tenemos tres clientes: luisa, laura y karla. Tenemos que decir a autofs que controle un nuevo
mapa dado por YPs. En el archivo /etc/auto.master de cada cliente la siguiente lnea informa de la
presencia de una asignacin auto.map obtenida va los servicios de YP.
#/etc/auto.master
/usr/local yp auto.map --intr,nosuid,nodev
Despus tenemos que reiniciar autofs para hacer este nuevo mapa efectivo. Ahora tenemos un nico
directorio fsico /usr/local en chicas. Entonces, cuando se instale un programa especfico en chicas,
todas las mquinas lo podrn usar.
Este ejemplo podra llevarse ms lejos con la instalacin de un nico sistema /usr, /usr/doc u otros, pero
la prctica muestra que no sera buena idea. Las instalaciones a menudo necesitan modificar archivos
en el directorio /etc o en otros. Tendramos que actualizar todas las mquinas para actualizar archivos
no exportados, lo que sera tremendamente pesado.

UNIDAD XII - SERVICIO SAMBA

INTRODUCCIN
Samba permite compartir entre mquinas windows y linux recursos . Siendo un recurso una carpeta o la
impresora. Su demonio es smbd permite que las mquinas windows puedan acceder a linux. Para ello el
servidor deber indicar qu carpetas quiere compartir con windows.
INSTALACIN DEL SERVIDOR SAMBA
Usando apt, con el comando: # apt-get install samba
Durante la instalacin nos pedir el nombre del grupo de trabajo que llamaremos CEP (por ejemplo). El
resto de opciones las dejamos por defecto.
CONFIGURACIN DEL SERVIDOR
Para ver el archivo de configuracin: # cat /etc/samba/smb.conf
Para editar el archivo de configuracin: # gedit /etc/samba/smb.conf
Hay que cambiar el archivo de configuracin de samba para que se adapte a nuestra red. Este archivo
deber grabarse en /etc/samba. Crearemos una carpeta que ser pblica, es decir, que la ver cualquier
mquina, llamada /compartido: mkdir /compartido.
Cambiamos los permisos de acceso al directorio con: chmod 777 /compartido que concede permisos de
lectura, escritura y ejecucin a todo el mundo.
El archivo donde se guarda la configuracin de Samba es /etc/samba/smb.conf.
OPCIONES
guest ok

DESCRIPCIN
Define si se permitir el acceso como usuario invitado. El valor
puede ser Yes o No.

public

Es equivalente del parmetro guest ok, es decir, define si se


permitir el acceso como usuario invitado. El valor puede ser Yes o

No.
browseable

Define si se permitir mostrar este recurso en las listas de recursos


compartidos. El valor puede ser Yes o No

writable

Define si se permitir la escritura. El valor puede ser Yes o No.

read only.

Define que slo se tendr permiso de lectura. El valor puede ser


Yes o No.

valid users

Define qu usuarios o grupos pueden acceder. Los valores pueden


ser nombres de usuarios separados por comas o bien nombres de
grupo antecedidos por una @. Ejemplo: valid users = fulano,
mengano, @administradores

write list

Define qu usuarios o grupos pueden acceder con permiso de


escritura. Los valores pueden ser nombres de usuarios separados
por comas o bien nombres de grupo antecedidos por una @.
Ejemplo: write list = fulano, mengano, @administradores

admin users

Define qu usuarios o grupos pueden acceder con permisos


administrativos para el recurso. Es decir, podrn acceder hacia el
recurso realizando todas las operaciones como superusuarios. Los
valores pueden ser nombres de usuarios separados por comas o
bien nombres de grupo antecedidos por una @. Ejemplo: admin
users = fulano, mengano, @administradores

directory

Es lo mismo que directory mode. Define qu permisos tendrn los

mask

subdirectorios creados dentro del recurso. Ejemplos: directory


mask = 1777

create mask

Define qu permisos tendrn los nuevos archivos creados dentro


del recurso. Ejemplo: create mask = 0644

COMANDOS SOBRE EL SERVIDOR


Arrancando el servidor: # /etc/init.d/samba start

Reiniciando el servidor: # /etc/init.d/samba restart


Quin usa el servidor? # smbstatus
Estado del servidor: # testparm
Este comando comprueba el archivo de configuracin del samba que es: /etc/samba/smb.conf
DANDO DE ALTA USUARIOS
Es importante sincronizar las cuentas entre el servidor samba y las estaciones Windows. Es decir, si en
una mquina con Windows ingresamos como el usuario "paco" con clave de acceso "paco", en el
servidor Samba deber existir tambin dicha cuenta con ese mismo nombre y la misma clave de acceso.
Como la mayora de las cuentas de usuario que se utilizarn para acceder hacia samba no requieren
acceso al interprete de mandatos del sistema, no es necesario asignar clave de acceso con el mandato
passwd y se deber definir /sbin/nologin o bien /bin/false como interpete de mandatos para la cuenta de
usuario involucrada.
useradd -s /sbin/nologin usuario-windows
smbpasswd -a usuario-windows
Nos pedir la clave de samba del usuario-windows. No hace falta que se asigne una clave de acceso en
el sistema con el mandato passwd puesto que la cuenta no tendr acceso al interprete de comandos.
Si se necesita que las cuentas se puedan utilizar para acceder hacia otros servicios como seran Telnet,
SSH, etc, es decir, que se permita acceso al interprete de comandos, ser necesario especificar /bin/bash
como interprete de mandatos y adems se deber asignar una clave de acceso en el sistema con el
mandato passwd: # useradd -s /bin/bash usuariowindows
# passwd usuariowindows
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

# smbpasswd -a usuariowindows
Nos volver a pedir la clave para samba del usuario-windows, que debera coincidir con la que hemos
puesto como usuario linux.
El archivo lmhosts
Es necesario empezar resolviendo localmente los nombres Netbios asocindolos con las direcciones IP
correspondientes. Para fines prcticos el nombre Netbios debe tener un mximo de 11 caracteres.
Normalmente tomaremos como referencia el nombre corto de servidor o el nombre corto que se asign
como alias a la interfaz de red. Este lo estableceremos en el archivo /etc/samba/lmhosts, en donde
encontraremos lo siguiente:
127.0.0.1 localhost
Debemos aadir los nombres y direccin IP del resto de las mquinas que conformen la red local. La
separacin de espacios se hace con un tabulador. Ejemplo: 127.0.0.1 localhost
192.168.1.5 maquina5
EL CLIENTE SAMBA
Permite acceder desde Linux a recursos compartidos por mquinas windows. Para instalar el cliente
samba: # apt-get install smbclient. Veamos qu comparte windows
# smbclient -L x.x.x.x
Siendo x.x.x.x la direccin IP de la mquina windows.
Ejemplo: smbclient -L 192.168.100.210, nos pedir una clave, si la dejamos en blanco entraremos en
modo annimo.
Password: Anonymous login successful
Domain=[CEP] OS=[Unix] Server=[Samba 3.0.8-Debian]

................

Creamos una carpeta en linux Usando


# mkdir /mnt/win
Montamos la carpeta compartida
Si la carpeta compartida por windows que se llama compartido, con linux se llamar /mnt/win
# mount -t smbfs //x.x.x.x/compartido /mnt/win -o username=XXX -o password=xxx
Por ejemplo:
# mount -t smbfs //192.168.0.210/compartido /mnt/win -o username=usuariowindows -o
password=clavedeusuariowindows
Podemos desmontarla con: umount /mnt/win
Para automatizar el proceso
Si queremos que al encender el PC se monte automticamente el recurso en el
en el archivo /etc/fstab la lnea //192.168.0.210/compartidos

directorio,

/mnt/win

aadimos

smbfs

auto,username=usuariowindows,password=clavedeusuariowindows 0 0
Recuerda que samba debe arrancar al iniciar el equipo.
Otra forma de entrar en el entorno de red
Podemos acceder a un PC con windows desde linux, a travs de Nautilus poniendo: smb://x.x.x.x/
Siendo x.x.x.x la IP del PC con windows. Ponemos escribir el nombre de la mquina si le hemos
asignado su IP en /etc/hosts.
Para entrar desde mquinas windows en recursos linux, entraramos en windows con un login (nombre
de usuario y clave) de usuario de

linux, entrar en el entorno de red, y ver que se accede a esa

mquina Linux.
Imprimir desde TRS en una impresora instalada en un pc windows. Supongamos que disponemos de
una impresora HP Laserjet 1000W que es una

Winprinter (no es compatible Linux) vamos a:

instalarla en un PC con Windows XP que se llama en la red windowsxp y el dominio se llama


"workgroup".

Desde windows, compartir la impresora con el resto de PC de la red con el nombre impresora.
Configurar los PC de la red con TRS para que puedan imprimir en ella.
Veamos cmo realizar este ltimo punto:
En el PC con TRS accedemos con el navegador a http://localhost:631. Entramos en "Do Administration
task". Nos pedir la clave de "root". En la pgina que aparece pulsamos en "Add Printer". En la nueva
pgina pondremos el nombre que le vamos a dar a la impresora, por ejemplo:
Name: laser
Location: Conectada a windowsxp
Description: Impresora laser HP 1000W en el PC windowsxp
Pulsamos "Continue"
En la nueva pgina seleccionamos Windows Printer via Samba y "Contnue"
En la siguiente pgina pondremos smb://usuario:clave@workgroup/windowsxp/impresora
(Vase la nota) y "Continue"
En la siguiente pgina ponemos la marca HP y "Continue"
En la siguiente pgina seleccionamos el modelo HP Laserjet 4

Foomatic/ljet4

(en)

"Continue"
Si todo ha ido bien nos mostrar una pgina donde se nos indica que ya se ha instalado la
impresora.
Para ver la lista de impresoras instaladas pulsamos en la barra superior de la pgina
"Printers"
Comprobamos que funciona correctamente pulsando en "Print test page" y se imprimir una pgina de
prueba. Si entras en alguna aplicacin como OpenOffice en la ventana de opciones de impresin,
debera estar disponible la impresora que hemos instalado.
En smb://usuario:clave@workgroup/windowsxp/impresora debemos poner un usuario con su clave de
windowsxp. Dado que el archivo

"/etc/cups/printers.conf" contiene:

<Printer laser>
Info

Impresora laser HP 1000W en el PC windowsxp

Location

Conectada a windowsxp

DeviceURI smb://usuario:clave@workgroup/windowsxp/impresora
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
y puede leerse por todos los usuarios, plantea un problema de seguridad. Para evitar el problema
podemos: Impedir la lectura de este archivo usando chmod. Usar el usuario "invitado" sin clave
poniendo smb://invitado:@workgroup/ windowsxp/impresora.

UNIDAD XIII FIREWALL


DEFINICIN DE FIREWALL
Un firewall es una barrera para evitar que el fuego se expanda. Los edificios disponen de firewall,
muros de ladrillos que dividen las diferentes secciones del edificio. En un automvil, un firewall es la
barra de metal que separa al motor del compartimento de los pasajeros.
La misin de los firewall de Internet es garantizar la seguridad de nuestro equipo ante los peligros
cibernticos de la red de rea local (LAN) o bien, mantener a los miembros de esa LAN al margen de
las malignas intenciones de Internet.

ESQUEMA BSICO DE UN CONTRAFUEGO


Esquema tpico de firewall para proteger una red local conectada a internet a travs de un router. El
firewall debe colocarse entre el router (con un nico cable) y la red local (conectado al switch de la
LAN)
POLTICAS DE FIREWALL
Adicional a la mquina de firewall, es fundamental que Establezca las polticas primero. Los firewall
se utilizan con dos objetivos:

Para denegar el acceso a entes y/o elementos no autorizados.

Para permitir el acceso a entes y/o elementos autorizados

CMO CREAR UNA POLTICA DE SEGURIDAD?


Hay muchos recursos en los que se explica cmo crear una poltica de seguridad. Basado en la
experiencia de varios administradores de seguridad informtica, se puede recomendar los siguientes
pasos para crear polticas de seguridad:

Describa para qu es el servicio

Describa el grupo de personas a las que va dirigido el servicio

Describa a qu servicio necesita acceder cada grupo

Describa, para cada grupo de servicio, cmo se puede mantener seguro el servicio

Redacte un informe en el que se considere violacin cualquier otro tipo de acceso

Esta poltica se ir haciendo cada vez ms compleja, no intente abarcar demasiado en este punto. Se
debe procurar que sea sencilla y clara.
TIPOS DE FIREWALL
Hay dos tipos de firewall, ellos son: firewall de filtrado - que evitar el acceso no autorizado a
determinados paquetes de la red y Servidores Proxy (a veces llamados firewall) - encargados de
establecer las conexiones a la red.
Firewall de Filtrado de Paquetes
El Filtrado de Paquetes es el tipo de firewall integrado en el ncleo de Linux. Un firewall de filtrado
trabaja a nivel de red. Los datos salen del sistema slo si las reglas del firewall se lo permiten. Cuando
los paquetes llegan son filtrados atendiendo al protocolo utilizado, la direccin fuente y destino, y la
informacin que sobre el puerto viene contenida en cada paquete.
Muchos encabezamientos de la red tienen la posibilidad de desarrollar servicios firewall. Los firewall
de filtrado nos lo podemos imaginar como un tipo de router. Por este motivo usted necesita tener un
profundo conocimiento de la estructura de paquete IP para trabajar con uno. Puesto que son muy pocos
los datos que se analizan y registran, los firewall de filtrado de paquetes requieren menos CPU y crean
menos latencia en su red.

Los firewall de filtrado no prevn los controles mediante el uso de contrasea. Los usuarios no se
identifican a s mismos. Lo nico que identifica a un usuario es el nmero IP asignado a su estacin de
trabajo. Esto puede convertirse en un problema s usted tiene la intencin de usar DHCP (Dynamic IP
assignments). Esto se debe a que las reglas se basan en los nmeros IP que tendr que ajustar a las
reglas cuando se asignen los nuevos nmeros IP. Los firewall de filtrado resultan ms transparentes
para el usuario, que no tiene que establecer reglas en sus aplicaciones para acceder a Internet. No
siempre sucede los mismo con los servidores proxy.
Servidor Proxy de Aplicacin
Un servidor proxy-cache tiene bsicamente dos funciones, como proxy acta como intermediario en
una transaccin Web, el acepta la peticin del cliente, la procesa y luego reenva la solicitud al servidor
original, como servidor de cache almacena el contenido de las solicitudes de los clientes para su
posible uso de nuevo, cuando existe otra solicitud del mismo contenido el servidor devuelve el
contenido del cache, sin tener que contactar al servidor de nuevo. Un servidor proxy-cache puede ser
utilizada por las siguientes razones :

Usar menos ancho de banda de la conexin a Internet.

Reducir el tiempo de carga de las paginas Web.

Proteger los equipos de la red interna.

Prever que los usuarios acceden a sitios prohibidos.

Generar estadsticas del trafico de la red y por usuario.

Asegurar que solo usuarios autorizados pueden conectarse a Internet.


SERVIDOR PROXY DE APLICACIN

Un servidor proxy-cache tiene bsicamente dos funciones, como proxy acta como intermediario en
una transaccin Web, el acepta la peticin del cliente, la procesa y luego reenva la solicitud al servidor
original, como servidor de cache almacena el contenido de las solicitudes de los clientes para su
posible uso de nuevo, cuando existe otra solicitud del mismo contenido el servidor devuelve el
contenido del cache, sin tener que contactar al servidor de nuevo.
Un servidor proxy-cache puede ser utilizada por las siguientes razones :

Usar menos ancho de banda de la conexin a Internet.

Reducir el tiempo de carga de las paginas Web.

Proteger los equipos de la red interna.

Prever que los usuarios acceden a sitios prohibidos.

Generar estadsticas del trafico de la red y por usuario.

Asegurar que solo usuarios autorizados pueden conectarse a Internet.

SQUID
Es un programa de software libre que implementa un servidor proxy y un demonio para cach de
pginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un
Servidor Web, guardando en cach peticiones repetidas a DNS y otras bsquedas para un grupo de
usuarios que comparte recursos de la red, hasta cach de web, adems de aadir seguridad filtrando el
trfico. Est especialmente diseado para ejecutarse bajo entornos tipo Unix.
Caractersticas de Squid
Squid proporciona un servicio de Proxy que soporta peticiones HTTP, HTTPS y FTP a equipos que
necesitan acceder a Internet y a su vez provee la funcionalidad de cach especializado en el cual
almacena de forma local las pginas consultadas recientemente por los usuarios. De esta forma,
incrementa la rapidez de acceso a los servidores de informacin Web y FTP que se encuentra fuera de
la red interna.
Proxy para SSL
Squid tambin es compatible con SSL (Secure Socket Layer) con lo que tambin acelera las
transacciones cifradas, y es capaz de ser configurado con amplios controles de acceso sobre las
peticiones de usuarios.
Jerarquas de cach.
Squid puede formar parte de una jerarqua de caches. Diversos proxys trabajan conjuntamente
sirviendo las peticiones de las pginas. Un navegador solicita siempre las pginas a un slo proxy, si

este no tiene la pgina en la cach hace peticiones a sus hermanos, que si tampoco las tienen las hacen
a su/s padre/s. Estas peticiones se pueden hacer mediante dos protocolos: HTTP e ICMP.
ICP, HTCP, CARP, cach digests
Squid sigue los protocolos ICP, HTCP, CARP y cach digests que tienen como objetivo permitir a un
proxy "preguntarle" a otros proxys cach si poseen almacenado un recurso determinado.
Cach transparente
Squid puede ser configurado para ser usado como proxy transparente de manera que las conexiones son
enrutadas dentro del proxy sin configuracin por parte del cliente, y habitualmente sin que el propio
cliente conozca de su existencia. De modo predefinido Squid utiliza el puerto 3128 para atender
peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que
lo haga en varios puertos disponibles a la vez.
WCCP
A partir de la versin 2.3 Squid implementa WCCP (Web Cache Control Protocol). Permite interceptar
y redirigir el trafico que recibe un router hacia uno o ms proxys cach, haciendo control de la
conectividad de los mismos. Adems permite que uno de los proxys cach designado pueda determinar
como distribuir el trfico redirigido a lo largo de todo el arreglo de proxys cach.
Control de acceso
Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer polticas de
acceso en forma centralizada, simplificando la administracin de una red.
Aceleracin de servidores HTTP
Cuando un usuario hace peticin hacia un objeto en Internet, este es almacenado en el cach, si otro
usuario hace peticin hacia el mismo objeto, y este no ha sufrido modificacin alguna desde que lo
accedi el usuario anterior, Squid mostrar el que ya se encuentra en el cach en lugar de volver a
descargarlo desde Internet. Esta funcin permite navegar rpidamente cuando los objetos ya estn en el
cach y adems optimiza enormemente la utilizacin del ancho de banda.

SNMP
Squid permite activar el protocolo SNMP, este proporciona un mtodo simple de administracin de red,
que permite supervisar, analizar y comunicar informacin de estado entre una gran variedad de
mquinas, pudiendo detectar problemas y proporcionar mensajes de estados.
Cach de Resolucin DNS.
Squid est compuesto tambin por el programa dnsserver, que se encarga de la bsqueda de nombres de
dominio. Cuando Squid se ejecuta, produce un nmero configurable de procesos dnsserver, y cada uno
de ellos realiza su propia bsqueda en DNS. De este modo, se reduce la cantidad de tiempo que la
cach debe esperar a estas bsquedas DNS.
Proxy-Cache en Squid.
El proxy cach es una manera de guardar los objetos solicitados de Internet (por ejemplo, datos como
pginas web) disponibles va protocolos HTTP, FTP y en un sistema ms cercano al lugar donde se
piden. Los navegadores web pueden usar la cach local Squid como un servidor proxy HTTP,
reduciendo el tiempo de acceso as como el consumo de ancho de banda. Esto es muchas veces til
para los proveedores de servicios de Internet para incrementar la velocidad de sus consumidores y para
las redes de rea local que comparten la conexin a Internet.
Debido a que tambin es un proxy (es decir, se comporta como un cliente en lugar del cliente real),
puede proporcionar un cierto grado de anonimato y seguridad. Sin embargo, tambin puede introducir
problemas significativos de privacidad ya que puede registrar mucha informacin, incluyendo las URL
solicitadas junto con otra informacin adicional como la fecha de la peticin, versin del navegador y
del sistema operativo.
Un programa cliente (por ejemplo, un navegador) o bien tiene que especificar explcitamente el
servidor proxy que quiere utilizar (tpico para consumidores de ISP) o bien podra estar usando un
proxy sin ninguna configuracin extra. A este hecho se le denomina cach transparente, en el cual todas
las peticiones HTTP son interceptadas por squid y todas las respuestas guardadas en cach. Esto ltimo
es tpico en redes corporativas dentro de una red de acceso local y normalmente incluye los problemas
de privacidad mencionados previamente.
Squid tiene algunas caractersticas que pueden facilitar establecer conexiones annimas. Caractersticas

tales como eliminar o modificar campos determinados de la cabecera de peticiones HTTP de los
clientes. Esta poltica de eliminacin y alteracin de cabeceras se establece en la configuracin de
Squid. El usuario que solicita pginas a travs de una red que utiliza Squid de forma transparente,
normalmente no es consciente de este proceso o del registro de informacin relacionada con el proceso.
Requerimientos de Hardware y Sistemas Operativos
Los requerimientos de Hardware de Squid son generalmente modestos, el parmetro mas importante a
ser tomado en cuanta en una instalacin de squid es la memoria. El no poseer memoria suficiente causa
una drstica degradacin en el rendimiento de los sistemas. Otro aspecto importante es el espacio en
disco, mas espacio significa mayor cantidad de objetos en cache y menores bsquedas en Internet. Una
interfaz de discos mas rpida es siempre recomendada, por ejemplo siempre prefiera a discos SCSI a
discos ata o sata. El procesamiento no es una variable critica en el rendimiento de squid, aunque CPU
mas rpidos siempre son preferidos.
Como squid utiliza una pequea cantidad de memoria por cada respuesta de cache existe una relacin
entre el espacio de la memoria y el cache de disco, como regla general se puede utilizar que se
necesitan 32 MB de memoria RAM por cada GB de cache de disco, por lo cual un sistema con 1 GB de
memoria puede almacenar 32 GB de cache sin afectar su rendimiento. Squid puede ser instalado en
sistemas Linux, Unix, y Windows.
Instalacin de Squid en Debian GNU/Linux
Para instalar en servidor Squid en Debian GNU/Linux se debe ejecutar desde una consola como usuario
root : #aptitude install squid3
Configuracin de Squid
El archivo de configuracin general de squid se llama squid3.conf y se encuentra ubicado en
/etc/squid3/squid.conf. La configuracin de Squid es similar a la de los archivos Unix, cada linea de
configuracin comienza con una directiva seguida de un valor o valores, squid ignora las lineas en
blanco o las que comienzan con el smbolo numeral #.
Ejemplos de Configuracin en squid.
cache_log /squid/var/cache.log

# define the localhost ACL


acl Localhost src 127.0.0.1/32
connect_timeout 2 minutes
log_fqdn on
Algunas Directivas poseen un solo valor, por lo cual lineas repetidas harn que se tomen solamente la
ultima, en el siguiente ejemplo la segunda linea es la que es tomada como valor del servidor:
connect timeout 2 minutes
connect timeout 1 hour
CONTROLES DE ACCESO (ACL)
Los controles de acceso son la parte mas importante en la configuracin del servidor squid, estas se
utilizan para dar acceso a los usuarios y tambin para negarlo. Las ACL pueden usarse para restringir o
prevenir acceso a ciertos sitios o contenidos. Utilizan la siguiente sintaxis:
acl nombre_acl tipo_acl descripcin ...
acl nombre_acl tipo_acl "archivo_de_descripciones" ...
Cuando usamos un "archivo_de_descripciones", cada descripcin se corresponde con una lnea del
archivo.
Tipos de ACL

src: especifica una direccin origen de una conexin en formato IP/mscara. Por ejemplo,
utilizaremos una acl de tipo src para especificar la red local:

acl red_loca
Tambin podemos especificar rangos de direcciones mediante una acl de tipo src:
acl jefes src 192.168.1.10-192.168.1.25/32

dst: especifica una direccin destino de una conexin en formato IP/mscara.

acl google dst 216.239.0.0/24


Tambin podemos especificar hosts concretos mediante una acl de tipo dst:
acl google dst 216.239.59.104/32 216.239.39.104/32 216.239.57.104/32
Las definiciones son idnticas a las acl de tipo src salvo que se aplican al destino de las conexiones, no
al origen.

srcdomain y dstdomain: estos tipos de acl especifican un nombre de dominio.En el caso de


srcdomain es el dominio origen y se determina por resolucin DNS inversa de la IP de la
mquina, es decir, tendremos que tener bien configurado el DNS de la red local.
En el caso de dstdomain el nombre del dominio se comprueba con el dominio que se haya
especificado en la peticin de pgina web. Por ejemplo: acl google_com dstdomain
google.com.

srcdom_regex y dstdom_regex: especifican una expresin regular que verifican los dominio
origen o destino. La expresin regular hace distincin entre maysculas y minsculas salvo que
incluyamos la opcin "-i" que evita dicha distincin. Ejemplo:
acl google_todos dstdom_regex -i google\..*
Observamos como al incluir "-i" estamos indicando que no haga distincin entre maysculas y
minsculas.

time: este tipo de acl permite especificar una franja horaria concreta dentro de una semana. La
sintaxis es la siguientes: acl nombre_acl_horaria time [das-abrev] [h1:m1-h2:m2]. Donde la
abreviatura del da es: S - Sunday (domingo)M - Monday (lunes) T - Tuesday (martes)
W

Wednesday
-

Thursday

(mircoles)
(jueves)

F - Friday (viernes)
A - Saturday (sbado)
adems la primera hora especificada debe ser menor que la segunda, es decir h1:m1 tiene que ser

menor que h2:m2. : Ejemplo: acl horario_laboral time M T W H F 8:00-17:00. Estaramos


especificando un horario de 8 a 17 y de lunes a viernes.

url_regex: permite especificar expresiones regulares para comprobar una url completa, desde el
http:// inicial. Por ejemplo, vamos a establecer una acl que se verifique con todos los servidores
cuyo nombre sea adserver: url_regex serv_publicidad ^http://adserver.*. En otro ejemplo
podemos ver una acl que verifique las peticiones de archivos mp3:
url_regex archivos_mp3 -i mp3$

referer_regex: define una acl que se comprueba con el enlace que se ha pulsado para acceder a
una determinada pgina. Cada peticin de una pgina web incluye la direccin donde se ha
pulsado para acceder. Si escribimos la direccin en el navegador entonces estaremos haciendo
una peticin directa. Por ejemplo vamos a establecer una acl para todas las pginas a las que
hayamos accedido pulsando en una ventana de bsqueda de google:
acl pincha_google referer_regex http://www.google.*

req_mime: las acl de tipo req_mime se utilizan para comprobar el tipo de peticin mime que
realiza un cliente, y se puede utilizar para detectar ciertas descargas de archivos o ciertas
peticiones en tneles HTTP. Esta acl slo comprueba las peticiones que realiza el cliente, no
comprueba la respuesta del servidor. Esto es importante para tener claro qu estamos haciendo y
qu no. Ejemplo:

acl subida req_mime_type -i ^multipart/form-data$


acl javascript req_mime_type -i ^application/x-javascript$
acl estilos req_mime_type -i ^text/css$
acl audiompeg req_mime_type -i ^audio/mpeg$

rep_mime_type: este tipo de acl se utiliza para verificar el tipo de respuesta recibida por el
proxy. Este tipo de acl, analiza una respuesta del servidor por lo que slo le afectas las reglas de
respuesta como http_reply_access y no las reglas http_access que se aplican a las peticiones.
Ejemplo:

acl javascript rep_mime_type -i ^application/x-javascript$


acl ejecutables rep_mime_type -i ^application/octet-stream$
acl audiompeg rep_mime_type -i ^audio/mpeg$
AUTENTICACIN EN SQUID

Es muy til el poder establecer un sistema de autenticacin para poder acceder hacia Internet, pues esto
permite controlar quienes si y quienes no accedern a Internet sin importar desde que mquina de la red
local lo hagan. Ser de modo tal que tendremos un doble control, primero por direccin IP y segundo
por nombre de usuario y clave de acceso.
Eligiendo el Mdulo de Autenticacin.
Se considerarn dos opciones de autenticacin una a travs de texto simple con claves de acceso
creadas con htpasswd o bien a travs de un servidor LDAP, lo cual constituye una solucin ms
robusta.
Autenticacin Simple.
Squid puede utilizar el mdulo ncsa_auth, de la NCSA (National Center for Supercomputing
Applications), y que ya viene incluido como parte del paquete principal de Squid en la mayora de las
distribuciones actuales. Este mdulo provee una autenticacin muy sencilla a travs de un archivo de
texto simple cuyas claves de acceso fueron creadas con htpasswd.
Creacin del archivo de claves de acceso.
Se requerir la creacin previa de un archivo que contendr los nombres de usuarios y sus
correspondientes claves de acceso (cifradas). El archivo puede localizarse en cualquier lugar del
sistema, con la nica condicin que sea asequible para el usuario squid. Debe procederse a crear un
archivo /etc/squid3/claves: #touch /etc/squid3/claves
salvo que vaya a utilizarse un guin a travs del servidor web para administrar las claves de acceso,

como medida de seguridad, este archivo debe hacerse para que solo el usuario squid pueda leerlo o
escribirlo.
#chmod 600 /etc/squid3/claves.
#chown squid:squid /etc/squid3/claves.
A continuacin deberemos dar de alta las cuentas que sean necesarias, utilizando el mandato htpasswd mismo que viene incluido en el paquete de apache. Ejemplo: #htpasswd /etc/squid/claves areyes
Lo anterior solicitar teclear una nueva clave de acceso para el usuario joseperez y confirmar tecleando
sta de nuevo. Repita con el resto de las cuentas que requiera dar de alta. Todas las cuentas que se den
de alta de este modo son independientes a las ya existentes en el sistema.
Al dar de alta una cuenta o cambiar una clave de acceso lo estar haciendo exclusivamente para el
acceso al servidor Proxy. Las cuentas son independientes a las que se tengan existentes en el sistema
como seran shell, correo y Samba.
Parmetros en /etc/squid3/squid.conf
Lo siguiente ser especificar que programa de autenticacin se utilizar. Localice la seccin que
corresponde a la etiqueta auth_param basic program. Por defecto no est especificado programa
alguno. Considerando que ncsa_auth se localiza en /usr/lib/squid3/ncsa_auth, procederemos a aadir el
siguiente parmetro: auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid3/claves
/usr/lib/squid3/ncsa_auth corresponde a la localizacin de el programa para autenticar y
/etc/squid3/claves al archivo que contiene las cuentas y sus claves de acceso.
Autenticacin a travs del mdulo LDAP.
Considerando que se ha configurado exitosamente OpenLDAP como servidor de autenticacin, solo
basta definir el directorio y el servidor LDAP a utilizar. La sintaxis utilizada para squid_ldap_auth es la
siguiente: #squid_ldap_auth -b "Directorio-o-DN-a-utilizar" servidor-ldap-a-utilizar.
Ejemplo: #squid_ldap_auth -b "cn=people,dc=su-dominio,dc=com" 127.0.0.1
Parmetros en /etc/squid3/squid.conf
Se debe editar el archivo /etc/squid3/squid.conf y se especificar el programa de autenticacin se

utilizar. Localice la seccin que corresponde a la etiqueta auth_param basic program. Por defecto no
est

especificado

programa

alguno.

Considerando

que

squid_ldap_auth

se

localiza

en

/usr/lib/squid3/ncsa_auth, procederemos a aadir el siguiente parmetro: auth_param basic program


/usr/lib/squid/squid_ldap_auth

-b "cn=people,dc=su-dominio,dc=com" 127.0.0.1

Lo anterior conecta al directorio dc=su-red-local,dc=com en el servidor LDAP en 127.0.0.1.


Listas y Reglas de Control de Acceso.
El siguiente paso corresponde a la definicin de una Lista de Control de Acceso. Especificaremos una
denominada passwd la cual se configurar para utilizar obligatoriamente la autenticacin para poder
acceder a Squid. Debe localizarse la seccin de Listas de Control de Acceso y aadirse la siguiente
lnea: acl password proxy_auth REQUIRED
Habiendo hecho lo anterior, deberemos tener en la seccin de Listas de Control de Acceso algo similar
a lo siguiente: Listas de Control de Accesos: autenticacin.
#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl redlocal src 192.168.1.0/255.255.255.0
acl password proxy_auth REQUIRED
Procedemos entonces a modificar la regla de control de accesos que ya tenamos para permitir el acceso
a Internet. Donde antes tenamos lo siguiente: http_access allow redlocal
Le aadimos passwd, la definicin de la Lista de Control de Acceso que requiere utilizar clave de
acceso, a nuestra regla actual, de modo que quede como mostramos a continuacin: http_access allow
redlocal password

Habiendo hecho lo anterior, la zona de reglas de control de acceso debera quedar de este modo:
Reglas de control de acceso: Acceso por clave de acceso.
#
# INSERT YOUR OWN RULE(S) HERE TO allow ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal password
http_access deny all
PROTECCIN DEL FIREWALL
Anteriormente estudiamos las generalidades de los firewall, ahora en esta parte vamos a ver su
implementacin en Debian Etch / Canaima, para ello se decidi usar IPTABLES, el cual es el firewall
ms seguro y confiable con el que podamos contar para navegar sin tener miedo a una irrupcin a
nuestros sistemas informticos.
QU ES IPTABLES?
IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a
partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de
iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error de
programacin (esto es una pequea mentira, ha tenido alguna vulnerabilidad que permite DoS, pero
nunca tendr tanto peligro como las aplicaciones que escuchan en determinado puerto TCP): iptables
est integrado con el kernel, es parte del sistema operativo. Cmo se pone en marcha? Realmente lo
que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que aadimos, borramos,
o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van
ejecutando las reglas de firewall.
Notas: bueno, para los que ms profundizan en linux . Bien, se puede implementar un script de inicio
en /etc/rc.d/INIT.d (o /etc/INIT.d ) con el que hagamos que iptables se "inicie o pare" como un servidor
ms.

Lo podemos hacer nosotros o es probable que venga en la distribucin (como en redhat y Debian por
ejemplo). Tambin se pueden salvar las reglas aplicadas con el comando iptablessave en un archivo y
gestionar ese archivo con una aplicacin o frontend desde la Xwindow o desde webmin.
Bien, tenemos una mquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a
llegar/salir/pasar paquetes. No nos enredemos: olvidemos cuantas tarjetas de red hay, que direcciones
ip tiene la mquina y olvidemos si el paquete entra o sale. Las reglas de firewall estn a nivel de kernel,
y al kernel lo que le llega es un paquete (digamos, un marrn) y tiene que decidir qu hacer con l. El
kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra mquina,
consultar las reglas de firewall y decidir qu hacer con el paquete segn mande el firewall.
Este es el camino que seguira un paquete en el kernel:

Cuando un paquete u otra comunicacin llega al kernel con iptables se sigue este camino. Como se ve
en el grfico, bsicamente se mira si el paquete est destinado a la propia maquina o si va a otra. Para
los paquetes (o datagramas, segn el protocolo) que van a la propia maquina se aplican las reglas
INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente
reglas FORWARD.
INPUT, OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas
es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs
de origen y destino.

Ejemplos: antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar
los paquetes; son reglas poco conocidas y es probable que no las usen. Por tanto tenemos tres tipos de
reglas en iptables:
MANGLE
NAT: reglas PREROUTING, POSTROUTING
FILTER: reglas INPUT, OUTPUT, FORWARD.
CREANDO UN FIREWALL CON IPTABLES
La idea es mostrar la configuracin empezando desde la ms bsica a las ms complejas, en las que se
establece la denegacin como poltica por defecto.
Nota: se recomienda ir practicando estas reglas en un equipo linux , y especialmente hacer uso de la
herramienta iptraf para depurar y comprobar el funcionamiento de iptables. Con iptraf podemos
comprobar si las conexiones TCP/IP se llegan a establecer o no. Una conexin tcp/ip empieza con el
threewayhandshake:

La mquina que desea conectarse a otra envia un paquete con flag SYN

Si la otra mquina acepta, enva un SYN/ACK

Entonces la mquina establece la conexin.

Si el firewall esta denegando la conexin, con iptraf veremos que la maquina origen solo manda
paquetes con el flag S (de SYN), y que del otro lado no sale nada. Saber usar iptraf nos ayudar mucho.
Caso 1: Proteger la Propia Mquina.
Tenemos una mquina linux conectada en Internet y queremos protegerla con su propio firewall. Lo
nico que tenemos que hacer es crear un script de shell en el que se van aplicando las reglas. Los
scripts de iptables pueden tener este aspecto: saludo a la aficin (echo), borrado de las reglas aplicadas
actualmente (flush), aplicacin de polticas por defecto para INPUT, OUPUT, FORWARD, listado de
reglas iptables.

#!/bin/sh
## SCRIPT de IPTABLES ejemplo
## Ejemplo de script para proteger la propia mquina
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT
## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables A INPUT i lo j ACCEPT
# A nuestra IP le dejamos todo
iptables A INPUT s 195.65.34.234 j ACCEPT
# Al DBA le dejamos entrar al mysql para que mantenga la BBDD
iptables A INPUT s 231.45.134.23 p tcp dport 3306 j ACCEPT

# A un usuario en particular le dejamos usar el FTP


iptables A INPUT s 80.37.45.194 p tcp dport 20:21 j ACCEPT
# El puerto 80 de www debe estar abierto, es un servidor web.
iptables A INPUT p tcp dport 80 j ACCEPT
# Y el resto, lo cerramos
iptables A INPUT p tcp dport 20:21 j DROP
iptables A INPUT p tcp dport 3306 j DROP
iptables A INPUT p tcp dport 22 j DROP
iptables A INPUT p tcp dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
Nota para los que quieran saber ms: se puede mejorar este script usando variables, se puede poner el
comando con el path completo, pero limtense a hacer copypaste. Para el resto, no olvidarse de
ponerle flags de ejecucin: chmod +x firewall1.sh o chmod 750 firewall1.sh
Ya se ve, un script de los ms simple, con unas pocas reglas con las que cerramos puertos al pblico a
los que no tienen porque tener acceso, salvo el 80. Pero cualquiera con algo de ojo se habr dado
cuenta de que ni se filtra el UDP ni el ICMP. Apostara cualquier cosa a que el sistema tiene algn
puerto udp abierto, y adems peligroso como el SNMP.
Como se ha dicho anteriormente en esta seccin, en este tipo de firewall es recordable hacer un netstat
para ver que puertos estn en estado de escucha (abiertos). Hay personas que hacen un nmap as
mismos. Cuidado: dependiendo de cmo se ejecute quiz no nos muestre todos los puertos, ya que
suele mirar los puertos ms conocidos.
Caso 2: Firewall
Imaginemos que hemos dado un repaso a nuestro sistema, y ahora si que tenemos mejor identificados
los puertos tcp y udp abiertos. Pero por si acaso nos curamos en salud y al final del script cerraremos el

rango de puertos del 1 al 1024, los reservados tanto para tcp como udp.
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para proteger la propia mquina
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT
## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables A INPUT i lo j ACCEPT
# A nuestra IP le dejamos todo
iptables A INPUT s 195.65.34.234 j ACCEPT
# Al DBA le dejamos entrar al mysql para que mantenga la BBDD

iptables A INPUT s 231.45.134.23 p tcp dport 3306 j ACCEPT


# A un usuario especial le dejamos usar el FTP
iptables A INPUT s 80.37.45.194 p tcp dport 20:21 j ACCEPT
# El puerto 80 de www debe estar abierto, es un servidor web.
iptables A INPUT p tcp dport 80 j ACCEPT
# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables A INPUT p tcp dport 1:1024
iptables A INPUT p udp dport 1:1024
# Cerramos otros puertos que estan abiertos
iptables A INPUT p tcp dport 3306 j DROP
iptables A INPUT p tcp dport 10000 j DROP
iptables A INPUT p udp dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
Caso 3: Firewall de una LAN con salida a Internet.
Ahora vamos a ver una configuracin de firewall iptables para el tpico caso de red local que necesita
salida a internet.

Esquema de Firewall Tpico entre Red Local e Internet

Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en
iptables), con lo que se hara dos veces NAT en el firewall y en el router. Entre el router y el firewall lo
normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de
las necesidades puede que los dos tengan IP pblica. El router se supone que hace un NAT completo
hacia dentro (quiz salvo puerto 23), o sea que desde el exterior no se llega al router si no que de forma
transparente se "choca" contra el firewall. Lo normal en este tipo de firewalls es poner la poltica por
defecto de FORWARD en denegar (DROP), pero eso lo vemos ms adelante.
Veamos como sera este firewallgateway:
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para firewall entre redlocal e internet
##
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
Iptables t nat P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables A INPUT i lo j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables A INPUT s 192.168.10.0/24 i eth1 j ACCEPT
# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables t nat A POSTROUTING s 192.168.10.0/24 o eth0 j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras mquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables A INPUT s 0.0.0.0/0 p tcp dport 1:1024 j DROP
iptables A INPUT s 0.0.0.0/0 p udp dport 1:1024 j DROP
# Cerramos un puerto de gestin: webmin
iptables A INPUT s 0.0.0.0/0 p tcp dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script

Caso 4: Firewall de una LAN con salida a Internet con DMZ


Un poco ms complicado: imaginemos que tenemos una red con un servidor IIS en una DMZ:
Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitir:

Acceso de la red local a internet.

Acceso pblico al puerto tcp/80 y tcp/443 del servidor de la DMZ

Acceso del servidor de la DMZ a una BBDD de la LAN

Obviamente bloquear el resto de acceso de la DMZ hacia la LAN.

Qu tipo de reglas son las que hay que usar para filtrar el trfico entre la DMZ y la LAN? Solo pueden
ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio
firewall.
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para firewall entre redlocal e internet con DMZ
##
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F

iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una mquina interna
iptables t nat A PREROUTING i eth0 p tcp dport 80 j DNAT to 192.168.3.2:80
# Los accesos de un ip determinada HTTPS se redirigen e esa mquina
iptables t nat A PREROUTING i eth0 p tcp dport 443 j DNAT to
192.168.3.2:443
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables A INPUT i lo j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables A INPUT s 192.168.10.0/24 i eth1 j ACCEPT
# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera

# y activamos el BIT DE FORWARDING (imprescindible!!!!!)


iptables t nat A POSTROUTING s 192.168.10.0/24 o eth0 j MASQUERADE
iptables t nat A POSTROUTING s 192.168.3.0/24 o eth0 j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras mquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Permitimos el paso de la DMZ a una BBDD de la LAN:
iptables A FORWARD s 192.168.3.2 d 192.168.10.5 p tcp dport 5432 j ACCEPT
iptables A FORWARD s 192.168.10.5 d 192.168.3.2 p tcp sport 5432 j ACCEPT
## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables A FORWARD s 192.168.10.0/24 d 192.168.3.2 p tcp sport 1024:65535
dport 3389 j ACCEPT
# hay que hacerlo en uno y otro sentido
iptables A FORWARD s 192.168.3.2 d 192.168.10.0/24 p tcp sport 3389 dport
1024:65535 j ACCEPT
# por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables A FORWARD s 192.168.3.0/24 d 192.168.10.0/24 j DROP
## Cerramos el acceso de la DMZ al propio firewall
iptables A INPUT s 192.168.3.0/24 i eth2 j DROP
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido

iptables A INPUT s 0.0.0.0/0 p tcp dport 1:1024 j DROP


iptables A INPUT s 0.0.0.0/0 p udp dport 1:1024 j DROP
# Cerramos un puerto de gestin: webmin
iptables A INPUT s 0.0.0.0/0 p tcp dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
Forward por defecto. Si en la DMZ hay ip pblica no es necesario hacer redirecciones de puerto, sino
que basta con rutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por
ejemplo tenemos dos mquinas con servidor web (un apache y un IIS); A cul de las dos le
redirigimos el puerto 80? No hay manera de saberlo (No, con servidores virtuales tampoco, pinsalo),
por eso se deben asignar IPs pblicas o en su defecto usar puertos distintos.
Por tanto hay que proteger convenientemente toda la DMZ. Tampoco hara falta enmascarar la salida
hacia el exterior de la DMZ, si tiene una ip pblica ya tiene una pata puesta en internet; obviamente hay
que decirle al router como llegar hasta esa ip pblica. As podra ser esta red:
Esquema de firewall entre red local e internet con zona DMZ

para servidores expuestos usando IPs pblicas


Y este podra ser un firewall adecuado:
#!/bin/sh

## SCRIPT de IPTABLES
## Ejemplo de script para firewall entre redlocal e internet con DMZ
## pero con IPs pblicas.
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables A INPUT i lo j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables A INPUT s 192.168.10.0/24 i eth1 j ACCEPT
# Ahora hacemos enmascaramiento de la red local y de la DMZ

# para que puedan salir haca fuera


# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables t nat A POSTROUTING s 192.168.10.0/24 o eth0 j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras mquinas puedan salir a travs del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZ
iptables A FORWARD d 212.194.89.152 p tcp dport 80 j ACCEPT
iptables A FORWARD d 212.194.89.152 p tcp dport 443 j ACCEPT
iptables A FORWARD d 212.194.89.150/30 j DROP
## Permitimos el paso de la DMZ a una BBDD de la LAN:
iptables A FORWARD s 212.194.89.152 d 192.168.10.5 p tcp dport 5432 j ACCEPT
# en el otro sentido lo mismo
iptables A FORWARD s 192.168.10.5 d 212.194.89.152 p tcp sport 5432 j ACCEPT
## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables A FORWARD s 192.168.10.0/24 d 212.194.89.152 p tcp sport 1024:65535
dport 3389 j ACCEPT
# hay que hacerlo en uno y otro sentido
iptables A FORWARD s 212.194.89.152 d 192.168.10.0/24 p tcp sport 3389 dport
1024:65535 j ACCEPT
# por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables A FORWARD s 212.194.89.152 d 192.168.10.0/24 j DROP

## Cerramos el acceso de la DMZ al propio firewall


iptables A INPUT s 212.194.89.152 i eth2 j DROP
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables A INPUT s 0.0.0.0/0 p tcp --dport 1:1024 j DROP
iptables A INPUT s 0.0.0.0/0 p udp --dport 1:1024 j DROP
# Cerramos un puerto de gestin: webmin
iptables A INPUT s 0.0.0.0/0 p tcp --dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
OBSERVACIN: vale la pena pararse a explicar esta parte del firewall:
## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables A FORWARD s 192.168.10.0/24 d 212.194.89.152 p tcp --sport 1024:65535
dport 3389 j ACCEPT
# hay que hacerlo en uno y otro sentido
iptables A FORWARD s 212.194.89.152 d 192.168.10.0/24 p tcp sport 3389 dport
1024:65535 j ACCEPT
# por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables A FORWARD s 212.194.89.152 d 192.168.10.0/24 j DROP
Lo que nos lleva a dos cuestiones: Por qu hay que explicitar la abertura en uno y otro sentido?
Porque la tercera regla cierra todo lo que va de la DMZ a la red local. Para abrir el puerto 3389 de tcp

es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y que a su vez pueda volver
a la LAN. Esto de tener que especificar la abertura en uno y otro sentido ser el pan de cada da en un
iptables con poltica DROP por defecto: mejor proteccin pero ms trabajo.
Por qu se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla?
Imaginemos que un hacker logra acceso a la mquina de la DMZ. Si no especificamos el puerto de
destino en esas dos reglas, el hacker puede abrir CUALQUIER puerto de la LAN siempre que pueda
establecer como puerto origen suyo el tcp/3389, cosa fcil para un hacker que sepa algo de C o que
tenga el programa pertinente a mano. De todas formas el hacker tendra que saber que existe ese tipo de
reglas, si es listo probara con puertos de gestin o con puertos netbios. El problema es que se deja un
vnculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y
ah es donde reside el peligro.
En las conexiones "legales" no se usa como puerto origen nada por debajo del 1024; cuando alguien se
conecta a otro puerto en su extremo abre un puerto por encima del 1024. Especificndolo en la regla de
firewall protegeremos un poco mejor la LAN, aunque los puertos por encima de 1024 estarn en
peligro.
Caso 5: Firewall Puro y Duro entre Redes
En este caso olvidmonos de redes locales y de NAT. Aqu solo tendremos reglas de filtrado INPUT y
FORWARD. Pongamos que tenemos el siguiente escenario:

Esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estn al otro lado de
este dispositivo, todos ellos de la red 211.34.149.0/24. Cada uno de ellos da un servicio determinado, y
puede estar gestionado desde distintas IPs, lo que significa que habr que dar acceso a determinados
puertos de gestin (22, 3389, etc..). Este podra ser el aspecto del script del firewall:
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para firewall entre redes.
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT ACCEPT
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# A nuestro firewall tenemos acceso total desde la nuestra IP
iptables A INPUT s 210.195.55.15 j ACCEPT
# Para el resto no hay acceso al firewall
iptables A INPUT s 0.0.0.0/0 j DROP

## Ahora podemos ir metiendo las reglas para cada servidor


## Como sern paquetes con destino a otras mquinas se aplica FORWARD
## Servidor WEB 211.34.149.2
# Acceso a puerto 80
iptables A FORWARD d 211.34.149.2 p tcp dport 80 j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.2 p tcp dport 22 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.2 j DROP
## Servidor MAIL 211.34.149.3
# Acceso a puerto 25, 110 y 143
iptables A FORWARD d 211.34.149.3 p tcp dport 25 j ACCEPT
iptables A FORWARD d 211.34.149.3 p tcp dport 110 j ACCEPT
iptables A FORWARD d 211.34.149.3 p tcp dport 143 j ACCEPT
# Acceso a gestion SNMP
iptables A FORWARD s 210.195.55.15 d 211.34.149.3 p udp dport 169 j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.3 p tcp dport 22 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.3 j DROP
## Servidor IRC 211.34.149.4
# Acceso a puertos IRC

iptables A FORWARD d 211.34.149.4 p tcp dport 6666:6668 j ACCEPT


# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.4 p tcp dport 22 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.4 j DROP
## Servidor NEWS 211.34.149.5
# Acceso a puerto news
iptables A FORWARD d 211.34.149.5 p tcp dport news j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 213.194.68.115 d 211.34.149.5 p tcp dport 22 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.5 j DROP
## Servidor B2B 211.34.149.6
# Acceso a puerto 443
iptables A FORWARD d 211.34.149.6 p tcp dport 443 j ACCEPT
# Acceso a una ip para gestionarlo
iptables A FORWARD s 81.34.129.56 d 211.34.149.6 p tcp dport 3389 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.6 j DROP
## Servidor CITRIX 211.34.149.7
# Acceso a puerto 1494
iptables A FORWARD d 211.34.149.7 p tcp dport 1494 j ACCEPT

# Acceso a una ip para gestionarlo


iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p tcp dport 3389 j ACCEPT
# acceso a otro puerto quiza de BBDD
iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p tcp dport 1434 j ACCEPT
# acceso a otro puerto quiza de BBDD
iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p udp dport 1433 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.7 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que
dejamos abiertos, protegeremos de manera eficaz todos lo puertos abiertos de las mquinas.
Caso 6: Firewall con Poltica por Defecto DROP
Qu supone el hecho de establecer como poltica por defecto la denegacin?.

Se debe ser explcito para cada conexin permitida en los dos sentidos.

Se debe conocer perfectamente qu debe estar abierto y qu no.

Es muchos ms difcil de mantener y si se hace conviene hacerlo desde el principio.

No todo es ms trabajo: tambin supone un firewall mucho ms seguro.

En el ejemplo de la DMZ ya se presentaba esta situacin en las reglas forward de una a otra red. Para
ilustrar el DROP por defecto, vamos a mostrar la configuracin del ejemplo anterior de firewall entre
redes pero con poltica por defecto DROP.
#!/bin/sh
## SCRIPT de IPTABLES

## Ejemplo de script para firewall entre redes con DROP por defecto
echo n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto: DROP!!!
iptables P INPUT DROP
iptables P OUTPUT DROP
iptables P FORWARD DROP
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# A nuestro firewall tenemos acceso total desde la nuestra IP
iptables A INPUT s 210.195.55.15 j ACCEPT
iptables A OUTPUT d 210.195.55.15 j ACCEPT
# Para el resto no hay acceso al firewall
# En principio esta de ms, pero si rebajamos los permisos temporalmente
# nos cubre las espaldas
iptables A INPUT s 0.0.0.0/0 j DROP
## Ahora podemos ir metiendo las reglas para cada servidor
## Como sern paquetes con destino a otras mquinas se aplica FORWARD

## Servidor WEB 211.34.149.2


# Acceso a puerto 80
iptables A FORWARD d 211.34.149.2 p tcp dport 80 j ACCEPT
iptables A FORWARD s 211.34.149.2 p tcp sport 80 j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.2 p tcp dport 22 j ACCEPT
iptables A FORWARD s 211.34.149.2 d 210.195.55.15 p tcp sport 22 j ACCEPT
## Servidor MAIL 211.34.149.3
# Acceso a puerto 25, 110 y 143
iptables A FORWARD d 211.34.149.3 p tcp dport 25 j ACCEPT
iptables A FORWARD s 211.34.149.3 p tcp sport 25 j ACCEPT
iptables A FORWARD d 211.34.149.3 p tcp dport 110 j ACCEPT
iptables A FORWARD s 211.34.149.3 p tcp sport 110 j ACCEPT
iptables A FORWARD d 211.34.149.3 p tcp dport 143 j ACCEPT
iptables A FORWARD s 211.34.149.3 p tcp sport 143 j ACCEPT
# Acceso a gestion SNMP
iptables A FORWARD s 210.195.55.15 d 211.34.149.3 p udp dport 169 j ACCEPT
iptables A FORWARD s 211.34.149.3 d 210.195.55.15 p udp sport 169 j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.3 p tcp dport 22 j ACCEPT
iptables A FORWARD s 211.34.149.3 d 210.195.55.15 p tcp sport 22 j ACCEPT
## Servidor IRC 211.34.149.4

# Acceso a puertos IRC


iptables A FORWARD d 211.34.149.4 p tcp dport 6666:6668 j ACCEPT
iptables A FORWARD s 211.34.149.4 p tcp sport 6666:6668 j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 210.195.55.15 d 211.34.149.4 p tcp dport 22 j ACCEPT
iptables A FORWARD s 211.34.149.4 d 210.195.55.15 p tcp sport 22 j ACCEPT
## Servidor NEWS 211.34.149.5
# Acceso a puerto news
iptables A FORWARD d 211.34.149.5 p tcp dport news j ACCEPT
iptables A FORWARD s 211.34.149.5 p tcp sport news j ACCEPT
# Acceso a nuestra ip para gestionarlo
iptables A FORWARD s 213.194.68.115 d 211.34.149.5 p tcp dport 22 j ACCEPT
iptables A FORWARD s 211.34.149.5 d 213.194.68.115 p tcp sport 22 j ACCEPT
# El resto, cerrar
iptables A FORWARD d 211.34.149.5 j DROP
## Servidor B2B 211.34.149.6
# Acceso a puerto 443
iptables A FORWARD d 211.34.149.6 p tcp dport 443 j ACCEPT
iptables A FORWARD s 211.34.149.6 p tcp sport 443 j ACCEPT
# Acceso a una ip para gestionarlo
iptables A FORWARD s 81.34.129.56 d 211.34.149.6 p tcp dport 3389 j ACCEPT
iptables A FORWARD s 211.34.149.6 d 81.34.129.56 p tcp sport 3389 j ACCEPT

## Servidor CITRIX 211.34.149.7


# Acceso a puerto 1494
iptables A FORWARD d 211.34.149.7 p tcp dport 1494 j ACCEPT
iptables A FORWARD s 211.34.149.7 p tcp sport 1494 j ACCEPT
# Acceso a una ip para gestionarlo
iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p tcp dport 3389 j ACCEPT
iptables A FORWARD s 211.34.149.7 d 195.55.234.2 p tcp sport 3389 j ACCEPT
# acceso a otro puerto quiza de BBDD
iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p tcp dport 1434 j ACCEPT
iptables A FORWARD s 211.34.149.7 d 195.55.234.2 p tcp sport 1434 j ACCEPT
# acceso a otro puerto quiza de BBDD
iptables A FORWARD s 195.55.234.2 d 211.34.149.7 p udp dport 1433 j ACCEPT
iptables A FORWARD s 211.34.149.7 d 195.55.234.2 p udp sport 1433 j ACCEPT
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script
Ya est, hemos levantado un verdadero muro entre internet y el conjunto de servidores que esta tras el
firewall. No se puede ni hacer un ping a las mquinas, salvo que se haya dado acceso total a una ip. Es
ms llevadero aplicar el DROP por defecto cuando el firewall es para la propia mquina. El primer
escenario de esta manual trataba sobre este caso, ahora lo revisamos con la poltica por defecto drop.
#!/bin/sh
## SCRIPT de IPTABLES
## Ejemplo de script para proteger la propia mquina
## con poltica por defecto DROP

echo n Aplicando Reglas de Firewall...


## FLUSH de reglas
iptables F
iptables X
iptables Z
iptables t nat F
## Establecemos politica por defecto
iptables P INPUT DROP
iptables P OUTPUT DROP
iptables P FORWARD DROP
## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables A INPUT i lo j ACCEPT
iptables A OUTPUT o lo j ACCEPT
# A nuestra IP le dejamos todo
iptables A INPUT s 195.65.34.234 j ACCEPT
iptables A OUTPUT d 195.65.34.234 j ACCEPT
# A un colega le dejamos entrar al mysql para que mantenga la BBDD
iptables A INPUT s 231.45.134.23 p tcp dport 3306 j ACCEPT
iptables A OUTPUT d 231.45.134.23 p tcp sport 3306 j ACCEPT
# A un diseador le dejamos usar el FTP
iptables A INPUT s 80.37.45.194 p tcp dport 20:21 j ACCEPT

iptables A OUTPUT d 80.37.45.194 p tcp sport 20:21 j ACCEPT


# El puerto 80 de www debe estar abierto, es un servidor web.
iptables A INPUT p tcp dport 80 j ACCEPT
iptables A OUTPUT p tcp sport 80 j ACCEPT
# Aqu estn las reglas de cerrar. Como hemos comentado en la configuracin
# anterior conviene tener esto escrito por si en algn momento se relaja el
# firewall y s cambia a de DROP a ACCEPT por defecto
# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables A INPUT p tcp dport 1:1024
iptables A INPUT p udp dport 1:1024
# Cerramos otros puertos que estan abiertos
iptables A INPUT p tcp dport 3306 j DROP
iptables A INPUT p tcp dport 10000 j DROP
iptables A INPUT p udp dport 10000 j DROP
echo " OK . Verifique que lo que se aplica con: iptables L n"
# Fin del script

CMO DEPURAR EL FUNCIONAMIENTO DEL FIREWALL?


Programas tiles IPTRAF. Sin duda alguna uno de los programas ms prcticos para depurar el firewall
es iptables, ya que con el podemos observar si la conexiones se establecen o no; es un programa de
consola que es aconsejable controlar ya que muestra en tiempo real el trfico que atraviesa nuestra
mquina con todo lujo de detalles: origen/destino de ips y puertos, trfico total o trfico total segn el
interfaz de red, entre otros. Si vemos muchas conexiones simultaneas y nos perdemos, existe la
posibilidad de aplicar filtros para captar solo aquello que nos interesa.
NMAP, la herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta
de consola rpida, efectiva y con multitud de opciones. Podemos usarla desde mquinas ajenas a
nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para
hacernos una idea de que visin pueden tener los hackers de nuestro sistema.
SHELL, en el propio script del firewall podemos aadir algunas opciones para descubrir fallos de
sintaxis en las reglas.
Claro, imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el
script. Cul es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede aadir
algo as al final de cada regla:
...
iptables A INPUT s 195.55.234.2 j ACCEPT && echo " regla21 ok"
iptables A INPUT s 213.62.89.145 j ACCEPT && echo " regla22 ok"
...
Si la regla se ejecuta bien mostrar el mensaje de ok.
Otra opcin algo mas cutre sera ir eliminando o comentando reglas hasta dar con la regla que tiene la
sintaxis incorrecta.

UNIDAD XIV SERVICIO DE DIRECTORIO LDAP


QU ES LDAP?
La iniciales LDAP en ingls significa Lightweight Directory Access Protocol (LDAP); traducido al
espaol su significado es: Protocolo Ligero para Acceder al Servicio de Directorio, sta
implementacin se basa en el estndar X.500, el cual es un conjunto de estndares de redes de
computadoras de la ITU-T sobre el servicio de directorios. LDAP se ejecuta sobre TCP/IP o sobre otros
servicios de transferencia orientado a conexin; que permite el acceso a la data de un directorio
ordenado y distribuido para buscar informacin.
Habitualmente se almacena informacin de los usuarios que conforman una red de computadores,
como por ejemplo el nombre de usuario, contrasea, directorio hogar, etc. Es posible almacenar otro
tipo de informacin tal como, bebida preferida, nmero de telfono celular, fecha de cumpleaos, etc.
En conclusin, LDAP es un protocolo de acceso unificado a un conjunto de informacin sobre los
usuarios de una red de computadores.
RAZONES PARA UTILIZAR LDAP
Al utilizar LDAP se puede consolidar informacin para toda una organizacin dentro de un repositorio
central. Por ejemplo, en vez de administrar listas de usuarios para cada grupo dentro de una
organizacin, puede usar LDAP como directorio central, accesible desde cualquier parte de la red.
Puesto que LDAP soporta la Capa de conexin segura (SSL) y la Seguridad de la capa de transporte
(TLS), los datos confidenciales se pueden proteger de los curiosos.
LDAP tambin soporta un nmero de bases de datos back-end en las que se almacena la informacin.
Esto permite que los administradores tengan la flexibilidad para desplegar la base de datos ms
indicada, para el tipo de informacin. LDAP tiene una interfaz de programacin de aplicaciones (API)
bien definida, existe un nmero de aplicaciones acreditadas para LDAP, ests estn aumentando en
cantidad y calidad, las hay en distintos lenguajes de programacin, tales como C, C++, Java, Perl, PHP,
entre otros.

QU ES UN SERVICIO DE DIRECTORIO?
Un servicio de directorio (SD) es una aplicacin o un conjunto de aplicaciones que almacena y organiza
la informacin de los usuarios de una red de computadores, permitiendo a los administradores gestionar
el acceso de usuarios a los recursos sobre dicha red. Adems, los servicios de directorio actan como
una capa de abstraccin entre los usuarios y los recursos compartidos.
Los directorios tienden a contener informacin descriptiva basada en atributos y tienen capacidades de
filtrado muy sofisticada. Los directorios generalmente no soportan transacciones complicadas ni
esquemas de vuelta atrs (Roll Back) como los que se encuentran en los sistemas de bases de datos
diseados para manejar grandes y complejos volmenes de actualizaciones. Las actualizaciones de los
directorios son normalmente cambios simples.
Un servicio de directorio no debera confundirse con el repositorio de directorio, que es la base de
datos, esta es la que contiene la informacin sobre los objetos nombrados, gestionado por el servicio de
directorio. El servicio de directorio proporciona la interfaz de acceso a los datos que se contienen en
unos o ms espacios de nombre de directorio. La interfaz del servicio de directorio es la encargada de
gestionar la autenticacin de los accesos al servicio de forma segura, actuando como autoridad central
para el acceso a los recursos de sistema que manejan los datos del directorio.
Como base de datos, un servicio de directorio est altamente optimizado para lecturas y proporciona
alternativas avanzadas de bsqueda en los diferentes atributos que se puedan asociar a los objetos de un
directorio. Los datos que se almacenan en el directorio son definidos por un esquema extensible y
modificable. Los servicios de directorio utilizan un modelo distribuido para almacenar su informacin
y esa informacin generalmente est replicada entre los servidores que forman el directorio.
Los directorios estn afinados para dar una rpida respuesta a grandes volmenes de bsquedas. Estos
tienen la capacidad de replicar la informacin para incrementar la disponibilidad y la fiabilidad, al
tiempo que reducen los tiempos de respuesta. Cuando la informacin de un directorio se replica, se
pueden producir inconsistencias temporales entre las rplicas mientras esta se est sincronizando.
Hay muchas formas diferentes de proveer un servicio de directorio. Diferentes mtodos permiten
almacenar distintos tipos de informacin en el directorio, tener distintos requisitos sobre cmo la
informacin ha de ser referenciada, consultada y actualizada, cmo es protegida de los accesos no
autorizados, etc. Algunos servicios de directorio son locales, es decir, proveen el servicio a un contexto

restringido (como por ejemplo, el servicio finger en una nica mquina). Otros servicios son globales y
proveen servicio a un contexto mucho ms amplio (como por ejemplo, Internet). Los servicios globales
normalmente son distribuidos, esto significa que los datos estn repartidos a lo largo de distintos
equipos, los cuales cooperan para dar el servicio de directorio. Tpicamente, un servicio global define
un espacio de nombres uniforme que da la misma visin de los datos, independientemente de donde se
est, en relacin a los propios datos. El servicio DNS (Domain Name System) es un ejemplo de un
sistema de directorio globalmente distribuido.
QU TIPO DE INFORMACIN SE PUEDE ALMACENAR EN UN
DIRECTORIO?
En principio en un servicio de directorio se puede almacenar cualquier tipo de informacin. Como por
ejemplo, nombre, direccin de habitacin, nombre de la mascota, msica preferida, bebida favorita, etc.
Sin embargo, la informacin que se almacena es aquella que permita organizar de manera jerrquica
todos los usuarios de la red. Estructurar la informacin de los usuarios de la red es de utilidad a la hora
de restringir el acceso a los servicios y recursos de la red; Permitiendo gestionar con mayor facilidad la
red.
CMO SE ALMACENA LA INFORMACIN EN LDAP?
La informacin es ordenada en el modelo de LDAP en entradas. Una entrada es una coleccin de
atributos que tienen un nico Nombre Global Distinguido (DN). El DN se utiliza para referirse a una
entrada sin ambigedades. Cada atributo de una entrada posee un tipo y uno o ms valores. Los tipos
son normalmente palabras nemotcnicas, como cn para common name, o mail para una direccin
de correo. La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede
contener el valor Luis Mrquez. Un atributo email puede contener un valor marquezl@ucla.edu.ve.
Estas entradas estn organizadas en una estructura jerrquica en forma de rbol invertido, de la misma
manera como se estructura el sistema de archivos de UNIX. Tradicionalmente esta estructura reflejaba
los lmites geogrficos y/o organizacionales. Las entradas que representan pases aparecen en la parte
superior del rbol. Debajo de ellos, estn las entradas que representan los estados y las organizaciones
nacionales. Bajo estas, pueden estar las entradas que representan las unidades organizacionales,
empleados, impresoras, documentos o todo aquello que pueda imaginarse. La siguiente figura muestra

un rbol de directorio LDAP haciendo uso del nombramiento tradicional.

c=rectorado
ou=informtica

ou=telecomunicaciones
cn=Junior Escalona

rbol de directorio LDAP (nombramiento tradicional)


El rbol tambin se puede organizar basndose en los nombres de dominio de Internet. Este tipo de
nombramiento se est volviendo muy popular y en los actuales momentos es el ms utilizado, ya que
permite localizar un servicio de directorio haciendo uso de los DNS.
La siguiente figura muestra un rbol de directorio que hace uso de los nombres basados en dominios.
dc=ve

dc=edu

dc=ucla

ou=people

ou=users

ou=adm

cn=luis

cn=pedro

cn=root

rbol de directorio LDAP (nombramiento de Internet)


Un ejemplo del DN sera:
dn: cn=Luis Mrquez, ou=people, dc=ucla, dc=edu, dc=ve
Observe que el dn se construye de abajo hacia arriba. Al igual que se construyen los nombres en DNS.
Adems, LDAP permite controlar qu atributos son requeridos y permitidos en una entrada gracias al
uso del atributo denominado objectClass. El valor del atributo objectClass determina qu reglas de
diseo (schema rules) ha de seguir la entrada.
CMO SE REFERENCIA LA INFORMACIN EN LDAP?
Una entrada es referenciada por su nombre distinguido, que es construido por el nombre de la propia
entrada llamado Nombre Relativo Distinguido (RDN) y la concatenacin de los nombres de las entradas
que le anteceden. Por ejemplo, la entrada para luis en el ejemplo del nombramiento de Internet anterior
tiene el siguiente RDN: uid=luis y su DN sera: uid=luis,ou=people,dc=ucla,dc=edu,dc=ve. De est
manera se puede acceder a toda la informacin que se almacenada en el directorio LDAP.
CMO SE ACCEDE A LA INFORMACIN EN LDAP?
LDAP define operaciones para interrogar y actualizar el directorio. Provee operaciones para aadir,
modificar y eliminar entradas del mismo. La mayor parte del tiempo, LDAP se utiliza para buscar
informacin almacenada en el directorio. Las operaciones de bsqueda de LDAP permiten encontrar
entradas que concuerdan con algn criterio especificado dado por un filtro de bsqueda. La
informacin puede ser solicitada desde cada entrada que concuerda con dicho criterio.
Cmo lo Accede?
Por ejemplo, imagnese que quiere buscar en el subrbol del directorio que est por debajo de
dc=ucla,dc=edu,dc=ve a personas con el nombre Luis Mrquez, obteniendo la direccin de correo
electrnico de cada entrada que concuerde. LDAP permite hacer esto fcilmente. O tal vez prefiera
buscar las organizaciones que posean la cadena ucla en su nombre o posean nmero de fax. LDAP es
muy flexible y permite hacer esto y mucho ms.

CMO PROTEGE LA INFORMACIN DE ACCESOS NO


AUTORIZADOS?
Algunos servicios de directorio no proveen proteccin, permitiendo a cualquier persona acceder a la
informacin. LDAP provee un mecanismo de autentificacin para los clientes, o la confirmacin de
identidad en un servidor de directorio, facilitando el camino para un control de acceso que proteja la
informacin que el servidor posee. LDAP tambin soporta los servicios de privacidad e integridad.
CMO TRABAJA LDAP?
El servicio de directorio de LDAP est basado en el modelo cliente/servidor. Uno o ms servidores
LDAP contienen los datos que conforman la informacin del rbol del directorio (DIT). El cliente se
conecta a los servidores y les formula preguntas. Los servidores responden con una respuesta o con un
puntero donde el cliente puede obtener informacin adicional (normalmente otro servidor LDAP). No
importa a que servidor LDAP se conecte un cliente, este siempre obtendr la misma visin del
directorio; un nombre presentado por un servidor LDAP referencia la misma entrada que cualquier otro
servidor LDAP. Esta es una caracterstica muy importante del servicio global de directorio, como
LDAP.
X.500
Es un conjunto de estndares de redes de computadores de la ITU (Unin Internacional de
Telecomunicaciones) sobre servicios de directorio, entendidos estos como bases de datos de direcciones
electrnicas (o de otros tipos). El estndar se desarroll conjuntamente con la ISO como parte del
modelo de interconexin de sistemas abiertos, para usarlo como soporte del correo electrnico X.400.
Los protocolos definidos por X.500 incluyen:
Protocolo de acceso al directorio (DAP)
Protocolo de sistema de directorio
Protocolo de ocultacin de informacin de directorio
Protocolo de gestin de enlaces operativos de directorio.

Dentro de la serie X.500, la especificacin que ha resultado ser la ms difundida no trata de protocolos
de directorio, sino de certificados de clave pblica X.509.
El protocolo LDAP fue creado como una versin liviana de X.500 y termin por reemplazarlo. Por esta
razn algunos de los conceptos y estndares que utiliza LDAP provienen de la serie de protocolos
X.500.
Tcnicamente, LDAP es un protocolo de acceso a directorio para el servicio de directorio X.500, del
servicio de directorio de OSI. Inicialmente, los cliente LDAP accedan a travs de puertas de enlace al
servicio de directorio X.500. Esta puerta de enlace ejecutaba LDAP entre el cliente y la puerta de
enlace, y el Protocolo X.500 de Acceso al Directorio (DAP) entre la puerta de enlace y el servidor
X.500. DAP es un protocolo extremadamente pesado que opera sobre una pila protocolar OSI completa
y requiere una cantidad significativa de recursos computacionales. LDAP est diseado para operar
sobre TCP/IP proporcionando una funcionalidad similar a la de DAP, pero con un costo muchsimo
menor. Aunque LDAP se utiliza todava para acceder al servicio de directorio X.500 a travs de puertas
de enlace, hoy en da es ms comn implementar LDAP directamente en los servidores X.500.
El demonio autnomo de LDAP, o SLAPD, puede ser visto como un servidor de directorio X.500
ligero. Es decir, no implementa el DAP X.500, sino un subconjunto de modelos de X.500.
Es posible replicar datos desde un servidor de directorio LDAP hacia un servidor DAP X.500. Esta
operacin requiere una puerta de enlace LDAP/DAP. OpenLDAP no suministra dicha puerta de enlace,
pero el demonio de replicacin que posee puede ser usado para la replicacin, como si de una puerta de
enlace se tratase.
DIFERENCIAS ENTRE LDAP V2 Y V3
LDAPv3 fue desarrollado en los aos 90 para reemplazar a LDAPv2. LDAPv3 incorpora las siguientes
caractersticas a LDAP:

Autentificacin fuerte haciendo uso de SASL (Simple Authentication and Security Layer)

Proteccin de integridad y confidencialidad haciendo uso de TLS (SSL), Transport Layer


Security (Secure Sockets Layer)

Internacionalizacin gracias al uso de Unicode

Remisiones y continuaciones

Descubrimiento de esquemas

Extensibilidad (controles, operaciones extendidas y ms)

Como LDAPv2 difiere significativamente de LDAPv3, la interaccin entre ambas versiones puede ser
un poco problemtica. Es recomendable no utilizar la versin de

LDAPv2, por lo que en la

implementacin de OpenLDAP viene deshabilitado por omisin.

QU ES SLAPD?
SLAPD es un servidor de directorio LDAP. Es una de las tantas implementaciones de LDAP en
Software Libre. Esta versin es muy popular y se puede decir que es la ms implementada; vale la pena
mencionar que existen varias implementaciones de LDAP en software propietario, como por ejemplo
implementaciones de SUN, IBM, etc.
La versin 3 de LDAP

Soporta LDAP sobre IPv4, IPv6 y Unix IPC.

Tiene soporte de autentificacin fuerte gracias al uso de SASL. La implementacin SASL de


SLAPD hace uso del software Cyrus SASL, el cual soporta un gran nmero de mecanismos de
autentificacin, como: DIGEST-MD5, EXTERNAL, y GSSAPI.

Provee protecciones de privacidad e integridad gracias al uso de TLS o SSL. La implementacin


TLS de SLAPD hace uso del software OpenSSL.

Puede ser configurado para restringir el acceso a la capa de socket basndose en la informacin
topolgica de la red. Esta caracterstica hace uso de los TCP wrappers (Herramienta simple que
sirve para monitorear y controlar el trfico que llega por la red).

Provee facilidades de control de acceso muy potentes, permitindole controlar el acceso a la


informacin de su(s) base(s) de datos. Puede controlar el acceso a las entradas basndose en la
informacin de autorizacin de LDAP, en la direccin IP, en los nombres de dominio y otros
criterios. SLAPD soporta tanto el control de acceso a la informacin dinmico como esttico.

Soporta Unicode y etiquetas de lenguaje.

Viene con una serie de backends para diferentes bases de datos. Estos incluyen DBD, un
backend de una base de datos transaccional de alto rendimiento; LDBM, un backend ligero
basado en DBM; SHELL, una interface para scripts de shell; y PASSWD, un backend simple
para el archivo passwd. El backend BDB hace uso de Sleepcat Berkeley DB. LDBM utiliza
cualquiera de las siguientes: Berkeley DB o GDBM.

Se puede configurar para servir a mltiples bases de datos al mismo tiempo. Esto significa que
un nico servidor SLAPD puede responder a peticiones de diferentes porciones lgicas del rbol
de LDAP, haciendo uso del mismo o distintos backends de bases de datos.

Si necesita ms personalizacin, SLAPD le permite escribir sus propios mdulos fcilmente.


SLAPD consiste en dos partes diferentes: un frontend que maneja las comunicaciones
protocolares con los clientes LDAP; y mdulos que manejan tareas especficas como las
operaciones con las bases de datos. Debido a que estas dos piezas se comunican a travs de una
API bien definida, puede escribir sus propios mdulos, que extendern SLAPD de mltiples
maneras. Tambin existen numerosos mdulos programables de bases de datos. Estos permiten
a SLADP acceder a fuentes de datos externos haciendo uso de lenguajes de programacin
populares (Perl, shell, SQL y TCL)

Hace uso de hilos para obtener alto rendimiento. Un proceso nico multihilo maneja todas las
peticiones entrantes haciendo uso de una piscina de hilos. Esto reduce la carga del sistema a la
vez que provee alto rendimiento.

Se puede configurar para que mantenga copias de la informacin del directorio. Este esquema
de replicacin, un nico maestro/mltiples esclavos, es vital en ambientes con un volumen alto
de peticiones, donde un nico servidor SLAPD no podra proveer la disponibilidad ni la
confiabilidad necesarias. SLAPD incluye tambin un soporte experimental para la replicacin de
mltiples maestros. SLAPD soporta dos mtodos de replicacin: Sync LDAP y SLURP (servidor
de replicacin LDAP).

Puede ser configurado como un servicio proxy de cach LDAP.

Es altamente configurable a travs de un nico archivo de configuracin, que permite modificar

todo aquello que se necesite cambiar. Las opciones por omisin son razonables, lo que facilita
mucho el trabajo.
SASL
Simple Authentication and Security Layer (capa de seguridad y autenticacin simple). Es un framwork
para manejar la autenticacin y autorizacin en protocolos de internet. Este separa los mecanismos de
autenticacin de los protocolos de la aplicacin. Como SASL slo se maneja la autenticacin se
requieren otros mecanismos como por ejemplo TLS para cifrar el contenido que se transfiere.
Los protocolos definen su representacin de intercambios SASL con un perfil. Un protocolo tiene un
nombre de servicio como "LDAP" en un registro compartido con GSSAPI (Generic Security Services
Application Programming Interface) y KERBEROS.
Entre los protocolos que ahora mismo usan SASL se incluyen IMAP, LDAP, POP3, SMTP y XMPP.
SLDAP (SERVIDOR LDAP) EN DEBIAN
Antes de comenzar a describir el proceso de instalacin del LDAP se debe tener en cuenta lo siguiente:

Al finalizar la instalacin y configuracin LDAP estar en la capacidad de autenticar usuarios


ante el servicio de directorio. La versin que se utilizar es la 2.3.30-5+etch1; sta es la ltima
versin estable para el momento de la realizacin de este material.

Se utilizar el dominio ucla.edu.ve a lo largo de todo el material.

Pasos para la instalacin de SLAPD


Ejecute el siguiente comando: #aptitude install slapd ldap-utils y confirme la ejecucin del comando.
Se debe introducir la clave del administrador del LDAP y confirmar la clave.
Reconfiguracin del paquete slapd
Ejecutamos el siguiente comando: #dpkg-reconfigure slapd. El objetivo es reconfigurar el slapd.

Configuramos el dominio

Configuramos el nombre de la organizacin

Configuramos el password del administrador en LDAP para ello confirmamos el password del
administrador.
Elegimos la base de datos.

Es recomendable seleccionar que no se remueva la base de datos cuando se desinstale el SLAPD.

Como estamos reconfigurando el SLAPD haremos una copia de la base de datos anterior. Tal y como
recomienda la documentacin, no daremos soporte para la versin 2 de LDAP.

Y con esto terminamos la instalacin del LDAP


Pruebas de la instalacin
El servidor est escuchando por el puerto correspondiente: netstat -tpua | more.
El resultado del comando anterior debe ser el siguiente:

Haremos una conexin al LDAP

El resultado del comando anterior debe ser algo como

ADMINISTRACIN DE USUARIOS
En este apartado se mostrar como agregar un usuario al LDAP utilizando para ello los ldif (LDAP
Data Interchange Format). A continuacin se mostrar cual es la estructura de los ldif. ldif para la

creacin de una unidad organizacional people.


El nombre del archivo es people.ldif
dn: ou=people,dc=ucla,dc=edu,dc=ve
ou: people
objectclass: organizationalUnit
Creacin de los archivos ldif
ldif para la creacin de una unidad organizacional group. El nombre del archivo es group.ldif
dn: ou=group,dc=ucla,dc=edu,dc=ve
ou: group
objectclass: organizationalUnit
ldif para la creacin de un grupo users. El nombre del archivo es users.ldif
dn: cn=users,ou=group,dc=ucla,dc=edu,dc=ve
objectclass: posixGroup
objectclass: top
cn: users
userPassword: {crypt}*
gidNumber: 100
Agregar los contenidos de los ldif
Para agregar los contenidos de los ldif al LDAP se ejecutan los siguientes comandos:
#dapadd -x -W -D "cn=admin,dc=ucla,dc=edu,dc=ve" -f people.ldif
#ldapadd -x -W -D "cn=admin,dc=ucla,dc=edu,dc=ve" -f group.ldif
#ldapadd -x -W -D "cn=admin,dc=ucla,dc=edu,dc=ve" -f users.ldif

Al ejecutar estos comandos te pedir el password del administrador LDAP y el resultado de los mismos
se muestra en la siguiente imagen:

Para revisar el resultado de la insercin ejecutamos el siguiente comando:


#ldapsearch -x -b "dc=ucla,dc=edu,dc=ve"

Se puede confirmar en la salida del comando anterior que la insercin de los anteriores ldif estn
presentes en la estructura del rbol del LDAP
Agregar Usuarios
Se debe crear un ldif como se muestra a continuacin: Nombre del archivo ldif marquezl.ldif
dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
uid: marquezl
cn: Luis Mrquez
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$HnC/X/r4$VknfcQlq24qGgdnDVhDIp1
shadowLastChange: 14001
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 100
homeDirectory: /home/marquezl
gecos: Luis Mrquez
Para agregar el nuevo usuario al nuevo rbol de LDAP se debe ejecutar el siguiente comando:
#ldapadd -x -W -D "cn=admin,dc=ucla,dc=edu,dc=ve" -f marquezl.ldif

Para revisar el resultado de la insercin ejecutamos el siguiente comando:


#ldapsearch -x -b "dc=ucla,dc=edu,dc=ve"

Eliminar un Usuario
Para eliminar un usuario del rbol del directorio se debe crear un archivo del tipo ldif como se muestra
a continuacin:

dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
changetype: delete
Ejecutamos el siguiente comando para eliminar un usuario del rbol LDAP
#ldapmodify -x -D "cn=admin,dc=ucla,dc=edu,dc=ve" -W -f boorrar.ldif
Para revisar el resultado de la eliminacin ejecutamos el siguiente comando

#ldapsearch -x -b "dc=ucla,dc=edu,dc=ve"

Agregar atributos
Para agregar un atributo se debe crear un ldif como se muestra a continuacin. El nombre del ldif es
add.ldif
dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
changetype: add

objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Luis Mrquez
sn: marquezl
telephonenumber: 04127900022
Se ejecuta la siguiente sintaxis

Para verificar el resultado ejecutamos la siguiente sintaxis

Modificar un atributo
Para modificar un atributo se debe crear un ldif como se muestra a continuacin. El nombre ldif es
modify.ldif
dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
changetype: modify
replace: telephonenumber
telephonenumber: 04164716421
Se ejecuta la siguiente sintaxis:

Eliminar un atributo
Se debe crear un ldif como el que se muestra a continuacin, el nombre del archivo ldif es del.ldif
dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
changetype: modify
delete: telephonenumber
Se ejecuta la siguiente sintaxis:

Para verificar el resultado ejecutamos la siguiente sintaxis:

Manejo de Contrasea
Primero se debe construir un password, para ello utilizaremos el comando slappasswd, el resultado lo
insertaremos en un archivo del tipo ldif para modificar el atributo password.
#slappasswd -h {CRYPT}
Ldif
dn: uid=marquezl,ou=people,dc=ucla,dc=edu,dc=ve
changetype: modify
replace: userPassword
userPassword: {CRYPT}MfvpC3Qt5OkmQ
La sintaxis se muestra a continuacin:

ADMINISTRACIN DE GRUPOS
En ldap podemos hacer un manejo de los grupos de usuarios, tal cual se puede hacer en el sistema
operativo *nix, as que el mecanismo para su manejo es el mismo que los grupos de sistemas. Debemos
crear un grupo y luego asociar usuarios a los mismos.
Crear los grupos se recomienda por razones de estndares. Crear un unidad organizativa OU, y debajo
de ella colocar todos los grupos. Esta unidad es llamada Groups, as que luego de crearla creamos
debajo de ella todo los grupos.
Para crear los grupos debemos asociarle a los mismo la clase de objeto posixGroup, el cual me indica
que este es un grupo de sistema operativo, la clase de objeto posixGroup consta de tres atributos que
son los siguientes :

Nombre del Atributo

Requerido

Comentario

cn

Si

Nombre del Grupo

gidNumber

Si

Identificador numrico nico del


Grupo

memberUid

No

Uid

de

los

usuarios

pertenecientes a este grupo.

Para la creacin de grupos se puede crear un archivo LDIF, como el siguiente :


dn: cn=administradores,ou=groups,dc=universidad,dc=edu,dc=ve
cn: administradores
gidNumber: 10100
memberUid: aperez
memberUid: zrodriguez
objectClass: top
objectClass: posixGroup
Aqu se crea un grupo llamado administradores, en el cual el gidNumber es 10100 (debe ser un
numero distinto para cada grupo), y los miembros de ese grupo son los usuarios que poseen el Uid
aperez y zrodriguez.
Para agregar o eliminar usuarios de los grupos, basta con editar el registro del grupo y agregar o
eliminar usuarios utilizando el atributo memberUid.
AUTENTICACIN DE CLIENTES EN LDAP
Una vez configurado el servidor de LDAP para almacenar la informacin del directorio, podemos
configurar todos los equipos de nuestra red (servidores y clientes) para realizar la autenticacin en el
servidor LDAP.
En principio, la informacin administrativa que tiene sentido centralizar en un servicio LDAP son las
cuentas de usuario (incluyendo contraseas) y cuentas de grupo. En conjunto, la informacin
almacenada en ambos tipos de cuentas permite autentificar a un usuario cuando ste desea iniciar una
sesin interactiva en un sistema Linux y, en el caso de que la autenticacin sea positiva, crear el
contexto de trabajo inicial (es decir, el proceso shell inicial) para ese usuario. Manteniendo ambos tipos
de cuentas en el directorio permitira una gestin completamente centralizada de los usuarios del

dominio.
Internamente, este proceso de autenticacin y creacin del contexto inicial que Linux lleva a cabo
cuando un usuario desea iniciar una sesin interactiva utiliza dos bibliotecas distintas:

PAM (Pluggable Authentication Module) es una biblioteca de autenticacin genrica que


cualquier aplicacin puede utilizar para validar usuarios, utilizando por debajo mltiples
esquemas de autenticacin alternativos (archivos locales, Kerberos, LDAP, etc.). Esta biblioteca
es utilizada por el proceso de "login" para averiguar si las credenciales tecleadas por el usuario
(nombre y contrasea) son correctas.

NSS (Name Service Switch) presenta una interfaz genrica para averiguar los parmetros de una
cuenta (como su UID, GID, shell inicial, directorio de conexin, etc.), y es utilizada por el
proceso de "login" para crear el proceso de atencin inicial del usuario.

La ventaja fundamental de ambas bibliotecas consiste en que pueden reconfigurarse dinmicamente


mediante archivos, sin necesidad de recompilar las aplicaciones que las utilizan. Por tanto, lo nico que
necesitamos es reconfigurar ambas para que utilicen el servidor LDAP adems de los archivos locales
(/etc/passwd, entre otros.) de cada equipo.
En Debian GNU/Linux la instalacin y configuracin de los clientes la realizaremos directamente en
los archivos de configuracin. Cuando el asistente de Debian pregunte la configuracin cancelar el
mismo. Realizar los pasos siguientes:

Instalar el paquete libnss-ldap, mediante la ejecucin en la consola de #aptitude install libnssldap, el Name Service Switch permite a los sistemas operativos *nix, el reemplazo de los
archivos de configuracin de los usuarios (por ejemplo: /etc/passwd, /etc/group), por bases de
datos de usuarios centralizadas, en este caso se instala la librera con soporte para LDAP, que
ser el sistema que utilizaremos.

Instalar el paquete

libpam-ldap, mediante la ejecucin en la consola de #aptitude install

libpam-ldap, este permitir la autenticacin de los usuarios del sistema operativo en base de
datos ldap.

Instalar el paquete nscd , el cual permitir mantener en el cache del equipo las bsquedas de los
registros que realiza el nss, con el fin de evitar tener que realizar esas consultas a los servidores

y ahorrar tiempo y trfico en la red.


Configuracin de Clientes
Editar el archivo /etc/libnss-ldap.conf, y se configurar lo siguiente:

base dc=universidad,dc=edu,dc=ve, esta es la base de bsqueda de nuestro directorio LDAP.

ldap_version 3 , con lo cual nuestros clientes utilizarn la versin 3 de LDAP.

bind_policy soft, esto nos permitir que cuando el servidor LDAP no est disponible, poder
continuar con el proceso de autenticacin del sistema utilizando los archivos locales.

ssl start_tls, el servidor intentar hacer la conexin utilizando tls.


tls_checkpeer no, esta opcin no chequear el certificado del servidor (til cuando se utilizan
certificados generados localmente).

Editar el archivo /etc/nssswitch.conf, y se configurar lo siguiente:

passwd files ldap, con lo cual la informacin de los usuarios se buscar primero en el archivo /
etc/passwd y luego en el servidor LDAP.

group

files ldap, con lo cual la informacin de los grupos se buscar primero en el archivo

/etc/group y luego en el servidor LDAP.


Editar el archivo /etc/pam_ldap.conf, y se configurar lo siguiente:

base dc=universidad,dc=edu,dc=ve, esta es la base de bsqueda de nuestro directorio LDAP.

ldap_versin 3, con lo cual nuestros clientes utilizarn la versin 3 de LDAP.

bind_policy soft, esto nos permitir que cuando el servidor LDAP no est disponible poder
continuar con el proceso de autenticacin del sistema utilizando los archivos locales.

ssl start_tls, el servidor intentar hacer la conexin utilizando tls.

tls_checkpeer no, esta opcin no chequear el certificado del servidor (til cuando se utilizan
certificados generados localmente).

Editar el archivo /etc/pam.d/common-account, y configurar lo siguiente:

account sufficient pam_unix.so nullok_secure.

account sufficient pam_ldap.so.

account required pam_permit.so

Editar el archivo /etc/pam.d/common-auth, y configurar lo siguiente:

auth sufficient pam_ldap.so.

auth required pam_unix.so nullok_secure use_first_pass.

Editar el archivo /etc/pam.d/common-password, y configurar lo siguiente:

password sufficient pam_ldap.so.

password required pam_unix.so nullok obscure min=4 max=8 md5

Editar el archivo /etc/pam.d/common-session, y configurar lo siguiente:

session optional pam_foreground.so.

session sufficient pam_ldap.so.

session required pam_unix.so.

session required pam_mkhomedir.so skel=/etc/skel/

Probar la configuracin mediante los comandos: # getenv passwd o getenv group, esto debe mostrar los
usuarios que estan en el servidor LDAP.
LISTAS DE ACCESO EN LDAP
La base de datos LDAP, contiene informacin sensible, por ejemplo el atributo userPassword contiene
las contraseas de los usuarios, pero tambin existe otro tipo de informacin como datos personales de
las personas que deben ser resguardados.
Para controlar la autorizacin en los servidores LDAP se utilizan ACLs (Listas de Control de Acceso),
cuando un servidor LDAP procesa un requerimiento de un cliente evala los permisos de acceso del
mismo a la informacin solicitada. Esta evaluacin verifica secuencialmente cada una de las ACLs,
ubicadas en los archivos de configuracin y aplica las reglas apropiadas al requerimiento.

La configuracin de las ACLs, se pueden realizar de dos maneras:


1. Directamente en el archivo de configuracin del servidor LDAP, /etc/ldap/slapd.conf, y pueden
ser colocadas al principio del archivo con lo cual afectaran a todas las bases de datos que posee
el servidor.
2. Dentro de la directiva backend, con lo cual solo afectar a la base de datos especifica.
Cuando se poseen muchas reglas de acceso, es recomendable colocar en un archivo aparte y utilizar la
sintaxis include /etc/ldap/nombredearchivo, con lo cual se mantendr el archivo slapd.conf menos
complejo. Las directivas de acceso tienen la siguiente sintaxis:
access to [recurso]
by [quien] [tipo de privilegio]
by [quien] [tipo de privilegio]
Las directivas access pueden tener uno o ms by, as mismo pueden permitir accesos por DN,
atributos, filtros o una combinacin de estos.
Accesos utilizando DN
Para restringir un acceso a un DN en particular, se debe utilizar una regla como la siguiente: access to
dn="uid=pedro,ou=Users,dc=universidad,dc=edu,dc=ve" by * none. El by * none, rechaza los accesos
a todos.
Las restricciones a los DN, pueden ser especificadas de la siguiente manera :

dn.base: Restringe el acceso para un DN especifico, es la opcin por defecto

dn.exact y dn.baselevel: son sinnimos de dn.base.

dn.one: restringe el acceso a la siguiente entrada que este despues del DN especificado.

dn.subtree: restringe el acceso a todo el rbol debajo del DN especificado.

Las ACLs, tambin aceptan expresiones regulares lo cual incrementa el nivel de complejidad que se
puede utilizar para formular las mismas. A continuacin un ejemplo utilizando expresiones regulares:
access to dn.regex="uid=[^,]+,ou=Users,dc=universidad,dc=edu,dc=ve" by * none

En el ejemplo anterior se restringe el acceso a cualquier DN, con la expresin uid=cualquier


cosaou=Users,dc=universidad,dc=edu,dc=ve, donde cualquier cosa debe ser un texto con al menos un
carcter y sin comas (,), las expresiones regulares permiten incrementar en gran medida la utilidad de
las listas de acceso.
CONEXIONES SEGURAS
Lo primero que se debe evaluar es la seguridad de la red. Los clientes se conectan al servidor LDAP a
travs de las interfaces de red, y tambin las respuestas del servidor se transfieren a travs de la red. El
protocolo LDAP por defecto recibe y enva los datos en texto plano, lo cual tiene algunas ventajas entre
las cules tenemos :

Facilidad de configurar y mantener.

El servicio funciona ms rpido, al no tener que transformar los datos cifrados, lo cual siempre
provee de una carga adicional de procesamiento.

Estas ventajas tienen un costo de seguridad, otros dispositivos en la red pueden interceptar los datos y
leer todo el contenido de los mismos, mientras ms grande es una red esto se convierte en una amenaza
mayor.
Para evitar eso, los servidores LDAP implementan SSL (Secure Sockets Layer) y TLS (Transport
Layer Security), ambos mecanismos son utilizados para cifrar los datos antes de transmitirlos por la
red. SSL y TLS son similares y son ampliamente utilizados, la principal diferencia es que TLS es mas
flexible que SSL.
OpenLDAP provee dos mecanismos para cifrar el trfico en la red, el primero es escuchar por un
puerto especfico (puerto 636 por defecto), lo que hace que las comunicaciones en ese puerto sean
cifradas, este mecanismo fue introducido en LDAP v2, y se considera un mtodo en desuso. El segundo
mecanismo es parte de los estndares de LDAP v3, el cual permite a los clientes conectarse a travs de
un puerto (389 por defecto), para conexiones cifradas o en texto plano y ser el cliente el que
seleccionar el tipo de conexin que desea. El uso de certificados permite no solo cifrar la informacin
entre el servidor y los clientes, sino tambin garantizar que el servidor al cual se conecta el cliente es
autentico.
Actualmente existen autoridades para emitir certificados conocidos como CA (Certification Authority),

los cuales a travs de un procedimiento de recoleccin de informacin y un pago, emiten un certificado


que tiene validez por un tiempo especfico y los servidores y los clientes reconocen el mismo.
Existe tambin la posibilidad de crear los certificados para uso de las organizaciones o individuos de
manera interna, para esto de debe generar un CA con la cual se firmarn los certificados que se emitirn
para los clientes y servidores. Estos certificados no sern reconocidos como vlidos fuera de la
organizacin que los emite, por lo cual solo se recomienda para uso interno.
Para crear una CA, con el fin de firmar nuestros propios certificados, se debe instalar el paquete
openssl, el cual en Debian GNU/Linux, instala un script que permite la creacin de un CA, el mismo
queda instalado en la ruta /usr/lib/ssl/misc/CA.pl, debe ejecutarse de la siguiente manera: #/usr/lib/ssl/
misc/CA.pl -newca

Se mostrar un mensaje con lo siguiente, CA certificate filename (or enter to create), en donde
hay que pulsar enter.Luego de generar la clave del certificado preguntar por una contrasea
para el mismo, Enter PEM pass phrase:

Luego solicitar una serie de informacin sobre la organizacin, y finalmente terminar de crear
el certificado para la CA.

Al finalizar tendremos un directorio llamado demoCA, con los certificados.

Luego de esto se tendr que generar los certificados para el servidor LDAP, lo cual ser de la siguiente
manera:

Ejecutar /usr/lib/ssl/misc/CA.pl -newreq desde una consola luego se repetirn los pasos 2 y 3 de
la creacin de la CA.

Al finalizar tendremos dos archivos llamados newkey.pem (Clave Privada) newreq.pem


(Certificado).

Luego tenemos que firmar los certificados con el CA generado anteriormente,

para

esto

ejecutamos desde la consola /usr/lib/ssl/misc/CA.pl -signreq, preguntar la contrasea de la CA


y luego tendremos dos archivos, newkey.pem, el cual contiene la clave privada y newcert.pem el
cual contiene el certificado firmado.

Se remueve la contrasea que tiene el certificado ejecutando desde la consola el comando

#openssl rsa < newkey.pem > clearkey.pem

Luego de esto copiamos los archivos clearkey.pem y newkey.pem a un directorio por


conveniencia por ejemplo /etc/ldap/ssl.

Instalar el certificado de la CA, para hacer esto copiamos el archivo cacert.pem a /usr/share/cacertificates/miCA.crt, editar el archivo /etc/ca-certificates.conf, y colocar al final del archivo
miCA.crt, y ejecutar desde la consola #update-ca-certificates.

Agregar en el archivo de configuracin de LDAP, para la utilizacin de los certificados y que el


mismo corra en modo SSL/TLS, la configuracin quedara de la siguiente manera:
TLSCACertificatePath /etc/ssl/certs/
TLSCertificateFile

/etc/ldap/clearkey.pem

TLSCertificateKeyFile /etc/ldap/newkey.pem
Luego de esto el servidor LDAP estar ejecutndose con soporte SSL/TLS.
MLTIPLES DIRECTORIOS RPLICAS Y CACHE
En entornos de grandes redes y servidores LDAP con grandes base de datos, se requiere mantener ms
de un servidor LDAP, y esto se realiza mediante el demonio sluprd. El acrnimo slurpd significa:
Standalone LDAP Update Replication Daemon y su misin es propagar los cambios de una base de
datos slapd hacia otra. Si slapd est configurado para producir logs de replicacin, slurpd los lee y
enva los cambios a las instancias slapd esclavas a travs del protocolo LDAP. slurpd se arranca,
normalmente, en el arranque del sistema.
Una vez arrancado, slurpd normalmente hace un fork de si mismo y se independiza de la tty que lo ha
llamado, luego lee el log de replicacin (dado bien por la directiva replogfile del archivo de
configuracin de slapd, bien por la opcin -r de la lnea de comandos). Si el archivo log de
replicacin no existe o est vaco, slurpd se duerme. Despus, cada cierto tiempo, se despierta y
verifica si hay cambios que propagar.
Cuando slurpd encuentra cambios a propagar hacia las instancias slapd esclavas, bloquea el log de
replicacin, hace una copia privada del mismo, libera el bloqueo anteriormente puesto y crea un fork de
si mismo para rplica de slapd que ha de ser actualizada. Cada proceso hijo se asocia con el demonio

slapd esclavo, y enva los cambios.


El funcionamiento es el siguiente:

El cliente LDAP enva una modificacin LDAP al slapd esclavo.

El slapd esclavo devuelve una remisin hacia el cliente LDAP, referenciandolo hacia el servidor
slapd maestro.

El cliente LDAP enva la operacin de modificacin LDAP hacia el slapd maestro.

El slapd maestro realiza la operacin de modificacin, escribe los cambios en su archivo log de
replicacin y devuelve un cdigo de xito hacia el cliente.

El proceso slurpd verifica que se ha aadido una nueva entrada al archivo log de replicacin, lee
la entrada del log de replicacin y enva el cambio hacia el servidor slapd esclavo va LDAP.

El servidor slapd esclavo realiza la operacin de modificacin y un cdigo de xito hacia el


proceso slurpd.
CONFIGURACIN DE SERVIDORES ESCLAVOS LDAP

La configuracin de servidores ldap esclavos se realiza de la siguiente forma: en el archivo de


configuracin del servidor maestro se colocar:
replicauri=ldap://esclavo.universidad.edu.ve:389
binddn="cn=replicador,dc=universidad,dc=edu,dc=ve"bindmethod=simple credentials=replicador
replogfile /var/lib/ldap/replog
En

el

archivo

de

configuracin

del

servidor

esclavo,

lo

siguiente:

updatedn

"cn=replicador,dc=universidad,dc=edu,dc=ve" updateref "ldap://maestro.universidad.edu.ve"

PROXY LDAP
Un servidor proxy ldap acta como un intermediario entre los clientes y los servidores que poseen los
datos, y son de gran utilidad cuando se tienen gran cantidad de servidores y se requiere agrupar en uno
solo.

Configuracin de un servidor Proxy LDap

Ejemplo de configuracin de servidor proxyldap


Editar el archivo /etc/ldap/slapd.conf y colocar lo siguiente:

database meta, el tipo de base de datos a utilizar.

suffix "dc=reacciun,dc=ve", la base del directorio proxy.

uri "ldap://ldap.universidad.edu.ve/dc=universidad,dc=reacciun,dc=ve"

suffixmassage "dc=universidad,dc=reacciun,dc=ve" "dc=universidad,dc=edu,dc=ve"

UNIDAD XV SERVICIO DE CORREO

INTRODUCCIN
La historia del correo electrnico en Internet, comenz a principios de 1970, cuando los primeros
mensajes fueron enviados a travs de ARPANET (Advanced Research Projects Agency Network), el
predecesor de la Internet que hoy se conoce. Con el desarrollo de Internet, el correo electrnico se ha
convertido en la aplicacin ms utilizada de la misma.
En sus comienzos el envo de correos electrnicos fue relativamente simple, y generalmente consista
en mover archivos desde un servidor a otro. Con el desarrollo de la red, el correo evoluciona a la
compleja aplicacin que conocemos hoy en da.
PROTOCOLO SMTP
Simple Mail Transfer Protocol (SMTP) es el estndar de facto para el correo electrnico que
actualmente es utilizado en la Internet. Formalmente fue definido en el RFC 821 y luego modificado en
el RFC 1123. El protocolo es ampliamente utilizado hoy en dia y es formalmente denominado SMTP
extendido (ESMTP), el cual es definido en el RFC 2821.
El protocolo SMTP es utilizado en los servidores para enviar y recibir mensajes de correo electrnico, a
diferencia de los usuarios que utilizan SMTP nicamente para el envo de mensajes. Para la recepcin
de mensajes los clientes utilizan el Post Office Protocol (POP) o el Internet Message Access Protocol
(IMAP).
SMTP es relativamente simple. Es un protocolo basado en transferencias de textos y posiblemente otros
objetos codificados, en el cual uno o mas destinatarios de un mensaje pueden ser especificados. El
mensaje es transferido a un servidor remoto utilizando un procedimiento de preguntas y respuestas
entre el cliente y el servidor. Se utilizan para esta operacin clientes de correo electrnicos
denominados MUA (Mail User Agent) y servidores de relay MTA (Mail Transport Agent) que pueden
actuar como un cliente SMTP.
Un cliente de correo conoce cual es su servidor de correo saliente a travs de la configuracin del
mismo. Un servidor de envio de correo de clientes determina a cual servidor SMTP debe conectarse
para enviar el correo, para esto utiliza el registro de DNS MX (Mail eXchange), para cada destinatario

del correo.
El cliente SMTP inicia una conexin TCP al puerto 25 del servidor (puerto estndar). El protocolo
SMTP utiliza el mtodo de envo de mensajes un servidor dependiendo de la demanda de los clientes.
Para recibir mensajes de un servidor SMTP en los clientes otros protocolos como POP3 e IMAP son
utilizados.
Servidores SMTP saliente
Un cliente de correo electrnico requiere un nombre o una direccin IP de un servidor SMTP como
parte de su configuracin. El servidor debe enviar el mensaje al destinatario en lugar del cliente. Esta
configuracin permite el diseo de diferentes polticas y redes. Usuarios finales conectados a Internet
pueden utilizar los servicios de un proveedor de correo electrnico, que no necesariamente es el mismo
del ISP (Internet Service Provider). En un principio la red de origen de los clientes era considerada
como el filtro para aceptar o no el correo. Actualmente se utilizan otros mecanismos como la
autenticacin de clientes para verificar la identidad de los mismos.
Ejemplo de Comunicaciones del Protocolo SMTP
Despus de establecer la conexin entre el remitente (el cliente) y el destinatario (el servidor), se
desarrolla una sesin SMTP con el siguiente dilogo. Las instrucciones del cliente contienen el prefijo
C y las del servidor S.
#telnet smtp.dominio.com 25
El comando establece una conexin SMTP, desde la mquina que enva el correo al servidor de correo
que se encuentra escuchando por nuevas conexiones en el puerto 25. Por convenciones, el servidor
SMTP saluda a los clientes identificados con el nombre de dominio calificado, en el ejemplo la
computadora del cliente (cliente.dominio.com), ha determinado que smtp.dominio.com es un
serServidor Proxy de Aplicacin
Introduccin
Un servidor proxy-cache tiene bsicamente dos funciones, como proxy acta como
intermediario en una transaccin Web, el acepta la peticin del cliente, la procesa y luego reenva la
solicitud al servidor original, como servidor de cache almacena el contenido de las solicitudes de los
clientes para su posible uso de nuevo, cuando existe otra solicitud del mismo contenido el servidor
devuelve el contenido del cache, sin tener que contactar al servidor de nuevo.

Un servidor proxy-cache puede ser utilizada por las siguientes razones :


Usar menos ancho de banda de la conexin a Internet.
Reducir el tiempo de carga de las paginas Web.
Proteger los equipos de la red interna.
Prever que los usuarios acceden a sitios prohibidos.
Generar estadsticas del trafico de la red y por usuario.
Asegurar que solo usuarios autorizados pueden conectarse a Internet.vidor de correo para

dominio.com. Esto se realiza leyendo los registros MX del DNS.


S: 220 smtp.dominio.com ESMTP
C: HELO cliente.dominio.com
S: 250 Hello cliente.dominio.com, I am glad to meet you
C: MAIL FROM:<jose@dominio.com>
S: 250 Ok
C: RCPT TO:<maria@dominio.com>
S: 250 Ok
C: RCPT TO:<pedro@dominio.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Jose" <jose@dominio.com>
C: To: Maria <maria@dominio.com>
C: Cc: pedro@dominio.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Prueba
C:
C: Hola Maria.

C: Este es un mensaje de prueba.


C: Saludos,
C: Jose
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{El servidor cierra la conexion}

SMTP-AUTH
Es una extensin del SMTP, que incluye una verificacin de los clientes, durante el proceso de envos
de correos electrnicos. Servidores que soportan SMTP-AUTH pueden ser configurados para requerir
que los clientes usen esta extensin en el proceso de envo a los clientes.
SMTP-AUTH provee mecanismos de control de accesos que pueden usarse para legitimar los usuarios
y enviar los correos o denegar los no autorizados. SMTP-AUTH es considerado una mejora de
seguridad sobre el SMTP sin autenticar.
Servidores SMTP
Existen actualmente una gran cantidad de servidores SMTP. Entre los mas utilizados se pueden
encontrar Sendmail, Exim y Postfix. En este documento se utilizar Postfix como servidor SMTP.
Servidor SMTP Postfix
Postfix fue escrito por Witse Venema, y su cdigo estuvo disponible como software abierto en
Diciembre de 1998. Fue un proyecto financiado por IBM en su desarrollo inicial. Las caractersticas
principales de Postfix son:

Estabilidad: Postfix se comporta de manera adecuado en situaciones de sistemas al limite, al


igual que en sistemas con entornos simples. Por ejemplo, Postfix permite recuperarse de

sistemas que estn corriendo con disco o memorias sin espacios disponibles. Al detectar estas
condiciones, Postfix permite al sistema recuperarse antes de continuar sus operaciones.

Seguridad: Postfix asume que esta corriendo en un entorno hostil, el emplea mltiples capas de
defensa antes los ataques. Utiliza el concepto de ejecutar las tareas con el menor privilegio
posible.

Rendimiento: Postfix fue escrito pensando en el rendimiento, y utiliza tcnicas para limitar el
numero de procesos y el numero de sistemas de archivos que se pueden acceder en el proceso
de envo y recepcin de mensajes.

Flexibilidad: El sistema de Postfix esta compuesto por diferente programas y subsistemas, lo


cual permite gran flexibilidad, al ser todos los mdulos configurables a travs de los archivos de
configuracin.

Facilidad de Uso: Postfix es uno de los sistemas de correos mas sencillo de instalar y
administrar, con lo cual minimiza la curva del aprendizaje del sistema.

INSTALACIN Y CONFIGURACIN DE UN SISTEMA POSTFIX CON


SMTP-AUTH Y TLS EN DEBIAN ETCH
Para instalar Postfix con SMTP-AUTH y TLS siga los pasos siguientes:
# apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail postgrey
Le sern hechas dos preguntas. Responda de acuerdo a lo siguiente:
General type of configuration? <-- Internet Site
Mail name? <-- servidor1.prueba.gob.ve
Luego ejecute: # dpkg-reconfigure postfix
Nuevamente, algunas preguntas le sern hechas:
General type of configuration? <-- Internet Site
Where should mail for root go <-- [blank]
Mail name? <-- servidor1.prueba.gob.ve

Other destinations to accept mail for? (blank for none) <-- servidor1.prueba.gob.ve,
localhost.prueba.gob.ve, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks? <-- 127.0.0.0/8
Use procmail for local delivery? <-- Yes
Mailbox size limit <-- 0
Local address extension character? <-- +
Internet protocols to use? <-- all
Luego, se realiza lo siguiente:
#postconf -e 'smtpd_sasl_local_domain ='
#postconf -e 'smtpd_sasl_auth_enable = yes'
#postconf -e 'smtpd_sasl_security_options = noanonymous'
#postconf -e 'broken_sasl_auth_clients = yes'
#postconf -e

'smtpd_recipient_restrictions =

#permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
#postconf -e 'inet_interfaces = all'
#echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
#echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
Posteriormente creamos los certificados para TLS:
#mkdir /etc/postfix/ssl
#cd /etc/postfix/ssl/
#openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
#chmod 600 smtpd.key

#openssl req -new -key smtpd.key -out smtpd.csr


#openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
#openssl rsa -in smtpd.key -out smtpd.key.unencrypted
#mv -f smtpd.key.unencrypted smtpd.key
#openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Luego configuramos Postfix para TLS:
#postconf -e 'smtpd_tls_auth_only = no'
#postconf -e 'smtp_use_tls = yes'
#postconf -e 'smtpd_use_tls = yes'
#postconf -e 'smtp_tls_note_starttls_offer = yes'
#postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
#postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
#postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
#postconf -e 'smtpd_tls_loglevel = 1'
#postconf -e 'smtpd_tls_received_header = yes'
#postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
#postconf -e 'tls_random_source = dev:/dev/urandom'
#postconf -e 'myhostname = servidor1.prueba.gob.ve'
El archivo /etc/postfix/main.cf debera verse similar a esto:
cat /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:

Specifying a file name will cause the first


# line of that file to be used as the name.
The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = servidor1.prueba.gob.ve
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

myorigin = /etc/mailname
mydestination = servidor1.prueba.gob.ve, localhost.prueba.gob.ve, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks
,reject_unauth_destination,check_policy_service inet:127.0.0.1:60000
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

tls_random_source = dev:/dev/urandom
Reinicie Postfix: #/etc/init.d/postfix restart
La autenticacin ser hecha por saslauthd, que es un proceso demonio que maneja las peticiones de
autenticacin de texto. Debemos modificar unas pocas cosas para que funcione adecuadamente. Ya que
Postfix se ejecuta enjaulado (chroot) en /var/spool/postfix debemos hacer lo siguiente:
# mkdir -p /var/spool/postfix/var/run/saslauthd
Ahora se tiene que editar /etc/default/saslauthd para activar saslauthd. Para ello colocar el parmetro
START

en

cambiar

la

lnea

OPTIONS="-c"

por

/var/spool/postfix/var/run/saslauthd -r":
#vi /etc/default/saslauthd
#
# Settings for saslauthd daemon
#
# Should saslauthd run automatically on startup? (default: no)
START=yes
# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent
-- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam
-- use PAM

OPTIONS="-c

-m

# rimap
-- use a remote IMAP server
# shadow
-- use the local shadow password file
# sasldb
-- use the local sasldb database file
# ldap
-- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"
# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""
# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5
# Other options (default: -c)
# See the saslauthd man page for information about these options.

#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Ahora inicie saslauthd ejecutando el siguiente comando: # /etc/init.d/saslauthd start
Para comprobar que SMTP-AUTH y TLS funcionan apropiadamente se debe ejecutar el siguiente
comando: # telnet localhost 25
Luego de establecer la conexin con el servidor de correo Postfix, ingresar # ehlo localhost
Si observa las siguientes lneas 250-STARTTLS y 250-AUTH PLAIN LOGIN todo est bien. La salida
en el sistema se debe observar observar:
servidor1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 servidor1.prueba.gob.ve ESMTP Postfix (Debian/GNU)
ehlo localhost
250-servidor1.prueba.gob.ve
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
Escriba quit para regresar a la lnea de comandos.

POP3
El Post Office Protocol (POP3) se utiliza en clientes locales de correo para obtener los mensajes de
correo electrnico almacenados en un servidor remoto. La mayora de los suscriptores de los
proveedores de Internet acceden a sus correos a travs de POP3.
Las versiones del protocolo POP (informalmente conocido como POP1) y POP2 se han hecho
obsoletas debido a las ltimas versiones de POP3. En general cuando uno se refiere al trmino POP,
nos referimos a POP3 dentro del contexto de protocolos de correo electrnico.
Caractersticas del POP3
El diseo de POP3 es para recibir correo y no para enviar. Sus predecesores permiten que los usuarios
con conexiones intermitentes (tales como las conexiones mdem), descarguen su correo electrnico
cuando se encuentren conectados de tal manera que puedan ver y manipular sus mensajes sin necesidad
de permanecer conectados. Cabe mencionar que la mayora de los clientes de correo incluyen la opcin
de dejar los mensajes en el servidor, de manera tal que, un cliente que utilice POP3 se conecta, obtiene
todos los mensajes, los almacena en la computadora del usuario como mensajes nuevos, los elimina del
servidor y finalmente se desconecta. En contraste, el protocolo IMAP permite los modos de operacin
conectado y desconectado.
Los clientes de correo electrnico que utilizan IMAP dejan por lo general los mensajes en el servidor

hasta que el usuario los elimina explcitamente. Esto y otros factores hacen que la operacin de IMAP
permita a mltiples clientes acceder al mismo buzn de correo. La mayora de los clientes de correo
electrnico soportan POP3 IMAP; sin embargo, solo unos cuantos proveedores de internet ofrecen
IMAP como un valor agregado a sus servicios.
Los clientes que utilizan la opcin dejar mensajes en el servidor por lo general utilizan la orden UIDL
('Unique IDentification Listing). La mayora de las rdenes de POP3 identifican los mensajes
dependiendo de su nmero ordinal del servidor de correo. Esto genera problemas al momento que un
cliente pretende dejar los mensajes en el servidor, ya que los mensajes con nmero cambian de una
conexin al servidor a otra. Por ejemplo un buzn de correo contena 5 mensajes en la ltima conexin,
despus otro cliente elimina el mensaje nmero 3, el siguiente usuario se topar con que los ltimos dos
mensajes estn decrementados en uno. El UIDL proporciona un mecanismo que evita los problemas de
numeracin. El servidor le asigna una cadena de caracteres nica y permanente al mensaje. Cuando un
cliente de correo compatible con POP3 se conecta al servidor utiliza la orden UIDL para obtener el
mapeo del identificador de mensaje. De esta manera el cliente puede utilizar ese mapeo para determinar
qu mensajes hay que descargar y cules hay que guardar al momento de la descarga.
Al igual que otros viejos protocolos de internet, POP3 utilizaba un mecanismo de firmado sin cifrado.
La transmisin de contraseas de POP3 en texto plano an se da. En la actualidad POP3 cuenta con
diversos mtodos de autenticacin que ofrecen una diversa gama de niveles de proteccin contra los
accesos ilegales al buzn de correo de los usuarios. Uno de estos es APOP, el cual utiliza funciones
MD5 para evitar los ataques de contraseas. Mozilla, Eudora, Novell Evolution as como Mozilla
Thunderbird implementan funciones APOP.
Comandos con POP3
Para establecer una conexin a un servidor POP, el cliente de correo abre una conexin TCP en el
puerto 110 del servidor. Cuando la conexin se ha establecido, el servidor POP enva al cliente POP
una invitacin y despus las dos mquinas se envan entre s otras rdenes y respuestas que se
especifican en el protocolo. Como parte de esta comunicacin, al cliente POP se le pide que se
autentifique (Estado de autenticacin), donde el nombre de usuario y la contrasea del usuario se
envan al servidor POP. Si la autenticacin es correcta, el cliente POP pasa al Estado de transaccin, en
este estado se pueden utilizar rdenes LIST, RETR y DELE para mostrar, descargar y eliminar
mensajes del servidor, respectivamente. Los mensajes definidos para su eliminacin no se quitan

realmente del servidor hasta que el cliente POP enva la orden QUIT para terminar la sesin. En ese
momento, el servidor POP pasa al Estado de actualizacin, fase en la que se eliminan los mensajes
marcados y se limpian todos los recursos restantes de la sesin.
Un usuario se puede conectar manualmente al servidor POP3 haciendo Telnet al puerto 110. Es muy
til cuando se enva un mensaje con un archivo muy largo que no se quiere recibir.

USER <nombre> Identificacin de usuario (Solo se realiza una vez).

PASS <password> Envas la clave del servidor.

STAT Da el nmero de mensajes no borrados en el buzn y su longitud total.

LIST Muestra todo los mensajes no borrados con su longitud.

RETR <nmero> Solicita el envo del mensaje especificando el nmero (no se borra del buzn).

TOP <nmero> <lneas> Muestra la cabecera y el nmero de lneas requerido del mensaje
especificando el nmero.

DELE <nmero> Borra el mensaje especificando el nmero.

RSET Recupera los mensajes borrados (en la conexin actual).

QUIT Salir.

Ventajas del POP3


La ventaja del POP3 comparado a otros protocolos, es que entre servidor-cliente no se tienen que
enviar tantas rdenes para la comunicacin entre ellos. El protocolo POP3 tambin funciona
adecuadamente si no se utiliza una conexin constante a Internet o a la red que contiene el servidor de
correo.
IMAP
IMAP (acrnimo ingls de Internet Message Access Protocol) es un protocolo de red de acceso a
mensajes electrnicos almacenados en un servidor. Mediante IMAP se puede tener acceso al correo
electrnico desde cualquier equipo que tenga una conexin a Internet. IMAP tiene varias ventajas sobre
POP, que es el otro protocolo empleado para obtener correo desde un servidor. Por ejemplo, es posible
especificar en IMAP carpetas del lado servidor. Por otro lado, es ms complejo que POP ya que permite

visualizar los mensajes de manera remota y no descargando los mensajes como lo hace POP.
IMAP y POP3 (Post Office Protocol versin 3) son los dos protocolos que prevalecen en la obtencin
de correo electrnico. Todos los servidores y clientes de email estn virtualmente soportados por
ambos, aunque en algunos casos hay algunas interfaces especficas del fabricante tpicamente
propietarias. Por ejemplo, mientras que los protocolos propietarios utilizados entre el cliente Microsoft
Outlook y su servidor Microsoft Exchange Server o el cliente Lotus Notes de IBM y el servidor
Domino, estos productos tambin soportan interoperabilidad con IMAP y POP3 con otros clientes y
servidores. La versin actual de IMAP, IMAP versin 4 revisin 1 (IMAP4rev1), est definida por el
RFC 3501.
IMAP fue diseado como una moderna alternativa a POP por Mark Crispin en el ao 1986.
Fundamentalmente, los dos protocolos le permiten a los clientes de correo acceder a los mensajes
almacenados en un servidor de correo.
Ya sea empleando POP3 o IMAP4 para obtener los mensajes, los clientes utilizan SMTP para enviar
mensajes. Los clientes de correo electrnico son comnmente denominados clientes POP o IMAP, pero
en ambos casos se utiliza SMTP. La mayora de los clientes de correo utilizan LDAP para sus servicios
de directorio.
IMAP es utilizado frecuentemente en redes grandes; por ejemplo los sistemas de correo de un campus.
IMAP le permite a los usuarios acceder a los nuevos mensajes instantneamente en sus computadoras,
ya que el correo est almacenado en la red. Con POP3 los usuarios tendran que descargar el email a
sus computadoras o accederlo va web. Ambos mtodos toman ms tiempo de lo que le tomara a
IMAP, y se tiene que descargar el email nuevo o refrescar la pgina para ver los nuevos mensajes.
De manera contraria a otros protocolos de Internet, IMAP4 permite mecanismos nativos de cifrado.
Tambin est disponible la transmisin de contraseas en texto plano.
Ventajas de IMAP4 en relacin a POP3
Algunas de las caractersticas importantes que diferencian a IMAP4 y POP3 son:

Soporte para los modos de operacin conectados y desconectados: al utilizar POP3, los clientes
se conectan brevemente al servidor de correo, solamente el tiempo que les tome descargar los
nuevos mensajes. Al utilizar IMAP4, los clientes permanecen conectados el tiempo que su

interfaz permanezca activa y descargan los mensajes bajo demanda. Esta manera de trabajar de
IMAP4 puede dar tiempos de respuesta ms rpidos para usuarios que tienen una gran cantidad
de mensajes o mensajes grandes.

Soporte para la conexin de mltiples clientes simultneos a un mismo destinatario: el


protocolo POP3 supone que el cliente conectado es el nico dueo de una cuenta de correo. En
contraste, el protocolo IMAP4 permite accesos simultneos a mltiples clientes y proporciona
ciertos mecanismos a los clientes para que se detecten los cambios hechos a un mailbox por otro
cliente concurrentemente conectado.

Soporte para acceso a partes MIME de los mensajes y obtencin parcial: casi todo el correo
electrnico de Internet es transmitido en formato MIME. El protocolo IMAP4 le permite a los
clientes obtener separadamente cualquier parte MIME individual, as como obtener porciones
de las partes individuales o los mensajes completos.

Soporte para que la informacin de estado del mensaje se mantenga en el servidor: a travs de
la utilizacin de seales definidas en el protocolo IMAP4 de los clientes, se puede vigilar el
estado del mensaje, por ejemplo, si el mensaje ha sido o no ledo, respondido o eliminado. Estas
seales se almacenan en el servidor, de manera que varios clientes conectados al mismo correo
en diferente tiempo pueden detectar los cambios hechos por otros clientes.

Soporte para accesos mltiples a los buzones de correo en el servidor: los clientes del IMAP4
pueden crear, renombrar o eliminar correo (por lo general presentado como carpetas al usuario)
del servidor, y mover mensajes entre cuentas de correo. El soporte para mltiples buzones de
correo tambin le permite al servidor proporcionar acceso a los directorios pblicos y
compartidos.

Soporte para bsquedas de parte del servidor: IMAP4 proporciona un mecanismo para que los
clientes pidan al servidor que busque mensajes de acuerdo a una cierta variedad de criterios.
Este mecanismo evita que los clientes descarguen todos los mensajes de su buzn de correo,
agilizando, de esta manera, las bsquedas.

Soporte para un mecanismo de extensin definido: como reflejo de la experiencia en versiones


anteriores de los protocolos de Internet, IMAP define un mecanismo explcito mediante el cual
puede ser extendido. Se han propuesto muchas extensiones de IMAP4 y son de uso comn.

Un ejemplo de extensin es el IMAP IDLE, que sirve para que el servidor avise al cliente cuando ha
llegado un nuevo mensaje de correo y stos se sincronicen. Sin esta extensin, para realizar la misma
tarea, el cliente debera contactar peridicamente al servidor para ver si hay mensajes nuevos.
INSTALACIN DE SERVIDOR IMAP/POP3 COURIER.
Ejecutar el siguiente comando para instalar Courier-IMAP/Courier-IMAP-SSL (para IMAPs en el
puerto 993) y Courier-POP3/Courier-POP3-SSL (para POP3s en el puerto 995): # apt-get install
courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courierssl gamin libgamin0 libglib2.0-0
Dos preguntas le sern hechas:
Create directories for web-based administration ? <-- No
SSL certificate required <-- Ok
Se configura Postfix para entregar mensajes de correo al Maildir* de los usuarios:
# postconf -e 'home_mailbox = Maildir/'
# postconf -e 'mailbox_command ='
# /etc/init.d/postfix restart
CORREO BASADO EN WEB (WEBMAIL)
Webmail se refiere a un servicio de correo electrnico que se puede acceder va un navegador Web; es
lo opuesto a las aplicaciones para leer correo electrnico en los clientes (Thunderbird, Icedove,
Evolution, entre otros), que requieren estar instaladas en las maquinas de los clientes. La gran ventaja
de utilizar los servicios de Webmail, es que permite a los usuarios acceder a sus cuentas de correo en
cualquier computador que este conectado a Internet .
En 1997 Hotmail introduce el servicio de correo a travs de un navegador, el cual caus gran impacto y
fue uno de los servicios de mayor crecimiento en la red. Luego de ste, Yahoo y Gmail se consolidaron
como alternativas de correo Web. Existen aplicaciones de software libre que permiten la configuracin
de este servicio, entre la ms conocidas tenemos SquirrelMail y RoundCube.
SquirrelMail

SquirrelMail es un Webmail, desarrollado por Nathan and Luke Ehresman, est escrito en PHP y puede
ser instalado en servidores Web que puedan interpretar el lenguaje PHP. La aplicacin accede a los
protocolos IMAP y SMTP para lectura y escritura respectivamente.
Al ser una aplicacin Web, SquirrelMail puede correr de manera independiente de la plataforma en que
se encuentra instalada. Al ser desarrollada como una aplicacin modular existen actualmente alrededor
de 200 plugins que se pueden aadir, con lo cual se pueden incrementar las funcionalidades de la
aplicacin.
Instalacin de SquirrelMail en Debian Etch
Ejecutar en una consola como usuario root : # apt-get install squirrelmail
Despus del proceso de instalacin se debe configurar el SquirrelMail, para eso se ejecuta desde una
consola: # squirrelmail-configure
Esto debe presentar un menu, con todos las posibles configuraciones del squirrelmail, las cuales son
las siguientes :

Opcin 1 Organization Preferences, permite configurar los datos de la organizacin, asi como
logos del SquirrelMail.

Opcin 2 Server Settings, es la que me permitira configurar todo lo relativo a mi servidor


IMAP y SMTP.

Opciones 3 y 4 es recomendable no modificarlas, para probar la configuracin del servidor y


luego revisar estas opciones especificas.

Luego se debe presionar S para salvar la configuracin y Q para salir. Todas las configuraciones
estn guardadas bajo el directorio /etc/squirrelmail, en este directorio se encuentra un archivo llamado
apache.conf, el cual incluye una configuracin para el servidor Web Apache.
Para probar en el navegador se debe ir al siguiente URL http://direccionIP/squirrelmail, donde
direccinIP puede ser un nombre de host.

RoundCube
Es un Webmail hecho con PHP y Mysql. La ventaja que tiene frente a otros webmails es que usa AJAX,
lo cual lo convierte en un webmail con una interfaz sencilla y amigable.
RoundCube, funciona como un cliente imap, lo que le permite conectarse a cualquier servidor IMAP. Si
lo quieres tener en tu servidor, necesitas instalar un servidor imap.
Instalacin de RoundCube en Debian Etch.

Se debe descargar el RoundCube el sitio oficial es http://www.roundcube.net.

El siguiente paso a seguir es modificar los permisos de los directorios temp y log para que se
puedan leer y escribir desde el servidor web. Se debe posicionar en el directorio donde subimos
el RoundCube y ejecutamos: # chown -R www:www temp logs.

Ahora pasamos a crear la BD rcm en mysql. La forma ms fcil es teniendo phpmyadmin


instalado, y crearlo por all junto con el script de inicio que se encuentra en
SQL/mysql.initial.sql.

Nos vamos al directorio config y copiamos los archivos *.php.dist a *.php, # cp db.inc.php.dist
db.inc.php, #cp main.inc.php.dist main.inc.php.

Editamos db.inc.php y lo modificamos dndole el nombre de usuario y la contrasea para poder


ingresar a la base de datos creada en el paso 3. Especficamente tenemos que modificar las
variables: $rcmail_config[db_dsnw] (ac se coloca el String de conexin a la BD),
$rcmail_config[smtp_server] (dejar en blanco y solo modificarlo si es que se prueba que el
php no puede enviar correos), $rcmail_config[default_host] (si est en blanco al acceder por
web se puede elegir a qu servidor imap conectarnos; si se coloca uno, ya no se puede elegir y
solo nos conectaremos a ese), $rcmail_config[enable_caching] (si nuestro servidor Web est
en el mismo equipo que el servidor de correo esta opcin debe estar en FALSE.

Estando todo listo, hay que ingresar por web y probar la aplicacin.

SECCIN DE EJERCICIOS

EJERCICIO N 1

Abre un terminal (Aplicaciones/Herramientas del Sistema/Terminal).

Introduce los comandos explicados anteriormente y comprueba su funcionamiento.

Verifique que el BIOS de su equipo soporta tarjetas PCI y que el arranque desde el CD es
soportado.

EJERCICIO N 2

Abre un terminal si cerraste el anterior.

Usando el comando ls, comprueba el contenido de tu directorio de usuario.

Comprueba ahora el contenido del directorio /etc.

Comprueba el contenido del directorio / .

Escribe ls /etc/f* . Observa que nos muestra los archivos y directorios cuyo nombre empieza por
"f".

Escribe el comando que muestre todos los archivos del directorio "/etc" que acaben en ".conf"

EJERCICIO N 3
Haz cat /etc/fstab: El archivo /etc/fstab contiene lneas donde se indica qu dispositivo debe "montar",
el lugar donde "montarlo", as como el sistema de archivos y las opciones (en este archivo, se pueden
poner dos opciones ms: auto y noauto, que indican si se debe "montar" automticamente al arrancar el
sistema o no, respectivamente). Ms adelante puede verse su relacin con el comando mount.

cat -n /etc/passwd: Contiene de claves del sistema.


cat /etc/resolv.conf: Contiene las direcciones DNS y el nombre del dominio.
cat /etc/hosts : Contiene las direcciones y los nombres de los equipos de la red.

Busca los archivos del directorio "/etc" que contengan "/hda". Observa que hay archivos a los
que "grep" no puede acceder.

cat /etc/shadow: Contiene los grupos registrados en el sistema. No tenemos permiso de lectura sobre
este archivo Para poder ver su contenido podemos entrar como "root", para ello escribimos el
comando su y nos pedir la clave. Acabamos de entrar como administrador del sistema ("root"),
comprueba que ahora puedes listar el contenido de "etc/shadow" con el comando "cat".

Crea un archivo usando gedit archivo1, nos preguntar si deseamos crear el archivo y
contestaremos "Si". Aparecer la ventana del editor. Escribe dentro de l: "Curso TRS". Guarda
las modificaciones pulsando en "Guardar".

Comprueba usando grep que puedes encontrar ese archivo al buscar los que contengan la
cadena "Curso" en el directorio "/home" y todos sus subdirectorios. Lo encontraremos igual si
buscamos los archivos que contengan la cadena "curso"? Escribe cat archivo1 archivo1
archivo1 > archivo2. Comprueba

con ls que ha aparecido un archivo llamado "archivo2".

Observa usando cat el contenido del archivo.


EJERCICIO N 4
Observa el resultado de escribir los comandos ls -la /dev. Como puedes ver el listado es demasiado
extenso y aunque movamos la barra de desplazamiento vertical de la ventana del terminal, no podemos
llegar al principio del listado. Observa el resultado de ls -la /dev | more. Comprobars que es ms fcil
ver el listado de archivos.
EJERCICIO N 5

Escribe el comando cp -i /etc/resolv.conf ejercicio5.

Cuntos Mbytes tiene en uso su directorio home?

Escribe el comando ls y comprueba que se ha copiado el archivo "resolv.conf" a tu directorio de

trabajo con el nombre "ejercicio5".

Copia los archivos /etc/passwd /etc/fstab a tu directorio de trabajo.

Cambia sus nombres a "claves" y "tabla", respectivamente.

Borra los tres archivos: "claves", "tabla" y "ejercicio5".

Copia el directorio "/etc/apt" a tu directorio de trabajo con el nombre "apt_copia".

Comprueba con ls /etc/apt y ls apt_copia, que el contenido de los dos directorios coincide.

Cambia el nombre del directorio "apt_copia" a "apt_copia_2".

EJERCICIO N 6

Crea en tu directorio de trabajo los subdirectorios: "carpeta1", "carpeta2" y "carpeta3".

Usando "cd" colcate en el directorio "carpeta1" y crea dentro de l los subdirectorios:


"carpeta11" y "carpeta12".

Crea los subdirectorios: "carpeta2/carpeta21" (es decir, crea dentro del directorio "carpeta2" el
subdirectorio "carpeta21") y "carpeta2/carpeta22".

Crea los subdirectorios: "carpeta3/carpeta31", "carpeta3/carpeta32" y "carpeta3/carpeta33".

Borra el subdirectorio "carpeta2/carpeta21".

Cambia el nombre del subdirectorio "carpeta22" a "carpeta222".

Copia el directorio "apt_copia_2" dentro de la carpeta "carpeta3".

Empaqueta el directorio "carpeta_3" y todo su contenido (incluidos los subdirectorios) en el


archivo "comprimido.tar".

Borra todos los directorios que has creado.

Comprueba con ls que han desaparecido los directorios que hemos borrado.

Desempaqueta el archivo "comprimido.tar" en tu directorio de trabajo.

Comprueba que ha vuelto a parecer el directorio "carpeta3" con todo su contenido (incluidos

subdirectorios).

Vuelve a borrar el directorio "carpeta3".

Comprime el archivo "comprimido.tar" con "gzip -9 comprimido.tar". Haz ls y comprueba lo


que ha ocurrido con el archivo ".tar"

Descomprmelo usando gunzip. Comprueba con ls que ha vuelto a aparecer el archivo ".tar".

Desempaqueta ese archivo y comprueba que ha vuelto a aparecer el directorio "carpeta3".

EJERCICIO N 7

Haz un enlace dbil de "/home/usuario/enlace" a "/home/usuario/carpeta3".

Haz ls -la enlace y ls -la carpeta3. Comprueba que su contenido es el mismo.

Haz ls -l y comprueba que en el lista aparece enlace -> /home/usuario/carpeta3.

Crea un directorio llamado "lll" dentro del directorio "enlace".

Comprueba que en el directorio "carpeta3" tambin aparece ahora ese directorio, es decir, lo que
hagamos en una carpeta se ver reflejado en la otra, y viceversa.

Crea con OpenOffice un documento SXW dentro de tu directorio de trabajo y escribe cualquier
contenido.

Crea en /tmp un enlace fuerte a dicho archivo y comprueba lo que ocurre cuando modificas
dicho archivo.

EJERCICIO N 8

Escribe who y comprueba los usuarios que se encuentran activos en el sistema.

Escribe finger usuario y comprueba la inforacin que puedes obtener del usuario.

Entra como superusuario con "su" y crea el usuario "pepe" con clave "pepe".

Termina tu sesin pulsando en "Acciones > Terminar sesin" y accede como usuario "pepe" con
su clave. Cuando termines, pulsa cerrar la sesin de

Crea otro usuario llamado "jose" con clave "jose".

"pepe" y vuelve a "usuario".

Borra el usuario "jose".

Comprueba que el directorio "/home/jose" sigue existiendo. Para liberar espacio en disco borra
ese directorio.

Crea el grupo alumnos.

Aade el usuario "pepe" al grupo alumnos con adduser pepe alumnos. Para poder ver los
grupos y comprobar qu usuarios pertenecen a l podemos ver el contenido

del

archivo

/etc/group

Elimina a "pepe" del grupo "alumnos" con deluser pepe alumnos.

Comprueba de nuevo los usuarios que pertenecen al grupo "alumnos".

Elimina el grupo "alumnos".

EJERCICIO N 9

Abre un terminal.

Escribe gedit archivo para crear el archivo "archivo" y guardarlo en tu directorio de trabajo.
Cierra la ventana del editor.

Comprueba los permisos del archivo ls -l archivo, que sern -rw-r--r--.

Cambia los permisos de "archivo" a: "-rw-rw-r--"

Cambia los permisos de "archivo" a: "-rw-r--rw-"

Cambia los permisos de "archivo" a: "-rwxrwxrwx"

Cambia el propietario de "archivo" a "pepe"

Cambia el grupo de "archivo" a "pepe"

Muevete al directorio /home y comprueba usando ls -l los permisos del directorio pepe" (que es
el directorio de trabajo del usuario "pepe"). Vers que se obtiene algo como: drwxr-xr-x
pepe

30

pepe 4096 2005-01-18 10:15 pepe. Por defecto estos son los permisos que el sistema

pone a los directorios de trabajo de los usuarios que se crean en l.

Comprueba que puedes acceder al contenido del directorio del usuario "pepe" con ls -la
/home/pepe. Para poder modificar los permisos del directorio "/home/pepe" vamos a entrar
como superusuario con su.

Ahora debemos cambiar los permisos del directorio "/home/pepe" a drwx------ Dejamos de ser
superusuario con exit.

Comprueba que ahora como usuario "usuario" ya no puedes acceder al directorio "/home/pepe".

Comprueba que puedes cambiar los permisos de tu directorio de trabajo "/home/usuario".

Vuelve a dejar los permisos de "/home/usuario" como estaba, es decir, drwx------ . Sera
recomendable informar a cada usuario que creemos de esta situacin, para que modifique los
permisos de acceso a su directorio de trabajo , si as lo cree conveniente. O que modifiquemos
como superusuario dichos permisos.

EJERCICIO N 10

Con la orden que corresponda comprueba la lista de repositorios de tu PC.

Usando el comando que corresponda, comprueba si existe algn paquete con el nombre
parecido a "fortune".

Abrimos un terminal e iniciamos sesin como root con el comando su.

Ejecuta en ese terminal la orden que actualice la lista de paquetes de tu PC apt-get update.

Busca todos los paquetes que contien el nombre "fortune". Observa que en la lista que aparece
hay uno llamado "fortunes-es".

Instala el paquete "fortunes-es".

Abre otro terminal y escribe fortune. Repite este comando varias veces.

Comprobars que muchas frases son "polticamente incorrectas". As que desinstala "fortunees".

Cierra todas las terminales.

EJERCICIO N 11
Repite el ejercicio N 10 pero utilizando aptitud.
EJERCICIO N 12 - Compartiendo un directorio (en toda la red local).

Crea un directorio llamado Compartido_nfs (o el nombre que prefieras) dentro de tu directorio


de trabajo mkdir Compartido_nfs (o mkdir /home/usuario/Compartido_nfs).

Inicia sesin de root con el comando su y edita (con nano, vi, gedit, etc.) el archivo /etc/exports,
para aadir una lnea como la siguiente: /home/usuario/Compartido_nfs *(ro,sync).

Reiniciamos el servidor nfs /etc/init.d/nfs-kernel-server restart

EJERCICIO N 13 - Compartiendo un directorio con permiso de lectura y escritura

Creamos ahora, como usuario, sin iniciar sesin de root el directorio /home/usuario/LE (LE
abreviacin de lectura y escritura).

Qu tenemos que escribir en /etc/exports para compartirlo en modo rw?

Qu comando tenemos que ejecutar, tras editar este archivo, para activar los cambios en el
servidor NFS?

Crea algn directorio y monta en l el directorio /home/usuario/LE compartido por alguno de


tus compaeros. Puedes crear alguna carpeta en este directorio?En qu PC se crea dicha
carpeta?

EJERCICIO N 14 - Opciones de inicio en /etc/fstab

Edita el archivo /etc/fstab y establece las siguientes opciones para el arranque: El directorio
remoto 192.168.0.250:/mnt/hda5/Compartido_NFS se montar automticamente en /mnt/nfs. El
directorio remoto 192.168.0.250:/home/usuario/Pruebas podr ser montado por cualquier
usuario, en modo rw en el directorio (que habr que crear) /home/usuario/Prueba_remota

EJERCICIO N 15 - Accediendo con permiso de root (muy peligroso)


Vamos a compartir el directorio /home de forma que el usuario root (uid=0) remoto tenga sobre l
permisos de administrador. Esto es muy peligro pues si alguien conecta a la red local otra mquina en
la que es capaz de iniciar sesin como root, podra acceder a nuestro /home con total impunidad. Para

ello:

Edita el archivo /etc/exports y escribe la siguiente lnea /home *(rw,no_root_squash,sync).

Reinicia el servicio NFS (/etc/init.d/nfs-kernel-server).

Crea en una mquina remota (o en el propio equipo si slo quieres hacer pruebas) el directorio /
mnt/prueba_home.

Monta en /mnt/prueba_home el directorio /home compartido mediante NFS: mount -t nfs


192.168.0.74:/home /mnt/prueba_home (pon la IP que

corresponda en tu caso).

Accede, como root a /mnt/prueba_home y prueba a crear directorios, renombrar archivos, entre
otros. Mucho cuidado!

EJERCICIO N 16 Ejercicios con ACL


Crear un archivo de configuracin para denegar el acceso a todos los equipos a la direccin
www.google.com
acl all src 0.0.0.0/0.0.0.0
acl no_permitido1 dstdomain www.google.com
acl localhost src 127.0.0.1
http_access deny no_permitido1 !localhost
En este ejemplo construimos la acl llamada localhost que representa el servidor proxy (direccin
loopback). Observe que en http_access se ha puesto !localhost para denegar el acceso a todos los
equipos de la red menos al equipo local. De esta manera el equipo en el que est instalado squid puede
acceder a la pgina www.google.com
EJERCICIO N 17
Crear un archivo de configuracin que deniegue el acceso a las direcciones www.google.com y
www.hotmail.com.
acl all src 0.0.0.0/0.0.0.0
acl localhost localhost src 127.0.0.1

acl no_permitido1 dstdomain www.google.com www.hotmail.com


http_access deny no_permitido1 !localhost
En este caso el archivo de configuracin es similar al caso anterior. Tan slo hay que poner
www.hotmail.com despus de www.google.com en la acl no_permitido1.

EJERCICIO N 18
Crear un archivo llamado no_permitidos, en la ruta /etc/squid3 que contenga las direcciones de los tres
siguientes dominios:
http://www.google.com
http://www.yahoo.com/
http://www.hotmail.com/
A continuacin crea un archivo de configuracin squid.conf que deniegue las conexiones a las
direcciones que se encuentran en el archivo no_permitidos.
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl no_permitido1 url_regex /etc/squid3/no_permitidos
http_access deny no_permitido1 !localhost
EJERCICIO N 19
Se dispone de una red local con direccin 192.168.1.0 y mscara 255.255.255.0. Crear un archivo de
configuracin squid.conf que permita el acceso a Squid a todos los equipos de la red y no lo permita a
los restantes.
acl all src 0.0.0.0/0.0.0.0
acl todalared src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1

http_access allow todalared


http_access deny all !localhost
EJERCICIO N 20
Se dispone de una red de rea local con direccin 192.168.1.0 y mscara 255.255.255.0. Se desea
permitir el acceso a Squid a los equipos con las IP que estn comprendidas en el rango 192.168.1.1 y
192.168.1.10 (ambas incluidas). Crea en el directorio /etc/squid3/ un archivo llamado ip_permitidas
que tenga estas direcciones (cada direccin en una lnea diferente). Con est configuracin para Squid
se permite el acceso a Squid a todas estas direcciones y denegar el acceso a las restantes.
acl all src 0.0.0.0/0.0.0.0
acl red_local src /etc/squid3/ip_permitidas
acl localhost src 127.0.0.1
http_access allow red_local
http_access deny all !localhost
EJERCICIO N 21
Impide la conexin a Internet a todos los equipos en horario de 18:00 a 21:00 horas.
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl horario time 18:00-21:00
http_access deny horario !localhost
EJERCICIO N 22
Niega las conexiones a todos los equipos en horario de 18:00 a 21:00 horas, pero slo los lunes, martes
y mircoles.
acl all src 0.0.0.0/0.0.0.0
acl horario time MTW 18:00-21:00

http_access deny horario !localhost


EJERCICIO N 23
Deniega el acceso a Squid al equipo con IP 192.168.1.5. Permite el resto de accesos a Squid.
acl all src 0.0.0.0/0.0.0.0
acl equipo5 src 192.168.1.5
http_access deny equipo5
EJERCICIO N 24
Deniega el acceso a Squid al equipo con IP 192.168.1.5 en horario de 18:00 a 21:00 horas. Permite el
resto de accesos a Squid.
acl all src 0.0.0.0/0.0.0.0
acl equipo5 src 192.168.1.5
acl horario 18:00-21:00
http_access deny equipo5 horario
EJERCICIO N 25
Niega el acceso a Squid al equipo con IP 192.168.1.5 en horario de 18:00 a 21:00 horas. Para el resto
de equipos permitir el acceso slo en horario de 10:00 a 14:00 horas. Se supone que los equipos
pertenecen a la red 192.168.1.0 con mscara 255.255.255.0.
acl all src 0.0.0.0/0.0.0.0
acl red_local src 192.168.1.0/255.255.255.0.
acl equipo5 src 192.168.1.5
acl horario1 18:00-21:00
acl horario2 10:00-14:00
http_access deny equipo5 horario1

http_access allow red_local horario2


http_access allow equipo5
EJERCICIO N 26
En el archivo /etc/squid3/permitidos se tiene una lista de todas las direcciones IP de la red local. El
equipo10 tiene la direccin IP 192.168.1.10. Se permite el acceso a Internet al equipo10 de lunes a
mircoles de 9:00 a 14:00 horas. Tambin se permite el acceso a los equipos de la red local de lunes a
mircoles. Se prohibe el acceso en el resto de casos.
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1
acl redlocal src /etc/squid3/permitidos
acl equipo10 src 192.168.1.10
acl horario time MTWHF 9:00-14:00
acl horario2 time MTW
http_access allow equipo10 horario
http_access allow redlocal horario2
http_access allow localhost
http_access deny all
EJERCICIO N 27
Restringe el acceso a todo el contenido con extensin .mp3 a los equipos de la red.
acl all src 0.0.0.0/0.0.0.0
acl redlocal src 192.168.1.0/255.255.255.0
acl musica urlpath_regex \.mp3
http_access allow redlocal !musica

http_access deny all


EJERCICIO N 28
Configure un firewall local para cada mquina
Solucin: Para este caso utilizaremos nicamente la cadena Input, que es la que se refiere a los
paquetes que vienen con origen el equipo especifico.
# Generated by iptables-save v1.3.6 on Tue Aug 19 09:10:51 2008
*filter
#Coloco las politicas por defecto, en este caso la cadena utilizada es INPUT
:INPUT DROP [162:12834]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [69:11050]
#Permito todas las conexiones del mismo equipo
-A INPUT -s 127.0.0.1 -j ACCEPT
#Permito que todas las conexiones generadas del equipo hacia afuera puedan establecerse
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Aug 19 09:10:51 2008
EJERCICIO N 29
Caso red01.
Su unidad productiva es contratada para instalar y configurar un firewall, el diseo de la red es el
siguiente :

Solucin.
La configuracin del firewall seria la siguiente:
# Generated by iptables-save v1.3.6 on Thu Aug 21 11:32:28 2008
*filter
#Coloco la Politica de Forward en DROP
:INPUT ACCEPT [3211:2388440]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2585:488282]
#Utilizo la tabla de conexiones de iptables para los aceptar conexiones entrantes solamente si la
conexin fue generada desde un equipo de la red 150.188.131.0/24
-A FORWARD -d 150.188.131.0/255.255.255.0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#Utilizo la tabla de conexiones de iptables para los aceptar conexiones generadas desde los equipos
de la red 150.188.131.0/24
-A FORWARD -s 150.188.131.0/255.255.255.0 -m state --state NEW,RELATED,ESTABLISHED -j
ACCEPT
#Acepto conexiones de al servidor de correo en los puertos 25 y 110
-A FORWARD -d 150.188.131.11 -p tcp -m multiport --dports 110,25 -j ACCEPT
#Acepto conexiones al servidor web por el puerto 80
-A FORWARD -d 150.188.131.10 -p tcp -m tcp --dport 80 -j ACCEPT

COMMIT
# Completed on Thu Aug 21 11:32:28 2008
EJERCICIO N 30 - Caso de Estudio (LDAP)
Usted trabaja en una unidad institucional del estado (Por ejemplo una Contralora Municipal). Esta es la
situacin:

Es una red pequea, de 25 computadoras y 40 usuarios.

Actualmente la red no posee un controlador de dominio.

Se comparten impresoras y archivos mediante el uso de unidades y carpetas compartidas.

La red se encontraba en un ambiente netamente Windows y se realiz una migracin de todas


las estaciones de trabajo a GNU/Linux.

El Contralor Municipal le ha encomendado la tarea de centralizar la red y colocar un


controlador de dominio que se encargue de filtrar las pginas web indebidas y bloquear los
programas p2p, as como asignar una cuenta de usuario y de correo a cada persona. Cmo
resolvera usted esta encomienda?

Posible Solucin:
Instalando un servidor con GNU/linux Debian etch 4.0r3, instalando un servidor OpenLDAP de esta
forma:
1. Se instala el servidor LDAP y otras utilidades: #apt-get install slapd ldap-utils migration-tools
2. Creamos la clave para nuestro servidor ldap: #slappasswd, nos pide una nueva clave y tipeamos
123456, pide confirmacin de la clave nuevamente y tipeamos 123456. Despus de esto nos
arroja

una

clave

encriptada

con

el

formato

parecido

a:

{SSHA}cWB1VzxDXZLf6F4pwvyNvApBQ8G/DltW esto es una clave encriptada mediante el


algoritmo ssha, copiamos la clave encriptada que nos arroja.
3. Luego editamos el archivo /etc/ldap/slapd.conf, que es el nico archivo de configuracin para el
servidor ldap y se editan las siguientes lineas: database bdb (base de datos de tipo berkley),
suffix

"dc=contraloriacarrizal,dc=local"

(el

nombre

del

dominio

en

nuestro

caso

contraloiacarrizal.local), rootdn "cn=admin,dc=contraloriacarrizal,dc=local" (nombre del


administrador del servidor ldap), rootpw {SSHA}cWB1VzxDXZLf6F4pwvyNvApBQ8G/DltW
(la misma que arroj en el paso anterior).
4. Se reinicia el servicio: #/etc/init.d/slapd restart.
5. Se crean los usuarios: #useradd usuario1, #useradd usuario2.
6. Se les asignan sus respectivas claves: #passwd usuario1, #passwd usuario2.
7. Se copian los detalles de los usuarios locales al directorio de ldap: # grep root /etc/passwd >
/etc/ldap/passwd.root, # grep usuario1 /etc/passwd > /etc/ldap/passwd.usuario1, # grep
usuario2 /etc/passwd > /etc/ldap/passwd.usuario2. Se repite para cada usuario.
8. Se edita el archivo /usr/share/migration/migrate_common.ph. Se buscan las siguientes lineas y
se

colocan

como

se

"contraloriacarrizal.local";

ve

(nombre

continuacin:
del

servidor

$DEFAULT_MAIL_DOMAIN
de

correo),

$DEFAULT_BASE

=
=

"dc=contraloriacarrizal,dc=local"; (nombre del dominio).


9. Se convierten los archivos passwd.file a ldif (formato para el intercambios de datos de ldap): # /
usr/share/migration/migrate_passwd.pl

/etc/ldap/passwd.root

/etc/ldap/root.ldif,

/usr/share/migration/migrate_passwd.pl /etc/ldap/passwd.usuario1 /etc/ldap/usuario1.ldif, #


/usr/share/migration/migrate_passwd.pl /etc/ldap/passwd.usuario2/etc/ldap/usuario2.ldif.
10. Se repite el mismo procedimiento para el resto de los usuarios.
11.Se crea el archivo de dominio ldif (/etc/ldap/home.ldif): dn: dc=contraloriacarrizal,dc=local,
dc: CONTRALORIA, description: LDAP Admin, objectClass: dcObject, objectClass:
organizationalUnit, ou: rootobject, dn: ou=People, dc=contraloriacarrizal,dc=local, ou:
People, description: Users of adminmart, objectClass: organizationalUnit.
12.Se actualiza el archivo root.ldif para el administrador del servidor ldap: #nano
/etc/ldap/root.ldif

se

le

aaden

estas

lineas:

dn:

uid=root,ou=People,dc=conttraloriacarrizal,dc=local, uid: root, cn: admin, objectClass:


account.
13.Se

importan

todos

los

usuarios

para

ldap:

#ldapadd

-x

-D

"cn=admin,dc=contraloriacarrizal,dc=local" -W -f
Password:

adding

new

entry

/etc/ldap/home.ldif. Enter LDAP

"dc=contraloriacarrizal,dc=local",

adding

new

entry

"ou=People, dc=contraloriacarrizal,dc=local"
14.Se aaden los usuarios: # ldapadd -x -D "cn=admin,dc=contraloriacarrizal,dc=local" -W -f
/etc/ldap/root.ldif.

Enter

LDAP

Password:

"uid=root,ou=People,dc=contraloriacarrizal,dc=local",

adding
adding

new
new

entry,
entry,

"uid=operator,ou=People,dc=contraloriacarrizal,dc=local".
# ldapadd -x -D "cn=admin,dc=contraloriacarrizal,dc=local" -W -f /etc/ldap/usuario1.ldif.
Enter

LDAP

Password:

adding

new

entry

"uid=usuario,ou=People,dc=contraloriacarrizal,dc=local"
# ldapadd -x -D "cn=admin,dc=contraloriacarrizal,dc=local" -W -f /etc/ldap/usuario2.ldif
Enter

LDAP

Password:

adding

new

entry

"uid=usuario2,ou=People,dc=contraloriacarrizal,dc=local".
15. Se reinicia el servidor: #/etc/init.d/salpd restart
16. Se prueba el servidor ldap: #ldapsearch -x -b "dc=contraloriacarrizal,dc=local"
"(objectclass=*)"
Configurando a los Clientes
nsswitch --> para esta parte necesitaremos instalar el paquete libnss-ldap. Cuando trabajamos con el
sistema (ls -l, p. ej.) normalmente vemos los nombres de los usuarios propietarios de los archivos. En
cambio guardado en el disco hay el "nmero" (UID) del usuario.
Para que los programas sepan el nombre que corresponde a los UID's (y otras cosas, como grupos,
hosts, etc.) hacen unas llamadas a funciones de la librera GLIBC, y es esta quien "averigua" la
relacin.
Es en el archivo /etc/nsswitch.conf donde le decimos al sistema de donde averiguar el propietario
sabiendo el UID. Normalmente contiene algo como:
passwd:

compat

group:

compat

shadow:

compat

networks:

files

hosts:

files dns

Lo que ms nos interesa es la parte de passwd, group y shadow. Ahora lo dejaremos as:
passwd:

files ldap

shadow:

files ldap

group:

files ldap

Por tanto cuando un programa le pide a la GLIBC dime el nombre del usuario 1005, la GLIBC primero
mira en /etc/passwd y sin har la consula al servidor LDAP. Para que el nsswitch pueda hacer las
consultas en el LDAP tendremos el archivo /etc/libnss-ldap.conf algo como: host 192.168.1.2 (ip del
servidor ldap) base dc=contraloriacarrizal,dc=local.
Es decir, la informacin necesaria para llegar a nuestro servidor LDAP y lanzar la consulta. Si hacemos
man libnss-ldap.conf veremos las opciones que podemos ponerle. Por ejemplo: port, ldap_versions.
Entre otras cosas, a veces necesitaremos que se haga una conexin autentificada contra el servidor. Para
eso se usar la contrasea que encuentre en /etc/ldap.secret (tiene que estar con permisos 600,
propietario y grupo root)
Configurando el Cliente PAM
Para poder configurar el cliente PAM tendremos que instalar el paquete libpam-ldap Hay varios
programas que pueden usar (y usan por defecto) un mtodo de autentificacin centralizado y por
mdulos llamado PAM (Pluggable Authentication Modules). Eso son unas librerias que los programas
pueden soportar que sirven de "interfaz" contra varios mtodos de autentificacin. Por ejemplo: LDAP.
La configuracin en Debian es en el directorio /etc/pam.d/ y tenemos un archivo de configuracin por
cada servicio. Si es necesario que la conexin sea con privilegios, se usar la contrasea que se
encuentre en /etc/ldap.secret, y que estar con permisos 600 (como el punto anterior).
Tener la contrasea para autentificarse es necesario, con la configuracin por defecto del slapd.conf,
cuando el usuario root quiere cambiar la contrasea de otro usuario: si no es conexin autentificada, el
servidor LDAP no le deja cambiarla. De otra forma cualquier usuario podra cambiar la contrasea de
cualquier otro, solo lanzando la consulta al servidor LDAP. Seguidamente, dejaremos el archivo
/etc/pam_ldap.conf de forma parecida:

host 192.168.1.2 (ip del seridor ldap)


base dc=contraloriacarrizal
dc=local y ldap_version 3
rootbinddn cn=admin,dc=pinux,dc=info
# don't forget /etc/ldap.secret
Ahora ya tenemos la configuracin general de PAM para funcionar con LDAP. Pasemos a la parte
especfica de cada servicio (ssh, su, passwd, entre otros). Estaremos tocando los archivos de
configuracin del cliente para que se autentifique contra el servidor.
ssh --> Tenemos que ir al archivo /etc/pam.d/ssh y al menos aadir las siguientes lneas al inicio del
archivo:
auth

sufficient pam_ldap.so

account sufficient pam_ldap.so


session

sufficient pam_ldap.so

password sufficient pam_ldap.so


En el caso del ssh tendremos seguramente que modificar en el archivo /etc/ssh/sshd_configel parmetro
PAMAuthenticationViaKbdInt a yes. De otra forma no autentificara de forma correcta.
su --> Sirve para poder ejecutar el su con usuarios que estn dados de alta en el LDAP. En el archivo
/etc/pam.d/su lo dejaremos parecido a:
auth

sufficient pam_rootok.so

auth

sufficient pam_ldap.so

auth

required pam_unix.so use_first_pass

account sufficient pam_ldap.so


account required pam_unix.so
session

sufficient pam_ldap.so

session

required pam_unix.so

passwd, este es para permitir cambiar las contraseas de los usuarios. Lo podemos dejar as:
password

sufficient

pam_ldap.so

password

required

pam_unix.so nullok obscure min=4 max=8

Es bastante til dar de alta a los usuarios de forma normal y cambiarles la contrasea con el mismo
passwd como root (si son pocos usuarios de pruebas, claro)
login --> lo dejaremos parecido a este:
auth

required

pam_nologin.so

auth

sufficient

pam_ldap.so

auth

sufficient

pam_unix.so shadow use_first_pass

auth

required

pam_deny.so

Hay otras maneras de dejarlo, pero tenemos que ir con cuidado con el use_first_pass: si no lo ponemos
los usuarios que estan dados de alta en LDAP se les pedira dos veces la contrasea (una validara con /
etc/passwd, y al no encontrar el usuario se lo pedira otra vez para validarlo contra LDAP. Con los
ejemplos vistos hasta ahora sera fcil hacer lo mismo en otros servicios. Por ejemplo: proftpd, xlock,
entre otros.
Tambin es relativamente fcil modificar los archivos common-account common-auth commonpassword common-session para no tener que tocar el archivo de cada servicio, a costa de tener menos
personalizacin por servicio.

También podría gustarte