Jak skonfigurować VSFTPD na Debian
- 1808
- 530
- Roland Sokół
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
Zastosowane wymagania i konwencje oprogramowania
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