inetd_3.pdf

(145 KB) Pobierz
3.doc
AKADEMIA GÓRNICZO-
HUTNICZA
Wydział Elektrotechniki, Automatyki, Informatyki i
Elektroniki
KATEDRA INFORMATYKI
inetd, telnet, ftp, rexec, rsh, tcpd, host.allow
Kierunek, rok studiów:
Informatyka rok IV
Przedmiot:
Administrowanie systemami komputerowymi
Prowadzący zajęcia :
Rok akad:
2000/2001
mgr inż. Bogusław Juza
Semestr:
letni
Zespół autorski:
Artur Leśniak
Rafał Kuczyński
115273430.001.png
Spis treści:
1. inetd - superserwer internetu.......................................................................................3
2. telnet – interfejs użytkownika dla protokołu TELNET................................................5
3. ftp - ARPANET'owy program do przesyłania plików..................................................8
4. rexec.........................................................................................................................13
5. rsh............................................................................................................................14
6. tcpd- urządzenie kontroli dostępu do usług internetowych........................................15
7. host.allow- plik konfiguracyjny programu /usr/sbin/tcpd...........................................17
Bibliografia:.....................................................................................................................19
1. inetd - superserwer internetu
Inetd powinien być wywoływany podczas startu systemu z /etc/rc.local. Nasłuchuje
on później połączeń na określonych gniazdach internetowych. Gdy na jednym z
gniazd zaistnieje połączenie, decyduje on, jakiej usłudze to gniazdo odpowiada i
wywołuje program, który obsłuży żądanie. Po zakończeniu programu, inetd
kontynuuje nasłuchiwania gniazda (poza niektórymi wypadkami, opisanymi poniżej).
Ogólnie, inetd umożliwia używanie jednego daemona do wywoływania wielu innych,
zmniejszając wymagane obciążenie systemu.
Składnia:
inetd [ -d ] [ plik konfiguracyjny ]
Opcje dostępne dla inetd:
-d włącza debuggowanie.
Podczas uruchamiania, inetd odczytuje swoją konfigurację z pliku konfiguracyjnego,
którym domyślnie jest /etc/inetd.conf . Musi znaleźć się tam wpis dla każdego pola
pliku konfiguracyjnego, z poszczególnymi wpisami dla danego pola; wpisy są
oddzielane znakiem tabulacji lub spacji. Komentarze są zaznaczane przez ``#'' na
początku linii. Musi istnieć wpis dla każdego pola. Pola pliku konfiguracyjnego są
następujące:
nazwa usługi (service name)
rodzaj gniazda (socket type)
protokół (protocol)
określenie, czy usługa ma "zwlekać" (wait/nowait[.max])
użytkownik[.grupa] (user[.group])
program serwera (server program)
argumenty programu serwera (server program arguments)
Aby podać usługę opartą o Sun-RPC (Remote Procedure Call) , wpis powinien
zawierać te pola:
nazwa usługi/wersja (service name/version)
rodzaj gniazda (socket type)
rpc/protokół (rpc/protocol)
zwłoka (wait/nowait[.max])
użytkownik[.grupa] (user[.group])
program serwera (server program)
argumenty programu serwera (server program arguments)
Wpis nazwa-usługi jest nazwą prawidłowej usługi, zdefiniowanej w pliku
/etc/services. Plik /etc/services jest prostą bazą, która kojarzy łatwe dla człowieka
nazwy portów z wykorzystywanymi przez komputery numerami:
nazwa port/protokół aliasy # komentarz
Dla usług „wewnętrznych'' (internal) (opisanych niżej), nazwa usługi musi być
oficjalną nazwą usługi (to znaczy pierwszym wpisem w /etc/services ). Podczas
podawania usługi opartej o Sun-RPC , pole to jest prawidłową nazwą usługi RPC,
zdefiniowaną w pliku /etc/rpc . Część na prawo od „/'' jest numerem wersji RPC. Może
to być zwyczajny argument numeryczny, lub zakres wersji. Zakres jest obramowany
od niższej wersji do wyższej – „rusers/1-3''.
Wpis rodzaj gniazda powinien być jednym z „stream'', „dgram'', „raw'', „rdm'', lub
„seqpacket'', zależnie od tego, czy gniazdo jest strumieniowe (stream), datagramowe
(datagram), lub typu raw, reliably delivered message (rdm), czy też sequenced
packet.
Pole protokół musi być prawidłowym protokołem, zdefiniowanym w /etc/protocols .
Przykładami mogą być „tcp'' lub ``udp''. Usługi oparte o RPC są określane przez
``rpc/tcp'' lub ``rpc/udp.''
Wpis zwłoka jest używany tylko dla gniazd datagramowych (inne gniazda powinny
mieć wpis „nowait'' ). Jeśli serwer datagramowy łączy się ze swoim rozmówcą,
zwalniając gniazdo w ten sposób, że inetd może odbierać dalsze wiadomości z tego
gniazda, to mówi się o nim jako o serwerze „wielowątkowym'' (multi-threaded) i
powinno się używać wpisu „nowait''.
Serwery datagramowe, które przetwarzają wszystkie nadchodzące do gniazda
datagramy, ewentualnie mające timeouty, nazywa się „jednowątkowymi'' (single
threaded) i powinno używać się dla nich wpisu „wait.'' Serwer „biff” (zostań
poinformowany, jeśli przyjdzie poczta i od kogo) i talkd (talk) są przykładami tego
drugiego rodzaju serwerów datagramowych. Tftpd jest wyjątkiem; jest to serwer
datagramowy, który zestawia pseudopołączenia. Musi być zdefiniowany jako „wait''
aby zapobiec wyścigowi; serwer odczytuje pierwszy pakiet, tworzy nowe gniazdo,
następnie forkuje i wychodzi, aby inetd mógł robić swoje i oczekiwać na nowe
żądania usług, które (jak zwykle) przyłącza następnie do odpowiednich innych
serwerów. Opcjonalny przyrostek „max'' (oddzielony od „wait'' lub „nowait'' kropką)
określa maksymalną liczbę instancji serwera, jakie mogą zostać postawione przez
inetd w czasie 60 sekund. Gdy zostanie to pominięte, „max'' przyjmuje wartość 40.
Wpis użytkownik powinien zawierać nazwę użytkownika, pod którym powinien
uruchamiać się serwer. Umożliwia to serwerom posiadanie mniejszych praw niż
prawa roota. Opcjonalnie, po dodaniu kropki do nazwy użytkownika, można podać w
tym polu nazwę grupy. Umożliwia to serwerom pracę w innym (podstawowym) id
grupy niż ten, podany w pliku z hasłami. Jeśli grupa jest podana, a użytkownik nie
jest rootem, to uzupełniające grupy związane z użytkownikiem wciąż będą
ustawione.
Wpis program serwera powinien zawierać ścieżkę programu, który ma być
wywoływany przez inetd po otrzymaniu żądania na gnieździe. Jeśli inetd udostępnia
tę usługę wewnętrznie, to wpis ten powinien być wpisem „internal''.
Wpis argumenty programu serwera powinien wyglądać tak jak zwykłe argumenty,
poczynając od arg[0], który jest nazwą programu. Jeśli usługa jest udostępniana
wewnętrznie, to wpis powinien przyjąć nazwę „internal.''
Inetd udostępnia wiele „trywialnych'' usług wewnętrznie, używając do tego swoich
własnych procedur. Tymi usługami są „echo'', „discard'', „chargen'' (generator
znaków), „daytime'' (odczytywalny przez człowieka czas) oraz „time'' (czas
odczytywalny przez maszynę, liczba sekund od północy 1 stycznia 1900). Wszystkie
te usługi są oparte o tcp.
Inetd odczytuje swój plik konfiguracyjny od nowa gdy otrzyma sygnał zawieszenia
(hangup), czyli SIGHUP. Usługi mogą być tak dodawane, kasowane lub
modyfikowane. Inetd tworzy plik /etc/inetd.pid który zawiera jego identyfikator
procesu (PID).
Komenda inetd pojawiła się w 4.3BSD. Wsparcie dla usług opartych o Sun-RPC
zostało zamodelowane wg udostępnionego przez Sun-OS 4.1 .
Fragment pliku /etc/inetd.conf (dostarczany z dystrybucją Debian) :
# Internal services
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
# These are standard services.
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
2. telnet – interfejs użytkownika dla protokołu TELNET
Komenda telnet wykożystywana jest do komunikacji z innym hostem przy użyciu
protokołu TELNET (interaktywne połączenie terminalowe).
Telnet pozwala zatem na zdalną pracę na dowolnym komputerze w sieci, telnet
działa jak zdalny terminal komputera, istnieją różne rodzaje terminali i poszczególne
komputery przystosowane są do pracy tylko z określonymi spośród nich, Dla
użytkownika telnetu istotną wiadomością jest zatem, z jakimi typami terminali potrafi
pracować docelowy komputer, a z drugiej strony - jakie terminale potrafi emulować
wykorzystywany przez nas program telnetu (większość systemów używa zbliżonych
standardów obsługi terminala),
Najprostszym typem terminala jest tzw. tępy terminal ( dumb terminal ). Jego
możliwości sprowadzają się wyłącznie do przesyłania w obie strony drukowalnych
znaków ASCII, bez możliwości jakiegokolwiek sterowania sposobem ich
wyświetlania. Jeżeli oprogramowanie „po obu stronach” połączenia nie może
uzgodnić wspólnego standardu obsługi terminala, komputery pracują w tym trybie
dumb.
Większość systemów Unixowych (i nie tylko) osiągalnych w Internecie, jak również
większość typowych programów telnetu, przystosowana jest do obsługi terminali
Zgłoś jeśli naruszono regulamin