Тази статия описва как да инсталирате и конфигурирате FTP сървър на Ubuntu 20.04, който използвате за споделяне на файлове между вашите устройства.
FTP (File Transfer Protocol) е стандартен мрежов протокол, използван за прехвърляне на файлове към и от отдалечена мрежа. За Linux има няколко FTP сървъра с отворен код. Най-известните и широко използвани са PureFTPd, ProFTPD и vsftpd . Ще инсталираме vsftpd (Very Secure Ftp Daemon), стабилен, сигурен и бърз FTP сървър. Също така ще ви покажем как да конфигурирате сървъра да ограничава потребителите до тяхната домашна директория и да шифрова цялото предаване с SSL / TLS.
Въпреки че FTP е много популярен протокол, за по-сигурен и по-бърз трансфер на данни, трябва да използвате SCP или SFTP .
Инсталиране на vsftpd на Ubuntu 20.04 #
Пакетът vsftpd се предлага в хранилищата на Ubuntu. За да го инсталирате, изпълнете следните команди:
sudo apt актуализация
sudo apt install vsftpd
FTP услугата автоматично ще стартира, след като процесът на инсталиране приключи. За да го проверите, отпечатайте състоянието на услугата:
sudo systemctl статус vsftpd
Резултатът трябва да покаже, че услугата vsftpd е активна и работи:
● vsftpd.услуга - vsftpd FTP сървър Заредено: заредено (/ lib / systemd / system / vsftpd.обслужване; активиран; предварително зададен от доставчика: активиран) Активен: активен (работи) от вторник 2021-03-02 15:17:22 UTC; Преди 3 секунди ..
Конфигуриране на vsftpd #
Конфигурацията на vsftpd сървър се съхранява в / etc / vsftpd.конф
файл.
Повечето от настройките на сървъра са добре документирани във файла. За всички налични опции посетете страницата с документация 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 потребители да имат достъп до файлове извън домашните си директории, коментирайте lne, започвайки с chroot_local_user
:
chroot_local_user = ДА
По подразбиране, от съображения за сигурност, когато chroot е активиран, vsftpd ще откаже да качва файлове, ако в директорията, в която са заключени потребителите, може да се пише.
Използвайте едно от решенията по-долу, за да разрешите качванията, когато е активиран chroot:
Метод 1. - Препоръчителната опция е да поддържате функцията chroot активирана и да конфигурирате FTP директории. В този пример ще създадем
/ etc / vsftpd.конфftp
директория вътре в потребителския дом, която ще служи като chroot и записваемакачва
директория за качване на файлове:user_sub_token = $ USER local_root = / home / $ USER / ftp
Метод 2. - Друга възможност е да активирате
/ etc / vsftpd.конфallow_writeable_chroot
директива:allow_writeable_chroot = ДА
Използвайте тази опция само ако трябва да предоставите достъп за запис на вашия потребител до домашната му директория.
4. Пасивни FTP връзки #
По подразбиране vsftpd използва активен режим. За да използвате пасивен режим, задайте минималния и максималния обхват на портовете:
/ etc / vsftpd.конфpasv_min_port = 30000 pasv_max_port = 31000
Можете да използвате всеки порт за пасивни 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.
Ще генерираме 2048-битов частен ключ и самоподписан SSL сертификат, който ще бъде валиден десет години:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.пем
И частният ключ, и сертификатът ще бъдат записани в един и същ файл.
След като SSL сертификатът е създаден, отворете конфигурационния файл 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 = НЕ listen_ipv6 = ДА anonim_nable = НЕ local_enable = ДА write_enable = ДА dirmessage_enable = ДА use_localtime = ДА xferlog_enable = ДА connect_from_port_20 = ДА chroot_local_user = ДА secure_chroot_dir = / var / име / vs_ft / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = ДА user_sub_token = $ ПОТРЕБИТЕЛ local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = ДА userlist_file = / etc / vsftpd.user_list userlist_deny = НЕ
Запазете файла и рестартирайте услугата vsftpd, за да влязат в сила промените:
sudo systemctl рестартирайте vsftpd
Отваряне на защитната стена #
Ако използвате защитна стена на UFW, ще трябва да разрешите FTP трафик.
За да отворите порта 21
(FTP команден порт), порт 20
(FTP порт за данни) и 30000-31000
(Обхват на пасивните портове), изпълнете следните команди:
sudo ufw позволяват 20: 21 / tcp
sudo ufw позволяват 30000: 31000 / tcp
За да избегнете заключване, уверете се, че сте пристанище 22
е отворено:
sudo ufw позволяват OpenSSH
Презаредете правилата на UFW, като деактивирате и активирате отново UFW:
sudo ufw забрани
sudo ufw разреши
За да проверите изпълнението на промените:
sudo ufw статус
Състояние: активен Към действие от - ------ ---- 20: 21 / tcp ALLOW Anywhere 30000: 31000 / tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20: 21 / tcp (v6) ALLOW Anywhere (v6) 30000: 31000 / tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Създаване на 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 клиент, който може да бъде конфигуриран да използва TLS криптиране, като FileZilla .
Деактивиране на Shell Access #
По подразбиране при създаването на потребител, ако не е изрично посочено, потребителят ще има SSH достъп до сървъра. За да деактивирате достъпа до черупки, създайте нова обвивка, която ще отпечата съобщение, казващо на потребителя, че акаунтът му е ограничен само до FTP достъп.
Изпълнете следните команди, за да създадете / bin / ftponly
файл и го направете изпълним:
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 сървър на вашия Ubuntu 20.04 система.
Ако имате въпроси или отзиви, не се колебайте да оставите коментар.