Web-админка для ftp-сервера на базе Centos 7 + VSFTPd + MariaBD
Spisu treści:
- Wymagania wstępne
- Instalowanie vsftpd na CentOS 7
- 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 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:
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
Zapobiegaj użytkownikom FTP uzyskiwania dostępu do plików spoza ich katalogów domowych poprzez odkomentowanie dyrektywy
chroot
.
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
/etc/vsftpd/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/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/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
:
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
:
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:
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:
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
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 centosGt 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 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.
Jak skonfigurować serwer ftp z vsftpd na Ubuntu 18.04
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.