Pas 1 - Instal·lació del servidor web
Pas 2 - Assegureu els vostres directoris d'inici
Pas 3: apliqueu un pedaç de seguretat a Apache per a la separació de privilegis d'usuari
Pas 3: creeu el vostre primer host virtual
Pas 4: Configuració d'Apache perquè s'executi com un altre usuari
Pas 5: amagar la versió d'Apache
Pas 6: reinicieu Apache per aplicar els canvis
Conclusió
És fàcil agafar dreceres a l'hora de protegir un servidor, però us arriscareu a perdre dades en cas que un atacant obtingui accés root a qualsevol dels vostres servidors. Fins i tot per a instal·lacions senzilles, heu de protegir el vostre servidor prèviament. La seguretat dels servidors és un tema ampli i varia segons el sistema operatiu i les aplicacions que s'hi executen.
Aquest tutorial se centra a protegir Apache amb CentOS 6. Hi ha uns quants passos posteriors a la instal·lació que podeu fer per protegir-vos de l'escalada de privilegis, així com dels atacs amb menys privilegis.
Sense més preàmbuls, comencem.
Pas 1 - Instal·lació del servidor web
Per descomptat, si no teniu instal·lat Apache o PHP, hauríeu de fer-ho ara. Executeu aquesta ordre com a usuari root o utilitzeu sudo:
yum install httpd php
Pas 2 - Assegureu els vostres directoris d'inici
Ara que Apache està instal·lat, continuem i comencem a assegurar-lo. En primer lloc, volem assegurar-nos que els directoris d'altres usuaris no siguin visibles per ningú excepte pel propietari. Modificarem tots els directoris d'inici a 700, de manera que només els propietaris respectius dels directoris d'inici puguin veure els seus propis fitxers. Executeu aquesta ordre com a root o utilitzeu sudo:
chmod 700 /home
chmod 700 /home/*
chmod 700 /home/*/*
Mitjançant l'ús de comodins, estem cobrint tots els fitxers que resideixen actualment al directori d'inici.
Pas 3: apliqueu un pedaç de seguretat a Apache per a la separació de privilegis d'usuari
Abans de pegar Apache, primer hem d'instal·lar el repositori que conté el paquet amb el pedaç. Executeu les ordres següents com a root (o sudo).
yum install epel-release
yum install httpd-itk
Amb "apache2-mpm-itk", podem dir quin usuari s'ha d'executar PHP segons l'amfitrió virtual. Afegeix una nova opció de configuració AssignUserId virtualhost-user virtualhost-user-group, que ens permet dir a Apache/PHP que executi codi d'usuari amb un compte d'usuari específic.
Si esteu compartint aquest servidor, suposo que ja heu creat un amfitrió virtual per a Apache abans. En aquest cas, podeu saltar al pas 4.
Pas 3: creeu el vostre primer host virtual
Podeu seguir la plantilla següent per crear un host virtual a Apache.
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
</VirtualHost>
Obriu el vostre editor de text preferit /etc/httpd/conf.d/example-virtualhost.confi afegiu-hi el contingut anterior. Aquí teniu l'ordre per utilitzar nano:
nano /etc/httpd/conf.d/example-virtualhost.conf
Permeteu-me explicar la configuració aquí. Quan especifiquem "NameVirtualHost", en realitat estem dient al servidor web que estem allotjant diversos dominis en una IP . Ara, en aquest exemple, he utilitzat mytest.websitecom a exemple de domini. Canvieu-ho al vostre o al domini que trieu. DocumentRootés el que indica a Apache on es troba el contingut. ServerNameés una directiva que fem servir per indicar a Apache el domini del lloc web. I una darrera etiqueta, </VirtualHost>, que indica a Apache que és el final de la configuració de l'amfitrió virtual.
Pas 4: Configuració d'Apache perquè s'executi com un altre usuari
Com s'ha esmentat anteriorment, part de la seguretat del vostre servidor inclou l'execució d'Apache/PHP com a usuari independent per a cada host virtual. Dir-li a Apache que ho faci és senzill després d'haver aplicat el pedaç; tot el que heu de fer és afegir:
AssignUserId vhost-user vhost-user-group
... a la vostra configuració. Aquest és el aspecte de l'amfitrió virtual d'exemple després d'haver afegit aquesta opció:
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
AssignUserId vhost-user vhost-user-group
</VirtualHost>
La màgia està en la línia que comença amb AssignUserId. Amb aquesta opció, diem a Apache/PHP que s'executi com a usuari/grup següent.
Pas 5: amagar la versió d'Apache
Aquest pas és bastant senzill; només cal que obriu el fitxer de configuració d'Apache executant l'ordre següent com a usuari root:
nano /etc/httpd/conf/httpd.conf
Cerqueu "ServerTokens" i canvieu l'opció després a "ProductOnly". Això diu a Apache que només reveli que és "Apache", en lloc d'"Apache/2.2" o alguna cosa semblant.
Pas 6: reinicieu Apache per aplicar els canvis
Ara que hem assegurat el servidor, hem de reiniciar el servidor Apache. Feu-ho executant l'ordre següent com a root o amb sudo:
service httpd restart
Conclusió
Aquests són només uns quants passos que podeu fer per protegir el vostre servidor. Una vegada més, fins i tot si és algú en qui confieu que allotja un lloc web al vostre servidor, hauríeu de planificar protegir-lo. En els escenaris anteriors, fins i tot si un compte d'usuari està compromès, l'atacant no haurà obtingut accés a tot el servidor.