FTP

Как да конфигурирам FTP с TLS в Ubuntu

Как да конфигурирам FTP с TLS в Ubuntu
FTP (File Transfer Protocol) се използва предимно за прехвърляне на файлове между компютри. FTP работи в архитектура клиент-сървър, при която клиентът иска файл от сървъра и сървърът връща необходимия файл на клиента. На клиентската машина FTP клиентското приложение се използва за комуникация със сървъра. Възможен е и достъп до FTP сървъра в браузъра. По подразбиране FTP комуникира по несигурен канал, но е възможно да конфигурирате FTP да прехвърля данни през защитен канал. В този урок ще научите как да конфигурирате FTP сървър с TLS и след това да използвате FileZilla като клиентско приложение за свързване с FTP сървъра.

Инсталиране на VSFTPD

VSFTPD (Very Secure FTP Daemon) е софтуерна програма, използвана за конфигуриране на FTP на сървър. В този урок VSFTPD ще се използва за конфигуриране на FTP сървъра на машината. Преди да инсталирате VSFTPD, актуализирайте хранилищата на вашия сървър, като издадете следната команда.

[имейл защитен]: ~ $ sudo apt-get update -y

След това инсталирайте VSFTPD, като използвате следната команда.

[имейл защитен]: ~ $ sudo apt-get install vsftpd -y

И накрая, проверете инсталацията, като проверите версията на vsftpd със следната команда.

[имейл защитен]: ~ $ vsftpd -v

Горната команда ще изведе версията на vsftpd, ако инсталацията е успешна.

FTP в активен режим

В активен режим FTP клиентът стартира сесията чрез установяване на TCP контролна връзка от произволен порт на клиентската машина до порт 21 на сървъра. След това клиентът започва да слуша на случаен порт X за връзка за данни и информира сървъра чрез TCP Control връзка, че клиентът чака връзката за данни на порт X. След това сървърът установява връзка за данни от своя порт 20 до порт X на клиентската машина.

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

Първо отворете VSFTPD конфигурационния файл.

[имейл защитен]: ~ $ sudo nano / etc / vsftpd.конф

Добавете следния ред в края на файла.

pasv_enable = НЕ

Също така, уверете се, че опцията „connect_from_port_20“ е зададена на „YES“.„Тази опция гарантира, че връзката за данни е установена на порт 20 на сървъра.

След това създайте директория, която FTP сървърът ще използва за съхраняване на файлове. За този урок ще конфигурираме „/ home / ubuntu / ftp /“ като основен път за FTP сървъра.

[имейл защитен]: ~ $ sudo mkdir / home / ubuntu / ftp

Сега посочете тази директория в конфигурационния файл, като промените опцията 'local_root'. Следният параметър ще конфигурира главния път на сървъра.

local_root = / home / ubuntu / ftp

Опцията 'write_enable' трябва да бъде активирана, за да позволи на потребителите да пишат на FTP сървъра.

Всеки път, когато променяте конфигурационния файл, винаги рестартирайте сървъра.

[имейл защитен]: ~ $ sudo systemctl рестартирайте vsftpd

Задаване на парола за потребител

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

[имейл защитен]: ~ $ sudo passwd ubuntu

Горната команда ще поиска паролата за потребителя на 'ubuntu'.

Конфигуриране на защитната стена за активен режим

Ако FTP се използва в активен режим, FTP сървърът ще използва два порта за комуникация с клиента, портове 21 и 22. Порт 21 се използва за предаване на команди на клиента, а порт 20 се използва за прехвърляне на данни към произволен произволен порт на клиента. Ще използваме ufw, за да конфигурираме защитната стена на сървъра. Инсталирайте ufw, като използвате следната команда.

[имейл защитен]: ~ $ sudo apt-get install ufw

Сега, от страна на сървъра, ще отворим портове 20, 21 и 22 (за SSH връзката).

[имейл защитен]: ~ $ sudo ufw разрешава от който и да е към всеки порт proto tcp

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

[имейл защитен]: ~ $ sudo ufw enable
[имейл защитен]: ~ $ sudo ufw статус

ЗАБЕЛЕЖКА: ако конфигурирате вашия FTP сървър в облака, ще трябва да разрешите и портове 20, 21 и 22 в групата за защита.

ВНИМАНИЕ: Винаги активирайте порт 22, заедно с необходимите портове, преди да активирате ufw на отдалечената система. По подразбиране UFW блокира трафика от порт 22, така че няма да можете да осъществите достъп до вашия отдалечен сървър чрез SSH, ако активирате ufw, без да разрешите трафик от порт 22.

Инсталиране на FTP клиент

Сега нашият сървър е конфигуриран в активен режим и ние можем да получим достъп до него от страна на клиента. За клиентското приложение ще използваме FileZilla, ftp клиентско приложение. Инсталирайте FileZilla, като използвате следната команда.

[имейл защитен]: ~ $ sudo apt-get install filezilla -y

Отворете FTP клиентското приложение и въведете публичния IP адрес и други идентификационни данни на FTP сървъра.

Когато щракнете върху „Бързо свързване“, ще се свържете с FTP сървъра и автоматично ще бъдете отведени в директорията, посочена в опцията „local_root“ в конфигурационния файл „/ home / ubuntu / ftp“.

Проблеми в активен режим

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

FTP в пасивен режим

В пасивен режим клиентът създава контролна връзка със сървъра на порт 21 на сървъра. След това клиентът изпраща специалната команда „PASV“, за да информира сървъра, че връзката за данни ще бъде установена от клиента вместо от сървъра. В отговор клиентът получава IP на сървъра и произволен номер на порт (този номер на порт ще бъде конфигуриран на сървъра). Клиентът използва този IP и номер на порт, за да създаде връзка за данни със сървъра. В пасивен режим, както данните, така и контролните връзки се установяват от клиента, така че защитната стена не нарушава комуникацията между клиента и сървъра.

Отворете FTP конфигурационния файл в любимия си редактор.

[имейл защитен]: ~ $ sudo nano / etc / vsftpd.конф

Задайте опцията 'pasv_enable' на 'ДА' във файла, така че сървърът да може да комуникира с клиента в пасивен режим. Също така задайте опцията 'local_root', за да посочите основната директория на сървъра и задайте опцията 'write_enable' на 'YES', за да позволите на потребителите да качват файлове на сървъра.

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

Връзката за данни между сървъра и клиента ще бъде установена на порт между 1024 и 1048. Рестартирайте FTP сървъра след промяна на конфигурационния файл.

[имейл защитен]: ~ $ sudo systemctl рестартирайте vsftpd

Конфигуриране на защитната стена в пасивен режим

Ако използваме FTP в пасивен режим, връзката за данни ще бъде установена през всеки порт от 1024 до 1048, така че е необходимо да разрешите всички тези портове на FTP сървъра.

[имейл защитен]: ~ $ sudo ufw разрешава от който и да е към всеки порт proto tcp

След като разрешите всички портове на защитната стена, активирайте ufw, като изпълните следната команда.

[имейл защитен]: ~ $ sudo ufw enable

Винаги разрешавайте портове на сървъра, преди да активирате защитната стена; в противен случай няма да имате достъп до сървъра си чрез SSH като ufw, който по подразбиране блокира порт 22.

Тестване на връзката

Сега сме настроили FTP сървъра в пасивен режим и можем да проверим ftp връзката с клиентското приложение. Отворете FileZilla във вашата система, за да го направите.

След като въведете хоста, потребителското име, паролата и порта, сега можете да се свържете със сървъра си. Сега, когато сте свързани към FTP сървъра, работещ в пасивен режим, можете да качвате файлове на сървъра.

Конфигуриране на SSL сертификати с FTP сървър

По подразбиране FTP сървърът установява връзката между клиента и сървъра по незащитен канал. Този тип комуникация не трябва да се използва, ако искате да споделите чувствителни данни между клиента и сървъра. За да комуникирате по защитен канал, е необходимо да използвате SSL сертификати.

Генериране на SSL сертификати

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

[имейл защитен]: ~ $ sudo openssl req -x509 -nodes -day 365 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.пем

Когато стартирате горната команда, ще ви бъдат зададени някои въпроси. След като отговорите на тези въпроси, сертификатите ще бъдат генерирани. Можете да проверите за сертификатите в терминала.

[имейл защитен]: ~ $ sudo ls / etc / ssl / private /

Използване на сертификати в конфигурационния файл

Сега нашите сертификати са готови за използване. Ще конфигурираме 'vsftpd.conf ', за да се използват SSL сертификатите за комуникация. Отворете конфигурационния файл със следната команда.

[имейл защитен]: ~ $ sudo nano / etc / vsftpd.конф

Добавете следните редове в края на файловете. Тези промени ще гарантират, че FTP сървърът използва новосъздадените SSL сертификати за сигурна комуникация с клиента.

ssl_enable = ДА
force_local_data_ssl = НЕ
force_local_logins_ssl = НЕ
ssl_tlsv1 = ДА
ssl_sslv2 = НЕ
ssl_sslv3 = НЕ
rsa_cert_file = / etc / ssl / private / vsftpd.пем
rsa_private_key_file = / etc / ssl / private / vsftpd.пем

Рестартирайте FTP сървъра, за да приложите тези промени.

[имейл защитен]: ~ $ sudo systemctl рестартирайте vsftpd

След като рестартирате сървъра, опитайте да се свържете с вашия сървър с помощта на клиентското приложение FileZilla. Този път клиентското приложение ще ви попита дали да се доверите на тези сертификати.

Ако имате сертификати от доверен сертифициращ орган, това предупреждение не трябва да се показва. Ние генерирахме нашите сертификати с помощта на openssl, който не е доверен орган за сертифициране, поради което той поиска удостоверяване на сертификат в нашия случай. Сега можем да комуникираме между клиента и сървъра по защитен канал.

Анонимна конфигурация

Можете също така да активирате анонимно влизане на вашия FTP сървър. С активирана тази конфигурация всеки потребител може да влезе във FTP сървъра с всяко потребителско име и парола. Следните параметри в конфигурационния файл ще направят FTP сървъра достъпен анонимно.

Горната конфигурация задава основния път за анонимни потребители да бъде „/ home / ubuntu / ftp / anon“ и няма да поиска парола, когато анонимен потребител влезе.

ЗАБЕЛЕЖКА: Уверете се, че пътят '/ home / ubuntu / ftp / anon' съществува на FTP сървъра.

Сега рестартирайте FTP сървъра.

[имейл защитен]: ~ $ sudo systemctl рестартирайте vsftpd

След като рестартираме сървъра, ще се опитаме да се свържем със сървъра чрез браузъра Google Chrome. Отидете на следния URL адрес.

ftp: // 3.8.12.52

Горният URL ще ви отведе до основната директория на FTP сървъра, както е посочено в конфигурационния файл. При деактивирано анонимно влизане, когато се опитате да се свържете с FTP сървъра с помощта на браузър, първо ще бъдете помолени за удостоверяване и след това ще бъдете отведени в основната директория на сървъра.

Конфигурирайте локален достъп

Също така можем да разрешим или блокираме локален достъп до FTP сървъра, като променим конфигурационния файл. Понастоящем можем да осъществим достъп до нашия FTP сървър локално, без да използваме FTP клиентското приложение, но можем да блокираме този достъп. За целта трябва да модифицираме параметъра 'local_enable'.

Първо рестартирайте FTP сървъра.

[имейл защитен]: ~ $ sudo systemctl рестартирайте vsftpd

След като рестартирате сървъра, опитайте да осъществите достъп до FTP сървъра локално, като използвате интерфейса на командния ред. Влезте във вашия отдалечен сървър, използвайки SSH.

[имейл защитен]: ~ $ ssh ubuntu @ 3.8.12.52 -i

Сега издайте следната команда, за да влезете във FTP сървъра локално, като използвате интерфейса на командния ред.

[имейл защитен]: ~ $ ftp localhost

Когато изпълните горната команда, тя ще изведе 500 грешка.

Заключение

Протоколът за прехвърляне на файлове се използва от много години за прехвърляне на файлове и документи през Интернет. VSFTPD е един от пакетите, използвани като FTP сървър на вашата машина. VSFTPD съдържа различни конфигурации, които можете да използвате за персонализиране на вашия FTP сървър. Този урок ви показа как да конфигурирате FTP сървър с TLS за подобрена защита. За да научите повече за FTP конфигурациите, посетете следната връзка.

http: // vsftpd.зверове.org / vsftpd_conf.html

Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...
0 А.д. Урок
От многото стратегически игри, 0 A.д. успява да се открои като изчерпателно заглавие и много дълбока, тактическа игра, въпреки че е с отворен код. Раз...
Урок за Unity3D
Въведение в Unity 3D Unity 3D е мощен двигател за разработка на игри. Това е кръстосана платформа, която ви позволява да създавате игри за мобилни уст...