ApacheSetup

From Cncz
Revision as of 15:16, 23 May 2008 by Petervc (talk | contribs)
Jump to: navigation, search

Apache Setup

In order to improve the security of websites, we transition to a new setup for our webservers. Until recently we had just one apache httpd running on a webserver. Different websites were served through the apache virtualhosts mechanism. The main advantage of running just one httpd is that all websites share the pool of httpd processes. The main disadvantages are inter-website security and shared log files.

Om aan deze nadelen tegemoet te komen is er op de nieuwe webserver athos voor een andere opzet gekozen. In plaats van virtual hosts files die door één apache server worden afgehandeld gebruiken we nu per website een eigen httpd met een aparte user per website. Dat heeft tot gevolg dat de bestanden in de web-docs directory niet langer leesbaar hoeven te zijn voor iedereen. Bovendien gaat iedere website nu op een eigen ip-adres draaien wat tot gevolg heeft dat iedere website die https nodig heeft zijn eigen SSL-certificaat kan krijgen.

De directory structuur ziet er als volgt uit (we gebruiken hier website als voorbeeld naam):

  • /var/www/www1/website

top directory waarbinnen alle bestanden m.b.t. deze website zich bevinden

  • /var/www/www1/website/web-docs

De document root voor de website. De standaard situatie voor de web-docs directory wordt lees en schrijfbaar voor de unix group met daarin alleen de users die de website beheren. Daarnaast heeft de user waaronder de website-specifieke httpd draait alleen leesrechten.

  • /var/www/www1/website/test-docs

De document root voor een test versie van de website, om bijvoorbeeld een nieuwe versie van de website uit te proberen voordat deze live gaat. Deze test-versie is bereikbaar via poort 8080, d.w.z. gebruik als URL: http://www.website.science.ru.nl:8080/ en poort 4443 voor https, d.w.z. gebruik als URL: http://www.website.science.ru.nl:4443/ (merk op dat de echte site gebruik maakt van poort 80 voor http en poort 443 voor https). Lees- en schrijfrechten gelijk aan de web-docs directory.

  • /var/www/www1/website/httpd/logs

De directory waarin de log-bestanden van httpd voor deze website terecht komen met als belangrijkste access_log en error_log. Merk op dat wij er sterk op aandringen dat beheerders zelf controleren wat er in met name error_log terecht komt en daarop actie ondernemen om de error_log zoveel mogelijk leeg te houden.

  • /var/www/www1/website/httpd-test/logs

Log-directory voor de test-versie van de website

  • /var/www/www1/website/writable

Bij voorkeur de enige directory waar httpd in mag schrijven, standaard maken wij daar ook een sessions subdirectory in aan die door php als session_save_path directory gebruikt wordt. Als er een schrijfbare directory nodig is in de website, maak die dan bij voorkeur in deze directory aan.

  • /var/www/www1/website/cgi-bin

de cgi-bin directory voor de website.

  • /var/www/www1/website/cgi-bin-test

en natuurlijk een voor de test-versie.

Vermijd het gebruik van absolute paden in webpagina's, een website zou altijd verplaatst moeten kunnen worden zonder dat je daarvoor je pagina's hoeft aan te passen!