Ubuntu Server 18.04.1. Настройка и установка FTP-сервера vsftpd
Spisu treści:
- Wymagania wstępne
- Instalowanie vsftpd na Ubuntu 18.04
- Konfigurowanie vsftpd
- 1. Dostęp FTP
- 2. Włączanie przesyłania
- 3. Więzienie Chroot
- 4. Pasywne połączenia FTP
- 5. Ograniczanie logowania użytkownika
- 6. Zabezpieczanie transmisji za pomocą SSL / TLS
- Uruchom ponownie usługę vsftpd
- Otwieranie zapory
- Tworzenie użytkownika FTP
- Wyłączanie dostępu do powłoki
- Wniosek
FTP (File Transfer Protocol) to standardowy protokół sieciowy używany do przesyłania plików do iz sieci zdalnej. Aby uzyskać bezpieczniejszy i szybszy transfer danych, użyj SCP lub SFTP.
Istnieje wiele serwerów FTP typu open source dostępnych dla systemu Linux. Najpopularniejsze i szeroko stosowane to PureFTPd, ProFTPD i vsftpd. W tym samouczku będziemy instalować vsftpd (bardzo bezpieczny demon Ftp). Jest to stabilny, bezpieczny i szybki serwer FTP. Pokażemy także, jak skonfigurować vsftpd, aby ograniczyć użytkowników do ich katalogu domowego i szyfrować całą transmisję za pomocą protokołu SSL / TLS.
Chociaż ten samouczek jest napisany dla Ubuntu 18.04, te same instrukcje dotyczą Ubuntu 16.04 i dowolnej dystrybucji opartej na Debianie, w tym Debian, Linux Mint i Elementary OS.
Wymagania wstępne
Przed kontynuowaniem tego samouczka upewnij się, że jesteś zalogowany jako użytkownik z uprawnieniami sudo.
Instalowanie vsftpd na Ubuntu 18.04
Pakiet vsftpd jest dostępny w repozytoriach Ubuntu. Aby go zainstalować, po prostu uruchom następujące polecenia:
sudo apt update
sudo apt install vsftpd
Usługa vsftpd uruchomi się automatycznie po zakończeniu procesu instalacji. Sprawdź to, drukując status usługi:
sudo systemctl status vsftpd
Dane wyjściowe będą wyglądały jak poniżej, pokazując, że usługa vsftpd jest aktywna i działa:
* vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf
Konfigurowanie vsftpd
Serwer vsftpd można skonfigurować, edytując plik
/etc/vsftpd.conf
. Większość ustawień jest dobrze udokumentowana w pliku konfiguracyjnym. Wszystkie dostępne opcje znajdziesz na oficjalnej stronie vsftpd.
W poniższych sekcjach omówimy kilka ważnych ustawień potrzebnych do skonfigurowania bezpiecznej instalacji vsftpd.
Zacznij od otwarcia pliku konfiguracyjnego vsftpd:
1. Dostęp FTP
Umożliwimy dostęp do serwera FTP tylko lokalnym użytkownikom, znajdziemy dyrektywy
anonymous_enable
i
local_enable
i zweryfikujemy, czy konfiguracja jest zgodna z liniami poniżej:
anonymous_enable=NO local_enable=YES
2. Włączanie przesyłania
write_enable
ustawienie
write_enable
, aby umożliwić zmiany w systemie plików, takie jak przesyłanie i usuwanie plików.
3. Więzienie Chroot
Aby uniemożliwić użytkownikom FTP dostęp do plików spoza ich katalogów domowych, odznacz ustawienie
chroot
.
chroot_local_user=YES
Domyślnie, aby zapobiec podatności na zagrożenia, po włączeniu chroot vsftpd odmówi przesłania plików, jeśli katalog, w którym użytkownicy są zablokowani, jest zapisywalny.
Użyj jednej z poniższych metod, aby zezwolić na przesyłanie, gdy włączony jest chroot.
-
Metoda 1. - Zalecaną metodą zezwalania na przesyłanie jest włączenie chroot i skonfigurowanie katalogów FTP. W tym samouczku utworzymy katalog
/etc/vsftpd.confftp
w domu użytkownika, który będzie służył jako chroot oraz zapisywalny kataloguploads
do przesyłania plików.user_sub_token=$USER local_root=/home/$USER/ftp
Metoda 2. - Inną opcją jest dodanie następującej dyrektywy do pliku konfiguracyjnego vsftpd. Użyj tej opcji, jeśli musisz przyznać użytkownikowi prawo do zapisu w jego katalogu domowym.
/etc/vsftpd.confallow_writeable_chroot=YES
4. Pasywne połączenia FTP
vsftpd może używać dowolnego portu do pasywnych połączeń FTP. Określymy minimalny i maksymalny zasięg portów, a później otworzymy zasięg w naszej zaporze ogniowej.
Dodaj następujące wiersze do pliku konfiguracyjnego:
/etc/vsftpd.conf
pasv_min_port=30000 pasv_max_port=31000
5. Ograniczanie logowania użytkownika
Aby zezwolić tylko niektórym użytkownikom na logowanie się do serwera FTP, dodaj następujące wiersze na końcu pliku:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Gdy ta opcja jest włączona, musisz jawnie określić, którzy użytkownicy mogą się logować, dodając nazwy użytkowników do pliku
/etc/vsftpd.user_list
(jeden użytkownik na linię).
6. Zabezpieczanie transmisji za pomocą SSL / TLS
Aby zaszyfrować transmisje FTP za pomocą SSL / TLS, musisz mieć certyfikat SSL i skonfigurować serwer FTP, aby go używał.
Możesz użyć istniejącego certyfikatu SSL podpisanego przez zaufany urząd certyfikacji lub utworzyć samopodpisany certyfikat.
Wygenerujemy samopodpisany certyfikat SSL za pomocą polecenia
openssl
.
Następujące polecenie utworzy 2048-bitowy klucz prywatny i samopodpisany certyfikat ważny przez 10 lat. Zarówno klucz prywatny, jak i certyfikat zostaną zapisane w tym samym pliku:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Po utworzeniu certyfikatu SSL otwórz plik konfiguracyjny vsftpd:
sudo nano /etc/vsftpd.conf
Znajdź dyrektywy
rsa_cert_file
i
rsa_private_key_file
, zmień ich wartości na ścieżkę pliku
pam
i ustaw dyrektywę
ssl_enable
na
YES
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES
Jeśli nie określono inaczej, serwer FTP będzie używał tylko TLS do nawiązywania bezpiecznych połączeń.
Uruchom ponownie usługę vsftpd
Po zakończeniu edycji plik konfiguracyjny vsftpd (bez komentarzy) powinien wyglądać mniej więcej tak:
/etc/vsftpd.conf
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Zapisz plik i uruchom ponownie usługę vsftpd, aby zmiany odniosły skutek:
Otwieranie zapory
Aby otworzyć port
21
(port poleceń FTP), port
20
(port danych FTP) i
30000-31000
(zakres portów pasywnych), uruchom następujące polecenia:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Aby uniknąć zablokowania, otwórz port
22
:
sudo ufw allow OpenSSH
Ponownie załaduj reguły UFW, wyłączając i ponownie włączając UFW:
sudo ufw disable
sudo ufw enable
Aby zweryfikować zmiany, uruchom:
sudo ufw status
Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Tworzenie użytkownika FTP
Aby przetestować nasz serwer FTP, utworzymy nowego użytkownika.
- Jeśli masz już użytkownika, któremu chcesz przyznać dostęp przez FTP, pomiń pierwszy krok. Jeśli ustawisz
allow_writeable_chroot=YES
w pliku konfiguracyjnym, pomiń trzeci krok.
-
Utwórz nowego użytkownika o nazwie
newftpuser
:sudo adduser newftpuser
Dodaj użytkownika do listy dozwolonych użytkowników FTP:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
Utwórz drzewo katalogów FTP i ustaw odpowiednie uprawnienia:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
Jak omówiono w poprzedniej sekcji, użytkownik będzie mógł przesłać swoje pliki do katalogu
ftp/upload
.
W tym momencie twój serwer FTP jest w pełni funkcjonalny i powinieneś być w stanie połączyć się z serwerem za pomocą dowolnego klienta FTP, który można skonfigurować do korzystania z szyfrowania TLS, takiego jak FileZilla.
Wyłączanie dostępu do powłoki
Domyślnie podczas tworzenia użytkownika, jeśli nie zostanie to wyraźnie określone, użytkownik będzie miał dostęp SSH do serwera.
Aby wyłączyć dostęp do powłoki, utworzymy nową powłokę, która po prostu wydrukuje komunikat informujący użytkownika, że jego konto jest ograniczone tylko do dostępu FTP.
Utwórz powłokę
/bin/ftponly
i
/bin/ftponly
aby była wykonywalna:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Dołącz nową powłokę do listy prawidłowych powłok w
/etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Zmień powłokę użytkownika na
/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Użyj tego samego polecenia, aby zmienić powłokę wszystkich użytkowników, którym chcesz dać dostęp tylko przez FTP.
Wniosek
W tym samouczku nauczyłeś się instalować i konfigurować bezpieczny i szybki serwer FTP w systemie Ubuntu 18.04.
ftp ubuntuGt wyjaśnia: co to jest serwer ftp i jak go skonfigurować?
Kompletny przewodnik po zrozumieniu zalet i wad serwera FTP oraz tego, jak skonfigurować go w domu, aby łatwo udostępniać duże pliki.
Jak skonfigurować serwer ftp z vsftpd na Centos 7
W tym samouczku będziemy instalować vsftpd. Jest to stabilny, bezpieczny i szybki serwer FTP. Pokażemy również, jak skonfigurować vsftpd, aby ograniczyć użytkowników do ich katalogu domowego i szyfrować całą transmisję za pomocą SSL / TLS.
Jak skonfigurować serwer ftp z vsftpd na Debianie 9
W tym samouczku będziemy instalować vsftpd. Jest to stabilny, bezpieczny i szybki serwer FTP. Pokażemy również, jak skonfigurować vsftpd, aby ograniczyć użytkowników do ich katalogu domowego i szyfrować całą transmisję za pomocą SSL / TLS.