Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Apache2, procesmanagement & veiligheid

Pagina: 1
Acties:

  • Mattijs.id
  • Registratie: December 2011
  • Laatst online: 21:36
Goedemiddag tweakers,

Ben sinds gisteren bezig met het opnieuw inrichten van mijn vps, wat bijna af is.

Toen ben ik nadat alles weer online was even met htop rond gaan kijken, en het viel me op hoeveel processen onder een vrij 'hoge' user draaide. www-data en root komen verdomd vaak voor.

Zie screenshot.
Afbeeldingslocatie: http://db.tt/yEJc72pF

Ik heb wat rondgezocht naar een betere oplossing voor dit probleem. Ik kwam o.a. apache2-mpm tegen, ngix en suPHP.

Het lijkt me hierbij het... veiligst als het proces van website x, onder user x draait, welke met ftp gechroot wordt naar ~. Hierdoor host ik de websites in /var/www/<sitenaam>/. en mocht een website raar doen, kan alleen de /home/<user>/. directory en de /var/www/<sitenaam>/. directory gekloot in voorkomen.

Nu ben ik dit als hobby/interesse aan het doen, maar ik vroeg me af wat de oplossingen in de meer professionelere sferen hiervoor waren. Hoe maak je dit geheel veilig?

In mijn denkwijze; Hoe zorg je ervoor dat een website onder proces wat gedraait wordt door user x, ook de directory /home/x/<projectbestanden> en /var/www/<sitenaam x>/website bestanden owned? Of zijn hier betere oplossingen voor?

Oja, alvast smakelijke lunch =P

  • KoosDijk
  • Registratie: Januari 2008
  • Laatst online: 21:11
Toevallig heb ik dat gister opgezet na testen met apache2-mpm-itk. Werkte in onze testomgeving uitstekend en in de productie (tot nu toe) ook.

Wat je inderdaad doet is elke vhost van Apache draaien onder zijn eigen user. Dan heb je dus ook geen gedoe met rechten + FTP.

Ik heb op mijn site een kleine how-to gezet: http://koosdijkstra.nl/?p=25.

Geen spam hoop ik, het is een archief voor mijzelf en ik heb er totaal geen belang verder bij.

Verwijderd

De beste oplossing is wat mij betreft toch anders.
Ik vind niet dat de gebruiker waaronder de website draait alle bestanden moet kunnen aanpassen. Ik vind ook dat in een veilige oplossing elke website onder een aparte gebruiker moet kunnen draaien.

Als je dat combineert en met bijvoorbeeld mod_fcgid gaat werken, kom je uit op het volgende:

Per website maak je een group aan, en maak je twee users:
- Eén om de bestanden te kunnen aanpassen (bijvoorbeeld via FTP, SFTP, SSH+SVN).
- Eén om de code onder te laten uitvoeren.

Op deze manier kun je de hoofddirectory afschermen door alleen de gebruiker(s) en de groep rechten te geven, en de rest van de wereld niets. Directories en bestanden waar de webapplicatie moet kunnen lezen, krijgen respectievelijk de rechten 0750 (dir) en 0640 (file), en waar ook moet kunnen worden geschreven is dat 2775 (dir) en 0660 (file).

Als de webapplicatie binnen die directory iets aanmaakt, wordt door de setgid bit op de directory de group automatisch de eigenaar en worden de rechten overgezet voor zover wordt toegelaten door de umask.

Hoe je het precies doet maakt overigens niet zoveel uit. Je kunt met PHP-FPM ook verschillende processen onder verschillende users draaien en met bijvoorbeeld nginx voor verschillende virtual hosts naar de verschillende sockets verwijzen. Zorg vooral dat je weet wat je doet.

Dat is meteen ook mijn grootste weerstand tegen tutorials zoals hierboven, want hoewel goed bedoeld, er zijn teveel mensen die het kopiëren en plakken en nog steeds geen bal snappen van wat ze aan het doen zijn.

  • Mattijs.id
  • Registratie: December 2011
  • Laatst online: 21:36
.....apache2-mpm-itk.....
Wat je inderdaad doet is elke vhost van Apache draaien onder zijn eigen user. Dan heb je dus ook geen gedoe met rechten + FTP.
Dat beantwoord maar een deel van mijn vraag.

In plaats van apache2 draai je dus apache2-mpm-itk en zorg je ervoor dat alleen die user kan kloten in /var/www/<sitenaam>/... maar hoe doe je dit voor de /home/... ?
Zorg vooral dat je weet wat je doet.

Dat is meteen ook mijn grootste weerstand tegen tutorials zoals hierboven, want hoewel goed bedoeld, er zijn teveel mensen die het kopiëren en plakken en nog steeds geen bal snappen van wat ze aan het doen zijn.
Daarom probeer ik wat reacties te krijgen.. hopelijk komt er uit dit geheel dan een ' winnaar'. Moet wel zeggen dat ik een low-profile vps'je draai. Meeste zijn hobby sites m.u.v. mijn portfolio. Toch wil ik het mezelf graag goed aanleren, alleen daar zijn dus ervaringen vanuit 'boven' voor nodig om te kijken wat het veiligste is t.o.v. de makkelijkheid van instellen. Ik ken mezelf een beetje, config files e.d. zijn allemaal niet erg, maar niks is zo irritant als na 8 uur kloten nog steeds geen resultaat hebben =P

Wat ik wel al begrijp is dat er een aantal grotere kampen zijn in dit verhaal. Ik hoop iets van duidelijkheid te krijgen in de moeilijkheidsgraad van het opzetten & onderhoud in die kampen, samen met de veiligheid van het geheel.

  • KoosDijk
  • Registratie: Januari 2008
  • Laatst online: 21:11
Mattijs.id schreef op zondag 15 januari 2012 @ 12:50:
[...]

Dat beantwoord maar een deel van mijn vraag.

In plaats van apache2 draai je dus apache2-mpm-itk en zorg je ervoor dat alleen die user kan kloten in /var/www/<sitenaam>/... maar hoe doe je dit voor de /home/... ?
Nee, dat doe je niet. Je zorgt dat een vhost op een bepaalde user draait. Dat betekent dat de user ook kan lezen/schrijven buiten /var/www, als die user daar maar schrijfrechten heeft.
Verwijderd schreef op zondag 15 januari 2012 @ 12:34:
De beste oplossing is wat mij betreft toch anders.
Ik vind niet dat de gebruiker waaronder de website draait alle bestanden moet kunnen aanpassen. Ik vind ook dat in een veilige oplossing elke website onder een aparte gebruiker moet kunnen draaien.

Als je dat combineert en met bijvoorbeeld mod_fcgid gaat werken, kom je uit op het volgende:

Per website maak je een group aan, en maak je twee users:
- Eén om de bestanden te kunnen aanpassen (bijvoorbeeld via FTP, SFTP, SSH+SVN).
- Eén om de code onder te laten uitvoeren.

Op deze manier kun je de hoofddirectory afschermen door alleen de gebruiker(s) en de groep rechten te geven, en de rest van de wereld niets. Directories en bestanden waar de webapplicatie moet kunnen lezen, krijgen respectievelijk de rechten 0750 (dir) en 0640 (file), en waar ook moet kunnen worden geschreven is dat 2775 (dir) en 0660 (file).
Dat zou ook kunnen bij apache2-mpm-itk. Het zou inderdaad kunnen, maar voor mij is dat niet mogelijk ivm een ander doel. Ik heb dan ook gewaarschuwd dat de door mij genoemde pagina mijn archief is. ;)
Verwijderd schreef op zondag 15 januari 2012 @ 12:34:
Dat is meteen ook mijn grootste weerstand tegen tutorials zoals hierboven, want hoewel goed bedoeld, er zijn teveel mensen die het kopiëren en plakken en nog steeds geen bal snappen van wat ze aan het doen zijn.
Absoluut. Ik gaf het alleen maar aan als handvat om er eens naar te kijken.