administración de red servidores y seguridad

24
PEC 3 - Administración de red, servidores y seguridad Carlos David González Abraham Máster en Software Libre, Universitat Oberta de Catalunya [email protected] 19 de diciembre de 2008 Índice 1. Administración de red 2 1.1. Configuración de la interfaz de red ............... 2 2. Administración de servidores 5 2.1. Configuración del servicio DHCP ................ 5 2.2. Configuración de los servicios NFS y NIS ............ 7 2.2.1. Servicio NFS ....................... 8 2.2.2. Servidor NIS ....................... 9 2.2.3. Cliente NIS ........................ 11 2.3. Configuración de los servicios FTP y HTTP .......... 13 2.3.1. Servidor FTP ....................... 13 2.3.2. Servidor HTTP ...................... 16 3. Administración de seguridad 18 3.1. Implementación de firewall .................... 18 3.2. Análisis de seguridad ....................... 20 3.2.1. Detección de intrusiones ................. 20 3.2.2. Seguridad Local ...................... 22 3.2.3. Seguridad de Red ..................... 22 1

Upload: emilio

Post on 12-Jun-2015

438 views

Category:

Education


3 download

DESCRIPTION

Administración de red servidores y seguridad

TRANSCRIPT

Page 1: Administración de red servidores y seguridad

PEC 3 - Administración de red, servidores yseguridad

Carlos David González AbrahamMáster en Software Libre,

Universitat Oberta de [email protected]

19 de diciembre de 2008

Índice

1. Administración de red 21.1. Configuración de la interfaz de red . . . . . . . . . . . . . . . 2

2. Administración de servidores 52.1. Configuración del servicio DHCP . . . . . . . . . . . . . . . . 52.2. Configuración de los servicios NFS y NIS . . . . . . . . . . . . 7

2.2.1. Servicio NFS . . . . . . . . . . . . . . . . . . . . . . . 82.2.2. Servidor NIS . . . . . . . . . . . . . . . . . . . . . . . 92.2.3. Cliente NIS . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3. Configuración de los servicios FTP y HTTP . . . . . . . . . . 132.3.1. Servidor FTP . . . . . . . . . . . . . . . . . . . . . . . 132.3.2. Servidor HTTP . . . . . . . . . . . . . . . . . . . . . . 16

3. Administración de seguridad 183.1. Implementación de firewall . . . . . . . . . . . . . . . . . . . . 183.2. Análisis de seguridad . . . . . . . . . . . . . . . . . . . . . . . 20

3.2.1. Detección de intrusiones . . . . . . . . . . . . . . . . . 203.2.2. Seguridad Local . . . . . . . . . . . . . . . . . . . . . . 223.2.3. Seguridad de Red . . . . . . . . . . . . . . . . . . . . . 22

1

Page 2: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

1. Administración de red

1.1. Configuración de la interfaz de red

Realizar la configuración desde el inicio de la interfaz de redconsiderando el tipo de conexión hardware que se disponga (mó-dem, módem/router ADSL, cable, LAN, etc) y los servicios quecrea necesarios para un entorno de red. Para verificar este ejerci-cio se deberán realizar unas pruebas mínimas de conectividad enla misma red y hacia internet analizando la calidad de la conexión(por ejemplo contabilizando los paquetes perdidos). En la PECse deberán describir todos los pasos realizados para configurar eldispositivo y los servicios en los ficheros de configuración sin uti-lizar herramientas automáticas o gráficas. Tener en cuenta deextremar las precauciones si es el único ordenador que se disponeconectado a la red ya que si se configura en forma inadecuadano se podrá disponer de ella para solicitar ayuda (a los foros dela UOC por ejemplo). En este caso particular no se aceptaránconfiguraciones automáticas hechas por dhcp (de un router localpor ejemplo).

En los siguientes párrafos se describe el proceso seguido para la config-uración de una interfaz de red en Slackware. El primer paso fue determinarque interfaces de red tenía el equipo, para esto ejecutó el comando ifconfigcomo se muestra a continuación:

# ifconfig -aeth0 Link encap:Ethernet HWaddr 00:16:36:4f:2b:bf

inet6 addr: fe80 ::216:36 ff:fe4f:2bbf/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU :1500 Metric :1RX packets :2761 errors :0 dropped :0 overruns :0 frame:0TX packets :2302 errors :0 dropped :0 overruns :0 carrier :0collisions :0 txqueuelen :1000RX bytes :807752 (788.8 KiB) TX bytes :231828 (226.3 KiB)

lo Link encap:Local Loopbackinet addr :127.0.0.1 Mask :255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU :16436 Metric :1RX packets :0 errors :0 dropped :0 overruns :0 frame:0TX packets :0 errors :0 dropped :0 overruns :0 carrier :0collisions :0 txqueuelen :0RX bytes :0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr 00:13:02:1c:6c:93inet6 addr: fe80 ::213:2 ff:fe1c:6c93/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU :1500 Metric :1

2

Page 3: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

RX packets :561 errors :0 dropped :0 overruns :0 frame:0TX packets :12 errors :0 dropped :0 overruns :0 carrier :0collisions :0 txqueuelen :1000RX bytes :192414 (187.9 KiB) TX bytes :1152 (1.1 KiB)

En la salida anterior se observa que existen varias opciones, eth0 que esuna interfaz ethernet, wlan0 que es una interfaz wi-fi y lo que hace referenciaa la direccion bucle (loop). Debido a la arquitectura de la red disponible, seconfiguró la interfaz eth0 para lo que fue necesario hacer uso una vez másdel comando ifconfig, pasandole los parámetros necesarios de la siguientemanera:

# ifconfig eth0 inet 192.168.2.10 netmask 255.255.255.0 up

El comando ping puede ser utilizado para revisar el estado de la conexión.Como ejemplo se probó alcanzar a un equipo dentro de la red local cuya ladirección IP es 192.168.1.11. De la prueba anterior se obtuvo la siguientesalida:

# ping 192.168.2.11PING 192.168.2.11 (192.168.2.11) 56(84) bytes of data.64 bytes from 192.168.2.11: icmp_seq =1 ttl=64 time =0.188 ms64 bytes from 192.168.2.11: icmp_seq =2 ttl=64 time =0.179 ms64 bytes from 192.168.2.11: icmp_seq =3 ttl=64 time =0.180 ms64 bytes from 192.168.2.11: icmp_seq =4 ttl=64 time =0.180 ms64 bytes from 192.168.2.11: icmp_seq =5 ttl=64 time =0.180 ms

--- 192.168.2.11 ping statistics ---5 packets transmitted , 5 received , 0 % packet loss , time 4000msrtt min/avg/max/mdev = 0.179/0.181/0.188/0.012 ms

En las últimas tres lineas se observan las estadisticas de la ejecución delping. En este caso, de los cinco paquetes enviados no se perdió ninguno y lostiempos de respuesta menor, promedio y mayor fueron de: 0.179 ms, 0.181 msy 0.188ms respectivamente. Desde luego los tiempos de respuesta han sidomuy pequeños para este caso, ya que se trata de un equipo preteneciente ala red local.

Para poder acceder a Internet, fue necesario configurar la dirección IP dela puerta de enlace (la dirección 192.168.2.1, un pequeño router/firewalldentro de la red local). Se especificó la dirección de la puerta de enlacea través de la linea GATEWAY del archivo /etc/rc.d/rc.inet1.conf. Estoúltimo se configura en el archivo /etc/resolv.conf. En este mismo archivo,Slackware al igual que otras distribuciones, permite fijar la configuración dela interfaz de red de forma permanente. Esto permite que cada vez que

3

Page 4: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

se reinicie el sistema, automáticamente se levantara la interfaz de red con laconfiguración deseada. El archivo rc.inet1.conf se actualizó de la siguientemanera:

1 ...2 # Config information for eth0:3 IPADDR [0]="192.168.2.10"4 NETMASK [0]="255.255.255.0"5 USE_DHCP [0]=""6 DHCP_HOSTNAME [0]=""7 ...8 GATEWAY="192.168.2.1"9 ...

También fue necesario añadir la siguiente línea al archivo /etc/resolv.conf,especificando la dirección del servidor DNS para que el sistema supiera comoresolver los nombres de dominio:

1 nameserver 200.23.242.209

Una vez más haciendo uso del comando ping se revisó el estado de laconexión, pero en esta ocación utilizando el nombre de dominio de un equipofuera de la red local (un servidor en Internet).

# ping google.comPING google.com (72.14.205.100) 56(84) bytes of data.64 bytes from qb -in-f100.google.com (72.14.205.100):icmp_seq =1 ttl =242 time =133 ms64 bytes from qb -in-f100.google.com (72.14.205.100):icmp_seq =2 ttl =242 time =136 ms64 bytes from qb -in-f100.google.com (72.14.205.100):icmp_seq =3 ttl =242 time =134 ms64 bytes from qb -in-f100.google.com (72.14.205.100):icmp_seq =4 ttl =242 time =135 ms

--- google.com ping statistics ---4 packets transmitted , 4 received , 0 % packet loss , time 2999msrtt min/avg/max/mdev = 133.873/135.113/136.240/0.944 ms

El resultado fue que se pudo alacanzar sin problemas dicha dirección.También se puede observar que los tiempos de respuesta son considerable-mente mayores que en la prueba con un equipo local.

4

Page 5: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

2. Administración de servidores

2.1. Configuración del servicio DHCP

Configurar un servidor de DHCP y verificar que el mismofunciona adecuadamente asignando como mínimo los parámetrosnecesarios para la configuración de una tarjeta de red. Para ello lomás fácil es utilizar otra máquina como cliente (indistintamentedel operativo que disponga) para probar que se asignan correcta-mente las direcciones. Prestar atención en redes domésticas conrouter ADSL ya generalmente en la mayoría de los casos llevanactivo un servidor de dhcp y podría dar servicio antes que nuestroservidor. En caso de no disponer dos máquinas para realizar laspruebas, utilizar algunos de los verificadores de configuración deDHCP que existen o utilizarlo en modo depuración (debug).

Con la finalidad de comprobar el funcionamiento de un servidor DHCPse han utilizado dos equipos disponibles en el segmento de red 192.168.2.0. Elprimero, un equipo con Slackware cuya dirección MAC es 00:16:36:4F:2B:BF(laptop) y el segundo, una computadora con Ubuntu cuya dirección MACes 00:13:D3:35:F4:9E (desktop). El primer equipo fue configurado comoservidor DHCP para lo cual se modificó el archivo /etc/dhcpd.conf de lasiguiente manera:

1 # Configuraciones globales2 ddns -update -style none;3 default -lease -time 1200;4 deny bootp;5

6 # hosts7 host laptop {8 hardware ethernet 00:16:36:4F:2B:BF;9 fixed -address 192.168.2.10;

10 option host -name "laptop";11 }12

13 host desktop {14 hardware ethernet 00:13: D3:35:F4:9E;15 fixed -address 192.168.2.11;16 option host -name "desktop";17 }18

19 # red local20 subnet 192.168.2.0 netmask 255.255.255.0 {21 not authoritative;22 option routers 192.168.2.1;23 option broadcast -address 192.168.2.255;

5

Page 6: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

24

25 pool {26 range 192.168.2.21 192.168.2.30;27 max -lease -time 9200;28 allow unknown -clients;29 }30

31 }

La configuración anterior permite tener dos equipos (00:16:36:4F:2B:BFy 00:13:D3:35:F4:9E) a los cuales el servidor DHCP siempre les asignarálas mismas direcciones IP. Al resto de los equipos se les asignará una IP delrango 192.168.2.21 al 192.168.2.30. Para comprobar la correcta configu-ración de este archivo, se ejecutó el comando dhcpd con el modificador -t. Loanterior solo revisa que la sintaxis del archivo esta bien formada, sin embar-go no arranca el servicio en forma real. Para comprobar el funcionamientodel servidor DHCP, se utilizaron los modificadores -d -f al momento deiniciarlo:

# dhcpd -d -fInternet Systems Consortium DHCP Server V3.0.6Copyright 2004 -2007 Internet Systems Consortium.All rights reserved.For info , please visit http ://www.isc.org/sw/dhcp/Wrote 0 deleted host decls to leases file.Wrote 0 new dynamic host decls to leases file.Wrote 0 leases to leases file.Listening on LPF/eth0 /00:16:36:4f:2b:bf /192.168.2/24Sending on LPF/eth0 /00:16:36:4f:2b:bf /192.168.2/24Sending on Socket/fallback/fallback -net

Lo anterior provoca que todos los mensajes del servicio DHCP vayan aparar a la salida estándar. Para comprobar el comportamiento del servidor, sehizo una petición de asignación de IP desde la máquina 00:13:D3:35:F4:9Eutilizando el programa dhclient3 (cliente DHCP utilizado por Ubuntu). Elservidor inmediatamente contestó asignado la dirección 192.168.2.11 de lasiguiente manera:

DHCPREQUEST for 192.168.2.11 from 00:13: D3:35:F4:9E via eth0DHCPACK on 192.168.2.11 to 00:13: D3:35:F4:9E via eth0

Debido a la imposibilidad de contar con otro equipo al momento de re-alizar la prueba, se alteró la dirección MAC de la máquina cliente 00:13:D3:35:F4:9Epara que simulara ser otro equipo que solicitara una dirección IP:

6

Page 7: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

# ifconfig eth0 hw ether 0013 D335F48E

Después se repitió el proceso de solicitud de asignación de una direc-ción IP con dhclient3, a lo que el servidor DHCP respondió asignando ladirección 192.168.2.30 de la siguiente manera:

DHCPREQUEST for 192.168.2.11 from 00:13: d3:35:f4:8e via eth0: unknown lease 192.168.2.11.DHCPREQUEST for 192.168.2.11 from 00:13: d3:35:f4:8e via eth0: unknown lease 192.168.2.11.DHCPDISCOVER from 00:13: d3:35:f4:8e via eth0DHCPOFFER on 192.168.2.30 to 00:13: d3:35:f4:8e (desktop) viaeth0DHCPREQUEST for 192.168.2.30 (192.168.2.10) from 00:13: d3:35:f4:8e(desktop) via eth0DHCPACK on 192.168.2.30 to 00:13: d3:35:f4:8e (desktop) via eth0

Debido a que esta dirección MAC no estaba configurada para alguna IPen concreto, el servidor DHCP tomó una disponible del rango configurado(pool). En esta ocasión el servidor asigno la dirección 192.168.2.30.

2.2. Configuración de los servicios NFS y NIS

Configurar un servidor NIS y un servidor de ficheros NFS enla misma máquina para que clientes remotos o locales se conectensolo a través de NIS montando su directorio HOME por NFS (encaso del servidor no es necesario). Para el servidor NFS se debeverificar su funcionamiento con restricciones de tipo de acceso(p.e. sólo lectura), usuarios, máquinas clientes (esta prueba sepuede realizar desde un cliente externo montando el directorioen cuestión o desde la misma máquina (no tiene ningún ben-eficio sino simplemente hacer la prueba). Para el sistema NISlas pruebas se pueden hacer configurando el cliente tanto en unamáquina externa como en el mismo servidor (para probar clien-te/servidor en la misma máquina deben crearse usuarios/gruposNIS -es decir que no estén dados de alta en el /etc/passwd nien el /etc/group- y verificar su conexión a través de un terminal-AltFi o CrtlAltFi-).

Se deben incluir en este ejercicio todos los cambios realizadosen archivos de configuración (incluido el del /etc/passwd, /etc/-group).

7

Page 8: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

2.2.1. Servicio NFS

Para habilitar el servicio NFS en Slackware fue necesario como primer pa-so, instalar los paquetes portmap y nfs-utils disponibles en la distribución(serie n):

# installpkg portmap -6.0-i486 -1. tgz# installpkg nfs -utils -1.1.2 -i486 -1.tgz

Se creó el directorio /export para ser compartido vía NFS con la finalidadde hospedar ahí los directorios personales de los usuarios. Esto se realizómediante la adición de la siguiente línea al archivo /etc/exports:

/export 192.168.2.0/255.255.255.0(rw,no_root_squash)

El siguiente paso fue arrancar los servicios de portmap y nfs usando susguiones de arranque instalados en /etc/rc.d:

# sh /etc/rc.d/rc.rpc start# sh /etc/rc.d/rc.nfsd start

Con el programa showmount se puede revisar que directorios se estáncompartiendo vía NFS. Se uso este programa para asegurar que la configu-ración fuera correcta:

# showmount -e localhostExport list for localhost:/export 192.168.2.0/255.255.255.0

Como última prueba, se intentó montar el directorio compartido desdeotra computadora (192.168.2.11) usando el comando mount:

# sudo mount 192.168.2.10:/ export /mnt# mountS.ficheros Bloques de 1K Usado Dispon Uso %

Montado en...192.168.2.10:/ export 39657600 36852864 1193088 97 %

/mnt

8

Page 9: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

2.2.2. Servidor NIS

Para poder configurar tanto un cliente como un servidor NIS en Slack-ware, es necesario instalar el paquete yptools que viene incluido los CDs deinstalación (serie n).

# installpkg yptools -2.9-i486 -1. tgz

Para la configuración del servidor, al igual que los ejercicios anteriores, seha utilizado la máquina con Slackware (192.168.2.10). El primer paso parala puesta en marcha de una arquitectura NIS, es la elección de un nombrede dominio. Se eligió pec como nombre de domnio NIS y para establecerlose utilizó el comando domainname y posteriormente se guardó en el archivo/etc/defaultdomain:

# domainname pec# domainname > /etc/defaultdomain

Se creo un par de guiones en /etc para los directorios de los usuarios víaNFS. El guión auto.master controla como debe funcionar el automontajede los directorios:

1 # Archivo mapa para el automontaje NFS2 #3 /export auto.export --timeout 60

Y el guión auto.export define el mapeo /export:

1 # Archivo de configuracion del automontaje NFS2 #3 home -fstype=nfs 192.168.2.10:/ export/home

Después se configuró el archivo /var/yp/Makefile, el cual define entreotras cosas que información se compartirá a través de NIS. Debido a la exten-sión de este archivo, solo se incluyen algunas de las lineas más importantespara la configuración:

1 # Evita realizar push de los mapas a los servidores esclavos2 NOPUSH=true3 # Evita la mezcla de los archivos passwd y shadow4 MERGE_PASSWD=false5 # Evita la mezcla de los archivos group y gshadow6 MERGE_GROUP=false7 # Objetivos

9

Page 10: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

8 all: passwd group hosts rpc services netid protocols netgrp mail \9 shadow auto.master auto.export

10 ...11 AUTO_LOCAL = $(YPSRCDIR )/auto.local12 AUTO_EXPORT = $(YPSRCDIR )/auto.export13 ...14 auto.export: $(AUTO_EXPORT) $(YPDIR)/ Makefile15 @echo "Updating $@..."16 -@sed -e "/^#/d" -e s/#.*$$// $(AUTO_EXPORT) | $(DBLOAD) \17 -i $(AUTO_EXPORT) -o $(YPMAPDIR )/$@ - $@18 -@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@19 ...

Por razones de seguridad, también se substituyó la red 0.0.0.0 por lared local (192.168.2.0) en el archivo /var/yp/securenets. Este paso esimportante ya que restringe desde que subredes se podrá accesar a NIS.

1 255.0.0.0 127.0.0.02 255.255.255.0 192.168.2.0

Para iniciar el servidor NIS (además de un cliente local) desde el arranquedel sistema, se habilitaron los siguientes bloques de configuración en el guión/etc/rc.d/rc.yp:

1 # Configuracion del nombre de dominio2 if [ -r /etc/defaultdomain ]; then3 nisdomainname ‘cat /etc/defaultdomain ‘4 fi5 ...6 # Configuracion del servidor NIS7 if [ -x /usr/sbin/ypserv ]; then8 echo "Starting NIS server: /usr/sbin/ypserv"9 /usr/sbin/ypserv

10 fi11 ...12 # Configuracion del servidor de password13 if [ -x /usr/sbin/rpc.yppasswdd ]; then14 echo "Starting NIS master password server: \15 /usr/sbin/rpc.yppasswdd"16 /usr/sbin/rpc.yppasswdd17 # echo "Starting NIS master password server: \18 # /usr/sbin/rpc.yppasswdd -e chsh -e chfn"19 # /usr/sbin/rpc.yppasswdd -e chsh -e chfn20 fi21 ...22 # Configuracion del cliente NIS23 if [ -d /var/yp ]; then

10

Page 11: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

24 echo "Starting NIS services: /usr/sbin/ypbind -broadcast"25 /usr/sbin/ypbind -broadcast26 fi

Como último paso en la configuración, se iniciaron los servicios necesariosa través de los guiones de arranque en /etc/rc.d y se construyeron los mapascon el comando make:

# sh /etc/rc.d/rc.rpc start# sh /etc/rc.d/rc.yp# make -C /var/yp

2.2.3. Cliente NIS

Para las pruebas de funcionamiento se configuró un cliente NIS utilizan-do el equipo con Ubuntu (192.168.2.11). Al igual que con Slackware, fuenecesario instalar los paquetes correspondientes a las herramientas para NIS.

$ sudo apt -get install nis

Como parte del proceso de instalación con apt-get, se eligió el nombrede dominio NIS correspondiente (en este caso pec). Una vez finalizado, seejecutó el guión de arranque del servicio portmap.

$ sudo /etc/init.d/portmap start* Starting portmap daemon ... [ OK ]

Fue necesario además, modificar el archivo /etc/yp.conf para especificarla dirección IP del servidor NIS como se muestra a continuación:

ypserver 192.168.2.10

También fue necesario modificar el archivo /etc/nsswitch.conf paraespecificar que servicios se deben usar (y en que orden) para determinarlos archivos de contraseñas, grupos y el automontaje de los directorios deusuario. Particularmente se modificaron las secciones referentes a passwd,shadow, group y automount de la siguiente manera:

passwd: compatgroup: compatshadow: compat

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

11

Page 12: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

#hosts: files nisnetworks: files

protocols: db filesservices: db filesethers: db filesrpc: db files

netgroup: nisautomount: nis

Una vez realizadas estas configuraciones, se añadió una línea extra (+::::::,+:::, +::::::::) al final de los archivos /etc/passwd, /etc/shadow y /etc/group.Todas estas configuraciones en el lado del cliente se iniciaron ejecutando elguión de arranque de NIS bajo el directorio /etc/init.d.

$ sudo /etc/init.d/nis start* Starting NIS services

Para comprobar que tanto la configuración del servidor, como del clienteestaba correctas, se siguieron estas serie de pasos que muestran la respuestadel servidor NIS.

$ rpcinfo -u localhost ypbindprogram 100007 version 1 ready and waitingprogram 100007 version 2 ready and waiting$ ypcat passwdcarvid:x:2000:100::/ export/home/carvid :/bin/bash

Como prueba final, desde el lado del cliente se inicio una sesión del usuariocarvid el cual no se encontraba definido localmente (solamente del lado delservidor NIS), pudiendo autenticarse con éxito:

$ ssh -l carvid localhostpassword:Linux desktop 2.6.22 -14 - generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686

The programs included with the Ubuntu system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/ copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY , to the extent permitted byapplicable law.carvid@desktop :~$

12

Page 13: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

2.3. Configuración de los servicios FTP y HTTP

a) Montar un servidor de ftp que permita también usuariosanónimos teniendo en cuenta cuestiones de seguridad. Los usuar-ios anónimos además de bajar archivos también podrán subirarchivos al servidor pero no los podrán borrar una vez subidos.

b) Montar un servidor de ficheros vía un servidor web (Apachepor ejemplo) que permita que por lo menos un directorio se accedacon usuario y passwd. En esteapartado solo se podrán descargararchivos del servidor (no se podrán subir archivos al servidor).Para gestionar los archivos y usuarios/passwd recomendamos uti-lizar simplemente la interfaz web y acceso a través de .htaccespero también se pueden utilizar módulos específicos por ejemploWebDav. En ambos ejercicios describir todos los pasos para lainstalación, configuración y las pruebas realizadas para verificarsu seguridad.

2.3.1. Servidor FTP

Para iniciar la configuración del servicio FTP, primero fue necesario in-stalar el paquete de binarios correspondiente. Slackware incluye por defectodos programas para este fin, ProFTPD y vsftpd. Se optó por configurarProFTPD, el cual viene en la serie n en los disco de instalación.

# installpkg proftp

En la instalación de ProFTPD se crea por defecto el usuario ftp asícomo su directorio en /home/ftp. Se conservó a este usuario tal cual para laconfiguración de la conexión anónima al servidor, aunque es posible modificareste comportamiento preconfigurado (usar otro usuario, otro directorio, etc).Fue necesario conceder permisos de lectura, escritura y ejecución sobre eldirectorio /home/ftp al usuario ftp.

# chown -R ftp.ftp ftp# chmod 775 -R ftp

También fue necesario quitar al usuario ftp del archivo /etc/ftpusers,ya que de lo contrario no se podría acceder al servidor FTP de forma anónimaaún cuando todo estuviera correctamente configurado.

La instalación de ProFTPD en Slackware viene con un archivo de config-uración por defecto. Este archivo ha sido muy útil ya que solo fue necesarioajustar algunos puntos para lograr las restricciones planteadas. A contin-uación se lista el contenido de archivo /etc/proftpd.conf tal como quedo:

13

Page 14: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

1 # Configuraciones generales2 ServerName "Servidor FTP publico de Carvid"3 ServerType inetd4 DefaultServer on5

6 Port 217 Umask 0228

9 MaxInstances 3010

11 User nobody12 Group nogroup13

14 SystemLog /var/log/proftpd.log15 TransferLog /var/log/xferlog16

17 <Directory /*>18 AllowOverwrite on19 </Directory >20

21 # Configuraciones para usuarios conocidos22 <Global >23 DefaultRoot ~24 DefaultTransferMode binary25 DisplayLogin .bienvenida.msg26 MaxClients 3027 </Global >28

29

30 # Configuraciones para usuario anonimo31 <Anonymous ~ftp >32 User ftp33 Group ftp34 UserAlias anonymous ftp35

36 RequireValidShell off37 AnonRequirePassword off38 DisplayLogin bienvenida.msg39 MaxClients 5040

41 # Limita todas las acciones de escritura42 # para el usuario anonimo43 <Limit WRITE >44 DenyAll45 </Limit >46

47 # Habilita la creacion de directorio y la48 # subida de archivos49 <Limit MKD STOR >

14

Page 15: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

50 AllowAll51 </Limit >52

53 </Anonymous >

Una vez realizada esta configuración, se inició el servicio FTP utilizandoel daemon inetd. Para ello fue necesario habilitar una línea en el archivo/etc/inetd.conf:

1 ...2 # Profesional File Transfer Protocol (FTP) server.3 ftp stream tcp nowait root /usr/sbin/tcpd proftpd4 ...

Para comprobar que el funcionamiento del servidor FTP fuera el deseado,se inició una sesión desde otro equipo en la red local utilizando el usuarioanónimo:

$ ftp 192.168.2.10Connected to laptop.220 ProFTPD 1.3.1 Server (Servidor FTP para la PEC 3) [::ffff:192.168.2.10]Name (latop:desktop ): anonymous331 Anonymous login ok, send your complete email address asyour passwordPassword:230 Anonymous access granted , restrictions applyRemote system type is UNIX.Using binary mode to transfer files.ftp >

Una vez iniciada la sesión, se utilizó el comando ls para listar el contenidodel directorio. Desde luego al ser esta la primera sesión, el directorio nocontenía ningún archivo.

ftp > ls200 PORT command successful150 Opening ASCII mode data connection for file list226 Transfer complete

Para comprobar que efectivamente la configuración del servidor permitíasubir archivos, se intentó transferir el archivo bienvenida.msg de la siguientemanera:

15

Page 16: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

ftp > put bienvenida.msglocal: bienvenida.msg remote: bienvenida.msg200 PORT command successful150 Opening BINARY mode data connection for bienvenida.msg226 Transfer complete80 bytes sent in 0.00 secs (1474.1 kB/s)

Lo anterior indica que la transferencia se realizó con exito, para corrob-orarlo se listó otra vez los archivos del directorio:

ftp > ls200 PORT command successful150 Opening ASCII mode data connection for file list-rw-r--r-- 1 ftp ftp 80 Dec 17 16:04 bienvenida.msg226 Transfer complete

Se puede apreciar que directorio ahora no se encuentra vacío. Final-mente, con la finalidad de probar que los archivos una vez en el servidorno pueden ser borrados por el usuario anónimo, se intentó eliminar el archi-vo bienvenida.msg usando el comando delete:

ftp > delete bienvenida.msg550 bienvenida.msg: No such file or directory

El servidor ha impedido la eliminación del archivo bienvenida.msg, re-gresando como respuesta el mensaje de error no se ha encontrado el archivoo directorio.

2.3.2. Servidor HTTP

Como parte del proceso para levantar el servicio HTTP, fue necesarioinstalar el paquete del servidor web Apache que incluye Slackware comoparte de la distribución.

# installpkg httpd -2.2.8 -i486 -1. tgz

El proceso de instalación crea una estructura de archivos bajo /etc/httdcon las configuraciones por defecto para el servidor (muchas de ellas inicial-mente desactivadas). Siguiendo esta estructura de configuración propuestapor Slackware, se ha creado el archivo /etc/httpd/extra/httpd-ftpdir.confcon el siguiente contenido:

16

Page 17: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

1 # Configuraciones para el directorio ftp via web2 #3 Alias /ftp /home/ftp4 <Directory /home/ftp >5 AllowOverride None6 Options Indexes7 IndexOptions FancyIndexing8 Order allow ,deny9 Allow from all

10

11 # Autenticacion12 AuthType Basic13 AuthName "Directorio FTP"14 AuthBasicProvider file15 AuthUserFile /usr/local/apache/passwd/passwords16 Require valid -user17 </Directory >

Esta configuración permite que desde cualquier sitio se pueda acceder aldirectorio /home/ftp por medio del alias /ftp (directivas Order y Allow).También desabilita el poder de añadir configuraciones extras desde un archi-vo .htaccess, útil ya que el directorio /home/ftp es de acceso público através de protocolo FTP (directiva AllowOverride). Finalmente requiereque el acceso sea restringido a través un usuario y contraseña que exista enel archivo /usr/local/apache/passwd/passwords, por lo que fue necesariocrear dicho archivo usando el programa htpasswd:

# htpasswd -c passwd carlosNew password:Re -type new password:

También fue necesario modificar un par de lineas en el archivo /etc/httpd/http.confpara que incluyera el nuevo archivo de configuración:

...# Fancy directory listingsInclude /etc/httpd/extra/httpd -autoindex.conf

# Configuracion de acceso al directorio /home/ftpInclude /etc/httpd/extra/httpd -ftpdir.conf...

Finalmente se concedieron permisos de ejecución al guión de arranque/etc/rc.d/rc.httpd para que el servicio HTTP esté disponibles desde elinicio del sistema.

17

Page 18: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

Para comprobar el funcionamiento del servidor, se acceso desde un nave-gador a la dirección: http://192.168.2.10/ftp. Al tratar de acceder a este url,se desplegó un dialogo para introducir usuario y contraseña. Fue hasta que seproporcionaron estos datos que se mostró el listado de archivos disponiblesvía web.

3. Administración de seguridad

3.1. Implementación de firewall

Implementar un firewall, que sólo permita acceso a Apache ySSH desde una(s) IP(s) determinadas descartando (DROP) todoslos restantes paquetes. Verificar desde una máquina externa queel firewall funciona analizando que puertos permanecen abiertosutilizando alguna de las herramientas propuestas como nmap. Encaso de no disponer otra máquina para probar el firewall se puedeutilizar alguno de los sitios web que permiten verificar el accesocomo por ejemplo GRC (http://grc.com) a través de ShieldsUP!

Como resultado del ejercicio se debe incluir que pasos se hanseguido en la configuración, una descripción de cada regla y lasverificaciones realizadas de funcionamiento.

Para este ejercicio se eligieron tres equipos dentro de la red local. Elservidor http y ssh (192.168.2.10) y dos máquinas clientes (192.168.2.11y 192.168.2.13) para realizar las pruebas del firewall una vez configurado.Además de los servicios de http y ssh, el servidor tenía una serie de puertosabiertos como se puede observar en la salida del comando netstat:

$ netstat -lutActive Internet connections (only servers)Proto Recv -Q Send -Q Local Address Foreign AddressStatetcp 0 0 *:nfsd *:*LISTENtcp 0 0 *:time *:*LISTENtcp 0 0 *:47241 *:*LISTENtcp 0 0 *:x11 *:*LISTENtcp 0 0 *:auth *:*LISTENtcp 0 0 *:ssh *:*LISTENtcp 0 0 *:45336 *:*LISTEN

18

Page 19: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

tcp6 0 0 [::]: http [::]:*LISTENtcp6 0 0 [::]: x11 [::]:*LISTENtcp6 0 0 [::]: ssh [::]:*LISTENudp 0 0 *:biff *:*udp 0 0 *:nfsd *:*udp 0 0 *:time *:*udp 0 0 *:59831 *:*udp 0 0 *:37829 *:*

Para prevenir el acceso a otros puertos que no fueran el 80 (http) o el 22(ssh), se configuraron reglas de filtrado con iptables de la siguiente manera:

# iptables -A INPUT -p tcp --dport 22:80 -s 127.0.0.1 \> -d 192.168.2.10 -j ACCEPT# iptables -A INPUT -p tcp --dport 22:80 -s 192.168.2.11 \> -d 192.168.2.10 -j ACCEPT# iptables -A INPUT -p tcp --dport 22:80 -s 192.168.2.12 \> -d 192.168.2.10 -j ACCEPT# iptables -A INPUT -p tcp -d 192.168.2.10 -j DROP# iptables -A INPUT -p udp -d 192.168.2.10 -j DROP

Las primeras tres reglas permiten el acceso a los puertos 22 y 80 a lasdirecciones 127.0.0.1 (localhost), 192.168.2.11 y 192.168.2.12 cuandola dirección destino sea 192.168.2.10 (servidor). Las últimas dos lineasdesechan todos los paquetes entrantes por el protocolo tcp y udp. Con loanterior se consigue evitar que cualquier otra IP, que no sea las configuradasen las primeras tres líneas, pueda acceder a los puertos abiertos.

Para corroborar el funcionamiento del las reglas recién configuradas,se utilizó el programa nmap desde dos equipos diferentes. Desde el primerequipo, el cual fue configurado para poder acceder a los servicios (192.168.2.11),se obtuvieron los siguientes resultados:

$ nmap -sT 192.168.2.10Starting Nmap 4.53 ( http :// insecure.org ) at 2008 -12 -14 19:45 CSTInteresting ports on laptop (192.168.2.10):Not shown: 1655 filtered ports , 56 closed portsPORT STATE SERVICE22/ tcp open ssh37/ tcp open time80/ tcp open http

Nmap done: 1 IP address (1 host up) scanned in 5.093 seconds

19

Page 20: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

Se puede observar que de los 15 puertos abiertos en el servidor (listadoscon el comando netstat), solo se han conseguido detectar tres. Las reglas defiltrado configuradas han evitado revelar el resto de los puertos, a excepcióndel 37 (por alguna extraña razón escapo al filtrado).

Como segunda prueba se escogío una computadora cliente que no estu-viera en las primeras tres reglas (192.168.2.13), es decir que no deberíapoder acceder a ningún puerto del servidor.

$ nmap -sT 192.168.2.10Starting Nmap 4.53 ( http :// insecure.org ) at 2008 -12 -14 19:46 CSTNote: Host seems down. If it is really up , but blocking ourping probes , try -PNNmap done: 1 IP address (0 hosts up) scanned in 2.091 seconds

El resultado fue que nmap no detectó ningún puerto abierto en el sevidor,por lo que las reglas de filtrado cumplieron su proposito.

3.2. Análisis de seguridad

Tomando como referencia el capítulo de Administración deseguridad, realizar un análisis de seguridad completo de vuestramáquina centrado en la utilización de herramientas y archivosde información/configuración (generados por Uds o del sistema).Se deberá analizar: a) si han habido o no (intentos) intrusiones(comentando que se ha analizado y como han llegado a la con-clusión final), b) un análisis de seguridad de local, y c) un análisisde seguridad de red. El resultado final deberá ser un informe quepermita definir los puntos débiles y su corrección y si no los hayque se ha analizado para llegar a esta conclusión.

3.2.1. Detección de intrusiones

Lo primero que se hizo fue revisar las sesiones activas, haciendo uso delcomando who, y verificar que todos los usuarios fueran validos, no hubieranestado un autenticados un periodo anormal de tiempo y que no estuvierancorriendo software sospechoso. A continuación se presentan los resultados dela ejecución del comando who en el servidor:

# whocarvid pts/0 Dec 16 19:32 (desktop)

En esta salida no se aprecia ninguna evidencia clara de intrusión ya quecarvid es un usuario valido y desktop (192.168.2.11) una ubicación per-mitida.

20

Page 21: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

También se han revisado los procesos en ejecución del sistema, para estose usó el comando ps. Básicamente se puso atención en aquellos procesosque hubieran tomado mucho tiempo, hubieran iniciado a horas inusuales,tuvieran nombres desconocidos o consumieran gran porcentaje del CPU. Eneste análisis no se encontró nada fuera de lo común y que diera indicios deuna posible intrusión.

El siguiente paso fue indagar en búsqueda de huellas que un intrusopudiera haber dejado. Lo primero que se hizo fue verificar que el archivo/var/log/wtmp existiera, la falta de el sería una clara evidencia de intrusión.Una vez verificada la existencia de wtmp se corrió el comando last:

# lastcarvid pts/0 desktop Tue Dec 16 19:26 - 19:44(00:18)carvid pts/0 desktop Mon Dec 15 11:04 - 11:53(00:48)carvid pts/0 desktop Thu Dec 11 13:07 - 13:08(00:00)carvid pts/0 desktop Thu Dec 11 08:48 - 08:58(00:10)carvid pts/1 desktop Wed Dec 10 19:30 - 19:41(00:11)carvid pts/0 desktop Wed Dec 10 19:26 - 20:00(00:34)carvid pts/0 desktop Wed Dec 10 12:17 - 12:36(00:19)carvid pts/0 desktop Sat Dec 6 12:52 - 14:51(01:58)carvid pts/0 desktop Fri Dec 5 19:45 - 20:32(00:47)carvid pts/0 desktop Mon Dec 1 10:34 - 10:42(00:08)

En los resultados obtenidos tampoco se observó ninguna entrada sospe-chosa ya que tanto los tiempos de acceso, como la permanencia en el sistemafueron normales en relación a las actividades de los usuarios.

Además de los resultados de last también se revisaron los archivos/var/log/syslog y /var/log/messages en búsqueda que cosas fuera delo ordinario, como fallos en el inicio de sesión o intentos de su por parteusuarios no autorizados. Esta revisión tampoco mostró datos que implicaranalgún intento de intrusión.

Finalmente se hizo una exploración del sistema de archivos, revisandotodos aquellos que hubieran sido modificados en los últimos días usando elcomando find. Se puso especial atención en los resultados que involucraranlos directorios /bin, /sbin, /usr/bin y /usr/sbin ya que pudieran ser sín-toma de la implantación de un troyano. En este análisis tampoco se detectóuna actividad sospechosa.

21

Page 22: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

La conclusión de este análisis es que es poco probable que hubiera unaintrusión en el sistema. Cabe hacer mención que no existe la completa se-guridad de que esto sea así, ya que cada uno de los métodos presenta debil-idades propias (p.e. eliminación de entradas en los logs, archivos, alteraciónde fechas, etc) y que un atacante experimentado conoce perfectamente.

3.2.2. Seguridad Local

Se hizo una revisión de los siguientes puntos en el sistema Slackware(192.168.2.10):

Característica DisponibilidadBIOS con contraseña noBootloader con contraseña noReinicio con CTRL+ALT+DEL síLilo.conf seguro (600) no (644)Contraseñas en shadow síContraseñas encriptadas con MD5 síArchivos .rhost noArchivo /etc/host.equiv noArchivo /etc/host.lpd noModulos PAM noAuditoria de cambios no

De la tabla anterior las vulnerabilidades más urgentes de solucionar pre-sentadas por el sistema son: la carencia de contraseña para entrar a la con-figuración del BIOS, la posibilidad de reiniciar el equipo con la secuencia deteclas CTRL+ALT+DEL y la posibilidad de especificar parámetros de inicioen el arranque del sistema con lilo.

Además sería muy conveniente implementar un mecanismo de auditoríade cambios que permitiera evaluar si el sistema ha sufrido alguna alteraciónrelacionada con la introducción de troyanos o puertas traseras (backdoors).

3.2.3. Seguridad de Red

En este rubro se analizaron los puertos que el sistema tenía abiertos, yasea a través de inetd o a través de los guiones de arranque específicos paraciertos daemons. La siguiente tabla muestra los puertos encontrados así comouna breve descripción de su función.

22

Page 23: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

Puerto Servicio Descripción21/tcp ftp Protocolo de transferencia de archivos (proftpd daemon)22/tcp ssh Protocolo Secure Shell (sshd daemon)37/tcp time Protocolo time80/tcp http Protocolo de transferencia de hipertexto (httpd daemon)111/tcp sunrpc Servicio de mapeo de números RPC113/tcp auth Protocolo ident (identd daemon)512/udp biff Sistema de notificaciones de correo para UNIX (comsat daemon)

Además de estos puertos, también existen otra serie de puertos relaciona-dos con los programas RPC (como los servicios NFS y NIS). Haciendo usodel programa rpcinfo se obtuvieron los siguientes resultados:

# rpcinfo -pprogram vers proto port100000 2 tcp 111 portmapper100005 1 udp 59831 mountd100005 1 tcp 47241 mountd100005 2 udp 59831 mountd100005 2 tcp 47241 mountd100005 3 udp 59831 mountd100005 3 tcp 47241 mountd100021 1 udp 37829 nlockmgr100021 3 udp 37829 nlockmgr100021 4 udp 37829 nlockmgr100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100021 1 tcp 45336 nlockmgr100021 3 tcp 45336 nlockmgr100021 4 tcp 45336 nlockmgr100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100024 1 udp 39385 status100024 1 tcp 47565 status100004 2 udp 1011 ypserv100004 1 udp 1011 ypserv100004 2 tcp 1014 ypserv100004 1 tcp 1014 ypserv100009 1 udp 1013 yppasswdd100007 2 udp 1017 ypbind100007 1 udp 1017 ypbind100007 2 tcp 1020 ypbind100007 1 tcp 1020 ypbind

Como resultado de este análisis, algunas acciones se pueden tomar paramejorar la seguridad de la red:

23

Page 24: Administración de red servidores y seguridad

Administración de red, servidores y seguridad

Configurar el servicio FTP para que solo acepte las conexiones delusuario anónimo, los usuarios del sistema pueden utilizar sftp que esmás seguro.

Apagar los servicios time y biff los cuales no son utilizados y no esnecesario tener abiertos.

Valorar el uso de los servicios NFS y NIS por los riesgos de seguridadque pueden implicar

Realizar una buena configuración de reglas con iptables para nocualquier usuario pueda alcanzar los puertos abiertos

24