SUPERSERWERY : inetd , xinetd W systemie Linuks serwery różnych usług uruchamiane są na dwa sbosoby : podczas startu systemu - dany serwer pracuje w systemie przez cały czas "jako demon" zajmując zasoby systemowe poprzez specjalny serwer inetd lub xinetd (nowsza wersja inetd) - serwery usług uruchamiane są tylko w przypadku próby skorzystania z nich przez klienta 1) konfiguracja serwera inetd 2) konfiguracja serwera xinetd 1) konfiguracja serwera inetd Plikiem konfiguracyjnym serwera inetd jest plik : /etc/inetd.conf Każdy wiersz tego pliku ma następujący format : Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com usługa typ-gniazdka protokół wait/nowait[.max] użytkownik[.grupa] program- serwera argumenty-serwera gdzie : usługa - to nazwa usługi odpowiadająca wpisom z pliku /etc/services, na podstawie której serwer określa numer portu, na którym należy oczekiwać połączenia typ-gniazdka - przyjmuje wartość stream dla usług o charakterze połączeniowym (tcp) lub datagram dla usług bezpołączeniowych (udp) protokół - określa protokół wykorzystywany do obsługi połączenia (musi być on zdefiniowany w pliku /etc/protocols) wait/nowait[.max] - w przypadku serwerów wielowątkowych należy podać parametr nowait, a wprzypadku jednowątkowych - wait. Opcjonalne pole max określa maksymalną liczbę procesów, które można utworzyć w ciągu 60 sekund (tylko dla parametru nowait) user[.group] - określa użytkownika i grupę, do której będzie należał uruchomiony proces program-serwera - zawiera ścieżkę do programu obsługującego połączenie argumenty-serwera - jest listą argumentów przekazywanych do programu serwera przy jego uruchomieniu Przykład : Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com ftp stream tcp nowait root /usr/sbin/proftpd proftpd 2) konfiguracja serwera xinetd Xinetd jest nowszą wersją superserwera inetd. Posiada on rozszeżone dyrektywy konfiguracyjne umożliwiające dokładniejsze dostosowanie konfiguracji do własnych potrzeb lub zasobów systemowych. Ciekawymi parametrami dla polecenia configure podczas instalowania serwera są : --with-libwrap - parametr nakazujący w pierwszej kolejności sprawdzenie praw dostępu w plikach /etc/hosts.allow i /etc/hosts.deny --with-loadavg - parametr pozwalający zarządzać opcją konfiguracji max_load (wyłączenie części serwisów podczas przeciążenia maszyny) --with-inet6 - parametr ten pozwala na obsługę IPv6 Głównym plikie konfiguracyjnym superserwera xinetd jest plik : /etc/xinetd.conf Plik konfiguracyjny składa się z dwóch sekcji : default - definiuje ogólną konfiguracje serwera, a każdy atrybut zdefiniowany w tej sekcji zachowuje swoją wartość dla wszystkich ustawień w sekcji service (chyba, że zostanie jawnie zmieniony w danej sekcji) service - odpowiedzialna jest za konfigurację odpowiednich usług Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com Sekcja default ma następującą budowę : default { atrybut operator wartość ........ } Sekcja service wygląda identycznie jak sekcja default : service nazwa_sewisu { atrybut operator wartość .................... } Dozwolone operatory to : = przypisuje atrybutowi daną wartość += dodaje wartość do listy wartości atrybutów -= usuwa wartość z listy wartości atrybutów Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com Najważniejsze atrybuty i ich wartości to : bind lub interface pozwala na powiązanie serwisu z danym adresem IP (przydatne jeśli nasz serwer posiada kilka kart sieciowych) disabled dotyczy sekcji default - wartościami są nazwy usług, które chcemy wyłączyć disable dotyczy sekcji service, a możliwe wartości to : YES - wyłączenie danej usługi NO - włączenie danej usługi flags może przyjmować następujące wartości : IDONLY - akceptuje tylko połączenia od klientów posiadających serwer identyfikacyjny Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com NAMEINARGS - oznacza, że w polu server definiuje się pomocniczy program potrzebny do prawidłowego działania serwera, a dopiero w polu serwer_args definiuje się właściwy serwer NOLIBWRAP - powoduje, że pliki host.acces i host.deny nie są sprawdzane NORETRY - zabezpiecza nowy proces przed ponownym rozdzieleniem w przypadku błędu id umozliwia nadanie dodatkowej nazwy danej usłudze log_type określa sposób logowania zdarzeń związanych z dostępem do poszczególnych usług : SYSLOG funkcja [poziom] mozliwe funkcje to : daemon | auth | authpriv | user | local0-7 mozliwe poziomy to : emerg | alert | crit | err | warning | notice | info | debug FILE nazwa_pliku [max1[max2]] nazwa_pliku - wskazuje na pliku, do którego trafiać będą logi max1 - określa rozmiar pliku po przekroczeniu którego wysyłane jest ostrzeżenie do sysloga max2 - określa rozmiar po przekroczeniu którego syslog przestaje logować log_on_success Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com określa, które dane mają zostać zalogowane w przypadku udanego połączenia i skorzystania z usługi : HOST - loguj IP klienta PID - loguj PID procesu, który obsłużył klienta DURATION - loguj długość trwania połączenia USERID - loguj identyfikator zdalnego użytkownika EXIT - loguj status serwera po obsłużeniu klient log_on_failure określa, które dane mają zostać zalogowane w przypadku nieudanego połączenia i skorzystania z usługi :ATTEMPT - loguj fakt próby połączenia HOST - loguj IP klienta USERID - loguj identyfikator zdalnego użytkownika RECORD - loguj wszelkie dostępne dane o kliencie nice określa priorytet uruchamianej usługi (wysoki priorytet -10 , niski -20) no_access zawiera listę klientów, którzy nie mogą korzystać z danej usługi serwisu Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com only_from zawiera listę klientów, którzy mogą korzystać z usługi serwisu port wskazuje na numer portu skojarzony z daną usługą protocol określa protokół wykorzystywany do obsługi połączenia (musi być on zdefiniowany w pliku /etc/protocols) redirect przekierowanie rządania na inną maszynę server zawiera ścieżkę do programu uruchamiającego dany serwer Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com server_args jest listą argumentów przekazywanych do programu serwera przy jego uruchomieniu socket_type przyjmuje wartość stream dla usług o charakterze połączeniowym (tcp) lub datagram dla usług bezpołączeniowych (udp) type określa typ serwisu : INTERNAL - serwisy zarządzne bezpośrednio przez xinetd bez udziału konkretnych serwerów (echo, time, daytime, chargen, discard) RPC - serwisy wymienione w pliku /etc/rpc UNLISTED - dla serwisów nie wymienionych w plikach : /etc/rpc /etc/services wait dotyczy srwisów jedno lub wielowątkowych : NO[.max] - dotyczy serwerów wielowątkowych, opcjonalne pole max określa maksymalną liczbę Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com procesów, które mozna utworzyć w ciągu 60 sek YES - w przypadku serwerów jednowątkowych cps limituje ilość przychodzących połączeń : wartość_1 - określa ilość maksymalnych połączeń do danego serwisu po przekroczeniu którego serwis zostaje deaktywowany wartość_2 - wyrażona w sekundach określa czas deaktywowania serwisu instances określa maksymalną liczbę serwerów tego samego typu pracujących w tym samym czasie max_load określa maksymalne obciążenie procesora po przekroczeniu, którego połączenia na ten serwer są odrzucane per_source określa limit połączeń dla serwera z tego samego adresu zródłowego : Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com dowolna_liczba - liczba określająca limit połączeń UNLIMITED - nieograniczona liczba połączeń W pliku xinetd.conf znajduje się zazwyczaj tylko główna konfiguracja serwera i wpis dołączający pliki z katalogu /etc/xinetd/ zawierające konfiguracje poszczególnych usług. Przykład : defaults { instances = 50 per_source = 5 log_type = FILE /var/log/xinetd.log 500K 600K log_on_success = HOST PID DURATION log_on_failure = HOST RECORD no_access = 192.168.1.3 disabled = telnet } service ftp { flags = REUSE socket_type = stream instances = 50 wait = no user = root Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com server = /usr/sbin/proftpd log_on_success = HOST PID log_on_failure = HOST RECORD } Are you a developer? Try out the HTML to PDF API open in browser PRO version pdfcrowd.com