Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie a integracja z passwd - bezpieczeństwo
Forum PHP.pl > Forum > PHP
shima
Czy takie rozwiązanie jest bezpieczne? A jeżeli nie, to czemu, jak zwiększyć bezpieczeństwo?
Co sądzicie o opcji updatowania haseł(zahaszowanych) w bazie ew. zewnątrznym pliku przy użyciu crona?
A może jakieś znacznie lepsze pomysły?
Puciek
Pewnie ktos zna ale nieznamy twojego ^^
shima
Cytat(Puciek @ 2005-02-23 16:02:55)
Pewnie ktos zna ale nieznamy twojego ^^

Wybacz Puciek, czy u mnie wyświetla się inny post niż u Ciebie? Jezeli tak, to zgłoś to adminom. Jeżeli tylko masz problemy z czytaniem ze zrozumieniem, to poproś kogoś o wytłumaczenie.
Niezależnie od wszystkiego: Nie masz nic sensownego do napisania, to nie pisz!!!
Fipaj
Ale Shima... my tu nie wiemy o co ci chodzi. To że ty wiesz, co napisałeś, to dopiero połowa sukcesu
shima
Cytat(Fipaj @ 2005-02-24 11:03:18)
Ale Shima... my tu nie wiemy o co ci chodzi. To że ty wiesz, co napisałeś, to dopiero połowa sukcesu

Ok. Mamy plik passwd a w nim zahaszowane hasła (dowolny, ale chodzi mi o konkretny w systemie unix-owym). Uzytkownik może sobie to hasło zmienić, a użytkownik niezbyt pracowity jest. Chciałbym, zeby użytkownik sam zmieniał info na swój temat na stronie (ale to na marginesie).
Plan:
- dostęp do konkretnych stref (baza, pliki, manager czegokolwiek) - musi sie zalogować
- zmienił hasło, to nie wie ktore gdzie etc. - jak pisałem, leniwy, nie lubiący zaśmiecać sobie głowy hasłami
- jedno hasło wystarczy i już ono jest w passwd(shadow) - czy korzystanie z tego pliku (wymaga nadania skryptowi uprawnień, to jasne) jest bezpieczne. Jeżeli nie, to co mi ew. grozi i jak się przed tym ustrzec.

Wersja z cron-em jest (jak sądzę) bezpieczna, ale niestety posiada pewną bezwładność (nie chcę, żeby w tle chodził mi demon sprawdzający, czy passwd(shadow) zostało zmienione i uaktualniał ew. plik z hasłami w serwisie.

Pytania jak w pierszym poście.
hawk
Czy takie rozwiązanie jest bezpieczene? Tak, danie wszystkim skryptom php na całym serwerze prawa odczytu pliku /etc/shadow jest bardzo bezpieczene biggrin.gif.
Kocurro
kolejny inteligentny znawca Linuxa i Unixa się trafił - ehh...

przeczytaj pierwszą lepszą książkę o Linuxie/Unixie a w rozdziale bezpieczeństwo zrozumiesz w czym tkwił Twój błąd...


a teraz na poważnie:
1) gosciu zmiena hasło pod php
2) zmieniasz mu to hasełko w systemie php
3) dopisujesz informację o zmianie hasł do pliku tekstowego lub bazy danych
4) w cronie odalasz co 10 minut skrypt sprawdzajacy czy czekaja hasłą do zmiany
5) jeśli czekają to ten skrypt uruchamia każdorazowo skrypt zmiany hasła dla usera z konta roota

jeśli gościu zmienia hasło pod linuxem:
1) kopiujesz plik passwd w inne miejsce
2) w starym miejscu tworzysz skrypt
3) skrypt ten wpisuje informacje o zmianie hasła do pliku tekstowego lub bazy danych (innych niż poprzednio)
4) skrypt zmienia hasło
5) w cronie co 10 minut odpala się skrypt php, który sprawdza czy hasło było zmienione w systemie (poprzez odczyt tych danych) i jeśli tak to zmienia je w systemie php

aha - dołóż jeszcze zabezpieczenie przed zmianą cudzego hasła - np. listę userów, którzy mogą tak zmieniać hasło lub tż listę userów, któzy nie mogą.

jak coś napisałem nie jasno to daj znać - lepiej to rozpiszę.

Pozdrawiam
shima
Cytat(hawk @ 2005-02-25 09:29:05)
Czy takie rozwiązanie jest bezpieczene? Tak, danie wszystkim skryptom php na całym serwerze prawa odczytu pliku /etc/shadow jest bardzo bezpieczene biggrin.gif.

Kolejny genialny komentarz. Wskaż mi miejsce, gdzie napisałem "wszystkim". mad.gif

@prometeus: zmiana tego hasła przez www NIE wchodzi w grę!!!
Cytat
Co sądzicie o opcji updatowania haseł(zahaszowanych) w bazie ew. zewnątrznym pliku przy użyciu crona?

Jedyna możliwość jaka rozważałem (dla przypomnienia cytat powyżej) to update pliku po zmianie hasła przez usera przez SSH - tylko i wyłącznie. 10 minut to nie jest duża bezwładność, a z drugiej strony nie chciałbym komunikować użytkownikowi, że ma odczekać 10 minut, zanim sie zaloguje. Kopia mogłaby być robiona natychmiast gdyby można było zmieniać hasła z poziomu www, ale to nie wchodzi w grę, Kwestia zabezpieczeń linuxa mało ma tu do rzeczy, bo ew. skrypt miałby uprawnienia jedynie do czytania, po wywołaniu następowałoby przekierowanie itd.
Inaczej mówiąc - co może mi zrobić user bez konta na moim serwerze i mogący jedynie wywołać skrypt, który zwraca jedynie bool'a?
Jakieś sugestie hawk?

Update: Pisząc tego posta wymyśliłem jak to zrobić bez ryzyka. Dzięki za sugestię prometeus, najprostsze rozwiązania najtrudniej zauważyć. I php nie jest do tego potrzebne.
Yarecki
@shima Nie musiałeś pisać "wszystkim", bo wszystkie skrypty napisane w php działają z uprawnieniami jednego użytkownika.
Kocurro
@shima: a to przepraszam...źle Cię zrozumiałem...

najprościej wiec zrób skrypt o nazwie passwd, któy będzie uruchamiał polecenie passwd (czy jak ono sie nazywa) do zmiany hasła i dawał info do skryptu smile.gif

Cieszę się, że choć troszkę pomogłem. Pomógłbym więcej gdybym Cię lepiej zrozumiał.

Glupio mi teraz ;(

wybacz krytykę - nie zasłużyłeś sad.gif
hawk
@shima: Gdzie napisałeś "wszystkim"?
Cytat
edno hasło wystarczy i już ono jest w passwd(shadow) - czy korzystanie z tego pliku (wymaga nadania skryptowi uprawnień, to jasne) jest bezpieczne. Jeżeli nie, to co mi ew. grozi i jak się przed tym ustrzec

Chociaż dopiero później zorientowałem się, że nie rozważasz na poważnie opcji odczytu /etc/shadow przez skrypt php. Przepraszam za pochopną krytykę.

Ale...
Cytat
Inaczej mówiąc - co może mi zrobić user bez konta na moim serwerze i mogący jedynie wywołać skrypt, który zwraca jedynie bool'a?
Jakieś sugestie hawk?


Jeżeli mówimy o "update pliku po zmianie hasła przez usera przez SSH", to w pewnych sytuacjach może. Wystarczy że twój skrypt odpalany w cronie uaktualnia hasła w zewnętrznym pliku na potrzeby serwisu www. Twój skrypt musi mieć prawo czytania takiego pliku, więc każdy inny skrypt też. W ten sposób każdy mający dostęp do serwera www może odczytać (przynajmniej cześciowo) /etc/shadow.

Więc najlepiej byłoby przepisywać hasła z shadow od razu do bazy danych - tam przynajmniej są zabezpieczone przed swobodnym dostępem.
Kocurro
@hawk - znasz strukturę systemów unixowych ? wiesz co to są skrypty shellowe ? i po co są używane ?

jakbyś nie wiedział to Ci powiem, że w cpanelu masz zrobione skrypt, który odpowiada za zmianę hasła- wywołuje prawdziwy programik/skryptdo mziany oraz zapisuje informacje w bazuie danych, a umieszczony ten skrypt jest w miesjcu gdzie normalnie jest polecenie do zmiany hasła.

Żaden profesjonalny programista nie opiera się na odczycie plików passwd, shadow itp...a to dlatego, ze różne łatki na jądro pozwalają nazmianę metody kodowania itp...

Aha - chyba zapomnieliscie, że hasło w plikach passwd i shadow jest zhashowane? w niektórych wersjach kernel sam dobiera wartosć soli dla każdego hasha i zapisuje w innym miejscu.

Naprawdę - warto zapoznać się z architekturą systemów Unixowych (w tmy Linuxowi), gdyż tam mozesz o wiele lepiej zabezpeiczyć wszystko niz pod winshit 666.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.