E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\39.DOC 631
Rozdzia³ 39. ¨ UUCP 631
Tim Parker
W tym rozdziale:
u Konfiguracja protokołu UUCP
u Połączenie UUCP
u Komunikacja bezpośrednia
u Skrypty logowania
u Modyfikowanie harmonogramu dostępu
u UUCP a bezpieczeństwo
u Używanie protokołu UUCP
Protokół UUCP (ang. UNIX to UNIX Copy) opracowany został jako prosty protokół do połączeń modemowych pomiędzy systemami UNIX-owymi. Dziś najczęściej używany jest do przesyłania poczty, pozwalając na korzystanie z niej za pośrednictwem modemu systemom nie podłączonym na stałe do sieci. Może również być używany do przeglądania grup dyskusyjnych i innych podobnych usług, nie wymagających stałego połączenia. UUCP tworzy połączenie pomiędzy dwoma systemami UNIX-owymi. Nie może być użyty do korzystania z systemu zdalnego (typu FTP czy Telnet). Choć posiada zabezpieczenia adekwatne do większości zastosowań, właśnie ten protokół jest najczęściej używany do włamań, ponieważ administratorzy przez niedopatrzenie czy niewiedzę nie konfigurują odpowiednio tych zabezpieczeń.
W systemach linuxowych używa się kilku wersji UUCP, które są kompatybilne ze sobą pod względem przesyłania danych, ale różnią się procesem konfiguracji. Często podczas instalacji systemu można wybrać pomiędzy wersją Taylor UUCP i HDB (HoneyDanBer) UUCP. Wielu użytkowników Linuxa woli wersję Taylor, choć użytkownicy innych systemów UNIX-owych wybierają nowszą wersję HDB. W tym rozdziale przyjrzymy się obu tym wersjom (inne są spotykane względnie rzadko, nie będziemy się wiec nimi zajmować). W pierwszej części rozdziału zajmiemy się konfiguracją UUCP, druga omawia używanie tego protokołu.
Większość plików konfiguracyjnych dotyczących UUCP znajduje się w katalogu /usr/lib/uucp. Choć proces konfiguracji może wydawać się okropnie skomplikowany, w rzeczywistości tylko kilka plików wymaga modyfikacji (w każdym z nich trzeba zmienić jeden lub dwa wpisy).
Wersje Taylor i HDB różnią się całkowicie pod względem konfiguracji, omówimy je więc oddzielnie. Nie musisz się martwić o to, jaka wersja działa na drugim końcu połączenia – nie ma to żadnego znaczenia, o ile tylko system jest skonfigurowany prawidłowo.
W niektórych wersjach Linuxa dostępne są skrypty nieco ułatwiające konfigurację (częściej skrypty takie rozprowadzane są z wersją HDB, choć kilka skryptów jest również dostępnych dla wersji Taylor UUCP). Jeśli zdecydujesz się na ich użycie, mimo wszystko powinieneś sprawdzić wszystkie wpisy „ręcznie”.
W podanym niżej przykładzie zakładamy, że nazwą naszego komputera jest merlin i chcemy połączyć się za pomocą UUCP z komputerem arthur. Podczas konfigurowania swojego systemu powinieneś zachować format wszystkich podanych przykładów, wprowadzając oczywiście poprawki dotyczące nazw systemów.
Poniżej przedstawiamy pliki biorące udział w procesie konfigurowania Taylor UUCP, wraz z ich krótkim opisem:
u /usr/lib/uucp/config – definiuje nazwę komputera lokalnego;
u /usr/lib/uucp/sys – określa, jak wywoływać systemy zdalne;
u /usr/lib/uucp/port – opisuje każdy port używany do nawiązywania połączenia i jego parametry;
u /usr/lib/uucp/dial – definiuje metody porozumiewania się z modemem przy nawiązywaniu połączeń;
u /usr/lib/uucp/dialcodes – w nim zapisywane są pełne odpowiedniki symbolicznych kodów numerów telefonicznych; rzadko używany, gdy istnieje połączenie bezpośrednie;
u /usr/lib/uucp/call – może zawierać identyfikator i hasło systemu zdalnego, ale obecnie jest rzadko używany;
u /usr/lib/uucp/passwd – zawiera identyfikatory użytkowników i hasła używane, gdy ktoś chce połączyć się z Twoim systemem; używany tylko w przypadku, gdy zamiast zwykłego logowania aktywny jest program uucico.
Aby nie komplikować problemu, pominiemy tu całą teorię i przejdziemy od razu do omówienia przykładowej konfiguracji. Jedyne, co musisz zrobić, to podstawić własne dane, takie jak numery telefonów, pliki urządzeń, nazwy systemów itp. Proces powinien być powtórzony dla każdego systemu, z którym chcesz się łączyć.
Pierwszy plik, który należy zmodyfikować, zawiera nazwę systemu i kilka innych ogólnych parametrów. Plik /usr/lib/uucp/config powinien zawierać jeden wiersz definiujący nazwę Twojego systemu:
nodename merlin
Słowo nodename musi rozpoczynać wiersz, po nim muszą następować spacje lub znaki tabulacji, a następnie nazwa systemu lokalnego. Informacja w tym pliku może być wprowadzona podczas instalowania systemu – wtedy nie trzeba jej modyfikować. Powinieneś jednak upewnić się, że jest ona prawidłowa – w przeciwnym przypadku połączenie nie będzie działało.
Aby można było używać UUCP, Twój system musi posiadać nazwę. Dla kompatybilności ze starszymi wersjami UUCP powinna ona składać się z siedmiu lub mniej znaków. Najlepiej, jeśli jest to ta sama nazwa, którą podałeś podczas instalacji systemu. Ułatwi to życie użytkownikom, którzy będą chcieli połączyć się z Twoim systemem. Przykładowo, jeśli pełna nazwa domenowa systemu ma postać merlin.tpci.com, rozsądnie będzie nadać mu nazwę UUCP merlin.
Potrzebne będą również informacje o systemie, z którym zamierzasz się połączyć. Należy je wprowadzić do pliku /usr/lib/uucp/sys. Zwykle plik ten zawiera kilka przykładowych wpisów, można więc użyć jednego z nich jako szablonu, usuwając również znaki komentarza (#). Wpis określający parametry połączenia z komputerem arthur może wyglądać na przykład tak:
# system: arthur (Bill Smallwood's Linux system)system arthurtime Anyphone 555-1212port com1speed 9600chat login: merlin password: secret1
Pierwszy wiersz powyższego przykładu jest komentarzem. Następne wiersze określają różne parametry połączenia, takie jak nazwa systemu zdalnego (arthur), czas, kiedy można łączyć się z systemem (wartość Any oznacza brak ograniczeń), numer telefonu (włącznie z numerem kierunkowym itp.), port szeregowy, którego należy użyć (com1), prędkość połączenia (9600 bodów) oraz skrypt chat, automatyzujący logowanie (w tym przypadku odpowiadający na monit login: tekstem merlin, a następnie wysyłający hasło secret1 po odebraniu tekstu password:).
Większość połączeń wymaga podania identyfikatora i hasła – muszą się one znaleźć w pliku konfiguracyjnym, ponieważ UUCP nie dopuszcza sesji interaktywnych. Może to stanowić pewien problem, ponieważ pozwala innym użytkownikom na odczytanie hasła dostępu, ale ponieważ używane jest ono tylko do obsługi UUCP, nie jest to poważne zagrożenie. Poza tym odpowiednio ustalone prawa dostępu do tego pliku powinny zabezpieczać przed odczytaniem go przez użytkowników systemu.
Nie wszystkie serwery wymagają podania hasła przy połączeniach UUCP. W niektórych używa się hasła pustego, w jeszcze innych – uucp.
Nazwa portu podana w pliku /usr/lib/uucp/sys nie musi zgadzać się z faktyczną nazwą urządzenia w systemie Linux – odpowiednie połączenie zapewnia wpis w pliku /usr/ lib/uucp/port, w którym dla modemu o prędkości 9600 bodów powinien znaleźć się wpis podobny do takiego:
# com1 device portport com1type modemdevice /dev/cua0speed 9600dialer Hayes
Pierwszy wiersz w powyższym przykładzie określa nazwę portu, używaną również w pliku /usr/lib/uucp/sys. Typ połączenia (zwykle modem) określony jest w następnym wierszu. Faktyczne urządzenie, do którego odnosi się dany port, określone jest w wierszu trzecim. W wielu systemach można tu wpisać identyfikator /dev/modem, który jest dowiązaniem do odpowiedniego urządzenia.
Dalej następuje maksymalna prędkość połączenia modemowego. Jako ostatnia podana jest informacja o typie modemu, a właściwie sposobie, w jaki ma on wybrać numer. Jest to pozostałość po czasach, gdy modemy nie potrafiły same wybierać numeru i używały do tego celu urządzenia o nazwie dialer.
Typ modemu podany w pliku /usr/lib/uucp/port musi być zdefiniowany w pliku /usr/lib/uucp/dial; oto przykładowy wpis:
# Hayes modemdialer Hayeschat "" ATZ OK ATDT\T CONNECT
Symbol \T automatycznie zastępowany jest przez numer, z jakim należy się połączyć. W niektórych systemach dane z plików /usr/lib/uucp/dial i /usr/lib/uucp/port połączone są w jeden wpis w pliku /usr/lib/uucp/sys, bezpośrednio opisujący wszystkie parametry modemu i połączenia.
Komputer na drugim końcu połączenia (w tym przypadku arthur) musi posiadać w plikach konfiguracyjnych odpowiednie wpisy dla komputera merlin. Będą one podobne do przedstawionych powyżej, różnice wystąpią tylko w nazwach systemów, numerze telefonu, ewentualnie również w skrypcie chat i typie modemu. Dopóki oba komputery nie są skonfigurowane prawidłowo, uzyskanie połączenia nie będzie możliwe.
W niektórych systemach dostępny jest program uuchck, który weryfikuje wpisy w plikach konfiguracyjnych i wyświetla odpowiednie podsumowanie. Program ten możesz również zdobyć w węzłach FTP i BBS (namiary na nie możesz znaleźć w dodatku A „Węzły FTP i grupy dyskusyjne poświęcone Linuxowi”).
Domyślnie Taylor UUCP pozwala systemowi zdalnemu po połączeniu się wykonać tylko wybrane polecenia. Zwykle są to polecenia rmail i rnews. Jeśli chcesz pozwolić na używanie jakichś dodatkowych poleceń, musisz dodać wiersz zawierający ich nazwy do pliku /usr/lib/uucp/sys; na przykład, aby zezwolić na używanie poleceń rmail, rnews, rsmtp i rdataupdate, należy dodać następujący wiersz:
system chatton...commands rmail rnews rsmtp rdataupdate
Wszystkie polecenia muszą znajdować się w ścieżce przeszukiwania używanej przez programy obsługi UUCP (czyli w zasadzie program uuxqt).
Jeśli chcesz przesyłać pliki pomiędzy dwoma komputerami, musisz również zmodyfikować inne pliki konfiguracyjne. Kiedy system zdalny wysyła plik do Twojego komputera, powinien być on ze względów bezpieczeństwa zapisany w katalogu /usr/spool/ uucppublic lub /var/spool/uucppublic. Nie powinieneś pozwalać na zapisanie plików gdziekolwiek indziej, ponieważ może się to skończyć zniszczeniem plików systemowych. Przyjęło się, że przesyłane pliki trafiają do katalogu /usr/spool/uucppublic lub /usr/ spool/uucp/system, gdzie system to nazwa systemu zdalnego.
Katalogi, do których trafiać mają pliki przesyłane przez UUCP i z których można wysyłać pliki, można określić w pliku /usr/lib/uucp/sys:
system chatton...local-send ~/sendlocal-receive ~/receive
Przy takiej konfiguracji użytkownicy Twojego systemu mogą wysyłać pliki znajdujące się w podkatalogu send katalogu uucp, a każdy plik przychodzący zostanie zapisany w podkatalogu receive. Można zezwolić na wysyłanie plików z kilku różnych miejsc, na przykład z katalogów domowych użytkowników:
local-send ~/send /home
Jeśli chcesz umożliwić obsługę żądań transferu pochodzących z komputera zdalnego, powinieneś dodać dwa wpisy:
remote-send /usr/lib/uucppublicremote-request /usr/lib/uucppublic
Powodują one, że komputer zdalny może pobierać pliki z katalogu /usr/lib/ uucppublic, może również w tym samym katalogu zapisywać pliki. Również tu można zezwolić na korzystanie z kilku katalogów, oddzielając ich nazwy spacjami.
UUCP pozwala także na przesyłanie danych do innego komputera za pomocą komputera pośredniczącego (ang. hopping). Przykładowo, jeśli chcesz wysyłać pocztę do systemu warlock, ale połączyć się z nim możesz tylko przez systemem wizard, powinieneś poinformować o tym fakcie system UUCP. W tym celu do pliku /usr/lib/uucp/sys powinieneś dodać polecenie forward:
system wizard...forward warlock
Następnie należy dodać wpis dla systemu warlock, który poinformuje UUCP, że poczta przychodząca od Ciebie przechodzić będzie przez system wizard...
Wolf-1