FTP (File Transfer Protocol) to protokół służący do transmisji plików tekstowych i binarnych w internecie. Działa na bazie protokołu TCP/IP. Zazwyczaj wykorzystuje do transmisji danych port 20, a do kontroli transmisji port 21. Jego zaletą jest to, że rozpoczęty, ale nie zakończony transfer danych może zostać wznowiony aż do uzupełnienia brakujących części pliku. Natomiast jego wada jest brak szyfrowania transmisji oraz problem z implementacją zapór sieciowych.
Dostęp do zasobów serwera może otrzymać użytkownik posiadający na serwerze konto lokalne lub korzystający z konta anonimowego. Identyfikatorem konta anonimowego jest zazwyczaj „anonymous”, a hasłem – własny adres poczty elektronicznej. Korzystając z dostępu anonimowego mamy z reguły bardzo ograniczone uprawnienia, dające możliwość tylko pobierania zbiorów z serwera. Tylko niektóre systemy mają oddzielne katalogi przeznaczone na pliki z zewnątrz – są to najczęściej pojedyncze katalogi o nazwie upload lub incoming. Po zalogowanie się na konto anonimowe użytkownik jest przenoszony do katalogu głównego usługi FTP (np. na Kubuntu /srv/ftp). Po zalogowanie się na konto lokalne na serwerze użytkownik jest przenoszony do katalogu domowego (np. /home/uzytkownik).
Do połączenia użytkownika z serwerem FTP służy specjalny program, nazywany klientem FTP. W większości systemów operacyjnych jest on wbudowany i pracuje w trybie tekstowym. My będziemy się posługiwali oprogramowanie vsftpd.
Zaletą vsftpd (Very Secure FTP Server) jest łatwa konfiguracja (bardzo szybko można postawić wydajny i bezpieczny serwer FTP) i szybkość.
Aby zainstalować serwer vsftpd za pomocą apt-get, wpisujemy polecenie:
sudo apt-get install vsftpd
System wyświetli informacje o pakietach, które należy pobrać i zainstalować (zdjęcie powyżej). Jeżeli serwer zostanie poprawnie zainstalowany, możemy przystąpić do jego uruchamiania:
sudo service vsftpd start
Jeżeli podczas uruchamiania usługi nie pojawi się komunikat o błędach, oznacza to, że serwer działa poprawnie. Konfiguracja dostarczona przez dystrybucję pozwala na korzystanie z serwera przez większość użytkowników bez konieczności dokonywania jakichkolwiek zmian w konfiguracji. Oczywiście, jeżeli konfiguracja nie odpowiada użytkownikowi, to można dokonać zmian. Zanim przystąpi się do konfiguracji, należy sprawdzić czy usługa jest uruchomiona, poleceniem:
nmap localhost
Po zainstalowaniu i uruchomieniu serwera vsftpd, możemy przystąpić do jego konfiguracji. Pamiętajcie, że przed konfiguracją serwera zaleca się skopiowanie oryginalnego pliku konfiguracyjnego. To na wypadek, gdyby po dokonaniu zmian serwer nie chciał się uruchomić. Głównym plikiem konfiguracyjnym serwera vsftpd jest /etc/vsftpd.conf.
Aby podejrzeć lub zmienić opcje w nim zawarte, w terminalu wpisujemy polecenie:
sudo nano /etc/vsftpd.conf
Użytkownicy lokalni to ci, którzy mają na serwerze swoje konta. Na ogół mają oni uprawnienia do zapisywania danych w swoich katalogach lokalnych (usługi niedostępne dla użytkowników anonimowych). Z reguły opcja korzystania z kont lokalnych jest standardowo wyłączona. Jeżeli serwer ma być dostępny dla użytkowników lokalnych, należy włączyć opcję zezwalającą na logowanie się tych użytkowników. W tym celu ustawiamy local_enable=YES.
Opcje konfiguracyjne są zapisane w formacie opcja=wartość. Między nazwą opcji a znakiem = nie umieszczamy spacji. W pliku konfiguracyjnym istotna jest również wielkość liter. Linie rozpoczynające się od znaku # są komentarzami i nie mają wpływu na działanie serwera.
Podstawowe opcje konfiguracyjne serwera umożliwiają dostosowanie jego działania do potrzeb użytkownika:
#Zezwolenie na logowanie anonimowych użytkowników: anonymous_enable=YES
#Zezwolenie na logowanie lokalnych użytkowników: local_enable=YES
#Pozwolenie na zapis we własnym katalogu: write_enable=YES
#Banner, który będzie wyświetlany przy każdym połączeniu z serwerem
ftpd_banner=Prywatny serwer FTP – Powered by: vsftpd
Po wprowadzeniu zmian w konfiguracji należy zapisać plik konfiguracyjny oraz ponownie uruchomić serwer poleceniem:
sudo service vsftpd restart
Sprawdzimy możliwość połączenia z serwerem ftp za pomocą konta damian (wcześniej utworzonego w systemie). Obecnie jestem zalogowany na konto zs3.
W terminalu wywołujemy polecenie:
ftp 10.0.2.15
gdzie 10.0.2.15 do adres IP serwera. Podajemy nazwę użytkownika lokalnego na którego chcemy się zalogować i hasło. Jeżeli wszystko działa, powinniśmy otrzymać taki widok:
Spróbujemy skopiować plik test.txt (wcześniej został utworzony na potrzeby ćwiczenia) z folderu Dokumenty użytkownika zs3, do folderu domowego użytkownika damian. W tym celu w terminalu wpisujemy polecenie:
put /home/zs3/Dokumenty/test.txt test.txt
W poleceniu podajemy ścieżkę z lokalizacją pliku (skąd ma być skopiowany: /home/zs3/Dokumenty/test.txt) i nazwę pliku pod jaką będzie zapisany test.txt).
Z konta anonimowego może korzystać każdy, ale uprawnienia na ogół są ograniczone tylko do pobierania danych. Hasłem do konta anonimowego jest adres e-mail użytkownika. Niektóre serwery sprawdzają, czy wpisane hasło jest poprawnym adresem serwera poczty elektronicznej. W konfiguracji dostarczonej z dystrybucją opcja korzystania z konta anonimowego jest domyślnie wyłączona. Jeżeli serwer ma być dostępny tylko dla użytkowników anonimowych, należy wyłączyć dostęp dla użytkowników lokalnych. W tym celu należy ustawić wartość opcji na local_enable=NO. Natomiast wartość opcji na anonymous_enable=YES. Po wprowadzeniu zmian w konfiguracji restartujemy serwer vsftpd.
sudo service vsftpd restart
Teraz należy sprawdzić możliwość logowania z konta anonimowego i lokalnego. Wprowadzamy polecenie:
ftp 10.0.2.15
Jako login podajemy anonymous a hasło nasz adres e-mail (dowolny).