Are you a developer? Try out the
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
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
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
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
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
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
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
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
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
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 źródłowego :
Are you a developer? Try out the
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
server = /usr/sbin/proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}