protección del servidor apache.pdf

Upload: cennio-di-gerardo-castro

Post on 09-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Proteccin del servidor Apache.pdf

    1/4

    seguridad

    Proteccin de servidor

    40 Linux+ 1/2007

    [email protected]

    om.p

    l

    Proteccin delservidor ApacheCuando hablamos de Internet debemos hablar del servidor Apache, ya que es gracias a este

    servidor web por el que podemos publicar en Internet, as como podemos recibir la opinin

    de los internautas que han visitado nuestro sitio web, podemos colgar grcos, fotos, banners

    con efectos ash, msica, video, etc.

    Jose Ignacio Ruiz de Alegra

    El servidor Apache, tanto la versin 1.3.x como

    la versin 2, se ha convertido en un servidor

    web de referencia para todo diseador de

    pginas web, webmaster, etc. Aunque es uno

    de los ms estables que hay actualmente en el mercado,

    debemos de recordar tambin que dicho servidor se en-

    cuentra constantemente sometido a ataques a travs de

    Internet o de la web, los dos ms comunes son el ataque

    a travs de la instruccin POST. Dicha instruccin es

    ampliamente utilizada en Internet porque va unida al

    envio de informacin a travs de Internet, por el cual

    un cracker intenta enviar informacin maliciosa a tra-

    vs de la red con la intencin de perjudicar al servidor

    o provocar una negacin de servicios. Como veremos

    ms adelante hay una forma de evitar o de ltrar la in-

    formacin que se enva va POST entre el servidor web

    y el cliente. Otro de los ataques ms comunes que se

    producen a travs del servidor Apache son los llamados

    Ddos Attack o Negacin de servicios y como el mismonombre lo indica, la nalidad de estos ataques es hacer

    que el servidor Apache se bloquee, lo que traer como

    consecuencia la prdida de servicio. Quin no ha escu-

    chado decir que el servidor est cado y que por ese mo-

    tivo sus paginas web no son accesibles a travs de Inter-

    net.

    Para evitar o mitigar en lo ms posible esta clase de

    ataques, existen en el mercado dos mdulos, ambos gra-

    tuitos, que permiten solucionar este tipo de problemas.

    Sus nombres son: mod_security y mod_evasive. Debido

    a que el 70 por ciento de los ataques son llevados a travs

    de las aplicaciones web, debemos considerar aplicar un

    cortafuegos, frewallo ltro, que bloquee las solicitudes

    que proceden de los clientes hacia el servidor. Esa es

    la funcin principal del mod_security. Lo primero que

    tenemos que hacer es descargarnos el mod_security: des-

    cargamos el mod_securitydesdehttp://www.modsecurity.

    org/.

    Descomprimimos el chero:

    tar xzf modsecurity-Apache-1.9.2.tar.gz

    Accedemos al directorio:

    cd modsecurity*

  • 7/22/2019 Proteccin del servidor Apache.pdf

    2/4

    seguridad

    Proteccin de servidor

    41www.lpmagazine.org

    Aqu necesitamos saber para qu versin de

    Apache lo vamos a instalar, pudiendo ser la

    versin 2.* o la 1.3.*. Si utilizamos la versin

    de Apache 1.3.* debemos de hacer:

    cd Apache1

    Antes de instalar el mdulo es conveniente

    hacer una copia de seguridad del archivo de

    conguracin del servidor, por lo tanto hare-

    mos lo siguiente:

    cp /usr/local/Apache/conf/httpd.conf

    /usr/local/Apache/conf/httpd.conf.back

    Instalamos el mod_security:

    /usr/local/Apache/bin/apxs cia

    mod_security.c

    Aqu debemos editar el chero de congura-

    cin del Apache (httpd.conf), en dicho chero

    debemos poder ver las siguientes instruccio-

    nes, indicadas abajo:

    LoadModule security_module

    libexec/mod_security.so

    AddModule mod_security.c

    Seal inequvoca que el mdulo se ha instala-

    do correctamente, es ahora cuando podemosempezar a aadir las directivas de nuestro

    ltro ofrewall.

    Para empezar a escribir las directivas den-

    tro del chero de conguracin del Apache de-

    bemos hacer lo siguiente: editamos el httpd.

    conf, podemos elegir el editor que ms nos

    guste en nuestro caso nano f httpd.conf

    la denicin de la directiva del modse-

    curity ser, la siguiente .

    Activamos el ltro:

    SecFilterEngine On

    Activamos el chequeo del url, Post:

    SecFilterCheckURLEncoding On

    Para evitar que interera con las aplicaciones

    web:

    SecFilterCheckUnicodeEncoding Off

    Rango de Bytes:

    SecFilterForceByteRange 0 255

    No permitir guardar un chero en el direc-

    torio/tmp:

    SecUploadDir /tmp

    SecUploadLeepFiles Off

    Slo audita los intentos de violacin del ser-

    vidor, con dicha opcin activada, nos dejar

    en el chero audit._log, del directorio /usr/

    local/Apache/logs. Dicho chero es muy

    til para buscar desde qu dominio nos han

    intentado atacar:

    SecAuditEngine RelevantOnly

    SecAuditLog logs/audit._log

    Denicin de los cheros LOGS, el nivel cero

    (Level 0) es entorno de produccin:

    SecFilterDebugLog logs/modesec_

    debug_log

    SecFilterDebugLevel 0

    Escaneo de las solicitudes POST:

    SecFilterSacnPost On

    Listado 1. Comienzo de las reglas de ltrado

    SecFilterSelectiveTHE-REQUESTwget

    SecFilterSelectiveTHE-REQUESTlynx

    SecFilterSelectiveTHE-REQUESTtelnet

    SecFilterSelectiveTHE-REQUESTssh

    SecFilterSelectiveTHE_REQUEST"scp "

    SecFilterSelectiveTHE_REQUEST"rcp "

    SecFilterSelectiveTHE_REQUEST"curl "

    SecFilterSelectiveTHE-REQUESTcd/tmp

    SecFilterSelectiveTHE-REQUESTcd/var/tmp

    SecFilterSelectiveTHE-REQUESTcd/dev/shm

    SecFilterSelectiveTHE_REQUEST"/../../ "

    SecFilterSelectivePOST_PAYLOADSubject\: chainSecFilterSelectiveARG_Bcc.\@

    Figura 1. mod_security

  • 7/22/2019 Proteccin del servidor Apache.pdf

    3/4

    42

    seguridad

    Proteccin de servidor

    Linux+ 1/2007

    Accin por defecto en caso de ltrado, niega,

    escribe en el log, muestra status:403:

    SecFilterDefaultAction deny, log,

    status:403

    Comienzo de las reglas de ltrado (ver Lis-

    tado 1).

    SecFilterEngineEsta directiva nos da la posibilidad de activar

    y desactivar el ltro on/off.

    SecFilterSacnPost On

    Con esta directiva podemos chequear las soli-

    citudes POST, viene desactivado por defecto,

    por consiguiente la activamos.

    SecFilterDefaultAction

    Esta directiva sirve para denir qu accin

    queremos que se ejecute una vez que el ltro

    que hemos denido detecta que ha llegadouna solicitud que lo cumple.

    Deny : Interrumpe todos los procesos, de

    las solicitudes que cumple con nuestro ltro.

    Log : Suma una entrada en el error_log.

    Status:403 : Muestra la pagina 403.

    SecFilterForceByteRange

    Esta directriz consiste en limitar el rango de

    Bytes de las solicitudes que se hacen a travs

    del servidor Apache. La intencin de esta limi-

    tacin consiste en limitar los ataques overow

    attacks, por defecto todo los rangos de bytes

    son permitidos.

    SecAuditEngine RelevantOnly

    La directiva SecAuditEnginejunto con relevant-

    Only signica que incluye slo las solicitudes

    que cumplen con las condiciones de nuestro

    ltro.

    SecAuditLog

    Suma una entrada en el chero logs/ audit._

    log cuando se cumpla una de las condiciones

    del ltro, dicha accin es muy til para poder

    analizar a travs de quien nos ha venido elataque.

    Con la directiva SecFilterSelective Location

    Keywords [Action].

    Le permitir elegir exactamente dnde

    se utilizar o aplicar el ltro, aqu nosotros

    podremos elegir entre todas las variables de

    los CGI, como se puede ver en nuestro caso

    cualquier peticin que contenga las palabras

    wget, lynx, telnet, etc ser automticamente

    ltrada. Ver abajo el juego completo de ins-

    trucciones.

    Cabe especial mencin a la instruccin de

    POST_PAYLOAD.El signicado es la de aplicar el ltro en

    la localizacin del cuerpo de los peticiones

    POST. con respecto a la instruccin Chain.

    El signicado es el de encadenar dos ins-

    trucciones, vase el ejemplo de arriba.

    Reiniciamos el Apache

    Una vez que hemos reiniciado el Apache ya

    tenemos en funcionamiento nuestro ltro,

    dicho ltro nos proteger de ciertos ataques

    y nos permitir saber a travs de cual usua-

    rio se est cometiendo el ataque. Pero comohemos dicho al principio, otro de los ataque

    ms comunes que afectan al servidor Apa-

    che es el Ddos attack o negacin de servi-

    cios, quien no ha odo hablar de que el servi-

    dor Apache est cado y que esa es la causa

    de que no se vean las pginas web. El Ddos

    attack se produce de la siguiente manera:

    cuando alguien introduce el nombre de su

    sitio web en Mozilla Firefox o en Internet

    Explorer y comienza a ver su pgina web,

    el servidor Apache debe abrir un proceso

    para atender a esa demanda, dicho proceso

    lleva por consiguiente un uso de la CPU y

    de memoria del sistema. El ataque consiste

    en hacer muchas peticiones sobre la misma

    pgina durante un tiempo muy corto, lo que

    obligar al servidor Apache a abrir innume-

    rables procesos con la intencin de atender

    a la demanda de peticiones que ha recibido

    dicho proceso lo que conllevar un mayor

    consumo de CPU y de memoria del sistema,

    llegando a colapsar el servidor, una vez lle-

    gado a este punto, la nalidad de este ataque

    se ha completado, ya que se ha producido

    una carencia del servicio.La manera de defenderse de esa clase

    de ataques sera la de crear una lista negra

    (blacklist) o tabla en la cual se guardar

    por un tiempo prudencial de unos 10 segun-

    dos, dicha cantidad es congurable, y compa-

    rar si dichas IPs se encuentran en la lista negra

    o blacklist con las IPs de acceso. Si una vez

    comparadas las IPs resulta que ya se encuentra

    en su Blacklist le deber de negar el acceso al

    servidor Apache o si alguien intenta abrir in-

    numerables procesos haciendo muchas soli-

    citudes a la vez en un tiempo, pongamos de

    1 segundo, el sistema lo debera de incluir en

    su blacklist y negarle el acceso tambin. Debe-

    mos mencionar otra forma de ser incluido en

    la blacklist, que es hacer ms de 50 peticio-

    nes en el mismo proceso por segundo.

    Pues bien esta herramienta ya existe, el

    mdulo que lo hace posible es mod_evasive.

    Esta herramienta es muy til y frena los in-

    tentos de ataque al servidor mediante el Ddos

    attack. Los pasos son los siguientes:Descargamos el mod_evasive desdehttp://

    www.zdziarski.com/projects/mod_evasive/y des-

    comprimimos el chero:

    tar xzf mod_evasive

    Antes de instalar el mdulo es conveniente

    hacer una copia de seguridad del archivo de

    conguracin del servidor, por consiguiente

    haremos lo siguiente:

    cp /usr/local/Apache/conf/httpd.conf

    .../usr/local/Apache/conf/

    httpd.conf.back

    Accedemos al directorio:

    cd mod_evasive*

    Instalamos el mod_evasive:

    /usr/local/Apache/bin/apxs cia

    mod_evasive.c

    Aqu debemos de editar el chero de con-

    guracin del Apache (httpd.conf), en dicho

    chero debemos de poder ver las siguientes

    instrucciones, ver abajo:

    Listado 2. Juego completo de instrucciones

    REMOTE_ADDR, REMOTE_HOST, REMOTE_USER, REMOTE_IDENT, REQUEST_METHOD,

    SCRIPT_FILENAME, PATH_INFO, QUERY_STRING, AUTH_TYPE, DOCUMENT_ROOT,

    SERVER_ADMIN, SERVER_NAME, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL,

    SERVER_SOFTWARE, TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN,

    TIME_SEC, TIME_WDAY, TIME, API_VERSION, THE_REQUEST, REQUEST_URI, REQUEST_

    FILENAME, REQUEST_BASENAME, IS_SUBREQ

    Figura 2. mod_evasive

  • 7/22/2019 Proteccin del servidor Apache.pdf

    4/4

    43

    seguridad

    Proteccin de servidor

    www.lpmagazine.org

    LoadModule evasive_module

    libexec/mod_evasive.so

    AddModule mod_evasive.c

    Seal inequvoca de que el mdulo se ha

    instalado correctamente, es ahora cuando

    podemos empezar a aadir las directivas

    de conguracin del mdulo dos_evasive

    Para empezar a escribir las directivas

    dentro del chero de conguracin del Apa-

    che debemos de hacer lo siguiente: edita-

    mos el httpd.conf, podemos elegir el editor

    que ms nos guste en nuestro caso nano f

    httpd.conf

    La denicin de la directiva del mod_

    evasive ser la siguiente:

    DOSHashTableSize 3097

    DOSPageCount 10

    DOSSiteCount 50

    DOSPageInterval 1

    DOSSiteInterval 1

    DOSBlockingPeriod 10

    DOSHashTableSize

    Esta tabla dene el mximo nmero de nodos

    a almacenar por proceso. Si incrementamos el

    nmero aumentar la velocidad de ejecucin

    del proceso ya que reducir el nmero deIteraciones por registro, pero traer como

    consecuencia un incremento de los recursos

    del servidor, lo que implica que consumir

    ms memoria del sistema. En el supuesto que

    tengamos un servidor Apache que tenga que

    atender mucho traco es aconsejable incre-

    mentar dicha cantidad.

    DOSPageCount

    Este valor es el nmero de solicitudes sobre

    la misma pgina o URI por intervalo, si di-

    chas solicitudes exceden al valor previamente

    denido, que para nuestro caso es de 10, la

    IP del cliente ser sumada en nuestra Black-

    list.

    DOSSiteCount

    Este valor es el nmero mximo de solicitu-

    des hechas sobre el mismo proceso por el

    mismo cliente, si dicho valor excede el valor

    previamente denido, que para nuestro caso

    es de 50, la IP del cliente ser sumada en

    nuestra Blacklist.

    DOSPageIntervalCon este valor denimos el intervalo de tiem-

    po por el cual el DOSPageCount debe de con-

    tar el nmero mximo de solicitudes sob-

    re la misma pgina, por defecto ponemos 1

    segundo.

    DOSSiteInterval

    Con este valor denimos el intervalo de tiem-

    po por el cual el DOSPageInterval debe de

    contar el mximo de solicitud hechas sobre

    el mismo proceso, por defecto ponemos 1 se-

    gundo.

    DOSBlockingPeriod

    Como ya hemos mencionado anteriormente

    una vez que la IP de cualquiera de nuestros

    clientes cumple con las condiciones arriba in-

    dicadas, dicha IP se suma a nuestra Blacklist,

    trayendo como resultado una pgina de error

    y se le niega el acceso al servidor Apache, esa

    situacin de permanencia en nuestra Blacklist

    no es denitiva y nosotros podemos denirdurante cuanto tiempo dicha IP estar en

    nuestra Blacklist, en nuestro caso dicha situa-

    cin de negacin de acceso ser durante 10

    segundos, una vez cumplido dicho perodo

    de tiempo la IP dejar de estar en nuestra

    Blacklist

    Debemos recordar que el mod_evasise, es-

    cribe en el syslog cualquier incidencia o Ddos

    attack que ha tenido, en dicho chero apare-

    cer de la siguiente forma, ver abajo:

    Active System Attack AlertsOct 24 11:07:35 host mod_evasive[15587]:

    Blacklisting address xx.xx.xx.xx: possible

    attack.

    Reiniciamos el Apache

    Por ltimo debemos hacer una mencin del

    chero de conguracin del Apache, he aqu

    unos consejos que servirn para poder me-

    jorar el funcionamiento del servidor Apache

    y lo reforzarn contra ataques maliciosos

    a travs de Internet.

    HostNameLookups offNo activaremos la directriz, de esa forma el

    Apache registrar la IP de acceso de cada

    cliente que acceda al servidor, si la activa-

    mos traer como consecuencia un menor

    rendimiento del servidor.

    MinSpareServers/MaxSpareSarvers

    Ambas directrices sirven para regular la can-

    tidad de procesos, es decir tratan de mantener

    el suciente nmero de procesos de carga, pa-

    ra ello comprueban la cantidad de veces que

    un proceso se queda esperando una peticin,si son menos que el valor especicado por la

    instruccin MinSpareServer crea una reserva,

    si es superior a MaxSpareServer eliminar los

    procesos sobrantes, los valores que vienen por

    defecto son vlidos y no conviene alterarlos.

    KeepAliveTimeOut 15

    Este es el tiempo por el cual el servidor Apa-

    che esperar en atender la recepcin de la si-

    guiente peticin, una vez pasado este tiempo

    el proceso desaparece, si el servidor Apache

    recibe muchas peticiones es aconsejable redu-

    cir dicha cantidad.

    AllowOverride None

    No permitiremos que un usuario del sistema

    pueda cambiar o sobrescribir mediante los

    cheros .htaccess con el propsito de alterar

    el funcionamiento del Apache.

    Una vez llegado al nal del articulo,

    hemos visto las formas de ataques que se

    producen a travs de la red, o mejor dicho,a travs de Internet, que van explcitamente

    a intentar atacar al servidor mediante solici-

    tudes POST, para el cual hemos dispuesto la

    instalacin del modulo mod_security con la

    intencin de poner un ltro a dichas solicitu-

    des y evitar en lo posible ataques a travs de

    aplicaciones web que pueden producir un fa-

    llo de seguridad en el sistema, tambin dicho

    mdulo nos da una idea de cual puede ser el

    usuario del sistema utilizado para producir

    el ataque. Junto con el mdulo dos evasive

    que nos protege de los ataques de negacinde servicio, tambin conocido como Ddos

    atacks, evitando que mediante un montn

    de solicitudes reiterativas sobre el servidor

    Apache atacado provoque la cada de ste.

    Tambin hemos comentado la manera de

    mejorar los parmetros de conguracin del

    Apache accediendo al chero de congura-

    cin del mismo.

    Despus de este curso podramos caer

    en la tentacin de empezar a instalar cual-

    quier mdulo para el servidor Apache que

    pueda hacer el mismo trabajo de proteccin,

    pero debemos de advertir que cuantos ms

    mdulos sean instalados, menor ser el redi-

    miendo del servidor, tambin puede abrir un

    fallo en la seguridad de su servidor dejando

    un hueco de seguridad el cual un cracker

    puede aprovechar y tener acceso al sistema.

    Lo que es ms importante, y como de open

    source estamos hablando, es importante que

    dicho mdulo tenga una comunidad que

    lo mantenga de tal forma que se actualice

    rpidamente en caso que aparezca un fallo

    de seguridad. Si dicha comunidad no existe

    no conviene pensar en instalarlo en nuestroservidor, porque podra resultar un peligro

    para nuestro sistema, sobre todo en un en-

    torno de produccin.