Protección del servidor Apache.pdf
-
Upload
cennio-di-gerardo-castro -
Category
Documents
-
view
219 -
download
0
Transcript of Protección del servidor Apache.pdf
-
7/22/2019 Proteccin del servidor Apache.pdf
1/4
seguridad
Proteccin de servidor
40 Linux+ 1/2007
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.