Está en la página 1de 0

Seguridad y optimizacin, el camino del

guerrero hacia la paz interior del GLAMP


David Hernndez (Dabo) | @daboblog | www.daboblog.com
2013
Info y herramientas usadas en mi demo de ConectaCon.

Escenario
Para la demo de Jan, us conectando va SSH, 4 servidores bajo ebian !
"#$%&inu' (ro(ios en (roducci)n, dentro un entorno de (ruebas y alcance controlado.
&a si*uiente informaci)n es v+lida tambin (ara $buntu, en otras distros, (arcialmente.
,l objetivo era dar otro enfo-ue, no s)lo desde el (unto de la se*uridad, hablamos
tambin de o(timi.ar recursos. #o olvidemos -ue /la dis(onibilidad es se*uridad0.
Se basaba en un escenario /cl+sico0. Servidor GLAMP 1"#$%&inu', 2(ache, 3yS4&
y PHP5 confi*urado (or defecto 1con un 6ernel com(ilado con el (arche de *rsecurity5.
7evisando temas relativos a cuestiones de seguridad y optimizacin, reali.ando
diversos ata-ues y ver c)mo se (odan miti*ar, adem+s de monitori.arlos en el lado del
servidor viendo tra.as de los mismos y lo*s, mientras iba haciendo cambios.
Ir insertando en el P8 enlaces a material de a(oyo y varias de las herramientas -ue
us, junto a otras -ue os (ueden resultar 9tiles en vuestro da a da con los Sistemas.
Sobre estas cuestiones, hay *ran material (ublicado (or otros 1-ue incluyo a-u5 el mo,
tomadlo como un (unto de (artida m+s y a(licad los cambios con (recauci)n :;5.

Sobre Apache, MySQL, Nginx, DB, Amazon EC2
SysAdmin - Amazon
Podcast <,s(ecial Sys2dmin0 con 7icardo "alli 1$I= > 3ename5
12dem+s del audio, os recomiendo leer el te'to inferior -ue le acom(a?a5
Podcast /,s(ecial 2ma.on ,C@0 con 7icardo "alli y 7a9l #aveiras.
Bases de datos
=ases de datos Aeb B estrate*ias, escalado, ti(os, etc. Por 7icardo "alli.
C(timi.ar 3yS4& D 3yS4&Euner D 3yS4l (erformance D otros scri(ts.

Sobre Apache (recuerda...)
Nota 1,n el Podcast /,s(ecial Sys2dmin0, dia(ositiva anterior, hablamos a fondo de estas confi*uraciones5.
Apache 2 y 3ulti(roceso (MPM!/Control din+mico de los (rocesos se*9n la car*a bajo demanda0.
Pre"or# 1default5 Procesos hijo, modG(h(. ,n teora m+s estable y com(atible con m+s m)dulos o soft. 3ayor
ca(acidad de aislamiento si hay un (roblema con una (etici)n res(ecto al resto de (rocesos /hijo0.
$or#er lan.a (rocesos hijos e hilos 1hebras o sub(rocesos5 (or hijo,PHP va comofastC"I. 3enor consumo
de memoria -ue PreforH, m+s rendimiento. Si un hilo falla, afectar+ al resto..
%ime&utse*undos antes de -ue se cancele un cone'i)n (or falta de res(uesta. 1,ntre @I y JI se* oH5.
'eepa(ive1cone'iones (ersistentes5 recomendable 1salvo e'ce(ciones5 activo K /Cn0. Permite m9lti(les
(eticiones sobre la misma cone'i)n ECP. Ltil (ara sesiones HEEP de lar*a duraci)n 1(or ej foros5.
Ma)'eepA(ive*e+uestslimita el n9mero de (eticiones(ermitidas (or cone'i)n cuando 6ee(2live est+
activado. Por defecto I 1ilimitadas5. Se recomienda un valor alto, veris ejem(los con MII, M.III, etc.
'eepA(ive%imeout Se*undos -ue2(ache es(erar+ (eticiones subsi*uientes antes de cerrar una cone'i)n
(ersistente. Si ya ha sidorecibida una (etici)n, se a(licadirectiva Eimeout (ara cerrarla cone'i)n.Cuanto
mayor sea el valor de timeout, m+s (rocesos del servidor ocu(ados es(erando en cone'iones con clientes no
activos. 7ecomendable entre 2 y , segundos.
es(us veremos c)mo monitori.ar 2(ache y m+s servicios, (ero en mi demo tambin mostr -Server
Status., desde el terminal /a(achectl fullstatus0, o accediendo va Aeb. Eutorial de confi*uraci)n e info.
17ecordad lo -ue dije de 2(ache @.4. I%C asncrona, (ro'y inverso ti(o #*in', menos memoria, cachin*, etc5.

Sobre Apache (Caching)
Si record+is las herramientas -ue instal en la demo, us tanto Memcached a nivel de Server,
como el mdu(o para Apache memcache y N:Cache como sistema de cachin* (ara scri(ts de
PHP. Si est+ instalado 3emcached, hay muchos C3S -ue (ueden usarlo bien de forma /nativa0
18oros S385 o va un (lu*in como en el caso de OordPress 13emcached Cbject Cache Plu*in5.
,stas soluciones, est+n dis(onibles desde los sources de ebian 1o $buntu5 y con un a(titude
install memcached (h(P:'cache (h(P:memcache -uedaran instaladas. es(us (odis
com(robar si est+n car*ados los m)dulos tanto con un (h( info, como tecleando en la lnea de
comandos (h( : : ri 1y detr+s ira el m)dulo, (or ejem(lo memcache o 'cache5.
Podis se*uir este tutorial de 8alHo (ara instalar 3emcached y el m)dulo de 2(ache y este otro
1con m+s o(ciones5 de Jos 3ara en el -ue incluye el so(orte (ara OordPress.
e todos modos, no o(vid/is cam0iar (as con"iguraciones (or defecto de los m)dulos ya -ue
no son las adecuadas tal y como se instalan. Hay otras soluciones ti(o 2PC 1las re(asamos en el
(odcast5 (ero con PHP P.P ha lle*ado C(scode y a falta de (robarlo, lo veo interesante.
7ecordad -ue (ara ver si todo est+ oH cuando se car*a al*9n m)dulo en 2(ache, se cambia la
confi*uraci)n 1o del fichero (h(.ini5, con un tail :f %var%lo*%a(ache@%error.lo*, veris si es correcto,
tambin des(us de ejecutar un a(achectl restart o %etc%init.d%a(ache@ reload.
Para ver si la sinta)is de Apache est+ oHB a(achectl confi*test, las o(ciones de com(ilaci)nB
a(achectl :Q, m)dulos car*adosB en %etc%a(ache@%mods:enabled% otros comandos de 2(ache.

Seguridad por Oscuridad
,n la demo, hice varias (ruebas con #ma(, Curl, Server S(y o '(robe@ (ara identificar puertos
a0iertos o servicios activos en el server, detectar la versi)n del S.C o m)dulos de 2(ache.
2ta-ues automati.ados buscando versiones de softAare vulnerables, un (osible /I day0, o
cuando no siem(re se (uede (archear, hacen necesario cambiar las confi*uraciones (or defecto.
Apache 1 ,n %etc%a(ache@%conf.d%securityB Server%o#ens Prod y ServerSignature Cff.
Para evitar listados de directorios, us -&ptions 2 3nde)es., tambin se (uede via .htaccess.
#o olvidis car*ar la nueva conf de 2(ache con %etc%init.d%a(ache@ reload o a(achectl restart5.
P4P 1 Eras el cambio, vimos -ue con un curl :i laAeb.com D less, se*uamos viendo versiones de
SS& o PHP. ,n %etc%(h(P%a(ache@%(h(.ini dejamos en /Cff0 el valor de e)pose5php! Como en el
caso anterior, (ara car*ar una nueva confi*uraci)n de PHP, hay -ue relan.ar la de 2(ache.
SS4 1 Eambin vimos como a9n con un fireAall activo, se*ua saliendo la versi)n y S.C (or el
banner de SSH. ,n este caso 1ebian =ased5, la versi)n de SSH se oculta como una o(ci)n de
com(ilaci)n.
,ditando %etc%ssh%sshdGconfi* e incluyendo /6e0ianBanner no. 1y %etc%init.d%sshd restart (ara
actuali.ar cambios5 no revela tanta informaci)n, s)lo la versi)n. 3+s sobre se*uridad en SSH.
MyS7L 1 7ecordad -ue (ara -ue s)lo admita cone'iones desde el localhost, hay -ue insertar en
my.cnf la si*uiente lneaB 0ind-address 8 92:!;!;!9 1y des(us, un %etc%init.d%mys-l restart5.
&tros 1 1=I#, Postfi', etc5 Cs recomiendo leer esta entrada de Infosec Institute sobre el tema.

Seguridad en PHP
imos un re(aso a las directivas m+s im(ortantes de cara a la se*uridad en PHPB lmites de
memoria, errores, Suhosin Patch 1a MR%I!%@IMJ fuera de ebian S (or un bu*5 funciones, etc.
Como (unto de (artida, recomend el uso de Ph(SecInfo. Se descom(rime en la ra. del sitio el
fichero y se accede va Aeb (ara com(robar el estado (or defecto de vuestra instalaci)n.
Junto a cada secci)n, tenis un enlace al motivo (or el cual al*9n valor (uede estar marcado
como un (roblem+tico 1se*9n colores, de(endiendo del im(acto5. 7esumen y e'(licaci)n.
Eambin con un ejem(lo de un /info.(h(0 -ue no deba estar activo, inclu en (h(.ini al*unos
valores deshabilitando funciones (ara evitar (osibles brechas de se*uridadB
disa0(e5"unctions K system, e'ec, (assthru, shell, shellGe'ec, (o(en, (close, (rocGnice, (rocGterminate,
(rocG*etGstatus, (rocGclose, (fsocHo(en, leaH, a(acheGchildGterminate, (osi'GHill, (osi'GmHfifo, (osi'Gset(*id,
(osi'Gsetsid, (osi'Gsetuid, esca(eshellcmd, esca(eshellar*, (h(info, (rocGo(en, shoAGsource, (assthru
&tras (ecturas recomendadas<
e=ooH Pro PHP Security @T edici)n 1actuali.ado a la versi)n P.J5 D PHP Insecurity #otes.
@P PHP Security =est Practices D Insertin* Qulnerabilities in Oeb 2((lications D PHP IS.
,vitar ata-ues NSS con PHP In(ut 8ilter D Se*uridad en PHP D 3anual online de PHP, se*uridad.

IDS / IPS - iptables
$na ve. ocultadas las versiones, utilic Portsentry como IS % IPS y vimos su funcionamiento
tanto en modo IS 1sistema de detecci)n de intrusos5 como IPS 1(revenci)n % blo-ueo5.
Para ello, lanc un portscan con Nmap =!2, intentando identificar (uertos, servicios y S.C.
es(us de ver el resultado, ya con menos informaci)n -ue al (rinci(io, instal Portsentry
7ecordad -ue durante la instalaci)n, 1a(titude install (ortsentry5 nos informaba -ue (or defecto
act9a en modo IS y (ara -ue realice un blo-ueo de la IP atacante, haba -ue (oner en /M0 en
/etc%(ortsentry%(ortsentry.conf0 los valores /=&CC6G$P0 y /=&CC6GECP0 1(or defecto en I5.
Ctro valor a tener en cuenta es el /SC2#GE7I"",70, en una de las (ruebas -ue realic, #ma(
(as) la barrera de Porsentry, des(us baj el valor a I y el si*uiente ata-ue ya fue blo-ueado.
#o olvidis una ve. reali.ados los cambios ejecutar un %etc%init.d%(orsentry restart. Con un (so" -i
veris c)mo est+ a la escucha en sus corres(ondientes (uertos tanto en modo IS como IPS.
,s muy im(ortante en cual-uier herramienta de este ti(o, usar las (istas 0(ancas (ara evitar
blo-ueos indeseados a la (ro(ia IP del server, balanceador, /failover0, etc 1/(ortsentry.i*nore05.
es(us, levant y revis la confi*uraci)n de 2P8 8ireAall, un interface (ara interactuar con
i(tables 1tuto5 de una forma m+s /ami*able0 (ara los -ue em(ie.an, con interesantes funciones.
7ealic un ata-ue con #ma( y vimos como AP> ralenti.aba y blo-ueaba el escaneo de (uertos
se*9n el timmin* de #ma(, consi*uiendo este 9ltimo una escasa informaci)n del sistema.
Insisto en la necesidad de documentarse 0ien antes de (oner en (roducci)n estas medidas.

Fuerza Bruta - DoS - WAF
Para ata+ues SS4 ? "uerza 0ruta us enyhosts y 8ail@ban -ue vi*ila m+s servicios como 8EP,
mail o (or ej 2(ache 1ambos va a(titude5. 3irad la documentaci)n y listas blancas % e'clusiones.
Eambin =8 desde el cron blo-ueando con 2P8 8ireAall. Ctra o(ci)n (uede ser SSH"uard.
Como dije en Jan, un 6oS o 66oS bien reali.ado, no (o vais a mitigar con estas
herramientas, (ero ayudar+n en muchas ocasiones a blo-uear (icos de tr+fico indeseado, o
ata-ues desde una o varias direcciones IP. Pero es im(ortante volver de nuevo a la seccin de
-@aching. y Apache (or-ue est+ todo muy relacionado hablando de (eticiones masivas.
Cs resultar+ interesante leer este (ost en S06 sobre /Ata+ues 6oS 0asados en mitigacin0.
#o tuve tiem(o (ara hacer unas (ruebas con Mod Security 1la demo dur) M,MP h5A (ero junto al
libro -ue os coment de su creador 1Ivan 7istic5A os recomiendo leer esta *ran sa*a de 2dastra.
Eambin su entrada sobre otro cl+sico (ara los oS, Mod Bvasive 1en el (ost menciona un viejo
bu* -ue tiene del -ue os habl all5. Como antes, un ifconfi* y detectar las IP (ara las e'clusiones.
Instal oS eflate y vimos la (rotecci)n /2nti oS0 de 2P8. 2tacando desde J servers con
PenE=o' 1#et oS Eester5 y 2(ache =enchmarH, simulando cientos de (eticiones % cone'iones.
Pudindose ver el incremento de tr+fico, lo*s y blo-ueos con a(licaciones a bajo nivel de sistema
como i(traf 1lo (use en modo Sniffer5, vnstat :l, comandos de netstat y otros 9tiles como (ueden
serB lsof, iostat, ioto(, ifto(, 2r(Aatch, 3onitori' 1encontraris otros m+s en el enlace5 etc.

Logs - Monitorizacin
&o*checH 1a(titude install lo*checH5, a(licaci)n -ue ana(iza (os (ogs de la m+-uina y muestra o
enva (or email un informe 1(or defecto cada hora5 sobre sucesos relevantes del sistema.
&o*Aatch 1a(titude install lo*Aatch5, similar a lo*checH, (ero (ro(orcionando m+s informaci)n.
,nva un in"orme diario por emai( con re*istros de %var%lo* 1revisad el fichero de confi*uracion5.
3onit, (ermite monitori.ar (rocesos daemon 1sendmail, 2(ache, 3yS4&, etc5. &a ventaja frente a
otros sistemas es -ue (uede reaccionar a (os eventos, intentando (evantar e( proceso caCdoA
avisando (or email de su intervenci)n. ,s interesante tambin el servicio 3%3onit.
3unin es otra herramienta de monitori.aci)n con m9lti(les (lu*ins -ue (ermiten hacer un
se*uimiento detallado y ver de forma *r+fica de lo -ue sucede en el sistema 1(ost de nMmh5.
Monit y Munin se instalan va a(titude. 7ec, *ua de instalaci)n % con"iguracin en 6e0ian :!
GoAccessA tutorial de Israel, (ara anali.ar lo*s de 2(ache y #*in'. *e(, /a(acheto(0, 2fter*loA0.
#a*ios (uede reali.ar el trabajo de los 4 anteriores. ,s muy robusto y fiable, cuenta con m9lti(les
(lu*ins, monitori.a tanto SoftAare como HardAare, (ermite confi*urar m9lti(les alertas, acceso
va Aeb a las *r+ficas bajo SS& o (or SSH, alertas S3S, clientes (ara m)viles, tablets, etc.
Qa a(titude (odis insta(ar Nagios D, (ero os su*iero leer este com(leto tutorial 1rama @.'5 junto
a este otro sobre la versi)n J.J.M y ebian !.I.M. 7ecomendableB blo* /#a*ios en ,s(a?ol0.
Pandora 83S es otra o(ci)n similar a #a*ios, altamente confi*urable, muy bien documentado y
con un monitor muy potente y a(ertas (ara controlar en tiem(o real lo -ue sucede en el server.

Rootkits Malware - Otros
,n uno de los servers de la demo, sub un root#it de los t(icos -ue se ven en
un OordPress o Joomla com(rometidos. &o detect con &3. $na ve. instalado, anali.a todos
los ficheros buscando cadenas sos(echosas y lue*o va el cron, lo hace de forma incremental con
cada fichero nuevo a diario 1sinta'is b+sicaB maldet :a %(ath5. Ctra alternativa interesante es
Oebserver 3alAare Scanner -ue (uede trabajar (erfectamente en conjunci)n con &3.
Hablando de $ordPress y ata+ues, en esta entrada reco(ilo una serie de (lu*ins y medidas a
(oner en marcha nivel de 2(ache (ara mejorar su se*uridad, bacHu(s, detectar malAare, etc.
Eambin mostr varias a(licaciones (ara detectar rootHits como 76Hunter U $nhide 1dentro de
las o(ciones, hay una (ara -ue mande una alerta (or email si detecta al*uno5 y ChHrootHit. e
todas formas, en la (+*ina anterior hay comandos 9tiles (ara controlar cone'iones de 7ed.
Ctra a(licaci)n -ue (use en funcionamiento es &ynis 1sinta'is b+sica lynis :c5. ,s (r+ctica (ara
ver de forma r+(ida el estado *eneral de la se*uridad del sistema. $n ejem(lo e info.
Si*uiendo con 2((s de este estilo, cit varias (ara com(robar la inte*ridad de ficheros o binarios
tales como 2I, o Eri(Aire 17Hhunter tambin com(ara los hashes 3P de ficheros im(ortantes
con su firma correcta en una base de datos en lnea, aun-ue (uede dar al*9n /falso (ositivo5.
&tros! 7ecomendable /JacHEheStri((er/ (or mi com(a?era en ebianHacHers ,u*enia =ahit.
,s un scri(t (ara instalar, confi*urar y ase*urar $buntu Server. el *ran >oratA su /Project0.
e 3N%B@& @B*% su *ua en P8 sobre se*uridad y Servers 1@IM@5. e %ecmint, esta entrada.
V en 6ragonEar %F, (odis ver mi demo con varios temas comentados a-u 1las dia(ositivas5.

# Disclaimer / Final
David Hernndez (Dabo) | @daboblog | www.daboblog.com
/2sume tu *rado de e'(osici)n y *esti)nalo0 dije en Jan. &as soluciones comentadas a-u
ayudan, (ero un servidor Aeb es inse*uro desde la base y como m+s se a(rende, es estando
-en am0os (ados.. ,s el (unto de vista -ue -uise com(artir en mi emo, es(ero -ue os sea 9til.
3uchas *racias a la or*ani.aci)n, asistentes, (onentes y (atrocinadores de ConectaCon, fue una
e'(eriencia (ara re(etir. ebajo, (a "oto de grupo 1el resto5, a(rend mucho con vosotros :;5
La entrada original en mi blog, all ir actualizando esta info y podis dejar vuestros comentarios.

También podría gustarte