Strona 1 z 1

Panel PHP do zarządzania firewallem i pasmem

: 18 października 2009, 01:55
autor: bor1904
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 (Linux)

W skrócie: aplikacja PHP zarządzająca sieciowymi aspektami serwera linuksowego(bardzo blisko webmina).

Od strony sieciowej mam zamiar zapewnić bezpieczeństwo przez SSL, .htaccess-hasło oraz autoryzacja przez PHP.
Pozostaje mi tylko kwestia możliwości ingerowania w skrypt firew[ba[/b]lla i posługiwanie się narzędziem tc w możliwie najbezpieczniejszy sposób, ale jak?

Mój aktualny zamysł:
Obrazek

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. Kiedy już fizycznie istnieje plik tymczasowy to jedyną możliwością wymuszenia na walidatorze sprawdzenia jego składni jest zlecenie CRON-a? Czy miałoby sens aby PHP kazało utworzyć plik .tmp, po czym kilka sekund później wywołałoby 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 się 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 się systemu, a co za tym idzie, lokalnie chroot itd.
    Reasumując chodzi mi po głowie implementowanie 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

: 18 października 2009, 10:15
autor: gothye
Sam napisałem coś takiego, panel oparty o php +sql, a firewall perl łączący się z sql i pobierają dane z sql. Powoli zabieram się za dodanie użytkowników do ftp przez panel.

: 18 października 2009, 12:43
autor: grzesiek
Mnie tam pomysł zarządzania firewallem przez www w ogóle się nie podoba. Bo to trochę takie rozbrajanie się - ale to tylko tak na boku ;-)

: 18 października 2009, 12:50
autor: gothye
Rozbrajanie? Wbrew pozorom, tego typu panele tworzy się z potrzeby tak jak u mnie, nie wszyscy z branży IT to linuksowcy.

: 18 października 2009, 14:46
autor: grzesiek
To niech sobie CISCO kupią będzie prościej :-P
W linuksie jest tylko jeden super administrator i powinien wystarczyć. Ciekawe czy ci co używają Windows Serwer by poświęcali swój czas, żeby pomóc tym co nie znają tego systemu.

: 18 października 2009, 15:15
autor: bor1904
Uważam tak jak gothye. Szczególnie że cisco i prosty np. ruter PC oparty o Linuksa to finansowo kilka tysięcy różnicy i nie zawsze bezpieczeństwo absolutne jest niezbędne. Nie każdy musi być wirtuozem Linuksa, ale i każdy człowiek zdrowy woli przyciskać ładne kolorowe ikonki niżeli klepać kilkanaście linijek tekstu by cokolwiek zmienić w systemie.

Pozdrawiam.

: 18 października 2009, 15:35
autor: lessmian2
bor1904 pisze:ale i każdy człowiek zdrowy woli przyciskać ładne kolorowe ikonki niżeli klepać kilkanaście linijek tekstu
Może jestem dziwny, ale jednak wolę naklepać te kilkanaście linijek tekstu niż klikać w cukierkowe ikonki. Co do sensu takiego przedsięwzięcia, to mimo że nie używam z reguły takich narzędzi, to jednak jest zapotrzebowanie na takie aplikacje - najlepszym przykładem jest to, że co chwile wychodzi jakaś nowa, a kilka ma uznaną pozycję, są popularne i nie widać aby się to zmieniło. Z dwojga złego, wolę użytkownika, który jakoś tam wszystko sobie wyklika i poustawia poprawnie, niż takiego który bez sensu będzie klepał polecenia byleby tylko zadziałało, nie ważne czy "zgodnie ze sztuką". Jeśli w końcu poczuje, że taka aplikacja go ogranicza, pewnie przesiądzie się do konsoli i mając już jakieś doświadczenia będzie bardziej świadomym użytkownikiem systemu. A jeśli kreatory będą dla niego wystarczające, to cóż. Nie każdy musi być super adminem. Więc bor1904 rób swoje, mimo że ja i tak z tego nie skorzystam ;-)

: 18 października 2009, 15:59
autor: bor1904
lessmian2 -czytasz mi w myślach :)

Dziękuje za słowa poparcia.

: 18 października 2009, 19:57
autor: grzesiek
Tak to już jest, za inne trzeba płacić a linuksa się nauczyć. To, że zaawansowani użytkownicy wolą terminal wynika z tego, że deweloperzy preferują takie rozwiązanie.
Na przykład: ostatnio potrzebowałem takiego czegoś jak lp_solve, bo Solver z Excela nie dawał rady. Patrze jest również wersja na Windows, jaka jest różnica między nimi? a no na Windows jest śliczne GUI - tym z Linuksa wystarczy CLI. Ot taka tradycja.
Co nie znaczy, że jestem przeciwnikiem GUI - wręcz przeciwnie.

: 21 października 2009, 02:22
autor: bor1904
Miałem kilka nocy do przemyśleń i stwierdziłem, że nie może to się 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 wchodzę w zakładkę:

Kod: Zaznacz cały

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 chwilę obecną udało mi się częściowo rozgryźć Webmina - dość popularny panel tego typu.

Na moje amatorskie oko i to co da się doczytać w internecie to wygląda to tak.
Podczas instalacji jest uruchamiany na komputerze 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:

Kod: Zaznacz cały

ps aux
na mojej maszynie:

Kod: Zaznacz cały

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 wspomniany panel to czy jest sens uruchamiania dodatkowego serwera WWW?

Czy może uruchomić Apache by wykonywał CGI z uprawnieniami roota?

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 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.