Własny serwer – cz.4: serwer FTP

Ostatnia aktualizacja: 25 stycznia 2023, 13:03



 
W pierwszej części serii cyklu Własny Serwer zaparkowaliśmy domenę, skonfigurowaliśmy serwer www za pomocą Apache (oraz opcjonalnie Nginx) i uruchomiliśmy zaporę ogniową. W części drugiej zainstalowaliśmy PHP i system bazodanowy MariaDB, a w części trzeciej skonfigurowaliśmy szyfrowanie domeny za pomocą Let’s Encrypt.

W tej części zainstalujemy i skonfigurujemy serwer FTP.

Co to jest FTP?
Z Wikipedii:

Protokół transferu plików, FTP (od ang. File Transfer Protocol) – protokół komunikacyjny typu klient-serwer wykorzystujący protokół sterowania transmisją (TCP) według modelu TCP/IP (krótko: połączenie TCP), umożliwiający dwukierunkowy transfer plików w układzie serwer FTP–klient FTP.

Pomimo, iż wiele serwisów udostępniania plików porzuciło udostępnianie plików za pośrednictwem FTP i przeszło na HTTP/HTTPS, a „nowoczesne” i „popularne” przeglądarki stron www porzuciły wsparcie dla protokołu FTP, to instalacja serwera FTP na własnej maszynie serwerowej jest wysoce przydatna.

Co to jest serwer FTP?
Serwer FTP to oprogramowanie zainstalowane na serwerze, które działa w tle (jako usługa), nasłuchując na wybranych portach połączeń przychodzących, umożliwiając przesłanie na serwer plików lub pobieranie ich przez użytkowników.

Po co instalować serwer FTP?
Serwer FTP umożliwia dostęp wybranym użytkownikom do plików w lokalizacjach (również) niedostępnych dla użytkowników odwiedzających Twój serwis. Mówiąc prościej, Ty i Twoi współpracownicy możecie wysyłać na serwer pliki i je pobierać bez konieczności udostępniania ich szerokiej publiczności. Można to wykonywać przy pomocy programów z linii poleceń, lecz użycie aplikacji graficznej (np. Filezilla, gFTP, etc.) na komputerze klienckim maksymalnie usprawnia przesyłanie plików.

Dodanie nowego użytkownika systemu
Do chwili obecnej wszystkie działania wykonywaliśmy za pośrednictwem administratora systemu, czyli „root”-a.
Do obsługi serwera FTP należy skonfigurować „zwykłego użytkownika”. Będzie on również użyty jak nick na koncie poczty elektronicznej email, w jednej z kolejnych części cyklu Własny Serwer.

Dodanie użytkownika (przykładowy: lolek):
useradd -r lolek

Utworzenie katalogu domowego dla lolka (będzie przydany dla poczty email i transferu plików):
mkdir -p /home/lolek

Nadanie praw własności lolkowi do jego katalogu domowego:
chown lolek:lolek /home/lolek -R

Utworzenie hasła dla lolka (będzie używane do połączeń FTP):
passwd lolek

Należy wpisać je dwukrotnie (8-12 liter dużych i małych, cyfr i znaków specjalnych to minimum, ale każdy na pewno o tym wie).

Instalacja serwera FTP
Do obsługi serwera FTP użyjemy aplikacji vsftpd (ang. Very Secure FTP Daemon), napisany od podstaw z myślą o bezpieczeństwie. Obsługuje on zarówno anonimowy, jak i nie anonimowy dostęp FTP, uwierzytelnianie PAM, ograniczanie przepustowości pasma oraz linuksowe rozszerzenie sendfile().

apt install vsftpd

Zrób kopię zapasową oryginalnego pliku konfiguracyjnego vsftpd:
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Stwórz własny plik konfiguracyjny:
nano /etc/vsftpd.conf

Wklej do niego przykładową konfigurację:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
tcp_wrappers=YES
anon_other_write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
pasv_enable=YES
pasv_addr_resolve=YES
pasv_min_port=30000
pasv_max_port=31000

W krótkim wyjaśnieniu:
– Powyższa konfiguracja wyklucza połączenia z serwerem FTP nieznanym użytkownikom (anonymous) – połączenia takie będą odrzucane
– Umożliwia skonfigurowanie listy dopuszczonych użytkowników
– Aktywuje połączenia szyfrowane (SSL)
– Aktywuje połączenia pasywne
– Wyznacza port minimalny i maksymalny dla połączeń pasywnych

Dodatkowo, utwórz plik listy dopuszczonych użytkowników (oprócz root):
nano /etc/vsftpd.userlist
Wpisując do niego nazwy użytkowników systemu, jeden pod drugim, którzy będą dopuszczeni do serwera FTP, np.:
lolek
user2
user3

Po zapisaniu plików konfiguracyjnych upewnij się, że vsftpd jest aktywny i działa prawidłowo:
systemctl restart vsftpd
Pomocne również:
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd -l

Jeśli restart/start usługi wyrzuci błąd, oznacz to, iż plik konfiguracyjny wymaga poprawy.
Jeśli błędu nie ma, wprowadź reguły do zapory ogniowej, aby przepuszczała połączenia FTP:
ufw allow 20:21/tcp
ufw allow 30000:31000/tcp

Konfiguracja klienta FTP
Jeśli serwer FTP działa prawidłowo a firewall udostępnia jego zasoby, można skonfigurować aplikację kliencką na komputerze domowym/firmowym.
Przykładowo będzie to jedna z popularniejszych aplikacji typu open-source, dostępna dla różnych systemów operacyjnych – Filezilla.

1. Z menu Filezilla -> „Plik” wybierz „Menadżer stron”
2. Użyj przycisku „Nowa strona”
3. Wpisz własną nazwę dla serwera
4. W prawej kolumnie pierwsza zakładka „Ogólne”:
  a. Protokół: FTP
  b. Serwer: IP serwera
  c. Szyfrowanie: Jeśli dostępne używaj bezpośredniego FTP przez TLS
  d. Tryb logowania: Normalne
  e. Użytkownik: lolek (Twój użytkownik, inny niż root)
  f. Hasło: (hasło Twojego użytkownika)

Zapisz ustawienia i wykonaj próbne połączenie.

W przypadku problemów odsyłam do stron man-a:
man ftp
man sftp
man ufw
man vsftpd
man filezilla

Na tym możemy zakończyć konfigurację serwera FTP, w kolejnej piątej części zainstalujemy własny serwer poczty email SMTP.

 

6 thoughts on “Własny serwer – cz.4: serwer FTP

  • 26 lutego 2022 at 14:32
    Permalink

    Czyli jak będę chciał, dajmy na to artykuł o wiktymologii (moje podejście, ocena, pkt. widzenia etc.), to między wierszami mogę dostać reklamę…dajmy na to DUREX 🙂
    To ile kosztuje i gdzie jako Fachowiec poleciłbyś najtańszy hosting?

    Reply
    • 26 lutego 2022 at 14:35
      Permalink

      Na bezpłatnym serwisie jest to jak najbardziej możliwe…
      Poza tym, nie sugeruję a więc nie reklamuję płatnych serwisów, wystarczy przejrzeć oferty kilku dostawców aby mieć własne zdanie.

      Reply
  • 22 lutego 2022 at 18:04
    Permalink

    Pytanko 'laickie’: czy po pełnej serii tych art., stosując się krok po kroku, będzie można założyć własną str www żeby zamieszczać tekst, filmy, komentarze, mail itd.? Czy za darmo da się, np. hosting itd. Skoro chciałbym za darmo coś ludziom zaoferować, to wolałbym nie dopłacać do 'interesu’. No chyba, że byłbym milionerem …

    Reply
    • 22 lutego 2022 at 18:10
      Permalink

      W skomercjonalizownym świecie nie ma nic za darmo, ale… w Twoim przypadku polecam założenie bloga na serwisie, który oferuje darmową usługę blogowania, z tą różnicą, że reklamy od serwisu dostaniesz w pakiecie…

      Reply
  • 18 lutego 2022 at 12:50
    Permalink

    ooo, a kiedy będzie koleny wpis o serwerze pocztowym?

    Reply
    • 18 lutego 2022 at 13:39
      Permalink

      Jak nie będzie problemów z czasem, to za tydzień.

      Reply

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.