FTP (File Transfer Protocol) jest stosunkowo starym i najczęściej używanym standardowym protokołem sieciowym używanym do przesyłania/pobierania plików między dwoma komputerami w sieci. Jednak FTP przez jego oryginalnego niebezpieczne, ponieważ przesyła dane wraz z poświadczeniami użytkownika (nazwa użytkownika i hasło) bez szyfrowania.
ostrzeżenie: jeśli planujesz korzystać z FTP, rozważ skonfigurowanie połączenia FTP za pomocą SSL / TLS (omówi się w następnym artykule). W przeciwnym razie zawsze lepiej jest używać bezpiecznego FTP, takiego jak SFTP.,
sugerowane przeczytanie: 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 „very Secure FTP Daemon”) w Ubuntu, aby mieć potężne zabezpieczenie przed lukami 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 uruchomić ją ręcznie na średni czas, a także włączyć ją automatycznie od następnego rozruchu systemu:
3., Następnie, jeśli masz włączoną zaporę UFW (domyślnie nie jest włączona) na serwerze, musisz otworzyć porty 21 i 20, w których demony FTP nasłuchują, aby umożliwić dostęp do usług FTP ze zdalnych maszyn, a następnie dodać nowe reguły zapory 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 stworzymy kopię zapasową oryginalnego pliku konfiguracyjnego / etc/vsftpd / vsftpd.,conf w ten sposób:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
następnie otwórz plik konfiguracyjny vsftpd.
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
Dodaj/zmodyfikuj następujące opcje z tymi wartościami:
anonymous_enable=NO # disable anonymous loginlocal_enable=YES# permit local loginswrite_enable=YES# enable FTP commands which change the filesystemlocal_umask=022 # value of umask for file creation for local usersdirmessage_enable=YES # enable showing of messages when users first enter a new directoryxferlog_enable=YES# a log file will be maintained detailing uploads and downloadsconnect_from_port_20=YES # use port 20 (ftp-data) on the server machine for PORT style connectionsxferlog_std_format=YES # keep standard log file formatlisten=NO # prevent vsftpd from running in standalone modelisten_ipv6=YES # vsftpd will listen on an IPv6 socket instead of an IPv4 onepam_service_name=vsftpd # name of the PAM service vsftpd will useuserlist_enable=YES # enable vsftpd to load a list of usernamestcp_wrappers=YES # turn on tcp wrappers
5. Teraz skonfiguruj VSFTPD tak, aby zezwalał/odmawiał dostępu FTP użytkownikom na podstawie pliku listy użytkowników / etc / vsftpd.userlist.
zauważ, że domyślnie użytkownicy wymienieni w userlist_file=/etc / vsftpd.Lista użytkowników nie ma dostępu do logowania za pomocą opcji userlist_deny=YES
jeśli userlist_enable=YES
.,
ale opcjauserlist_deny=NO
zmienia znaczenie domyślnego ustawienia, więc tylko użytkownicy, których nazwa użytkownika jest wyraźnie wymieniona w userlist_file=/etc / vsftpd.userlist będzie mógł zalogować się na serwer FTP.
ważne: gdy użytkownicy logują się na serwer FTP, są umieszczani w chrooted jail, jest to lokalny katalog główny, który będzie działał jako ich katalog domowy tylko dla sesji FTP.
następnie przyjrzymy się dwóm możliwym scenariuszom, jak ustawić chrooted jail (lokalny katalog główny), jak wyjaśniono poniżej.
6., W tym momencie dodajmy / zmodyfikuj/odkomentuj te dwie następujące opcje, aby ograniczyć użytkowników FTP do ich katalogów domowych.
chroot_local_user=YESallow_writeable_chroot=YES
opcja chroot_local_user=YES
oznacza, że użytkownicy lokalni będą umieszczani w katalogu chroot, domyślnie po zalogowaniu.
i musimy równie dobrze zrozumieć, że VSFTPD nie zezwala na zapisywanie katalogu chroot jail, domyślnie 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 weszły w życie:
------------- 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 wylistować użytkownika aaronkilik w pliku/etc / vsftpd.Lista użytkowników z poleceniem echo i poleceniem tee jak poniżej:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist$ cat /etc/vsftpd.userlist
8. Teraz nadszedł czas, aby przetestować nasze powyższe konfiguracje działają zgodnie z wymaganiami., Zaczniemy od przetestowania anonimowych loginów; z poniższego wyjścia wyraźnie widać, że anonimowe logowania nie są dozwolone na serwerze FTP:
9. Następnie przetestujmy, czy użytkownik nie jest wymieniony w pliku / etc / vsftpd.userlist otrzyma uprawnienia do logowania, co nie jest prawdą z następującego wyjścia:
10. Teraz przeprowadzimy ostateczny test, aby ustalić, czy użytkownik wymieniony w pliku / etc / vsftpd.userlist, jest faktycznie umieszczony w jego / jej katalogu domowym po zalogowaniu., I to jest prawda z poniższego wyjścia:
Warning: Setting the option allow_writeable_chroot=YES
może być tak niebezpieczny, że może mieć wpływ na bezpieczeństwo, zwłaszcza jeśli użytkownicy mają uprawnienia do wysyłania, lub bardziej, dostęp do powłoki. Używaj go tylko wtedy, gdy dokładnie wiesz, co robisz.
należy zauważyć, że te implikacje bezpieczeństwa nie są specyficzne dla VSFTPD, mogą również wpływać na wszystkie inne demony FTP, które oferują umieszczanie użytkowników lokalnych w więzieniach chroot.,
z tego powodu w poniższej sekcji wyjaśnimy bardziej bezpieczną metodę ustawiania innego, nie zapisywalnego lokalnego katalogu głównego dla użytkownika.
Krok 4: Konfiguracja katalogów domowych użytkowników FTP w Ubuntu
11. Teraz otwórz plik konfiguracyjny VSFTPD jeszcze raz.,
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
i skomentuj niezabezpieczoną opcję używając #
znak 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 zapisu dla wszystkich innych użytkowników do tego 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 pod lokalnym rootem z odpowiednimi uprawnieniami, w którym użytkownik będzie przechowywać swoje pliki:
następnie dodaj/zmodyfikuj poniższe opcje w pliku konfiguracyjnym VSFTPD z odpowiadającymi im wartościami:
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 dokonajmy ostatecznego sprawdzenia i upewnijmy się, że lokalny katalog główny użytkownika jest katalogiem FTP, który utworzyliśmy w jego katalogu domowym.,