Този урок обяснява как да инсталирате и конфигурирате 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
директиви и проверете дали вашата конфигурация съвпада с редовете по-долу:
anonymous_enable = НЯМА local_enable = ДА
2. Активиране на качвания #
Намерете и коментирайте write_enable
директива за разрешаване на промени във файловата система, като качване и премахване на файлове.
write_enable = ДА
3. Chroot Jail #
За да предотвратите достъпа на FTP потребителите до файлове извън техните домашни директории, коментирайте chroot
директива.
chroot_local_user = ДА
Когато функцията chroot е активна, vsftpd ще откаже да качва файлове, ако в директорията, в която са заключени потребителите, може да се пише.
Използвайте едно от решенията по-долу, за да направите средата за chroot записваема:
Метод 1. - Препоръчителната опция за разрешаване на качване е да поддържате chroot активиран и да конфигурирате FTP директории. В този пример ще създадем
/ etc / vsftpd.конфftp
директория вътре в потребителския дом, която ще служи като chroot и записваемакачва
директория за качване на файлове.user_sub_token = $ USER local_root = / home / $ USER / ftp
Метод 2. - Друга възможност е да добавите следната директива в конфигурационния файл vsftpd. Използвайте тази опция, ако трябва да предоставите достъп за запис на вашия потребител до домашната му директория.
/ etc / vsftpd.конфallow_writeable_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
директива към ДА
:
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 / tcp
sudo ufw позволяват 30000: 31000 / tcp
Презаредете правилата на UFW, като деактивирате и активирате отново UFW:
sudo ufw забрани
sudo ufw разреши
Създаване на FTP потребителски номер
За да тестваме FTP сървъра, ще създадем нов потребител.
- Ако вече имате потребител, който искате да предоставите FTP достъп, пропуснете първата стъпка.
- Ако зададете
allow_writeable_chroot = ДА
във вашия конфигурационен файл, пропуснете третата стъпка.
Създайте нов потребител с име
newftpuser
:sudo adduser newftpuser
Когато бъдете подканени, задайте потребителската парола.
Добавете потребителя към списъка с разрешени FTP потребители:
echo "newftpuser" | sudo tee -a / etc / vsftpd.user_list
Създайте дървото на FTP директории и задайте правилните разрешения:
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
Както беше обсъдено в предишния раздел, потребителят ще може да качва файлове в
ftp / качване
директория.
Към този момент вашият FTP сървър е напълно функционален и би трябвало да можете да се свързвате със сървъра, използвайки всеки FTP клиент, като FileZilla .
Деактивиране на Shell Access #
По подразбиране при създаването на потребител, ако не е изрично посочено, потребителят ще има SSH достъп до устройството. За да забраните достъпа до черупки, създайте нова обвивка, която просто ще отпечата съобщение, казващо на потребителя, че акаунтът му е ограничен само до FTP достъп.
Създайте / bin / ftponly
shell и го направете изпълним:
echo -e '#!/ bin / sh \ necho "Този акаунт е ограничен само до FTP достъп."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Добавете новата обвивка към списъка с валидни черупки в / и т.н. / черупки
файл:
echo "/ bin / ftponly" | sudo tee -a / и т.н. / черупки
Променете потребителската обвивка на / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Използвайте същата команда, за да промените черупката на всички потребители, на които искате да дадете само FTP достъп.
Заключение №
Показахме ви как да инсталирате и конфигурирате сигурен и бърз FTP сървър на вашата система Raspberry Pi.
Ако имате въпроси или отзиви, не се колебайте да оставите коментар.