|
Panel PHP do zarządzania firewallem i pasmem
bor1904 - 18-10-2009 01:55
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ł: http://img2.imageshack.us/img2/9620/...iazmian.th.png
Legenda:lwalidator - zewnętrzny prosty skrypt, w którego nie można ingerować z poziomu przeglądarki. Sprawdza plik pod kontem składniowym.l
lCzy taki system wprowadzania ma w ogóle sens?l
lJeżeli tak to tworzyć pliki tymczasowe za pomocą CGI czy jakieś shell_exec(touch...)?l
lKiedy 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?l
lJak bezpiecznie wydać polecenie do przepisania tak ważnego pliku jak rc.firewall (tzn. kto/co z jakimi prawami powinien to wykonać)?l
l[i]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.l
Z góry dziękuję za wszystkie pomocne wskazówki, linki czy uzasadnioną krytykę.
Pozdrawiam boras86
gothye - 18-10-2009 10:15
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.
grzesiek - 18-10-2009 12:43
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 ;-)
gothye - 18-10-2009 12:50
Rozbrajanie? Wbrew pozorom, tego typu panele tworzy się z potrzeby tak jak u mnie, nie wszyscy z branży IT to linuksowcy.
grzesiek - 18-10-2009 14:46
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.
bor1904 - 18-10-2009 15:15
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.
lessmian2 - 18-10-2009 15:35
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 ;-)
bor1904 - 18-10-2009 15:59
lessmian2 -czytasz mi w myślach :)
Dziękuje za słowa poparcia.
grzesiek - 18-10-2009 19:57
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.
bor1904 - 21-10-2009 02:22
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ę:
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:
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 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.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|