Kirjoittaja Aihe: Apache ja oikeudet  (Luettu 1757 kertaa)

joulu

  • Käyttäjä
  • Viestejä: 7
    • Profiili
Apache ja oikeudet
« : 23.12.06 - klo:12.52 »
Vastaan tuli ongelma php scriptien kanssa. Käytössä on apache ja php5. Jos jokin käyttäjä pääsee lähettämään servulle php sivun,  jonka avulla voi ajaa apachen käyttäjän kautta koneella joitain ohjelmia, niin ongelmia tulee paljon. Esim  sivun kautta voi käynnistää ohjelman joka tukkii 80 portin, vaikka vain rootilla on oikeudet käynnistää ohjelmia näin pienissä porteissa.  Apache käynnistetään rootin tunnuksilla, ja apachen konffissa on määritelty oma käyttäjä, jota apache käyttää.

Tälläisellä php sivulla voi myös selata kaikkia kansioita, joihin netistä pääsee, vaikka oikeudet olisivat vallan poistettuina niin siihen kansioon pääsee tämän sivun avulla. Tälläisellä sivulla voi muuttaa myös minkä tahansa tiedoston chmodia, nimeä, poistaa ja lisätä tiedostoja. Käyttäjien nettikansion chmodi on 755.  Tähän ei auta php funktioiden disabloiminenkaan, tai sitten olen koittanut vääriä funktioita.

Mitä pitäisi tehdä, jotta tälläisellä php-sivulla käyttäjä, voisi sotkea vain oman kansiosta, eikä kaikkia koneella olevia kansioita, jotka näkyvät internetissä?

Debianissa tätä ongelmaa ei ole, vaikka kaikki on samalla tavalla tehty. Ja noi funktioiden disabloimiset eivät auta.
« Viimeksi muokattu: 23.12.06 - klo:14.17 kirjoittanut joulu »

Jere

  • Käyttäjä
  • Viestejä: 8
    • Profiili
Re: Apache ja oikeudet
« Vastaus #1 : 23.12.06 - klo:14.11 »
Varmaa tietoa ei ole, mutta muistaakseni PHP:n safemoden ollessa poissa käytöstä, ajetaan kaikki jutut käyttäjän omalla tunnuksella (eli siis http://palvelin.com/~tunnus ajaa php-koodin tunnuksella tunnus).
On mahdollista, että joku on bruteforcen avulla saanut pääkäyttäjän salasanan selville, jolloin periaatteessa olisi helppo ajaa komentoja roottina. Se tosin on aika epätodennäköistä. Tämmöiseltä suojautumiseen kelpaa esimerkiksi fail2ban ohjelma, joka voidaan säätää estämään yhteydet tietystä IP:stä kolmen epäonnistuneen salasanan jälkeen.
Kannattaa kokeilla exec(), shell_exec() ja system() funktioiden estämistä PHP:sta (en ole varma tuosta systemistä oliko se vastaava kuin exec tms).