IP-MASQUERADE INDEX STRONA GŁÓWNA
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 :

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 :

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

 

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

 

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
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

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

 

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

 

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ę 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 :
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
server = /usr/sbin/proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}

GRUPA MEDIA INFORMACYJNE & ADAM NAWARA