Sikre PHP-applikasjoner med suexec

October 13  by Eliza

Hvis søknaden kjører på Apache (som mer enn halvparten av nettsteder på Internett gjør), kan det være lurt å vurdere å aktivere suexec i Apache-konfigurasjonen. Suexec er en mekanisme som er buntet med Apache som forårsaker skript som skal kjøres som brukeren som eier manuset, heller enn å kjøre dem som bruker webserveren.

I en ikke-suexec miljø, er alle skriptene kjøres som samme bruker-ID som web-serveren selv. Dessverre, kan man sårbar script gi en ondsinnet bruker bakdør tilgang til hele web-serveren, inkludert skript som kjører på andre nettsteder ligger på samme server.

Suexec forsøk på å redusere dette problemet ved å begrense web-applikasjoner til sine egne områder og kjører dem under sine ownersâ € ™ bruker-ID, snarere enn under web Servera € ™ s bruker-ID. For eksempel vil dette skriptet kjøres under bruker-IDen jsmith:

/home/~jsmith/public_html/scripts/please_hack_me.php

En ondsinnet bruker kan utnytte dette manuset, men han eller hun ville ha bare tilgang til filer og programmer som det jsmith bruker har lov til å bruke. Alle andre brukere på serveren ville være beskyttet mot jsmithâ € ™ s usikker script.

Dessverre, får suexec skal fungere skikkelig med virtuelle verter, eller flere uavhengige nettsteder fysisk befinner seg på samme web-server, kan være vanskelig. Suexec er laget for å kjøre skript som finnes i nett Servera € ™ s dokument rot.

De fleste virtuelle verter er satt opp på en måte som gir hver enkelt nettside sitt eget dokument rot, og hver Sitea € ™ s dokument rot ISNA € ™ t plassert under web Servera € ™ s dokument rot. For å komme rundt denne begrensningen, må systemadministratoren legge hver virtuelle Hosta € ™ s dokument roten til nettet Servera € ™ s dokument rot variabel i Apache konfigurasjonsfil.

Suexec krever også at PHP-skript kjøres som Common Gateway Interface (CGI), som er tregere enn å kjøre PHP som en ferdigbygd modul med Apache. CGI var den første gjennomførbar modell for web-applikasjoner, og det er fortsatt brukes for enkle skript. Men når du forlater riket av PHP scripting og begynne å skrive fullverdige programmer, youâ € ™ ll trenger ytelsen boost av forhåndskompilert PHP.

For ganske enkle web-servere, kan suexec holde en usikker søknad fra tråkke over alt annet. Men i et mer komplekst miljø med virtuelle servere, ferdigbygd moduler, og dusinvis eller hundrevis av brukere, trenger du en sikkerhetsmodell som er litt mer robust.