Curso de Linux Avanzado
2013
Este documento fue elaborado para ser utilizado exclusivamente en los cursos de entrenamiento Linux
ofrecidos por Palosanto Solutions
Solution
[CURSO DE LINUX AVANZADO] www.palosanto.com
ÍNDICE GENERAL
Capítulo 1 [SERVICIOS Y DEMONICOS]
1.1 Introducción................................................ 2
1.2 Niveles de servicio o runlevels.................................... 2
1.2.1 Determinar el runlevel actual................................. 2
1.2.2 Configuración del runlevel por defecto........................... 3
1.3 Configuración de servicios....................................... 3
1.3.1 Uso de la utilidad ntsysv.................................... 3
1.3.1.1 Habilitar y deshabilitar un servicio.......................... 4
1.3.1.2 Seleccionar runlevels................................... 4
1.3.2 Uso de la utilidad chkconfig.................................. 4
1.3.2.1 Listar los servicios..................................... 4
1.3.2.2 Habilitar un servicio.................................... 5
1.3.2.3 Deshabilitar un servicio................................. 6
1.4 Ejecución de servicios.......................................... 7
1.4.1 Determinar el estado de un servicio............................. 7
1.4.2 Iniciar un servicio......................................... 8
1.4.3 Detener un servicio........................................ 8
1.4.4 Reiniciar un servicio....................................... 8
Capítulo 2 [DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL]
2.1 Concepto.................................................. 10
2.2 Porqué usar DHCP?........................................... 10
2.3 Métodos de asingación de direcciones IP............................. 10
2.4 Parámetros configurables....................................... 11
2.5 Implementaciones............................................ 11
2.6 Anatomía del protocolo........................................ 12
2.7 Configuración de un servidor DHCP................................. 13
2.7.1 El servidor DHCP.......................................... 13
2.7.2 Archivo de configuración.................................... 13
2.7.3 La base de datos de asignación (Lease database).................... 13
2.7.4 Iniciar y detener el servicio................................... 14
Laboratorio 1.................................................. 15
Capítulo 3 [FTP: FILE TRANSFER PROTOCOL]
3.1 Concepto.................................................. 20
3.2 Servidor FTP................................................ 20
3.3 Cliente FTP................................................. 20
3.4 Tipos de acceso a un servidor FTP.................................. 21
3.5 Configuración de un servidor FTP.................................. 22
3.5.1 El servidor vsftpd......................................... 22
3.5.2 Archivos de configuración................................... 22
INDICE | i
www.palosanto.com [CURSO DE LINUX AVANZADO]
3.5.3 Iniciar y detener el servicio................................... 23
Laboratorio 2.................................................. 24
Laboratorio 3.................................................. 26
Capítulo 4 [DNS: DOMAIN NAME SYSTEM]
4.1 Introducción................................................ 29
4.2 La tabla de hosts............................................. 29
4.3 El sistema DNS.............................................. 30
4.4 Top Level Domains (TLDs)....................................... 31
4.5 Root Servers................................................ 32
4.6 Zonas DNS................................................. 33
4.6.1 Archivos de zona......................................... 33
4.7 Tipos de servidores DNS........................................ 34
4.8 Configuración de un servidor DNS.................................. 34
4.8.1 El servidor BIND.......................................... 34
4.8.2 Archivos de configuración................................... 35
4.8.3 Iniciar y detener el servicio.................................. 35
4.8.4 La utilidad dig........................................... 36
Laboratorio 4.................................................. 38
Laboratorio 5.................................................. 40
Capítulo 5 [SERVIDOR WEB]
5.1 Protocolo HTTP.............................................. 44
5.2 Configuración de un servidor Web................................. 44
5.2.1 El servidor HTTP Apache.................................... 44
5.2.2 Funcionamiento de Apache.................................. 44
5.2.3 Archivo de configuración.................................... 45
5.2.4 Iniciar y detener el servicio.................................. 45
5.3 Hosting virtual.............................................. 45
5.3.1 Hosting virtual basado en dirección IP........................... 46
5.3.2 Hosting virtual basado en nombres............................. 46
5.3.3 Basado en dirección IP o basado en nombres?..................... 47
Laboratorio 6.................................................. 48
Laboratorio 7.................................................. 50
Laboratorio 8.................................................. 52
Capítulo 6 [SERVIDOR DE CORREO ELECTRONICO]
6.1 Protocolos de correo electrónico.................................. 55
6.1.1 Protocolo SMTP.......................................... 55
6.1.2 Protocolo POP........................................... 56
6.1.3 Protocolo IMAP.......................................... 56
6.2 Tipos de programas de correo electrónico............................ 56
6.2.1 Agente de transporte de correo (MTA).......................... 57
6.2.2 Postfix................................................ 57
6.2.3 Agente de entrega de correo (MDA)............................ 57
ii | INDICE
[CURSO DE LINUX AVANZADO] www.palosanto.com
6.2.4 Agente de usuario de correo (MUA)............................ 58
6.2.5 Dovecot............................................... 58
6.2.5 Formatos de almacenamiento de correo......................... 58
6.3 Configuración de un servidor de correo.............................. 59
6.3.1 Configuración del servicio SMTP............................... 59
6.3.2 Configuración del servicio POP/IMAP........................... 59
6.3.3 Iniciar y detener el servicio.................................. 59
6.4 Webmail.................................................. 60
6.4.1 Squirrelmail............................................ 61
6.5 Spam y software antispam...................................... 61
6.5.1 SpamAssassin........................................... 61
6.5.2 Puedo simplemento borrar correo spam?........................ 62
Laboratorio 9.................................................. 63
Laboratorio 10................................................. 70
Laboratorio 11................................................. 72
Capítulo 7 [NFS: NETWORK FILE SYSTEM]
7.1 Concepto.................................................. 76
7.1.1 Cómo funciona?......................................... 76
7.2 Configuración de un servidor NFS.................................. 77
7.2.1 El servicio nfs y rpcbind..................................... 77
7.2.2 Archivo de configuración.................................... 77
7.2.3 El archivo /etc/exports..................................... 77
7.2.4 Iniciar y detener el servicio.................................. 79
7.3 Configuración del cliente NFS..................................... 80
Laboratorio 12................................................. 81
Capítulo 8 [SERVIDOR DE ARCHIVOS]
8.1 El servidor Samba............................................ 83
8.2 Configuración de un servidor de archivos con Samba..................... 84
8.2.1 Los servicios smb, nmb, winbind............................... 84
8.2.2 Archivo de configuración.................................... 85
8.2.3 Iniciar y detener el servicio.................................. 85
8.2.4 Cuentas de usuario de Samba................................ 86
8.2.5 La utilidad nmblookup..................................... 87
8.2.6 La utilidad smbtree....................................... 87
8.2.7 Listar recursos SMB de un servidor............................. 88
8.2.8 Acceder a recursos SMB de un servidor.......................... 88
8.2.9 La utilidad mount.cifs...................................... 89
Laboratorio 13................................................. 91
INDICE | iii
Capítulo 1
[SERVICIOS Y DEMONICOS]
CONTENIDO
1.1 Introducción
1.2 Niveles de servicio o runlevels
1.3 Configuración de servicios
1.4 Ejecución de servicios
www.palosanto.com [CURSO DE LINUX AVANZADO]
1.1 Introducción
Mantener la seguridad de su sistema Linux es extremadamente importante, y un
aspecto fundamental es gestionar el acceso a los servicios del sistema
cuidadosamente. Su sistema Linux puede tener que proporcionar acceso a
determinados servicios que se ejecutan en él. Por ejemplo, httpd si ejecuta un
servidor Web. Sin embargo, si su sistema no necesita proporcionar un servicio en
particular, debe desactivarlo para minimizar su exposición a posibles amenazas
como bug exploits.
Este capítulo explica el concepto de los niveles de servicio o runlevels, y describe
como configurar un nivel por defecto. También incluye la configuración de cada
uno de los servicios que se ejecutan en cada uno de estos niveles de servicio, y
proporciona información de cómo iniciar, detener y reiniciar los servicios usando
la línea de comandos.
1.2 Niveles de servicio o runlevels
Un nivel de servicio o runlevel es un estado, o modo, definido por los servicios que
están destinados a ser ejecutados cuando se selecciona ese nivel de servicio.
Existen siete niveles de servicio:
Nivel de servicio Descripción
Se utilizar para apagar el sistema. Este nivel de servicio es reservado y no
0
puede ser cambiado.
Se utiliza para ejecutarse en modo monousuario, el root. También se lo
1 conoce como modo de mantenimiento y ningún servicio se ejecuta en
este nivel de servicio, el cual es reservado y no puede ser cambiado.
2 No se utiliza por defecto. Usted es libre de definirlo por sí mismo.
Se utiliza para ejecutarse en modo multiusuario completo con una
3
interfaz de línea de comandos.
4 No se utiliza por defecto. Usted es libre de definirlo por sí mismo.
Se utiliza para ejecutarse en modo multiusuario completo con una
5
interfaz gráfica de usuario.
Se utiliza para reiniciar el sistema. Este nivel de servicio es reservado y no
6
puede ser cambiado.
1.2.1 Determinar el runlevel actual
Para chequear en el nivel de servicio en el que está operando el sistema, ejecute
el comando runlevel, así:
~]# runlevel
N 5
2 | SERVICIOS Y DEMONICOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
En este caso es el número 5, lo que significa que el sistema se está ejecutando en
modo multiusuario completo con interfaz gráfica.
1.2.2 Configuración del runlevel por defecto
El runlevel por defecto puede ser cambiado en el archivo /etc/inittab, que al
final del archivo contiene una línea como la siguiente:
id:5:initdefault:
Para hacerlo, edite el archivo como usuario root y cambie el número en esta línea
al valor deseado. El cambio tomará efecto la próxima vez que reinicie el sistema.
1.3 Configuración de servicios
Para que pueda configurar los servicios que se inician al arranque del sistema,
CentOS Linux hace uso de las siguientes utilidades: la interfaz de texto ntsysv y
el comando chkconfig.
1.3.1 Uso de la utilidad ntsysv
La utilidad ntsysv es una aplicación de línea de comandos con una interfaz de
usuario de texto simple que permite configurar qué servicios serán iniciados en
los runlevels seleccionados. Para iniciar la utilidad, como usuario root, escriba
ntsysv en una terminal de comandos y se mostrará una pantalla, así:
SERVICIOS Y DEMONICOS| 3
www.palosanto.com [CURSO DE LINUX AVANZADO]
La utilidad muestra el listado de los servicios disponibles (los servicios que están
en el directorio /etc/rc.d/init.d) a lado de su estado actual y una
descripción que se obtiene presionando la tecla F1. Si hay un asterisco a lado del
servicio significa que está habilitado para iniciarse, caso contrario está
deshabilitado.
1.3.1.1 Habilitar y deshabilitar un servicio
Para habilitar un servicio, use las teclas direccionales y selecciónelo con la barra
espaciadora. Un asterisco (*) aparece entre los corchetes.
Para deshabilitar un servicio, use las teclas direccionales y selecciónelo con la
barra espaciadora. El asterisco (*) desaparece de los corchetes.
Una vez que haya terminado, use la tecla Tab para navegar al botón Ok, y
confirmar los cambios presionando la tecla Enter. Tenga en cuenta que ntsysv
no inicia o detiene un servicio.
1.3.1.2 Seleccionar runlevels
Por defecto, la utilidad ntsysv solo afecta el runlevel actual. Para habilitar o
deshabilitar servicios para otros runlevels, como root, ejecute el comando con la
opción --level seguido de los números 0 al 6 que representan a cada runlevel.
Por ejemplo, para configurar los runlevels 3 y 5, ejecute el comando:
~]# ntsysv –-level 35
1.3.2 Uso de la utilidad chkconfig
La utilidad chkconfig es una herramienta de la línea de comandos que le
permite definir en qué runlevel se va a ejecutar un determinado servicio, así como
también listar todos los servicios conjuntamente con su configuración actual. Este
comando debe ser ejecutado como usuario root.
1.3.2.1 Listar los servicios
Para mostrar una lista de los servicios del sistema (los que están dentro del
directorio /etc/rc.d/init.d) escriba el comando chkconfig --list, o
utilice chkconfig sin ningún argumento. Se mostrará una pantalla como la
siguiente:
4 | SERVICIOS Y DEMONICOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
~]# chkconfig
NetworkManager 0:desactivado 1:desactivado 2:activo 3:activo
4:activo 5:activo 6:desactivado
auditd 0:desactivado 1:desactivado 2:activo 3:activo
4:activo 5:activo 6:desactivado
avahi-daemon 0:desactivado 1:desactivado 2:desactivado 3:activo
4:activo 5:activo 6:desactivado
bluetooth 0:desactivado 1:desactivado 2:desactivado 3:activo
4:activo 5:activo 6:desactivado
cgconfig 0:desactivado 1:desactivado 2:desactivado
3:desactivado 4:desactivado 5:desactivado 6:desactivado
cgred 0:desactivado 1:desactivado 2:desactivado
3:desactivado 4:desactivado 5:desactivado 6:desactivado
crond 0:desactivado 1:desactivado 2:activo 3:activo
4:activo 5:activo 6:desactivado
cups 0:desactivado 1:desactivado 2:activo 3:activo
4:activo 5:activo 6:desactivado
dhcpd 0:desactivado 1:desactivado 2:desactivado
3:desactivado 4:desactivado 5:desactivado 6:desactivado
Cada línea consiste del nombre del servicio seguido por su estado (activo o
desactivado) para cada uno de los siete runlevels.
Para mostrar el estado actual de un servicio determinado, use el siguiente
comando:
chkconfig --list [servicio]
Donde [servicio] es el nombre del servicio a conocer su estado.
Por ejemplo, para mostrar el estado actual del servicio sshd, ejecute:
~]# chkconfig --list sshd
sshd 0:desactivado 1:desactivado 2:activo 3:activo
4:activo 5:activo 6:desactivado
1.3.2.2 Habilitar un servicio
Para habilitar un servicio en los runlevels 2, 3, 4 y 5, ejecute el comando siguiente
como usuario root:
chkconfig [servicio] on
Donde [servicio] es el nombre del servicio a habilitar en los runlevels
mencionados.
SERVICIOS Y DEMONICOS| 5
www.palosanto.com [CURSO DE LINUX AVANZADO]
Por ejemplo, para habilitar el servicio httpd, ejecute:
~]# chkconfig httpd on
Para habilitar un servicio en determinados runlevels solamente, agregue la opción
--level seguido de los números 0 al 6 que representan a cada runlevel en que
quiere iniciar un servicio:
chkconfig [servicio] on --level [runlevels]
Donde [servicio] es el nombre del servicio a habilitar en los [runlevels]
seleccionados.
Por ejemplo, para habilitar el servicio vsftpd en los runlevels 3 y 5, ejecute:
~]# chkconfig vsftpd on --level 35
1.3.2.3 Deshabilitar un servicio
Para deshabilitar un servicio en los runlevels 2, 3, 4 y 5, ejecute el comando
siguiente como usuario root:
chkconfig [servicio] off
Donde [servicio] es el nombre del servicio a habilitar en los runlevels
mencionados.
Por ejemplo, para deshabilitar el servicio httpd, ejecute:
~]# chkconfig httpd off
Para deshabilitar un servicio en determinados runlevels solamente, agregue la
opción --level seguido de los números 0 al 6 que representan a cada runlevel
en que no quiere iniciar un servicio:
chkconfig [servicio] off --level [runlevels]
Donde [servicio] es el nombre del servicio a deshabilitar en los
[runlevels] seleccionados.
Por ejemplo, para deshabilitar el servicio vsftpd en los runlevels 3 y 5, ejecute:
~]# chkconfig vsftpd off --level 35
6 | SERVICIOS Y DEMONICOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
1.4 Ejecución de servicios
La utilidad service le permite iniciar, detener, o reiniciar los servicios ubicados
en el directorio /etc/init.d
1.4.1 Determinar el estado de un servicio
Para determinar el estado actual de un servicio, ejecute el siguiente comando en
una terminal:
service [servicio] status
Donde [servicio]es el nombre del servicio a conocer su estado.
Por ejemplo, para determinar el estado del servicio httpd, ejecute:
~]# service httpd status
Se está ejecutando httpd (pid 1644)...
Para mostrar el estado de todos los servicios disponibles de una sola vez, ejecute
el comando service con la opción --status-all, así:
~]# service --status-all
Se está ejecutando auditd (pid 1085)...
Se está ejecutando avahi-daemon (pid 1171)...
cgred está parado
Se está ejecutando crond (pid 27757)...
Se está ejecutando cupsd (pid 1328)...
dhcpd está parado
dhcrelay está parado
dnsmasq está parado
dovecot está parado
firstboot is not scheduled to run
Se está ejecutando hald (pid 1339)...
Se está ejecutando httpd (pid 1644)...
SERVICIOS Y DEMONICOS| 7
www.palosanto.com [CURSO DE LINUX AVANZADO]
1.4.2 Iniciar un servicio
Para iniciar un servicio, ejecute el siguiente comando en una terminal, como
usuario root:
service [servicio] start
Donde [servicio] es el nombre del servicio a iniciar.
Por ejemplo, para iniciar el servicio httpd, ejecute:
~]# service httpd start
Iniciando httpd: [ OK ]
1.4.3 Detener un servicio
Para detener un servicio que se está ejecutando, escriba el siguiente comando en
una terminal, como usuario root:
service [servicio] stop
Donde [servicio] es el nombre del servicio a detener.
Por ejemplo, para detener el servicio httpd, ejecute:
~]# service httpd stop
Parando httpd: [ OK ]
1.4.4 Reiniciar un servicio
Para reiniciar un servicio, ejecute el siguiente comando en una terminal, como
usuario root:
service [servicio] restart
Donde [servicio] es el nombre del servicio a reiniciar.
Por ejemplo, para reiniciar el servicio httpd, ejecute:
~]# service httpd restart
Parando httpd: [ OK ]
Iniciando httpd: [ OK ]
8 | SERVICIOS Y DEMONICOS
Capítulo 2
[DHCP: DYNAMIC HOST
CONFIGURATION
PROTOCOL]
CONTENIDO
2.1 Concepto
2.2 Porqué usar DHCP?
2.3 Asignación de direcciones IP
2.4 Parámetros configurables
2.5 Implementaciones
2.6 Anatomía del protocolo
2.7 Configuración de un servidor DHCP
www.palosanto.com [CURSO DE LINUX AVANZADO]
2.1 Concepto
DHCP (Dynamic Host Configuration Protocol) es un protocolo de red que permite
a los hosts de una red IP obtener sus parámetros de configuración
automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que
generalmente un servidor posee una lista de direcciones IP dinámicas y las va
asignando a los clientes conforme éstas van estando libres, sabiendo en todo
momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a
quién se la ha asignado después.
2.2 Porqué usar DHCP?
DHCP es útil para la configuración automática de las interfaces de red de los hosts
de la red. En lugar de especificar los valores de dirección IP, máscara de red,
puerta de enlace y servidores DNS, puede realizarlo de manera más ágil con el
uso de DHCP. El servidor DHCP entrega esta información a los clientes.
DHCP también es útil si desea cambiar direcciones IP de un gran número de hosts
en una red. En vez de configurar la red en cada cliente, basta con editar el archivo
de configuración en el servidor DHCP para configurar las nuevas direcciones IP.
Los cambios se realizan en el servidor DHCP y no en los clientes.
Si una organización tiene un servidor DHCP funcional y correctamente conectado
a la red, los equipos portátiles y otros usuarios de equipos móviles podrán mover
estos dispositivos de lugar en lugar, todo de manera transparente.
2.3 Métodos de asignación de direcciones IP
DHCP provee los parámetros de configuración a los hosts conectados a la red
usando el protocolo TCP/IP. Sin DHCP, cada dirección IP debería configurarse
manualmente en cada host y, si dicho host se mueve a otro lugar en otra parte de
la red, se debe configurar otra dirección IP diferente.
DHCP le permite al administrador supervisar y distribuir de forma centralizada las
direcciones IP necesarias y, automáticamente, asignar y enviar una nueva
dirección IP si el host es conectado en un lugar diferente de la red.
El protocolo DHCP incluye los siguientes métodos de asignación de direcciones IP
en una red:
10 | DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
• Asignación manual o estática. Asigna una dirección IP a un host
determinado. Se suele utilizar cuando se quiere controlar la asignación de
dirección IP a cada cliente, y evitar, también, que se conecten clientes no
identificados. Para realizar una asignación manual debe conocer la
dirección MAC de la interfaz de red del host a configurar.
• Asignación dinámica. El único método que permite la reutilización
dinámica de las direcciones IP. El administrador de la red determina un
rango de direcciones IP y cada host conectado a la red está configurado
para solicitar su dirección IP al servidor cuando la tarjeta de interfaz de
red se inicializa. El procedimiento usa un concepto muy simple en un
intervalo de tiempo controlable. Esto facilita la instalación de nuevas
máquinas clientes a la red.
2.4 Parámetros configurables
Un servidor DHCP puede proveer de configuración opcional al host cliente. Las
opciones configurables son:
• Dirección IP
• Máscara de red
• Puerta de enlace
• Servidor DNS
• Nombre DNS
• Servidor NTP
• Servidor SMTP
• Servidor TFTP
• Servidor WINS
• Etc.
2.5 Implementaciones
• Microsoft, introdujo DHCP en sus servidores NT con la versión 3.5 de
Windows NT a finales de 1994. A pesar de que la llamaron una nueva
función no fue inventada por ellos.
• El Consorcio de Software de Internet (ISC: Internet Software Consortium),
publicó distribuciones de DHCP para Unix con la versión 1.0.0 del ISC
DHCP Server el 6 de diciembre de 1997 y una versión 2.0 que se adaptaba
mejor al RFC el día 22 de junio de 1999. Se puede encontrar el software
en http://www.isc.org/software/dhcp/
DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL| 11
www.palosanto.com [CURSO DE LINUX AVANZADO]
• Cisco, habilitó un servidor DHCP en Cisco IOS 12.0 en el mes de febrero de
1999.
• Sun Microsystems, añadió el soporte para DHCP a su sistema operativo
Solaris el 8 de julio de 2001.
El sistema operativo CentOS Linux utiliza la implementación del servicio de la ISC.
2.6 Anatomía del protocolo
Cuando el cliente DHCP arranca resulta evidente que ignora la configuración de
red por lo que necesita realizar las primeras comunicaciones mediante mensajes
de difusión o broadcast. Esta difusión y el resto de las comunicaciones se basan en
el siguiente modelo:
Que utiliza los siguientes tipos de mensajes:
• DHCPDISCOVER: El cliente envía un mensaje de difusión para localizar a
los servidores DHCP activos.
• DHCPOFFER: El servidor responde al cliente con una oferta de parámetros
de configuración conforme a la situación del cliente.
• DHCPREQUEST: Respuesta del cliente solicitando los parámetros
ofertados, en caso de que el mensaje del servidor haya sido aceptado,
rechazando la oferta, si el mensaje del servidor ha sido desestimado o
confirmando la solicitud de una dirección IP obtenida anteriormente.
• DHCPACK: Mensaje de confirmación y cierre desde el servidor hacia el
cliente indicando los parámetros definitivos.
• DHCPNACK: Mensaje que informa desde el servidor al cliente de que la
dirección IP que solicita no es válida para la subred en la que se encuentra
o la dirección IP ya no la puede asignar porque está asignada a otro
equipo.
• DHCPDECLINE: El cliente informa al servidor de que la dirección está en
uso, normalmente porque otro usuario ha asignado esa dirección
manualmente.
12 | DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
• DHCPRELEASE: El cliente informa al servidor de que ha finalizado el uso de
la dirección IP.
• DHCPINFORM: El cliente consulta al servidor la configuración local. El
cliente ya está configurado cuando envía este mensaje.
2.7 Configuración de un servidor DHCP
2.7.1 El servidor dhcp
El software DHCP de la ISC es la implementación de DHCP de código abierto más
ampliamente usada en Internet. Es una solución a nivel empresarial y de
empresas portadores que puede ajustarse a sus necesidades, adecuado para su
uso en aplicaciones de alto volumen y de alta confiabilidad.
El paquete dhcp en CentOS Linux contiene la implementación de servidor DHCP
de ISC.
2.7.2 Archivo de configuración
Instalar el paquete dhcp en su sistema Linux crea el archivo
/etc/dhcp/dhcpd.conf, el cual es su archivo de configuración principal y se
encuentra vacío al inicio.
El primer paso al configurar un servidor DHCP es crear el archivo de configuración
que almacena la información de red para los clientes.
El archivo de configuración puede contener tabulaciones de espacio adicionales o
líneas en blanco para darle un mejor formato. Las directivas de configuración y las
palabras clave son sensitivas al caso, es decir se diferencia entra mayúsculas y
minúsculas. Las líneas que empiezan con un signo de numeral (#) son
consideradas comentarios, por lo tanto no toman efecto.
Al final de este capítulo se encuentra el laboratorio respectivo, el cual le mostrará
el contenido a colocar dentro del archivo de configuración en cuestión para tener
un servidor DHCP funcional.
2.7.3 La base de datos de asignación (Lease database)
En un servidor DHCP, el archivo /var/lib/dhcpd/dhcpd.leases almacena
la base de datos de asignación de direcciones IP a los clientes de una red. No
cambie este archivo, ya que el servicio DHCP almacena aquí la información de
DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL| 13
www.palosanto.com [CURSO DE LINUX AVANZADO]
cada IP asignada de manera automática. La información almacenada incluye el
tiempo de duración de la asignación de la IP, a quién ha sido asignada la dirección
IP identificado a través de la dirección MAC de la interfaz de red del equipo que
solicitó la dirección IP.
2.7.4 Iniciar y detener el servicio
Para iniciar el servicio, ejecute el comando:
~]# service dhcpd start
El servicio dhcpd levanta por defecto en el puerto UDP 67. Para verificar que
está levantado dicho puerto, ejecute el comando:
~]# netstat –anp | grep dhcpd
Para detener el servicio, ejecute el comando:
~]# service dhcpd stop
Por defecto, el servicio dhcpd no inicia a tiempo de arranque del servidor en
ningún runlevel. Para que el servicio se inicie a tiempo de arranque, ejecute:
~]# chkconfig dhcpd on
Si más de una interface de red está conectada al sistema, pero el servidor DHCP
debería ser iniciado en una de las interfaces, puede configurar el servidor DHCP
para que solo inicie en dicho dispositivo. En el archivo
/etc/sysconfig/dhcpd, agregue el nombre de la interfaz de red en la
opción DHCPDARGS, así:
# Command line options here
DHCPDARGS=eth0
Esto es útil, por ejemplo, para un equipo que hace de firewall con dos tarjetas de
red, una para el enlace WAN o Internet y otra para la red interna o LAN.
Especificar solo la tarjeta de red conectada a la red interna hace al sistema más
seguro porque usuarios no podrán conectarse a este servicio por la Internet.
El primer paso al configurar un servidor DHCP es crear el archivo de configuración
que almacena la información de red para los clientes.
14 | DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
Laboratorio 1
Instalación y configuración de un servidor DHCP
1. Verificamos que el software dhcp se encuentre instalado, así:
~]# rpm -q dhcp
dhcp-4.1.1-31.0.1.P1.el6.centos.1.i686
2. Si no es así, procedemos a instalar el paquete antes mencionado para continuar con la
configuración con el comando:
~]# yum install dhcp
3. Ahora vamos a proceder a configurar el archivo /etc/dhcp/dhcpd.conf, el cual a
veces no se encuentra o su contenido no es el correcto. Esto es una medida de
seguridad para prevenir que los usuarios inicien accidentalmente un servidor DHCP sin
configurar sus opciones. De aquí que el administrador debe crear uno nuevo desde
cero o copiarlo desde la documentación del mismo paquete normalmente ubicado en
la ruta /usr/share/doc/dhcp-*/dhcpd.conf.sample. Con la ayuda de
nuestro editor de texto preferido procedemos a abrir el archivo en cuestión, por
ejemplo con el editor VI sería así:
~]# vi /etc/dhcp/dhcpd.conf
El siguiente es un archivo de configuración de ejemplo para una red SOHO (Small
Office/Home Office) y el cual lo configuraremos desde cero en el archivo en cuestión:
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.100;
option subnet-mask 255.255.255.0;
option domain-name "example.com";
option domain-name-servers 192.168.0.100;
option ntp-servers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
range 192.168.0.128 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
host pc1 {
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.0.5;
}
}
DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL| 15
www.palosanto.com [CURSO DE LINUX AVANZADO]
Donde las directivas a configurar significan:
Directiva Definición
option routers Especifica la puerta de enlace para ser utilizada
por los clientes
option subnet-mask La máscara de red especificada para el rango
dado
option domain-name Especifica el nombre de dominio de Internet a
agregar al hostname del cliente
option domain-name-servers Especifica los servidores DNS que el cliente
utilizaría para la resolución de nombres
option ntp-servers Servidores de protocolo de tiempo de Red
disponibles para los clientes
option netbios-name-server El servidor de nombres NetBIOS (WINS)
Range El rango de direcciones IP disponibles para ser
asignadas a los clientes
default-lease-time El tiempo por defecto en segundos que la
dirección IP es asignada
max-lease-time El máximo tiempo en segundos que una
dirección IP es asignada
Host Permite asignar una dirección IP fija a un host
de la red, también conocido como asignación
manual o estática
4. Hay veces cuando es necesario asignar una dirección IP fija (fixed address) a una
estación, esto puede ser fácilmente configurado con las siguientes líneas al final del
archivo /etc/dhcp/dhcpd.conf, tal y como mostramos en el archivo de ejemplo
anterior:
host pc1 {
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.0.5;
}
5. Por seguridad, dhcpd debería asignar direcciones IP solamente por la tarjeta
disponible hacia la red interna o LAN. Esto lo configuramos en el archivo
/etc/sysconfig/dhcpd, así:
~]# vi /etc/sysconfig/dhcpd
Y configuramos la única directiva de este archivo, así por ejemplo con la tarjeta eth0:
# Command line options here
DHCPDARGS=eth0
6. Ahora procederemos a iniciar el servicio dhcpd, así:
~]# service dhcpd start
16 | DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
7. Si deseamos que este demonio se inicialice a tiempo de arranque de nuestro sistema,
ejecutamos:
~]# chkconfig dhcpd on
8. Podemos visualizar el archivo /var/log/messages para verificar si el servicio
dhcpd está activo o en caso de que hayamos tenido algún inconveniente que haya
causado que el servicio no se inicie correctamente, lo podemos ver en este archivo.
Para esto ejecutamos:
~]# grep dhcpd /var/log/messages
9. El instructor procederá a configurar la tarjeta de red de su computador para que reciba
su dirección IP de manera automática a fin de hacer la prueba para este laboratorio.
10. Por último, si queremos saber que direcciones IP hemos asignado a nuestros clientes
visualizamos el archivo /var/lib/dhcpd/dhcpd.leases
DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL| 17
www.palosanto.com [CURSO DE LINUX AVANZADO]
18 | DHCP: DYNAMIC HOST CONFIGURATION PROTOCOL
Capítulo 3
[FTP: FILE TRANSFER
PROTOCOL]
CONTENIDO
3.1 Concepto
3.2 Servidor FTP
3.3 Cliente FTP
3.4 Tipos de acceso a un servidor FTP
3.5 Configuración de un servidor FTP
www.palosanto.com [CURSO DE LINUX AVANZADO]
3.1 Concepto
FTP (File Transfer Protocol) es uno de los protocolos más antiguos y populares que
se encuentran en Internet hoy en día. Su objetivo es el de transmitir archivos
exitosamente entre equipos en una red sin que el usuario tenga que iniciar una
sesión directa en el equipo remoto o que requiera tener conocimientos sobre
cómo utilizar el sistema remoto. FTP permite a los usuarios acceder a archivos en
sistemas remotos usando un conjunto de comandos estándar muy simple.
El servicio FTP funciona por defecto en el puerto TCP 21.
3.2 Servidor FTP
Un servidor FTP es un programa especial que se ejecuta en un equipo servidor
normalmente conectado a Internet (aunque puede estar conectado a otros tipos
de redes: LAN, MAN, etc.). Su función es permitir el intercambio de datos entre
diferentes servidores/estaciones.
Por lo general, los programas servidores FTP no suelen encontrarse en los
computadores personales, por lo que un usuario normalmente utilizará el servicio
FTP para conectarse remotamente a un servidor FTP y así intercambiar
información con él.
Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento
Web, en el que sus clientes utilizan el servicio para subir sus páginas Web y sus
archivos correspondientes; o como servidor de backup (copia de seguridad) de los
archivos importantes que pueda tener una empresa.
3.3 Cliente FTP
Si se quiere cargar o descargar archivos en un equipo de manera remota usando
el protocolo FTP, se necesitará utilizar un programa cliente FTP. Un cliente FTP es
un software que se instala en el computador del usuario, y que emplea el
protocolo FTP para conectarse a un servidor FTP y transferir archivos, ya sea para
descargarlos o para subirlos.
Para utilizar un cliente FTP, se necesita conocer el archivo con el que se desea
interactuar, el directorio y el computador en que reside.
Algunos clientes de FTP básicos en modo de línea de comandos vienen integrados
en los sistemas operativos, incluyendo Microsoft Windows, Linux y Unix. Sin
embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica.
20 | FTP: FILE TRANSFER PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora
de conectarse con servidores FTP utilizar un programa cliente.
Como ejemplos de programas FTP cliente, tenemos: gFTP, FileZilla, FireFTP, etc.
3.4 Tipos de acceso a un servidor FTP
• Acceso anónimo. Los servidores FTP anónimos ofrecen sus servicios
libremente a todos los usuarios, permiten acceder a sus archivos sin
necesidad de tener una cuenta de usuario. Es la manera más cómoda
fuera del servicio Web de permitir que todo el mundo tenga acceso a
cierta información sin que para ello el administrador de un sistema tenga
que crear una cuenta para cada usuario.
Si un servidor posee acceso FTP anónimo, para ingresar basta solamente
con teclear la palabra anonymous cuando pregunte por el usuario de
acceso a tal sistema. No se necesita ninguna contraseña preestablecida,
aunque se debe introducir una sólo para ese momento, normalmente se
suele utilizar la dirección de correo electrónico propia o alguna cadena de
caracteres tenga formato de una cuenta de correo electrónico.
Con esto, solamente se consigue acceso a los archivos públicos del
servidor FTP, aunque con menos privilegios que un usuario normal.
Solamente se podrá leer y copiar los archivos existentes, pero no
modificarlos ni crear otros nuevos.
Normalmente, se utiliza un servidor FTP anónimo para depositar grandes
archivos que no tienen utilidad si no son transferidos a la máquina del
usuario, como por ejemplo instaladores de programas o archivos de
documentación.
• Acceso de usuario. Si se desea tener privilegios de acceso a cualquier
parte del sistema de archivos del servidor FTP, de modificación de
archivos existentes, y de posibilidad de subir nuestros propios archivos,
generalmente se suele realizar mediante una cuenta de usuario.
En el servidor se guarda la información de las distintas cuentas de usuario
que pueden acceder a él, de manera que para iniciar una sesión FTP
debemos introducir un usuario y una contraseña que nos identifica
unívocamente.
FTP: FILE TRANSFER PROTOCOL| 21
www.palosanto.com [CURSO DE LINUX AVANZADO]
3.5 Configuración de un servidor FTP
3.5.1 El servidor vsftpd
vsftpd (Very Secure FTP Daemon) es el software de servidor FTP primario que se
incluye en versiones de Red Hat o sus variantes como Fedora y CentOS.
El demonio vsftpd está diseñado desde la base para ser rápido, estable y lo más
importante, seguro. Además posee la habilidad para manejar grandes números de
conexiones de forma eficiente y segura.
http://vsftpd.beasts.org
A continuación, un listado de algunos sitios críticos que utilizan vsftpd:
• ftp.redhat.com
• ftp.suse.com
• ftp.debian.org
• ftp.freebsd.org
• ftp.gnu.org
• ftp.gnome.org
• ftp.kde.org
• ftp.kernel.org
• rpmfind.net
• ftp.linux.org.uk
• ftp.gimp.org
• ftp-stud.fht-esslingen.de
• gd.tuwien.ac.at
• ftp.sunet.se
• ftp.ximian.com
• ftp.engardelinux.org
• ftp.sunsite.org.uk
• ftp.isc.org
3.5.2 Archivos de configuración
El instalador de vsftpd instala el demónico del servicio, sus archivos de
configuración y relacionados, así como también los directorios FTP en el sistema.
La siguiente es una lista de los archivos y directorios instalados:
22 | FTP: FILE TRANSFER PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
Item Descripción
/etc/rc.d/init.d/vsftpd El script de inicio usado por el comando service
para iniciar, detener o reiniciar el servicio
/etc/vsftpd/vsftpd.conf El archivo de configuración del vsftpd
/etc/vsftpd/ftpusers Un listado de usuarios no permitidos de iniciar sesión
en vsftpd. Por defecto, este archivo incluye al
usuario root, bin, entre otros
/var/ftp/ El directorio que contiene los archivos servidos por
vsftpd. También contiene el directorio
/var/ftp/pub/ para los usuarios anónimos.
Ambos directorios están disponibles para lectura en
general, pero sólo el usuario root puede escribir en él
3.5.3 Iniciar y detener el servicio
Para iniciar el servicio, ejecute el comando como root:
~]# service vsftpd start
El servicio vsftpd levanta por defecto en el puerto TCP 21. Para verificar que
está levantado dicho puerto, ejecute el comando:
~]# netstat –anp | grep vsftpd
Para detener el servicio, ejecute el comando:
~]# service vsftpd stop
Si ha realizado una configuración y desea aplicar los cambios, reinicie el servicio,
así:
~]# service vsftpd restart
Por defecto, el servicio vsftpd no inicia a tiempo de arranque del servidor en
ningún runlevel. Para que el servicio se inicie a tiempo de arranque, ejecute:
~]# chkconfig vsftpd on
FTP: FILE TRANSFER PROTOCOL| 23
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 2
Instalación y configuración de un servidor FTP
anónimo
En este laboratorio vamos a instalar y configurar un servidor FTP de acceso anónimo.
1. Verificamos que vsftpd se encuentre instalado en el equipo, así:
~]# rpm -q vsftpd
vsftpd-2.2.2-11.el6.i686
2. Si no es así, procedemos a instalarlo con el comando:
~]# yum install vsftpd
3. Vamos a editar el archivo de configuración /etc/vsftpd/vsftpd.conf. En el
cuadro siguiente se muestran las directivas a configurar. Las demás directivas quedan
con su valor por defecto, el cual es suficiente para levantar el servidor FTP anónimo:
Directiva Descripción
anonymous_enable = YES Su valor puede ser YES o NO. Si se configura
con YES se permitirá acceso con usuario
anónimo (anonymous) a nuestro servidor FTP,
caso contrario no. El directorio de inicio por
defecto de este usuario será /var/ftp
write_enable = NO Su valor puede ser YES o NO. Esta directiva
habilita cualquier forma de escritura o carga
de archivos en el servidor FTP
anon_upload_enable = NO Su valor puede ser YES o NO. Cuando está
habilitado en conjunto con la directiva
write_enable, los usuarios anónimos
podrán subir archivos
anon_mkdir_write_enable = NO Su valor puede ser YES o NO. Cuando está
habilitado en conjunto con la directiva
write_enable, los usuarios anónimos
podrán crear nuevos directorios
xferlog_enable = YES Su valor puede ser YES o NO. Si es configurado
con YES se activará el registro de cargas y
descargas en el archivo definido en la
directiva xferlog_file
xferlog_file = /var/log/xferlog El nombre del archivo de log. Su valor por
defecto es /var/log/xferlog
ftpd_banner = Servidor FTP Si está activada, se muestra la cadena de
caracteres especificada en esta directiva
cuando se establece una conexión con el
servidor. Por defecto, vsftpd muestra su
pancarta estándar
24 | FTP: FILE TRANSFER PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
4. Finalmente procedemos a iniciar el servidor vsftpd, así:
~]# service vsftpd start
5. Ahora, si deseamos que este servicio se inicie a tiempo de arranque de nuestro
sistema, ejecutamos:
~]# chkconfig vsftpd on
6. Finalmente, para verificar que nuestro servidor FTP está funcional vamos a proceder a
conectarnos ejecutando el comando ftp desde la terminal, así:
~]# ftp localhost
Siga las instrucciones del instructor sobre como subir y descargar archivos con el uso
de este comando.
O también ejecutando una instancia del navegador Firefox en nuestro ambiente
gráfico, escribimos la siguiente dirección URL:
ftp://localhost/
Nótese que estamos realizando la prueba al conectarnos con nuestro propio equipo,
podemos hacerlo también a modo de práctica conectándonos con el equipo de uno de
nuestros compañeros.
FTP: FILE TRANSFER PROTOCOL| 25
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 3
Instalación y configuración de un servidor FTP con
acceso de usuario
En este laboratorio vamos a instalar y configurar un servidor FTP con acceso de usuario, para
esto, usaremos los usuarios locales del sistema que se almacenan en el archivo
/etc/passwd.
1. Vamos a editar el archivo de configuración /etc/vsftpd/vsftpd.conf. En el
cuadro siguiente se muestran las directivas a configurar. Las demás directivas quedan
con su valor por defecto, el cual es suficiente para levantar el servidor FTP con acceso
de usuario:
Directiva Descripción
anonymous_enable = NO Su valor puede ser YES o NO. Si se configura
con YES se permitirá acceso con usuario
anónimo (anonymous) a nuestro servidor FTP,
caso contrario no. El directorio de inicio por
defecto de este usuario será /var/ftp
local_enable = YES Su valor puede ser YES o NO. Al estar
habilitada, los usuarios locales pueden
conectarse al sistema. El directorio de inicio
para cada usuario será su respectivo existente
en /home
write_enable = YES Su valor puede ser YES o NO. Esta directiva
habilita cualquier forma de escritura o carga
de archivos en el servidor FTP
xferlog_enable = YES Su valor puede ser YES o NO. Si es configurado
con YES se activará el registro de cargas y
descargas en el archivo definido en la
directiva xferlog_file
xferlog_file = /var/log/xferlog El nombre del archivo de log. Su valor por
defecto es /var/log/xferlog
ftpd_banner = Servidor FTP Si está activada, se muestra la cadena de
caracteres especificada en esta directiva
cuando se establece una conexión con el
servidor. Por defecto, vsftpd muestra su
pancarta estándar
chroot_list_enable = YES Su valor puede ser YES o NO. Cuando está
activada, se coloca una prisión de chroot a
los usuarios locales listados en el archivo
especificado en la directiva
chroot_list_file
chroot_list_file = Especifica el archivo que contiene la lista de
/etc/vsftpd/chroot_list usuarios locales a los que se hace referencia
cuando la directiva chroot_list_enable
está en YES. Puede ser que este archivo no
26 | FTP: FILE TRANSFER PROTOCOL
[CURSO DE LINUX AVANZADO] www.palosanto.com
esté creado, así que habría que crearlo conel
comando touch, así:
touch /etc/vsftpd/chroot_list
2. Procedemos a crear un usuario local en el sistema, el mismo que será utilizado para
acceder al servicio FTP. El usuario a crear será userXX, donde XX representa el
número de máquina asignada a Ud. Creamos el usuario con el siguiente comando:
~]# useradd userXX
Y le asignamos una contraseña con el siguiente comando:
~]# passwd userXX
3. Ahora, vamos a proceder a crear el archivo /etc/vsftpd/chroot_list (si el
archivo ya está creado omitimos este paso) con el comando:
~]# touch /etc/vsftpd/chroot_list
Lo abrimos con nuestro editor de texto preferido, por ejemplo VI:
~]# vi /etc/vsftpd/chroot_list
Y agregamos el usuario userXX que acabamos de crear. Guardamos los cambios.
4. Procedemos a reiniciar el servidor vsftpd, para que los cambios tomen efecto:
~]# service vsftpd restart
5. Finalmente, para verificar que nuestro servidor FTP está funcional vamos a proceder a
conectarnos con el usuario que hemos creado ejecutando el comando ftp desde la
terminal, así:
~]# ftp localhost
Siga las instrucciones del instructor sobre como subir y descargar archivos con el uso
de este comando.
O también ejecutando una instancia del navegador Firefox en nuestro ambiente
gráfico, nos conectamos con el usuario creado, para esto escribimos la siguiente
dirección URL:
ftp://userXX@localhost/
Nos pedirá ingresar la clave que le hemos asignado a dicho usuario.
FTP: FILE TRANSFER PROTOCOL| 27
Capítulo 4
[DNS: DOMAIN NAME
SYSTEM]
CONTENIDO
4.1 Introducción a DNS
4.2 La tabla de hosts
4.3 El sistema DNS
4.4 Top Level Domains (TLDs)
4.5 Root Servers
4.6 Zonas DNS
4.7 Tipos de servidores DNS
4.8 Configuración de un servidor DNS
[CURSO DE LINUX AVANZADO] www.palosanto.com
4.1 Introducción
Una vez que se han configurado las direcciones IP en los diferentes hosts, una red
TCP/IP se encuentra totalmente operativa. Sin embargo, para fines prácticos hay
que complementar un paso adicional: la configuración de la resolución de
nombres.
Un servicio de resolución de nombres permite a los hosts de una red transformar
nombres en direcciones IP y viceversa.
Sabemos que, a fin de acceder a servicios a través de la red, es necesario hacer
referencia a aquellos hosts que los ofrecen, las cuales se conectan a una o más
redes por medio de interfaces de red. Como se ha visto, cada interfaz o tarjeta de
red conectada a una red TCP/IP se identifica con una dirección IP numérica, por lo
que para hacer referencia a la misma, es necesario conocer dicho número.
Si bien los protocolos de comunicaciones y las aplicaciones informáticas se sienten
a gusto utilizando números, no ocurre lo mismo con las personas, quienes
prefieren utilizar nombres para designar a los hosts de la red, ya que son más
fáciles de recordar. Seguramente es más probable que el nombre del sitio Web de
Google (www.google.com) esté más presente en la memoria de sus usuarios que
su dirección IP (201.218.56.240).
Otra razón para utilizar nombres en lugar de números es el aislar a los usuarios de
posibles cambios en la distribución de las direcciones IP. Por ejemplo, si el
programa que habitualmente se utiliza para leer correo electrónico está
configurado para obtener mensajes a partir de la dirección IP 172.16.4.205, el
administrador de red necesitará notificar a todos los usuarios que deberán
reconfigurarlo si el servidor de correo se muda a otro equipo, o si la dirección IP
del equipo en el que reside se cambia por alguna razón. Por medio de la
utilización del servicio de resolución de nombres, el programa de correo
electrónico puede configurarse para obtener los mensajes de una máquina
llamada, por ejemplo mail.example.com, independientemente de dónde se
ubique físicamente.
4.2 La tabla de hosts
Para implementar un servicio de nombres es necesario confeccionar una lista en
la que se relacionen nombres con direcciones IP; cuando un programa necesita
resolver un nombre (esto es, dado un nombre encontrar la dirección IP), debe
consultar dicha lista.
DNS: DOMAIN NAME SYSTEM| 29
www.palosanto.com [CURSO DE LINUX AVANZADO]
En un principio, la resolución de nombres se implementó por medio de un archivo
ubicado en cada máquina de la red que contenía dicha lista. En el caso de UNIX,
ese archivo es el /etc/hosts y tiene el siguiente formato por ejemplo:
127.0.0.1 localhost.localdomain localhost
170.25.1.2 www.rigel.com rigel
170.25.1.254 www.orion.com orion
170.25.2.1 ftp.altair.com altair
170.25.2.254 mail.canoups.com canoups
170.25.3.1 irc.aldebaran.com aldebaran
170.25.3.253 ftp.andromeda.com andromeda
La tabla de hosts provee de un mecanismo sencillo para implementar la
resolución de nombres. Sin embargo, a medida que la red crece y debido a que la
información está duplicada en cada host de la red, su mantenimiento se hace
cada vez más laborioso. La situación se complica si varias redes TCP/IP se
interconectan, en cuyo caso, a las tareas de sincronización de tablas entre
diferentes hosts hay que sumar el control de nombres duplicados para máquinas
diferentes.
Para solucionar estos problemas de escalabilidad, el mecanismo de resolución de
nombres evolucionó hacia uno mucho más sofisticado: el Sistema de Nombres de
Dominio, o DNS (Domain Name System).
Sin embargo, aún cuando se utilice DNS, es necesario contar con una tabla de
hosts mínima a ser utilizada por el sistema operativo durante el arranque, con
información suficiente para resolver el nombre de la máquina y el nombre
localhost asociado con la dirección de loopback.
4.3 El sistema DNS
La tabla de hosts fue reemplazada por un esquema mucho más potente y flexible,
adecuado para las necesidades de escalabilidad y tolerancia a fallas de grandes
redes como Internet.
DNS (Domain Name System) es sistema de base de datos distribuido y jerárquico
que almacena información asociada a nombres de dominio en redes como
Internet.
Al contrario de la tabla de hosts, requiere limitado mantenimiento centralizado.
Además, posee técnicas para distribuir automáticamente la información de su
base de datos a los servidores que lo necesitan. Los sistemas no requieren
mantener copias completas de esta base de datos y pueden aprender lo que
necesiten cuando lo necesiten.
Aunque como base de datos, el sistema DNS es capaz de asociar diferentes tipos
de información a cada nombre, los usos más comunes son la asignación de
30 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
nombres de dominio a direcciones IP y la localización de los servidores
ser de correo
electrónico de cada dominio de Internet existente.
4.4 Top Level Domains (TLDs)
Un servidor DNS mantiene la lista de direcciones y nombres de una o más
agrupaciones de hosts o máquinas, llamadas dominios. DNS organiza estos
nombres en una jerarquía de dominios.
Una estructura de árbol bien podría representar el espacio de nombres o
dominios. La raíz del árbol que se identifica con un punto sencillo (.) es lo que se
denomina dominio raíz y es el origen de todos los dominios.
com ec
google example
gye uio
srv1 srv2
Por ejemplo, de acuerdo a la figura anterior, el nodo srv1 sería:
srv1.gye.example.com.
A este nombre completo se lo conoce como totalmente calificado o FQDN (Fully
(
Qualified Domain Name). Hay veces que su escritura termina en un punto, este
omain Name).
punto significa que el último componente es el dominio raíz. Normalmente se
omite el punto porque se sobrentiende que siempre está al final.
Dependiendo de su localización en la jerarquía, un dominio puede ser de primer
nivel (top
top level domain o TLD), segundo nivel o tercer nivel, etc. Se pueden añadir
todos los niveles que queramos, pero no son habituales.
El siguiente cuadro contiene una lista de los dominios de primer nivel que vemos
con frecuencia:
DNS: DOMAIN NAME SYSTEM| 31
www.palosanto.com [CURSO DE LINUX AVANZADO]
Top Level Domain Descripción
com Organizaciones comerciales
edu Instituciones educativas (USA)
gov Agencias gubernamentales (USA)
mil Instituciones militares (USA)
net Organizaciones de telecomunicaciones
org Organizaciones de otro tipo
Inicialmente los cuatro primeros dominios de la lista anterior pertenecían solo a
los Estados Unidos, sin embargo, los cambios de política posteriores han hecho
que estos dominios, llamados dominios globales de primer nivel (gTLD) sean
realmente globales.
Fuera de los Estados Unidos, cada país suele tener su propio dominio de primer
nivel codificado con las dos letras del país definidas en la tabla ISO-3166. A estos
dominios se los conoce como geográficos. En el caso de Ecuador, es representado
por ec. Para más información acerca de los códigos para cada país, revisar el sitio:
http://www.iso.org/iso/country_codes
Para más información acerca de dominios de primer nivel, visitar la página web:
http://www.icann.org/tlds/
4.5 Root Servers
Un root server es un servidor DNS que contiene y contesta requerimientos para el
dominio raíz, y redirecciona requerimientos para un dominio de primer nivel (TLD)
en particular hacia los servidores DNS de aquel TLD.
El término root server es generalmente usado para describir a los trece root
servers que implementan el espacio de nombres para el dominio raíz de la
implementación global de DNS oficial para la Internet.
Actualmente existen 13 root servers especificados, cuyos nombres tienen la
forma:
letter.root-servers.net
Donde letter representa un rango que va desde la A hasta la M. (Siete de estos
servidores no son servidores únicos, pero representan varios servidores físicos
cada uno en múltiples ubicaciones geográficas).
No pueden especificarse más nombres debido a las limitaciones del protocolo, ya
que un paquete UDP puede solamente llevar confiablemente 512 bytes y un
archivo hint (que contiene la localización de los root servers) con más de 13
servidores sería más largo que 512 bytes. Pero los servidores C, F, I, J, K, L y M
32 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
existen en múltiples locaciones en diferentes continentes, usando una tecnología
de networking llamada anycast para proveer un servicio descentralizado.
Para más información acerca de los root servers visitar el sitio web:
http://www.root-servers.org/
4.6 Zonas DNS
El sistema DNS hace más cosas. Permite delegar la autoridad de un dominio o
subdominio a sus administradores. De ahí que cada uno tiene responsabilidad del
gran sistema global de DNS.
Para esto, el espacio de nombres se divide en zonas, cada una asignada a un
dominio.
Hay que ver la diferencia entre zona y dominio. Por ejemplo, de acuerdo a la
figura anterior, el dominio example.com incluye todos los hosts y subdominios
de éste. Mientras que la zona example.com sólo incluye los hosts del dominio,
no los subdominios delegados.
4.6.1 Archivos de zona
Al momento de configurar un servidor DNS, cada zona se asocia con un archivo de
texto plano que contendrá toda la información de los hosts para un dominio dado.
Los archivos de zonas están compuestos de lo que en inglés se conoce como
resource records o, simplemente, RRs, y tienen un tipo asociado. Nosotros
simplemente vamos a llamarlos registros.
El cuadro siguiente muestra una lista de los tipos de registro que más se utilizan:
Resource Record Descripción
Start of Authority. Este registro empieza la descripción de
SOA
un sitio en un archivo de zona
Name Servers. Este registro especifica los servidores de
NS
nombres autorizados para un dominio dado
Address Record. Este registro es usado para proveer las
A
traslaciones de nombres de host a direcciones IP
Canonical Name. Este registro hace posible que un host
CNAME
tenga varios nombres o aliases
Pointer Record. Este registro permite convertir una
PTR
dirección IP en un nombre de host
Mail Exchanger. Este registro especifica que host en el
MX
dominio tiene la tarea de recibir correo electrónico
DNS: DOMAIN NAME SYSTEM| 33
www.palosanto.com [CURSO DE LINUX AVANZADO]
Los archivos de zona son almacenados en un servidor DNS primario, donde se
efectúan los cambios y los servidores DNS secundarios reciben las definiciones de
la zona del servidor primario.
4.7 Tipos de servidores DNS
Cada servidor DNS tiene autoridad para cero o más zonas. Hay tres tipos de
servidores de nombres:
• Primario. Un servidor de nombres primario alberga la información de una
zona, ya que contiene el archivo de zona alojado en su disco duro y tiene
autoridad sobre ella. El servidor primario para un dominio es el servidor
en el cual todos los datos acerca de este dominio son derivados de él.
Estos datos son los registros contenidos en un archivo de zona y son
suplidos por el administrador, quien configura los archivos de zona.
• Secundario. Un servidor de nombres secundario tiene autoridad sobre
una zona, pero obtiene la información de esa zona de un servidor
primario utilizando un proceso llamado transferencia de zona. Para
permanecer sincronizado, los servidores de nombres secundarios
consultan a los primarios regularmente y reejecutan la transferencia de
zona si el primario ha sido actualizado. Un servidor de nombres puede
operar como primario o secundario para múltiples dominios, o como
primario para unos y secundario para otros. Tanto un servidor primario
como un secundario realizan todas las funciones de un servidor caché.
• Caché. Un servidor de nombres que no tiene autoridad para ninguna zona
se denomina servidor caché o caching. Obtiene todos sus datos de
servidores primarios o secundarios, consultado previamente a los root
servers. Todo servidor caché posee un archivo hint que contiene la
ubicación de todos los root servers, de ahí que está en la capacidad de
poder resolver cualquier dominio de Internet por sí mismo.
4.8 Configuración de un servidor DNS
4.8.1 El servidor BIND
BIND (Berkeley Internet Name Domain) es el servidor de DNS más comúnmente
usado en Internet, especialmente en sistemas UNIX, en los cuales es un estándar
de facto. Es patrocinado y desarrollado por la ISC (Internet Systems Consortium).
BIND fue creado originalmente por cuatro estudiantes de grado en la Universidad
34 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
de California en Berkeley y liberado por primera vez en BSD 4.3. Paul Vixie
comenzó a mantenerlo en 1988.
Una nueva versión de BIND (BIND 9) fue escrita desde cero en parte para superar
las dificultades arquitectónicas presentes anteriormente para auditar el código en
las primeras versiones de BIND, y también para incorporar DNSSEC (DNS Security
Extensions). BIND 9 incluye entre otras características importantes: TSIG,
notificación DNS, nsupdate, IPv6, rndc flush, vistas, procesamiento en paralelo, y
una arquitectura mejorada en cuanto a portabilidad. Es comúnmente usado en
sistemas Linux.
En este curso nos basaremos en BIND 9. Para mayor información acerca de BIND
visitar el sitio:
http://www.isc.org/software/bind/
4.8.2 Archivos de configuración
Instalar el paquete bind en su sistema Linux instala el demónico, los archivos de
configuración del software BIND.
La siguiente es una lista de los archivos y directorios instalados:
Item Descripción
/etc/rc.d/init.d/named El script de inicio usado por el comando service
para iniciar, detener o reiniciar el servicio
/etc/named.conf El archivo de configuración de BIND
/var/named El directorio que contiene los archivos de zona. En
este directorio también se aloja el archivo hint que es
donde está toda la información para ubicar a los root
servers
4.8.3 Iniciar y detener el servicio
Para iniciar el servicio, ejecute el comando:
~]# service named start
El servicio named levanta por defecto en el puerto UDP 53. Para verificar que
está levantado dicho puerto, ejecute el comando:
~]# netstat –anp | grep named
Para detener el servicio, ejecute el comando:
~]# service named stop
DNS: DOMAIN NAME SYSTEM| 35
www.palosanto.com [CURSO DE LINUX AVANZADO]
Por defecto, el servicio named no inicia a tiempo de arranque del servidor en
ningún runlevel. Para que el servicio se inicie a tiempo de arranque, ejecute:
~]# chkconfig named on
4.8.4 La utilidad dig
dig (Domain Information Groper) permite realizar consultas a los servidores DNS,
por lo que es muy útil para comprobar si el DNS está correctamente configurado
en nuestro servidor o para consultar cualquier nombre de dominio en Internet,
inclusive consultas reversas.
Permite comprobar tanto el mapeo de nombres a direcciones IP como el mapeo
inverso de direcciones IP a nombres, pero sólo sirve para Internet, ya que no mira
en /etc/hosts.
Su sintaxis es:
dig [@servidor_dns] [tipo] [nombre]
Donde:
• [@servidor_dns]: Nombre o IP del servidor DNS al que queremos
dirigir nuestra consulta, por ejemplo @dns1.example.com. Si no
especificamos este parámetro, utilizará los servidores DNS listados en
/etc/resolv.conf
• [nombre]: Nombre de dominio cuya IP queremos resolver
• [tipo]: Tipo de consulta a realizar. Valores posibles son:
Tipo de consulta Descripción
NS Servidores DNS
A Nombres de host (IPv4)
AAAA Nombres de host (IPv6)
MX Servidores de correo electrónico
ANY Todas las anteriores
Consultas reversas, el valor a consultar debe ser una
-x
dirección IP
36 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
Ejemplos:
Si queremos consultar el registro www.palosanto.com al servidor DNS
público de Google (8.8.8.8), ejecutamos el comando:
~]# dig @8.8.8.8 A www.palosanto.com
;; QUESTION SECTION:
;www.palosanto.com. IN A
;; ANSWER SECTION:
www.palosanto.com. 5416 IN A 38.126.208.166
;; Query time: 90 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Apr 20 20:54:04 2013
;; MSG SIZE rcvd: 51
Si queremos realizar una consulta reversa de la dirección IP 201.234.196.171
al servidor DNS público de Google (8.8.8.8), ejecutamos el comando:
~]# dig @8.8.8.8 -x 201.234.196.171
;; QUESTION SECTION:
;171.196.234.201.in-addr.arpa. IN PTR
;; ANSWER SECTION:
171.196.234.201.in-addr.arpa. 21437 IN PTR mail.palosanto.com.
;; Query time: 91 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Apr 20 20:57:59 2013
;; MSG SIZE rcvd: 78
DNS: DOMAIN NAME SYSTEM| 37
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 4
Configuración de un servidor DNS caché
Un servidor caché o caching-only encontrará la respuesta a sus requerimientos de nombres de
host, y recordará la respuesta (la almacena en caché) para una próxima consulta hacia ese
mismo nombre.
1. Verificamos que se encuentren instalados los paquetes bind, bind-libs y bind-
utils, así:
~]# rpm -qa | grep bind
bind-utils-9.8.2-0.10.rc1.el6_3.5.i686
bind-9.8.2-0.10.rc1.el6_3.5.i686
bind-libs-9.8.2-0.10.rc1.el6_3.5.i686
2. Si no es así, instale los paquetes respectivos con el comando:
~]# yum install bind bind-libs bind-utils
3. Ahora vamos a editar el archivo de configuración /etc/named.conf. Ubicamos las
siguientes líneas en dicho archivo:
listen-on port 53 { 127.0.0.1; };
allow-query { localhost; };
y modificamos por:
listen-on port 53 { 192.168.0.1; 127.0.0.1; };
allow-query { 192.168.0.0/24; localhost; };
Donde 192.168.0.1 es la dirección IP de nuestro servidor y 192.168.0.0/24
representa a la red IP a la que deseamos dar acceso para que pueda realizar consultas
a nuestro servidor. Caso contrario, solo localhost será el único host permitido.
Debemos editar este archivo de acuerdo a la dirección IP que nos ha sido asignada en
nuestro equipo en el laboratorio o la que usted disponga en su organización por
ejemplo.
4. Ahora procedemos a levantar el servicio de DNS, dado por el demónico named, así:
~]# service named start
38 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
5. Si deseamos que el servicio se inicie cada vez que arranca el servidor, ejecutamos el
comando:
~]# chkconfig named on
6. Para verificar que named se encuentra trabajando y funcionando, podemos ejecutar el
comando:
~]# netstat –anp |grep named
7. Finalmente, con el uso de la utilidad dig, vamos a realizar una consulta para verificar
nuevamente que el servidor DNS caché está funcionado correctamente:
~]# dig @localhost A www.palosanto.com
;; QUESTION SECTION:
;www.palosanto.com. IN A
;; ANSWER SECTION:
www.palosanto.com. 86400 IN A 38.126.208.166
;; AUTHORITY SECTION:
palosanto.com. 172799 IN NS ns7.palosanto.com.
palosanto.com. 172799 IN NS ns1.palosanto.com.
;; ADDITIONAL SECTION:
ns1.palosanto.com. 172799 IN A 38.126.208.136
ns7.palosanto.com. 172799 IN A 38.126.208.137
;; Query time: 679 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Apr 20 21:38:02 2013
;; MSG SIZE rcvd: 119
Puede verificar además, realizando una consulta hacia el servidor DNS de su
compañero de clase.
DNS: DOMAIN NAME SYSTEM| 39
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 5
Configurando un servidor DNS primario
Para este laboratorio necesitamos los mismos paquetes de software listados en el laboratorio
anterior. Vamos a suponer que el dominio con el que vamos a trabajar es exampleXX.com
(donde XX es el número de máquina a Ud asignada)y que la dirección IP de nuestro equipo es
192.168.0.1 (cada estudiante deberá trabajar con la dirección IP asignada a su máquina).
1. Primero vamos a editar el fichero /etc/named.conf, si no lo tiene disponible
solicítelo a su instructor o cree uno similar a esto:
options {
listen-on port 53 { 192.168.0.1; 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file
"/var/named/data/named_mem_stats.txt";
allow-query { 192.168.0.0/24; localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2. Ahora vamos a agregar la definición de nuestra zona, al final del archivo y justo antes
de la línea include "/etc/named.rfc1912.zones"; así:
40 | DNS: DOMAIN NAME SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
zone "exampleXX.com" {
type master;
file "exampleXX.com.zone";
allow-update { none; };
};
3. Ahora vamos a crear el archivo de zona exampleXX.com.zone definido
previamente, lo ubicamos en la ruta /var/named/, cuyo contenido sería algo como
(el instructor explicará el significado de cada ítem):
$TTL 86400
@ IN SOA ns1.exampleXX.com. dnsadmin.exampleXX.com.(
2013042101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.exampleXX.com.
IN NS ns2.exampleXX.com.
MX 1 mail.exampleXX.com.
MX 5 mail2.exampleXX.com.
ns1.exampleXX.com. IN A 192.168.0.1
ns2.exampleXX.com. IN A 192.168.0.15
mail.exampleXX.com. IN A 192.168.0.100
mail2.exampleXX.com. IN A 200.45.6.54
www.exampleXX.com. IN A 76.56.134.1
ftp.exampleXX.com. IN CNAME www.exampleXX.com.
irc.exmapleXX.com. IN CNAME www.exampleXX.com.
No olvide aumentar por lo menos en 1 el número serial cada vez que realiza un cambio
en su archivo de zona para que el cambio realizado sea tomado en cuenta por named.
4. Luego de esto procedemos a reiniciar el servicio named, así:
~]# service named restart
5. Para verificar que la zona que hemos creado ha sido cargada satisfactoriamente
podemos ejecutar el comando:
~]# cat /var/log/messages | grep exampleXX
Apr 21 13:29:00 srv1 named[3116]: zone exampleXX.com/IN:
loaded serial 2013042101
Esto significa que la zona creada ha sido cargada satisfactoriamente.
DNS: DOMAIN NAME SYSTEM| 41
www.palosanto.com [CURSO DE LINUX AVANZADO]
6. Finalmente, procedemos a verificar que nuestro servidor DNS funciona utilizando el
comando dig, así por ejemplo:
~]# dig @localhost MX exampleXX.com
;; QUESTION SECTION:
;exampleXX.com. IN MX
;; ANSWER SECTION:
exampleXX.com. 86400 IN MX 1 mail.exampleXX.com.
exampleXX.com. 86400 IN MX 5 mail2.exampleXX.com.
;; AUTHORITY SECTION:
exampleXX.com. 86400 IN NS ns1.exampleXX.com.
exampleXX.com. 86400 IN NS ns2.exampleXX.com.
;; ADDITIONAL SECTION:
mail.exampleXX.com. 86400 IN A 192.168.0.100
mail2.exampleXX.com. 86400 IN A 200.45.6.54
ns1.exampleXX.com. 86400 IN A 192.168.0.1
ns2.exampleXX.com. 86400 IN A 192.168.0.15
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 21 13:29:52 2013
;; MSG SIZE rcvd: 174
42 | DNS: DOMAIN NAME SYSTEM
Capítulo 5
[SERVIDOR WEB]
CONTENIDO
5.1 Protocolo HTTP
5.2 Configuración de un servidor Web
5.3 Hosting virtual
www.palosanto.com [CURSO DE LINUX AVANZADO]
5.1 Protocolo HTTP
El protocolo HTTP (HyperText Transfer Protocol) es usado en cada transacción de
la World Wide Web. Define la sintaxis y la semántica que utilizan los elementos
software de la arquitectura Web (clientes y servidores) para comunicarse.
Es un protocolo orientado a transacciones y sigue el esquema cliente-servidor. Al
cliente que efectúa el requerimiento (generalmente, un navegador Web) se lo
conoce como user agent (agente de usuario). A la información transmitida se la
llama recurso y se la identifica mediante un URL. Los recursos pueden ser
archivos, el resultado de la ejecución de un programa, una consulta a una base de
datos, la traducción automática de un documento, etc.
HTTP utiliza por defecto el puerto TCP 80.
5.2 Configuración de un servidor Web
5.2.1 El servidor HTTP Apache
Apache es un software de servidor HTTP de código abierto multiplataforma
desarrollado por The Apache Software Foundation. Es el servidor de páginas Web
más popular de Internet, ya que casi el 80% de servidores Web en el mundo lo
utilizan.
Para más información acerca de Apache, visite el sitio:
http://httpd.apache.org
5.2.2 Funcionamiento de Apache
1. El cliente mediante el uso de un navegador Web escribe una dirección Web o
recurso en la barra de direcciones o URL, como por ejemplo
www.example.com.
2. El computador cliente debe consultar al servidor DNS, definido en su
configuración de red, la dirección IP del nombre del sitio al cual se desea
conectar.
3. Una vez que el computador cliente conoce la dirección IP del servidor Web
donde está alojada la página, realiza un conexión al puerto TCP 80 de dicho
servidor.
4. El servidor Web, que se encuentra ejecutando Apache, recibe la petición, la
procesa y sirve la página Web solicitada al cliente. La página Web a servir se
encuentra alojada en un directorio del servidor, el cual contiene el sitio Web
al cual los clientes van a acceder.
44 | SERVIDOR WEB
[CURSO DE LINUX AVANZADO] www.palosanto.com
5.2.3 Archivo de configuración
El paquete httpd instala el software Apache en CentOS Linux. Instala el
demónico y los archivos de configuración, los cuales se citan a continuación:
Item Descripción
/etc/rc.d/init.d/httpd El script de inicio usado por el comando service
para iniciar, detener o reiniciar el servicio
/etc/httpd/conf/httpd.conf El archivo de configuración principal de Apache
HTTP
5.2.4 Iniciar y detener el servicio
Para iniciar el servicio, ejecute el comando:
~]# service httpd start
El servicio httpd levanta por defecto en el puerto TCP 80. Para verificar que está
levantado dicho puerto, ejecute el comando:
~]# netstat –anp | grep httpd
Para detener el servicio, ejecute el comando:
~]# service httpd stop
Por defecto, el servicio httpd no inicia a tiempo de arranque del servidor en
ningún runlevel. Para que el servicio se inicie a tiempo de arranque, ejecute:
~]# chkconfig httpd on
5.3 Hosting virtual
El término hosting virtual se refiere a hacer funcionar más de un sitio Web (tales
como, por ejemplo: www.example1.com y www.example2.org) en un solo
servidor. Los sitios Web virtuales pueden estar basados en direcciones IP, lo que
significa que cada sitio Web tiene una dirección IP diferente, o basados en
nombres diferentes, lo que significa que con una sola dirección IP están
funcionando varios sitios Web con diferentes nombres (de dominio). El hecho de
que estén funcionando en la misma máquina física pasa completamente
desapercibido para el usuario que visita dichos sitios Web.
Apache fue uno de los primeros servidores Web en soportar hosting virtual
basado en direcciones IP. Las versiones 1.1 y posteriores de Apache soportan
hosting virtual basado tanto en direcciones IP como basado en nombres. Ésta
última variante de hosting virtual se llama algunas veces basada en host o hosting
virtual no basado en IP.
SERVIDOR WEB| 45
www.palosanto.com [CURSO DE LINUX AVANZADO]
A continuación veremos con más detalle el funcionamiento de los dos tipos de
hosting virtual.
5.3.1 Hosting virtual basado en dirección IP
Así como el término basado en dirección IP indica, el servidor debe tener una
dirección IP diferente para cada host virtual (sitio Web). Esto se logra haciendo
que la máquina tenga varias tarjetas de red físicas o NICs, o usando interfaces
virtuales que son soportadas por la mayoría de sistemas operativos modernos
(puede chequear la documentación de su sistema, son frecuentemente llamadas
IP aliases, y el comando ifconfig es el más comúnmente usado para
configurarlas).
Se configura a través de la directiva VirtualHost en el archivo de
configuración de Apache. A continuación un ejemplo de configuración para dos
sitios Web:
<VirtualHost 200.24.208.9>
ServerName www.example1.com
DocumentRoot /virtual/sitio1/html
TransferLog /virtual/sitio1/log/access_log
ErrorLog /virtual/sitio1/log/error_log
</VirtualHost>
<VirtualHost 200.24.208.10>
ServerName www.example2.org
DocumentRoot /virtual/sitio2/html
TransferLog /virtual/sitio2/log/access_log
ErrorLog /virtual/sitio2/log/error_log
</VirtualHost>
5.3.2 Hosting virtual basado en nombres
Al utilizar hosting virtual basado en nombres, el servidor atiende el nombre de
host que especifica el cliente en las cabeceras de los paquetes del protocolo HTTP
durante la conexión. Usando esta técnica, una sola dirección IP puede ser
compartida por muchos sitios Web diferentes.
El hosting virtual basado en nombres es normalmente más sencillo, porque solo
necesita configurar su servidor DNS para que localice la dirección IP correcta y
entonces configurar Apache para que reconozca los diferentes nombres de host.
Así también se reduce la demanda de direcciones IP, que empieza a ser un bien
bastante escaso.
Una desventaja al usar este tipo de hosting puede darse si el servicio DNS no está
trabajando correctamente y hace que sea difícil acceder a un sitio Web de esta
naturaleza. Normalmente, en este caso, el usuario podría tratar de acceder al sitio
46 | SERVIDOR WEB
[CURSO DE LINUX AVANZADO] www.palosanto.com
vía su dirección IP, así que el servidor mostrará el sitio Web por defecto, que a
menudo no es el sitio que el usuario espera ver.
Se configura a través de las directivas NameVirtualHost y VirtualHost
en el archivo de configuración de Apache. A continuación un ejemplo para la
configuración de dos sitios Web:
NameVirtualHost 200.24.208.9:80
<VirtualHost 200.24.208.9:80>
ServerName www.example1.com
DocumentRoot /virtual/sitio1/html
TransferLog /virtual/sitio1/log/access_log
ErrorLog /virtual/sitio1/log/error_log
</VirtualHost>
<VirtualHost 200.24.208.9:80>
ServerName www.example2.org
DocumentRoot /virtual/sitio2/html
TransferLog /virtual/sitio2/log/access_log
ErrorLog /virtual/sitio2/log/error_log
</VirtualHost>
5.3.3 Basado en dirección IP o basado en nombres?
Usted debería usar preferentemente hosting virtual basado en nombres a no ser
que haya alguna razón especial por la cual tenga que elegir usar hosting virtual
basado en dirección IP. Algunas de estas razones pueden ser:
• Algunos clientes antiguos no son compatibles con el hosting virtual basado
en nombres. Para que este funcione, el cliente debe enviar la cabecera de
host HTTP. Esto es necesario para HTTP/1.1, y está implementado como
extensión en casi todos los navegadores actuales.
• El hosting virtual basado en nombres no se puede usar junto con SSL por la
naturaleza propia del protocolo SSL.
• Algunos sistemas operativos y algunos elementos de red tienen
implementadas técnicas de gestión de ancho de banda que no pueden
diferenciar entre hosts a no ser que no estén en diferentes direcciones IP.
SERVIDOR WEB| 47
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 6
Configuración de un servidor Web con Apache
1. Verificamos que el servidorApache se encuentre instalado, así:
~]# rpm -q httpd
httpd-2.2.15-15.el6.centos.1.i686
2. Si no es así, procedamos a instalar los paquetes antes mencionados antes de proseguir
con el siguiente comando:
~]# yum install httpd
3. Ahora, con nuestro editor de texto preferido vamos a proceder a configurar el archivo
/etc/httpd/conf/httpd.conf. Las directivas mencionadas en el siguiente
cuadro son las más importantes y basta con sus valores por defecto para que nuestro
servidor Web pueda iniciar:
Directiva Descripción
ServerName www.example.com:80 Configura el nombre oficial del
servidor Web, es una directiva
puramente descriptiva y no operativa
DocumentRoot "/var/www/html" Indica cual es el directorio donde se
almacenará el contenido del sitio Web
que se está sirviendo. Usted está en la
libertad de cambiar dicha carpeta
como lo desee
ServerAdmin root@localhost Configura la dirección de email del
administrador del sitio Web. Es
meramente informativa y no
funcional
Listen 80 Configura el puerto donde escuchará
el demónico. Por defecto, el puerto
utilizado es el TCP 80
DirectoryIndex index.html index.html.var Configura el nombre del primer
archivo dentro del DocumentRoot
que se servirá cuando alguien visite el
sitio Web en nuestro servidor, es
posible darle una lista de varios
nombres de archivos
4. Una vez que realiza la configuración de estas directivas, que a menudo funcionan con
los valores por defecto, podría poner una página Web de inicio de prueba en el
directorio DocumentRoot en el cuadro anterior, el cual es /var/www/html para
poder accederla a través de un navegador.
48 | SERVIDOR WEB
[CURSO DE LINUX AVANZADO] www.palosanto.com
Para hacer esto, procedemos a crear un archivo HTML el cual va a ser nuestro archivo
índice o principal que es el que se va a cargar en primera instancia.
Para crear el archivo, ejecutamos el siguiente comando:
~]# touch /var/www/html/index.html
Con nuestro editor de texto preferido, abrimos el archivo para editarlo y lo llenamos
con la siguiente información:
<html>
<head>
<title>Servidor Web SRVXX</title>
</head>
<body>
<h1>Esta es mi página Web SRVXX … Bienvenidos!!!</h1>
<a href=”http://www.google.com”>Ir a Google</a>
</body>
</html>
Donde XX es el número de máquina asignada a Ud.
5. Debemos ahora reiniciar el demónico de Apache para que los cambios realizados sean
tomados en cuenta, así:
~]# service httpd start
6. Para que Apache se ejecute siempre al iniciar el servidor, ejecutamos el comando:
~]# chkconfig httpd on
7. Para comprobar si Apache está funcionando, con el uso de un navegador Web
accedemos al siguiente URL:
http://localhost/
Y deberíamos visualizar la página HTML que hemos creado.
SERVIDOR WEB| 49
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 7
Configuración de hosting virtual basado en dirección
IP
La directiva VirtualHost en el archivo de configuración de Apache, nos permitirá definir los
valores de ServerAdmin, ServerName, DocumentRoot, TransferLog y ErrorLog
para cada uno de los sitios a servir y que serán utilizados en la implementación de la opción de
hosting virtual.
En este laboratorio asumiremos que vamos a tener dos nombres de dominio para poder
publicar dos sitios web, www.exampleXX.com y www.exampleXX.org.ec (donde XX es
el número de máquina a Ud asignada)
1. Para empezar debemos configurar más de una dirección IP a nuestro servidor, lo
podemos efectuar con el comando ifconfig, suponiendo que su interface de red es
eth0 y su dirección IP es 192.168.0.1, configuraremos una interface virtual
eth0:0 con la dirección IP 192.168.2.1 (consulte a su instructor para la
asignación de direcciones IP), así:
~]# ifconfig eth0:0 192.168.2.1 netmask 255.255.255.0 up
2. Ahora procedemos a editar el archivo de configuración de Apache,
/etc/httpd/conf/httpd.conf, e insertaremos al final del mismo la directiva
VirtualHost con sus valores correspondientes (citados al principio de este
laboratorio) para cada dirección de sitio Web que deseemos servir, en nuestro caso
serían dos sitios, así:
<VirtualHost 192.168.0.1>
ServerAdmin [email protected]
ServerName www.exampleXX.com
DocumentRoot /sitios/exampleXX.com/www
TransferLog /sitios/exampleXX.com/logs/access_log
ErrorLog /sitios/exampleXX.com/logs/error_log
</VirtualHost>
<VirtualHost 192.168.2.1>
ServerAdmin [email protected]
ServerName www.exampleXX.org.ec
DocumentRoot /sitios/exampleXX.org.ec/www
TransferLog /sitios/exampleXX.org.ec/logs/acces_log
ErrorLog /sitios/exampleXX.org.ec/logs/error_log
</VirtualHost>
50 | SERVIDOR WEB
[CURSO DE LINUX AVANZADO] www.palosanto.com
No olvide crear los directorios respectivos configurados en los valores
DocumentRoot, TransferLog y ErrorLog, y de agregar un archivo Web para
ser servido por Apache y que pueda realizar su prueba con éxito. Podemos usar el
mismo archivo HTML utilizado en el laboratorio anterior.
3. Luego procedemos a reiniciar el servicio de Apache, así:
~]# service httpd restart
4. Ahora para poder probar su funcionamiento, vamos a configurar en nuestro archivo
/etc/hosts las entradas necesarias para poder resolver los nombres en cuestión
(usted podría montar un servidor DNS y configurar los archivos de zonas necesarios),
para nuestro laboratorio serían:
192.168.0.1 www.exampleXX.com
192.168.2.1 www.exampleXX.org.ec
5. Ejecute una instancia de su navegador Web e ingrese en la dirección URL las
direcciones con las que hemos trabajado:
http://www.exampleXX.com
http://www.exampleXX.org.ec
Debería tener ya su servidor con hosting virtual funcionando.
SERVIDOR WEB| 51
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 8
Configuración de hosting virtual basado en
nombres
La directiva VirtualHost en el archivo de configuración de Apache, nos permitirá definir los
valores de ServerAdmin, ServerName, DocumentRoot, TransferLog y ErrorLog
para cada uno de los sitios a servir y que serán utilizados en la implementación de la opción de
hosting virtual.
Pero para este tipo de configuración de hosting virtual necesitamos también una opción
adicional en el archivo de configuración de Apache, NameVirtualHost, la misma que le
indicará a Apache que dirección IP va a tener múltiples nombres de host.
En este laboratorio asumiremos que vamos a tener dos nombres de dominio para poder
publicar dos sitios web, www.exampleXX.com y www.exampleXX.org.ec
1. Para empezar vamos a suponer que tenemos configurada la dirección IP
192.168.0.1 en nuestro servidor (consulte a su instructor para la asignación de
direcciones IP). Ahora procedemos a editar el archivo de configuración de Apache,
/etc/httpd/conf/httpd.conf, buscamos la directiva NameVirtualHost, y
escribimos:
NameVirtualHost 192.168.0.1:80
2. Ahora agregamos al final del archivo de configuración de Apache, la directiva
VirtualHost con sus valores correspondientes (citados al principio de este
laboratorio) para cada dirección de sitio Web que deseemos servir, en nuestro caso
serían dos sitios, así:
<VirtualHost 192.168.0.1:80>
ServerAdmin [email protected]
ServerName www.exampleXX.com
DocumentRoot /sitios/exampleXX.com/www
TransferLog /sitios/exampleXX.com/logs/access_log
ErrorLog /sitios/exampleXX.com/logs/error_log
</VirtualHost>
<VirtualHost 192.168.0.1:80>
ServerAdmin [email protected]
ServerName www.exampleXX.org.ec
DocumentRoot /sitios/exampleXX.org.ec/www
TransferLog /sitios/exampleXX.org.ec/logs/acces_log
ErrorLog /sitios/exampleXX.org.ec/logs/error_log
</VirtualHost>
52 | SERVIDOR WEB
[CURSO DE LINUX AVANZADO] www.palosanto.com
No olvide crear los directorios respectivos configurados en los valores
DocumentRoot, TransferLog y ErrorLog, y de agregar un archivo Web para
ser servido por Apache y que pueda realizar su prueba con éxito. Puede usar el mismo
que utilizamos en el laboratorio anterior.
3. Luego procedemos a reiniciar el servicio de Apache, así:
~]# service httpd restart
4. Ahora para poder probar su funcionamiento, vamos a configurar en nuestro archivo
/etc/hosts las entradas necesarias para poder resolver los nombres en cuestión
(usted podría montar un servidor DNS y configurar los archivos de zonas necesarios),
para nuestro laboratorio serían:
192.168.0.1 www.exampleXX.com
192.168.0.1 www.exampleXX.org.ec
6. Ejecute una instancia de su navegador Web e ingrese en la dirección URL las
direcciones con las que hemos trabajado:
http://www.exampleXX.com
http://www.exampleXX.org.ec
Debería tener ya su servidor con hosting virtual funcionando.
SERVIDOR WEB| 53
Capítulo 6
[SERVIDOR DE CORREO
ELECTRÓNICO]
CONTENIDO
6.1 Protocolos de correo electrónico
6.2 Clases de software de correo electrónico
6.3 Configuración de un servidor de correo
[CURSO DE LINUX AVANZADO] www.palosanto.com
6.1 Protocolos de correo electrónico
El correo electrónico nació en los años sesenta. El buzón de correo de un usuario
era un archivo en el directorio home de un usuario y que era legible sólo por
dicho usuario. Aplicaciones de correo primitivas agregaban nuevos mensajes de
texto al final del archivo. Este sistema solo era capaz de enviar mensajes de
correo a los usuarios de un mismo sistema.
La primera transferencia de un archivo de mensaje de correo electrónico tuvo
lugar en 1971 cuando un ingeniero de sistemas llamado Ray Tomlinson envió un
mensaje entre dos equipos con ARPANET –el precursor de Internet. Las
comunicaciones de correo electrónico se hicieron tan populares que abarcaron el
75% del tráfico de ARPANET en menos de dos años.
Hoy en día, los sistemas de correo electrónico basados en protocolos de red
estándares se han convertido en uno de los servicios más populares de Internet.
CentOS Linux ofrece muchas aplicaciones avanzadas para servir y acceder al
correo electrónico.
Actualmente, el correo electrónico es entregado usando una arquitectura
cliente/servidor. Un mensaje de correo electrónico es creado usando un
programa cliente de correo. Este programa a continuación, envía el mensaje a un
servidor. El servidor reenvía el mensaje al servidor de correo electrónico del
destinatario, donde el mensaje es enviado al cliente de correo del destinatario.
Para habilitar este proceso, una variedad de protocolos de red estándares
permiten que diferentes equipos, que ejecutan diferentes sistemas operativos y
diferentes programas de correo electrónico, puedan enviar y recibir correo
electrónico.
Los siguientes protocolos son los más usados en la transferencia de correo
electrónico.
6.1.1 Protocolo SMTP
La entrega de correo desde una aplicación cliente a un servidor de correo, y desde
un servidor de correo origen a un servidor de correo destino es manejada por el
protocolo SMTP (Simple Mail Transfer Protocol).
La comunicación entre el cliente y el servidor consiste enteramente en líneas de
texto compuestas por caracteres ASCII.
SMTP utiliza el puerto TCP 25 por defecto.
SERVIDOR DE CORREO ELECTRONICO | 55
www.palosanto.com [CURSO DE LINUX AVANZADO]
6.1.2 Protocolo POP
Se utiliza POP (Post Office Protocol) en clientes de correo para obtener los
mensajes de correo electrónico almacenados en un servidor remoto.
El diseño de POP3 es para recibir correo y no para enviar. Permite que sus
usuarios descarguen su correo electrónico cuando se encuentran conectados, de
tal manera que puedan ver y manipular sus mensajes sin necesidad de
permanecer conectados.
Para establecer una conexión POP, el cliente de correo abre una conexión TCP en
el puerto 110 del servidor remoto.
6.1.3 Protocolo IMAP
IMAP (Internet Message Access Protocol) es un protocolo de red de acceso a
mensajes electrónicos almacenados en un servidor. IMAP fue diseñado como una
moderna alternativa a POP en el año 1986.
IMAP y POP son los dos protocolos que prevalecen en la obtención de correo
electrónico. Todos los servidores y clientes de correo virtualmente soportan
ambos protocolos, aunque en algunos casos hay algunas interfaces específicas del
fabricante típicamente propietarias.
IMAP es utilizado frecuentemente en redes grandes; por ejemplo en los sistemas
de correo de un campus universitario. IMAP permite a los usuarios acceder a los
nuevos mensajes instantáneamente en sus computadoras, ya que el correo está
almacenado en el servidor. Con POP, los usuarios tendrían que descargar el email
a sus computadores.
El protocolo IMAP utiliza el puerto TCP 143.
6.2 Tipos de programas de correo electrónico
En general, todas las aplicaciones de correo electrónico se clasifica en al menos
uno de tres tipos de programa. Cada tipo de programa juega un papel específico
en el proceso de mover y administrar los mensajes de correo electrónico. Aunque
la mayoría de los usuarios solo conocen el programa de correo que usan para
enviar y recibir sus mensajes, cada tipo es importante para asegurar que el
mensaje llegue a su destino correctamente.
56 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
6.2.1 Agente de transporte de correo (MTA)
Un MTA (Mail Transport Agent) transporta los mensajes de correo electrónico
entre los hosts o servidores usando el protocolo SMTP. Un mensaje puede viajar
por varios MTA antes de llegar a su destino.
Los programas clientes de correo electrónico requieren de un MTA para enviar los
mensajes de correo. Pareciera que lo hicieran por sí solos, pero en realidad se
necesita de un MTA.
Cada MTA es configurado para enviar mensajes de correo electrónico de usuarios
o equipos específicos debido a problemas con correo basura o spam. Los
servidores MTA que pueden enviar mensajes de correo electrónico de cualquier
usuario o equipo es conocido como Open Relay.
CentOS Linux incorpora varios programas MTA como Postfix y Sendmail. En este
curso nos enfocaremos en el uso de Postfix.
Otros MTA que existen en Internet, tenemos: Microsoft Exchange Server, IBM
Lotus Domino, Zimbra Collaboration Suite, Kerio Mail Server, etc.
6.2.2 Postfix
Es un programa MTA y muy usado en Internet, cuya tarea consiste en encaminar
los mensajes de correo de forma que éstos lleguen a su destino.
Es un software muy popular y de acuerdo a una encuesta publicada por E-Soft,
Inc. en Enero de 2012, se dice que el 23% de los servidores de correos en Internet
ejecutan Postfix.
http://www.postfix.org
6.2.3 Agente de entrega de correo (MDA)
Un MDA (Mail Delivery Agent) es invocado por el MTA para archivar el mensaje
de correo entrante al buzón del usuario adecuado. En general, los MDA no
transportan mensajes entre sistemas tampoco proporcionan una interfaz de
usuario. Los programas MDA distribuyen y clasifican mensajes en la máquina local
para que una aplicación cliente los pueda acceder.
Los programas Postfix y Sendmail también pueden desempeñar el papel de un
MDA, ya que ellos ponen los mensajes de correo en el archivo que corresponde al
buzón del usuario.
SERVIDOR DE CORREO ELECTRONICO | 57
www.palosanto.com [CURSO DE LINUX AVANZADO]
6.2.4 Agente de usuario de correo (MUA)
Un MUA (Mail User Agent) es un programa cliente de correo electrónico. Es un
programa que le permite al usuario leer y redactar (al menos) mensajes de correo
electrónico.
Muchos MUA (sino son todos) son capaces de obtener los mensajes de correo
electrónico de los buzones de los usuarios a través de los protocolos POP o IMAP
y enviar correo electrónico a través de un MTA. Es cuestión de configuración.
Generalmente, los MUA son de interfaz gráfica, como Evolution, Microsoft
Outlook, Zimba Desktop, etc., o pueden tener interfaces basadas en texto simple
como pine.
6.2.5 Dovecot
Es un servidor IMAP/POP para Linux. Es una elección excelente para pequeñas y
grandes instalaciones. Es rápido, simple para configurar, no requiere
administración especial y usa poca cantidad de memoria. Soporta los formatos
mbox y Maildir.
Este software se instala por defecto en una instalación típica de CentOS Linux.
http://www.dovecot.org
6.2.6 Formatos de almacenamiento de correo
El mundo UNIX/Linux tiene dos maneras de almacenar los mensajes de correo
electrónico en el buzón del usuario, el formato tradicional llamado mbox y el
formato más nuevo llamado Maildir. Postfix y Dovecot soportan los dos formatos,
así que puede usar cualquiera de ellos.
A continuación una explicación de cada uno de los dos formatos:
• mbox. Esta es la manera tradicional de almacenar mensajes de correo en
el mundo UNIX/Linux. En este formato, un archivo de texto regular es
creado, el mismo que sirve como buzón del usuario de correo. Cada
mensaje de correo es agregado secuencialmente al final de este archivo.
En este formato, el buzón del usuario es almacenado en el directorio
/var/mail. Se crea un archivo de texto con el nombre del usuario en
cuestión. Este formato es el que utilizaremos en este curso.
58 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
• Maildir. Es una nueva forma de almacenar mensajes de correo
electrónico. En este formato, un directorio es creado para cada usuario
de correo. Cada mensaje de correo electrónico es un archivo de texto
diferente, por lo cual va a haber una gran cantidad de archivos.
6.3 Configuración de un servidor de correo
6.3.1 Configuración del servicio SMTP
El servicio SMTP se da con el software Postfix. El paquete postfix instala del
demónico y los archivos de configuración respectivos:
Item Descripción
/etc/rc.d/init.d/postfix El script de inicio usado por el comando service
para iniciar, detener o reiniciar el servicio
/etc/postfix/main.cf El archivo de configuración principal de Postfix
/etc/postfix/master.cf El archivo de configuración del demónico
/etc/aliases Archivo de configuración de alias de correo
/var/log/maillog Archivo de log donde se almacena un registro de
todos los mensajes de correo electrónico enviados y
recibidos
6.3.2 Configuración del servicio POP/IMAP
Los servicios POP/IMAP se dan con el software Dovecot. El paquete dovecot
instala del demónico y los archivos de configuración respectivos:
Item Descripción
/etc/rc.d/init.d/dovecot El script de inicio usado por el comando service
para iniciar, detener o reiniciar el servicio
/etc/dovecot/dovecot.conf El archivo de configuración principal de Dovecot
6.3.3 Iniciar y detener el servicio
Para iniciar el servicio, ejecute el comando:
~]# service postfix start
~]# service dovecot start
El servicio Postfix (cuyo demónico se llama master) levanta por defecto en el
puerto TCP 25 y el servicio Dovecot en los puertos TCP 110 y TCP 143. Para
verificar que está levantado dicho puerto, ejecute el comando:
SERVIDOR DE CORREO ELECTRONICO | 59
www.palosanto.com [CURSO DE LINUX AVANZADO]
~]# netstat –anp | grep master
~]# netstat –anp | grep dovecot
Para detener el servicio, ejecute el comando:
~]# service postfix stop
~]# service dovecot stop
Para que el servicio se inicie a tiempo de arranque, ejecute:
~]# chkconfig postfix on
~]# chkconfig dovecot on
6.4 Webmail
Un webmail (correo basado en Web) es un programa informático, concretamente
un cliente de correo electrónico, que provee una interfaz Web por la cual
podemos acceder al correo electrónico usando el protocolo IMAP.
El webmail permite listar, desplegar y borrar vía un navegador Web los correos
almacenados en el servidor remoto. Los correos pueden ser consultados
posteriormente desde otro computador conectado a la misma red (o por ejemplo
Internet) y que disponga de un navegador Web.
Existen empresas privadas que ofrecen servicio de webmail, por ejemplo:
• Gmail
• Yahoo
• Hotmail
• Etc.
Así mismo existen programas de webmail libres como por ejemplo SquirrelMail,
que se incluye por defecto en distribuciones basadas en Red Hat y en el cual nos
vamos a enfocar en este curso. Otros programas de este tipo son:
• RoundCube
• Horde
• Openwebmail
• Etc.
60 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
6.4.1 Squirrelmail
El servicio de webmail se da con el software Squirrelmail, el cual está basado en el
lenguaje de programación PHP y su interfaz de uso es bastante sencilla, lo cual lo
hace muy ligero y de rápido acceso, sobre todo para conexiones a Internet con
limitado ancho de banda.
http://www.squirrelmail.org
Ya que está baso en el lenguaje de programación PHP, entonces debe estar
instalado el software PHP en nuestro servidor antes de proceder a instalar
Squirrelmail.
El paquete squirrelmail instala los archivos de configuración respectivos:
Item Descripción
/etc/squirrelmail/config.php El archivo de configuración principal de
Squirrelmaill
6.5 Spam y software antispam
Un correo spam específicamente es un correo no solicitado, generalmente con
contenido comercial. En realidad no existe una forma sencilla de detectar los
correos spam automáticamente, por lo que es necesario que un programa analice
el contenido de todo el correo para a través de un algoritmo catalogar a un correo
como spam. Es obvio que este proceso de análisis tomará recursos de
procesamiento y memoria además de tiempo.
En el mundo Linux existe un software de código abierto que cumple con el
algoritmo Bayesiano de análisis de correo para detectar un spam, este software se
llama SpamAssassin, el cual será estudiado en este curso.
6.5.1 SpamAssassin
SpamAssassin es un filtro de correo inteligente para identificar correos spam, el
cual usa un diverso rango de tests para identificar un mensaje de correo no
solicitado. Estos tests son aplicados a las cabeceras y contenido de un correo para
clasificarlo usando métodos estadísticos avanzados. Está diseñado para poder ser
integrado de manera sencilla con virtualmente cualquier sistema de correo.
El uso de múltiples técnicas, su modularidad y extensibilidad le dan la ventaja
sobre otros sistemas antispam. Debido a estas ventajas, SpamAsassin es
ampliamente utilizado en todos los aspectos de la administración de correo.
Con gusto usted podrá encontrar que SpamAssassin es usado tanto en clientes
como servidores de correo, en diferentes sistemas operativos, filtrando tanto
SERVIDOR DE CORREO ELECTRONICO | 61
www.palosanto.com [CURSO DE LINUX AVANZADO]
correo entrante como saliente, e implementando un rango muy amplio de
acciones. Estas instalaciones incluyen proveedores de servicios de Internet (ISP),
negocios, organizaciones educativas y sin fines de lucro, y usuarios finales.
SpamAssassin también es la base de numerosos productos antispam de tipo
comercial disponibles actualmente en el mercado.
http://spamassassin.apache.org/
6.5.2 Puedo simplemente borrar correo spam?
Generalmente, no. Mientras SpamAssassin es muy bueno detectando grandes
cantidades de spam, es imposible para un computador hacer su trabajo
perfectamente. Un correo legítimo marcado incorrectamente como spam es
conocido como un falso positivo. Solo debería borrar correo si usted (y sus
usuarios o clientes) encontraran aceptable perder correo catalogado como un
falso positivo. Una mejor idea es filtrar posible spam en una carpeta separada que
pudiera ser chequeada con menor frecuencia que un buzón normal. Esta carpeta
es la llamada Correo Basura, Spam o Junk Mail en algunos sistemas de correo Web
o de usuario final.
SpamAssassin por sí mismo no borra ningún correo. Es solo un filtro que lee un
correo entrante y lo pasa hacia afuera, modificado en cierta manera. Si usted
desea borrar correos, o redireccionarlos, necesita hacerlo en cualquier programa
o sistema que invoque a SpamAssassin.
62 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
Laboratorio 9
Configuración de un servidor de correo electrónico
con Postfix y Dovecot
1. Verificamos que Postfix y Dovecot estén instalados, así:
~]# rpm -qa |grep postfix
postfix-2.6.6-2.2.el6_1.i686
~]# rpm –qa |grep dovecot
dovecot-2.0.9-2.el6_1.1.i686
2. Si no es así, procedamos a instalar los paquetes antes mencionados antes de
proseguir, con el siguiente comando:
~]# yum install postfix dovecot
3. Ahora, con nuestro editor de texto preferido vamos a proceder a configurar el archivo
/etc/postfix/main.cf
Buscamos y editamos los parámetros mencionadas en el siguiente cuadro, de acuerdo
a nuestras necesidades:
Directiva Descripción
myhostname = mail.exampleXX.com Especifica el nombre de Internet del
servidor de correo. El valor que debe usarse
debe ser un FQDN (Fully Qualified Domain
Name o Nombre de Dominio Plenamente
Calificado). El valor de este parámetro es
usado por otros parámetros de
configuración como un valor por defecto
XX es el número de máquina asignada a Ud
mydomain = exampleXX.com Especifica el nombre de dominio del
servidor. Por defecto es el valor del
parámetro $myhostname menos el primer
componente
myorigin = $mydomain Especifica el dominio saliente del servidor.
Su valor es $mydomain, que está bien para
sitios pequeños
mydestination = $mydomain Especifica la lista de dominios que el
servidor se considera a sí mismo el destino
final, en otras palabras, el listado de
dominios de los que va a recibir correo
inet_interfaces = all Especifica las direcciones de red de las
interfaces por las cuales el servidor recibirá
correo electrónico. El valor all indica que
SERVIDOR DE CORREO ELECTRONICO | 63
www.palosanto.com [CURSO DE LINUX AVANZADO]
va a recibir correo por todas las interfaces
conectadas a él
mynetworks = 192.168.0.0/24, Especifica las direcciones de red o equipos
127.0.0.0/8 que pueden enviar correo a través del
servidor
4. El archivo /etc/aliases permite definir alias para los usuarios, pudiendo definir
grupos de usuarios.
El formato de este archivo es:
alias: usuario
Configuramos un alias de la siguiente manera:
sistemas: userXX
5. Para aplicar la configuración de aliases realizada ejecutamos el comando:
~]# newaliases
6. Una vez que ha realizado cambios en estos archivos de configuración, es necesario
reiniciar el servicio de Postfix. Por defecto, este servicio ya viene habilitado para
ejecutarse al iniciar el servidor, por lo tanto solo lo vamos a reiniciar, así:
~]# service postfix restart
7. Ahora le toca el turno a los servicios POP/IMAP, dado por el software Dovecot. Con
nuestro editor de texto preferido vamos a proceder a configurar el archivo
/etc/dovecot/dovecot.conf y configuramos estas líneas:
protocols = imap pop3
mail_location = mbox: ~/mail:INBOX=/var/mail/%u
mail_access_groups = mail
8. Una vez hecho esto, procedemos a iniciar el servicio de Dovecot, así:
~]# service dovecot start
9. Para que Postfix y Dovecot se ejecuten siempre al iniciar el servidor, ejecutamos estos
comandos:
~]# chkconfig postfix on
~]# chkconfig dovecot on
64 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
10. Para comprobar si Postfix y Dovecot están funcionando, ejecutamos el comando
netstat que mostrará los puertos de red en que los demónicos están escuchando
por conexiones, así:
~]# netstat –anp | grep master
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1634/master
~]# netstat –anp | grep dovecot
tcp 0 0 :::110 :::* LISTEN 2912/dovecot
tcp 0 0 :::143 :::* LISTEN 2912/dovecot
Otra forma de comprobar si Postfix y Dovecot están funcionando, es haciendo uso del
comando telnet para verificar la conexión a los puertos de red respectivos, así:
~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example01.com ESMTP Postfix
quit
221 2.0.0 Bye
Connection closed by foreign host.
~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
quit
+OK Logging out
Connection closed by foreign host.
11. En esta configuración básica de servidor de correo con Postfix y Dovecot, faltarían
definir las cuentas de correo electrónico para los usuarios. Las cuentas de correo
electrónico para el servidor configurado serían las cuentas de usuario locales del
sistema y que se almacenan en el archivo /etc/passwd.
Vamos a proceder a crear la cuenta userXX y a asignarle una contraseña. XX es el
número de máquina asignada a Ud. Ejecute los siguientes comandos:
~]# useradd userXX
~]# passwd userXX
De acuerdo a esto, entonces una cuenta de correo válida para nuestro sistema de
correo sería [email protected]
SERVIDOR DE CORREO ELECTRONICO | 65
www.palosanto.com [CURSO DE LINUX AVANZADO]
12. Finalmente, debemos configurar un cliente de correo electrónico. Puede utilizar el de
su preferencia, ya sea si utiliza sistemas Microsoft Windows como Linux. Una vez que
termine de configurar su cliente de correo, proceda a enviar un mensaje de correo
electrónico a la misma cuenta que configuró. Revise el archivo de registro
/var/log/maillog para saber qué sucedió con su mensaje, si fue despachado o
no. Finalmente, en caso de haber sido despachado, verifique la existencia del buzón de
correo electrónico para el usuario creado, el cual para este laboratorio debería ser
/var/mail/userXX, inclusive puede revisar el contenido del archivo para que
tenga una idea más clara de que un mensaje de correo electrónico se compone de
texto exclusivamente.
A continuación vamos a verificar la configuración del software Microsoft Outlook, el
cual es uno de los clientes de correo más populares. Cualquier versión de Microsoft
Outlook puede funcionar.
Una vez que hemos abierto el programa Outlook, seleccionamos la opción
Herramientas -> Configuración de la cuenta, así:
66 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
En la pestaña Correo electrónico, escogemos la opción Nuevo, así:
En la ventana Configuración automática de la cuenta, seleccionamos la opción
Configurar manualmente las opciones del servidor o tipos de servidores adicionales,
así:
SERVIDOR DE CORREO ELECTRONICO | 67
www.palosanto.com [CURSO DE LINUX AVANZADO]
En la ventana Elegir el servicio de correo electrónico escogemos la opción Correo
electrónico de Internet, así:
En la ventana Agregar una nueva cuenta de correo electrónico se configuran los
valores de la cuenta para nuestro servidor, en este caso sería para la cuenta
[email protected]68 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
En la sección Información sobre el usuario configuramos:
• Su nombre, el nombre de la persona o usuario de la cuenta.
• Dirección de correo electrónico, la dirección de correo electrónico para el
usuario de la cuenta.
En la sección Información del servidor configuramos:
• Tipo de cuenta, el tipo de cuenta de correo. Para nuestro caso es POP.
• Servidor de correo entrante, la dirección IP o el nombre del servidor de correo
electrónico. Para nuestro caso es la dirección IP de nuestra máquina que sería
192.168.0.1
• Servidor de correo saliente (SMTP), la dirección IP o el nombre del servidor de
correo electrónico. Para nuestro caso es la dirección IP de nuestra máquina
que sería 192.168.0.1
En la sección Información de inicio de sesión configuramos:
• Nombre de usuario, el nombre de usuario de la cuenta. Para nuestro caso es
solamente userXX.
• Contraseña, la contraseña que configuramos para el usuario de la cuenta. En
nuestro caso es la contraseña del usuario userXX.
Presionamos el botón Siguiente para finalizar la configuración de la cuenta, así:
SERVIDOR DE CORREO ELECTRONICO | 69
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 10
Instalación y configuración de software Webmail
Para este laboratorio trabajaremos con SquirrelMail como software Webmail y Dovecot como
servidor IMAP.
1. Verificamos que se encuentren instalados y funcionando los siguientes paquetes:
• Postfix
• Apache
• Dovecot
• PHP
2. El software Dovecot nos permitirá implementar la parte de servidor IMAP. Como ya lo
configuramos en el laboratorio anterior. Nos aseguramos que se esté ejecutando con
el comando:
~]# service dovecot status
3. Ahora de los discos de instalación de su distribución o de algún repositorio de
instaladores en la red, instale el paquete llamado squirrelmail (el instructor
proveerá el archivo del instalador RPM) con el comando:
~]# rpm –ivh squirrelmail-x.y.z.noarch.rpm
Donde x.y.z es la versión a instalar.
4. Ahora editamos el archivo de configuración de SquirrelMail,
/etc/squirrelmail/config.php, y procedemos a modificar las directivas
mencionadas en el siguiente cuadro (el instructor explicará cada una de ellas), de
acuerdo a nuestras necesidades:
Directiva Descripción
$org_name Aquí puede configurar el nombre de su
organización y que aparecerá en la interfaz
Web de Squirrelmail
$org_logo Permite definir una imagen al presentarse la
interfaz Web de inicio de Squirrelmail, pueden
aplicarse los formatos PNG, JPEG y GIF
Cabe recalcar que la variable SM_PATH
representa la ruta de instalación de
SquirrelMail, la cual es
/usr/share/squirrelmail
$motd Permite definir un mensaje del día (motd)
para que pueda ser visible por sus usuarios
70 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
$squirrelmail_default_language Aquí configuramos el idioma para la interfaz
Web de Squirrelmail que por defecto está en
inglés, si quisiera definir español configure
es_ES. Cada usuario podrá definir en su
configuración personal su idioma de
preferencia
$domain Permite definir el dominio usando en su
organización y que se añadirá como dominio
por defecto al enviarse un correo mediante la
interfaz Web de Squirrelmail
$imapServerAddress Aquí se configura la dirección IP de su servidor
IMAP, que para nuestro caso es el mismo
servidor, entonces bastaría colocar la
dirección de localhost o 127.0.0.1
$smtpServerAddress Aquí se configura la dirección IP de su servidor
SMTP, que para nuestro caso es el mismo
servidor, entonces bastaría colocar la
dirección de localhost o 127.0.0.1
5. Finalmente, ya es posible acceder al buzón de los usuarios a través de la dirección URL
de su servidor de correos, así:
http://192.168.0.1/webmail
Donde 192.168.0.1 es la dirección IP de su servidor.
6. Si no queremos acceder a nuestro Webmail digitando la dirección URL mencionada en
el punto anterior o deseamos darle otro nombre para poder ingresar, podemos editar
el archivo /etc/httpd/conf.d/squirrelmail.conf y modificar el valor
Alias, así por ejemplo:
Alias /correoweb /usr/share/squirrelmail
No olvide reiniciar Apache. Ahora para acceder a Webmail, debería escribir en la
dirección URL de su navegador:
http://192.168.0.1/correoweb
SERVIDOR DE CORREO ELECTRONICO | 71
www.palosanto.com [CURSO DE LINUX AVANZADO]
Laboratorio 11
Instalación y configuración de software antispam
Para este laboratorio trabajaremos con Spamassassin como software antispam y lo
integraremos con Postfix.
1. Para iniciar se requiere que se encuentre instalado el paquete spamassassin (que
en una instalación típica de servidor de correo ya vendría instalado), si no es así
busque los discos de instalación de su distribución o en algún repositorio de la red y
ejecute:
~]# rpm –ivh spamassassin-x.y.z.rpm
Donde x.y.z es la versión a instalar.
2. Ahora vamos a proceder a configurarlo, editando su archivo de configuración
/etc/mail/spamassassin/local.cf. Vamos a basarnos en el cuadro
siguiente para citar algunas directivas básicas (el instructor explicará cada una de ellas)
y que editaremos según nuestras necesidades:
Directiva Descripción
required_hits 5 Configura el nivel de sensibilidad para detectar
spam, mientras menor es su valor la rigurosidad
aumenta. Su valor por defecto es de 5
report_safe 0 Esta directiva puede tener dos valores 0 o 1. Si
el valor es 0 solo llega una notificación de que se
iba a recibir un spam, si es 1 se adjunta el correo
original a la notificación que se recibirá
rewrite_header Subject [SPAM] Permite modificar el Subject o título de un
correo cuando ha sido catalogado como spam
(también conocido como marcar un correo)
agregando la cadena de caracteres [SPAM] al
principio del Subject. Usted pudiera agregar otra
cadena de caracteres
whitelist_from Nos permite definir listas blancas, donde
[email protected] configuraremos direcciones de correo o
dominios completos que no serán analizados
por el filtro antispam. Posibles valores son:
[email protected]
*@dominio.com
blacklist_from Nos permite definir listas negras, donde
[email protected] configuraremos direcciones de correo o
dominios completos que serán catalogados
como spam inmediatamente sin ser analizados
por el filtro antispam. Posibles valores son:
[email protected]
*@dominio.com
72 | SERVIDOR DE CORREO ELECTRONICO
[CURSO DE LINUX AVANZADO] www.palosanto.com
3. Ahora, vamos a crear un usuario para la aplicación Spamassassin para que pueda ser
invocado por Postfix. El usuario y grupo a crear es spamd y su directorio de inicio será
/var/log/spamassassin/ que es un directorio instalado por el RPM de
Spamassassin. Ejecutamos los comandos:
~]# groupadd spamd
~]# useradd –g spamd –s /bin/false –d /var/log/spamassassin
spamd
~]# chown spamd:spamd /var/log/spamassassin
4. Vamos a proceder a configurar Postfix para integrarlo con Spamassassin. Con nuestro
editor de texto preferido vamos a editar el archivo de configuración del demónico
/etc/postfix/master.cf, con el editor VI por ejemplo:
~]# vi /etc/postfix/master.cf
Buscamos la siguiente línea en el archivo:
smtp inet n - n - - smtpd
y la modificamos de esta manera:
smtp inet n - n - - smtpd –o
content_filter=spamassassin
Luego, nos ubicamos al final del archivo y agregamos la siguiente línea:
spamassassin unix - n n - - pipe
flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi
-f ${sender} ${recipient}
Guardamos los cambios realizados.
5. Reiniciamos Postfix e iniciamos el servicio de Spamassassin, así:
~]# service postfix restart
~]# service spamassassin start
6. Para que Spamassassin inicie a tiempo de arranque del servidor, ejecutamos:
~]# chkconfig spamassassin on
7. Para verificar que Spamassassin está integrado con Postfix y funciona correctamente,
proceda a enviar un mensaje de correo electrónico desde su cliente de correo o
Webmail, con el siguiente contenido:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
SERVIDOR DE CORREO ELECTRONICO | 73
www.palosanto.com [CURSO DE LINUX AVANZADO]
Esta cadena de caracteres corresponde a un test de antispam llamada GTUBE (Generic
Test for Unsolicited Bulk Email) provisto por el sitio Web de Spamassassin:
http://spamassassin.apache.org/gtube/
8. No olvide verificar el archivo de registro /var/log/maillog para ver lo que ha
sucedido con su mensaje de correo ahora que ha sido analizado por Spamassassin.
Además, para ver un listado de los test que Spamassassin ha aplicado al mensaje de
correo enviado, revise las cabeceras de dicho mensaje de correo electrónico desde el
Webmail Squirrelmail.
74 | SERVIDOR DE CORREO ELECTRONICO
Capítulo 7
[NFS: NETWORK FILE
SYSTEM]
CONTENIDO
7.1 Concepto
7.2 Configuración de un servidor NFS
7.3 Configuración del cliente NFS
www.palosanto.com [CURSO DE LINUX AVANZADO]
7.1 Concepto
NFS (Network File System o Sistema de Archivos de Red) es un protocolo de nivel
de aplicación, según el modelo OSI. Es utilizado para sistemas de archivos
distribuidos en un entorno de red de computadores de área local generalmente.
Posibilita que distintos sistemas conectados a una misma red accedan a archivos
remotos como si se tratara de locales. Originalmente fue desarrollado en 1984 por
Sun Microsystems, con el objetivo de que sea independiente de la máquina, el
sistema operativo y el protocolo de transporte. El protocolo NFS está incluido por
defecto en los sistemas operativos UNIX y las distribuciones Linux.
7.1.1 Cómo funciona?
El sistema NFS está dividido al menos en dos partes principales: un servidor y uno
o más clientes. Los clientes acceden de manera remota a los datos que se
encuentran almacenados en el servidor.
Las estaciones de trabajo locales utilizan menos espacio de disco debido a que los
datos se encuentran centralizados en un único lugar pero pueden ser accedidos y
modificados por varios usuarios, de tal forma que no es necesario replicar la
información.
Los usuarios no necesitan disponer de un directorio home en cada una de las
máquinas de la organización. Los directorios home pueden crearse en el servidor
NFS para posteriormente poder acceder a ellos desde cualquier máquina a través
de la red.
También se pueden compartir a través de la red dispositivos de almacenamiento
como unidades de CD/DVD-ROM, discos duros externos y de almacenamiento
extraíble, etc. Esto puede reducir la inversión en dichos dispositivos y mejorar el
aprovechamiento de hardware existente en la organización.
Todas las operaciones sobre archivos son síncronas. Esto significa que la
operación sólo retorna cuando el servidor ha completado todo el trabajo asociado
para esta operación. En caso de una solicitud de escritura, el servidor escribirá
físicamente los datos en el disco, y si es necesario, actualizará la estructura de
directorios, antes de devolver una respuesta al cliente. Esto garantiza la integridad
de los archivos.
76 | NFS: NETWORK FILE SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
7.2 Configuración de un servidor NFS
7.2.1 El servicio nfs y rpcbind
Todas las versiones de NFS se basan en Remote Procedure Calls (RPC o llamadas a
procedimiento remoto) entre clientes y servidores. Los servicios RPC en CentOS
Linux son controlados por el servicio rpcbind. Este servicio debe ser iniciado
para trabajar en conjunto con el servicio nfs, que permite implementar el
protocolo NFS en nuestro servidor.
7.2.2 Archivo de configuración
El paquete nfs-utils instala el software Apache en CentOS Linux. Instala el
demónico del servicio NFS. El archivo de configuración /etc/exports es
instalado por el paquete setup, que es instalado durante la instalación inicial del
sistema, el cual contiene archivos de configuración esenciales para el
funcionamiento del sistema operativo:
Item Descripción
/etc/rc.d/init.d/nfs El script de inicio usado por el comando service para
iniciar, detener o reiniciar el servicio
/etc/exports El archivo de configuración principal del servicio NFS, a
pesar de que no es instalado por él, sino por el paquete
setup
7.2.3 El archivo /etc/exports
El archivo /etc/exports controla cuáles sistemas de archivos son exportados
a las máquinas remotas y especifica opciones. Las líneas en blanco son ignoradas,
se pueden comentar líneas con el símbolo # y las líneas largas pueden ser
divididas con una barra invertida (\). Cada sistema de archivos exportado debe
tener su propia línea y cualquier lista de hosts autorizados colocada después de
un sistema de archivos exportado, debe estar separada por un espacio. Las
opciones para cada uno de los hosts deben ser colocadas entre paréntesis
directamente detrás del identificador del host, sin ningún espacio de separación
entre el host y el primer paréntesis.
NFS: NETWORK FILE SYSTEM | 77
www.palosanto.com [CURSO DE LINUX AVANZADO]
Una línea para un sistema de archivos exportado tiene la estructura siguiente:
<export> <host>(<options>) <hostN>(<options>) ...
Donde,
• <export>
Representa el directorio a exportar, por ejemplo: /exports/dir
• <host>
Representa el host o la red a la cual va a compartir el directorio. Los hosts
adicionales se pueden especificar en una lista separada por espacios. Se
pueden usar los métodos siguientes para especificar nombres de host:
o Host único. Cuando una máquina en particular es especificada
con nombre completo de dominio, nombre de máquina o
dirección IP.
o Comodines. Usamos un caracter * o ? para referirnos a un grupo
de nombres completos de dominio o direcciones IP o que
coincidan con una cadena en particular de letras. Los comodines
no se deberían de utilizar con direcciones IP.
o Redes IP. Permite la coincidencia de hosts basados en sus
direcciones IP dentro de una red más grande. Por ejemplo,
192.168.0.0/28 permite el acceso a las primeras 16
direcciones IP acceder al sistema de archivos exportado, pero no
al resto.
• <options>
El siguiente cuadro contiene algunas de las opciones básicas de
exportación, ejecute el comando man exports para mayor
información:
Opción Descripción
rw Permite acceso de lectura y escritura al recurso
ro Sólo se permite acceso de lectura, la escritura está
bloqueada
all_squash Fuerza a todos los usuarios a conectarse con la cuenta y
los permisos de nobody
no_root_squash Permite al cliente acceder al recurso exportado en el
servidor como usuario root
sync La transferencia de datos es síncrona
async La transferencia de datos es asíncrona
78 | NFS: NETWORK FILE SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
El contenido de un archivo /etc/exports de ejemplo sería:
/home srv*(rw,sync)
/archivos 192.168.0.0/24(rw,no_root_squash,sync)
/var/ftp *(ro,all_squash,async)
Lo que quiere decir en detalle:
• El directorio /home es accesible desde todas las estaciones cuyos
nombres empiecen por srv. El recurso exportado tiene permisos de
lectura/escritura y la transferencia de datos es síncrona.
• El directorio /archivos es accesible desde todos los hosts que
pertenecen a la red 192.168.0.0/24. El recurso exportado tiene
permisos de lectura/escritura y la transferencia de datos es síncrona. Se
podrá acceder al recurso exportado como usuario root.
• El directorio /var/ftp es accesible para todas las estaciones. El recurso
exportado es de solo lectura, y todos los usuarios que se conecten serán
forzados a conectarse como la cuenta nobody. La transferencia de datos
es asíncrona.
7.2.4 Iniciar y detener el servicio
Para iniciar el servicio, ejecute los comandos:
~]# service nfs start
~]# service rpcbind start
Para detener el servicio, ejecute el comando:
~]# service nfs stop
Por defecto, el servicio nfs no inicia a tiempo de arranque del servidor en ningún
runlevel. Para que el servicio se inicie a tiempo de arranque, ejecute el comando:
~]# chkconfig nfs on
Tenga en cuenta que el servicio rpcbind también debe iniciar a tiempo de
arranque del sistema. En una instalación del sistema, este servicio ya se inicia a
tiempo de arranque, sino es así ejecute el comando:
~]# chkconfig rpcbind on
NFS: NETWORK FILE SYSTEM | 79
www.palosanto.com [CURSO DE LINUX AVANZADO]
7.3 Configuración del cliente NFS
Ahora que hemos visto como configurar el servidor para poder exportar recursos,
las estaciones Linux necesitan ser configuradas para poder montar los recursos
remotos.
El servicio rcpbind maneja la llamada entre el cliente y el servidor, así que el
servicio debe estar ejecutándose en la máquina cliente; rpcbind ya debería
estar activo en una instalación regular, si no es así puede verificarlo con el
comando:
~]# service rpcbind status
Ahora podemos ejecutar el comando showmount en el cliente para poder
consultar al servidor por recursos disponibles, así:
~]# showmount –e 192.168.0.1
Export list for 192.168.0.1
/archivos 192.168.0.0/24
Ahora vamos a ejecutar el comando mount para poder montar el recurso
/archivos que se aloja en 192.168.0.1. Para esto necesitamos crear un
directorio de montaje en nuestro sistema de archivos, así:
~]# mkdir /mnt/archivos
Luego ejecutamos el montaje del recurso con el siguiente comando:
~]# mount –t nfs 192.168.0.1:/archivos /mnt/archivos
Finalmente si queremos desmontar el recurso, podemos ejecutar el comando
umount, así:
~]# umount /mnt/archivos
80 | NFS: NETWORK FILE SYSTEM
[CURSO DE LINUX AVANZADO] www.palosanto.com
Laboratorio 12
Configuración de un servidor NFS
Para este laboratorio vamos a exportar dos directorios /exports/dir1 y
/exports/dir2. El primero lo montaremos con permisos de lectura/escritura y acceso de
root para todos los usuarios, mientras que el segundo solamente con permisos de lectura y
acceso nobody para la dirección IP 192.168.1.60
1. Verificamos que el paquete nfs-utils se encuentre instalado, así:
~]# rpm -q nfs-utils
nfs-utils-1.2.3-36.el6.i686
2. Si no es así, procedemos a instalarlo con el siguiente comando:
~]# yum install nfs-utils
3. Procedemos a editar el archivo /etc/exports, y configurar los parámetros
mencionados al inicio de este laboratorio.
/exports/dir1 *(rw,no_root_squash,sync)
/exports/dir2 192.168.1.60(ro,all_squash,sync)
4. Ahora para poder ejecutar un servidor NFS, el servicio rpcbind debe estar
ejecutándose. Lo verificamos así:
~]# service rpcbind status
5. Finalmente, procedemos a levantar el servicio NFS, así:
~]# service nfs start
6. Si queremos que el servicio se inicie a tiempo de arranque del servidor, ejecutamos:
~]# chkconfig nfs on
7. Con el comando showmount verificamos que nuestros recursos se encuentren
exportados correctamente. Para esto ejecutamos:
~]# showmount –e localhost
8. Ahora debemos verificar el funcionamiento del servicio tratando de montar los
recursos exportados de sus compañeros en su equipo o localmente, tal como se ha
visto en la sección 7.3 de este capítulo.
NFS: NETWORK FILE SYSTEM | 81
Capítulo 8
[SERVIDOR DE ARCHIVOS]
CONTENIDO
8.1 El servidor Samba
8.2 Configuración de un servidor de archivos
[CURSO DE LINUX AVANZADO] www.palosanto.com
8.1 El servidor Samba
Samba es una implementación de código abierto del protocolo SMB (Server
Message Block). Permite que varios sistemas operativos como Microsoft
Windows, Linux y UNIX se puedan comunicar entre sí para habilitar el acceso a
recursos e impresoras compartidos por equipos Windows. Samba permite que un
servidor Linux parezca un servidor Windows frente a los clientes que se desean
comunicar con él.
Una vez que tenga instalado Samba, usted podrá compartir los filesystems de
Linux para que puedan ser accedidos por máquinas Windows en la red LAN, así
como también compartir las impresoras conectadas al servidor Linux.
SMB fue originalmente inventado por IBM, pero la versión más común hoy en día
es la modificada ampliamente por Microsoft. Microsoft renombró SMB a Common
Internet File System (CIFS) en 1998 y añadió más características.
Samba es una implementación de una docena de servicios y una docena de
protocolos, entre los que están: NetBIOS sobre TCP/IP, SMB, DCE/RPC o más
concretamente, MSRPC, el servidor WINS también conocido como el servidor de
nombres NetBIOS (NBNS), la suite de protocolos del dominio NT, con su Logon de
entrada a dominio, la base de datos del gestor de cuentas seguras (SAM), el
servicio Local Security Authority (LSA) o autoridad de seguridad local, el servicio de
impresoras de NT y recientemente el Logon de entrada de Active Directory, que
incluye una versión modificada de Kerberos y una versión modificada de LDAP.
Todos estos servicios y protocolos son frecuentemente referidos de un modo
incorrecto como NetBIOS o SMB.
Samba configura directorios Linux (incluyendo sus subdirectorios) como recursos
para compartir a través de la red. Para los usuarios de Microsoft Windows, estos
recursos aparecen como carpetas normales de red. Los usuarios de Linux pueden
montar en sus sistemas de archivos estas unidades de red como si fueran
dispositivos locales. Cada directorio puede tener diferentes permisos de acceso
sobrepuestos a las protecciones del sistema de archivos que se esté usando en
Linux.
Samba es una aplicación poderosa y versátil. Todo administrador de sistemas
debe conocer sus habilidades y limitaciones antes de intentar su instalación y
configuración.
Lo que Samba puede hacer:
• Servir directorios e impresoras para clientes Microsoft Windows, Linux y
UNIX
• Asistir en la navegación de la red (con o sin NetBIOS)
• Autenticar inicios de sesión de dominios Windows
• Proveer resolución de nombres Windows (WINS)
SERVIDOR DE ARCHIVOS | 83
www.palosanto.com [CURSO DE LINUX AVANZADO]
• Actuar como un controlador de dominio principal (PDC)
• Actuar como un controlador de dominio de respaldo (BDC) para un PDC
basado en Samba
• Actuar como un servidor de dominio miembro de Active Directory
• Unirse a un dominio Windows NT/2000/2003/2008
Lo que Samba no puede hacer:
• Actuar como un controlador de dominio de respaldo (BDC) para un PDC
Windows
• Actuar como un controlador de dominio de Active Directory
8.2 Configuración de un servidor de archivos con
Samba
8.2.1 Los servicios smb, nmb, winbind
Samba está compuesto por tres demónicos (smbd, nmbd, winbindd). Tres
servicios (smb, nmb, winbind) controlan cómo se inician y detienen estos
servicios. Cada demónico se lista a continuación:
• smbd. El demonio de servidor smbd suministra servicios para compartir
archivos e impresión a clientes Windows. Además, es responsable de la
autenticación de usuario, el bloqueo de recursos, y el intercambio de
datos a través del protocolo SMB.
Los puertos por defecto en el que el servidor escucha por tráfico SMB son
los puertos TCP 139 y 445.
El demonio smbd es controlado por el servicio smb.
• nmbd. El demonio del servidor nmbd entiende y responde a las peticiones
de servicio de nombres NetBIOS tales como aquellas producidas por SMB
en los sistemas basados en Windows. Estos sistemas incluyen Windows
95/98/ME, Windows NT, Windows 2000, Windows XP, y los clientes
LanManager. También participa en los protocolos de navegación que
forman la vista Entorno de red de Windows.
El puerto por defecto que el servidor escucha por tráfico NMB es el
puerto UDP 137.
El demonio nmbd es controlado por el servicio nmb.
• winbindd. El servicio winbind resuelve la información de usuarios y
grupos en un servidor con Windows NT, 2000, 2003 o Windows Server
2008. Esto hace que la información de usuario/grupo de Windows sea
entendible para las plataformas UNIX. Esto se logra mediante el uso de las
llamadas RPC, Pluggable Authentication Modules (PAM) y el Name Service
Switch (NSS). Esto permite que los usuarios del dominio Windows NT
84 | SERVIDOR DE ARCHIVOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
aparezcan y operen como usuarios UNIX en una máquina UNIX. Aunque
está enlazado con la distribución Samba, el servicio winbind se controla
separadamente de smb.
8.2.2 Archivo de configuración
Los paquetes samba, samba-common, samba-client y samba-
winbind instalan el servidor Samba y sus demónicos en CentOS Linux. El archivo
de configuración /etc/samba/smb.conf es instalado por el paquete samba-
common.
Item Descripción
/etc/rc.d/init.d/smb El script de inicio usado por el comando service para
iniciar, detener o reiniciar el servicio relacionado a SMB
/etc/rc.d/init.d/nmb El script de inicio usado por el comando service para
iniciar, detener o reiniciar el servicio relacionado a
NetBIOS
/etc/rc.d/init.d/winbind El script de inicio usado por el comando service para
iniciar, detener o reiniciar relacionado a la
autenticación de usuarios y grupos contra servidores
de dominio Windows
/etc/samba/smb.conf El archivo de configuración principal del servidor
Samba
8.2.3 Iniciar y detener el servicio
Para iniciar el servicio, ejecute los comandos:
~]# service smb start
~]# service nmb start
~]# service winbind start
Para detener el servicio, ejecute los comandos:
~]# service smb stop
~]# service nmb stop
~]# service winbind stop
SERVIDOR DE ARCHIVOS | 85
www.palosanto.com [CURSO DE LINUX AVANZADO]
Por defecto, los servicios mencionados anteriormente no inician a tiempo de
arranque del servidor en ningún runlevel. Para que los servicios se inicien a
tiempo de arranque, ejecute el comando:
~]# chkconfig smb on
~]# chkconfig nmb on
~]# chkconfig winbind on
8.2.4 Cuentas de usuario de Samba
Samba provee varios mecanismos de motor de contraseñas para almacenar los
usuarios y sus contraseñas. El siguiente es un listado de las posibles lugares donde
Samba almacena contraseñas:
• Texto plano
• smbpasswd
• tdbsam
• ldapsam
En la configuración por defecto, Samba utiliza la base de datos tdbsam para
almacenar los datos de usuarios y contraseñas. Es recomendado para un máximo
de 250 usuarios. Organizaciones más grandes deberían utilizar Active Directory o
LDAP para ajustarse a sus necesidades. Físicamente, la base de de usuarios de
Samba con tdbsam se encuentra por defecto en el archivo
/var/lib/samba/private/passdb.tdb, el mismo que se crea
automáticamente cuando agregamos nuestro primer usuario.
Para agregar un usuario de Samba, el mismo ya debe estar creado como un
usuario local en el sistema en el archivo /etc/passwd. El comando
smbpasswd permite definir una contraseña para el usuario local de Linux que va
a ser utilizado para que equipos Windows accedan mediante el protocolo SMB. Es
decir, un usuario local tendrá una contraseña para el ambiente Linux y otra
contraseña para el ambiente Windows, ya que cada sistema operativo usa
algoritmos de encriptación diferentes. Linux usa el algoritmo MD5 por lo general y
Windows usa el algoritmo MD4.
Por ejemplo, si voy a compartir un recurso en mi servidor Linux y deseo que sea
accesible desde una red Windows usando Samba, y este recurso sea accedido
solamente por el usuario winuser, tendría que ejecutar los siguientes comandos
para crear dicho usuario:
~]# useradd winuser
~]# smbpasswd –a winuser
86 | SERVIDOR DE ARCHIVOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
El comando smbpasswd agrega el usuario local a la base de usuarios Samba y le
asigna una contraseña para el ambiente Windows encriptada con MD4.
8.2.5 La utilidad nmblookup
nmblookup es usado para consultar nombres NetBIOS y asociarlos a direcciones
IP en una red TCP/IP. Las opciones del comando permiten que las consultas de
nombres sean dirigidas a un área de broadcast IP o a un equipo en particular.
Todas las consultas son realizadas sobre UDP.
Un ejemplo sencillo sería:
~]# nmblookup winpc
querying winpc on 192.168.0.255
192.168.0.15 winpc<00>
Donde winpc es el nombre NetBIOS del equipo Windows del cual deseamos
saber su dirección IP. Para más información ver la página de manual del comando.
Utilizaremos el nombre winpc para referirnos a un servidor Windows para los
ejemplos citados de ahora en adelante.
8.2.6 La utilidad smbtree
smbtree es un browser SMB en modo texto. Es similar a Mis Sitos de Red que se
encuentra en equipos Windows. Muestra un árbol con todos los dominios
conocidos, los servidores en esos dominios y los recursos de dichos servidores.
Basta con digitar el comando en la consola, y tendremos una salida similar a esta:
~]# smbtree
Password:
GRUPO_TRABAJO
\\WINPC
\\WINPC\C$ Recurso predeterminado
\\WINPC\ADMIN$ Admin remota
\\WINPC\F$ Recurso predeterminado
\\WINPC\resp
\\WINPC\IPC$ IPC remota
\\LAPTOP
\\LAPTOP\C$ Recurso predeterminado
\\LAPTOP\ADMIN$ Admin remota
\\LAPTOP\backup
Para mayor información ver la página de manual del comando.
SERVIDOR DE ARCHIVOS | 87
www.palosanto.com [CURSO DE LINUX AVANZADO]
8.2.7 Listar recursos SMB de un servidor
smbclient es un programa cliente que puede hablar a un servidor SMB/CIFS.
Ofrece una interface similar a la de un programa FTP en modo texto. Decimos que
es de acceso temporal.
Sus operaciones incluyen cosas como obtener archivos desde el servidor hasta la
máquina local, poner archivos desde el equipo local al servidor, recabar
información y listar contenido de directorios desde el servidor y demás.
A pesar de que el comando es uno solo, sus opciones nos permiten darle mayor
uso, vamos a tratar dos funciones interesantes: listar recursos de un servidor y
acceder a dichos recursos.
Para realizar listar los recursos SMB de un servidor deberíamos saber si para
acceder a un recurso lo podemos hacer libremente o necesitamos alguna cuenta
de usuario y contraseña.
• Si el acceso al recurso es libre, un ejemplo sería así:
~]# smbclient -L winpc
• Si necesitamos una cuenta de usuario, por ejemplo winuser,
tendríamos:
~]# smbclient -L winpc –U winuser
Una posible salida para ambos comandos sería similar a la siguiente:
Domain=[WINPC] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
C$ Disk Recurso predeterminado
IPC$ IPC IPC remota
resp Disk
ADMIN$ Disk Admin remota
Domain=[WINPC] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Server Comment
--------- -------
WINPC samba server
Workgroup Master
--------- -------
GRUPO_TRABAJO WINPC
8.2.8 Acceder a recursos SMB de un servidor
Al igual que el punto anterior, deberíamos saber si el acceso al recurso es libre o
necesitamos de una cuenta de usuario y contraseña.
88 | SERVIDOR DE ARCHIVOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
• Si el acceso al recurso es libre, un ejemplo sería así:
~]# smbclient //winpc/resp
• Si necesitamos una cuenta de usuario, por ejemplo winuser,
tendríamos:
~]# smbclient //winpc/resp –U winuser
Donde //winpc/resp representa al recurso SMB al que se quiere acceder.
Una posible salida para ambos comandos sería similar la siguiente:
Domain=[WINPC] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
. D 0 Thu Mar 6 00:44:07 2013
.. D 0 Thu Mar 6 00:44:07 2013
11feb2008.txt A 553 Tue Feb 12 19:48:32 2013
12feb2008.txt A 553 Tue Feb 12 21:59:34 2013
Asterisk.pdf A 156243 Tue Dec 11 18:55:12 2013
beryl D 0 Wed Mar 5 23:43:49 2013
smb: \>
Podemos aplicar los comandos similares a los usados en una sesión FTP o digitar
help en la línea de comandos para obtener una lista de todas las opciones
posibles.
8.2.9 La utilidad mount.cifs
mount.cifs nos permite conectar a recursos SMB y montarlos como si fueren
filesystems locales, tal como lo que se conoce como mapeos de unidades de red
en el ambiente Microsoft Windows. Decimos que es de acceso permanente. Para
versiones anteriores de Samba se utilizaba el comando smbmount, el mismo que
ha sido descontinuado.
Al igual que los puntos tratados anteriormente, necesitamos saber si el acceso es
libre o con una cuenta de usuario y contraseña.
• Si el acceso al recurso es libre, un ejemplo sería así:
~]# mount.cifs //winpc/resp /mnt/recurso –o
ip=192.168.0.15
• Si necesitamos una cuenta de usuario, por ejemplo winuser y
contraseña secreto, tendríamos:
~]# mount.cifs //winpc/resp /mnt/recurso –o
ip=192.168.0.15,username=winuser,password=secreto
SERVIDOR DE ARCHIVOS | 89
www.palosanto.com [CURSO DE LINUX AVANZADO]
La dirección IP 192.168.0.15 correspondiente a winpc se la pudo obtener al
ejecutar el comando nmblookup.
Ahora por ejemplo, al ejecutar el comando df veremos como el filesystem ha sido
montado correctamente, así:
~]# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda1 19G 4,2G 14G 24% /
tmpfs 501M 0 501M 0% /dev/shm
/dev/sda5 19G 574M 19G 4% /particion1
/dev/sda6 28G 11G 18G 39% /particion2
//winpc/resp 19G 4,2G 14G 24% /mnt/recurso
Para desmontar un recurso simplemente ejecutamos el comando
umount.cifs, por ejemplo:
~]# umount.cifs /mnt/recurso
Adicionalmente, el comando mount.cifs tiene su equivalente con el comando
mount, por ejemplo:
~]# mount.cifs //winpc/resp /mnt/recurso –o
ip=192.168.0.15
equivale a:
~]# mount –t cifs //winpc/resp /mnt/recurso –o
ip=192.168.0.15
90 | SERVIDOR DE ARCHIVOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
Laboratorio 13
Configuración de un servidor de archivos con
Samba
1. Verificamos que Samba se encuentre instalado, así:
~]# rpm -qa | grep samba
samba-client-3.6.9-151.el6.i686
samba-3.6.9-151.el6.i686
samba-winbind-3.6.9-151.el6.i686
samba-common-3.6.9-151.el6.i686
2. Si no es así, procedamos a instalar los paquetes antes mencionados antes de
proseguir, con el siguiente comando:
~]# yum install samba samba-common samba-client samba-winbind
3. Ahora con la ayuda de nuestro editor de texto preferido vamos a configurar el
archivo /etc/samba/smb.conf. El archivo de configuración de Samba está
dividido en dos secciones: global y share.
Buscamos y editamos las directivas para la sección global en el siguiente cuadro,
de acuerdo a nuestras necesidades:
Directiva Descripción
workgroup = WORKGROUP Especifica el grupo o dominio al cual
pertenecerá el servidor. Especifíquelo
preferiblemente con mayúsculas
netbios name = MYSERVER Especifica el nombre de NetBIOS del
servidor en la red Windows
server string = Samba Server Especifica un mensaje o comentario
para identificar al servidor estando en
la estación cliente
interfaces = lo eth0 Permite configurar Samba para usar
múltiples interfaces
hosts allow = 192.168.1. 192.168.2. Permite restringir quien puede
127. conectarse a los recursos en nuestro
servidor
security = user Especifica el tipo de seguridad, su
valor puede ser: user, server, domain,
ads, share
passdb backend = tdbsam El lugar donde almacenar la
información de los usuarios. tdbsam
es la opción por defecto
SERVIDOR DE ARCHIVOS | 91
www.palosanto.com [CURSO DE LINUX AVANZADO]
4. Ahora, asumiendo que tenemos configurado el tipo de seguridad en user,
tenemos que crear los usuarios Samba en nuestro servidor.
La base de usuarios de Samba se encuentra por defecto en el archivo
/var/lib/samba/private/passdb.tdb (ya que se usa por defecto la
base de datos tdbsam), el mismo que se crea cuando agregamos nuestro primer
usuario.
Para crear un usuario en la base de Samba, debe existir previamente el usuario en
el sistema Linux, así que ejecutamos:
~]# useradd winuser
Y luego lo agregamos a la base de usuarios de Samba, así:
~]# smbpasswd –a winuser
Nos pedirá que asignemos una contraseña, que sería la contraseña de dicho
usuario para una red Windows encriptada en formato MD4.
5. Ahora vamos a compartir recursos, para esto nos dirigimos a la sección shares del
archivo /etc/samba/smb.conf que está al final del mismo archivo y
añadimos un recurso compartido:
[userXXdir]
comment = UserXX Service
path = /opt/userXXdir
valid users = winuser
browseable = yes
public = no
writable = yes
Esta sección de recurso compartido crea un directorio llamado userXXdir,
donde XX es el número de máquina asignado a Ud. Es preferible tener recursos
compartidos con nombres de menos de 9 caracteres. En realidad el directorio que
se comparte es el especificado por la directiva path, el cual es
/opt/userXXdir. Debido a que la bandera browseable está configurada a
“yes”, el directorio será mostrado a cualquier cliente SMB, sin embargo, debido a
que la opción public está configurada como “no”, solo el usuario winuser
podrá acceder al directorio vía Samba.
Se puede dar acceso a más de un usuario o a grupos especificándolos (para grupos
se debe anteponer un arroba “@”). Aquí un ejemplo dando acceso a un usuario y
a un grupo:
valid users = winuser, @users
92 | SERVIDOR DE ARCHIVOS
[CURSO DE LINUX AVANZADO] www.palosanto.com
6. Procedemos a iniciar los servicios Samba:
~]# service smb start
~]# service nmb start
~]# service winbind start
7. Para que Samba se ejecute cada vez que inicia el servidor, ejecutamos los
comandos:
~]# chkconfig smb on
~]# chkconfig nmb on
~]# chkconfig winbind on
El instructor, con su computador con Microsoft Windows, procederá a acceder a
ver los equipos mediante el entorno de red de Windows. Los equipos
correctamente configurados podrán ser vistos mediante esta utilidad.
SERVIDOR DE ARCHIVOS | 93