Está en la página 1de 64

LE-202 – Linux Enterprise / Servicios de Red - Guía de laboratorios

Índice de contenido
Configuración de dispositivos de red......................................................................................4
Configuración de dispositivos de red........................................................................................5
Verificación del dispositivo de red.............................................................................................5
Configuración de propiedades de red.......................................................................................6
Configuración de la dirección IP...........................................................................................6
Configuración de la puerta de enlace ..................................................................................7
Configuración del nombre de host........................................................................................7
Configuración de los servidores DNS..................................................................................7
Verificación de la configuración............................................................................................7
Network File System..................................................................................................................9
Verificación del estado de los componentes de NFS..............................................................10
Configuración de un recurso NFS..........................................................................................10
Configuración de los clientes NFS.........................................................................................11
Dynamic Host Configuration Protocol...................................................................................12
Dynamic Host Configuration Protocol ....................................................................................13
Network Time Protocol............................................................................................................15
Network Time Protocol...........................................................................................................16
Configuración de la zona horaria............................................................................................16
Configuración de un cliente NTP............................................................................................16
SAMBA......................................................................................................................................18
Diseño de la configuración para un servidor de aplicaciones..................................................19
Configuración de los directorios y permisos locales................................................................19
Configuración de la sección Global Settings del archivo smb.conf.........................................20
Configuración de la sección Share Definitions del archivo smb.conf......................................20
Estableciendo los miembros del grupo admin.........................................................................21
Configuración de las estaciones de trabajo............................................................................21
Squid.........................................................................................................................................22
Configuración inicial del servidor proxy Squid.........................................................................23
Configuración de las reglas de acceso...................................................................................23
Reglas de acceso con listas combinadas...........................................................................24
Verificación de la configuración..............................................................................................24
Configuración de los clientes..................................................................................................25
VSFTPD.....................................................................................................................................26
Administración del servidor VSFTPD.....................................................................................27
Habilitar/deshabilitar el acceso anónimo.................................................................................27
Control de acceso de usuarios al servicio FTP.......................................................................27
Configurando un entorno chroot para usuarios locales...........................................................28
DNS...........................................................................................................................................29
Verificación de paquetes instalados.......................................................................................30
Configuración del archivo named.conf....................................................................................30
Configuración de la base de datos de zonas..........................................................................32
Inicio del servicio....................................................................................................................33
Comprobación de named.......................................................................................................33
Configuración de rndc............................................................................................................34
Servidor Apache HTTP............................................................................................................36
Verificación de paquetes instalados.......................................................................................37
Configuración inicial del archivo httpd.conf.............................................................................37
Publicación de una página web..............................................................................................38
Configuración de directorios web...........................................................................................39
Generación automática del listado de directorios................................................................40
Publicación de aplicaciones web............................................................................................42
Activación de conexiones seguras con SSL.......................................................................44
Configuración de máquinas virtuales..................................................................................46
Postfix.......................................................................................................................................49
Configuración inicial de postfix...............................................................................................50
Creación de cuentas y verificación del funcionamiento.......................................................52
Aliases y listas de correo........................................................................................................53
Gestión de colas de correo.....................................................................................................54
Configuración de Dovecot......................................................................................................55
Configuración del servicio de webmail....................................................................................57
Forzar el uso de SSL para webmail....................................................................................58
SSHD.........................................................................................................................................60
Administración del servicio SSHD..........................................................................................61
El cliente ssh..........................................................................................................................61
Usando el comando scp.........................................................................................................62
Uso del comando sftp............................................................................................................62
Generar pares de claves........................................................................................................62
Generación de un par de claves DSA para la versión 2......................................................63
Configuración del servicio SSHD...........................................................................................63
1
Configuración de dispositivos de red
Configuración de dispositivos de red

Configuración de dispositivos de red


Este laboratorio lo guiara a través de los pasos necesarios para realizar la configuración
inicial de los dispositivos de red en Linux.

En este documento, se representará el número de equipo asignado como <X>. En todos


los lugares donde visualice <X>, reemplácelo por el número de equipo. Por ejemplo, si el
equipo asignado es el 09, reemplace 192.168.<X>.1 por 192.168.9.1. El diagrama de red
del dominio linux.com.py que se utilizara en todos los laboratorios es el siguiente:

Verificación del dispositivo de red


Identifique el módulo del kernel utilizado por el adaptador de red.

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

Obtenga mayor información acerca del módulo con el comando modinfo.

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

5 Red Hat Certified Engineer


Configuración de dispositivos de red

Asegúrese que las interfaces de red son visibles a través del comando ifconfig.

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

Ejecute el comando ifconfig con un intervalo de 10 segundos, puede notar que el


contador de paquetes recibidos se incrementa. ¿Esto que indica?

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

Si no es posible visualizar los dispositivos eth en la salida del comando ifconfig,


¿esto quiere decir que?

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

Utilice el comando ethtool para visualizar las propiedades de la interfaz de red.

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

Configuración de propiedades de red


Configuración de la dirección IP

Para configurar las direcciones IP en las interfaces de red, edite los archivos
/etc/sysconfig/network-scripts/ifcfg-ethX. Configure las interfaces como
se muestra en los ejemplos:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.<X>.1
NETMASK=255.255.255.0

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.0.<X>.1
NETMASK=255.255.255.0

Cuando un equipo Linux sera utilizado como puerta de enlace, debe activar el reenvío IP,
para ello, edite el archivo /etc/sysctl.conf y modifique la siguiente línea como en el
ejemplo:
# Controls IP packet forwarding

Ing. Ivan Ferreira 6


Configuración de dispositivos de red

net.ipv4.ip_forward = 1

Ejecute el comando sysctl -p para actualizar los cambios inmediatamente.

Configuración de la puerta de enlace

Edite el archivo /etc/sysconfig/network y agregue la siguiente línea:


GATEWAY=10.0.<X>.2

Configuración del nombre de host

El nombre de host debe ser configurado en los archivos /etc/sysconfig/network y


/etc/hosts.

El archivo /etc/sysconfig/network configura el nombre de host retornado por el


comando hostname. Edite el archivo y configure como se muestra en el ejemplo:
/etc/sysconfig/network
HOSTNAME=gw.suc<X>.linux.com.py

Edite el archivo /etc/hosts para registrar las interfaces de red como se muestra en el
siguiente ejemplo. Cada interfaz de red debe tener un nombre de host diferente asociado
y una de ellas tener asociado el nombre de host retornado por el comando hostname:
/etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.<X>.1 gw.suc<X>.linux.com.py gw-eth0.suc<X>.linux.com.py gw gw-eth0
10.0.<X>.1 gw-eth1.suc<X>.linux.com.py gw-eth1

Configuración de los servidores DNS

Edite el archivo /etc/resolv.conf para especificar el orden de búsqueda de dominio


y los servidores DNS, puede indicar hasta tres servidores DNS.
/etc/resolv.conf
search suc<X>.linux.com.py linux.com.py
nameserver 10.0.<X>.1
nameserver 127.0.0.1

Verificación de la configuración

Aplique los cambios utilizando el comando:


# service network restart

7 Red Hat Certified Engineer


Configuración de dispositivos de red

Verifique la dirección IP asignada a las interfaces de red con el comando


# ifconfig -a

Verifique la puerta de enlace por defecto con el comando:


# netstat -nr

Verifique la configuración del servidor DNS con el comando


# dig linux.com.py NS

Ing. Ivan Ferreira 8


2
Network File System
Network File System

Verificación del estado de los componentes de NFS


Ejecute el comando rpcinfo -p para verificar el estado de los componentes NFS
registrados en portmap:
# rpcinfo -p 10.0.<X>.1

Están los servicios NFS activos en el equipo consultado?............................................

Verifique el estado de los servicios NFS en el equipo local:


# rpcinfo -p localhost

Están los servicios NFS activos en el equipo local?

Identifique los recursos NFS exportados por un equipo remoto con el comando
showmount:
# showmount -e 10.0.<X>.1

Cuáles son los recursos exportados a través de NFS?

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

Identifique los recursos exportados en el equipo local:


# showmount -e localhost

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

Configuración de un recurso NFS


Los recursos NFS se configuran en el archivo /etc/exports. Configure un recurso
NFS donde se alojara el directorio HOME para los usuarios de la red. Cree el directorio a
ser exportado.
# mkdir /export/homes
# chown root:root /export/homes
# chmod 755 /export/homes

Edite el archivo /etc/exports como se muestra en el siguiente ejemplo:


/etc/exports
/export/homes 192.168.<X>.0(rw,nosuid,root_squash,sync)

Inicie los servicios NFS:


# service nfs start

Ing. Ivan Ferreira 10


Network File System

Verifique los recursos exportados:


# showmount -e

Si en el archivo /etc/exports únicamente se indica los permisos por dirección IP,


¿cómo es gestionada la seguridad a nivel de usuario para los recursos exportados?

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

Configuración de los clientes NFS


Un cliente NFS puede montar el recurso exportado utilizando el siguiente comando:
# mount -t nfs -o hard,intr,rsize=8192,wsize=8192 \
gw.suc<X>.linux.com.py:/export/homes /nfs/home

Para asegurarse que el recurso se monte cada vez que el equipo es reiniciado, debe
editar el archivo /etc/fstab como se muestra en el ejemplo:
gw.suc<X>.linux.com.py /nfs/home nfs hard,intr,rsize=8192,wsize=8192 0 0

11 Red Hat Certified Engineer


3
Dynamic Host Configuration Protocol
Dynamic Host Configuration Protocol

Dynamic Host Configuration Protocol


El protocolo DHCP permite que un servidor proporcione toda la configuración de TCP/IP
a los clientes de la red.

La configuración de un servidor DHCP es muy simple, primero, debe asegurarse que el


paquete dhcp-<version> está instalado:
# rpm -qa | grep dhcp-

Si no está instalado el paquete dhcp-<version>, instálelo con el comando yum:


# yum install dhcp

Utilice el archivo de configuración de ejemplo proporcionado con el paquete y


modifíquelo para adaptarlo a los requerimientos de la red:
# cp /usr/share/doc/dhcp-<version>/dhcpd.conf.sample /etc/dhcpd.conf

Edite el archivo /etc/dhcpd.conf y configurelo como se muestra en el ejemplo:


/etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;

subnet 192.168.<X>.0 netmask 255.255.255.0 {

# --- default gateway


option routers 192.168.<X>.1;
option subnet-mask 255.255.255.0;

# option nis-domain "domain.org";


option domain-name "suc<X>.linux.com.py";
option domain-name-servers 192.168.<X>.1;

# option time-offset -18000; # Eastern Standard Time


option ntp-servers 192.168.<sucX>.1;
option netbios-name-servers 192.168.<sucX>.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;

range dynamic-bootp 192.168.<X>.50 192.168.<X>.254;


default-lease-time 21600;
max-lease-time 43200;

13 Red Hat Certified Engineer


Dynamic Host Configuration Protocol

# we want the nameserver to appear at a fixed address


# Configuramos una impresora de red Jet Direct con dirección fija
host hpjd1 {
# next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.<sucX>.10;
}
}

En una nueva terminal, deje monitoreando el archivo de registro de eventos del sistema.
# tail -f /var/log/messages

Inicie el servicio dhcpd y verifique que haya iniciado satisfactoriamente visualizando el


registro de eventos.
# service dhcpd start

Examine el contenido del archivo de base de datos de asignaciones DHCP.

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

Ing. Ivan Ferreira 14


4
Network Time Protocol
Network Time Protocol

Network Time Protocol


El protocolo NTP permite mantener sincronizados los relojes de los equipos de una red.
Cada cliente configura uno o más servidores NTP (recomendado al menos 3) y los utiliza
para mantener la precisión del reloj.

Para mantener los relojes de todos los equipos de la empresa sincronizados, es


recomendado que seleccione tres equipos que sincronizaran contra servidores NTP
externos, y los demás equipos de la red interna deberían sincronizar a su vez contra
estos.

Para que NTP funcione correctamente, la zona horaria debe estar correctamente
configurada.

Configuración de la zona horaria


La zona horaria es definida en el archivo /etc/sysconfig/clock, asegúrese de
especificar America/Asuncion como zona horaria en este archivo:
/etc/sysconfig/clock
ZONE="America/Asuncion"
UTC=false
ARC=false

Durante el inicio del sistema, se utiliza la información del archivo para determinar cual
sera el archivo de zona a ser instalado en /etc/localtime.

El archivo de zona para Paraguay podría requerir modificaciones manuales para indicar
cuando inicia o termina el horario de verano. Las modificaciones son realizadas sobre el
archivo fuente de zona y compiladas con el comando zic.

Utilice el comando zdump para verificar en que fecha y hora iniciara el horario de verano
el próximo año.

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

Práctica: Configure un archivo fuente de zona para reflejar el inicio y fin del horario de
verano para el año actual.

Configuración de un cliente NTP


La configuración de Linux como cliente NTP es muy sencilla, debe editar el archivo
/etc/ntp.conf y definir la lista de servidores NTP. Edite el archivo de configuración
/etc/ntp.conf y modifique la sección de servidores NTP como se muestra en el
ejemplo:

Ing. Ivan Ferreira 16


Network Time Protocol

# --- OUR TIMESERVERS -----


server 10.0.<X>.1
restrict 10.0.<X>.1 mask 255.255.255.255 nomodify notrap noquery

Para que NTP funcione correctamente, debe realizar una sincronización inicial contra el
servidor NTP seleccionado, para ello, ejecute el comando ntpdate.
# ntpdate -b 10.0.<X>.1

Inicie el servicio NTP y configure para que se inicie automáticamente durante el arranque
del equipo.
# service ntpd start
# chkconfig ntpd on

Verifique que el equipo este sincronizando correctamente contra el servidor NTP con el
comando ntpq.
# ntpq -pn

Como es posible saber, a partir de la salida del comando anterior, que se esta
sincronizando correctamente contra alguno de los servidores NTP configurados?

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

17 Red Hat Certified Engineer


5
SAMBA
SAMBA

Diseño de la configuración para un servidor de aplicaciones


Se desea utilizar un equipo Linux configurado con SAMBA como servidor de
aplicaciones para Windows.

El objetivo de la configuración es la siguiente:

1. Se debe crear un recurso compartido apps al cual los usuarios accederán para
ejecutar las aplicaciones directamente desde la red.

2. Todos los usuarios deben poder acceder al recurso, para evitar posibles
alteraciones en los programas, el acceso debe ser de sólo lectura.

3. Debe existir un grupo de usuarios administradores quienes podrán escribir en el


recurso compartido, de tal forma a poder actualizar los programas existentes.

4. Inicialmente los usuarios Juan Perez (jperez) y Pedro Lopez (plopez), estarán
asignados como administradores.

5. El servidor SAMBA debe actuar como servidor WINS.

6. El servidor SAMBA debe ser el Master Browser para la red.

Configuración de los directorios y permisos locales


El primer paso para la implementación de la infraestructura es la configuración del
acceso requerido desde el punto de vista del equipo local, esto implica, crear los
usuarios, grupos, directorios y establecer los permisos apropiados.

El requerimiento 3 del diseño, indica que debe existir un grupo de administradores que
tengan la posibilidad de modificar el contenido del recurso compartido, para ello
crearemos el grupo admin, cuyos miembros tendrán permiso de escritura sobre el
recurso compartido:
# groupadd admin

El directorio que contendrá los archivos a ser compartido será /aplicaciones/:


# mkdir /aplicaciones

# Es necesario que el grupo admin pueda escribir en el directorio, los demás usuarios no
deben poder modificar el contenido del directorio, para ello establecemos el propietario y
los permisos apropiados:
# chown root:admin /aplicaciones
# chmod 2775 /aplicaciones

19 Red Hat Certified Engineer


SAMBA

Observe detenidamente los permisos establecidos y analice cuál sería el


comportamiento en base a esos permisos para el grupo admin y los demás usuarios.

Configuración de la sección Global Settings del archivo smb.conf


Edite el archivo /etc/samba/smb.conf y estableza los siguientes valores para
cumplir con los puntos 5 y 6 del diseño:
workgroup = LINUX
hosts allow = 192.168.<X>. 127.
security = user
local master = yes
os level = 33
domain master = yes
preferred master = yes
wins support = yes

Configuración de la sección Share Definitions del archivo


smb.conf
El recurso compartido, debe llamarse apps, el directorio local que corresponde con el
recurso compartido es /aplicaciones/, todos los usuarios deben tener acceso de
lectura, mientras que los miembros del grupo admin, acceso de lectura-escritura. Todos
los archivos y directorios nuevos creados en el deben tener los permisos apropiados.
Para cumplir con estos requerimientos, debe crear una configuración como la siguiente:
# Nombre del recurso compartido
[apps]
# Comentario
comment = Archivos de aplicaciones
# Ruta al directorio local
path = /aplicaciones/
# De acceso publico, no requiere autenticación para su acceso
public = yes
# Por defecto, acceso de solo lectura
writable = no
# Miembros del grupo admin pueden escribir al recurso, incluso si writable=no
write list = @admin
# Permisos de creacion para los archivos nuevos
create mode = 644
force create mode = 644
# Permisos de creacion para los directorios nuevos
directory mode = 2775
force directory mode = 2775

Ing. Ivan Ferreira 20


SAMBA

Una vez finalizada la configuración, utilice el comando testparm para verificar la


sintaxis, si no se reporta ningún error, inicie el servicio con el comando:
# service smb start

Identifique cuál es la función de los demonios smbd y nmbd.

Estableciendo los miembros del grupo admin


El paso final seria crear los usuarios y establecer la membresía del grupo admin como se
indica en el punto 4 del diseño.

Primero, se crean los usuarios para el sistema operativo, el nombre de usuario debería
ser el mismo al utilizado en la estación de trabajo Windows:
# useradd -s /bin/nologin jperez
# useradd -s /bin/nologin plopez
# gpasswd -a jperez admin
# gpasswd -a plopez admin

Luego se crean los usuarios para SAMBA, la contraseña debería ser la misma a la
utilizada en la estación de trabajo Windows:
# pdbedit -a jperez
# pdbedit -a plopez

Investigue, planifique e implemente alguna funcionalidad que permita a los usuarios


jperez y plopez puedan cambiar su contraseña SAMBA.

Configuración de las estaciones de trabajo


El servidor SAMBA ha sido configurado como servidor WINS. Identifique cuál es la
función del servidor WINS, cómo configurar manualmente y vía DHCP las estaciones de
trabajo Windows para utilizar el servidor WINS.

Averigüe cuál es el método de resolución de nombres Windows en caso que NetBIOS


sobre TCP/IP haya sido deshabilitado para las estaciones de trabajo Windows. ¿Puede
SAMBA operar bajo esta configuración?

21 Red Hat Certified Engineer


6
Squid
Squid

Configuración inicial del servidor proxy Squid


La configuración básica de un servidor squid es muy sencilla, los parámetros relevantes
que debe modificar del archivo /etc/squid/squid.conf son:
# El puerto en que squid escucha conexiones
http_port 3128
# La cantidad de memoria asignada.
cache_mem = 256 MB
# El directorio utilizado para almacenar los objetos del cache y su tamaño, para
este ejemplo se configurar 4 GB de espacio.
cache_dir ufs /var/spool/squid 4096 16 256

En base a la regla general, ¿cuánta memoria debería configurar para el parámetro


cache_mem en un equipo utilizado únicamente para proxy con 1 GB de memoria RAM y
un directorio cache de 10 GB?

Configuración de las reglas de acceso


La parte de la configuración del servidor Squid que requiere de mayor planificación son
las listas y reglas de acceso. Debe tener en cuenta que el orden en que se listan las
reglas de acceso son muy importantes, debido a que una vez que un cliente concuerda
con una regla de control de acceso, las demás reglas no son verificadas.

Avance en el archivo de configuración hasta las sección ACCESS CONTROLS.


Identifique los tipos de listas de control de acceso y su sintaxis. Según los tipos de listas
de control de acceso, en base a qué criterios es posible establecer reglas de acceso?

Avance hasta la sección INSERT YOUR OWN RULE(S) HERE... y cree una lista de
control de acceso que permita la utilización del servidor squid a algunos equipos de la
red local, obteniendo la lista de direcciones IP del archivo
/etc/squid/permitidos.list:
acl our_networks src “/etc/squid/permitidos.list”
http_access allow our_networks

En el archivo /etc/squid/permitidos, agregue la lista de direcciones IP a las


cuales permitimos el acceso al servidor proxy:
192.168.<X>.1
192.168.<X>.2
192.168.<X>.10
192.168.<X>.11

Tenga en cuenta que existen dos reglas por defecto que restringen el uso del servidor
squid:

23 Red Hat Certified Engineer


Squid

# And finally deny all other access to this proxy


http_access allow localhost
http_access deny all

Siempre debe establecer sus reglas de acceso por encima de estas reglas, de lo
contrario el acceso será denegado para todos.

Reglas de acceso con listas combinadas

Es posible utilizar mas de un criterio para determinar si la regla se aplica o no. En este
ejemplo, crearemos una lista de dominios restringida a la cual deberán acceder
solamente algunos equipos.

Los demás equipos de la red que tienen permiso de utilización del proxy, deben poder
acceder a cualquier sitio de Internet.
acl restringidos src "/etc/squid/restringidos.list"
acl permitidos src "/etc/squid/permitidos.list"
acl sitios_basicos dstdom_regex "/etc/squid/sitios_basicos.list"
http_access allow restringidos sitios_basicos
http_access allow permitidos

En los archivos restringidos.list y permitidos.list, indique las direcciones


IP de los equipos, una por línea. En el archivo sitios_basicos.list, indique la lista
de dominios permitidos, uno por línea, ej:
www.interbanco.com.py
www.inforconf.com.py

Las reglas de tiempo son comunes en la configuración de los servidores proxy. En el


siguiente ejemplo de configuración, permitimos la utilización del proxy de 8 a 12 y de 13 a
18. Existen algunos equipos que deberán tener acceso permanente al proxy:
acl ilimitado src "/etc/squid/ilimitado.list"
acl permitidos src "/etc/squid/permitidos.list"
acl am MTWHF 08:00-12:00
acl pm MTWHF 12:00-18:00
http_access allow ilimitado
http_access allow permitidos am
http_access allow permitidos pm

Verificación de la configuración
Para verificar que no existan errores en la sintaxis de configuración, ejecute el comando:
# squid -k parse

Ing. Ivan Ferreira 24


Squid

Si el comando no reporta ningún error, inicie el servicio squid:


# service squid start

Verifique el estado del servicio;


# service squid status

Configuración de los clientes


En cada cliente, es necesario configurar la información del servidor proxy y el puerto en
el que escucha.

Identifique cuál seria la funcionalidad de un proxy transparente y cómo configurarlo.

Busque información de cómo funciona la “configuración automática de proxy” cuando se


encuentra marcada esa opción en el navegador de Internet.

25 Red Hat Certified Engineer


7
VSFTPD
VSFTPD

Administración del servidor VSFTPD


Para brindar servicios FTP con Linux, la configuración por defecto de VSFTPD permite
que el simple hecho de levantar el servicio, el servidor se encuentre completamente
funcional.

Sin embargo, podría requerir ajustes para incrementar la seguridad del servidor. Tenga
en cuenta que para que un usuario pueda descargar un archivo, solamente necesita
permisos de lectura, pasa subir (o borrar) un archivo, necesita permisos de escritura
sobre el directorio.

Utilice el comando ftp para probar el inicio de sesión anónimo indicando como nombre
de usuario anonymous.

Utilice el comando ftp para iniciar sesión con un usuario cualquiera creado con el
comando adduser.

Habilitar/deshabilitar el acceso anónimo


El acceso anónimo permite a los usuarios ingresar con la cuenta anonymous sin
especificar contraseña. Una vez ingresado, accederán al contenido del directorio /var/
spool/ftp en un entorno chroot.

Para habilitar/deshabilitar el acceso anónimo configure la siguiente línea:


anonymous_enable=YES

Si el acceso anónimo está habilitado, puede permitir o no la subida de archivos:


anon_upload_enable=YES

Puede además restringir si el usuario anónimo puede o no crear nuevos directorios:


anon_mkdir_enable=YES

PRACTICA: Configure el archivo vsftpd.conf para denegar el acceso anónimo.


Compruebe que efectivamente el acceso anónimo es denegado utilizando el comando
ftp.

Control de acceso de usuarios al servicio FTP


Es posible restringir los usuarios que tienen acceso al servidor FTP, esto permite
habilitar o deshabilitar el acceso vía FTP de usuarios válidos del sistema. La restrucción
es activada por medio del parámetro:
userlist_enable=YES

27 Red Hat Certified Engineer


VSFTPD

El archivo que contiene la lista de usuarios que tienen permitido o no el acceso al servicio
FTP es configurado con el parámetro:
userlist_file=/etc/vsftpd/user_list

Si el parámtro userlist_deny es configurado a NO, entonces a todos los usuarios se


denegará el acceso excepto a aquellos que estén listados en el archivo user_list. Si
es configurado a YES, entonces a todos los usuarios se permitirá el acceso excepto a
aquellos listados en el archivo user_list.

PRACTICA: Configure el archivo vsftpd.conf para denegar el acceso a todos los


usuarios excepto los listados en el archivo /etc/vsftpd/vsftpd.user_list.

Busque además información de como hacer que un usuario puede acceder únicamente
vía FTP al sistema, no pudiendo acceder a una sesión interactiva (shell) vía consola,
SSH, Telnet, etc.

Configurando un entorno chroot para usuarios locales


Cuando un usuario local accede vía FTP, por defecto tiene acceso a toda la estructura
de árbol del sistema de archivos, partiendo desde la raíz. Esto podría provocar
problemas de seguridad debido a que el usuario tendría la posibilidad de acceder y
descargar archivos que no debería.

Con la opción chroot_local_user, los usuarios locales son enjaulados en su


directorio HOME, siendo asi este directorio, la nueva raíz desde el punto de vista del
usuario. Esto quiere decir que el usuario podrá acceder a cualquier directorio por debajo
de su HOME, pero no por encima de él.

Si desea realizar chroot de manera selectiva, puede configurar la opción


chroot_list_enable.

El archivo que contiene la lista de usuarios a quienes se aplica el entorno chroot está
definido por el parámetro chroot_list_file:
chroot_list_file=/etc/vsftpd/chroot_list

Si el parámetro chroot_local_user es habilitado, entonces esta lista se convierte en


la lista de usuarios a quienes NO se enjaulara en un entorno chroot.

PRACTICA: Configure el archivo vsftpd.conf de tal forma a enjaular a todos los


usuarios en un entorno chroot, excepto a los usuarios listados en chroot_list.

Ing. Ivan Ferreira 28


8
DNS
DNS

Verificación de paquetes instalados


Para configurar un servidor DNS, debe asegurarse de tener los paquetes bind y caching-
nameserver instalados:
# rpm -qa | egrep "bind|caching"
bind-utils-9.3.4-6.P1.el5
ypbind-1.19-8.el5
bind-chroot-9.3.4-6.P1.el5
bind-libs-9.3.4-6.P1.el5
bind-9.3.4-6.P1.el5
caching-nameserver-9.3.4-6.P1.el5

Las zonas para las cuales el servidor DNS es autoritativo se configura en el archivo
named.conf y la información de las zonas se configuran en archivos de bases de
datos de zonas.

BIND por defecto está configurado para ejecutarse en un entorno chroot, esto es
configurado en el archivo /etc/sysconfig/named:
# tail -1 /etc/sysconfig/named
ROOTDIR=/var/named/chroot

Configuración del archivo named.conf


Para iniciar la configuración de BIND, es conveniente utilizar los archivos de ejemplos
existentes en el directorio de documentación de BIND. Copie los archivos de
configuración de ejemplo y modifíquelo según los requerimientos de su instalación:
# cp /usr/share/doc/bind-*/sample/etc/* /var/named/chroot/etc/
# chown -R root.named /var/named/chroot/etc/

Edite el archivo named.conf y configure las vistas requeridas, en el siguiente ejemplo,


una única vista es configurada para la zona suc<X>.linux.com.py:
options
{
/* make named use port 53 for the source of all queries, to allow
* firewalls to block all ports except 53:
*/
query-source port 53;
query-source-v6 port 53;

// Put files that named is allowed to write in the data/ directory:


directory "/var/named"; // the default
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";

Ing. Ivan Ferreira 30


DNS

memstatistics-file "data/named_mem_stats.txt";
forwarders { 10.0.<X>.2; };

};
logging
{
* named will try to write the 'named.run' file in the $directory (/var/named).
* By default, SELinux policy does not allow named to modify the /var/named
directory,
* so put the default debug log file in data/ :
*/
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "external"
{
that connect via your directly attached LAN interfaces - "localnets" .
*/
match-clients { any; };
match-destinations { any; };
recursion yes;
// all views must contain the root hints zone:
include "/etc/named.root.hints";

// include "named.rfc1912.zones";
// you should not serve your rfc1912 names to non-localhost clients.

// These are your "authoritative" internal zones, and would probably


// also be included in the "localhost_resolver" view above :

zone "suc<X>linux.com.py" {
type master;
file "suc<X>.linux.com.py.db";
};
};

Cuál es la función de las vistas (views)?

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

Describa los tipos de servidores DNS que puede configurar

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

31 Red Hat Certified Engineer


DNS

Cuál es la función del parámetro recursion?

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

Configuración de la base de datos de zonas


Para configurar la base de datos de zonas, en este caso, suc<X>.linux.com.py.db,
también es conveniente utilizar los archivos de ejemplos para tener un archivo pre-
configurado. También debe copiar el archivo named.root el cual es utilizado por la
zona hint:
# cp /usr/share/doc/bind-*/sample/var/named/localdomain.zone \
/var/named/chroot/var/named/suc<X>.linux.com.py.db
# cp /usr/share/doc/bind-*/sample/var/named/named.root* \
/var/named/chroot/var/named/
# chown -R root.named /var/named/chroot/var/named/

Configure los Registros de Recursos en el archivo de base de datos de zonas. Tenga


siempre en cuenta que si el nombre FQDN del host no finaliza en punto, al nombre de
host se le adiciona automáticamente el dominio.

El siguiente es un ejemplo básico de un archivo de zona para suc<X>.linux.com.py:


$TTL 86400
@ IN SOA dns1.suc<X>.linux.com.py. soporte.suc<X>.linux.com.py. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN NS dns1.suc<X>.linux.com.py.
IN NS dns2.suc<X>.linux.com.py.
IN MX 10 mail.suc<X>.linux.com.py.
IN MX 20 mail2.suc<X>.linux.com.py.

dns1 IN A 10.0.<X>.1
dns2 IN A 10.0.<X>.2
mail IN A 10.0.<X>.1
mail2 IN A 10.0.<X>.4
www IN A 10.0.<X>.1
ftp IN A 10.0.<X>.1
pc01 IN A 192.168.<X>.1
pc02 IN A 192.168.<X>.2

Ing. Ivan Ferreira 32


DNS

Inicio del servicio


Una vez configurado el archivo named.conf y la información de zonas, inicie el
servicio y active su inicio automático:
# service named start
# chkconfig on

Puede verificar si el servicio inició correctamente consultado el archivo


/var/log/messages.

Comprobación de named
Para verificar el correcto funcionamiento de named, puede utilizar el comando dig.

Por ejemplo, para consultar por un host específico ejecute:


# dig @localhost www.suc<X>.linux.com.py

; <<>> DiG 9.3.2 <<>> @localhost www.suc<X>.linux.com.py


; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27428
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;www.suc<X>.linux.com.py. IN A

;; ANSWER SECTION:
www.suc<X>.linux.com.py. 86400 IN A 10.0.<X>.1

;; AUTHORITY SECTION:
suc<X>.linux.com.py. 86400 IN NS dns1.suc<X>.linux.com.py.
suc<X>.linux.com.py. 86400 IN NS dns2.suc<X>.linux.com.py.

;; Query time: 8 msec


;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 10 16:32:19 2007
;; MSG SIZE rcvd: 103

Para consultar la lista de servidores de correo de un dominio ejecute:


# dig @localhost suc<X>.linux.com.py MX

; <<>> DiG 9.3.2 <<>> @localhost linux.com.py MX

33 Red Hat Certified Engineer


DNS

; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50155
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;suc<X>.linux.com.py. IN MX

;; ANSWER SECTION:
suc<X>.linux.com.py. 86400 IN MX 10 mail.suc<X>.linux.com.py.
suc<X>.linux.com.py. 86400 IN MX 20 mail2.suc<X>.linux.com.py.

;; AUTHORITY SECTION:
suc<X>.linux.com.py. 86400 IN NS dns2.suc<X>.linux.com.py.
suc<X>.linux.com.py. 86400 IN NS dns1.suc<X>.linux.com.py.

;; Query time: 8 msec


;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 10 16:33:38 2007
;; MSG SIZE rcvd: 126

Configuración de rndc
BIND incluye la utilidad rndc, que permite administrar localmente o a distancia, el
demonio named gracias a las declaraciones de las líneas de comandos. Para evitar que
los usuarios no autorizados a controlar BIND en su sistema, se utiliza el método de
claves secretas compartidas para dar privilegios a determinados hosts.

El comando rndc tiene la siguiente sintaxis:


rndc <options> <command> <command-options>

Cuando ejecuta el comando rndc, las opciones más comunes son:

● halt - Para inmediatamente el servicio named.

● reload - Dice al servidor de nombres que recargue los ficheros de zona paro que
conserve todas las respuestas precedentes situadas en caché. Esto le permite
realizar cambios en los ficheros de zona y de ponerlos en práctica en los
servidores maestros y esclavos sin perder las resoluciones de nombres
almacenadas.

Si los cambios no afectan a una zona determinada, puede decir al comando


named que recargue esa zona. Escriba el nombre de la zona después del
comando reload.

Ing. Ivan Ferreira 34


DNS

● status - Muestra el estado del servidor.

● stop - Para el servidor salvando todas las actualizaciones dinámicas y los datos
IXFR antes de parar el servidor completamente.

Para poder utilizar rndc simplemente ejecute:


# rndc-confgen -a
# service named restart

El comando creará el archivo /var/named/chroot/etc/rndc.key el cual contiene


la clave para la administración de este servidor.

35 Red Hat Certified Engineer


9
Servidor Apache HTTP
Servidor Apache HTTP

Verificación de paquetes instalados


Para configurar un servidor HTTP, debe asegurarse de tener los siguientes paquetes
instalados:
# rpm -qa | grep -i httpd
httpd-2.2.3-6.el5.centos.1
httpd-manual-2.2.3-6.el5.centos.1
system-config-httpd-1.3.3.1-1.el5

El archivo de configuración del servidor Apache es /etc/httpd/conf/httpd.conf.


En este archivo debe realizar modificaciones mínimas. Todos los ajustes de
configuración preferentemente deben realizarse por medio de archivos de configuración
ubicados en el directorio /etc/httpd/conf.d.

Configuración inicial del archivo httpd.conf


Realice una copia de seguridad del archivo de configuración actual y verifique y
modifique las siguientes líneas del archivo de configuración
/etc/httpd/conf/httpd.conf según sea necesario:
# Asegúrese que Apache escucha en el puerto 80
Listen 80
# Asegúrese que se incluyan los archivos de configuración del directorio conf.d
Include conf.d/*.conf
# Establezca una dirección de correo para el administrador del servidor
ServerAdmin soporte@linux.com.py
# Establezca como nombre del servidor el nombre registrado en la zona DNS
ServerName www.suc<X>.linux.com.py:80
UseCanonicalName On
# Verifique el directorio en donde se almancenaran por defecto los archivos HTML
DocumentRoot "/var/www/html"
# Configure para que se intente mostrar archivos llamados indice.html si no se
# especifica la página solicitada en el URL
DirectoryIndex indice.html index.html index.html.var
# Comente la linea que establece el juego de caracteres por defecto
# AddDefaultCharset UTF-8

Guarde el archivo de configuración y verifique la sintaxis con el siguiente comando:


# httpd -t
Syntax OK

Inicie el servicio y configurelo para su arranque automático:


# service httpd start

37 Red Hat Certified Engineer


Servidor Apache HTTP

# chkconfig httpd on

Publicación de una página web


En el archivo de configuración de Apache, se establece la directiva DocumentRoot "/
var/www/html". Esta directiva indica que los archivos de página web deben ser
ubicados en el directorio /var/www/html para su publicación. Cuando un cliente
solicite www.suc<X>.linux.com.py, se mostrará la primera página encontrada en el
directorio /var/www/html cuyo nombre sea igual al especificado en la directiva
DirectoryIndex. Por tanto, si existe un archivo llamado indice.html, éste será
mostrado, de lo contrario, se buscará index.html y luego index.html.var.

Cree un archivo en lenguaje HTML para su publicación. Cree un archivo con el nombre /
var/www/html/indice.html con el siguiente contenido:
<html>
<head>
<title>Bienvenido a linux.com.py</title>
</head>
<body>
<h1>Bienvenido a www.suc<X>.linux.com.py</h1>
<hr>
<pre>
Bienvenido al sitio web de <b>Linux Paraguay</b>.
Para continuar, haga clic <a href=pagina1.html>aqui</a>
</pre>
</body>
</html>

En esta página, utilizando la etiqueta <a href=></a> se ha creado un hivervinculo a


una página llamada pagina1.html. Debe crear la pagina llamada
/var/www/html/pagina1.html con el siguiente contenido:
<html>
<head>
<title>Bienvenido a linux.com.py</title>
</head>
<body>
<h1>Sitio en construccion</h1>
<hr>
<pre>
Este sitio se encuentra actualmente en construccion.
Por favor, vuelva pronto.
Para volver, haga clic <a href=indice.html>aqui</a>
</pre>
</body>

Ing. Ivan Ferreira 38


Servidor Apache HTTP

</html>

Una vez creado los archivos, están listos y ubicados en el directorio para ser publicados.
Desde un navegador web, introduzca en el URL www.suc<X>.linux.com.py. El contenido
de la página indice.html debe ser desplegado.

Configuración de directorios web


Cuando un navegador cliente solicita un URL, siempre se buscarán los archivos y
directorios indicados en rutas relativas a /var/www/html. Por ejemplo, si el cliente
solicita en el URL www.suc<X>.linux.com.py/intranet, el servidor Apache intentará
obtener los archivos desde /var/www/html/intranet.

Si el directorio que contiene los archivos para la Intranet no se encuentra dentro de


/var/www/html, es necesario crear un Alias para poder acceder a ese directorio e
indicar en la directiva, cual es la ruta absoluta al directorio en el sistema de archivos.

Cree un directorio para almacenar los archivos de la Intranet:


# mkdir /intranet

Cree un archivo llamado /intranet/indice.html con el siguiente contenido:


<html>
<head>
<title>Bienvenido a la Intranet de linux.com.py</title>
</head>
<body>
<h1>Bienvenido a la Intranet de Linux.com.py</h1>
<hr>
<pre>
Esta es la Intranet de <b>Linux Paraguay</b>.

Este sitio se encuentra en construccion.

Si desea realizar conocer mas acerca de CentOS Linux, visite el sitio <a
href=www.centos.org>CentOS</a>
</pre>
</body>
</html>

Intente conectarse desde un navegador web al sitio www.suc<X>.linux.com.py/intranet,


recibirá un error indicando:

Not Found

39 Red Hat Certified Engineer


Servidor Apache HTTP

The requested URL /intranet/ was not found on this server.

Ahora, cree un archivo de configuración para indicar al servidor dónde están los archivos
de la Intranet.

Cámbiese al directorio:
# cd /etc/httpd/conf.d/

Cree un archivo llamado intranet.conf con el siguiente contenido:


Alias /intranet "/intranet"

<Directory "/intranet">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Recargue la configuración del servicio httpd:


# service httpd reload

Intente conectarse nuevamente desde un navegador web al sitio


www.suc<X>.linux.com.py/intranet, la página indice.html debe ser mostrada.

Generación automática del listado de directorios

En ocasiones, puede ser deseable que los archivos contenidos en un directorio puedan
ser listados, accedidos y descargados a través del navegador web.

Cree un directorio en donde almacenara algunos archivos:


# mkdir /intranet/archivos

Cree algún archivo en ese directorio:


# tar zcvf /intranet/archivos/grub.tgz /boot/grub/
tar: Removing leading `/' from member names
/boot/grub/
/boot/grub/splash.xpm.gz
/boot/grub/fat_stage1_5
/boot/grub/grub.conf
/boot/grub/device.map
/boot/grub/minix_stage1_5
/boot/grub/e2fs_stage1_5
/boot/grub/jfs_stage1_5

Ing. Ivan Ferreira 40


Servidor Apache HTTP

/boot/grub/iso9660_stage1_5
/boot/grub/xfs_stage1_5
/boot/grub/stage2
/boot/grub/menu.lst
/boot/grub/ufs2_stage1_5
/boot/grub/ffs_stage1_5
/boot/grub/stage1
/boot/grub/vstafs_stage1_5
/boot/grub/reiserfs_stage1_5

Cree un Alias para acceder al directorio. Cree el archivo


/etc/httpd/conf.d/archivos.conf con el siguiente contenido:
Alias /archivos "/intranet/archivos"
<Directory "/intranet/archivos">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Recargue la configuración del Apache con el comando:


# service httpd reload

Desde un navegador web ingrese en el URL la dirección


www.suc<X>.linux.com.py/archivos, recibirá un error indicando:

Forbidden
You don't have permission to access /intranet/archivos/ on this server.

Esto se debe a que la opción para generar un listado automático del directorio está
deshabilitada.

Edite el archivo /etc/httpd/conf.d/archivos.conf y configure al directorio con


opción Indexes:
Alias /archivos "/intranet/archivos"

<Directory "/intranet/archivos">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

41 Red Hat Certified Engineer


Servidor Apache HTTP

Recargue la configuración del Apache con el comando:


# service httpd reload

Desde un navegador web ingrese en el URL la dirección


www.suc<X>.linux.com.py/archivos. El listado de los archivos del directorio
/intranet/archivos debe ser visualizado.

Publicación de aplicaciones web


Existe distintos lenguajes de programación que permiten crear aplicaciones web, entre
ellos se encuentran los scripts cgi, los scripts perl, los script phyton, paginas php, etc.

Para que una aplicación web pueda ejecutarse, el directorio web debe ser configurado
para la ejecución de aplicaciones.

Copie el programa desarrollado en perl llamado file_upload.cgi al directorio


/intranet y establezca los permisos de ejecucion:
# cp /usr/lib/perl5/*/CGI/eg/file_upload.cgi /intranet
# chmod 755 /intranet/file_upload.cgi

Edite el archivo /intranet/file_upload.cgi y modifique primera linea indicando


la ruta al comando perl:

#!/usr/bin/perl -w

Ing. Ivan Ferreira 42


Servidor Apache HTTP

Guarde el archivo. Desde un navegador web ingrese en el URL la dirección


www.suc<X>.linux.com.py/intranet/file_upload.cgi.

Como el directorio /intranet no está configurado para la ejecución de aplicaciones,


se muestra el código de la página en lugar de ser ejecutada.

Edite el archivo /etc/httpd/conf.d/intranet.conf y configure el directorio con


la opción ScriptAlias en lugar de Alias:
ScriptAlias /intranet "/intranet"

<Directory "/intranet">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Recargue la configuración de Apache con el comando:


# service httpd reload

Desde un navegador web, nuevamente ingrese en el URL la dirección


www.suc<X>.linux.com.py/intranet/file_upload.cgi. La aplicación deberá ejecutarse.

43 Red Hat Certified Engineer


Servidor Apache HTTP

Activación de conexiones seguras con SSL

Toda la comunicación entre el cliente y el servidor web viaja de manera no encriptada.


Esto permite que información confidencial como nombres de usuario, contraseñas o
números de cuenta y tarjetas de crédito puedan ser fácilmente obtenidos utilizando un
analizador de red.

Para permitir una comunicación segura entre el cliente y el servidor web, debe activarse
SSL en el servidor web. El cliente, deberá establecer la conexión indicando en el URL
https:// en lugar de http://.

El servidor deberá presentar un certificado digital al cliente para garantizar su


autenticidad. El certfificado digital puede ser emitido por una entidad emisora de
certificados digitales o puede ser un certificado autogenerado/autofirmado.

Para activar SSL, primero asegúrese que el paquete mod_ssl está instalado:
# rpm -qa | grep mod_ssl
mod_ssl-2.2.3-6.el5.centos.1

Ejecute los comandos a continuación para generar las nuevas claves y el certificado
digital autofirmado. Es muy importante que el Common Name del certificado sea igual al
nombre del host registrado en DNS:
# rm -f /etc/pki/tls/certs/localhost.crt
# rm -f /etc/pki/tls/private/localhost.key
# cd /etc/pki/tls/certs
# make genkey
umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > /etc/pki/tls/private/localhost.key
Generating RSA private key, 1024 bit long modulus
......++++++
...................................++++++
e is 65537 (0x10001)
Enter pass phrase: [Ingrese una palabra clave]
Verifying - Enter pass phrase: [Confirme la palabra clave]
#
]# make testcert
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key /etc/pki/tls/private/localhost.key
-x509 -days 365 -out /etc/pki/tls/certs/localhost.crt -set_serial 0
Enter pass phrase for /etc/pki/tls/private/localhost.key: [Ingrese la palabra clave]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,

Ing. Ivan Ferreira 44


Servidor Apache HTTP

If you enter '.', the field will be left blank.


-----
Country Name (2 letter code) [GB]:PY
State or Province Name (full name) [Berkshire]:Asuncion
Locality Name (eg, city) [Newbury]:Asuncion
Organization Name (eg, company) [My Company Ltd]:Linux Paraguay
Organizational Unit Name (eg, section) []:Sistemas
Common Name (eg, your name or your server's hostname) []:www.suc<X>.linux.com.py
Email Address []:soporte@suc<X>.linux.com.py
#

Reinicie el servicio Apache con el comando:


# service httpd restart
Parando httpd: [ OK ]
Iniciando httpd: Apache/2.2.3 mod_ssl/2.2.3 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www.suc<X>.linux.com.py:443 (RSA)


Enter pass phrase: [Ingrese la palabra clave]

OK: Pass Phrase Dialog successful. [ OK ]

La palabra clave será solicitada para activar el certificado digital.

Desde un navegador web ingrese en el URL la dirección


https://www.suc<X>.linux.com.py.

En la barra de estada ubicada en la parte inferior del navegador, podrá visualizar un


candado cerrado indicando una conexión a un sitio seguro. Haciendo doble clic sobre el
icono del candado, se mostrarán los detalles del certificado digital.

45 Red Hat Certified Engineer


Servidor Apache HTTP

Configuración de máquinas virtuales

Las máquinas virtuales permiten servir varios dominios diferentes sin necesidad de
utilizar una dirección IP para cada dominio.

En esta configuración, utilizará máquinas virtuales para presentar contenidos diferentes


según el cliente se conecta a www.suc<X>.linux.com.py o ftp.suc<X>.linux.com.py.
Asegúrese de tener registrado en la zona DNS los recursos para www y ftp apuntando a
la misma dirección IP.

El contenido de www.suc<X>.linux.com.py estará en el directorio /var/www/html. El


contenido de ftp.suc<X>.linux.com.py estará en el directorio /var/www/ftp.

Cree el directorio /var/www/ftp y cree un archivo llamado indice.html en el con


el siguiente contenido:
<html>
<head>
<title>Bienvenido al FTP de linux.com.py</title>
</head>
<body>
<h1>Bienvenido al FTP de Linux.com.py</h1>
<hr>
<pre>

Ing. Ivan Ferreira 46


Servidor Apache HTTP

Este es el servidor de descargas de archivos de <b>Linux Paraguay</b>.


Este sitio se encuentra en construccion.
Si desea realizar conocer mas acerca de CentOS Linux, visite el sitio <a
href=www.centos.org>CentOS</a>
</pre>
</body>
</html>

Cree un archivo llamado /etc/httpd/conf.d/virtualhosts.conf con el


siguiente contenido:
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin soporte@suc<X>.linux.com.py
DocumentRoot /var/www/html
ServerName www.suc<X>.linux.com.py
ErrorLog logs/www/error_log
CustomLog logs/www/access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin soporte@suc<X>.linux.com.py
DocumentRoot /var/www/ftp
ServerName ftp.suc<X>.linux.com.py
ErrorLog logs/ftp/error_log
CustomLog logs/ftp/access_log common
</VirtualHost>

Cree los directorios para almacenar los logs de cada sitio:


# mkdir /var/log/httpd/www
# mkdir /var/log/httpd/ftp

Recargue la configuración del servicio Apache con el comando:


# service httpd reload

Desde un navegador web ingrese en el URL la dirección


http://www.suc<X>.linux.com.py. Deberá ver la página llamada indice.html
almacenada en /var/www/html. Luego, ingrese en el URL la dirección
http://ftp.suc<X>.linux.com.py. Deberá ver la página llamada indice.html
almacenada en /var/www/ftp.

47 Red Hat Certified Engineer


Servidor Apache HTTP

Ing. Ivan Ferreira 48


10
Postfix
Postfix

Configuración inicial de postfix


Asegúrese que en su servidor DNS, los registros MX para el dominio
suc<X>.linux.com.py están creados. Verifíquelo con el comando:
dig suc<X>.linux.com.py MX

; <<>> DiG 9.3.4-P1 <<>> suc<X>.linux.com.py MX


;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3248
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;suc<X>.linux.com.py. IN MX

;; ANSWER SECTION:
suc<X>.linux.com.py. 86400 IN MX 10 mail.suc<X>.linux.com.py.
suc<X>.linux.com.py. 86400 IN MX 20 mail2.suc<X>.linux.com.py.

;; AUTHORITY SECTION:
suc<X>.linux.com.py. 86400 IN NS dns2.suc<X>.linux.com.py.
suc<X>.linux.com.py. 86400 IN NS dns1.suc<X>.linux.com.py.

;; ADDITIONAL SECTION:
mail.suc<X>.linux.com.py. 86400 IN A 10.0.<X>.1
mail2.suc<X>.linux.com.py. 86400 IN A 10.0.<X>.4
dns1.suc<X>.linux.com.py. 86400 IN A 10.0.<X>.1
dns2.suc<X>.linux.com.py. 86400 IN A 10.0.<X>.2

;; Query time: 26 msec


;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 20 18:29:43 2008
;; MSG SIZE rcvd: 181

La instalación de CentOS por defecto establece a sendmail como MTA. Por tanto,
inicialmente debe asegurarse que los paquetes de postfix están instalados.
# rpm -qa | grep postfix
postfix-2.3.3-2

Además, debe asegurarse que postfix está establecido como MTA para el sistema, para
ello ejecute el siguiente comando:
# alternatives --config mta

Hay 2 programas que proporcionan 'mta'.

Ing. Ivan Ferreira 50


Postfix

Selección Comando
-----------------------------------------------
+ 1 /usr/sbin/sendmail.postfix
* 2 /usr/sbin/sendmail.sendmail

Presione Intro para mantener la selección actual[+], o escriba el número de la


selección: 1

Configure el inicio de los servicios, deshabilite el sendmail y habilite el postfix con los
siguientes comandos:
# service sendmail stop
# chkcofnig postfix on
# chkconfig postfix on

Verifique que el host mail.redhat.com.py responde al comando ping:


# ping mail.linux.com.py

El archivo de configuración principal de postfix es el archivo /etc/postfix/main.cf.


Edite este archivo y configure los siguientes parámetros:
myhostname = mail.suc<X>.linux.com.py
mydomain = suc<X>.linux.com.py
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
relayhost = mail.linux.com.py

Inicie el servicio postfix:


# service postfix start

Verifique el archivo de registro de postfix:


# tail -5 /var/log/maillog
Nov 20 18:14:22 pc246 sendmail[4428]: starting daemon (8.13.8):
SMTP+queueing@01:00:00
Nov 20 18:14:22 pc246 sm-msp-queue[4436]: starting daemon (8.13.8):
queueing@01:00:00
Nov 20 18:34:26 pc246 postfix/postfix-script: fatal: the Postfix mail system is not
running
Nov 20 18:34:27 pc246 postfix/postfix-script: starting the Postfix mail system
Nov 20 18:34:27 pc246 postfix/master[7018]: daemon started -- version 2.3.3,
configuration /etc/postfix

Verifique que el servicio postfix se está ejecutando con el comando:

51 Red Hat Certified Engineer


Postfix

# service postfix status


Se está ejecutando master (pid 7018)...

Verifique que el puerto 25 está en estado LISTEN con el comando:


# # netstat -an | grep ":25.* LISTEN"
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

Verifique que el puerto 25 está aceptando conexiones con el comando:


# telnet mail.suc<X>.linux.com.py 25
Trying 10.0.<X>.1...
Connected to mail.suc<X>.linux.com.py (10.0.<X>.1).
Escape character is '^]'.
220 mail.suc<X>linux.com .py ESMTP Postfix
QUIT
221 Bye
Connection closed by foreign host.

Investigue como realizar un envío de correo utilizando únicamente comandos SMTP por
medio de la conexión al puerto 25 a través del comando telnet.

Identifique en qué directorio se almacenan las casillas de correo consultando la opción


mail_spool_directory del archivo main.cf.

Creación de cuentas y verificación del funcionamiento

Cree una cuenta de usuario para probar el envío y recepción de correo.


# adduser hgomez
# passwd hgomez
Changing password for user hgomez.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Envie un mensaje de correo al usuario hgomez con el siguiente comando:


echo "Mail de prueba" | mailx -v -s "Prueba" hgomez@suc<X>.linux.com.py

Verifique que el mensaje haya sido entregado visualizando el log del servidor de correos:
# tail /var/log/maillog
Nov 21 11:45:23 gw postfix/qmgr[4387]: 6CA77B050D: from=<root@suc<X>.linux.com.py>,
size=334, nrcpt=1 (queue active)
Nov 21 11:45:23 gw postfix/local[6027]: 6CA77B050D: to=<hgomez@suc<X>.linux.com.py>,
relay=local, delay=0.17, delays=0.11/0.02/0/0.04, dsn=2.0.0, status=sent (delivered
to mailbox)

Ing. Ivan Ferreira 52


Postfix

Verifique el mensaje iniciando sesión con el usuario hgomez:


# su - hgomez
[hgomez@gw ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/hgomez": 1 message 1 new
>N 1 root@suc<X>.linux.com Fri Nov 21 11:48 14/501 "Prueba"
&
Message 1:
From root@suc<X>.linux.com.py Fri Nov 21 11:48:53 2008
X-Original-To: hgomez@suc<X>.linux.com.py
Delivered-To: hgomez@suc<X>.linux.com.py
To: hgomez@suc<X>.linux.com.py
Subject: Prueba
Date: Fri, 21 Nov 2008 11:48:53 -0300 (PYST)
From: root@suc<X>.linux.com.py (root)

Mail de prueba

& q
Saved 1 message in mbox

Envie un mensaje de correo a un usuario no existente:


# echo "Mail de prueba" | mailx -v -s "Prueba" fulano@suc<X>.linux.com.py

Verifique que el mensaje haya sido entregado visualizando el log del servidor de correos:
Nov 21 11:50:47 gw postfix/qmgr[4387]: 30F95B050D: from=<root@suc<X>.linux.com.py>,
size=334, nrcpt=1 (queue active)
Nov 21 11:50:47 gw postfix/local[6116]: 30F95B050D: to=<fulano@suc<X>.linux.com.py>,
relay=local, delay=0.3, delays=0.17/0.05/0/0.08, dsn=5.1.1, status=bounced (unknown
user: "fulano")

El mensaje no fue entregado debido a que el usuario no existe.

Aliases y listas de correo


Edite el archivo /etc/aliases y configure la cuenta soporte@suc<X>.linux.com.py
para que sea entregado al usuario root. Configure la entrega de correos del usuario root
al usuario hgomez. Configure un nombre alternativo para el usuario hgomez de tal
manera a aceptar ademas correos destinados a hugo.gomez@suc<X>.linux.com.py.
# vi /etc/aliases

# Person who should get root's mail


soporte: root

53 Red Hat Certified Engineer


Postfix

root: hgomez
hugo.gomez: hgomez

Ejecute el comando postalias para actualizar los cambios:


# postalias /etc/aliases

Envíe un mensaje de correo a hugo.gomez@suc<X>.linux.com.py:


# echo "Mail de prueba" | mailx -v -s "Prueba" fulano@suc<X>.linux.com.py

Verifique que el correo ha sido entregado:


# grep hugo.gomez /var/log/maillog
Nov 21 11:57:25 gw postfix/local[6145]: EB894B050D: to=<hgomez@suc<X>.linux.com.py>,
orig_to=<hugo.gomez@suc<X>.linux.com.py>, relay=local, delay=0.23,
delays=0.15/0.04/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)

Configure una lista de correo que contenga la lista de todos los usuarios de la sucursal y
nombre a esta lista todos@suc<X>.linux.com.py.
# awk -F ":" '$3 > 500 { print $1 }' /etc/passwd > /etc/postfix/todos.list
# vi /etc/aliases
todos: :include:/etc/postfix/todos.list
# postalias /etc/aliases

Envie un mensaje de correo a la lista:


echo "Mail de prueba" | mail -s "Prueba" todos@suc<X>.linux.com.py

Gestión de colas de correo


Verifique el estado actual de la cola de correo:
# postqueue -p
Mail queue is empty

Envie un correo a fulano@gmail.com:


echo "Mail de prueba" | mail -s "Prueba" fulano@gmail.com

Verifique nuevamente estado de la cola de correo:


# postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
4C4C3B0512 325 Fri Nov 21 12:24:57 root@suc<X>.linux.com.py
(Host or domain name not found. Name service error for name=gmail.com type=MX: Host
not found, try again)
fulano@gmail.com

Ing. Ivan Ferreira 54


Postfix

-- 0 Kbytes in 1 Request.

Visualice el contenido del mensaje:


# postcat -q 4C4C3B0512
*** ENVELOPE RECORDS deferred/4/4C4C3B0512 ***
message_size: 325 200 1 0
message_arrival_time: Fri Nov 21 12:24:57 2008
create_time: Fri Nov 21 12:24:57 2008
named_attribute: rewrite_context=local
sender_fullname: root
sender: root@suc<X>.linux.com.py
original_recipient: fulano@gmail.com
recipient: fulano@gmail.com
*** MESSAGE CONTENTS deferred/4/4C4C3B0512 ***
Received: by mail.suc<X>.linux.com.py (Postfix, from userid 0)
id 4C4C3B0512; Fri, 21 Nov 2008 12:24:57 -0300 (PYST)
To: fulano@gmail.com
Subject: Prueba
Message-Id: <20081121152457.4C4C3B0512@mail.suc<X>.linux.com.py>
Date: Fri, 21 Nov 2008 12:24:57 -0300 (PYST)
From: root@suc<X>.linux.com.py (root)

Mail de prueba
*** HEADER EXTRACTED deferred/4/4C4C3B0512 ***
*** MESSAGE FILE END deferred/4/4C4C3B0512 ***

Vuelva a intentar el envio de los mensaje encolados:


# postsuper -r ALL

Elimine el mensaje encolado:


# postsuper -d AC852B0517
postsuper: AC852B0517: removed
postsuper: Deleted: 1 message
[root@gw postfix]# postqueue -p
Mail queue is empty

Configuración de Dovecot
Una vez depositado el correo en el servidor, los usuarios deberán acceder o retirar esos
mensajes desde sus estaciones de trabajo. El servidor Dovecot permite el acceso a los
mensajes del buzón de correo por medio de POP o IMAP.

Verifique que el paquete dovecot se encuentra instalado:

55 Red Hat Certified Engineer


Postfix

# rpm -qa | grep dovecot


dovecot-1.0.7-2.el5

Edite el archivo de configuración /etc/dovecot.conf y habilite los protocolos a


través de los cuales desea permitir el acceso a las casillas de correo:
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
protocols = imap imaps pop3 pop3s

Inicie el servicio dovecot y configúrelo para su inicio automático:


# chkconfig dovecot on
# service dovecot start

Cuál es la diferencia entre POP3 y POP3s, asi como IMAP e IMAPs?

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

A partir de este punto, puede configurar los clientes de correo electrónico para utilizar el
servidor como “servidor de correo entrante”. En el siguiente gráfico, se observa la
configuración del cliente de correo evolution para conectarse al servidor
mail.suc<X>.linux.com.py vía POP3.

Configuración de un servidor POP en Evolution.

Ing. Ivan Ferreira 56


Postfix

Configuración de un servidor POP en Mozilla Thunderbird.

Configuración del servicio de webmail


Para permitir el acceso de los usuarios a sus mensajes de correo utilizando un
navegador web como cliente, debe tener instalado el paquete squirrelmail:
# rpm -qa | grep squirrel
squirrelmail-1.4.8-4.0.1.el5.centos.2

Edite el archivo /etc/squirrelmail/config.php como sigue:


$squirrelmail_default_language = 'en_US';

$domain = 'localhost';
$imapServerAddress = 'localhost';
$imapPort = 143;
$useSendmail = true;
$smtpServerAddress = 'localhost';
$smtpPort = 25;
$sendmail_path = '/usr/sbin/sendmail';
$pop_before_smtp = false;
$imap_server_type = 'uw';
$invert_time = false;
$optional_delimiter = '/';

El paquete de squirrelmail automáticamente agrega un archivo de configuración de


apache llamado /etc/httpd/conf.d/squirrelmail.conf. Esto permite el

57 Red Hat Certified Engineer


Postfix

acceso al servicio de webmail desde cualquier navegador ingresando en la barra del


navegador http://www.suc<X>.linux.com.py/webmail. Por seguridad, no podrá ingresar
con la cuenta root.

Forzar el uso de SSL para webmail

Toda la comunicación entre el cliente web y el servidor no está encriptada si se utiliza el


protocolo HTTP. Esto implica que es fácil obtener información sensible, como usuarios,
contraseñas o números de tarjetas de crédito por medio de la captura del tráfico de red.

Para evitar que el usuario y la contraseña sean capturados, es necesario forzar el uso del
modo SSL para el webmail.

Con el editor de texto vi, cree el archivo /etc/httpd/conf.d/mod-


rewrite.conf.

En este ejemplo, cualquier solicitud hecha a la carpeta “webmail” se forzará el uso

de SSL, y los usuarios pueden introducir sus detalles de forma confidencial. La

opción rewrite log puede ser usada para propósitos de solución de problemas.
# vi /etc/httpd/conf.d/mod-rewrite.conf
# Rewrite Rules.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/webmail/(.*) https://%{SERVER_NAME}/webmail/$1 [R,L]
#Debug Rewrite Rules

Ing. Ivan Ferreira 58


Postfix

#RewriteLog /var/log/httpd/rewrite_engine_log
#RewriteLogLevel 3

Los certificados digitales no pueden trabajar con hosts virtuales, por tanto, debera
deshabilitar la configuración de Virtual Hosts realizadas en el laboratorio de Apache.
Para mas información, consulte http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts.
# cd /etc/httpd/conf.d
# mv virtualhosts.conf disable.virtualhosts

Recargue la configuración del servidor apache:


# service httpd reload

A partir de ese momento, las conexiones deben ser automáticamente derivadas a la


dirección HTTPs.

59 Red Hat Certified Engineer


11
SSHD
SSHD

Administración del servicio SSHD


El servicio SSHD permite realizar administración remota de servidores y transferencias
de archivos de manera segura. SSH es un reemplazo para los programas inseguros:
Telnet, rsh, rcp, rlogin, ftp.

El cliente ssh
Para iniciar una sesión remota a una máquina llamada mercurio.linux.com.py, escriba el
comando siguiente en el intérprete de comandos del shell:
$ ssh mercurio.linux.com.py

La primera vez que ejecute ssh a una máquina remota, verá un mensaje similar al
siguiente:
The authenticity of host 'mercurio.linux.com.py' can't be established.
DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)?

Escriba yes para continuar. Esto le permitirá agregar el servidor en su lista de host
conocidos como se muestra en el siguiente mensaje:
Warning: Permanently added 'mercurio.linux.com.py' (RSA) to the list of known hosts.

Luego, verá un indicador de comandos preguntándole por su contraseña. Después de


ingresar su contraseña, se encontrará en el indicador de comandos de la máquina
remota. Si no especifica un nombre de usuario, el nombre de usuario con el que se ha
validado como la máquina local se validará en la máquina remota. Si quiere especificar
un nombre de usuario use el comando siguiente:
$ ssh username@mercurio.linux.com.py
$ ssh -l nombre_usuario mercurio.linux.com.py

El comando ssh se puede utilizar para ejecutar un comando en una máquina remota sin
acceder al indicador de comandos. La sintaxis es:
ssh usuario@host comando

Por ejemplo, si quiere ejecutar el comando ls /usr/share/doc en la máquina


remota mercurio.linux.com.py, escriba el comando siguiente en la línea de comandos del
shell:
$ ssh mercurio.linux.com.py ls /usr/share/doc

Una vez que introduzca la contraseña correcta, visualizará el contenido del directorio
/usr/share/doc, y regresará al shell de su equipo local.

61 Red Hat Certified Engineer


SSHD

Usando el comando scp


El comando scp puede ser usado para transferir archivos entre máquinas sobre una
conexión encriptada y segura. Es parecido al comando rcp.

La sintaxis general para transferir el archivo local a un sistema remoto es como sigue a
continuación:
$ scp archivo_local usuario@host:/ruta/

Siendo archivo_local el archivo origen local, y usuario@host:/ruta/


especifica el destino.

Para transferir un archivo local shadowman a su home en mercurio.linux.com.py, escriba


en la línea de comandos (reemplace username con su nombre de usuario):
$ scp shadowman mercurio.linux.com.py:/home/jperez/docs

Esto transferirá el archivo local shadowman a /home/jperez/docs/shadowman en


mercurio.linux.com.py.

Para transferir un archivo remoto a un directorio local la sintaxis sería:


$ scp mercurio.linux.com.py:/home/jperez/docs/* ./

Este comando transferirá todos los archivos del directorio /home/jperez/docs de


mercurio al directorio actual en el equipo local.

La sintaxis general para transferir un archivo remoto al sistema local es como sigue:
$ scp [usuario@hostremoto|archivo_local] [usuario@host_remoto|archivo_local]

Uso del comando sftp


La utilidad sftp puede ser usada para abrir una sesión segura interactiva de FTP. Es
similar a ftp excepto que ésta utiliza una conexión encriptada segura. La sintaxis general
es:
sftp usuario@host

Una vez autentificado, podrá utilizar un conjunto de comandos similar al conjunto


utilizado por el comando FTP.

Generar pares de claves


Para evitar el envío de contraseñas a través de la red debemos utilizar el sistema de
claves publicas. La clave pública del usuario se registra de antemano en el servidor y la

Ing. Ivan Ferreira 62


SSHD

clave privada se guarda en el cliente. Con este sistema de autentificación, ningún


secreto viaja a través de la red ni es enviado al servidor.

Generación de un par de claves DSA para la versión 2

Para generar un par de claves DSA para trabajar con la versión 2 del protocolo, escriba
el siguiente comando en el intérprete de comandos de la shell:
$ ssh-keygen -t dsa

Acepte la localización por defecto del archivo ~/.ssh/id_dsa. Introduzca una palabra
de paso diferente a la contraseña de su cuenta y confirme ésta introduciéndola de nuevo.

Sugerencia: Una palabra de paso es una cadena de caracteres o palabras utilizadas


para autentificar a un usuario. Las palabras de paso se diferencian de las contraseñas
en que se pueden utilizar espacios o tabuladores en la palabra de paso. Las palabras de
paso son generalmente más largas que las contraseñas porque ellas son habitualmente
frases.

La clave pública es escrita a ~/.ssh/id_dsa.pub. La clave privada es escrita a


~/.ssh/id_dsa. Es de suma importancia que no de la clave privada a nadie.

Asegúrese que ningún otro usuario tiene permiso de escritura sobre los archivos.
Cambie los permisos de su directorio .ssh usando el comando:
$ chmod -R go-rwx ~/.ssh.

Copie el contenido del archivo local ~/.ssh/id_dsa.pub al archivo


~/.ssh/authorized_keys de la máquina a la cual quiere conectarse.

Una vez actualizado el archivo autorized_keys al conectarse nuevamente al host


remoto no se solicitará la contraseña, sino la palabra de paso requerida para activar la
clave privada.

Configuración del servicio SSHD


El servicio SSHD es configurado a través del archivo /etc/sshd/sshd_config.
Configure el archivo sshd_config para cumplir con los siguientes objetivos:

● Debe habilitarse únicamente la versión 2 del protocolo SSH.

● El acceso del usuario root debe ser deshabilitado.

● La cantidad máxima de veces que un usuario puede introducir la contraseña de


manera incorrecta debe ser 3.

63 Red Hat Certified Engineer


SSHD

● Debe permitirse el acceso vía SSH únicamente a los usuarios miembros del
grupo sshusers.

● El servicio SFTP debe estar habilitado.

Para cumplir con los objetivos mencionados, el archivo debe sshd_config ser
configurado con los siguientes valores:
Protocol 2
PermitRootLogin no
MaxAuthTries 3
AllowGroups sshusers
Subsystem sftp /usr/libexec/openssh/sftp-server

Para incrementar la seguridad del sistema, usted desea permitir únicamente la


autenticación por medio de claves públicas, que parámetro deberá configurar para lograr
esto?

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

Cuál es la diferencia entre el archivo /etc/ssh/ssh_config y


/etc/ssh/sshd_config?

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

Ing. Ivan Ferreira 64

También podría gustarte