Wyszukiwanie w witrynie

Jak zainstalować i skonfigurować serwer FTP w Ubuntu


FTP (Protokół przesyłania plików) to stosunkowo stary i najczęściej używany standardowy protokół sieciowy używany do przesyłania/pobierania plików między dwoma komputerami w sieci. Jednak FTP jest pierwotnie niepewny, ponieważ przesyła dane wraz z danymi uwierzytelniającymi użytkownika (nazwą użytkownika i hasłem) bez szyfrowania.

Ostrzeżenie: jeśli planujesz używać FTP, rozważ skonfigurowanie połączenia FTP za pomocą SSL/TLS (omówimy to w następny artykuł). W przeciwnym razie zawsze lepiej jest używać bezpiecznego protokołu FTP, takiego jak SFTP.

Sugerowana lektura: Jak zainstalować i zabezpieczyć serwer FTP w CentOS 7

W tym samouczku pokażemy, jak zainstalować, skonfigurować i zabezpieczyć serwer FTP (VSFTPD w pełnym brzmieniu „Bardzo bezpieczny demon FTP”) w Ubuntu, aby mieć potężne zabezpieczenia przed lukami w zabezpieczeniach FTP.

Krok 1: Instalacja serwera VsFTP w Ubuntu

1. Najpierw musimy zaktualizować listę źródeł pakietów systemowych, a następnie zainstalować pakiet binarny VSFTPD w następujący sposób:

sudo apt-get update
sudo apt-get install vsftpd

2. Po zakończeniu instalacji usługa zostanie początkowo wyłączona, dlatego musimy na pewien czas uruchomić ją ręcznie, a także włączyć automatyczne uruchamianie przy następnym uruchomieniu systemu:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Następnie, jeśli masz włączoną zaporę UFW (domyślnie nie jest włączona) na serwerze, musisz otworzyć porty 21 i 20 gdzie nasłuchują demony FTP, aby umożliwić dostęp do usług FTP ze zdalnych komputerów, dodaj nowe reguły zapory sieciowej w następujący sposób:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Krok 2: Konfiguracja i zabezpieczenie serwera VsFTP w Ubuntu

4. Wykonajmy teraz kilka konfiguracji, aby skonfigurować i zabezpieczyć nasz serwer FTP, najpierw utworzymy kopię zapasową oryginalnego pliku konfiguracyjnego /etc/vsftpd/vsftpd.conf jak Więc:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Następnie otwórzmy plik konfiguracyjny vsftpd.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Dodaj/zmodyfikuj następujące opcje z tymi wartościami:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Teraz skonfiguruj VSFTPD, aby zezwolić/odmówić dostępu FTP użytkownikom na podstawie pliku listy użytkowników /etc/vsftpd.userlist.

Pamiętaj, że domyślnie użytkownicy wymienieni w userlist_file=/etc/vsftpd.userlist nie mają dostępu do logowania z opcją userlist_deny=YES, jeśli userlist_enable=YES .

Jednak opcja userlist_deny=NO przekręca znaczenie ustawienia domyślnego, więc tylko użytkownicy, których nazwa użytkownika jest wyraźnie wymieniona w userlist_file=/etc/vsftpd.userlist będą mogli zalogować się do serwera FTP.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Ważne: gdy użytkownicy logują się do serwera FTP, są umieszczani w więzieniu z chrootem. Jest to lokalny katalog główny, który będzie ich katalogiem domowym dla sesji FTP tylko.

Następnie przyjrzymy się dwóm możliwym scenariuszom ustawienia katalogu więzienia z chrootem (lokalnego katalogu głównego), jak wyjaśniono poniżej.

6. W tym momencie dodaj/zmodyfikuj/odkomentuj te dwie poniższe opcje, aby ograniczyć użytkowników FTP do ich katalogów domowych.

chroot_local_user=YES
allow_writeable_chroot=YES

Opcja chroot_local_user=YES co ważne oznacza, że lokalni użytkownicy zostaną umieszczeni w więzieniu chroot, ich katalogu domowym domyślnie po zalogowaniu.

Musimy także zrozumieć, że VSFTPD domyślnie nie pozwala na zapis w katalogu więzienia chroot ze względów bezpieczeństwa, jednak możemy użyć opcji allow_writeable_chroot=YES, aby wyłączyć to ustawienie.

Zapisz plik i zamknij go. Następnie musimy ponownie uruchomić usługi VSFTPD, aby powyższe zmiany zaczęły obowiązywać:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Krok 3: Testowanie serwera VsFTP w Ubuntu

7. Teraz przetestujemy serwer FTP, tworząc użytkownika FTP za pomocą polecenia useradd w następujący sposób:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Następnie musimy jawnie wymienić użytkownika aaronkilik w pliku /etc/vsftpd.userlist za pomocą poleceń echo i polecenie tee, jak poniżej:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Teraz nadszedł czas, aby przetestować, czy nasze powyższe konfiguracje działają zgodnie z wymaganiami. Zaczniemy od przetestowania anonimowych loginów; z poniższego wyniku wyraźnie wynika, że anonimowe logowanie nie jest dozwolone na serwerze FTP:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Następnie sprawdźmy, czy użytkownik niewymieniony w pliku /etc/vsftpd.userlist otrzyma pozwolenie na logowanie, co nie jest prawdą, co wynika z poniższych wyników :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Teraz przeprowadzimy ostateczny test, aby ustalić, czy użytkownik wymieniony w pliku /etc/vsftpd.userlist, rzeczywiście jest umieszczony w swoim katalogu domowym po Zaloguj sie. I jest to prawdą, co wynika z poniższych wyników:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Ostrzeżenie: ustawienie opcji allow_writeable_chroot=YES może być tak niebezpieczne, że może mieć wpływ na bezpieczeństwo, zwłaszcza jeśli użytkownicy mają uprawnienia do przesyłania lub co więcej, dostęp do powłoki. Używaj go tylko wtedy, gdy dokładnie wiesz, co robisz.

Powinniśmy zauważyć, że te implikacje bezpieczeństwa nie są specyficzne dla VSFTPD, mogą również dotyczyć wszystkich innych demonów FTP, które oferują umieszczanie lokalnych użytkowników w więzieniach chroot.

Z tego powodu w poniższej sekcji wyjaśnimy bezpieczniejszą metodę ustawiania dla użytkownika innego, niezapisywalnego lokalnego katalogu głównego.

Krok 4: Skonfiguruj katalogi domowe użytkowników FTP w Ubuntu

11. Teraz otwórz jeszcze raz plik konfiguracyjny VSFTPD.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

i skomentuj niezabezpieczoną opcję, używając znaku #, jak pokazano poniżej:

#allow_writeable_chroot=YES

Następnie utwórz alternatywny lokalny katalog główny dla użytkownika (aaronkilik, Twój prawdopodobnie nie jest taki sam) i ustaw wymagane uprawnienia, wyłączając uprawnienia do zapisu dla wszystkich innych użytkowników w tym katalogu:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Następnie utwórz katalog w lokalnym katalogu głównym z odpowiednimi uprawnieniami, w którym użytkownik będzie przechowywać swoje pliki:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Następnie dodaj/zmodyfikuj poniższe opcje w pliku konfiguracyjnym VSFTPD wraz z odpowiadającymi im wartościami:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Zapisz plik i zamknij go. I uruchom ponownie usługi VSFTPD z najnowszymi ustawieniami:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Teraz przeprowadźmy ostateczną kontrolę i upewnijmy się, że lokalnym katalogiem głównym użytkownika jest katalog FTP, który utworzyliśmy w jego katalogu domowym.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Otóż to! Pamiętaj, aby podzielić się swoją opinią na temat tego poradnika za pomocą poniższego formularza komentarza lub ewentualnie przekazać nam ważne informacje na ten temat.

Na koniec, nie przegap naszego kolejnego artykułu, w którym opiszemy, jak zabezpieczyć serwer FTP przy użyciu połączeń SSL/TLS w Ubuntu 16.04/16.10. Do tego czasu bądź na bieżąco z TecMint.