Linux

Как да настроите FTP сървър с Vsftpd на Raspberry Pi

Как да настроите FTP сървър с Vsftpd на Raspberry Pi

Този урок обяснява как да инсталирате и конфигурирате FTP сървър на Raspberry Pi, който използвате за споделяне на файлове между вашите устройства. Ще използваме vsftpd, който е стабилен, сигурен и бърз FTP сървър. Също така ще ви покажем как да конфигурирате vsftpd да ограничава потребителите до тяхната домашна директория и да шифрова цялото предаване с SSL / TLS.

За този проект трябва да имате инсталиран Raspbian на вашия Raspberry Pi . Стартирането на FTP сървър не изисква графичен интерфейс, така че нашата препоръка е да използвате изображението Raspbian Lite и да активирате SSH .

Инсталиране на vsftpd на Raspberry Pi #

Пакетът vsftpd се предлага в стандартните хранилища на Raspbian. За да го инсталирате, изпълнете следните команди:

sudo apt актуализацияsudo apt install vsftpd

Услугата ftp автоматично ще стартира след завършване на инсталационния процес. За да го проверите, отпечатайте състоянието на услугата:

sudo systemctl статус vsftpd

Резултатът ще изглежда по следния начин, показвайки, че услугата vsftpd е активна и работи:

● vsftpd.услуга - vsftpd FTP сървър Заредено: заредено (/ lib / systemd / system / vsftpd.обслужване; активиран; предварително зададен от доставчика: активиран) Активен: активен (работи) от сряда 2020-10-21 19:00:41 BST; Преди 9 години .. 

Конфигуриране на vsftpd #

Сървърът vsftpd може да бъде конфигуриран чрез редактиране на / etc / vsftpd.конф файл.

Повечето от настройките са добре документирани в конфигурационния файл. За всички налични опции посетете официалната страница vsftpd.

Започнете с отваряне на конфигурационния файл vsftpd:

sudo nano / etc / vsftpd.конф

1. FTP достъп #

За да сте сигурни, че само локалните потребители имат достъп до FTP сървъра, потърсете anonymous_enable и local_enable директиви и проверете дали вашата конфигурация съвпада с редовете по-долу:

/ etc / vsftpd.конф
anonymous_enable = НЯМА local_enable = ДА 

2. Активиране на качвания #

Намерете и коментирайте write_enable директива за разрешаване на промени във файловата система, като качване и премахване на файлове.

/ etc / vsftpd.конф
write_enable = ДА 

3. Chroot Jail #

За да предотвратите достъпа на FTP потребителите до файлове извън техните домашни директории, коментирайте chroot директива.

/ etc / vsftpd.конф
chroot_local_user = ДА 

Когато функцията chroot е активна, vsftpd ще откаже да качва файлове, ако в директорията, в която са заключени потребителите, може да се пише.

Използвайте едно от решенията по-долу, за да направите средата за chroot записваема:

4. Пасивни FTP връзки #

По подразбиране vsftpd използва активен режим. За да използвате пасивен режим, задайте минималния и максималния обхват на портовете:

/ etc / vsftpd.конф
pasv_min_port = 30000 pasv_max_port = 31000 

vsftpd може да използва всеки порт за пасивни FTP връзки. Когато е активиран пасивният режим, FTP клиентът отваря връзка със сървъра на произволен порт в избрания от вас диапазон.

5. Ограничаване на потребителския вход #

Можете да конфигурирате vsftpd да позволява само на определени потребители да влизат. За целта добавете следните редове в края на файла:

/ etc / vsftpd.конф
userlist_enable = ДА userlist_file = / etc / vsftpd.user_list userlist_deny = НЕ 

Когато тази функция е активирана, трябва изрично да посочите кои потребители могат да влязат, като добавите потребителските имена към / etc / vsftpd.user_list файл (по един потребител на ред).

6. Осигуряване на предавания с SSL / TLS #

За да шифровате FTP предаванията със SSL / TLS, ще трябва да имате SSL сертификат и да конфигурирате FTP сървъра да го използва.

Можете да използвате съществуващ SSL сертификат, подписан от доверен сертифициращ орган, или да създадете самоподписан сертификат.

Ако имате домейн или поддомейн, сочещ към IP адреса на FTP сървъра, можете лесно да генерирате безплатен сертификат Let's Encrypt SSL.

В този урок ще генерираме самоподписан SSL сертификат, използвайки openssl команда.

Изпълнете следната команда, за да създадете 2048-битов частен ключ и самоподписан сертификат, валиден 10 години. И частният ключ, и сертификатът ще бъдат записани в един и същ файл:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.пем

След като файловете бъдат създадени, отворете конфигурационния файл:

sudo nano / etc / vsftpd.конф

Намери rsa_cert_file и rsa_private_key_file директиви, променете техните стойности на пам път на файла и задайте ssl_enable директива към ДА:

/ etc / vsftpd.конф
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = ДА 

Ако не е посочено друго, FTP сървърът ще използва само TLS за осъществяване на сигурни връзки.

Рестартирайте услугата vsftpd #

След като приключите с конфигурирането на сървъра, конфигурационният файл vsftpd (с изключение на коментарите) трябва да изглежда по следния начин:

/ etc / vsftpd.конф
Listen = NO listen_ipv6 = YES anonim_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 allow_writeable_chroot = YES pasv_es.user_list userlist_deny = НЯМА 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 = ДА 

Запазете файла и рестартирайте услугата vsftpd, за да влязат в сила промените:

sudo systemctl рестартирайте vsftpd

Отваряне на защитната стена #

Ако използвате защитна стена на UFW, ще трябва да разрешите FTP трафик.

За да отворите порта 21 (FTP команден порт), порт 20 (FTP порт за данни) и 30000-31000 (Обхват на пасивните портове), изпълнете следните команди:

sudo ufw позволяват 20: 21 / tcpsudo ufw позволяват 30000: 31000 / tcp

Презаредете правилата на UFW, като деактивирате и активирате отново UFW:

sudo ufw забраниsudo ufw разреши

Създаване на FTP потребителски номер

За да тестваме FTP сървъра, ще създадем нов потребител.

  1. Създайте нов потребител с име newftpuser:

    sudo adduser newftpuser

    Когато бъдете подканени, задайте потребителската парола.

  2. Добавете потребителя към списъка с разрешени FTP потребители:

    echo "newftpuser" | sudo tee -a / etc / vsftpd.user_list
  3. Създайте дървото на FTP директории и задайте правилните разрешения:

    sudo mkdir -p / home / newftpuser / ftp / uploadsudo chmod 550 / home / newftpuser / ftpsudo chmod 750 / home / newftpuser / ftp / uploadsudo chown -R newftpuser: / home / newftpuser / ftp

    Както беше обсъдено в предишния раздел, потребителят ще може да качва файлове в ftp / качване директория.

Към този момент вашият FTP сървър е напълно функционален и би трябвало да можете да се свързвате със сървъра, използвайки всеки FTP клиент, като FileZilla .

Деактивиране на Shell Access #

По подразбиране при създаването на потребител, ако не е изрично посочено, потребителят ще има SSH достъп до устройството. За да забраните достъпа до черупки, създайте нова обвивка, която просто ще отпечата съобщение, казващо на потребителя, че акаунтът му е ограничен само до FTP достъп.

Създайте / bin / ftponly shell и го направете изпълним:

echo -e '#!/ bin / sh \ necho "Този акаунт е ограничен само до FTP достъп."'| sudo tee -a / bin / ftponlysudo chmod a + x / bin / ftponly

Добавете новата обвивка към списъка с валидни черупки в / и т.н. / черупки файл:

echo "/ bin / ftponly" | sudo tee -a / и т.н. / черупки

Променете потребителската обвивка на / bin / ftponly:

sudo usermod newftpuser -s / bin / ftponly

Използвайте същата команда, за да промените черупката на всички потребители, на които искате да дадете само FTP достъп.

Заключение №

Показахме ви как да инсталирате и конфигурирате сигурен и бърз FTP сървър на вашата система Raspberry Pi.

Ако имате въпроси или отзиви, не се колебайте да оставите коментар.

Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...
Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...