Skocz do zawartości
bor1904

Panel Php Do Zarządzania Firewallem I Pasmem

Rekomendowane odpowiedzi

Witam

Zabieram się do pisania pracy inżynierskiej o tytule:

INTERFEJS WEBOWY DO ZARZĄDZANIA ZAPORĄ SIECIOWĄ I PODZIAŁEM PASMA NA SERWERZE DOSTĘPOWYM (LINUKS)

 

W skrócie: aplikacja PHP zarządzająca sieciowymi aspektmi serwera linuksowego.( Bardzo blisko webmin'a)

 

Od strony sieciowej mam zamiar zapewnić bezpieczeństwo przez SSL,.htaccess-hasło oraz autoryzacja przez PHP.

Pozostaje mi tylko kwestia możliwości ingierowania w skrypt firewlla i posługiwanie sie narzędziem tc w możliwie najbezpieczniejszy sposób ...... ale jak ?

 

Mój aktualny zamysł:

Dołączona grafika

 

Legenda: ;-)

walidator-zewnętrzny prosty skrypt, w którego nie można ingerować z poziomu przeglądarki. Sprawdza plik pod kontem składniowym.

 

 

 

1.Czy taki system wprowadzania ma w ogóle sens ?

2. Jeżeli tak to tworzyć pliki tymczasowe za pomocą CGI czy jakieś shell_exec(touch .....); ??

3. Kidy już fizycznie istnieje plik tymczasowy to jedyną możliwością wymuszenia na walidatorze sprawdzenia jego składni jest zlecenie CRON'a ? Czy miało by sens aby PHP kazało utworzyć plik .tmp po czym kilka sekund później wywołało by walidator ?

4. Jak bezpiecznie wydać polecenie do przepisania tak ważnego pliku jak rc.firewall ? (tzn. kto/co z jakimi prawami powinien to wykonać ?)

5. To już takie bardziej kosmetyczne pytanie odnośnie akceptacji wprowadzonych zmian przez "administratora". Zdarzyło mi sie kilka razy zdalnie zmieniać ustawienia firewalla i przez niedopatrzenie np uniemożliwiłem dostęp z zewnątrz do serwera, albo w ogóle odciąłem serwer od sieci co potrafiło nawet uniemożliwić włączenie sie systemu, a co za tym idzie ... lokalnie chroot itd.

Reasumując chodzi mi po głowie zaimplementowanie mechanizmu działającego na zasadzie zmiany rozdzielczości w WINDOWSIE. po akceptacji zmian są one wdrażane jednak jeżeli zmieniający nie zaakceptuje efektów powraca wszystko do poprzedniej konfiguracji .

 

 

Z góry dziękuję za wszystkie pomocne wskazówki, linki czy uzasadnioną krytykę ;)

 

pozdrawiam

boras86

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

3,4,5. Z zewnątrz najlepiej nie próbować. Jest natomiast inne rozwiązanie: skrypt uruchomiony lokalnie, z oddzielnym profilem uprawnień. Skrypt ten patrzy sobie na zawartość pewnego pliku lub lepiej plików. Odpowiednia zmiana zawartych tam danych powoduje że skrypt podmienia config fw. Config zostanie przywrócony do poprzedniej postaci, np. jeśli w ciągu następnych 15 min. nie dotrze potwierdzenie z zewnątrz przekazane również jako odpowiednia zmiana plik(ów).

W praktyce takie rozwiązanie może być nie do "rozwalnia" o ile komuś nie powiesz jak wygląda struktura danych kontrolująca proces zmiany konfiguracji - a tutaj masz nieograniczone pole do popisu.

 

Wogóle jest to prosty sposób na stworzenie nowego i nikomu nie znanego protokołu zdalnej kontroli serwera.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękuję tomazzi za zainteresowanie.

 

"Z zewnątrz najlepiej nie próbować." - nie rozumiem . Jeżeli zmiany na serwerze mają następować w skutek bodźców zdalnych to czego z zewnątrz nie próbować ?

 

"skrypt uruchomiony lokalnie, z oddzielnym profilem uprawnień. Skrypt ten patrzy sobie na zawartość pewnego pliku lub lepiej plików. Odpowiednia zmiana zawartych tam danych powoduje że skrypt podmienia config fw. " - tu również jest dla mnie niejasne to co napisałeś. Ja to planuje w dużyyym uproszczeniu zrobić tak że php zbiera dane od admina i wypluwa ich zestawienie w postaci pliku na serwerze. A system operacyjny ma za zadanie śledzić czy pojawił sie plik, czy jest on odpowiednim plikiem, wykonać zlecenia w nim zawarte a na koniec to wszystko usunąć ... Podejrzewam ,że masz chyba podobny zamysł, ale jeżeli to nie kłopot to rozpisz sie troszkę bardziej .

 

Z góry dziękuję i pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

...

Pozostaje mi tylko kwestia możliwości ingierowania w skrypt firewlla i posługiwanie sie narzędziem tc w możliwie najbezpieczniejszy sposób ...... ale jak ?

Samo SSL/SSH nie jest w dzisiejszych czasach wystarczającym zabezpieczeniem - sprawdza się dobrze przy omijaniu filtrów QOS u ISP ;) Lepiej nie próbować używać zdalnej konsoli / skryptów do takich rzeczy a już na pewno nie z uprawnieniami roota. Zamiast tego lepiej przesyłać tylko dane. (I tu chyba się zgadzamy). Konfig nie powinien być przesyłany w formie jawnej, nie powinien być również przechowywany w formie jawnej na dysku. Skrypt na serwie pownien rozkodować plik w lokalizacji do której nie ma dostępu z zewnątrz. Bardzo wredną metodą jest ominięcie systemu plików i zapis na bezpośrednio do sektorów - nie ma pliku, jak ktoś nie wie ocb ;) Gotowy do zaaplikowania plik rc powinien być stworzony w ramdysku (ramfs, tmpfs) - to samo dotyczy zaszyfrowanego pliku buforującego - jednokrotne nadpisanie wystarcza do zniszczenia zawartości i trwa kilkaset x szybciej niż na hdd.

Lepiej nie tworzyć pliku za każdym razem - taki bodziec może być przyczyną poważnych problemów. Zamiast tego plik powinien być czyszczony natychmiast po rozkodowaniu i sprawdzany raz na f.e 2-5min oraz np. po 30min od ostatniej zmiany. Skrypt na serwie nie powinien odpowiadać na zewnątrz - to klient ma sobie sprawdzić czy odpowiedź Validatora brzmi ok - i odpowiedź ta powinna być równierz zaszyfrowana (albo np. ukryta w różnicy czasów ostatniej modyfikacji pliku).

Jak się dobrze pogłówkuje to jest nie do ruszenia ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękuję za cenne rady.

 

---------------------------------

 

Miałem kilka nocy do przemyśleń i stwierdziłem, że nie może to sie wszystko odbywać na zasadzie "pozostawiania plików", które system po zauważeniu wykona.

Nagła zmiana mojego stanowiska w tej sprawie wynika z faktu, iż niezbędne jest generowanie obrazu aktualnej sytuacji sieciowej na stronie w przeglądarce ( w czasie rzeczywistym).

 

Tzn. przykład: kiedyś coś pozmieniałem panelem, potem dokonałem drobnych zmian np przy pomocy SSH czy lokalnie "z palca". Po miesiącu wchodze w zakładkę """modyfikuj firewall""" i ??? no niestety muszę odpytać iptables na czym stoimy... Chodzi o to, że cały ten mechanizm musi działać w obie strony w czasie rzeczywistym.

 

Na chwile obecną udało mi się częściowo rozgryźć Webmina- dość popularny panel tego typu.

 

Na moje amatorskie oko i to co da sie doczytać w necie to wygląda to tak:

Podczas instalacji jest uruchamiany na kompie z Linuksem dodatkowy serwer WWW napisany w perlu działające domyślnie na porcie 10000 , który obsługuje skrypty CGI również napisane w Perlu.

 

Wynik "ps aux" na mojej maszynie :

root (...) /usr/bin/perl /root/webmin-1.490/miniserv.pl /etc/webmin/miniserv.conf

 

właścicielem wszystkich plików związanych z serwerem jest root, a grupą bin.

 

W skryptach cgi polecenia tyczące się firewall'a (iptables) są wydawane bez żadnych kombinacji.

------------------------------------

Reasumując to chyba działa tak, że serwer WWW ma uprawnienia roota i wykonuje skrypty CGI ingerujące w pliki systemowe do których dostęp ma tylko root.

 

Na ile to jest niebezpieczne zakładając, że serwer ten ma tylko za zadanie hostować panel?

 

I czy gdyby założyć, że serwer dostępowy w mojej pracy nie wystawia innych stron WWW jak tylko owy panel to czy jest sens uruchamiania dodatkowego serwera WWW?

 

Czy może uruchomić Apache'a by wykonywał CGI z uprawnieniami root'a ?

 

Czy może użyć w jakiś sposób dobrodziejstwa o nazwie SUDO ?

 

Myślałem również o skryptach CGI(własność -root) uruchamianych przez Apache'a z ustawionym bitem SUID ?

 

 

Proszę o pomoc w wyborze albo chociaż odrzucenie najgorszych z podanych rozwiązań ?

 

Z góry bardzo dziękuję i pozdrawiam licząc na jakąkolwiek pomoc :)

Edytowane przez bor1904

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

Zazwyczaj nie zaglądam do tematu jeśli nie ma nowych postów lub nie dostanę PM ;)

 

Monitoring parametrów serwera nie jest tak wymagający co do środków bezpieczeństwa jak zmiana konfigu - można tu zastosować gotowe rozwiązania. Aczkolwiek nie powinno się używać uprawnień roota, tylko odpowiednio uprzywilejowanego użytkownika - który nie ma uprawnień do modyfikacji czegokolwiek. Poza tym metoda którą wcześniej przedstawiłem umożlia monitoring oraz podgląd konfigu.

 

Jest jeszcze jedna bardzo istotna kwestia: zamierzasz kontrolować serwer z dowolnego miejsca na świecie, czy tylko używając odpowiednio przygotowanego lapa czy kilku wybranych komputerów? - to zasadniczo zmienia zakres dostępnych możliwości. Można np. użyć NAS + ecryptfs.

 

Skrypt na serwie może tworzyć raporty do jednokrotnego odczytu (czyli niszczone po pierwszym dostępie) z wybranymi parametrami w formie np. skompresowanego obrazka (ów) ;) - to oznacza że po stronie clienta nie potrzeba stosować skryptów zdradzających protokół wymiany informacji. jeśli połączyć to z ecryptfs to jest już niezła jazda ;)

 

Jeśli panel ma być multiplatformowy to imo najlepiej napisać dedykowanego .bin/.exe działającego na platformie wxwidgets czy gtk - to dość dobre zabezpieczenie przed trojanami, które głównie atakują i śledzą www/skrypty.

 

Apache do uruchomienia kilku skryptów? Takie patenty można napisać w bashu czy c-shellu - kilkadziesiąt x mniejsze zapotrzebowanie na zasoby, większe bezpieczeństwo i szybkość.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...