[apache2] draaien met uid/gid van de loginuser

Pagina: 1
Acties:

  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Ik heb een probleem met het inregelen van beveiliging mbt Linux en
Apache 2.2. Ik loop namelijk tegen enkele beperkingen aan van apache
2.2. Nu draai ik nog alles onder httpd:httpd (onze webserver-user) en
php safe-mode. Waar ik naar toe wil is een situatie waarin apache draait
met de rechten van een user, zodat deze in principe niet langer buiten
de docroot kan komen (of iig niet in de docroot van anderen).

Op het eerste gezicht is dit vrij standaard: men neme apache 2.2 met
suexec/mod_ruid/mod_suid2/suphp/mpm-itk en Klaar is Kees. In mijn
situatie zijn er echter enkele complicaties, waarvan de belangrijkste is dat niet iedereen de beschikking heeft over een domeinnaam. Sommigen werken met userdirs (host.nl/~user); anderen hebben een url met een alias (host.nl/alias), waarbij host.nl = mijn host. De grap is dat je meestal in moet stellen met welke privileges apache moet draaien, maar dat dit alleen per virtualhost kan. En userdirs en aliasen hebben natuurlijk geen eigen virtualhost.

Sommige modules hebben de mogelijkheid om het apache-proces automatisch onder de owner en group te laten draaien (zoals mod_ruid), maar het probleem hiermee is dat in sommige docroots bestanden staan met verschillende owners (en dus weer dat je alleen per virtualhost aan kunt geven of de rechten preconfigured zijn of over moet worden genomen van de owner). Bovendien werken de meeste modules of alleen voor php, of alleen voor voor cgi.

Hopelijk is mijn probleem zo een beetje duidelijk. Heeft iemand hier ervaring met het draaien van apache onder verschillende IDs icm aliases en/of userdirs?

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • Hmzaniac
  • Registratie: Januari 2002
  • Laatst online: 05-08-2023

Hmzaniac

Evil Admin

met SuPHP kan je instellen dat php scripts met de rechten van de owner:group van dat desbetreffende php bestand uitgevoerd worden. Apache zal nog steeds onder de UID van apache draaien, maar de php scripts dus niet. Dan hoef je het niet per virtualhost te doen.

Wat dat betekent is dat je wel ervoor zal moeten zorgen dat ownership van alle bestanden inderdaad goed geregeld is, mogelijk een herindeling van je directorystructuur en goed nadenken hoe je het opzet.

Helaas kunnen apache2 MPM's alleen UID wisselen per virtualhost, voor zover ik weet komt dat door de manier waarop het opgezet is en omdat verschillende UID's vrijwel alleen nodig zijn bij verschillende vhosts, niet bij aliases of userdirs.

Om je probleem op te lossen wat betreft aliases is ze omzetten naar vhosts. Dus ipv http://www.domain.tld/alias gebruik gaan maken van alias.domain.tld. Voor je userdirs zou je dit probleem kunnen oplossen dmv hetzelfde, namelijk ipv domain.tld/~user user.domain.tld.

Het enige nadeel is dat je dit niet door middel van mass vhosts kan doen, omdat je dan geen owner/group per vhost kan instellen (naar mijn weten) dus zal je ze met de hand moeten definieren.

Overigens vraag ik me af wat het probleem is met een apache die in andermans docroot kan komen? Zolang je in apache een docroot instelt voor je default domein kan ie daar niet buiten, en andermans docroot is alleen een probleem met scripts (wat voor php/cgi af te vangen is door suPHP/SuExec), statische content maakt het niets uit (want als er naar gelinkt kan worden is het zowiezo al publiek.

Ik heb een WOS-post!


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 09:40
Zelf heb ik dit draaien met apache 2.2.3 worker, mod_fcgid, suexec en zowel PHP4 als PHP5 in CGI mode aangestuurd met mod_fcgid.

Vaak zal je de suexec binary moeten patchen om precies datgene wat je wilt te kunnen bereiken. In mijn geval gaat het om een shared PHP installatie die gewoon door elk uid opgeroepen moet kunnen worden, in standaard situaties maak je voor elke VHost of voor elke gebruiker een wrapper script die de juiste dingen doet.

SuExec zal gewoon met mod_userdir werken, als suExec ingeschakeld is en een request wordt afgehandeld door mod_userdir zal automatisch suExec gebruikt worden bij het aanvragen van (fast)cgi scripts.