nginx a dzielony hosting

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Załóżmy (czysto hipotetycznie póki co :p , za słaby jestem aby coś takiego robić) że chciałbym oferować kolegom konta shell z hostingiem www, na systemie uniksowym. Serwer to nginx. Jak to zabezpieczyć? Z PHP nie będzie problemu bo mamy FastCGI i setuid, ale jak z innymi plikami?

Teoretycznie istnieje następująca możliwość ataku:
Każdy plik serwowany przez nginx musi mieć ustawione przez chown i chmod, czy przez ACL, prawo do odczytu dla www-data:
[email protected]$ scp -r [email protected]:/home/user/tajne ~/public_html/tajne_pliki
[email protected]$ chown -R www-data:user ~/public_html
[email protected]$ chmod -R u=rX,g=rwX,o= ~/public_html

Teraz przychodzi włamywacz i robi sobie symlink:
[email protected]$ ln -s /home/user/public_html/tajne_pliki ~/public_html/zchakierowane

I może tajne_pliki ściągać wchodząc na http://example.com/~chakier/zchakierowane/
Normalnie nic tym nie zyska bo dane do bazy danych itd. są w plikach php które nie muszą mieć uprawnień do odczytu przez www-data ale co jeśli http://example.com/~user/tajne_pliki/ był zabezpieczony hasłem ("401 authorization required")?

Pytałem na kanale IRC nginx'a i mnie wyśmiali mówiąc że nginx nie nadaje się dzielonego hostingu... czy naprawdę jedynym rozwiązaniem jest Apache, w którym AFAIK można ustawić żeby porównywał uid i gid pliku?
 

widmo17

Były Moderator
Dołączył
Lipiec 16, 2007
Posty
1089
Przecież jak użytkownik nie ma praw do pliku to nie zrobi symlinka, tak to każdy by sobie symlinkował do shadowa i by było posprzątane.
 

adiblol

Użytkownik
Dołączył
Kwiecień 24, 2009
Posty
49
Właśnie nie. Może sobie zrobić symlink do dowolnego pliku ale niekoniecznie go odczyta. Symlink można nawet utworzyć do nieistniejącego pliku. Przed chwilą sprawdziłem:
Kod:
adiblol@hydrogen:~$ ln -s /etc/shadow ~/shadow
adiblol@hydrogen:~$ cat ~/shadow
cat: /home/adiblol/shadow: Brak dostępu
Abstrahując od /etc/shadow, w naszym przypadku dzielonego hostingu www-data ma prawo do odczytu więc bez problemu będzie serwować ten plik.

Hardlink też można utworzyć ale nie można mu zmienić uprawnień.
 

widmo17

Były Moderator
Dołączył
Lipiec 16, 2007
Posty
1089
Może sobie zrobić symlink do dowolnego pliku ale niekoniecznie go odczyta.
Fakt. Łapie o co Ci chodzi, ale chyba nie da sie tego zrobić bez zmieniania kodu nginksa, 100% pewności nie mam.

Pytałem na kanale IRC nginx'a i mnie wyśmiali mówiąc że nginx nie nadaje się dzielonego hostingu...
Widziałem sporo szelowni które używają właśnie nginx jako httpd i to raczej dość dobrych szelowni, więc myśle że nie jest tak źle żeby aż mieli powody żeby Cię wyśmiać.
 
Do góry Bottom