centos 03 servicios

44
GNU/Linux Servicios en GNU/Linux Esteban De La Fuente Rubio

Upload: elain-alexander-v

Post on 27-Dec-2015

59 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: CentOS 03 Servicios

GNU/Linux

Servicios en GNU/Linux

Esteban De La Fuente Rubio

Page 2: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Índice de contenido 1  Introducción............................................................................................................................4

 1.1 Objetivos...........................................................................................................................4 2  DHCP.....................................................................................................................................5

 2.1 Configuración básica........................................................................................................6 2.2 DHCP estático.................................................................................................................7 2.3 BOOTP.............................................................................................................................7

 2.3.1 CentOS.....................................................................................................................8 2.3.2 FreeDOS...................................................................................................................8 2.3.3 Utilidades..................................................................................................................9 2.3.4 Menú.........................................................................................................................9

 2.4 Ejercicios........................................................................................................................11 3  DNS......................................................................................................................................12

 3.1 Instalación......................................................................................................................13 3.2 Configuración.................................................................................................................13

 3.2.1 Servidor maestro.....................................................................................................13 3.2.2 Servidor esclavo.....................................................................................................17 3.2.3 Configuración de zonas en servidor maestro.........................................................17

 3.3 Ejercicios........................................................................................................................19 4  Web......................................................................................................................................20

 4.1 Instalación......................................................................................................................20 4.2 Configuración general....................................................................................................21 4.3 Módulos..........................................................................................................................21 4.4 Dominios virtuales.........................................................................................................21 4.5 PHP................................................................................................................................22 4.6 SSL................................................................................................................................23

 4.6.1 Crear los certificados..............................................................................................23 4.6.2 Firmar el certificado................................................................................................23 4.6.3 Agregar certificados................................................................................................24 4.6.4 Múltiples dominios utilizando SSL..........................................................................24

 4.7 suPHP............................................................................................................................24 4.8 Ejercicios........................................................................................................................25

 5  PAM......................................................................................................................................26 5.1 Instalación......................................................................................................................26 5.2 Base de datos MySQL...................................................................................................27

 5.2.1 Instalación...............................................................................................................27 5.2.2 Creación de base de datos.....................................................................................27

 5.3 Configuración.................................................................................................................28 5.4 Ejercicios........................................................................................................................28

2013­01­11 Esteban De La Fuente Rubio 2/44

Page 3: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 6  FTP.......................................................................................................................................29 6.1 Instalación......................................................................................................................29 6.2 Configuración.................................................................................................................29

 6.2.1 PAM.........................................................................................................................29 6.2.2 SELinux..................................................................................................................29

 6.3 Ejercicios........................................................................................................................29 7  SAMBA.................................................................................................................................30

 7.1 Instalación.......................................................................................................................30 7.2 Configuración.................................................................................................................31

 7.2.1 PAM.........................................................................................................................32 7.2.2 SELinux...................................................................................................................33 7.2.3 Auditoría..................................................................................................................33

 7.3 Pruebas..........................................................................................................................34 7.4 Ejercicios........................................................................................................................34

 8  Recursos..............................................................................................................................35

2013­01­11 Esteban De La Fuente Rubio 3/44

Page 4: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 1  IntroducciónEl   curso   de   servicios   esta   diseñado   para   entregar   una   guía   en   la   instalación   y 

configuración de diversos servicios necesarios en la mayoría de las empresas, enfocándose, básicamente, en las áreas:

• Servicios web

• Intercambio de archivos

Los temas anteriores corresponden a servicios estándares que pueden ser necesarios en la mayoría de las empresas donde el administrador se encuentre trabajando.

Se recomienda al lector leer antes el curso de “Introducción a GNU/Linux” ya que en el se ven conceptos básicos que debe tener presente todo administrador del sistema operativo GNU/Linux.  Adicionalmente para aspectos relacionados con administración de usuarios y redes se recomienda leer el curso “Administración de GNU/Linux”.

Durante el desarrollo del curso se utilizará la distribución GNU/Linux CentOS (en su versión 6.2).  Esta  distribución es compilada por  una comunidad de usuarios a partir  del código que la empresa Red Hat Linux libera de su distribución Red Hat Linux Enterprise. Se utilizará   esta   distribución   ya   que   es   básicamente   una   versión   de   Red   Hat   sin   los componentes comerciales de dicha compañía, compatible completamente con esta y con los productos que otras empresas ofrecen para dicha distribución.

El hardware a utilizar puede ser real o virtual, al igual que en los anteriores cursos. No existen requisitos específicos en cuanto a disco duro, ni esquema de distribución del mismo o cantidad de interfaces de red. Sin embargo de considerarse necesario se indicarán consejos para mejorar el funcionamiento del sistema en cada tema que se discuta. Adicionalmente se  fija IPv4 para ser utilizado en las configuraciones de los servicios.

 1.1  Objetivos

• Realizar la instalación de diferentes servicios sobre plataforma GNU/Linux.

2013­01­11 Esteban De La Fuente Rubio 4/44

Page 5: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 2  DHCPEl protocolo DHCP (Dynamic Host Configuration Protocol) permite a los clientes de 

una   red   obtener   sus   parámetros   de   configuración  de   manera   automática.   Un   cliente   al conectarse   a   la   red   enviará   solicitudes   consultando   por   un   servidor   DHCP   que   pueda entregar las datos para que este pueda conectarse a la red. Los parámetros básicos que son entregados por el servidor DHCP son la IP y máscara de red de la misma, sin embargo otros parámetros pueden ser entregados como rutas por defectos, servidores DNS o servidores NTP, por ejemplo. Se utilizará la implementación ISC DHCP para proveer del servicio a la red en CentOS.

El esquema de conexión que se propone en la Topología 1 para el ejercicio considera la instalación del servicio DHCP en la máquina que cumple la función de proxy y firewall hacia Internet,  sin  embargo es   importante  considerar  que el  servicio  puede estar   instalado en cualquier máquina de la red, no necesariamente en esta. Sin embargo existen servicios en las empresas que se instalan en las mismas máquina para evitar tener una máquina por cada servicio que se esta implementando. Adicionalmente solo se esta mostrando la configuración para una interfaz de red, pero se debe considerar que la configuración de “n” interfaces será muy similar a la presentada.

Topología 1: Ejercicio DHCP

Se asume eth0 ya configurado (ya sea por DHCP o bien IP estática, a continuación se indican la configuración para la interfaz eth1 y el acceso hacia la red de Internet desde la LAN.

Configurar interfaz eth1

# ip addr add 10.0.0.1/24 brd + dev eth1

Habilitar forward de paquetes

2013­01­11 Esteban De La Fuente Rubio 5/44

Page 6: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

echo 1 > /proc/sys/net/ipv4/ip_forward

Instalación del servicio

# yum install dhcp

2013­01­11 Esteban De La Fuente Rubio 6/44

Page 7: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 2.1  Configuración básicaConfiguración del servicio (ejemplo del archivo en /usr/share/doc/dhcp*/dhcpd.conf.sample)

# /etc/dhcp/dhcpd.conf

# configuración común a todas las redes

log-facility local0; # logs

default-lease-time 600; # asignación en segundos

max-lease-time 7200; # máxima asignación en segundos

authoritative; # este servidor es el principal servidor dhcp

option domain-name "sasco.cl"; # nombre de dominio

option domain-name-servers 208.67.220.220, 208.67.222.222; # dns

#ntp-servers ntp.shoa.cl; # ntp

# configuración de la red 10.0.0.0/24

subnet 10.0.0.0 netmask 255.255.255.0 {

range 10.0.0.100 10.0.0.254;

option routers 10.0.0.1;

}

Iniciar servicio

# service dhcpd start

Agregar el servicio para que sea ejecutado al inicio del sistema

# chkconfig dhcpd on

Conectar un cliente (ejemplo bart) y verificar asignación de ip

# ip addr show eth0

Verificar rutas

# ip route show

Verificar servidores DNS

# cat /etc/resolv.conf

Ping hacia la puerta de enlace

# ping 10.0.0.1

Ping hacia e servidor DNS de OpenDNS

# ping 208.67.222.222

2013­01­11 Esteban De La Fuente Rubio 7/44

Page 8: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 2.2  DHCP estático# configuración dhcp estático

host bart {

hardware ethernet 0:0:c0:5d:bd:95;

fixed-address 10.0.0.2;

}

 2.3  BOOTPBOOTP (Bootstrap protocol) es un protocolo de red UDP que permite a computadores 

que están iniciando arrancar desde la red. Esto permite, por ejemplo, arrancar terminales para conectarse a un mainframe o bien para procesos de instalación del sistema operativo por red. El servidor ISC DHCP permite mediante DHCP el uso de BOOTP, entregando a los equipos la posibilidad de arrancar por red. Para utilizar esta funcionalidad se requiere aparte del servidor DHCP un servidor TFTP que contendrá los ficheros para arrancar la máquina, y claro se necesitan dichos ficheros (kernel, configuraciones, etc).

# archivo para bootear en red (ubicado en /var/lib/tftpboot)

next-server 10.0.0.1;

filename "pxelinux.0";

Ya que lo anterior es ubicado en el área global permitirá  bootear a cualquier equipo que se conecte al servidor DHCP utilizando el menú de syslinux. No olvidar que esta configuración (al igual que otras de la sección global) puede ser especificada por red o incluso por host (hasta usando IP estática). Además recordar cambiar la IP por la que tenga el servidor TFTP.

Instalación servidor TFTP

# yum install tftp-server

El servidor TFTP instalará  (de no existir) el servicio xinetd el cual es utilizado para arrancar el servicio TFTP, por lo cual ambos deben ser activados al inicio del sistema para la  correcta ejecución del servidor TFTP. Además se debe abrir el puerto UDP 69.

# chkconfig xinetd on

# chkconfig tftp on

Reiniciar servicio xinetd

# service xinetd restart

Instalación de syslinux (esto incluye lo necesario para utilizar PXE)

# yum install syslinux

2013­01­11 Esteban De La Fuente Rubio 8/44

Page 9: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

El directorio para los archivos del servidor TFTP es /var/lib/tftpboot y en el se deben copiar los siguientes archivos para poder arrancar con PXE:

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/

# cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/

# cp /usr/share/syslinux/memdisk /var/lib/tftpboot/

# cp /usr/share/syslinux/mboot.c32 /var/lib/tftpboot/

# cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/

# cp /usr/share/syslinux/pxechain.com /var/lib/tftpboot/

 2.3.1  CentOSCrear   directorio   para   imágenes   CentOS   y   copiarlas   (respetar   el   formato: distribución/versión/arquitectura)

# mkdir -p /var/lib/tftpboot/images/centos/6.2/i386

# cd /var/lib/tftpboot/images/centos/6.2/i386

# wget http://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.2/os/i386/\

images/pxeboot/initrd.img

# wget http://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.2/os/i386/\

images/pxeboot/vmlinuz

# mkdir -p /var/lib/tftpboot/images/centos/6.2/x86_64

# cd /var/lib/tftpboot/images/centos/6.2/x86_64

# wget http://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.2/os/x86_64/\

images/pxeboot/initrd.img

# wget http://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.2/os/i386/\

images/pxeboot/vmlinuz

 2.3.2  FreeDOSCrear directorio para imágenes FreeDOS y copiarlas

# mkdir -p /var/lib/tftpboot/images/dos

# cd /var/lib/tftpboot/images/dos

# wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/\

distributions/1.0/fdboot.img

2013­01­11 Esteban De La Fuente Rubio 9/44

Page 10: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 2.3.3  UtilidadesCrear directorio para utilidades y agregarlas

# mkdir /var/lib/tftpboot/images/utils

# cd /var/lib/tftpboot/images/utils

memtest86+

# wget http://ftp.inf.utfsm.cl/pub/Linux/centos/6.2/os/x86_64/\

isolinux/memtest

 2.3.4  MenúSe mostrará  a  continuación como crear   las opciones de menú  para  las  imágenes 

antes explicadas, si alguna no se utilizará no es necesario declararla en el menú.

Crear directorio para los menús PXE

# mkdir /var/lib/tftpboot/pxelinux.cfg

Por defecto se buscará el archivo default dentro del directorio anterior (en realidad es la última opción buscada, ver recursos “PXE detallado”), este archivo contendrá las opciones para la ejecución al cargar por red, lo cual puede ser directamente cargar una imagen o, lo que se hace en este ejemplo, desplegar un menú con diversas opciones.

El uso de un menú permitirá generar todas las opciones que sean necesarias para poder arrancar los equipos de la red. Las opciones a utilizar en el menú son bastantes, las cuales permiten personalizar bastante el menú para PXE, se recomienda ver en los recursos el enlace a menu.c32

Descargar imagen para el fondo del menú (debe ser JPG o PNG de 640x480px)

# wget http://i76.photobucket.com/albums/j37/Moeppe/\

pxe_bootscreen01.png -O /var/lib/tftpboot/splash.jpg

Crear archivo con el mensaje de ayuda

# /var/lib/tftpboot/help.msg

== AYUDA ==

Elija una opcion del menu para arrancar el sistema

2013­01­11 Esteban De La Fuente Rubio 10/44

Page 11: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Crear el menú, en la Imagen 1 verá el resultado de esta configuración

# /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT vesamenu.c32

PROMPT 0

TIMEOUT 300

ONTIMEOUT local

MENU TITLE PXE boot menu

MENU BACKGROUND splash.jpg

F1 help.msg

LABEL linux

MENU LABEL GNU/Linux:

MENU DISABLE

LABEL centos_i386

MENU LABEL CentOS 6.2 i386

MENU INDENT 1

KERNEL images/centos/6.2/i386/vmlinuz

APPEND initrd=images/centos/6.2/i386/initrd.img ip=dhcp

LABEL centos_amd64

MENU LABEL CentOS 6.2 x86_64

MENU DEFAULT

MENU INDENT 1

KERNEL images/centos/6.2/x86_64/vmlinuz

APPEND initrd=images/centos/6.2/x86_64/initrd.img ip=dhcp

MENU SEPARATOR

LABEL utils

MENU LABEL Utilidades:

MENU DISABLE

LABEL memtest

MENU LABEL ^Memtest86+ 4.10

MENU INDENT 1

KERNEL images/utils/memtest

2013­01­11 Esteban De La Fuente Rubio 11/44

Page 12: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

MENU SEPARATOR

LABEL dos

MENU LABEL DOS:

MENU DISABLE

LABEL freedos

MENU LABEL ^FreeDOS 1.0

MENU INDENT 1

KERNEL memdisk

APPEND initrd=images/dos/fdboot.img

Imagen 1: Menú de arranque con las opciones definidas

 2.4  Ejercicios1. ¿Por   qué   el   servicio   DHCP   falla   si   es   iniciado   inmediatamente   después   de   la 

instalación?

2. ¿Por qué se puede realizar ping a la puerta de enlace pero no a la IP de OpenDNS?

3. ¿Cuales son las ventajas de utilizar PXE para arrancar por red?

4. La configuración para arrancar el instalador de CentOS está incompleta, corregirla.

5. ¿Cómo arrancar una imagen ISO de GNU/Linux mediante PXE?

6. Utilizar TCOS para arrancar un sistema operativo para terminales tontas.

2013­01­11 Esteban De La Fuente Rubio 12/44

Page 13: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 3  DNSEl   servicio   de   DNS   (Domain   Name   Server)   permite   realizar   la   traducción   de 

direcciones en lenguaje humano (nombre de host y nombre de dominio) a direcciones IP. Existen diferentes conceptos relacionados con DNS que se explicarán a  lo  largo de este capítulo como resolución normal resolución inversa, zonas y vistas. La implementación de DNS que se utilizará para trabajar corresponde a la patrocinada por la ISC denominada Bind (Berkeley Internet Name Domain) el cual es la versión más utilizada en sistemas operativos like Unix1.

La Imagen 2 es una situación hipotética que involucra los conceptos que se deben manejar para poder comprender la configuración del servicio de DNS utilizando BIND.

Imagen 2: Conceptos relacionados con DNS

Una configuración sencilla del servicio de DNS solo requerirá de un servidor maestro sin vistas y al menos una zona definida para cada tipo de resolución (normal e inversa). A pesar del o anterior se recomienda siempre utilizar vistas, ya que de hacerlo y requerir en el futuro cambios que las consideren el trabajo a realizar será menor y habrá menos riesgos de dañar la configuración ya funcional.

Considerando un esquema similar al presentado en la Topología 1 del ejercicio de DHCP (página 5), se realizará el siguiente ejercicio: Se creará un servidor de DNS con dos vistas, una para la red 10.0.0.0/24 y otra para la red externa, el servicio deberá estar

1La aplicación se encuentra disponible para múltiples sistemas operativos, incluyendo Microsoft Windows, por lo cual las explicaciones realizadas serán aplicables en dicha plataforma.

2013­01­11 Esteban De La Fuente Rubio 13/44

Page 14: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

espejado en un DNS esclavo y los servidores para consultas serán lo de OpenDNS. No se considerará delegación de zonas de un DNS a otro, se asume que todas las zonas son manejadas por un mismo servidor DNS. Las zonas a configurar se pueden apreciar en la Tabla 1.

Vista A (red interna) Vista B (red externa)

0.0.10.in­addr.arpasasco.clfacebook.com

1.16.172.in­addr.arpa (asumiendo esta como red externa)sasco.cl

Tabla 1: Zonas ejercicio DNS

Cada zona normal definida deberá contener al menos dos subdominios (diferentes a www)  y  se  deberá   determinar  que  direcciones  se   resolverán  en  el   caso  de  cada  zona. Además en el caso de la red  local se deberá  determinar que nombres de  host  y dominio utilizar en la resolución inversa.

 3.1  InstalaciónExisten dos paquetes de BIND en CentOS, bind y  bind­chroot, el segundo es la misma 

implementación que la primera, pero enjaulada. Esto provee un nivel extra de seguridad, sin embargo   aquí   se   utilizará   la   versión   no   enjaulada   para   permitir   que   los   archivos   de configuración  de   zonas  puedan  existir   en   los  directorios  de   los  usuarios,   no  donde  por defecto debieran ser almacenados. Notar que ambos paquetes corresponden a la versión 9 del servicio.

# yum install bind bind-utils

Iniciar servicio

# service named start

Activar al inicio

# chkconfig named on

 3.2  ConfiguraciónEl   archivo   principal   de   configuración   del   servicio   de   DNS   se   encuentra   en 

/etc/named.conf, el cual por defecto viene configurado para funcionar como un servidor de caché local solamente. A continuación se presenta la estructura de directorio a utilizar y las configuraciones necesarias para el ejercicio propuesto.

 3.2.1  Servidor maestroEl servidor maestro será aquel que poseerá la configuración de las zonas del servidor, 

2013­01­11 Esteban De La Fuente Rubio 14/44

Page 15: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

a él se conectará el esclavo para conseguir las actualizaciones. La estructura de directorios a utilizar será:

/var/named/zones/master/<vista>/<zona>

Así se tendrá por ejemplo

/etc/named/zones/master/internal/sasco.cl

Notar que no se utilizará el la estructura de directorios definida por defecto, sino que se usará una propia.

Respaldar archivo de configuración principal por defecto

# cp /etc/named.conf /etc/named.conf.bak

Archivo de configuración principal

# /etc/named.conf

// Clientes de la red local

acl clients {

127.0.0.1;

::1;

10.0.0.0/24;

};

// opciones generales del servicio

options {

listen-on { any; };

listen-on-v6 { any; };

allow-query { any; };

recursion yes;

allow-recursion { clients; };

forwarders { 208.67.222.222; 208.67.220.220; };

// directorios y archivos

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";

2013­01­11 Esteban De La Fuente Rubio 15/44

Page 16: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

// opciones de la configuración por defecto

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto;

bindkeys-file "/etc/named.iscdlv.key";

};

// configuración de logging por defecto

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

// vista para la red interna

view "internal" {

match-clients { clients; };

// Zonas estándares

zone "." IN {

type hint;

file "named.ca";

};

include "/etc/named.rfc1912.zones";

// Zonas del ejercicio

zone "0.0.10.in-addr.arpa" {

type master;

file "zones/master/internal/0.0.10";

notify yes;

also-notify { 10.0.0.2; };

allow-transfer { 10.0.0.2; };

};

zone "sasco.cl" {

2013­01­11 Esteban De La Fuente Rubio 16/44

Page 17: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

type master;

file "zones/master/internal/sasco.cl";

notify yes;

also-notify { 10.0.0.2; };

allow-transfer { 10.0.0.2; };

};

zone "facebook.com" {

type master;

file "master/internal/facebook.com";

notify yes;

also-notify { 10.0.0.2; };

allow-transfer { 10.0.0.2; };

};

};

// vista para la red externa

view "external" {

match-clients { any; };

// Zonas del ejercicio

zone "1.16.172.in-addr.arpa" {

type master;

file "zones/master/internal/1.16.172";

notify yes;

also-notify { 10.0.0.2; };

allow-transfer { 10.0.0.2; };

};

zone "sasco.cl" {

type master;

file "master/external/sasco.cl";

notify yes;

also-notify { 10.0.0.2; };

allow-transfer { 10.0.0.2; };

2013­01­11 Esteban De La Fuente Rubio 17/44

Page 18: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

};

};

Notar que cada una de las zonas, de ambas vistas, permite ser transferida al servidor  10.0.0.2 el cual actuará como servidor esclavo de este.

2013­01­11 Esteban De La Fuente Rubio 18/44

Page 19: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 3.2.2  Servidor esclavoLa configuración del archivo named.conf para el servidor esclavo es casi idéntica al del 

servidor   maestro,   con   la   excepción   de   las   zonas,   lo   cual   se   detalla   más   adelante.   La estructura de directorios a utilizar será:

/var/named/zones/slave/<vista>/<zona>

Así se tendrá por ejemplo

/etc/named/zones/slave/internal/sasco.cl

En el caso de las configuraciones de las zonas estas variaran para poder solicitar al  servidor   maestro   las   actualizaciones,   se   muestra   a   continuación   el   ejemplo   de   las modificaciones para la zona sasco.cl, otras zonas deberán ser similares.

zone "sasco.cl" {

type slave;

file "zones/slave/internal/sasco.cl";

masters { 10.0.0.1; };

};

Para probar el servidor esclavo se deberá cambiar a la red externa. En un ambiente real el  servidor esclavo deberá  poder ser accedido desde  la  red externa utilizando algún mecanismo, como NAT.

 3.2.3  Configuración de zonas en servidor maestro

   Zonas internas

Zona 0.0.10.in­addr.arpa

; /var/named/zones/master/internal/0.0.10

$TTL 3600

@ IN SOA sasco.cl. root ( ; Autoridad para la zona

2011111301 ; Serial

3H ; Cada cuanto consultará

1H ; Cada cuanto reintentará

1W ; Cuando dejara de preguntar

1D ) ; Tiempo mínimo en el cache

@ IN NS sasco.cl.

2013­01­11 Esteban De La Fuente Rubio 19/44

Page 20: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

1 IN PTR ns1.sasco.cl.

Zona sasco.cl

; /var/named/zones/master/internal/sasco.cl

$TTL 3600

$ORIGIN sasco.cl.

@ IN SOA sasco.cl. root (

2011111401

3H

1H

1W

1D )

IN NS sasco.cl.

IN A 10.0.0.1

IN MX 1 aspmx.l.google.com.

IN MX 2 alt1.aspmx.l.google.com.

IN MX 2 alt2.aspmx.l.google.com.

IN MX 3 aspmx2.googlemail.com.

IN MX 3 aspmx3.googlemail.com.

IN MX 3 aspmx4.googlemail.com.

IN MX 3 aspmx5.googlemail.com.

* IN CNAME sasco.cl.

mail IN CNAME ghs.google.com.

docs IN CNAME ghs.google.com.

calendar IN CNAME ghs.google.com.

; subdominios

$ORIGIN clientes.sasco.cl.

@ IN CNAME sasco.cl.

* IN CNAME sasco.cl.

$ORIGIN dev.sasco.cl.

@ IN CNAME sasco.cl.

2013­01­11 Esteban De La Fuente Rubio 20/44

Page 21: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

* IN CNAME sasco.cl.

Zona facebook.com

; /var/named/zones/master/internal/facebook.com

$TTL 3600

$ORIGIN facebook.com.

@ IN SOA facebook.com. root (

2011111401

3H

1H

1W

1D )

IN NS facebook.com.

IN A 10.0.0.1

* IN CNAME facebook.com.

 3.3  Ejercicios1. ¿Qué puerto utiliza DNS? ¿TCP o UDP?

2. ¿Qué relación existe entre resolución normal e inversa?

3. Si tengo 3 zonas normales en una vista, ¿cuántas zonas inversas se requieren?

4. ¿Cuál es la relación entre una zona “type: master” y una zona “type: slave”?

5. ¿Cuáles son las diferencias al declarar la zona si se esta utilizando un subdominio?

6. ¿Por qué el detalle de las zonas se configura solo en el servidor maestro?

7. ¿Por qué el no publicar una zona o servicio no representa una medida de seguridad?

8. ¿Por qué en la zona inversa interna se utiliza sasco.cl como dominio para resolver las direcciones IP? ¿Se podría utilizar otro dominio? ¿cuál?

9. ¿Cuál es la importancia del serial y su formato?

10. ¿Qué registro se utiliza para indicar una traducción a IPv4?

11. ¿Cuál es la ventaja de utilizar CNAME?

12. ¿Qué significa el usar ORIGIN?

13. ¿Cuál es la diferencia entre que el dominio termine en punto y que no lo haga?

2013­01­11 Esteban De La Fuente Rubio 21/44

Page 22: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

14. ¿Cómo se configuran las zonas externas?

2013­01­11 Esteban De La Fuente Rubio 22/44

Page 23: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 4  WebUn   servidor   web   entrega   la   posibilidad   de   hospedar   páginas   web   en   el   servidor 

GNU/Linux. Para esta sección se utilizará  el  servidor Apache, el  cual es el  servidor más utilizado en sistemas operativos  like  Unix2. Las configuraciones expuestas en esta sección incluirán dominios virtuales y seguridad mediante SSL.

 4.1  InstalaciónSe instalara la versión 2 de Apache, adicionalmente se instalará PHP como módulo 

del   servidor   web   para   ser   utilizado   como   lenguaje   de   programación   de   páginas   web dinámicas en el servidor.

# yum install httpd php

Iniciar servicio

# service httpd start

Activar al inicio

# service httpd on

Una vez realizada la instalación se puede ingresar a la página por defecto del servidor web mediante la IP  de este. La página por defecto se puede apreciar en la Imagen 3, para cambiar   su   contenido   se   debe   crear,   al   menos,   un   archivo   index.html   en   el   directorio /var/www/html

2La aplicación se encuentra disponible para múltiples sistemas operativos, incluyendo Microsoft Windows, por lo cual las explicaciones realizadas serán aplicables en dicha plataforma.

2013­01­11 Esteban De La Fuente Rubio 23/44

Page 24: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Imagen 3: Página por defecto de Apache

Si   lo   que   desea   revisar   la   configuración   de   PHP   crear   el   archivo /var/www/html/phpinfo.php y abrirlo.

<?php phpinfo(); ?>

 4.2  Configuración generalEl  archivo de configuración corresponde al  ubicado en  /etc/httpd/conf/httpd.conf,  el 

cual por defecto viene preparado funcionar out of the box, un cambio a realizar en dicho archivo es definir el nombre del servidor, para evitar una advertencia al iniciar el servicio, esto se logra agregando lo siguiente al archivo (donde corresponda).

ServerName localhost:80

Adicionalmente  mencionar  que  archivos  ubicados  en   conf.d/*.conf   se  cargarán  de forma automática.

 4.3  MódulosEl servidor web Apache posee un conjunto de características en su sistema central, y 

además posee la posibilidad de ampliarse mediante la utilización de módulos. En CentOS los módulos disponibles se encuentran en el directorio /etc/httpd/modules

Activar módulo rewrite (por defecto viene activado)

# /etc/httpd/conf/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

Notar   la   sintaxis   corresponde  al   nombre  del  módulo  extraído  del   archivo  ubicado  en  el 

2013­01­11 Esteban De La Fuente Rubio 24/44

Page 25: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

directorio modules/ más “_module”, si queremos desactivarlo basta comentar o eliminar la línea.

 4.4  Dominios virtualesSi queremos hospedar más de un dominio en el servidor deberemos recurrir al uso de 

dominios   virtuales,   estos   permitirán   en   un   mismo   servidor   almacenar   cuantos   dominios queramos.   Personalmente   se   recomienda   utilizarlos   siempre,   aunque   solo   se   aloje   un dominio, ya que cuando eventualmente se requiera uno nuevo los cambios a realizar serán mínimos.

Para utilizar dominios virtuales estos se pueden agregar al final del archivo, se deberá descomentar la siguiente configuración

NameVirtualHost *:80

En caso de acceder directamente a la IP del servidor o bien a cualquier dominio que apunte a la IP del servidor y que no este definido dentro de los dominios virtuales dará como resultado el despliegue del primer dominio virtual, para evitar esto se recomienda crear como primer   dominio   virtual   uno   que   apunte   al   directorio   /var/www/html   como   se   indica   a continuación.

<VirtualHost *:80>

ServerName localhost

DocumentRoot /var/www/html

</VirtualHost>

2013­01­11 Esteban De La Fuente Rubio 25/44

Page 26: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

El formato de la configuración de un dominio virtual se describe, de forma básica, a continuación.

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName example.com

ServerAlias www.example.com

DocumentRoot /var/www/vhosts/example.com /htdocs

ErrorLog logs/example.com-error_log

CustomLog logs/example.com-access_log common

</VirtualHost>

La   configuración   mostrada   para   dominio   virtual   implica   que   los   dominios   son almacenados todos bajo /var/www/vhosts, sin embargo puede resultar interesante que sean los   usuarios   del   sistema   los   que   tengan   una   carpeta   /home/usuario/www   donde   dentro definan los dominios virtuales, adicionalmente dicha carpeta puede servir para guardar  la configuración de sus zonas de DNS. Personalmente recomiendo esta alternativa, sobre todo si el sistema hospedará sitios que serán administrados por diferentes usuarios.

Lo anterior implicará cambios en la configuración del dominio virtual donde en vez de ir directamente en el archivo de configuración de Apache se podrá incluir a este de la siguiente forma:

Include /home/usuario/www/example.com/virtualhost.conf

El problema detectado con esta solución es que si un usuario tiene su archivo mal formado, o con una configuración incorrecta (directorios que no existen) el proceso de carga del servicio Apache caerá, por lo cual se recomienda utilizar con cuidado.

 4.5  PHPPHP   por   defecto   viene   sin   algunos   componentes   que   pueden   resultar   útiles,   la 

instalación   de   los   mismos   dependerá   de   los   requerimientos   del   servidor   web, específicamente del lenguaje de programación PHP.  En la Tabla 2 se adjunta una lista con los paquetes recomendados, la instalación de estos se hace con la herramienta yum..

2013­01­11 Esteban De La Fuente Rubio 26/44

Page 27: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Paquete Descripción

php­gd Soporte para biblioteca gráfica GD

php­mysql Soporte MySQL

php­pgsql Soporte PostgreSQL

php­pear Repositorio de extensiones y aplicaciones

Tabla 2: Paquetes PHP recomendados

 4.6  SSLLa  utilización  de  SSL permite   realizar  una  conexión  segura  entre  el  servidor  y  el 

cliente, esto se  logra mediante  la utilización de certificados digitales. Cada certificado es firmado por una entidad certificadora que valida la veracidad de estos. A continuación se describen los pasos para crear los certificados, firmarlos y utilizarlos.

Instalar paquetes necesarios

# yum install openssl mod_ssl

 4.6.1  Crear los certificadosCrear directorio para guardar los certificados del servidor

# mkdir -p /var/www/vhosts/example.com/ssl

# cd /var/www/vhosts/example.com/ssl

Generar clave: RSA, sin contraseña y de 2048 bits

# openssl genrsa -out example.com.key 2048

Generar certificado para ser firmado, archivo CSR (Certificate Signing Request)

# openssl req -new -key example.com.key -out example.com.csr

Se preguntarán diferentes campos, donde el más importantes es el  Common Name, el cual   debe   ser   idéntico   al   nombre   de   dominio   que   utilizará   el   certificado   SSL   en   sus conexiones. Lo otro importante es dejar la clave en blanco.

Ya que la clave no esta siendo guardada de forma encriptada es muy importante que solo el usuario root (en realidad, el usuario dueño de la clave) puedan leerla.

 4.6.2  Firmar el certificadoEl archivo CSR generado anteriormente debe ser firmado por una entidad certificado, 

por ejemplo una como Verisign, la cual verificará la autenticidad del mismo. Sin embargo en 

2013­01­11 Esteban De La Fuente Rubio 27/44

Page 28: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

este caso se muestra como auto firmar el certificado para efecto de pruebas o uso interno. Esto generará un error en el navegador indicando que el certificado que utiliza el servidor esta firmado por una entidad certificadora desconocida o no confiable.

# openssl x509 -req -days 365 -in example.com.csr -signkey \

example.com.key -out example.com.crt

Si pretendemos firmar nosotros mismos todos los certificados que se generan para la empresa,   es   recomendable   generar   una   clave   separada   de   la   usada   por   el   dominio (example.com.key) una que sea propia del servidor, y con dicha clave firmar  los archivos CSR.

2013­01­11 Esteban De La Fuente Rubio 28/44

Page 29: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Otra forma de crear la llave y el certificado firmado por nosotros mismos en una sola línea es:

# openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \

"/C=CL/ST=Metropolitana/L=Santiago/O=Example/CN=example.com" \

-keyout example.com.key -out example.com.crt

 4.6.3  Agregar certificadosLos dominios  virtuales  deben ser  definidos para utilizar  el  puerto  443 y no el  80,  

además se debe agregar dentro de la configuración del dominio lo siguiente:

SSLEngine on

SSLCertificateFile /var/www/vhosts/example.com/ssl/example.com.crt

SSLCertificateKeyFile /var/www/vhosts/example.com/ssl/example.com.key

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

 4.6.4  Múltiples dominios utilizando SSLPor defecto no se puede utilizar más de un dominio con SSL, y por defecto ya viene 

definido uno en /etc/httpd/conf.d/ssl.conf.

Para habilitar múltiples dominios se debe agregar  la siguiente opción al archivo de configuración de Apache:

NameVirtualHost *:443

Personalmente recomiendo utilizar esta configuración, ya que permitirá que múltiples dominios puedan utilizar HTTPS.

 4.7  suPHPUn problema común al ejecutar programas escritos en PHP es que todos estos (al 

utilizar el módulo para Apache de PHP) se ejecutan bajo el usuario Apache. Como alternativa a esto, podemos ejecutar los scripts utilizando la CLI de PHP (o sea, no usando el módulo para Apache), al  hacer esto podremos utilizar el  módulo suPHP que permitirá  ejecutar el código PHP con los permisos del propietario del fichero que contiene el código.

A continuación se indican los pasos para instalar y configurar el módulo.

Descargar paquete

# wget http://pkgs.repoforge.org/mod_suphp/mod_suphp-0.7.1-1.el6.rf.i686.rpm

2013­01­11 Esteban De La Fuente Rubio 29/44

Page 30: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Instalar

# rpm -ivh mod_suphp-0.7.1-1.el6.rf.i686.rpm

Editar el archivo de configuración de suPHP

# /etc/suphp.conf

[global]

# [...]

min_gid=100

# [...]

[handlers]

[...]

application/x-httpd-php="php:/usr/bin/php-cgi"

En el archivo del módulo, comentar todas las líneas dejando solo la que carga el mismo

# /etc/httpd/conf.d/suphp.conf

LoadModule suphp_module modules/mod_suphp.so

En la configuración del VirtualHost donde se quiere usar suPHP agregar:

php_admin_flag engine off

suPHP_Engine on

AddHandler application/x-httpd-php .php

suPHP_AddHandler application/x-httpd-php

suPHP_UserGroup <usuario> <grupo>

Reiniciar apache

# service httpd restart

Para probar el módulo, crear el siguiente programa y ejecutarlo vía web:

<?php system('/usr/bin/id'); ?>

En caso de problemas del tipo “Internal Server Error” revisar el registro de error de apache  para  el  VirtualHost,  en  este  existirá   información  que  podrá  ayudar  a   resolver  el problema.

 4.8  PHP APCAPC corresponde a Altertavice PHP Cache, un caché de opcode de PHP.

Instalación

2013­01­11 Esteban De La Fuente Rubio 30/44

Page 31: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

yum install php-pecl-apc

 4.9  Ejercicios1. ¿Para qué es utilizada la opción ­subj en openssl?

2. Implementar los dominios para las zonas definidas en el ejercicio de DNS (sasco.cl y facebook.com)   con   todos   sus   subdominios   definidos.   Adicionalmente   dos   de   los subdominios debe utilizar SSL.

3. ¿Por qué aparece el mensaje de certificado SSL no válido? ¿significa que la conexión no es encriptada?

2013­01­11 Esteban De La Fuente Rubio 31/44

Page 32: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 5  PAMPAM (Pluggable authentication module)  corresponde a un módulo de autenticación 

que se ubica entre la aplicación y el sistema contra el que se esta autenticando. De esta forma una aplicación en vez de soportar “n” sistema de autenticación, puede soportar solo autenticarse contra PAM, y este realizará la autenticación contra el sistema que corresponda. Obviamente PAM debe  tener  soporte para el  sistema contra el  que se desea autenticar, actualmente existe soporte para una gran cantidad de fuentes.

El objetivo de este curso no es cubrir de forma teórica PAM, ni  tampoco todas las configuraciones posibles, sino la situación puntual descrita en el Dibujo 1, donde se muestra como utilizar una base de datos para almacenar los usuarios y sus contraseñas y mediante PAM autenticar aplicaciones (como ftp o samba) contra ella.

Dibujo 1: PAM utilizando una base de datos como fuente

 5.1  InstalaciónSe utilizará  una base de datos MySQL como  backend  de PAM, por  lo cual se debe 

instalar la biblioteca pam_mysql, sin embargo esta no esta disponible en el sistema ni es  instalable mediante YUM.

Instalación de dependencias para compilar soporte para MySQL

# yum install pam-devel mysql-devel

2013­01­11 Esteban De La Fuente Rubio 32/44

vsftpd

PAM

Base de datos

samba

Page 33: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

2013­01­11 Esteban De La Fuente Rubio 33/44

Page 34: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

Descarga paquete pam_mysql, compilación e instalación

# wget http://prdownloads.sourceforge.net/pam-mysql/\

pam_mysql-0.7RC1.tar.gz

# tar xvzf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure –with-pam-mods-dir=/lib64/security --with-openssl

# make install

Lo anterior creará los archivos

/lib64/security/pam_mysql.la

/lib64/security/pam_mysql.so

 5.2  Base de datos MySQL

 5.2.1  InstalaciónInstalación de la base de datos MySQL

# yum install mysql-server

Iniciar servicio

# service mysqld start

Activar al inicio

# chkconfig mysqld on

Ejecutar asistente para inicializar nueva base de datos (clave de root de MySQL: centos)

# mysql_secure_installation

Eliminar usuario anónimo, eliminar base de datos de pruebas y no permitir conexión remota del usuario root.

 5.2.2  Creación de base de datosCrear base de datos y usuario para acceder a la misma

# mysql -u root -p

mysql> CREATE DATABASE pam;

mysql> GRANT ALL PRIVILEGES ON pam.* TO 'pam'@'localhost' \

IDENTIFIED BY 'centos';

2013­01­11 Esteban De La Fuente Rubio 34/44

Page 35: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

mysql> FLUSH PRIVILEGES;

Conectar a la base de datos pam con el usuario pam y crear tablas

# mysql -u pam -p pam

mysql> CREATE TABLE users (username VARCHAR(30) NOT NULL PRIMARY KEY, password VARCHAR(32) NOT NULL);

Insertar usuarios de prueba

mysql> INSERT INTO users VALUES ('pepito', md5('pepito'));

mysql> INSERT INTO users VALUES ('juanito', md5('juanito'));

Crear usuarios en el sistema

# useradd pepito

# useradd juanito

 5.3  ConfiguraciónDatos de conexión y tabla de MySQL

# /etc/pam-mysql.conf

users.host = localhost

users.database = pam

users.db_user = pam

users.db_passwd = centos

users.where_clause = 1

users.table = users

users.user_column = username

users.password_column = password

users.password_crypt = md5

verbose = 1

Configuración para que el servicio use MySQL

# /etc/pam.d/<servicio>

auth requisite pam_mysql.so config_file=/etc/pam-mysql.conf

account required pam_unix.so

 5.4  Ejercicios1. ¿Qué   consideraciones   se   deben   tomar   al   utilizar   una   base   de   datos   de   alguna 

2013­01­11 Esteban De La Fuente Rubio 35/44

Page 36: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

aplicación ya existente?

2013­01­11 Esteban De La Fuente Rubio 36/44

Page 37: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 6  FTPFile Transfer Protocol fue de los primeros protocolos para la transferencia de archivos 

por la red. En esta sección se explicará como montar un servidor FTP utilizando vsftpd (Very Secure FTP Daemon) el cual es recomendado para ser utilizado en Red Hat Linux Enterprise y el disponible en repositorios. Existen otras soluciones como proftpd y pureftpd, las cuales no están por defecto en los repositorios de CentOS.

 6.1  InstalaciónInstalación

# yum install vsftpd

Iniciar servicio

# service vsftpd start

Activar al inicio

# chkconfig vsftpd on

Por defecto se permite una conexión en modo anónimo al servidor FTP accediendo a los archivos alojados en /var/ftp.

 6.2  ConfiguraciónEl archivo de configuración del servicio corresponde a /etc/vsftpd/vsftpd.conf, el cual 

por defecto permite las conexiones como anónimos y con usuarios del sistema.

 6.2.1  PAMConfigurar   según   indicaciones   disponibles   en   la   sección  5.3,   el   archivo 

/etc/pam.d/vsftpd

 6.2.2  SELinux# setsebool -P ftp_home_dir on

# setsebool -P ftpd_connect_db on

 6.3  Ejercicios1. ¿Cómo deshabilitar el acceso de un usuario anónimo?

2. Configurar  para  permitir   que  puedan  entrar   usuarios  con   clave  en  el   sistema  y/o 

2013­01­11 Esteban De La Fuente Rubio 37/44

Page 38: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

MySQL.

3. ¿Cómo utilizar SSL con el servidor vsftp?

2013­01­11 Esteban De La Fuente Rubio 38/44

Page 39: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 7  SAMBASamba es el servicio en sistemas like Unix que permite, entre otras tareas, compartir 

ficheros con el sistema operativo Microsoft Windows a través del protocolo CIFS (ex SMB). Igualmente permite el intercambio entre sistemas operativos GNU/Linux.

Utilizando PAM y aprovechando los usuarios creados en la sección 5.2.2, se propone el ejercicio descrito en la Tabla 3 de intercambio de archivos, donde se debe compartir tres carpetas con diferentes permisos. Adicionalmente se requiere llevar auditoría de lo que se realiza en el servicio SAMBA.

/var/samba/carpeta1 /var/samba/carpeta2 /var/samba/carpeta3

juanito readwrite

readwrite ­

pepito read readwrite

readwrite

Tabla 3: Ejercicio SAMBA

Crear carpetas

# mkdir -p /var/samba/carpeta1

# mkdir -p /var/samba/carpeta2

# mkdir -p /var/samba/carpeta3

 7.1  InstalaciónInstalación

# yum install samba

Iniciar servicio

# service smb start

Activar al inicio

# chkconfig smb on

Por defecto el servicio permite la conexión a los directorios principales de los usuarios creados en el sistema. Esto significa que al habilitar PAM los usuarios definidos en la base de datos  MySQL  (caso  presentado  en   la   sección  de  PAM)   también  podrán  acceder   a  sus directorios principales.

2013­01­11 Esteban De La Fuente Rubio 39/44

Page 40: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 7.2  ConfiguraciónEl   archivo   de   configuración   de   SAMBA   corresponde   a   /etc/samba/smb.conf,   y   a 

continuación   se   muestran   las   configuraciones   a   agregar   para   lograr   lo   planteado anteriormente (agregar al final)

# /etc/samba/smb.conf

# […]

[carpeta1]

comment = Carpeta 1

path = /var/samba/carpeta1

browseable = yes

public = no

guest ok = no

read list = juanito, pepito

write list = juanito

create mask = 0660

directory mask = 0770

force group = smbusers

[carpeta2]

comment = Carpeta 2

path = /var/samba/carpeta2

browseable = yes

public = no

guest ok = no

read list = juanito, pepito

write list = juanito, pepito

create mask = 0660

directory mask = 0770

force group = smbusers

2013­01­11 Esteban De La Fuente Rubio 40/44

Page 41: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

[carpeta3]

comment = Carpeta 3

path = /var/samba/carpeta3

browseable = yes

public = no

guest ok = no

read list = pepito

write list = pepito

create mask = 0660

directory mask = 0770

force group = smbusers

Reiniciar servicio

# service smb restart

Creación de grupo y añadir a usuarios al mismo

# groupadd smbusers

# usermod -a -G smbusers pepito

# usermod -a -G smbusers juanito

Asignación de permisos

# chgrp smbusers /var/samba/ -R

# chmod 770 /var/samba/ -R

 7.2.1  PAMConfigurar   según   indicaciones   disponibles   en   la   sección  5.3,   el   archivo 

/etc/pam.d/samba

Adicionalmente para utilizar PAM se deben modificar/asignar las siguientes opciones en el archivo de configuración de SAMBA, en la sección global:

encrypt passwords = no

obey pam restrictions = no

client lanman auth = yes

client plaintext auth = yes

2013­01­11 Esteban De La Fuente Rubio 41/44

Page 42: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 7.2.2  SELinuxPermitir acceso a directorios principales de usuarios

# setsebool -P samba_enable_home_dirs on

Permitir acceso a directorio /var/samba

# chcon -t samba_share_t /var/samba/carpeta1

# chcon -t samba_share_t /var/samba/carpeta2

# chcon -t samba_share_t /var/samba/carpeta3

Crear política personalizada para conexión a base de datos

# yum install policycoreutils-python

# grep smbd /var/log/audit/audit.log | audit2allow -M smbd_mysql

# semodule -i smbd_mysql.pp

Lo pasos utilizados para  la política personalizada están fuera del contexto de este curso, sin embargo se muestran para evitar tener que poner SELinux en modo permisivo por  no contar con una política que por defecto permita el acceso a MySQL.

 7.2.3  AuditoríaEn la sección global del archivo de configuración de SAMBA agregar lo siguiente:

vfs objects = full_audit

full_audit:prefix = %u|%I|%m|%S

full_audit:success = mkdir rename unlink rmdir pwrite pread connect \

disconnect

full_audit:failure = none

full_audit:facility = LOCAL6

full_audit:priority = NOTICE

Agregar a /etc/rsyslog.conf

local6.* /var/log/samba/audit.log

Reiniciar servicios

# service smb restart

# service rsyslog restart

2013­01­11 Esteban De La Fuente Rubio 42/44

Page 43: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 7.3  PruebasPara probar los directorios compartidos utilizar el comando smbclient.

Instalación

# yum install samba-client

Conexión con usuario juanito

# smbclient //localhost/carpeta1 -U juanito

Crear carpeta

smb: \> mkdir c1

Conexión con usuario pepito

Crear carpeta

smb: \> mkdir c2

Revisar registros

tail /var/log/samba/audit.log

 7.4  Ejercicios1. ¿Qué problema de seguridad se presenta con las contraseñas en la configuración de 

este ejercicio?

2. ¿Se podría tener una configuración más segura de las carpetas compartidas?

3. ¿Por qué se colocan a los usuarios dentro del mismo grupo?

4. Acceder a carpeta1 con los dos usuarios y crear una carpeta, revisar audit.log

5. Montar carpeta en una ubicación del sistema de ficheros.

6. ¿Cómo   montar   un   directorio   compartido   en   una   máquina   remota?   ¿cambios   en SELinux?

2013­01­11 Esteban De La Fuente Rubio 43/44

Page 44: CentOS 03 Servicios

SASCO ­ http://sasco.cl GNU/Linux ­ Servicios en GNU/Linux (licencia GFDL)

 8  Recursos• PXE

◦ Configuración: http://wiki.centos.org/HowTos/PXE/PXE_Setup

◦ Más detalles: http://pxe.dev.aboveaverageurl.com/index.php/PXE_Booting

• menu.c32: http://www.syslinux.org/wiki/index.php/Comboot/menu.c32

• bind: http://en.wikipedia.org/wiki/BIND

• OpenSSL: http://slacksite.com/apache/certificate.php

• Múltiple   SSL   en   una   IP:  http://www.techrepublic.com/blog/opensource/configure­apache­to­support­multiple­ssl­sites­on­a­single­ip­address/987

• PAM: http://sopa.dis.ulpgc.es/ii­aso/portal_aso/leclinux/seguridad/pam/pam_doc.pdf

• vsftpd

◦ SELinux: http://beginlinux.com/blog/2008/11/vsftpd­and­selinux­on­centos/

◦ SSL: http://wiki.vpslink.com/Configuring_vsftpd_for_secure_connections_(TLS/SSL/SFTP   )  

• Audit:  http://chicheblog.wordpress.com/2011/01/21/como­auditar­la­actividad­de­los­usuarios­en­samba/

2013­01­11 Esteban De La Fuente Rubio 44/44