Transfer - Linux Magazine

Transkrypt

Transfer - Linux Magazine
SYSADMIN
Admin-Workshop
Transfer plików to jedno z zadań
tradycyjnie zdominowanych przez
oprogramowanie bezpłątne – tradycyjne narzędzia do FTP (File
Pro-FTPD
Transfer
Transfer Protocol) radzą sobie
z tym zadaniem bardzo dobrze.
Jednak administratorzy chcący uruchomić serwer FTP potrzebują dużego zasobu wiedzy, aby uniknąć
typowych pułapek.
MARC ANDRÉ SELIG
I
stnieje wiele protokołów do przenoszenia plików przez Internet, nie
wszystkie jednak nadają się do zastosowania w każdej sytuacji. Popularne
usługi typu peer-to-peer, takie jak Gnutella, E-Donkey lub cohorts, zostały stworzone po to, aby umożliwić udostępnianie
swoich plików innym osobom – każdy
z użytkowników ma możliwość zarówno
otrzymywania jak i udostępniania swoich
plików. Udostępnianie w Internecie darmowych programów to zupełnie inna
sprawa, niewielka liczba programistów
i ich serwerów musi obsłużyć dużą liczbę
odbiorców. W tej sytuacji zwykle używane
są protokoły FTP i HTTP.
Oczywistym wyborem dla prostych zadań
jest HTTP. Dzięki Apache łatwo znaleźć
Najpopularniejsze demony FTP
Administratorzy są rozpieszczani wyborem
demonów FTP. Poniższa lista przedstawia
czterech powszechnie przyjętych i używanych
przedstawicieli tej klasy serwisów:
BSD-F
FTPD: to pradziadek wielu linuksowych serwerów FTP, BSD-FTPD stanowił
też inspiracje dla wielu innych projektów.
Demon ten zapewnia wystarczające wsparcie dla systemów o niskiej przepustowości
i z tego powodu dołączony jest do wielu
dystrybucji Linuksa. Nie można jednak
oczekiwać, że obsłuży bardziej złożone zadania albo większe pasmo.
WU-F
FTPD: The Washington University FTP
daemon [2] jest implementacją, która obecnie najbardziej ze wszystkich demonów przypomina BSD-FTPD. WU-FTPD dostarcza
szerokiego zakresu opcji konfiguracyjnych
oraz dobrze integruje się z systemami uniksowymi. Demon ten w przeszłych latach
66
Kwiecień 2004
miał wiele luk w bezpieczeństwie, ale te problemy należą już do przeszłości.
NC-F
FTPD: Ten komercyjny serwer [3] jest
dostępny w wersji darmowej tylko dla zastosowań domowych i edukacyjnych. Mimo że
kod źródłowy jest zastrzeżony, dzięki automatycznej instalacji jest to ciągle popularny
demon. Serwer ten potrafi bardzo szybko obsłużyć wiele sesji jednocześnie.
Pro-F
FTPD: podobnie jak NC-FTPD, Pro-FTPD [4], któremu przyjrzymy się w dalszej części artykułu, może działać jako niezależny serwer i dzięki temu jest szybszy niż
konkurenci. Akceptując przychodzące połączenie, aby obsłużyć sesje, nie musi uruchamiać nowego procesu. W razie konieczności do uruchomienia demona FTP
można użyć inetd. Pro-FTPD jest oprogramowaniem typu Open Source, łatwo konfigurowalnym i bezpiecznym.
www.linux-magazine.pl
odpowiedni serwer, a prawie każdy komputer posiada łatwego w użyciu klienta. Niestety w HTTP brakuje kilku cech, których
wymagają użytkownicy do ściągania dużych plików przez przeciążone łącza.
Największą dolegliwością jest tutaj sposób, w jaki HTTP obsługuje zerwane połączenia. Mimo że specyfikacja HTTP 1.1
przewiduje funkcję wznawiania dla przerwanych transferów, większość przeglądarek nie potrafi jej obsłużyć, stąd utrata dużej części użytecznego pasma i czasu. W dodatku, mimo dostępności nowoczesnego
oprogramowania, uruchomienie serwera
WWW pochłania dużo zasobów.
Większość z tych zagadnień nie dotyczy
[FTP] [1]. Ważne jest, aby zrozumieć, że
FTP nie jest rozszerzeniem ani poprawioną
wersją HTTP, lecz niezależnym, a także
o wiele starszym protokołem.
Instalacja
Wiele serwerów internetowych bazuje na
dostępnych demonach FTP. Jeżeli chcecie
sami wybrać demona, to odsyłamy do
ramki „Najpopularniejsze demony FTP”,
w którym znajdziecie najczęściej używane
serwery FTP dla Linuksa. W tym artykule
skupimy się na jednym z silniejszych,
bezpiecznych i łatwych do nauki demonów – Pro-FTP.
Admin-Workshop
SYSADMIN
FTP protokół do transferu plików
Mimo że techniki leżące u podstaw protokołów FTP i HTTP całkowicie się od siebie
różnią, użytkownicy przeglądarek internetowych nie zauważą większej różnicy w połączeniach.
jest także odpowiedzialne za pokazywanie
zawartośći katalogów itp.
FTP i nazwy użytkowników
Każda sesja FTP zaczyna się od zalogowania
nazwą użytkownika i hasłem. Ponieważ protokół przesyła te dane w czystej formie, sensowne jest użycie innych danych dla FTP niż
dla normalnego konta. Zakładanie konta
FTP dla każdego odwiedzającego, który
chce ściągać lub wgrywać pliki, powodowałoby zbyt wiele pracy dla administratora. Prowadzi to do konwencji honorowanej przez
większość serwerów FTP, czyli utrzymywania
konta gościa pod nazwą anonymous lub ftp.
Serwery FTP zazwyczaj akceptują każdy adres mailowy jako hasło; łańcuch username@
interpretowany jest jako nazwa użytkownika
na danym hoście.
Porty
Każda z usług sieciowych używa pojedynczego lub wielu portów, np. HTTP używa portu
80 TCP. Serwer utrzymuje otwarty port 80
i nasłuchuje na tym porcie nadchodzących
połączeń. Klienci na swoich lokalnych maszynach mogą używać jakiegokolwiek portu do
otwarcia połączenia z portem 80 na serwerze.
W przypadku FTP nie jest to jednak takie
proste. Jak pokazano na rysunku 1, protokół
FTP rozróżnia połączenie sterujące (dla poleceń) i połączenie dla danych, służące do
przesyłania plików. Połączenie dla danych
Niektóre z aktualnych dystrybucji Linuksa dostarczają wymagane pakiety, chroniąc od bólu głowy związanego z instalacją
demonów FTP. W innym przypadku będzie
trzeba wykonać kilka czynności, zaczynając
od ściągnięcia źródeł i ich podpisów cyfrowych z [4]. Upewnijcie się, czy sprawdziliście podpisy: konieczne czynności pokazuje
netowych. Mozilla, Opera, a nawet Internet
Explorer pytają serwer o podanie portu dla
połączeń z danymi. Pytany serwer odpowiada numerem, następnie klient otwiera drugie połączenie z dowolnego portu lokalnego do portu podanego przez serwer. Połączenie sterujące nie jest zmieniane, bez
względu na status połączenia dla danych.
Uwaga na reguły firewalla
Rysunek 1: FTP używa połączenia sterującego (control connection) i jednego lub więcej połączeń dla danych (data connection).
W trybie aktywnym (na górze) serwer otwiera kanał dla danych; w trybie pasywnym (na
dole) klient otwiera kanał z danymi.
Połączenie sterujące jest tu odbiciem tradycyjnego modelu klient/serwer i używa portu
21 TCP. O tym jak zostaną potraktowane
dane decyduje komputer klient, który może
zażądać otwarcia trybu aktywnego. W trybie
aktywnym klient otwiera dowolny port lokalny i używa kanału sterującego do poinformowania serwera o numerze tego portu. Następnie serwer, używając portu 20, otworzy
aktywne połączenie TCP z portem podanym
przez klienta. Połączenie jest otwarte w przeciwnym, niż można by się spodziewać, kierunku. Nietypowe tutaj jest też podawanie
portu źródłowego zamiast docelowego.
Klienci FTP uruchamiani z linii poleceń zazwyczaj używają trybu aktywnego. Połączenia pasywne są domeną przeglądarek inter-
Listing 1. Po pierwsze należy uruchomić
md5sum do sprawdzenia sumy kontrolnej
MD5. Da to pewność, że pakiet nie został
uszkodzony podczas przesyłania i uchroni
od nieoczekiwanych błędów.
Sprawdzanie podpisu GPG jest bardzo
ważne. W przeciwieństwie do sumy kontrolnej MD5, sprawdzana jest tu autentycz-
Listing 1: Sprawdzanie podpisów
mas@ishi:/tmp> md5sum -c proftpd-1.2.9.tar.bz2.md5
proftpd-1.2.9.tar.bz2: OK
mas@ishi:/tmp> gpg proftpd-1.2.9.tar.bz2.asc
gpg: Signature made Fri Oct 31 09:39:42 2003 CET using DSA key ID A511976A
gpg: Good signature from "TJ Saunders <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:
There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 697E 684D 1668 D696 8428 405C B78E 893F A511 976A
mas@ishi:/tmp>
Podczas instalacji serwera FTP należy być
świadomym tej nietypowej procedury działania FTP. Wiele dystrybucji automatycznie zakłada filtry (IP filters) blokujące dodatkowe
porty. Domyślnie zezwalają one tylko na
określone przez serwer aktywne połączenie
dla danych, połączenie to jest jednak bezużyteczne, jeżeli nie można ustanowić połączenia sterującego. Administratorzy FTP powinni zmienić swoją konfiguracje firewalla
i określić odpowiednie reguły. Zakładając, że
mamy do czynienia z jądrem w wersji 2.5,
będą one następujące:
iptables -A INPUT -p tcp U
--sport 1024: --dport 21 U
-j ACCEPT
iptables -A INPUT -m state U
--state ESTABLISHED,RELATED U
-j ACCEPT
iptables -A OUTPUT -m state U
--state ESTABLISHED,RELATED U
-j ACCEPT
ność programu. Skąd jednak możemy wiedzieć, czy klucz publiczny dostarczony
z pakietem należy właśnie do programisty
Pro-FTPD, TJ Saunders.? Niestety nie
można mieć gwarancji posiadania właściwego klucza, ale sprawdzenie podpisu pomoże nam nabrać zaufania do programu.
Teraz możemy już wykonać standardowe
czynności, aby skompilować źródła i zainstalować w Linuksie binaria programu. Listing 2 pokazuje nam przegląd tych czynności. W tym przypadku interesujące są opcje
polecenia „configure” umieszczone w trzeciej linii listingu.
Użytkownicy i katalogi
Aby uporać się z instalacją, należy wykonać kilka dodatkowych czynności. Po
pierwsze, należy sprawdzić, czy posiadamy konto dla demona. Zazwyczaj Pro-FTPD używa trzech kont, każde z nich
przyporządkowane do określonej grupy.
www.linux-magazine.pl
Kwiecień 2004
67
SYSADMIN
Admin-Workshop
~ftp powinna przypominać strukturę z Listingu 3.
Listing 2:
Instalacja Pro-FTPD
$ bzip2 -cd proftpd-1.2.9.tar.bz2
| tar xf $ cd proftpd-1.2.9
$ ./configure -sysconfdir=/etc/proftpd -localstatedir=/var/run
[...]
$ make
[...]
$ su
Password:
# make install
Do niektórych zadań Pro-FTP używa
uprawnień root-a, jednym z nich jest uruchamianie serwera. Większość kodu używa konta użytkownika nobody i grupy nogroup. Pro-FTP używa konta gościa, aby
obsłużyć typowe anonimowe logowania,
należy zatem założyć konto użytkownika
ftp w grupie ftp.
Anonimowy użytkownik będzie potrzebował swojego katalogu domowego, który będzie miejscem do przechowywania plików
dla publicznego dostępu. Zwróć uwagę, że
demon powinien być w stanie odczytać te
pliki nie będąc ich właścicielem. Pro-FTPD
można skonfigurować tak, aby wymusić
ochronę zapisu, w tym przypadku lepiej jednak kierować się względami bezpieczeństwa.
W razie potrzeby można też utworzyć katalog do wgrywania plików. Większość serwerów używa katalogu /incoming lub
/pub/incoming. Zakładamy prawa dostępu
pozwalające na zapis do tego katalogu bez
możliwości odczytu. Pozwoli to ustrzec się
przed użytkowaniem katalogu przez hackerów jako składu dla ich nielegalnych plików. Ostatecznie nie wiadomo jaki rodzaj
plików zostanie skopiowany na serwer i jakie mogą być tego prawne reperkusje.
Ostateczna wersja drzewa katalogów dla
Konfiguracja
i uruchomienie serwera
Kolejnym krokiem będzie sprawdzenie
pliku konfiguracyjnego /etc/proftpd/proftpd.conf. Pro-FTPD1.2.9 instaluje domyślną wersję tego pliku. Posiada on intuicyjną składnię podobną do tej używanej przez Apache. Na początek plik zakłada tylko anonimowe ściąganie plików.
Chcąc zezwolić na wczytywanie, należy
dodać kilka wpisów. Na serwerze FTP Linux Magazine znajduje się próbka pliku
proftpd.conf umożliwiająca wczytywanie
i ściąganie plików [6].
Istnieją dwa podejścia do uruchamiania
serwera FTP podczas uruchamiania komputera. Można tu zastosować podejście
scentralizowane z inetd lub xinetd lub uruchamiać demona jako osobny proces w tle,
co pozwala na niezależną obsługę przychodzących połączeń. Zajmiemy się tym drugim rozwiązaniem. Pomimo większemu zapotrzebowaniu na zasoby, podejście to
oznacza dla użytkowników szybszą odpowiedź serwera.
Systemy linuksowe zazwyczaj używają do
uruchamiania usług (i innych składników
systemu) tzw. skryptów inicjujących.
Skrypty te korzystają z przekazywanych do
nich komend: parametr start uruchamia
usługę, stop kończy. Polecenie restart, jak
sugeruje nazwa, uruchamia usługę ponownie – jest to często wykorzystywane do załadowania zmodyfikowanej konfiguracji.
Przykład odpowiedniego skryptu jest dostępny w [6]. Można przykładowo skopiować plik do /etc/init.d/proftpd i utworzyć dowiązanie symboliczne (link) do katalogu,
w którym znajduje się demon. Służą do tego, widoczne na Listingu 4, polecenia typowe dla systemu Linux. W zależności od dystrybucji może istnieć konieczność zamiany
/etc/init.d/rc3.d na /etc/rc3.d w linii 4.
Listing 3: Katalog FTP home
# chmod 733 ~ftp/incoming
# ls -la ~ftp
total 20
drwxr-xr-x 4 root root
drwxr-xr-x 4 root root
drwx-wx-wx 2 root root
drwxr-xr-x 2 root root
-rw-r--r-- 1 root root
#
68
Kwiecień 2004
Listing 4:
Skrypt startowy
# cp proftpd /etc/init.d/
# chown root:root
/etc/init.d/proftpd
# chmod 744 /etc/init.d/proftpd
# cd /etc/init.d/rc3.d
# ln -s /etc/init.d/proftpd
S85proftpd
# cd ../rc5.d
# ln -s /etc/init.d/proftpd
S85proftpd
Do uruchamiania poszczególnych usług
we właściwej kolejności systemy linuksowe
używają tzw. skryptów sekwencyjnych (sequencer scripts). Litera S na początku linii
uruchamia usługę, a za nią znajduje się numer definiujący kolejność. Reszta linii
określa nazwę usługi, która ma zostać uruchomiona.
Na zakończenie
Posiadając uprawnienia root-a uruchamiamy serwer po raz pierwszy wpisując
/etc/init.d/proftpd start. Po ponownym uruchomieniu komputera skrypt startowy automatycznie uruchomi serwer.
Zakładając, że wszystko działa poprawnie, uzyskamy dostęp do naszego nowego
serwera FTP jako ftp://localhost. Sprawdźmy działanie serwera z maszyny lokalnej,
jak również z innych systemów. Szczególne
ważne jest sprawdzenie reguł na firewallu.
Teraz można już wypełnić nasz katalog domowy ~ftp/pub plikami, które mają być
udostępnione na serwerze.
Aby skonfigurować serwer FTP pod
względem bezpieczeństwa, konieczne jeszcze będzie wykonanie kilku działań, szczegóły pod adresem [4].
■
INFO
[1] RFC 959:
ftp://ftp.rfc-editor.org/in-notes/rfc959.txt
[2] WU-FTPD: http://www.wu-ftpd.org
[3] NC-FTPD:
http://www.ncftpd.com/ncftpd/
4096
4096
4096
4096
90
Jan
Jan
Jan
Jan
Jan
18
18
18
18
18
18:58
18:55
18:55
18:55
18:58
www.linux-magazine.pl
.
..
incoming
pub
welcome.msg
[4] Pro-FTPD: http://proftpd.linux.co.uk
[5] Pro-FTPD sources:
ftp://ftp.proftpd.org/distrib/source/
[6] Plik konfiguracyjny i skrypt init:
http://www.linux-magazine.com/
Magazine/Downloads/2004/41/Admin/

Podobne dokumenty