Centos Linux- Guia de Seguridad v3 - Apuntes Para El Curso

46
CET. INFORMÁTICA García Avilés 408 y Luque Piso 6 Oficina 602 Teléfono: 593-4-2323360 - [email protected] www.cetinformatica.com CENTOS LINUX GUIA DE SEGURIDAD Basado en el documento oficial “CENTOS Security Guide” CENTOS LINUX Guía de Seguridad Página 1/46

description

Linux

Transcript of Centos Linux- Guia de Seguridad v3 - Apuntes Para El Curso

  • CET. INFORMTICA

    Garca Avils 408 y Luque Piso 6 Oficina 602

    Telfono: 593-4-2323360 - [email protected] www.cetinformatica.com

    CENTOS LINUX

    GUIA DE SEGURIDAD

    Basado en el documento oficial CENTOS Security Guide

    CENTOS LINUX Gua de Seguridad Pgina 1/46

  • Control de la seguridad

    El control de la seguridad de la computadora est dividida en tres categoras maestras:

    Fsica Tcnica Administrativa

    Estas tres grandes categoras definen los objetivos para implementar la seguridad apropiada. Control de la seguridad fsica

    Es el control de acceso fsico al lugar donde se encuentra la computadora.

    Control de la seguridad tcnico

    Utiliza la tecnologa para controlar el acceso a la red y a los datos almacenados en las computadoras.

    Control de la seguridad administrativa

    Define el factor humano de la seguridad. Involucra a todo el personal de una organizacin. Determina quienes tienen acceso y a qu recursos.

    Bsicamente en este curso se estudiar el control de seguridad tcnica. Configuracin de la seguridad en Linux

    Actualizacin del sistema operativo

    A medida que se van descubriendo vulnerabilidades en el sistema, el software que se ve afectado, requiere que sea actualizado, para reducir cualquier riesgo en la seguridad. Para una actualizacin automtica de todo el sistema operativo a travs de Internet, use el comando yum.

    yumyupdate

    Seguridad del Host La seguridad de una infraestructura de computadoras en una organizacin empieza por la seguridad de la computadora misma (host). Despus de todo, una red de computadoras es tan segura como la debilidad que presente uno de sus host.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 2 de 46

  • Evaluacin de la seguridad del Host

    Para evaluar la seguridad del Host, deben tomarse en cuenta los siguientes puntos:

    La seguridad del BIOS y del Boot loader (grub) La seguridad del password de los usuarios El control administrativo de usuarios y recursos La disponibilidad del los servicios para redes La configuracin del Firewall El uso de herramientas de comunicacin con

    seguridad mejorada.

    La seguridad del BIOS y del Boot loader

    El Setup BIOS En el setup BIOS, el usuario puede cambiar la configuracin, por ejemplo: cambiar el rden de arranque de los dispositivos, y hacer que la computadora arranque desde un CD o un disquette. De esta manera podra iniciar el sistema en modo de rescate o en modo mono usuario. El ingreso al setup BIOS generalmente se lo hace, pulsando la tecla suprimir (del). Segn la marca de la tarjeta madre, tambin se puede ingresar pulsando la tecla F2. Asegure el acceso al Setup BIOS, estableciendo un password. El boot loader GRUB Es un administrador o gestor de arranque mltiple, desarrollado por el proyecto GNU, derivado del GRand Unified Bootloader (GRUB; en espaol: Gran Gestor de Arranque Unificado), que se usa comnmente para iniciar uno de dos o ms sistemas operativos instalados en un mismo computador. Por qu hay que asegurar el boot loader?

    Para prevenir el acceso en el modo mono

    usuario. Para prevenir el acceso a la consola de Grub,

    donde se puede cambiar su configuracin.

    Iniciar linux en modo Mono usuario

    Encienda la computadora

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 3 de 46

  • Cuando se inicie el conte del tiempo para cargar Linux, presione la telca Enter, para abrir la pantalla del GRUB.

    En esta pantalla, se puede ingresar al modo de edicin de comandos, pulsando la letra e, para modificar los argumentos que se pasan al kernel en el arranque, pulsando la letra a , y para ingresar a la lnea de comandos del GRUB, pulsando la letra c Pulse la letra e Usando las teclas con flechas, seleccione la lnea que inicia con la palabra Kernel, pulse la tecla e nuevamente y al final de la lnea de texto, agregue la palabra single. Luego pulse la tecla Enter para registrar el cambio. Pulse b para que arranque Linux en el modo mono usuario. En este modo el usuario ingresa con todos los permisos del root.

    Para asegurar el Boot Loader (Grub) con una clave:

    Ingrese al sistema como root y ejecute el comando grubmd5crypt para generar la clave encriptada.

    /sbin/grubmd5crypt Password:Retypepassword:

    $1$/WInE/$1Upsg4cx3POP2KzyVabVQ0

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 4 de 46

  • La cadena de caracteres que se obtuvo es un password-Hash. Abra con el vi el archivo de configuracin del grub y escriba despus de la lnea timeout, el comando password:

    vi/boot/grub/grub.confpasswordmd5

    Reemplace por el password hash que obtuvo. Reinicie el sistema. Ahora si intenta ejecutar comandos con el grub, tendr primero que ingresar la clave del GRUB.

    Control de acceso a la consola

    Cuando los usuarios normales, que no son root, acceden al sistema desde la consola principal, estos tienen permisos especiales:

    Pueden reiniciar el equipo. Pueden correr ciertos programas que de otra

    manera estaran impedidos de correrlos. Pueden tener acceso a ciertos archivos

    especiales de las unidades de almacenamiento como disquetera, pendrive, CD ROM, que de otra manera no podran acceder.

    Desactivar el reinicio del sistema mediante Ctrl+Alt-suprimir

    Por default est activada la opcin para reiniciar el sistema usando las teclas atl+ctrsup, desde la consola principal. Para desactivar esta opcin abra el archivo /etc/inittab:

    vi/etc/inittab

    Adelante de la lnea de texto que aparece a continuacin, escriba el carcter #, para convertirlo en un comentario. Debe reiniciar el equipo.

    ca::ctrlaltdel:/sbin/shutdownt3rnow#ca::ctrlaltdel:/sbin/shutdownt3rnow

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 5 de 46

  • Si se desea que esta opcin est disponible slo a ciertos usuarios, borre el carcter #, agregue la opcin a en la lnea de texto y agregue el nombre del usuario en el archivo /etc/shutdown.allow. Este archivo hay que crearlo.

    ca::ctrlaltdel:/sbin/shutdownat3rnow

    En el archivo /etc/shutdown.allow escriba la lista de usuarios, uno en cada lnea:

    vi/etc/shutdown.allowrootluismike

    Desactivar ejecucin de aplicaciones en la consola

    Ejecute los comandos que se indican a continuacin, para evitar la ejecucin de los comandos: poweroff,halt, reboot, por parte de los usuarios desde la consola principal:

    rmf/etc/security/console.apps/poweroffrmf/etc/security/console.apps/haltrmf/etc/security/console.apps/reboot

    Si desea desactivar todos los comandos de consola:

    rmf/etc/security/console.apps/*

    Agregue el carcter #, delante de cada lnea de texto que contenga la lnea de texto: pam_console.so, en cada uno de los archivos que se encuentran dentro del directorio /etc/pam.d

    Seguridad del password de usuarios del sistema

    El password es el mtodo principal para verificar la identidad de un usuario. De aqu que la seguridad del password es muy importante. Para mayor seguridad, la instalacin por default de Linux, configur el sistema para que utilice MD5 y shadow password. Los passwords son encriptados usando el algoritmo MD5. Shadow password utiliza un archivo que solo el root puede leer. De esta manera en ms difcil

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 6 de 46

  • que un usuario sin privilegios de root, obtenga ese archivo con la lista de passwords, para luego romper las claves con algn software especial para el efecto. Archivos que guardan la informacin del usuario y sus passwords:

    /etc/passwd/etc/shadow

    El archivo /etc/passwd, no guarda el password, en cabio el archivo shadow si lo guarda y est encriptado. Adems es de slo lectura para el usuario root Para hacer ms difcil la tarea de romper una clave, estas deberan ser de por lo menos 8 caracteres. Para forzar a los usuarios a crear passwords de 8 caracteres ms, abra el archivo /ect/login.defs y cambie el valor del la directiva PASS_MIN_LEN de 5por 8.

    vi/etc/login.defsPASS_MIN_LEN8

    En el archivo login.defs tambin se puede establecer el tiempo de vigencia de una clave

    Seguridad del acceso como usuario root

    El usuario root es el usuario con todos los privilegios para administrar el Host. Se puede tambin designar a uno o varios usuarios para que tengan algunos privilegios del root, usando los comandos su sudo. En la medida de lo posible nunca ingrese como usuario root. Ingrese como otro usuario y luego ejecute el comando susudo

    Uso del comando su

    Este comando le pide que ingrese el password del root. Una vez ingresado el password, el shell del usuario es cambiado por el shell del root. El usuario tiene los mismos privilegios del root. El comando su,puede ser ejecutado por cualquier usuario registrado en el sistema.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 7 de 46

  • Para mayor seguridad, se puede registrar a los usuarios que pueden ejecutar el comando su, agregndolos al grupo especial llamado wheel. Use el comando usermod.

    usermodGwheel Por ejemplo:

    usermodGwheelmike

    El usuario mike debe ser un usuario registrado en el sistema. Ahora hay que configurar el comando su para que sea ejecutado por los miembros del grupo wheel Abra el archivo /etc/pam.d/su y descomente la lnea que se indica a continuacin:

    vi/etc/pam.d/su #authrequiredpam_wheel.souse_uid

    Uso del comandosudo

    El comandosudo permite ejecutar una orden administrativa en el mismo shell del usuario y no en el shell del root. El usuario deber estar agregado en el archivo /etc/sudoers para que pueda hacer uso del comando. Ejecute el comando visudo y luego agregue al final, la siguiente lnea para el usuario juan:

    visudojuanALL=(ALL)ALL

    Se establece permiso para que el usuario 'juan', en cualquier host, como cualquier usuario, ejecute cualquier comando, por supuesto incluyendo los de root. En general, la sintaxis es:

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 8 de 46

  • usuario/grupohost=(usuario)comando

    La primera vez que es ejecutado el comando sudo por el usuario, si han pasado 5 minutos desde la ltima ejecucin de un comando, se le pide que ingrese su password correspondiente. NOTA: Para que el usuario pueda ejecutar comandos del root, deber usar la ruta completa del comando, por ejemplo, para ver el estado de un servicio:

    sudo/sbin/servicehttpdstatus Ejemplos demostrativos: ) Permiso para los usuarios mike y john, en

    cualquier host, cmo usuario root, ejecutar cualquier comando

    mike,johnALL=(root)ALL

    ) Permiso para el grupo operadores, desde

    cualquier host, sin necesidad de password, ejecutar los comandos del directorio /sbin:

    %operatorALL=NOPASSWD:/sbin/

    Para mayor informacin consultes la ayuda de sudo y sudoers

    Deshabilitar el acceso al sistema como usuario root.

    Si ya ha asignado a uno o varios usuarios que puedan ejecutar comandos del root con el comando sudo, puede deshabilitar el acceso al sistema al usuario root. Existen dos maneras de deshabilitar el acceso al sistema como usuario root.

    Deshabilitar el shell para el usuario root Deshabilitar el login al root.

    Para deshabilitar el shell para el usuario root:

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 9 de 46

  • vi/etc/passwd ubique la lnea del usuario root cambie /bin/bash por /bin/nologin Esta configuracin deniega el acceso al shell para usuario root mediante el uso de su sshtelnet(putty),peroel usuario sudo si puede ejecutar comandos del root.

    Deshabilitar el login al root

    Respalde el archivo /etc/securetty:

    cp/etc/securetty/etc/securetty.BAK

    Borre el contenido del archivo /etc/securetty:

    echo>/etc/securetty

    El archivo securetty, tiene una lista de todos los dispositivos (consola, ttys, etc) donde el root tiene permitido ingresar. Si elimina toda la lista de dispositivos, entonces el root slo puede tener acceso remoto va sshtelnet.

    Deshabilitar el acceso al root va sshtelnet

    Para prevenir que el usuario root ingrese usando ssh Abra el archivo /etc/ssh/sshd_config , descomente la lnea con la la directiva PermitRootLogin,cambie el valor de yes a no,y reinicie el serviciosshd

    vi/etc/ssh/sshd_config#PermitRootLoginyesPermitRootLoginnoservicesshdrestart

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 10 de 46

  • Cambio del puerto de sshd-telnet

    Como medida de seguridad adicional, cambie el puerto del servidor SSH de 22 por otro nmero. Abra el archivo de configuracin. y cambie el nmero de puerto

    vi/etc/ssh/sshd_config#Port22Port3020

    Seguridad del servidor

    Cuando el sistema es usado como un servidor pblico, se deben tomar todas las precauciones para endurecerlo (hardening) y que resista los posibles ataques. Cmo endurecer un servidor.

    Mantenga actualizado el software Utilice protocolos seguros Instale cada servicio en una mquina diferente. Monitoree los servidores por posibles actividades

    maliciosas. Control de acceso a los servicios con TCP wrapers y xinetd

    TCP wrapers sirve para controlar el acceso a una variedad de servicios. Los beneficios que ofrece TCP wrapers son mejorados si se usa en conjunto con xinetd. Xinetd es un super servidor que provee de control adicional para el acceso y utilizacin de algunos servicios. TCP wraper utiliza dos archivos de configuracin:

    /etc/hosts.allow (permitir) /etc/hosts.deny (denegar)

    En general la sintaxis es: : : :

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 11 de 46

  • Cuando llega una solicitud para un servicio, TCP wraper primero lee el archivo hosts.allow para ver a que hosts les permite el acceso y luego lee el archivo hosts.deny para ver a que hosts les niega el acceso. El demonio syslogd, registra el nombre del host y el servicio que se accede, en los archivos /var/log/secure /var/log/messages Ejemplos demostrativos Archivo hosts.allow para permitir el acceso al servicio ftp a todos los hosts de una subred:

    vsftpd:192.168.0.0

    Archivo hosts.deny para denegar el acceso al servicio ftp a un host mediante su IP

    vsftpd:192.168.0.3

    Un ejemplo en el que se registra el intento de acceso en un archivo log, llamado alertas. En este archivo se registra la fecha, el host y el servicio que se quiso accesar. vsftpd:192.168.0.3:spawn/bin/echo`/bin/date`accesodenegado%h%d>>/var/log/alertastouch/var/log/alertasservicexinetdrestart

    Verificacin de los puertos que escuchan

    Los servidores utilizan puertos para que los clientes a travs de estos puedan establecer sesin. Estos puertos estn representados por nmeros. Cada servicio est configurado para que escuche en un puerto determinado. Por ejemplo para el servicio ftp, el puerto es el 21. Este nmero de puerto puede ser cambiado por el administrador. Como administrador debemos saber qu servicios estn corriendo y qu puertos se estn utilizando. El archivo /etc/services muestra un lista de los servicios que estn registrados en el servidor. Para ver los puertos que estn abiertos en un hosts particular utilice nmap:

    yuminstallnmap

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 12 de 46

  • nmapsTOlocalhost

    Despus de ejecutar nmap, aparece una lista donde hay un puerto desconocido (unknown), por ejemplo con el nmero 727, abierto por un servicio. Ejecute el comando netstat para averiguar ms sobre el puerto.

    netstatanp|grep727 Salida: tcp000.0.0.0:7270.0.0.0:*LISTEN1817/rpc.statd

    rpc.statd es un demonio del servcio NFS. Tambin puede usar lsof

    lsofi|grep727

    Qu es un Firewall

    Un firewall es un dispositivo de seguridad que acepta o deniega paquetes que le llegan a una estacin de trabajo a un servidor. Tambin un firewall puede ser creado para filtrar el trfico entre dos mas redes. El Firewall puede ser un dispositivo fsico o un software sobre un sistema operativo. Al Firewall que filtra paquetes entre dos redes, debemos verlo como una caja con dos o mas interfaces de red en la que se establecen unas reglas de filtrado con las que se decide si una conexin determinada puede establecerse o no. Incluso puede realizar modificaciones sobre los paquetes, como por ejemplo NAT. (Network Adreess Translation)

    Implementacin de un Firewall con iptables

    IPtables es un sistema de firewall vinculado al kernel de linux. Realmente lo que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que se aaden, borran, o crean reglas. Hay dos maneras de implementar un firewall:

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 13 de 46

  • 1) Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente.

    2) Poltica por defecto DENEGAR: todo esta

    denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente.

    Cmo asegurar un Servidor mediante el Firewall

    En el servidor, slo deben estar abiertos los puertos necesarios para que los usuarios accedan a los servicios respectivos. Por ejemplo si se trata de un servidor Web, slo debe estar abierto el puerto 80. Si se quiere administrar el servidor de manera remota mediante ssh, entonces debe abrirse el puerto 22. Tambin como medida de seguridad adicional, se puede indicar que slo acepta llamada al puerto 22 de una mquina en particular, mediante su nmero IP. Las reglas se escriben una por una. A continuacin el seudocdigo para asegurar el servidor Web, del ejemplo. Todoloqueingrese,DenegarTodoloquesalga,DenegarTodoloquepase,DenegarLoqueingreseporeth0dirigidoalpuerto80,AceptarLoquesalgaporeth0desdeelpuerto80,AceptarLoqueingreseporeth0dirigidoalpuerto22,AceptarLoquesalgaporeth0desdeelpuerto22,Aceptar.

    Cmo funciona iptables

    Una mquina linux con soporte para iptables, implementa reglas aplicadas para los paquetes que llegan, salen pasan. Las reglas de firewall estn a nivel del kernel. Al kernel lo que le llega es un paquete y tiene que decidir que hacer con l. El kernel lo que hace es, dependiendo de, si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete segn mande el firewall.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 14 de 46

  • Este es el camino que seguira un paquete en el kernel:

    Trafico Entrada | | V +----------+ |PREROUTING| +----------+ | raw | +-------------+ --> Trafico | mangle | | nat | +-------------+ | | V Trafico Salida

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 15 de 46

  • En la grfica se observan las tablas (tables) y cadenas (chains). Las cadenas estn asociadas a las tablas, cada una asociada a un cierto tipo de trfico.

    Tabla Labor raw Alteracin de bajo nivel del paquete nat Cambio del encabezado del paquete mangle Alteraciones especializadas del

    paquete filter Filtrado de paquete

    Chain Labor PREROUTING El trafico de entrada a la maquina

    (incluyendo la entrada destinada al firewall) antes que suceda el ruteo.

    INPUT Trfico destinado al firewall FORWARD Trfico que pasa no destinado al

    Firewall OUTPUT Trfico generado localmente por el

    Firewall. POSTROUTING Trafico de salida (incluye trfico

    generado localmente por el firewall) El trfico de paquetes se encadena mediante los chains (cadenas) y fluye en serie a travs de cada una de las tablas. Por ejemplo en la cadena PREROUTING, estn las tablas raw,mangleynat. El trfico de paquetes que fluye a travs de esta cadena (chain), pasar por cada una de estas tablas de manera secuencial. Por ejemplo, veamos cual es el flujo que sigue un paquete que es generado por la maquina y dirigido hacia la misma mquina.

    1) Paquete generado por un proceso local / Kernel 2) Routing decision 3) OUTPUT: raw 4) OUTPUT: mangle 5) OUTPUT: nat 6) OUTPUT: filter 7) POSTROUTING: mangle 8) POSTROUTING: nat 9) PREROUTING: raw 10) PREROUTING: mangle 11) PREROUTING: nat 12) Routing decision 13) INPUT: mangle 14) INPUT: filter 15) Paquete entregado a un proceso local /kernel

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 16 de 46

  • Si se quiere permitir el flujo de paquetes que se describi anteriormente, entonces no deben haber reglas que prohban el trfico en ninguna de las cadenas.

    Las reglas Dada una cierta cadena/tabla (chain/table), es necesario utilizar reglas para ejecutar una accin sobre el paquete seleccionado. No todas las reglas se aplican a todas las cadenas. Por ejemplo, una regla que especifique la interface de salida para un paquete, no se aplica a la cadena PREROUTING, porque en este punto aun no se ha tomado la decisin de rutear.

    Regla Descripcin pPROTOCOL Especifica un protocolo IP

    (TCP/UDP) sADDRESS Especifica una direccin fuente dADDRESS Especifica una direccin destino iINTERFACE Especifica una interface local de

    trfico de entrada oINTERFACE Especifica una interface local de

    trfico de salida El Target Un target especifica una accin que debe ser tomada cuando un paquete concuerda con una regla.

    Target Accin ACCEPT Permite el pasar paquete DROP Instruir a netfilter ignorar el paquete QUEUE Pasa el paquete al espacio de

    usuario RETURN Parar la cadena y reasumir en la

    siguiente regla de la cadena anterior. En la prctica se utilizar ACCEPT DROPSntaxis de las reglas La sintaxis general para escribir una regla es: iptablest[TABLE]A[CHAIN][RULES]j[TARGET]

    t=table(tabla)A=Append(Agregarlaregla)j=jump(brincar)

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 17 de 46

  • Reglas IPTABLES para asegurar el servidor Web

    Para los siguientes ejercicios se utilizar el banco de pruebas que se describe en el diagrama a continuacin:

    ----------------------------------------------------------------------------------------

    PC windows

    Servidor Web

    eth1

    eth0

    IP: 192.168.0.3 eth0: 192.168.0.98 eth1: 172.16.0.100

    LAN

    Internet

    ----------------------------------------------------------------------------------------

    Para empezar desde cero, borre el archivo /etc/sysconfig/iptables. Hasta este momento el Servidor Web puede responder a los ping que son enviados desde cualquier computadora en la LAN, tambin responde a los ping de una computadora en Internet

    ping192.168.0.98Haciendopinga192.168.0.98con32bytesdedatos:Respuestadesde192.168.0.98:bytes=32tiempo=1msTTL=64Respuestadesde192.168.0.98:bytes=32tiempo=1msTTL=64Respuestadesde192.168.0.98:bytes=32tiempo=1msTTL=64Respuestadesde192.168.0.98:bytes=32tiempo=1msTTL=64Estadsticasdepingpara192.168.0.98:Paquetes:enviados=4,recibidos=4,perdidos=0(0%perdidos),Tiemposaproximadosdeidayvueltaenmilisegundos:Mnimo=1ms,Mximo=1ms,Media=1ms

    ping172.16.0.100

    Tambien, se puede tener acceso a la pgina inicial desde cualquier computadora en la LAN, desde Internet:

    http://192.168.0.98

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 18 de 46

  • Desde Internet:

    http://172.16.0.100

    En general, cualquier servicio que se ejecute en el servidor, estar disponible para las computadoras en la LAN y en el Internet Compruebe tambin, que se puede acceder al servico sshyftpdentro de la LAN y en el Internet. Bloquear todo lo que entre, salga y pase por el servidor Las reglas se pueden escribir una por una, las que se Irn agregando. Cuando hay muchas reglas, es mejor crear un shell script donde estn escritas la reglas que se aplicarn. Antes de empezar a escribir nuestras propias reglas, hay que eliminar y limpiar cualquier regla que estuviese definida.

    iptablesFiptablesZiptablesXiptablestnatF

    Para bloquear todo, se deben crear reglas bsicas tambin llamadas reglas por default. Para este ejemplo, se usarn reglas que ignoren cualquier trfico que sea dirigido al Servidor (INPUT) que sea destinado a otra mquina (FORWARD) que salga del Servidor (OUTPUT) . De esta manera se bloquea todo, y se tendrn que definir las reglas que permitan aceptar el trafico que se requiere.

    iptablesPINPUTDROPiptablesPFORWARDDROPiptablesPOUTPUTDROP

    NOTA: El orden al escribir las reglas de firewall es determinante. Normalmente cuando hay que decidir qu se hace con un paquete, se va comparando con cada regla hasta que se encuentra una que le concuerda (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan para nada.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 19 de 46

  • El Servidor Web ahora ya no podr responder a los ping de las computadoras en la LAN, porque ha sido completamente bloqueado.

    ping192.168.0.98 Haciendopinga192.168.0.98con32bytesdedatos:Tiempodeesperaagotadoparaestasolicitud.Tiempodeesperaagotadoparaestasolicitud.Tiempodeesperaagotadoparaestasolicitud.Tiempodeesperaagotadoparaestasolicitud.Estadsticasdepingpara192.168.0.98:Paquetes:enviados=4,recibidos=0,perdidos=4(100%perdidos),

    Tampoco podr accederse a ningn servicio que est corriendo. Compruebe tratando de acceder la pgina Web de inicio y al servicio ssh, ftp, dentro de la LAN como en el Internet. Permitir ping solo por eth0 iptablesAINPUTpicmpieth0jACCEPTiptablesAOUTPUTpicmpoeth0jACCEPT Permitir acceder al servicio ssh slo por eth0 iptablesAINPUTptcpieth0dport22jACCEPTiptablesAOUTPUTptcpoeth0sport22jACCEPTiptablesAINPUTpudpieth0dport22jACCEPTiptablesAOUTPUTpudpoeth0sport22jACCEPT

    Con estas reglas no se podrn tener acceso desde la Internet al servicio ssh. Permitir el acceso al serivico http slo por eth0

    iptablesAINPUTptcpieth0dport80jACCEPTiptablesAOUTPUTptcpoeth0sport80jACCEPTiptablesAINPUTpudpieth0dport80jACCEPTiptablesAOUTPUTpudpoeth0sport80jACCEPT

    Con estas reglas no se podr tener acceso desde Internet al servicio http. Permitir acceder al servicio ssh slo por eth0 nicamente a la maquina con IP 192.168.0.3 iptablesAINPUTs192.168.0.3ptcpieth0dport22jACCEPTiptablesAOUTPUTd192.168.0.3ptcpoeth0sport22jACCEPT

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 20 de 46

  • iptablesAINPUTs192.168.0.3pudpieth0dport22jACCEPTiptablesAOUTPUTd192.168.0.3pudpoeth0sport22jACCEPTPermitir el acceso al serivicio ftp slo por eth0

    iptablesAINPUTptcpieth0dport21jACCEPTiptablesAOUTPUTptcpoeth0sport21jACCEPTiptablesAINPUTpudpieth0dport21jACCEPTiptablesAOUTPUTpudpoeth0sport21jACCEPTPermitir acceder al servicio ssh slo por eth1 nicamente la maquina con IP 192.168.2.200 iptablesAINPUTs192.168.2.200ptcpieth1dport22jACCEPTiptablesAOUTPUTd192.168.2.200ptcpoeth1sport22jACCEPTiptablesAINPUTs192.168.2.200pudpieth1dport22jACCEPT

    Hacer permanente las reglas del Firewall

    serviceiptablessave De esta manera se crea automticamente el archivo /etc/sysconfig/iptables

    Creacin de un Shell Script

    En los casos que se requiera probar diferentes configuraciones, se puede crear un archivo con las reglas, como se indica a continuacin: vimi_firewall #!/bin/sh##LimpiarcualquierreglaexistenteiptablesFiptablesZiptablesXiptablestnatF#DenegartodoiptablesPINPUTDROPiptablesPFORWARDDROPiptablesPOUTPUTDROP#Aceptarsshsloa192.168.0.3iptablesAINPUTs192.168.0.3ptcpieth0dport22jACCEPT

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 21 de 46

  • iptablesAOUTPUTd192.168.0.3ptcpoeth0sport22jACCEPTiptablesAINPUTs192.168.0.3pudpieth0dport22jACCEPTiptablesAOUTPUTd192.168.0.3pudpoeth0sport22jACCEPT#Aceptarhttpporeth0 iptablesAINPUTptcpieth0dport80jACCEPTiptablesAOUTPUTptcpoeth0sport80jACCEPTiptablesAINPUTpudpieth0dport80jACCEPTiptablesAOUTPUTpudpoeth0sport80jACCEPT#Permintirftpsoloporeth0iptablesAINPUTptcpieth0dport21jACCEPTiptablesAOUTPUTptcpoeth0sport21jACCEPTiptablesAINPUTpudpieth0dport21jACCEPTiptablesAOUTPUTpudpoeth0sport21jACCEPT#Permitirsshporeth1unicamentealaIP192.168.2.200iptablesAINPUTs192.168.2.200ptcpieth1dport22jACCEPTiptablesAOUTPUTd192.168.2.200ptcpoeth1sport22jACCEPTLuego de crear el archivo, hay que darle permiso de ejecucin:

    chmodu+xmi_firewall

    Antes de probar una configuracin hay que borrar el archivo /etc/sysconfig/iptables, si este existe y luego reiniciar IPTABLES.

    serviceiptablesrestart Para ejecutar el script:

    ./mi_firewall Si estamos satisfechos y deseamos hacer permanente el Firewall y que cargue al arrancar el sistema, entonces ejecute:

    serviceiptablessave

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 22 de 46

  • Seguridad del permetro de la Red

    En un esquema tpico para proteger a una red local enlazada a Internet, el firewall se coloca entre el router y el switch.

    Firewall Switch

    PC #1 PC #2

    Gateway o

    Router

    Servidor Web

    Internet

    Dependiendo de las necesidades de cada red, puede colocarse uno o ms firewalls para establecer distintos permetros de seguridad en torno a un sistema. Es frecuente tambin que se necesite exponer algn servidor a internet (como es el caso de un servidor Web, un servidor de correo, etc..), y en esos casos, obviamente en principio se debe aceptar cualquier conexin a ellos. Lo que se recomienda en esa situacin es situar ese servidor en un lugar aparte de la red local, el que denominamos DMZ o zona desmilitarizada. El firewall tiene entonces tres interfaces de red:

    Firewall Switch

    PC #1 PC #2

    Gateway o

    Router

    DMZ Server

    Internet

    En la zona desmilitarizada se pueden colocar tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a l, la red local sigue protegida por el firewall. Sea el tipo de firewall que sea, generalmente no tendr mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 23 de 46

  • Diagrama del Banco de pruebas -------------------------------------------------------------------------------------------------

    Switch

    Linux Gateway

    eth1

    eth0

    ISP_GW

    eht0

    eth1

    WEB SERVER

    eht0

    IP: 192.168.0.3 GW 192.168.0.98

    DNS: 172.16.0.101

    eth0: 192.168.0.98 eth1: 172.16.0.100

    eth0: 172.16.0.101 eth1: 192.168.2.100

    eth0: 192.168.2.200

    PC windows

    Servidor FTP

    IP: 192.168.0.208 GW: 192.168.0.98

    Internet LAN

    ------------------------------------------------------------------------------------------------- Caso1: Permitir a los usuarios el acceso a Servidores Web en Internet

    Para que los usuario de una LAN slo puedan tener acceso a los Servidores Web en Internet, hay que permitir el acceso al puerto TCP 80 y tambin al servidor DNS en el puerto 53. A continuacin el Script: vimi_firewall_2 #!/bin/sh##LimpiarcualqueirreglaexisteneteiptablesFiptablesZiptablesX

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 24 de 46

  • iptablestnatF#DenegartodoiptablesPINPUTDROPiptablesPFORWARDDROPiptablesPOUTPUTDROP#PermitiraccesoaservidoresWebenInternetiptablesAFORWARDptcpdport80jACCEPTiptablesAFORWARDpudpdport80jACCEPTiptablesAFORWARDptcpsport80jACCEPTiptablesAFORWARDpudpsport80jACCEPT#PermitirconsultasalservidorDNSiptablesAFORWARDptcpdport53jACCEPTiptablesAFORWARDpudpdport53jACCEPTiptablesAFORWARDptcpsport53jACCEPTiptablesAFORWARDpudpsport53jACCEPT#HacerNATsobreeth1paraquelosusuariosenlaLAN#tenganaccesoalosservidoresWebenInternet.iptablestnatAPOSTROUTINGoeth1jMASQUERADE Pruebe que desde la PC Windows slo puede navegar en la Web y no pude ingresar a otro servicio cmo por ejemplo ftp. http://ws1.servidor.com Permitido Desde la consola de Windows ftpws1.servidor.com Negado

    Caso 2: Administracin remota del Firewall va ssh

    Se desea que un administrador dentro de la LAN y un administrador remoto, en Internet puedan tener acceso al Firewall va SSH. Para mayor seguridad, se permitir el acceso slo desde una IP especfica. Dentro de la LAN se permitir a la IP 192.168.0.3 y en Internet a la IP 192.168.2.200 vimi_firewall_3#!/bin/sh##LimpiarcualqueirreglaexisteneteiptablesFiptablesZiptablesXiptablestNATF

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 25 de 46

  • #DenegartodoiptablesPINPUTDROPiptablesPFORWARDDROPiptablesPOUTPUTDROP#PermitirsshslodesdedentrodelaLAN#alacomputadoraconIP192.168.0.3iptablesAINPUTs192.168.0.3ptcpieth0dport22jACCEPTiptablesAOUTPUTd192.168.0.3ptcpoeth0sport22jACCEPT#PermitirsshdesdeInternetalacomputadora#unicamentealIP192.168.2.200iptablesAINPUTs192.168.2.200ptcpieth1dport22jACCEPTiptablesAOUTPUTd192.168.2.200ptcpoeth1sport22jACCEPT#PermitiraccesoaservidoresWebenInternetiptablesAFORWARDptcpdport80jACCEPTiptablesAFORWARDpudpdport80jACCEPTiptablesAFORWARDptcpsport80jACCEPTiptablesAFORWARDpudpsport80jACCEPT#PermitirconsultasalservidorDNSiptablesAFORWARDptcpdport53jACCEPTiptablesAFORWARDpudpdport53jACCEPTiptablesAFORWARDptcpsport53jACCEPTiptablesAFORWARDpudpsport53jACCEPT#HacerNATsobreeth1paraquelosusuariosenlaLAN#tenganaccesoalosservidoresWebenInternet.iptablestnatAPOSTROUTINGoeth1jMASQUERADEPruebe que puede tener acceso desde la computadora Windows use putty. y abra una sesin a 172.16.0.100. Para probar el acceso desde la computadora 192.168.2.200, el Web_Server, ejecute:

    ssh 172.16.0.100

    Caso 3: Redireccionamiento de puerto

    Dentro de la LAN se tiene un servidor FTP y se quiere que este servidor est disponible en Internet para cualquier usuario en el mundo. El Servidor FTP debe tener como su puerta de enlace predeterminada al Firewall (192.168.0.98). vimi_firewall_4

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 26 de 46

  • #!/bin/sh##LimpiarcualqueirreglaexisteneteiptablesFiptablesZiptablesXiptablestnatF#DenegartodoiptablesPINPUTDROPiptablesPFORWARDDROPiptablesPOUTPUTDROP#Paquetesquelleguenporeth1dirigidosalpuerto21#redirigirlosa192.168.0.208,dondecorreelservidor#ftp.SisetratadeunservidorWebelpuertoser80.iptablestnatAPREROUTINGieth1ptcpdport21jDNATto192.168.0.208:21#Aceptarpaquetescondestinoalpuerto21iptablesAFORWARDptcpdport21jACCEPT#Aceptarpaquetesqueproveniendelpuerto21iptablesAFORWARDptcpsport21jACCEPT#Aceptarpaquetesrelacionadosconunacomunicacin#establecidaentreelclienteyelservidor#yquenopermitequelosusuariosenlaLANpuedan#accesarservidoresFTPenInternetiptablesAFORWARDd192.168.0.208ptcpmstatestateNEW,ESTABLISHED,RELATEDdport21jACCEPT#ParapermitirelaccesoalosservidoresFTP#enInternetporpartedelosusuariosenlaLAN#enlaregladearribaborred192.168.0.208#Debequedaras:#iptablesAFORWARDptcpmstate#stateNEW,ESTABLISHED,RELATEDdport21jACCEPT#PermitiraccesoaservidoresWebenInternetiptablesAFORWARDptcpdport80jACCEPTiptablesAFROWARDpudpdport80jACCEPTiptablesAFORWARDptcpsport80jACCEPTiptablesAFORWARDpudpsport80jACCEPT#PermitirconsultasalservidorDNSiptablesAFORWARDptcpdport53jACCEPTiptablesAFORWARDpudpdport53jACCEPTiptablesAFORWARDptcpsport53jACCEPTiptablesAFORWARDpudpsport53jACCEPT#HacerNATsobreeth1paraquelosusuariosenelLAN#tenganaccesoalosservidoresWebenInternet.iptablestnatAPOSTROUTINGoeth1jMASQUERADE

    Para tener acceso al servidor FTP desde Internet:

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 27 de 46

  • Desde la computadora Web_Server intente tener acceso al servidor FTP que se encuentra en la LAN, usado el nmero IP de eth1 del Firewall:

    ftp172.16.0.100 Caso 4 Aceptar ICMP (echo de ping)

    Para poder aceptar paquetes ICMP provenientes del comando ping, pero slo de la interfase interna eth0, agregue las siguientes lneas:

    iptablesAINPUTpicmpieth0jACCEPTiptablesAOUTPUTpicmpoeth0jACCEPT

    Deteccin de intrusiones

    La manera de cmo los hacker se apoderan de las cuentas y claves de los usuarios, es espindolos mediante sniffers. Los sniffers necesitan que la interface de red funcione en modo promiscuo, es decir que todo paquete que le llegue, lo capture para ver sus contenido. Como saber si la interface de red est operando en modo promiscuo?

    ifconfigeth0

    eth0Linkencap:EthernetHWaddr00:00:D0:0D:00:01inetaddr:192.168.1.50Bcast:192.168.1.255Mask:255.255.252.0UPBROADCASTRUNNINGPROMISCMULTICASTMTU:1500Metric:1RXpackets:6222015errors:0dropped:0overruns:138frame:0TXpackets:5370458errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:100RXbytes:2505498554(2389.4Mb)TXbytes:1521375170(1450.8Mb)Interrupt:9Baseaddress:0xec80 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:21621 errors:0 dropped:0 overruns:0 frame:0 TX packets:21621 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1070918 (1.0 Mb) TX bytes:1070918 (1.0 Mb)

    Analizador de paquetes con tcpdump

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 28 de 46

  • tcpdump es una aplicacin de consola que nos permite analizar el trfico de la red. Con la misma podremos ver los paquetes que se envan por y hacia una interfaz de red en su "estado natural". Es decir, por ejemplo, si utilizamos un protocolo no cifrado, como telnet, ftp o http, podramos ver lo que el server ftp le envia al cliente y a la vez, lo que el cliente enva al server, empezando por el nombre de usuario y contrasea. Parmetros de tcpdump: tcpdump[aAdDeflLnNOpqRStuUvxX][ccount][Cfile_size][Ealgo:secret][Ffile][iinterface][Msecret][rfile][ssnaplen][Ttype][wfile][Wfilecount][ydatalinktype][Zuser][expression]A:ImprimecadapaqueteencdigoASCIID:Imprimelalistadeinterfacesdisponiblesn:Noconviertelasdireccionesdesalidap:Noutlizaelinterfazespecificadoenmodopromiscuot:Noimprimelahoradecapturadecadatramax:ImprimecadapaqueteenhexadecimalX:ImprimecadapaqueteenhexadecimalycdigoASCIIccount:CierraelprogramatrasrecibircountpaquetesCfile_sizeEalgo:secretFfileiinterface:EscuchaenelinterfazespecificadoMsecretrfilessnaplenTtypewfile:GuardalasalidaenelarchivofileWfilecountydatalinktypeZuser Ejemplos de tcpdump Capturar trfico cuya direccin IP de origen sea 192.168.3.1 tcpdumpsrchost192.168.3.1 Capturar trfico cuya direccin origen o destino sea 192.168.3.2 tcpdumphost192.168.3.2 Capturar trfico con destino a la direccin MAC 50:43:A5:AE:69:55 tcpdumpetherdst50:43:A5:AE:69:55

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 29 de 46

  • Capturar trfico con red destino 192.168.3.0 tcpdumpdstnet192.168.3.0 Capturar trfico con red origen 192.168.3.0/28 tcpdumpsrcnet192.168.3.0mask255.255.255.240 tambin tcpdumpsrcnet192.168.3.0/28 Capturar trfico con destino el puerto 23 tcpdumpdstport23 Capturar trfico con origen o destino el puerto 110 tcpdumpport110 Capturar los paquetes de tipo ICMP tcpdumpipproto\icmp Capturar los paquetes de tipo UDP tcpdumpipproto\udp tambin tcpdumpudp Capturar el trfico Web tcpdumptcpandport80 Capturar las peticiones de DNS tcpdumpudpanddstport53 Capturar el trfico al puerto telnet o SSH tcpdumptcpand(port22) Capturar todo el trfico excepto el web tcpdumptcpandnotport80

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 30 de 46

  • Monitorear el trfico en el puerto 21 Por ejemplo, si se quiere ver el trfico generado en el puerto 21 del servidor FTP ejecute el comando tcpdump en la consola del servidor

    tcpdumpieth0nport21A

    tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningoneth0,linktypeEN10MB(Ethernet),capturesize96bytes

    El comando queda escuchando (sniffing=husmear) en el puerto especificado y la informacin de todos los paquetes que le lleguen o salgan son impresos en la consola. Si desde una estacin se tiene acceso al servidor ftp, empezarn a imprimirse los datos de los paquetes. La siguiente es la salida de los datos capturados por tcpdump despus de ejecutar el comando ftp para accesar al servidor ftp. En la consola de la estacin de trabajo (Windows) ejecute: ftp192.168.0.98 Conectandoa192.168.98.220(vsFTPd2.0.5)Usuario(192.168.0.98:(one)): En la consola del servidor Linux donde tcpdump est escuchando aparece lo siguiente: 04:15:27.184219IP192.168.0.11.herelm>192.168.0.99.ftp:S4174271264:4174271264(0)[email protected]:15:27.184507IP192.168.0.99.ftp>192.168.0.11.herelm:S2415410193:2415410193(0)ack4174271265win5840E..0..@[email protected]:.ack1win64240E..([email protected]!..192.168.0.11.herelm:P1:21(20)ack1win5840E..

  • 04:20:27.326989IP192.168.0.11.herelm>192.168.0.99.ftp:.ack36win64206E..([email protected]!..192.168.0.11.herelm:P21:35(14)ack1win5840E..6..@[email protected]:F35:35(0)ack1win5840E..(..@.@..|...c..........192.168.0.99.ftp:.ack36win64206E..([email protected]!..192.168.0.99.ftp:P1:16(15)[email protected]@.......c......S!..192.168.0.11.herelm:R2415410229:2415410229(0)win0E..(..@[email protected] la consola del servidor Linux aparece la contrasea enviada por la estacin al servidor: 04:46:53.260615IP192.168.0.11.mloadd>192.168.0.99.ftp:.ack55win64186E..(8.@[email protected]....*.il....P.............04:47:15.085126IP192.168.0.11.mloadd>192.168.0.99.ftp:P16:31(15)ack55win64186E..78.@[email protected]....*.il....P...L}..PASSusuario104:47:15.125369IP192.168.0.99.ftp>192.168.0.11.mloadd:.ack31win5840E..(..@[email protected]............*.i{P...m...04:47:15.716941IP192.168.0.99.ftp>192.168.0.11.mloadd:P55:78(23)ack31win5840E..?..@[email protected]............*.i{P....F..230Loginsuccessful.04:47:15.901985IP192.168.0.11.mloadd>192.168.0.99.ftp:.ack78win64163E..(8.@[email protected]....*.i{....P.............

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 32 de 46

  • Como puede verse, el acceso al servidor ftp no es seguro, ya que ejecutando un sniffer como tcpdump, se puede capturar las contraseas. Para conectarse al servidor FTP de manera segura utilice un enlacesftp configure al servidor FTP para que acepte conexiones seguras SSL por parte del cliente ftp. Establecer una conexin segura con servidor sftp y ssh El servidor ssh viene configurado para que pueda usar el servidor seguro FTP llamado sftp. En el archivo de configuracin del servidor ssh existe una directiva que indica el uso del servidor sftp para conexiones seguras. vi/etc/ssh/sshd_configSubsystemsftp/usr/libexec/openssh/sftpserver Para poder etablecer una conexin segura deber usar un cliente que soporte este tipo de conexin. Use FireFTP, que es un complemento de FireFox para que pueda realizar un enlace seguro al servidor ftp. Elija la opcin QuickConnect e ingrese el Host, Login y Password correspondientes. Atentifquese como usuario1 con clave usuario1

    Luego haga clic en la pestaa Connection y elija de la lista Security: sftp

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 33 de 46

  • Establecer una conexin segura mediante SSL El protocolo SSL permite la autenticacin de servidores, la codificacin de datos y la integridad de los mensajes. Con SSL tanto en el cliente como en el servidor, sus comunicaciones en Internet sern transmitidas en formato codificado. De esta manera, puede confiar en que la informacin que enve llegar de manera privada y no adulterada al servidor que usted especifique. Los servidores seguros suministran la autenticacin del servidor empleando certificados digitales firmados emitidos por organizaciones llamadas "Autoridades de certificado". Un certificado digital verifica la conexin entre la clave de un servidor pblico y la identificacin del servidor. Las verificaciones criptogrficas, mediante firmas digitales, garantizan que la informacin dentro del certificado sea de confianza. El servidor vsftp viene con la opcin para aceptar conexiones seguras SSL, solo hay que configurarlo, agregando las directivas correspondientes en el archivo de configuracin y generando el certificado. Uso de openssl para generar el certificado Uno de los usos ms comunes de OpenSSL es ofrecer certificados para usar con aplicaciones de software. Estos certificados aseguran que las credenciales de la compaa o individuo son vlidos y no son fraudulentos. Si el certificado en cuestin no ha sido verificado por uno de las

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 34 de 46

  • diversas autoridades certificadoras o CA, suele generarse una advertencia al respecto. Una autoridad de certificados es una compaa, como VeriSign, que firma certificados para validar credenciales de individuos o compaas. Generar el certificado en el archivo vsftpd.pem opensslreqx509nodesdays730newkeyrsa:1024keyout/etc/pki/tls/certs/vsftpd.pemout/etc/pki/tls/certs/vsftpd.pem

    Despus de ejecutar el comando openssl se debe responder a las siguiente preguntas: CountryName(2lettercode)[GB]:ECStateorProvinceName(fullname)[Berkshire]:GuayasLocalityName(eg,city)[Newbury]:GuayaquilOrganizationName(eg,company)[MyCompanyLtd]:CETOrganizationalUnitName(eg,section)[]:LinuxServerCommonName(eg,yournameoryourserver'shostname)[]:linusx.cet.localEmailAddress[]:[email protected] Luego de responder las preguntas con los datos, abra el archivo para verificar la creacin del certficado cat/etc/pki/tls/certs/vsftpd.pem BEGINCERTIFICATEMIID4zCCA0ygAwIBAgIJALbw9oxdkAfvMA0GCSqGSIb3DQEBBQUAMIGoMQswCQYDVQQGEwJFQzEPMA0GA1UECBMGR3VheWFzMQwwCgYDVQQHEwNHeWUxDDAKBgNVBAoTA0NFVDEVMBMGA1UECxMMTGludXggU2VydmVyMSowKAYDVQQDEyFsaW51eHNlcnZlcjEuY2V0aW5mb3JtYXRpY2EubG9jYWwxKTAnBgkqhkiG9w0BCQEWGmFkbWluQGNldGluZm9ybWF0aWNhLmxvY2FsMB4XDTEwMTAwMTEyNTUyNVoXDTEyMDkzMDEyNTUyNVowgagxCzAJBgNVBAYTAkVDMQ8wDQYDVQQIEwZHdWF5YXMxDDAKBgNVBAcTA0d5ZTEMMAoGA1UEChMDQ0VUMRUwEwYDVQQLEwxMaW51eCBTZXJ2ZXIxKjAoBgNVBAMTIWxpbnV4c2VydmVyMS5jZXRpbmZvcm1hdGljYS5sb2NhbDEpMCcGCSqGSIb3DQEJARYaYWRtaW5AY2V0aW5mb3JtYXRpY2EubG9jYWwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJpWF47ArwEPpBzrwJpS/lp8uM0uEaTzboMMKG/AdZGSKkJSu23yLBVg8QZfjUwGTbf/ia6nLpn4Py4j515YLzvrBdB5Rr7pIgU6BACSWNwl/G6L+P/53rz1W0tcXPyQgIcP19l9dgpZHz7KqT5fdLqB/jTR9ANQ23FE5UTMvss7AgMBAAGjggERMIIBDTAdBgNVHQ4EFgQUjmDsGe9kpOUWdKs1GduZN4DDEVowgd0GA1UdIwSB1TCB0oAUjmDsGe9kpOUWdKs1GduZN4DDEVqhga6kgaswgagxCzAJBgNVBAYTAkVDMQ8wDQYDVQQIEwZHdWF5YXMxDDAKBgNVBAcTA0d5ZTEMMAoGA1UEChMDQ0VUMRUwEwYDVQQLEwxMaW51eCBTZXJ2ZXIxKjAoBgNVBAMTIWxpbnV4c2VydmVyMS5jZXRpbmZvcm1hdGljYS5sb2NhbDEpMCcGCSqGSIb3DQEJARYaYWRtaW5AY2V0aW5mb3JtYXRpY2EubG9jYWyCCQC28PaMXZAH7zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFgSO+VcnTSlb3EB77TtMBoJO2WnbOlCZpEFFXCHsihClwO1fxOHAXBNXu3p9PjuOROwz5whT6vP+reG/OZ1JmWOyS5N/+mMd4EqBbBgYIm9IMElTX8Md9LaSsYx2NWEfrri0KcaVY09zCeF1IAPem7+ABpIU3w2vDDAWnh0KdROENDCERTIFICATE

    Agregar la llave RSA al archive vsftpd.pem opensslx509in/etc/pki/tls/certs/vsftpd.pemnoouttext

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 35 de 46

  • Fijar los permisos del archivo vsftpd.perm para que slo root tenga acceso de lectura. chmod600/etc/pki/tls/certs/vsftpd.pem Agregue las directivas en el archivo de configuracin del servidor vsftp vi/etc/vsftpd/vsftpd.confssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=NOforce_local_logins_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrsa_cert_file=/etc/pki/tls/certs/vsftpd.pem Reiniciar el servicio servicevsftpdrestart Use FireFtp y abra una connexion al servidor. Autentifquese como usuario1. Utilice como tipo de conexin Auth SSL. Husmear la conexin SSL En la consola del servidor ejecute tcpdump y vuelva a ingresar al servidor FTP usando SSL. Observe que ahora ya no aparece el usuario ni la contrasea.

    tcpdumpieth0nport21A

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 36 de 46

  • Mecanismos de Seguridad Avanzada

    Los objetos que maneja el sistema operativo como son: Archivos, Interfaces, Dispositivos, estn administrados bajo mecanismos de seguridad, que establecen quienes cuales procesos pueden tener acceso a los objetos. En Linux existen tres mecanismos de seguridad:

    Control de Acceso Discrecional (DAC) Listas de Control del Acceso (ACL) Control de Acceso Mandatario (MAC)

    Control de Acceso Discrecional (DAC)

    Este mecanismo de seguridad establece un control de acceso bsico para los objetos. Este es el mecanismo de control que establece los permisos de los archivos y directorios. Los permisos son otorgados a discrecionalidad del dueo del objeto un objeto es un archivo, directorio, dispositivo, interface. DAC provee un mecanismo de restriccin del acceso a los objetos basado en la identidad del usuario o grupos (sujetos), que intentan tener acceso a los objetos. Dependiendo de los permisos de acceso a los objetos concedido a los sujetos, estos pueden pasar los permisos a otros objetos. Bsicamente este mecanismo de control se maneja con las rdenes ya vistas en el curso:

    chmod,chown,chgrp

    Listas de control del acceso (ACL)

    Las ACLs permiten establecer un nivel de acceso diferenciado a los objetos para los usuarios del sistema. Por ejemplo, si se quiere otorgar permiso de lectura y escritura a un usuario en particular, usando el mecanismo discrecional no es posible otorgar dicho permiso, a menos que al usuario se lo agregue a un grupo, pero todos los usuarios del grupo tendrn tambin el mismo permiso. El sistema CENTOS viene con el mecanismo de seguridad ACL habilitado. Para verificar que este mecanismo se encuentra habilitado ejecute:

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 37 de 46

  • tune2fsl/dev/VolGroup00/LogVol00|grepoptions Debe aparecer la siguiente salida, la misma que confirma la habilitacin del mecanismo de seguridad ACL en el sistema. Defaultmountoptions:user_xattracl Comandos ACL Mostrar permisos ACL

    getfacl

    Establecer permisos ACL

    setfaclm

    Las se componen en:

    :

    puede ser u para usuario, g para grupo, o para otros. pueden ser una combinacin de: rwx

    Eliminar permisos ACL

    setfaclx Al eliminar los permisos, las slo admiten el y no los , es decir que se eliminan todos los permisos otorgados al sujeto.

    Ejemplos: El siguiente comando mostrar una lista de los ACLs para el archivo notas.txt.

    getfaclnotas.txt#file:notas.txt#owner:luis#group:usersuser::rwgroup::rmask::rother::rw

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 38 de 46

  • Para establecer permiso de lectura y ejecucin (rx) al usuario mike sobre el archivo notas.txt:

    setfaclmu:mike:rxnotas.txtgetfaclnotas.txt#file:notas.txt#owner:luis#group:usersuser::rwuser:Mike:rxgroup::rmask::rother::rw

    Si se quiere quitar los permisos otorgados a mike

    setfaclxu:mikenotas.txt

    Control de acceso mandatario (MAC)

    Es un mecanismo de seguridad que restringe el nivel de control que los usuarios (sujetos) tienen sobre los objetos (archivos, dispositivos, interfaces ) que estos crean. A diferencia del mecanismo DAC donde el usuario tiene pleno control sobre sus archivos y directorios, MAC agrega etiquetas a todos los objetos del sistema de archivos. Usuarios y procesos deben tener el acceso apropiado de las etiquetas, antes que puedan interactuar con los objetos. El mecanismo de control MAC se ejecuta luego del mecanismo DAC. El mecanismo MAC no se ejecuta si el mecanismo DAC deniega el acceso primero. Si el sistema operativo slo trabaja con el mecanismos de control de seguridad DAC, un usuario tiene la capacidad de hacer que su directorio personal pueda ser ledo por todo el mundo, ya que este es el dueo del directorio y tiene privilegios para hacerlo. Esto representara un problema de seguridad, ya que procesos no deseados pudieran tomar la informacin fcilmente. Apoyarse nicamente en la seguridad que brinda el mecanismo DAC no es suficiente para tener un sistema bien asegurado. En CENTOS el mecanismo de seguridad MAC est dado por SELinux. SELinux Security Enhanced Linux

    Viene integrada al Kernel 2.6.x. Protege al sistema de aplicaciones maliciosas que pueden daarlo o destruirlo.

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 39 de 46

  • Este define en el sistema, el acceso y transicin de derechos de cada usuario, aplicacin, proceso y archivo. SELinux gobierna la interaccin de estas entidades usando una poltica de seguridad, la misma que especifica cuan restrictiva o permisiva debe ser esta. Cmo acta SELinux en el sistema?

    Cuando un sujeto (por ejemplo una aplicacin), intenta accesar a un objeto (por ejemplo un archivo), el servidor de seguridad, que ejecuta las polticas en el Kernel verifica su existencia en el AVC (access vector cache), donde los permisos del sujeto y el objeto se encuentran alojados. Si no le es posible realizar una decisin basada en los datos alojados en el AVC, la peticin continua al servidor de seguridad, el mismo que examina la seguridad de contexto de la aplicacin y del archivo en una matriz, entonces el permiso es dado o denegado. Si es denegado, el mensaje queda registrado en el archivo /var/log/messages.

    Base de Datos con Polticas de seguridad

    Sujeto

    (proceso)

    Servidor de seguridad SELinux

    Objeto

    (archivo)

    AVC: Mensaje

    Denegado

    Solicitud para leer archivo AVC

    Permiso Otorgado?

    No

    Si

    El contexto de seguridad de los sujetos y objetos es aplicado desde las polticas instaladas, las cuales proveen de la informacin a la matriz del servidor de seguridad.

    Sujeto

    Contexto de Seguridad

    Objeto

    Accin

    Contexto de Seguridad

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 40 de 46

  • Beneficios en la seguridad

    Todos los procesos y archivos son etiquetados con un Type (tipo). Un tipo define un dominio para los procesos, y un tipo para los archivos. Los procesos son separados uno de otros para correr en sus propios dominios, y la reglas en la poltica de SELinux definen cmo los procesos interactan con los archivos, as

    ocesos interactan entre si. El acceso es permitido slo si existe la regla en la poltica

    r

    ese proceso para leer archivos en los directorios de los usuarios, a menos que una

    ilidad s

    o

    Modos e

    SeSE

    Deshabilitado (Disabled) En el modo obediente se pone en ejecucin el mecanismo

    n el modo permisivo, el AVC registra la denegacin en el arc ta la poltica. Se utiliza cuando se estn desarrollando aplicaciones haciendo pruebas con los servicios y no se quiere que SELinux loque el acceso, pero que solo lo registre.

    tambin cmo los pr

    de seguridad SELinux.

    Las poltica de seguridad SELinux es definida para todo el sistema y no a la discrecin del usuario.

    Se reduce la vulnerabilidad de los ataques por privilegios alcanzados por un usuario o proceso. Poejemplo, si el Servidor Apache se ve comprometido, un atacante no podr usar

    regla especfica sea agregada configurada para permitir dicho acceso.

    Servicios confinados. SELinux viene con la hab

    para confinar los servicios de tal manera que sean mpredecibles y solo estn permitidos los accesos requeridos para su normal operacin. Tambin se pueden confinar usuarios. De esta manera un usuarino podr correr aplicaciones, as sea que le pertenezcan.

    d operacin de SELinux

    pueden establecer dos modos de operacin de Linux:

    Obediente (enforced) Permisivo (permisive)

    de seguridad MAC E

    hivo de registros, y no ejecu

    b

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 41 de 46

  • Para cambiar el modo de operacin de SELinux, se tienen

    l

    controlsthestateofSELinuxonthesystem.#SELINUX=cantakeoneofthesethreevalues:

    ed.

    sfullydisabled.SELINUX=enforcing

    tres alternativas:

    Editar el archivo /etc/selinux/config, y cambiar la directiva SELINUX con el valor disabled por eenforcing permisive

    vi/etc/selinux/config#Thisfile

    #enforcingSELinuxsecuritypolicyisenforc#permissiveSELinuxprintswarningsinsteadofenforcing.#disabledSELinuxi

    #SELINUXTYPE=typeofpolicyinuse.Possiblevaluese:

    all stema >

    el de seguridad y cortafuegos

    Ver a

    ar#targetedOnlytargetednetworkdaemonsareprotected.#strictFullSELinuxprotection.SELINUXTYPE=targeted

    De manera interactiva ejecutando setupyeligiendo la opcin del men Configuracin del Firew

    En el ambiente grfico, elija el men SiAdministracin > Niv

    ific r el modo de operacin

    Para verificar cual es el modo de operacin en que se encuentra SELinux use el comando sestatus s

    enabled/selinux

    Currentmode:permissive

    Pliticas de

    SELin negado de tal manera que sea necesario definir una poltica para que ca

    l administrador puede escribir su propias polticas, pero finida llamada targeted.

    En CETOS 5 esta poltica confina a mas de 200 procesos claves (targets) entre ellos: httpd, named, dhcpd, MySQL.

    estatus

    SELinuxstatus:SELinuxfsmount:

    Modefromconfigfile:disabledPolicyversion:21

    licyfromconfigfile:targetedPo

    seguridad en SELinux

    ux utiliza un modelo donde todo acceso es de

    da sujeto pueda tener el acceso al objeto. ESELinux trae una poltica pre-de

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 42 de 46

  • La poltica targeted est diseada para proteger a la gran mayora de procesos sin que el usuario final lo note. Otros procesos que no se encuentren dentro de la politica

    Contro

    ): Basado alrededor de los usuarios SELinux (No son los mismos que los

    ero no es utilizado con la politica targeted.

    izada y est oculta el la poltica targeted.

    Contexto de

    Para SELinux los archivos, directorios y dispositivos se denom(aplica mandos) se los denomina Sujetos. Todos los objetos sern etiquetados (labeled) con la informacin de seg da por los procesos y los usuarios. Esta informacin se la llama Contexto de

    rwdrwxrxrwr ject_r:user_home_t:s0install.logrwr rootrootroot:object_r:user_home_t:s0install.log.syslogrw

    level:s0

    targeted, tendrn que ser agregados a la poltica para su correcto funcionamiento. l de Acceso SELinux

    SELinux tiene 3 forma de control de acceso

    Type Enforcement (TE): Es el mecanismo de controlutilizado por las politicas targeted.

    Role-Based (RBACusuarios Linux), p

    Multy-Level-Security (MLS): No es util

    seguridad SELinux

    inan objetos. Por otro lado, a los procesos ciones, co

    uridad relevante para ser usa

    seguridad SELinux

    Para ver, por ejemplo, el contexto SELinux del directorio/root ejecute el comando ls con la opcin Z

    lsZ/root

    rootrootsystem_u:object_r:user_home_t:s0anacondaks.cfgrxrootrootroot:object_r:user_home_t:s0Desktoprrootrootroot:obrrootrootroot:object_r:user_home_t:s0mbox

    El contexto tiene la siguiente sintaxis:

    user:role:type:level user=root role=object_r type:user_home_t

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 43 de 46

  • Para c e seguridad use el comando chcon Por ejemplo, para permitir que en los directorios personales de los usuarios, apache pueda tener acceso al directorio public_html, donde se alojan los documentos html.

    chconRthttpd_sys_content_t~user/public_html

    Boole

    los ambios en las poltica pre-establecidas, como las que se

    han mee quiere habilitar el uso de los directorios personales de

    suarios para que estos pueda alojar los documentos html y puedan ser publicados por Apache.

    s

    httpd_enable_ftp_server off

    ntroller>offome_dirs>off

    oolean. En este ejemplo el valor de 1 indica que habilite el uso de los directorios personales al servidor httpd Apache.

    dirs1 Ejemplo de algunos booleans para el servicio FTP.

    fson

    Samba:

    /setseboolPallow_ftpd_use_cifson

    ambiar el contexto d

    ans

    Los Booleans permiten que parte de las polticas de SELinux puedan cambiarse en tiempo de ejecucin, sin necesidad de escribir polticas. Esto permite realizarc

    ncionado anteriormente, como por ejemplo, cuando slos u

    Para ver un listado de todos los booleans use getsebool

    getsebool a

    A continuacin se muestra una parte de la lista de boolean

    httpd_enable_cgi>on>

    httpd_enable_homedirs>onftp_home_dir>offsamba_domain_cosamba_enable_h

    Utilice el comando setseboolpara cambiar el valor de un b

    setseboolPhttpd_enable_home

    FTP (vsftpd)

    Para permitir el acceso a NFS

    /usr/sbin/setseboolPallow_ftpd_use_n

    Para permitir el acceso al sistema de archivos

    /usr/sbin

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 44 de 46

  • Usuarios SE

    Cuand ux, cada usuario creado en Linux es mapeado como un usuaripermitindole a estos usuarios heredar las restricciones de los usuarios SELinux.

    iente comando para ver los usuarios

    gregar un usuario SELinux

    Para agregar un usuario SELinux ejecute el guido del

    usuario SELinux del que se quire heredar sus

    kiko

    Agregar un usuario Linux al dominio de SELinux

    usuario pablo a

    l dominio

    Login SRange__defarootkikopablo user_us0

    Linux

    o se habilita el mecanismo de seguridad SELin

    o SELinux por medio de la poltica respectiva,

    Ejecute el siguSELinux. semanageloginlLoginNameSELinuxUserMLS/MCSRange__default__user_us0rootrootSystemLowSystemHighA

    commando useradd con la opcin Z se

    restricciones: useraddZuser_u El usuario kiko tendr todas las restricciones que han sido establecidas para user_u como son: no poder ejecutar su y sudo, entre otras restricciones.

    Por ejemplo, para agregar al SELinux ejecute lo siguiente: semanageloginasuser_upablo Para verificar que pablo ha sido agragdo auser_u de usuarios SELInux ejecute:

    semanageloginl

    NameSELinuxUserMLS/MC

    ult__user_us0rootSystemLowSystemHighuser_us0

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 45 de 46

  • Paquetes para administrar SELinux

    Linux, deber instalar

    in que se ejecuta en el

    Para facilitar la administracin de SElos siguientes paquetes:

    policycoreutils-gui Este es una panel de administracambiente grfico

    yuminstallpolicycoreutilsgui

    CET.Informtica - www.cetinformatica.com Garca Avils 408 y Luque Of. 602 - 2323360 Pgina 46 de 46