Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Interfejs webowy do zarządzania serwerem dostępowym (linux), Problematyka ogólna ( praca inż. )
bor1904
post 15.10.2009, 18:18:43
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Witam wszystkich serdecznie.Jest to mój pierwszy post na tym forum i mam nadzieje, że da to początek przyjemnej współpracy smile.gif


Mam do wykonania prace inż. na temat: "INTERFEJS WEBOWY DO ZARZĄDZANIA ZAPORĄ SIECIOWĄ I PODZIAŁEM PASMA NA SERWERZE DOSTĘPOWYM (LINUKS)".Jest wiele rzeczy w tej pracy, które są dla mnie oczywiste i zrozumiałe jednak mam kilka istotnych wątpliwości.

Praca ma się składać z części teoretycznej (polityka zarządzanie zaporą sieciową-bezpieczeństwem, zarządzanie pasmem, techniki tworzenia stron WWW itd) oraz praktycznej(projekt i implementacja interfejsu + dokumentacja).

Jeżeli chodzi o sam interfejs:
-najistotniejsze to to aby był bardzo łatwy i w implementacji i obsłudze (uniwersalny) -> ktoś ma serwer dostepowy na Linuksie w swojej domowej/osiedlowej/akademikowej sieci i chce sobie umilić zarządzanie nim więc wrzuca kilka plików na swój serwer i cieszy sie graficznym zarządzaniem.
-jest to narzędzie kierowane do amatorów i średnich oraz małych sieci
-trzeba zadbać o średniej klasy bezpieczeństwo( z uwagi na niską szkodliwość ewentualnego włamania )
-panel ma być oczywiście napisany głównie w PHP ( choć mam zamiar zrobić np suwaki do ustalania limitów transferowych działające bez odświeżania strony - w czym to powinienem zrobić ?)


Największą moją bolączką jest zapewnienie optymalnego bezpieczeństwa możliwie jak najmniejszym nakładem sił(z punktu widzenia wdrażającej to osoby)..... worriedsmiley.gif

Promotor proponował rozejrzeć sie za ssh...kerberos,SSL czy innym tego typu rozwiązaniem.
Inny wykładowca z politechniki twierdził że dobry panel logowania w PHP wystarczy dla zapewnienia bezpieczeństwa na tym poziomie, jednak żeby "sam skrypt" nie mieszał w systemie zaproponował aby skrypt tworzył skrypt w shell'u, a cron np. co 2 min będzie sprawdzał czy taki skrypt istnieje, wykonywał go z odpowiednimi uprawnieniami i po chwili go usuwał.
Koledzy z forum traktującym o środowiskach UNIX'owych rozważali CGI, specyficzne porty nasłuchiwania, serwer WWW za serwerem WWW,.htaccess oraz niebezpośrednio związane z bezpieczeństwem REST
Dziś wpadłem tu na forum na coś co nazywa sie suEXEC.....

Jest pewnie jeszcze kilka rzeczy, o których nie wiem więc wybór jest dość spory, a co powinienem wybrać ? Jak takie rzeczy robi się najprofesjonalniej ?

worriedsmiley.gif
Z góry dziękuję za odpowiedz na moje podstawowe pytania oraz za wszystkie wskazówki odnośnie samej pracy.
(łącznie z opiniami na temat samego tematu/przydatności takiej aplikacji/kierunku myślenia autora-oczywiście poparte argumentami smile.gif )

Pozdrawiam
bor1904









Go to the top of the page
+Quote Post
jmail
post 15.10.2009, 18:43:14
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


No to po kolei.

Co do przydatności = to moze być przydatne przy założeniu, że nie chce się wydawać kasy na profesjonalne urządzenia na przykład DLink czy Cisco

Tworząc panel wzorowałbym się na jakimś panelu DLinka albo CISCO

tu masz przykład DLinka



Jak chcesz robić rzeczy aktualizowane przez przeglądarkę bez odświeżania strony to będzie Ci niezbędny AJAX - ale uniknąłbym tego winksmiley.jpg aktualizowanie Firewall'a co 30 sekund jest niewskazane. Do tego dochodzi kwestia zrobienia wszystkich ustawień. DLink na przykład rozwiązuje to tak, że sobie konfigurujesz konfigurujesz i jak jesteś gotowy wciskasz save and activate config - router sprawdza poprawność błędy wyrzuca a jak jest ok to zmienia konfigurację.

Do tego opcja restore default powinna być winksmiley.jpg

Co do samej strategii jak na przykład to wykonywać. Jak chodzi o skrypty. Zawsze jest ryzyko że coś pójdzie nie tak. Zabezpieczenie powinno się opierać (w mojej opinii) o SSL AES (alogrytm szyfrowania hasła) i o htacces (podwójne logowanie). Co dalej się będzie działo nie ma znaczenia. Jak ktoś Ci się przez to włamie to i tak będzie miał na widelcu całą maszynę.

Do tego unikałbym otwierania portów dodatkowo - obniżasz bezpieczeństwo i robisz możliwość DDoS. Skrypty bash'owe czy jakiekolwiek inne nie powinny być dostępne z poziomu serwera WWW, tylko sprytnie ukryte w jakimś katalogu.

Dobrym rozwiązaniem jest ustawienie drugiego interface'u sieciowego na przykład do łączenia się z LAN'u i taka konfiguracja, że tylko przez niego można się zalogować do panelu admina. To zabezpiecza w znacznym stopniu cały panel.
Go to the top of the page
+Quote Post
bor1904
post 15.10.2009, 19:18:40
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Dziękuję za tak szybką pomoc smile.gif

Jeżeli chodzi o przykład D-Link'a to jest to urządzenie (jakiś tam VPN + NAT z tego co sie orientuje) więc to jest według mnie zupełnie inna rzecz . Chodzi mi o to że jak ktoś posiada już router PC oparty o linuxa to nie kupi sobie urządzenia za ponad 1000PLN żeby koledze obok w pokoju otworzyć port i na noc dać całą szerokość pasma ..... Jednak napewno można wręcz na żywca zgapić pewne rzeczy.

Z pracą w trybie rzeczywistym faktycznie masz racje . To była by katastrofa.

Wracając do rzeczy w której mam najwiecej wątpliwości ... możesz się troszkę rozwinąć o tym:"(w mojej opinii) o SSL AES (alogrytm szyfrowania hasła) i o htacces (podwójne logowanie). " Podać jakieś konkrety ? Ułatwiiło by mi to przetrząsanie googli smile.gif


Co do portów sie zgadzam z tobą. Jednak jeszcze wracając do " Co dalej się będzie działo nie ma znaczenia. (...)" . Chodzi tu chyba o sam fakt możliwości wykonywania przez (hmm?) użytkownika "apache" rzeczy do których prawo wykonywania powinien mieć jedynie root. Jak widać nie jestem żadnym administratorem systemów UNIXowych ale można pewnie w inny sposób niż wchodzenie przez panel na stronke za pośrednictwem użytkownika z ktorego prawami działa serwer WWW nagrzebać w systemie ?..? (prosze mnie poprawić jeżeli sie myle)


"Dobrym rozwiązaniem jest ustawienie drugiego interface'u sieciowego na przykład do łączenia się z LAN'u" -chodzi głównie o bezpieczeństwo łączenia sie z serwerem od strony połączenia WAN.


Jeszcze raz dziękuję i oczekuję kolejnej porcji wiedzy smile.gif
Go to the top of the page
+Quote Post
jmail
post 16.10.2009, 01:42:05
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


No jak chodzi o DLinka to zacznijmy od jego nazwy D-Link DFL-210 NetDefend VPN Security Firewall (8xLAN, 1xWAN) ze szczególnym naciskiem na Security Firewall winksmiley.jpg Oczywiście, że nie chodzi o zakup takiego urządzenia, żeby port koledze otworzyć, ale też nie tworzymy rozwiązania, żeby port koledze otworzyć tylko rozwiązanie na projekt jak się nie mylę? winksmiley.jpg Praca inżynierska a to zdaje się do czegoś zobowiązuje biggrin.gif

Kontynuując temat DLinka - skoro to już ustaliliśmy że to również Firewall to wystarczy się takiemu przyjrzeć i wyciąć zbędne rzeczy a nastepnie wziąć tylko te co to to są potrzebne dla firewall'a - jak będziesz na etapie tworzenia specyfikacji funkcjonalności będę w stanie CI porobić screeny z każdego zakątka takiego firewall'a - mam dostęp winksmiley.jpg

SSL ( http://pl.wikipedia.org/wiki/Transport_Layer_Security ) czyli wchodzisz na panel www firewall'a poprzez szyfrowane połączenie https


Samo logowanie powinno być dwuetapowe. Skorzystanie z zabezpieczenia do sekcji skryptów poprzez autentykację serwera www. Czyli wywołujesz stronę i zanim cokolwiek Ci się wyświetli wyskakuje okienko



a następnie już logowanie poprzez PHP



powyższy przykład to ekran logowania do DLinka

I w tym miejscu dochodzimy do punktu w którym wszystko krzyczy: "Ale gdzie będziesz przecowywał hasła!!!".

O ile autentykacja poprzez serwer WWW odbywa się banalnie przez plik z hasłem, o tyle w PHP masz różne możliwości. Na przykład konfiguracja trzymana w XML'u, albo w bazie danych. I chodziło mi o to, żeby hasła do tego logowania w PHP (bez względu na to, czy trzymane w pliku czy w bazie) były szyfrowane przy użyciu algorytmu AES z kluczem minimum 192 bitowym - to nam da wysoki poziom bezpieczeństwa hasła. Oczywiście przy zakładaniu hasła należałoby jeszcze walidator siły hasła zrobić - ale to już dalszy etap prac.

Co dalej się będzie działo nie ma znaczenia - jak ktoś Ci złamie zabezpieczenia oparte o AES 192-bit to żadne szyfrowanie Ci nie pomoże - przejmie Ci maszynę prędzej czy później tongue.gif AES jest zdaje się obecnie najbezpieczniejszy

podsumowując - SSL szyfruje połączenie czyli nie można przejąć Twojego połączenia (banki na przykład tego używają), Logowanie poprzez serwer WWW zapobiega wywołaniu jakiegokolwiek skryptu na serwerze WWW bez podania hasła, co w pełni zabezpiecza przed ewentualnym wykorzystaniem błędów w PHP, albo próbie chociaż się dostania do nich. No i zabezpieczenie panelu admina hasłem z mocnym szyfrowaniem utrudnia ataki brute force

Cytat
"Dobrym rozwiązaniem jest ustawienie drugiego interface'u sieciowego na przykład do łączenia się z LAN'u" -chodzi głównie o bezpieczeństwo łączenia sie z serwerem od strony połączenia WAN.


Dobrze ale czy to oznacza, ze do panelu masz mieć dostęp z WAN'u? Moim zdaniem ok, ale wtedy tylko przez VPN - zestaw VPN z maszyną i wtedy łącz się jak po sieci lokalnej. Natomiast wywołanie bezpośredniego połączenia z panelem poprzez WAN jest delikatnie mówiąc lekkomyslne winksmiley.jpg Poprzez WAN panel zarządzania moim zdaniem powinien być transparentny. W ogóle nie powinno się dac go uruchomić.

Jeżeli wprowadzisz zabezpieczenia o których napisałem wyżej wtedy śmiało możesz dodać użytkownika serwera www do grupy sudoers czyli tych mogących wykonywać polecenia su sudo czy jakie tam jeszcze inne.

Teraz co do samego wprowadzania zmian.

Tak sobie myślę. Oczywiście CRON będzie na przykłąd chodził co 2 minuty i sprawdzał czy się coś zmieniło i jeżeli tak to spróbuje zastosować, ale to chyba nie o to nam chodzi. Raczej wolelibyśmy zdaje się, żeby wszystko się odbyło automatycznie.

Mam w głowie pewne rozwiązanie.

Założenia:

1. W systemie jest zainstalowane SVN

Schemat:

1. PHP przygotowuje wszystkie zmiany jakie mają być wykonane w firewall'u w postaci skryptu bash
2. Użytkownik naciska zapisz
3. Nowa konfiguracja zapisuje się do pliku - to nie jest główny plik z którego czyta firewall - plik jest pod kontrolą svn
4. Wykonujesz commit svn
5. w pre-commit sprawdzasz zapisany przed chwilą plik czy jest taki jak się spodziewasz (czy występują tylko takie instrukcje jakie są dopuszczalne) i jeżeli tak to wykonujesz commit jeżeli nie wywalasz ten plik i robisz svn update na katalogu gdzie zachowuje serwer WWW - masz przywróconą poprzednią wersję
6. Jeżeli commit dojdzie do skutku (wykona się prawidłowo) wtedy w postcommit wykonujesz aktualizację svn pliku konfiga firewall'a (produkcyjnego) i restartujesz firewall winksmiley.jpg
7. cieszysz się bezpieczeństwem z weryfikacją <:F>
Go to the top of the page
+Quote Post
bor1904
post 16.10.2009, 11:25:28
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Dziękuję za odpowiedz po raz kolejny:)

Co do D-Linka faktycznie mają to bardzo intuicyjnie i przejrzyście zrobione i jak już chyba pisałem "chętnie zgapie" z tego typu urządzenia.

"SSL ( http://pl.wikipedia.org/wiki/Transport_Layer_Security ) czyli wchodzisz na panel www firewall'a poprzez szyfrowane połączenie https


Samo logowanie powinno być dwuetapowe. Skorzystanie z zabezpieczenia do sekcji skryptów poprzez autentykację serwera www. Czyli wywołujesz stronę i zanim cokolwiek Ci się wyświetli wyskakuje okienko"

To wszystko rozumiem i sie z tym zgadzam.

""Ale gdzie będziesz przecowywał hasła!!!"."

Tu akurat bym sie jakoś specjalnie nie przejmował ponieważ nic nadzwyczajnego nie wymyślimy tzn musi zostać .htpasswd i co do hasła z PHP to planuje skorzystać z sqlite i hashu (nawet MD5 choć da sie go połamać).


"Dobrze ale czy to oznacza, ze do panelu masz mieć dostęp z WAN'u? "
-Tu zacząłem myśleć i coraz bardziej sie zastanawiam czy ma sens logowanie z WAN.

Pierwsza sprawa że tego nie ma obsługiwać zew. technik bo założeniem jest prostota i intuicyjność.Druga sprawa zmiana "parametrów" odnośnie możliwości w sieci lokalnej przeważnie wywołana jest przez osobe zarządzającą siecią gdy poczuje dyskomfort pracy .... Ewentualnie w panelu można odchaczyć zdalny dostęp ale wtedy SSH było by jedyną opcją.

Można by podejść ambitniejdo sprawy i zabawić sie w VPN ale to raczej skomplikuje sprawe tak bardzo że robienie super prostego panela minie sie z celem ...:/ ? Czy sie myle ?

"Założenia:

1. W systemie jest zainstalowane SVN

Schemat:

1. PHP przygotowuje wszystkie zmiany jakie mają być wykonane w firewall'u w postaci skryptu bash
2. Użytkownik naciska zapisz
3. Nowa konfiguracja zapisuje się do pliku - to nie jest główny plik z którego czyta firewall - plik jest pod kontrolą svn
4. Wykonujesz commit svn
5. w pre-commit sprawdzasz zapisany przed chwilą plik czy jest taki jak się spodziewasz (czy występują tylko takie instrukcje jakie są dopuszczalne) i jeżeli tak to wykonujesz commit jeżeli nie wywalasz ten plik i robisz svn update na katalogu gdzie zachowuje serwer WWW - masz przywróconą poprzednią wersję
6. Jeżeli commit dojdzie do skutku (wykona się prawidłowo) wtedy w postcommit wykonujesz aktualizację svn pliku konfiga firewall'a (produkcyjnego) i restartujesz firewall winksmiley.jpg
7. cieszysz się bezpieczeństwem z weryfikacją <:F>"

Jestem w pracy i nie mam czasu za wiele szukać ale nie chwytam co to SVN ..[*]commit itd, jednak wydaje mi sie że chodzi Ci po pierwsze o dwuetapowość tzn najpierw grzebiemy w panelu potem dostajemy listing tego co nagrzebaliśmy i zatwierdzamy lub nie. Zakładając że bylo wszystko ok pojawia sie taka miejwiecej sytuacja jak przy zmianie rozdzielczości w Win. tzn wdrażane są zmiany jednak można samemu lub automatycznie po określonym czasie powraca do działającej konfiguracji. Czy to mniejwiecej o to chodziło ?


Jeszcze pytanie jak tworzyć te wszystkie pliki ? shell_exec ?jakieś CGI ?


Jeszcze raz dziekuje za pomoc


Go to the top of the page
+Quote Post
jmail
post 16.10.2009, 13:27:03
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Cytat
hashu (nawet MD5 choć da sie go połamać).


Dlatego saugeruję użyć AES'a z kluczem 192 bitowym - PHP obsługuje AES'a

Ustaw Server VPN na Linuchu w 10 kroków

Pozostałaby kwestia dodanie fragmentu panelu z zarządzaniem VPN'em - czyli de facto kilkanaście komend - dzień roboty?

SVN - skrót od Subversion - system kontroli pracy. Poczytaj o tym bo łatwo Ci tego nie wytłumaczę - nie mam pojęcia jak biggrin.gif Najistotniejszą kwestią jest to, że de facto zapisywanie zmian byłoby trzy etapowe.

1. Zapisywane są zmiany do pliku tymczasowego
2. Sprawdzenie poprawności zmian - skryptem, do którego dostępu już by nie było, zeby go zmodyfikować przez serwer WWW
3. Jeżeli zmiany się zgadzają z jakąś matrycą to są ładowane na produkcję (zmieniany jest konfig firewall'a)


Co do tego jak te pliki tworzyć - ja bym na krzywy ryj basha robił :F bez zbędnego bawienia się biggrin.gif
Go to the top of the page
+Quote Post
bor1904
post 16.10.2009, 16:58:25
Post #7





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Niesamowicie mi pomogłeś thumbsupsmileyanim.gif i na chwile obecną nie mam pytań. Poczytam troszke i napewno ustosunkuje się. Bede również poruszał ten temat w toku prac nad dyplomem jednak to jeszcze cały rok na to. Pozdrawiam i dziekuje
Go to the top of the page
+Quote Post
cojack
post 16.10.2009, 22:21:04
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


http://www.webmin.com/


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
bor1904
post 16.10.2009, 23:00:40
Post #9





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Dzięki. To jest prawie dokładnie to co planuje zrobić tyle że w PHP a nie perlu i ma troszke za dużo funkcjonalności niż potrzebuje.
I mam wrażenie, że na dzień dobry nie korzysta z żadnych rozwiązań VPN -(SSL w opcji) ani z .htaccess (przynajmniej jeżeli chodzi o login/hasło) . Jedyne co zauważyłem to panel logowania na stronie.
Nie wiem jeszcze jak ingeruje w system by było to w miare bezpieczne.



dziekuje


PS czy są jeszcze jakies podobne aplkacje na rynku prócz tego i powiedzmy LMS ? Pytam bo wypadało by w pracy opisać sytuacje rynku w chwili pisania pracy smile.gif


pozdrawiam

Ten post edytował bor1904 17.10.2009, 11:03:53
Go to the top of the page
+Quote Post
Unik2psc
post 17.10.2009, 20:41:20
Post #10





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 27.07.2009

Ostrzeżenie: (0%)
-----


http://www.cpanel.net/ - najbardziej używany w serwerowniach.
Go to the top of the page
+Quote Post
bor1904
post 17.10.2009, 21:05:15
Post #11





Grupa: Zarejestrowani
Postów: 131
Pomógł: 1
Dołączył: 15.10.2009
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Już wcześniej się natknąłem na cPanel jednak to raczej narzędzie dedykowane do zarządzania hostingiem szeroko rozumianym.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 06:22