Xinetd – bezpieczny wraper

Xinted to następca inted czyli demona zarządzającego usługami internetowymi. Często jest nazywany superdemonem, gdyż decyduje o uruchomieniu czy połączeniu użytkownika z innymi demonami. Jego celem jest zabezpieczenie usług systemowych udostępnionych na zewnątrz przez serwer.

W porównaniu ze swoim poprzednikiem umożliwia nie tylko kontrolowanie dostępu z określonego ip ale także pory w której to się dzieje oraz nazwy użytkownika. Dodatkowo możemy kontrolować zasoby udostępniane przez system. Możemy określić parametr nice, limit zasobów pamięci (rlimit_as), limit czasu procesora (rlimit_cpu), limit danych (rlimit_data), limit pamięci dostępnej w trybie rezydentym (rlimit_rss), maksymalny rozmiar stosu (rlimit_stack). Program może także wysyłać logi do sysloga lub osobnego pliku.

Składania pliku

Składnia pliku przypomina trochę język C: dyrektywy dotyczące danej usługi umieszczane są wewnątrz nawiasów klamrowych zaś sama nazwa przed nimi. Opcjonalnie można podać dwie nazwy usługi, jedna dla programu, druga prawdziwa. Przydaje się to w przypadku, gdy uruchamiamy kilka razy dana usługę na innych portach z innymi ograniczeniami. Tak wiec definicja ma następującą postać:

 

usluga {    atrybut operator         atrybut operator         ....    atrybut operator          } 

 

Program może także wysyłać logi do sysloga lub osobnego pliku. Informacje tam przekazywane mogą zawierać takie wpisy jak: PID, Host, UserID, duration (trwanie sesji).

Przykładowa konfiguracja to:

 

service ftp {  socket_type  = stream  wait   =no  user   =root  server   =/usr/etc/in.ftpd  server_args  = -l  instances  = 4  log_on_success += DURATION USERID  log_on_failure  += USERID  access_times = 2:00-8:59 12:00-23:59  nice   = 10 }

 

service daytime {         socket_type     = stream         protocol        = tcp         wait            = no         user            = root         type            = INTERNAL         id              = daytime-stream }
service time {         socket_type     = stream         protocol        = tcp         wait            = no         user            = root         type            = INTERNAL         id              = time-stream }
service time {         socket_type     = dgram         protocol        = udp         wait            = yes         user            = root         type            = INTERNAL         id              = time-dgram }
service imaps {         disable = no         socket_type     = stream         protocol        = tcp         user            = root         wait            = no         server          = /usr/sbin/imapd }

Zauważmy, iż nie podajemy tutaj portu na którym na działać xinetd obsługujący daną usługę. Spis portów przyporządkowanych do danej usługi znajduje się w pliku /etc/services i stąd program czerpie wiedzę o numerze portu. Jeżeli chcielibyśmy uruchomić usługę na nietypowym porcie należałoby albo dodać parametr portu z numerem portu albo przeedytować plik /etc/services.

Pozostałe opcje

Ponieważ program zawiera w sobie duże możliwości a liczba opcji do ustawienia jest ogromna odsyłam po dalsze informacje do strony podręcznika systemowego dla pliku konfiguracyjnego (man xinted.conf).

XInetd w internecie

Strona domowa projektu to www.xinetd.org.

 

Programy o podobnej funkcjonalności

 

Innym programem zastępującym inetd jest ucspi-tcp. Jest on dostępny pod adresem http://cr.yp.to/ucspi-tcp.html

Dodaj komentarz