Panel WWW do zarz

Konfiguracja serwerów, usług, itp.
bor1904
Posty: 15
Rejestracja: 18 października 2009, 01:54

Panel WWW do zarządzania systemem (iptables/tc) - jak wdrażać zmiany?

Post autor: bor1904 »

Jestem w trakcie pisania panelu, który będzie zarządzał iptables/tc/ifconfig oraz przeglądał logi, zmieniał pliki konfiguracyjne w /etc/*

Administrator w panelu zmienia ustawienia sieciowe serwera i wciska akceptuj i tu jest problem - jak wdrożyć zmiany w systemie:
  1. Uruchomienie serwera WWW z uprawnieniami roota (domyślny tryb pracy miniserwera od Webmina).
  2. Skrypty CGI w apache z ustawionym SUID (tryb pracy webmina na "obcym" serwerze).
  3. suEXEC lub suPHP.
  4. Cron wdraża zmiany z uprawnieniami roota (co minutę).
  5. Demon w C "okresowo" wdraża zmiany zawarte w plikach konfiguracyjnych tworzonych przez PHP.
  6. Demon w C, na żądanie wdraża zmiany zawarte w plikach konfiguracyjnych tworzonych przez PHP.
  7. Wykorzystanie obsługi SSH w PHP i po zalogowaniu się na roota wykonanie poleceń zawartych w plikach konfiguracyjnych tworzonych przez PHP (hasło roota w BD).
  8. Wykorzystanie obsługi SSH w PHP i po zalogowaniu się na roota wykonanie poleceń zawartych w plikach konfiguracyjnych tworzonych przez PHP (hasło roota podać ręcznie).
  9. Podobnie jak wyżej tyle, że wykorzystać sudo i użytkownika z prawami tylko do niezbędnych poleceń powłoki.
  10. Dodać użytkownikowi apache w /etc/sudoers możliwość wykonywania wszystkich potrzebnych aplikacji poleceń powłoki powłoki.
  11. Skorzystać z możliwości polecenia:

    Kod: Zaznacz cały

    shell_exec(`sudo php -f /home/coś_tam/skrypt.php`)
    oraz /etc/sudoers (pewnie jest jeszcze kilka możliwości...).
Jak Waszym zdaniem należałoby to zrobić i dlaczego?

Z góry bardzo dziękuję.
Pozdrawiam.

PS: Tak to graficznie wygląda:

Obrazek
Rutek
Posty: 6
Rejestracja: 20 marca 2010, 17:57

Post autor: Rutek »

Sam pracuję nad skryptem do administracji, lecz mój będzie tylko wyświetlał pobrane dane, nic nie będzie zapisywał, gdyż służyć będzie do wyświetlania np. obciążenia, użycia pamięci i tym podobnych w czasie rzeczywistym. Jednak sprawa jest taka, że Apache zabiera od groma zasobów oraz wiem, że i u mnie może wystąpić potrzeba posiadania praw administratorskich. Rozwiązałem ten problem, po prostu programując serwer WWW w PHP(testowane, pierwotna wersja jest już w użyciu w innym projekcie; jest proste do wykonania:bodajże wszystko ma 100 linii kodu). Wystarczy wymusić na użytkowniku, aby aplikacja mogła być włączona jedynie przez administratora i wtedy nie masz już problemu dotyczącego uprawnień. Musisz jednak zważać na wszelkie luki, które mogłyby pozwolić na wykonanie zewnętrznego kodu, gdyż mogłoby to być poważną luką, zagrażającą stabilności systemu.
bor1904
Posty: 15
Rejestracja: 18 października 2009, 01:54

Post autor: bor1904 »

po prostu programując serwer WWW w PHP
Mam rozumieć, że napisałeś serwer w PHP?

Powiedz coś bliżej bo niestety nie wiem co dokładnie miałeś na myśli?

Dziękuję za zainteresowanie i pozdrawiam.
Rutek
Posty: 6
Rejestracja: 20 marca 2010, 17:57

Post autor: Rutek »

Tak, napisałem prosty serwer WWW (na razie nawet prymitywny) w PHP. Wszystko ma obsługę podprocesów, więc kilkoro klientów może być obsługiwanych jednocześnie. Jeżeli jesteś zainteresowany, jak to działa, to zamieszczam w załączniku wyrywek kodu odpowiedzialny za pracę samego serwera WWW. Umieszczam to tutaj na licencji GPL2, więc możesz bez żadnych zobowiązań wykorzystywać ten kod. Jest to skrypt pobierania statusu serwera Ventrilo i generowania ,,userbara'' z pobranymi danymi.
Aktualnie mam bardziej rozwinięte wszystkie klasy dotyczące samych gniazd i procesów, ale myślę, że to wystarczy, aby zrozumieć, na jakiej zasadzie to wszystko działa. Sam poświęciłem na odnalezienie potrzebnych funkcji, przeczytanie części dokumentacji protokołu HTTP i rozwiązanie problemów podstawowych, dosyć dużo czasu.
Załączniki
serwer..zip
(86.65 KiB) Pobrany 122 razy
ODPOWIEDZ