Android

Jak skonfigurować serwer ftp z vsftpd na Centos 7

Web-админка для ftp-сервера на базе Centos 7 + VSFTPd + MariaBD

Web-админка для ftp-сервера на базе Centos 7 + VSFTPd + MariaBD

Spisu treści:

Anonim

FTP (File Transfer Protocol) to standardowy protokół sieciowy klient-serwer, który umożliwia użytkownikom przesyłanie plików do i ze zdalnej sieci.

Istnieje kilka serwerów FTP typu open source dostępnych dla systemu Linux. Najpopularniejsze i szeroko stosowane to PureFTPd, ProFTPD i vsftpd.

W tym samouczku zainstalujemy vsftpd (Very Secure Ftp Daemon) na CentOS 7. 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.

Aby uzyskać bezpieczniejszy i szybszy transfer danych, użyj SCP lub SFTP.

Wymagania wstępne

Przed kontynuowaniem tego samouczka upewnij się, że jesteś zalogowany jako użytkownik z uprawnieniami sudo.

Instalowanie vsftpd na CentOS 7

Pakiet vsftpd jest dostępny w domyślnych repozytoriach CentOS. Aby go zainstalować, wydaj następujące polecenie:

sudo yum install vsftpd

Po zainstalowaniu pakietu uruchom demona vsftpd i włącz automatyczne uruchamianie się podczas uruchamiania:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Możesz sprawdzić, czy usługa vsftpd działa, drukując jej status:

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 daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Konfigurowanie vsftpd

Konfiguracja usługi vsftpd wymaga edycji pliku konfiguracyjnego /etc/vsftpd/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ń wymaganych do skonfigurowania bezpiecznej instalacji vsftpd.

Zacznij od otwarcia pliku konfiguracyjnego vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

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:

/etc/vsftpd/vsftpd.conf

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.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Więzienie Chroot

Zapobiegaj użytkownikom FTP uzyskiwania dostępu do plików spoza ich katalogów domowych poprzez odkomentowanie dyrektywy chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Domyślnie, gdy chroot jest włączony, vsftpd odmawia przesyłania plików, jeśli katalog, w którym użytkownicy są zablokowani, jest zapisywalny. Ma to na celu zapobieganie podatności na zagrożenia.

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 ftp w domu użytkownika, który będzie służył jako chroot oraz zapisywalny katalog uploads do przesyłania plików.

    /etc/vsftpd/vsftpd.conf

    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/vsftpd.conf

    allow_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/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 po wierszu userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

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ę zalogować, dodając nazwy użytkowników do /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.

W tym samouczku 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/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Po utworzeniu certyfikatu SSL otwórz plik konfiguracyjny vsftpd:

sudo nano /etc/vsftpd/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 :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/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/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Zapisz plik i uruchom ponownie usługę vsftpd, aby zmiany odniosły skutek:

sudo systemctl restart vsftpd

Otwieranie zapory

Aby otworzyć port 21 (port poleceń FTP), port 20 (port danych FTP) i 30000-31000 (zakres portów pasywnych), wydaj następujące polecenia:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Ponownie załaduj reguły zapory, wpisując:

firewall-cmd --reload

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.
  1. Utwórz nowego użytkownika o nazwie newftpuser :

    sudo adduser newftpuser

    Następnie musisz ustawić hasło użytkownika:

    sudo passwd 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.

Uruchom następujące polecenia, aby utworzyć powłokę /bin/ftponly i uczynić ją wykonywalną:

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ę dla innych użytkowników, którym chcesz dać dostęp tylko przez FTP.

Wniosek

W tym samouczku nauczyłeś się, jak zainstalować i skonfigurować bezpieczny i szybki serwer FTP w systemie CentOS 7.

ftp centos