Strona 1 z 1

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

: 20 marca 2010, 11:26
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

: 20 marca 2010, 18:04
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.

: 20 marca 2010, 21:54
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.

: 21 marca 2010, 10:05
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.