Jak skonfigurować VSFTPD na Debian

Jak skonfigurować VSFTPD na Debian

VSFTPD jest akronimem bardzo bezpiecznego demona FTP: jest jednym z najczęściej używanych serwerów FTP w systemie Linux i innych systemów operacyjnych podobnych do Unix. Jest open source i wydany na licencji GPL i obsługuje wirtualne użytkowników i SSL dla danych
szyfrowanie. W tym samouczku zobaczymy, jak go zainstalować i skonfigurować w Linux.

W tym samouczku się nauczysz:

  • Jak zainstalować VSFTPD na Debian 10
  • Jak skonfigurować VSFTPD
  • Jak skonfigurować anonimowe użycie
  • Jak skonfigurować login z lokalnymi użytkownikami
  • Jak konfigurować wirtualne użytkowników
  • Jak skonfigurować UFW, aby umożliwić ruch przychodzący
Jak skonfigurować VSFTPD na Debian

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Debian 10 (Buster)
Oprogramowanie VSFTPD, OpenSSL, libpam-pwdfile
Inny Uprawnienia do instalacji i skonfigurowania VSFTPD
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Instalacja

VSFTPD jest dostępny w oficjalnych repozytoriach Debiana, dlatego aby go zainstalować, możemy korzystać z naszego ulubionego menedżera pakietów; To tylko kwestia synchronizacji repozytoriów i instalacji pakietu. Obie rzeczy można osiągnąć przez
Uruchamianie następujących poleceń:

$ sudo apt-get aktualizacja && sudo apt-get instaluj vsftpd 


Kilka sekund, a pakiet zostanie zainstalowany w naszym systemie Debian. Skrypty instalacyjne zawarte w pakiecie będą również zadbać o rozpoczęcie VSFTPD usługa automatycznie, ale musimy pamiętać, aby ponownie uruchomić lub ponownie załadować usługę za każdym razem, gdy zmieniamy plik konfiguracyjny. Aby móc korzystać z wirtualni użytkownicy Funkcja dostarczona przez VSFTPD musimy również zainstalować inny pakiet:

$ sudo apt-get instaluj libpam-pwdfile 

Zobaczymy jego użycie w dedykowanej części tego samouczka.

Po zainstalowaniu potrzebnych pakietów możemy kontynuować i skonfigurować VSFTPD: Zobaczymy, jak to zrobić w następnej sekcji tego samouczka.

Konfiguracja VSFTPD

Plik konfiguracyjny VSFTPD to /etc/vsftpd.conf. Jeśli go otworzymy. Zobaczmy, co jest najbardziej odpowiednie dla najczęstszych przypadków.

Włącz anonimowy login

Nieautentyczny dostęp do serwera, jako anonimowych użytkowników, jest domyślnie wyłączony. Aby to włączyć, musimy użyć anonimowa_enable dyrektywa, która w pliku konfiguracyjnym jest umieszczana na linii 25. Wszystko, co musimy zrobić, to ustawić to TAK:
Musi zmienić instrukcję na:

anonimous_enable = tak 

Kolejną dyrektywą, którą możemy chcieć zmienić, jest ta, która pozwól nam ustawić katalog w tym, co VSFTPD spróbuje poruszać się po anonimowym dostępie. Dyrektywa, która pozwala nam kontrolować to ustawienie anon_root. Powiedzmy, że chcemy, aby anonimowy użytkownik uzyskał dostęp do /srv/ftp Direktorat domyślnie napisalibyśmy:

anon_root =/srv/ftp 

Wszystkie anonimowe logowanie są mapowane wewnętrznie na zaprojektowanego użytkownika, który domyślnie jest ftp. Aby zmienić to mapowanie, musimy użyć ftp_username opcja i ustaw go na nazwę użytkownika, do którego chcemy mapować anonimowych użytkowników.

Domyślnie anonimowy użytkownik nie będzie mógł pisać niczego na serwerze, z oczywistych powodów bezpieczeństwa. Jeśli chcesz zmienić to zachowanie (niezalecane), należy zmienić niewiele opcji. Przede wszystkim generał Write_enable dyrektywa musi być ustawiona na TAK. Ta dyrektywa jest komentowana w Internecie 31 pliku konfiguracyjnego, więc wszystko, co musisz zrobić, to usunąć komentarz.

# Uzyskanie tego, aby włączyć dowolną formę polecenia zapisu FTP. zapis_enable = tak 


Po włączeniu dyrektywy musimy tylko pracować nad kolejnymi dwoma opcjami: anon_upload_enable I anon_mkdir_write_enable. Kiedy ten pierwszy jest ustawiony TAK Anonimowy użytkownik będzie mógł wgrywać Pliki, ale tylko wtedy, gdy użytkownik, na którym jest mapowany (jak powiedzieliśmy, domyślnie FTP) ma uprawnienia do zapisu w katalogu docelowym. Aby aktywować tę opcję, musimy tylko usunąć komentarz z linii 40 pliku konfiguracyjnego:

# Usunmu, aby umożliwić anonimowi użytkownik FTP przesyłanie plików. Ten tylko # ma wpływ, jeśli powyższy globalny zapis jest aktywowany. Ponadto # oczywiście będziesz musiał stworzyć katalog zapisany przez użytkownika FTP. anon_upload_enable = tak 

anon_mkdir_write_enable Zamiast tego, gdy jest ustawiona na dyrektywa TAK Pozwala anonimowym użytkownikom tworzyć nowe katalogi na serwerze, w tych samych warunkach, które widzieliśmy powyżej (podstawowy użytkownik na serwerze musi mieć uprawnienia do zapisu w katalogu nadrzędnym). Dyrektywa znajduje się na linii 44 pliku konfiguracyjnego:

# Usunment to, jeśli chcesz, aby anonimowy użytkownik FTP był w stanie stworzyć # nowe katalogi. anon_mkdir_write_enable = tak 

Jeszcze raz, ponieważ zmienna jest już ustawiona TAK, Aby było to istotne, musimy tylko usunąć z niego komentarz.

Aby umożliwić anonimowym użytkownikom wykonywanie także innych operacji pisarowych, na przykład Zmiana nazwy Lub Usuwanie Katalog musimy użyć innej dyrektywy, która nie jest obecna w pliku konfiguracyjnym, anon_other_write_enable i ustaw to TAK Jeśli powyższe jest naszym pożądanym zachowaniem:

anon_other_write_enable = tak 

Uwierzytelnione loginy

Aby umożliwić lokalnym użytkownikom systemu dostęp do serwera FTP z hasłem systemowym, local_enable dyrektywa musi być ustawiona na TAK: To jest niewykonanie zobowiązania w systemie Debian. Dyrektywy można znaleźć w linii 28 demona
plik konfiguracyjny:

# Usunmu, aby umożliwić lokalnym użytkownikom zalogowanie się. local_enable = tak 

Domyślnie, gdy lokalny użytkownik z powodzeniem uwierzytelni się, będzie miał swój własny katalog domowy jako root. Możliwe jest jednak określenie alternatywnego punktu początkowego za pomocą local_root dyrektywa. Ta dyrektywa nie jest obecna w pliku konfiguracyjnym, więc musimy ją dodać, jeśli chcemy użyć. Ustawić /srv/ftp Directory jako lokalny root, na przykład napisalibyśmy:

local_root =/srv/ftp 

Lokalni użytkownicy chroot

Jako środek bezpieczeństwa jest możliwe Chroot Każdy uwierzytelniony użytkownik we własnym katalogu domowym. Aby wykonać to zadanie, musimy użyć chroot_local_user dyrektywa:

CHROOT_LOCAL_USER = Tak 

Gdy ta funkcja jest włączona, można określić listę wykluczeń (lista użytkowników, których nie należy chrootować) przy użyciu następujących dyrektyw:

chroot_list_enable = tak chroot_list_file =/etc/vsftpd.chroot_list 


Pierwsza dyrektywa jest potrzebna do aktywacji funkcji, druga, aby określić lokalizację pliku zawierającego Lista wykluczeń. Plik musi zostać utworzony, jeśli już nie istnieje, w przeciwnym razie login zawiedzie.

Jako miara bezpieczeństwa, gdy użytkownik jest chrootowany, nie powinien być w stanie pisać do katalogu najwyższego poziomu chroot. Jeśli tak jest, w najnowszych wersjach VSFTPD użytkownik nie będzie mógł się zalogować, a serwer odpowiedzie następującą komunikatem:

500 OOPS: VSFTPD: Odmawianie biegu z zapisem korzenia wewnątrz chroot () 

Ten problem można rozwiązać na dwa sposoby. Ten pierwszy jest oczywiście składa się naprawianie uprawnień, Odmawianie użytkownikowi zapisu dostępu do katalogu najwyższego poziomu chroot i umożliwienia mu pisania tylko na podwodnościach.
Drugim sposobem rozwiązania problemu, jeśli nie obchodzi Cię możliwe implikacje bezpieczeństwa, jest to ominąć to ograniczenie, Korzystanie z następującej dyrektywy:

zezwolić_writeble_chroot = tak 

Mówiąc o uprawnieniach, należy pamiętać, że domyślny Usum dla użytkownika lokalnego jest ustawiony 077. Jeśli to ustawienie jest uważane za zbyt restrykcyjne, można je zmienić za pomocą za pomocą local_umask dyrektywa. Ta dyrektywa jest komentowana w linii 35 pliku konfiguracyjnego:

# Domyślna UmAm dla użytkowników lokalnych to 077. Możesz to zmienić na 022, # Jeśli użytkownicy oczekują, że (022 jest używany przez większość innych ftpd) # local_umask = 022 

Zaloguj się z wirtualnymi użytkownikami

Jedną fajną funkcją oferowaną przez VSFTPD jest możliwość zalogowania wirtualni użytkownicy. Wirtualny użytkownik to użytkownik, który tak naprawdę nie istnieje w systemie, ale tylko w kontekście aplikacji SFTPD. Aby włączyć tę funkcję, musimy skorzystać z następującej dyrektywy:

guest_enable = tak 

Gdy funkcja jest aktywna, wszystkie nieanonimiczne loginy (więc nawet prawdziwi/lokalni użytkownicy) są odwzorowane na użytkownika określone za pomocą Guest_username dyrektywa, która domyślnie, jak już widzieliśmy ftp.

Następnym krokiem jest utworzenie pliku zawierającego nazwy użytkowników i hasła wirtualnych użytkowników. Aby wygenerować hasło, możemy użyć Openssl i wydaj następujące polecenie:

$ Openssl Passwd -1 Hasło: weryfikacja - hasło: 1 $ pfwh3jou $ dqbinjw8bbtdqys7eztpr. 

Passwd dowodzony przez Openssl jest używany do wygenerowanych haseł Hashed (MD5). W powyższym przykładzie poproszono nas o hasło i jego potwierdzenie. Wreszcie hasło Hashed jest generowane i wyświetlane na ekranie.

Nazwa użytkownika wraz z hasłem musi zostać umieszczona w pliku, powiedzmy, że tak jest /etc/virtual_users.PWD, W następującym formacie:

Nazwa użytkownika: hashed_password 

Załóżmy więc, że nasz wirtualny użytkownik nazywa się „LinuxConfig”, który napisałbyśmy:

Linuxconfig: 1 $ $ pfwh3jou $ dqbinjw8bbtdqys7eztpr. 

Operacja musi być powtórzona dla każdego wirtualnego użytkownika, który chcemy skonfigurować.

Teraz musimy stworzyć Pam usługa, która będzie używana przez VSFTPD do uwierzytelniania wirtualnych użytkowników. Nazwimy plik vsftpd_virtual i umieść to w /etc/pam.D informator. Jego treść będzie następująco:

#%PAM-1.0 Wymagane uwierzytelnianie pam_pwdfile.więc pwdfile/etc/vsftpd/virtual_users.Wymagane konto PWD PAM_PERMIT.Więc 

Jak widać, określiliśmy ścieżkę pliku zawierającego nazwę użytkownika i hasła wirtualnych użytkowników w pierwszym wierszu. Teraz musimy tylko poinstruować VSFTPD, aby użyć tej „usługi” PAM. Możemy to zrobić z PAM_SERVICE_NAME dyrektywa:

pam_service_name = vsftpd_virtual 

W tym momencie możemy zapisać plik konfiguracyjny, ponownie uruchomić demon i sprawdzić, czy jesteśmy w stanie zalogować się z utworzonym przez nas wirtualnym użytkownikiem.

Włączanie obsługi SSL dla szyfrowania danych

Domyślnie obsługa SSL jest wyłączona na VSFTPD, więc przeniesione dane nie będą szyfrowane. Aby włączyć obsługę SSL, musimy użyć następujących dyrektyw, znajdujących się w wierszach 149 Do 151 pliku konfiguracyjnego:

# Ta opcja określa lokalizację certyfikatu RSA do użycia dla SSL # Szyfrowane połączenia. rsa_cert_file =/etc/ssl/certs/ssl-cert-snakeil.PEM rsa_private_key_file =/etc/ssl/private/ssl-cert-snakeil.klucz ssl_enable = tak 


Pierwsza dyrektywa, RSA_CERT_FILE służy do wskazania ścieżki certyfikatu RSA do użycia dla połączeń szyfrowanych SSL. Druga, rsa_private_key, Zamiast tego służy do określenia lokalizacji klucza prywatnego RSA. Wreszcie ssl_enable Dyrektywa służy do włączenia użycia szyfrowania SSL.

Przykład używa /etc/ssl/certs/ssl-cert-snakeil.pem I /etc/ssl/private/ssl-cert-snakeil.klucz pliki, ale prawie na pewno chcesz użyć dedykowanego.

Określanie zakresu portów w trybie pasywnym

Tryb pasywny FTP jest domyślnie nowej instalacji VSFTPD, ale jeśli chcemy, aby można go było jawnie użyć następującej dyrektywy:

# Ustaw na nie, jeśli chcesz nie wyrzucić metody PASV uzyskania # połączenia danych (tryb pasywny). Domyślnie: Tak Pasv_Enable = Tak 

Kiedy serwer działa tryb pasywny, Wysyła do klienta adres IP i port, do którego powinien słuchać połączenia. Te porty są domyślnie wybrane losowo, ponieważ musimy użyć zapory na naszym serwerze, musimy wiedzieć, jakie porty powinniśmy umożliwić dokładnemu ruchowi. Zakres portów do użycia można określić za pomocą PASV_MIN_PORT I Pasv_max_port Na przykład dyrektywy:

# Minimalny port do przydzielenia połączeń danych w stylu PASV. Można użyć do # określania wąskiego zakresu portów, aby pomóc zapornikom zapory. PASV_MIN_PORT = 10090 # Maksymalny port do przydzielenia połączeń danych w stylu PASV. Można użyć do # określania wąskiego zakresu portów, aby pomóc zapornikom zapory. Domyślnie: 0 (użyj dowolnego portu) Pasv_max_port = 10100 

W następującej konfiguracji serwer będzie używać zakresu portów, które wychodzą z 10090 Do 10100.

Konfiguracja zapory ogniowej

Aby nasz serwer VSFTPD działał poprawnie, musimy zezwolić na ruch przez potrzebne porty, niektóre musimy skonfigurować odpowiednie reguły dla naszej zapory. W tym samouczku założę użycie UFW Menedżer zapory (nieskomplikowana zapora).

Pierwszym portem, na który chcemy pozwolić na ruch, jest port 21, który jest standardowym portem używanym przez protokół FTP:

$ sudo ufw pozwól w 21/tcp 


Po drugie musimy zezwolić na ruch przychodzący za pośrednictwem określonego zakresu portów, który konfigurujemy w poprzednim rozdziale. Aby określić zakres portów, możemy uruchomić:

$ sudo ufw pozwól w 10090: 10100/tcp 

Wnioski

W tym artykule widzieliśmy, jak zainstalować i skonfigurować VSFTPD na Debian 10 Buster. Widzieliśmy, jak skonfigurować anonimowe użycie i użytkowanie lokalnych użytkowników oraz jak możemy skorzystać z wirtualni użytkownicy funkcja dostarczona przez usługę. Ponieważ FTP nie zapewnia szyfrowania danych, widzieliśmy, jak włączyć obsługę SSL, a wreszcie, jak skonfigurować zaporę, aby umożliwić przychodzący ruch przez potrzebne porty. Aby uzyskać pełną listę możliwych dyrektyw, które można użyć w pliku konfiguracyjnym VSFTPD, spójrz na VSFTPD.conf Manpage (VSFTPD.Conf (5)). Chcesz wiedzieć, jak programowo pracować z serwerem FTP? Spójrz na nasz artykuł na temat połączenia z serwerem FTP za pomocą Pythona.

Powiązane samouczki Linux:

  • Skonfiguruj serwer FTP w systemie Linux
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak skonfigurować serwer FTP/SFTP i klient na Almalinux
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Lista klientów FTP i instalacja na Ubuntu 22.04 Linux…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak połączyć się z serwerem FTP za pomocą Pythona
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
  • Lista klientów FTP i instalacja na Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress z instalacją Nginx