Інтернет Windows Android

Встановлення та налаштування FTP-сервера в Linux. Встановлення та налаштування FTP сервера Linux Як налаштувати фтп з'єднання на лінукс

Іноді у кожного системного адміністратора виникає потреба у FTP-сервері, найчастіше це пов'язано з необхідністю забезпечити обмін інформацією в автоматичному режимі між програмами, наприклад, при автообміні розподіленої інформаційної бази 1С, або для доступу до файлів на веб-сервері. Сьогодні ми розповімо, як менше, ніж за півгодини створити такий сервер на платформі Ubuntu.

Але спочатку трохи теорії. Протокол FTP (File Transfer Protocol) призначений, як випливає з назви, для передачі файлів і з'явився в 1971, але незважаючи на свій похилий вік продовжує широко використовуватися досі. Хоча його використання носить частіше технічний характер, для доступу кінцевих користувачів до даних зазвичай використовують браузер і протокол HTTP. До переваг FTP можна віднести можливість докачування файлу при обриві зв'язку і можливість однаково легко зчитувати файли, так і записувати їх. Але є й недоліки, найсерйозніший - низька безпека, тому цьому питанню слід приділити найпильнішу увагу.

FTP, як і PPTP, використовує різні з'єднання передачі команд і передачі. При ініціації з'єднання клієнт передає керуючі команди на порт 21 сервера, який в свою чергу встановлює вихідне з'єднання передачі даних на 20 порту, порт з боку клієнта визначається в результаті узгодження. Однак під час знаходження клієнта за NAT з'єднання подібним чином встановити не вдасться, тому було розроблено додатковий режим FTP passive mode (пасивний режим), коли з'єднання передачі даних встановлює не сервер, а клієнт, проте з параметрами, вказаними сервером. Ці моменти слід враховувати під час форвардингу FTP та налаштування мережевого фільтра.

Для нашого сервера ми будемо використовувати vsftpd- простий, швидкий та безпечний FTP сервер. Оскільки він обслуговуватиме як зовнішню, і внутрішню мережі, має сенс додати цю роль нашому . Установка сервера дуже проста:

Apt-get install vsftpd

Налаштування сервера здійснюється через конфігураційний файл /etc/vsftpd.confвін має просту структуру, добре прокоментований і дозволяє настроїти сервер без будь-якої інструкції за наявності мінімальних знань. Розглянемо основні параметри.

Сервер може бути запущений постійно, як служба або стартувати за необхідності, нам більше підходить перший варіант:

Listen=YES

Ця опція має взаємовиключний запис, який слід привести до вигляду:

Listen_ipv6=NO

Дозволимо вхід лише локальним користувачам:

Anonymous_enable=NO
local_enable=YES

Дозволимо користувачам записувати файли та вкажемо серверу автоматично виставляти потрібні права (755 на папки та 644 на файли):

Write_enable=YES
local_umask=022

Якщо потрібно встановити інший набір прав: 775 і 664, то umask повинен дорівнювати 002.

За промовчанням сервер використовує час GMT, щоб файли встановлювали час вашого часового поясу, використовуйте опцію:

Use_localtime=YES

Включимо лог файлів, що завантажуються і завантажуються:

Xferlog_enable=YES

Дозволимо серверу встановлювати з'єднання передачі даних на порт 20 (активний режим):

Connect_from_port_20=YES

Наступні опції задають місце та формат зберігання логів:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

Задамо таймаути сесії:

Idle_session_timeout=600
data_connection_timeout=120

Також з метою безпеки ізолюємо користувача в його домашньому каталозі та відразу дозволимо запис у його корінь:

Chroot_local_user=YES
allow_writeable_chroot=YES

Для коректної роботи з текстовими даними можна включити підтримку ASCII, це дозволить при передачі текстового файлу з Windows системи UNIX (Linux) коректно замінити символи перенесення рядка з CR+LF на LF для коректного відображення вмісту і виконати зворотне перетворення при передачі його назад.

Ascii_upload_enable=YES
ascii_download_enable=YES

Можна увімкнути лише одну опцію, для закачування або завантаження. Зверніть увагу, що під час передачі бінарного файлу в режимі ASCII останній може бути пошкоджений.

Досить цікава опція:

Ls_recurse_enable=YES

Вона дозволяє рекурсивний перегляд каталогів, з одного боку, це зручно, з іншого, здатне викликати велике навантаження на сервер, якщо, наприклад, отримати лістинг директорії, що містить велику кількість файлів і каталогів.

Всі інші опції залишаємо за замовчуванням, хоча можете відредагувати вітання сервера, написавши там все, що вам подобається:

Ftpd_banner=Welcome to Roga i Kopyta LLC FTP

В кінці конфігураційного файлу задамо налаштування для пасивного режиму, рекомендується явно задати порти, щоб була можливість вказати їх при форвардингу, якщо сервер стоїть за NAT або у правилах брандмауера:

Pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999

Перезапускаємо сервер (це потрібно робити щоразу після внесення змін до конфігурації):

Service vsftpd restart

і пробуємо підключитися будь-яким FTP-клієнтом, використовуючи облікові дані існуючого користувача. Ми повинні потрапити до його домашньої директорії і бути ізольовані в ній.

У разі появи помилки, пов'язаної з некоректною роботою vsftpd та системи безпеки seccomp:

500 OOPS: prctl PR_SET_SECCOMP failed

додайте у файл недокументовану опцію:

Seccomp_sandbox=NO

Однак пам'ятайте, що FTP – небезпечний протокол, тому пускати на сервер будь-якого локального користувача, як це зроблено зараз, не найкращий варіант. Щоб уникнути такої ситуації, vsftpd має вбудований механізм контролю користувачів. Додамо в конфігураційний файл опцію:

Userlist_enable=YES

і створимо файл списку користувачів:

Touch /etc/vsftpd.user_list

Типово vsftpd забороняєдоступ до сервера користувачам, зазначеним у списку ще до введення пароля, тобто. реалізує принцип дозволено всім, кому не заборонено. Але краще реалізувати інший підхід: заборонено всім, кому не дозволено. Тобто. дозволятидоступ лише вказаним користувачам. Для цього додамо опцію:

Userlist_deny=NO

Тепер доступ до FTP-сервера будуть мати лише явно вказані користувачі, їх слід вказувати в vsftpd.user_listпо одному в рядок, наприклад:

Ivanov
petrov

Якщо не зазначено інше, то підключившись FTP користувачі потрапляють у свій домашній каталог. Це не завжди зручно, часто потрібно перенаправляти їх до іншої директорії. Якщо це спільна для всіх папка, скажімо /var/ftp, можна задати опцію:

Local_root=/var/ftp

Яка перенаправить всіх користувачів у вказаний каталог та ізолює їх там.

Це найпростіша ситуація, реальні завдання зазвичай складніші, припустимо нам треба встановити користувачеві Іванову як кореневу директорію /var/www/example1.com, а Петрову /var/www/example2.comщоб кожен з них працював зі своєю папкою. Для цих цілей можна використовувати ще одну можливість vsftpd - налаштування користувача, які перекривають налаштування основного конфігураційного файлу.

Для цього додамо опцію:

User_config_dir=/etc/vsftpd_user_conf

Потім створимо саму директорію

Mkdir /etc/vsftpd_user_conf

Щоб задати користувачеві власні налаштування в даній директорії, слід створити файл з ім'ям користувача та додати в нього необхідні опції. Зміни використовуються без перезапуску FTP-сервера при наступному підключенні клієнта.

Створимо файл з налаштуваннями для Іванова:

Tocuh /etc/vsftpd_user_conf/ivanov

і внесемо до нього опцію:

Local_root=/var/www/example1.com

При наступному підключенні коренева директорія користувача зміниться на вказану. Також у цьому файлі ми можемо задавати будь-які персональні опції, наприклад, інший umaskабо права на доступ до файлів. Однак ми не можемо використовувати тут глобальні налаштування: опції підключення, логування, автентифікації, вони просто ігноруватимуться.

Якщо вам потрібно приховати реальних власників файлів і папок, можна використовувати опцію:

Hide_ids=YES

У цьому випадку замість реальних власників та груп буде вказано ftp:ftp, це може бути корисним у разі публічного сервера або наявності у списку користувачів сторонніх осіб, яким ви не бажаєте розкривати реальні імена користувачів вашої системи.

Як бачимо, ми справді створили робочий FTP-сервер менш ніж за півгодини.

F TP (протокол передачі файлів) – це стандартний мережевий протокол, який використовується для передачі файлів у віддалену мережу та з неї. Для більш безпечної та швидкої передачі даних використовуйте SCP.

Для Linux є безліч FTP-серверів з відкритим вихідним кодом. Найпопулярнішими та широко використовуваними є PureFTPd, ProFTPD та vsftpd. У цій статті ми будемо встановлювати vsftpd. Це стабільний, безпечний та швидкий FTP-сервер. Ми також покажемо вам, як налаштувати vsftpd для обмеження доступу користувачів до їхнього домашнього каталогу та шифрування всієї передачі за допомогою SSL/TLS.

Хоча ця стаття написана для Ubuntu 18.04, такі ж інструкції застосовуються до Ubuntu 16.04 та будь-якого дистрибутиву на базі Debian, включаючи Debian, Linux Mint та Elementary OS.

Передумови

Установка vsftpd на Ubuntu 18.04

Пакет vsftpd доступний у репозиторіях. Щоб встановити його, просто виконайте такі команди:

Sudo apt update sudo apt install vsftpd

Служба vsftpd автоматично запуститься після завершення інсталяції. Перевірте його, роздрукувавши статус служби:

Sudo systemctl status vsftpd

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

* vsftpd.service - vsftpd FTP-сервер Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Налаштування vsftpd

Сервер vsftpd можна настроїти, відредагувавши файл /etc/vsftpd.conf. Більшість параметрів задокументовані у файлі конфігурації. Для всіх доступних варіантів завітайте на офіційну сторінку vsftpd.

У наступних розділах ми розглянемо деякі важливі установки, необхідні для установки безпечної установки vsftpd.

Почніть із відкриття файлу конфігурації vsftpd:

Sudo nano /etc/vsftpd.conf

1. Доступ до FTP

Ми дозволяємо доступ до FTP-серверу лише локальним користувачам, знаходимо директиви anonymous_enable та local_enable та перевіряємо відповідність вашої конфігурації наступним рядкам:

/etc/vsftpd.conf

Anonymous_enable=NO local_enable=YES

2. Увімкнення завантаження

Розкоментуйте налаштування write_enable, щоб дозволити зміни у файловій системі, такі як завантаження та видалення файлів.

/etc/vsftpd.conf

Write_enable=YES

3. Chroot

Щоб користувачі FTP не могли отримати доступ до будь-яких файлів поза своїми домашніми каталогами, розкоментуйте налаштування chroot.

/etc/vsftpd.conf

Chroot_local_user=YES

За замовчуванням для запобігання вразливості безпеки, коли chroot увімкнено, vsftp відмовиться завантажувати файли, якщо каталог, в якому користувачі заблоковані, доступний для запису.

  • Метод 1.– Рекомендований спосіб дозволити завантаження – увімкнути chroot та настроїти FTP-каталоги. У цій статті ми створимо каталог ftp всередині користувача, який буде служити chroot і записуємо каталог uploads для завантаження файлів.

    /etc/vsftpd.conf

    User_sub_token=$USER local_root=/home/$USER/ftp

  • Метод 2.Ще один варіант - додати наступну директиву файл конфігурації vsftpd. Використовуйте цей параметр, якщо ви повинні надати доступ до запису для свого користувача до свого домашнього каталогу.

    /etc/vsftpd.conf

    Allow_writeable_chroot=YES

4. Пасивні FTP-з'єднання

vsftpd може використовувати будь-який порт для пасивних з'єднань FTP. Ми вкажемо мінімальний та максимальний діапазон портів, а потім відкриємо діапазон у нашому брандмауері.

Додайте до файлу конфігурації наступні рядки:

/etc/vsftpd.conf

Pasv_min_port=30000 pasv_max_port=31000

5. Обмеження входу користувача

Щоб дозволити лише певним користувачам входити на FTP-сервер, додайте наступні рядки до кінця файлу:

/etc/vsftpd.conf

Userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Коли цю опцію увімкнено, вам необхідно явно вказати, які користувачі можуть увійти, додавши імена користувачів у файл /etc/vsftpd.user_list (по одному користувачеві в рядку).

6. Забезпечення передачі за допомогою SSL/TLS

Щоб шифрувати FTP-передачі за допомогою SSL/TLS, вам необхідно мати сертифікат SSL та настроїти FTP-сервер для його використання.

Ви можете використовувати підписаний довіреним центром сертифікації або створити самопідписаний сертифікат.

Якщо у вас є домен або піддомен, що вказує на IP-адресу FTP-сервера, можна легко створити безкоштовний сертифікат 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.pem

Тепер, коли створено сертифікат SSL, відкрийте файл конфігурації vsftpd:

Sudo nano /etc/vsftpd.conf

Знайдіть директиви rsa_cert_file і rsa_private_key_file, зміните їх значення pam у дорозі до файлу і встановіть директиву ssl_enable на YES:

/etc/vsftpd.conf

Rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Якщо не зазначено інше, FTP-сервер використовуватиме лише TLS для забезпечення безпечних підключень.

Перезапустіть службу vsftpd

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

/etc/vsftpd.conf

Listen=NO listen_ipv6=YES anonymous_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 secure_ch/sp private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=list userlist_deny=NO

Збережіть файл і перезапустіть службу vsftpd, щоб зміни набрали чинності:

Sudo systemctl restart vsftpd

Відкриття брандмауера

Якщо ви використовуєте брандмауер UFW, вам необхідно дозволити FTP-трафік.

Щоб відкрити порт 21(порт команд FTP), порт 20(порт даних FTP) та 30000-31000(діапазон пасивних портів), виконайте такі команди:

Sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

Щоб уникнути блокування, ми відкриємо порт 22:

Sudo ufw allow OpenSSH

Перезавантажте правила UFW, відключивши та знову ввімкнувши UFW:

Sudo ufw disablesudo ufw enable

Щоб перевірити виконання змін:

Sudo ufw status Status: active To Action From -- ------ ---- 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=YES у файлі конфігурації, пропустіть третій крок.
  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

    Як було обговорено в попередньому розділі, користувач зможе завантажувати свої файли в каталог ftp/upload.

На даний момент ваш FTP сервер повністю працездатний, і ви повинні мати можливість підключатися до вашого сервера з будь-яким , який може бути налаштований на використання шифрування TLS, наприклад FileZilla.

Вимкнення доступу до оболонки

За умовчанням під час створення користувача, якщо явно не вказано, користувач матиме доступ до сервера SSH.

Щоб вимкнути доступ до оболонки, ми створимо нову оболонку, яка просто надрукує повідомлення, що повідомляє користувачеві, що їхній обліковий запис обмежується лише доступом до FTP.

Створіть оболонку /bin/ftponly і зробіть її виконуваною:

Echo -e "#!/bin/sh\necho "Цей акаунт є обмеженим до FTP access only." | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly

Додайте нову оболонку до списку допустимих оболонок у файл /etc/shells

Echo "/bin/ftponly" | sudo tee -a /etc/shells

Змініть оболонку користувача на /bin/ftponly:

Sudo usermod newftpuser -s /bin/ftponly

Висновок

У цій статті ви дізналися, як встановити та налаштувати безпечний та швидкий FTP-сервер у вашій системі Ubuntu 18.04.

Протокол передачі файлів (FTP) - це протокол TCP для передачі файлів між комп'ютерами. У минулому він використовувався також для завантаження [файлів в інтернеті], але, оскільки цей метод не використовує шифрування, дані користувача як і вміст файлів передаються у відкриту і легко перехоплюються. Тому, якщо ви шукаєте спосіб безпечно передавати та завантажувати файли, краще зверніться до статті по OpenSSH у розділі Віддалене адміністрування .

FTP працює на основі моделі клієнт/сервер. Серверний компонент називається сервісом FTP. Він постійно слухає FTP запити від віддалених клієнтів. При отриманні запиту він керує входом та встановленням з'єднання. Протягом сесії він виконує будь-які команди, які передані FTP клієнтом.

vsftpd - встановлення FTP сервера

vsftpd- це сервіс FTP, доступний в Ubuntu. Його легко встановлювати, налаштовувати та підтримувати. Для встановлення vsftpd ви можете виконати таку команду:

Sudo apt install vsftpd

Для запуску сервісу потрібно додати його до автозавантаження. Починаючи з версії Ubuntu 15.04, використовується Systemd, тому для додавання vsftpd в автозапуск треба ввести наступні команди:

Sudo systemctl start vsftpd sudo systemctl enable vsftpd

У Ubuntu Server може використовуватися фаєрвол ufw. Тоді вам потрібно дозволити порти 20 і 21

Sudo ufw allow 20/tcp sudo ufw allow 21/tcp

Конфігураційний файл містить багато установок. Інформація щодо кожного параметра доступна в цьому ж файлі. В якості альтернативи ви можете переглянути системний посібник з команди

Man 5 vsftpd.conf

для уточнення деталей за кожним параметром.

Доступ до FTP сервера може бути організований двома способами:

В анонімний режимвіддалений клієнт може отримати доступ до FTP сервера, використовуючи обліковий запис користувача за умовчанням з ім'ям anonymous або ftp і передавши адресу email як пароль. В авторизованому режимікористувач повинен мати облікове ім'я та пароль. Цей останній варіант дуже небезпечний і не повинен використовуватися за винятком спеціальних обставин. Якщо ви хочете передавати файли безпечно, дивіться SFTP у розділі сервера OpenSSH. Користувальницький доступ до каталогів та файлів FTP сервера залежить від прав доступу користувача, вказаного на вході. Як правило, сервіс FTP приховує кореневий каталог FTP сервера, замінюючи його на домашній каталог FTP. Це приховує корінь файлової системи від віддалених сесій.

Налаштування анонімного доступу до FTP

Налаштування vsftpd за промовчанням не дозволяє анонімне завантаження. Якщо ви хочете дозволити анонімне завантаження, змініть /etc/vsftpd.conf наступне:

Anonymous_enable=YES

У процесі встановлення створюється користувач ftp із домашнім каталогом /srv/ftp. Це каталог за промовчанням для FTP.

Якщо ви бажаєте змінити його розташування, наприклад, на /srv/files/ftp, просто створіть новий каталог та змініть домашній каталог користувача ftp:

Sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

Після змін перезапустіть vsftpd:

Насамкінець скопіюйте всі файли та каталоги, які ви хочете зробити доступними для анонімного FTP в /srv/files/ftp (або /srv/ftp, якщо ви хочете залишити налаштування за замовчуванням).

За замовчуванням анонімний користувач не має можливості завантажувати файли на сервер FTP. Для зміни цього налаштування приберіть коментар на наступному рядку та перезапустіть vsftpd:

Anon_upload_enable=YES

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

Налаштування авторизованого доступу до FTP

Перш ніж вносити зміни в конфігураційний файл, рекомендується скопіювати зразок для можливості відкату змін без переустановки пакета sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Для аутентифікації локальних користувачів слід розкоментувати рядок

Local_enable=YES

За промовчанням vsftpd налаштований на автентифікацію системних користувачів із можливістю отримувати файли. Якщо ви хочете користувачам дозволити завантажувати файли, змініть /etc/vsftpd.conf:

Write_enable=YES

після чого перезавантажте vsftpd:

Sudo service vsftpd restart

Тепер при вході системних користувачів по FTP вони потраплятимуть до своїх домашніх каталогів, де вони зможуть завантажувати, завантажувати [файли], створювати каталоги тощо.

Захист FTP

Обмеження користувачів

У /etc/vsftpd.conf є опції, що допомагають зробити vsftpd більш безпечним. Наприклад, ця опція дозволяє помістити локального користувача в chroot() «ув'язнення», вище якого (по дереву каталогів) він не зможе піднятися.

Chroot_local_user=YES

Ви також можете визначити список користувачів, які мають доступ тільки до домашнього каталогу:

Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

Після зняття коментарів із цих опцій, створіть /etc/vsftpd.chroot_list, що містить список користувачів по одному на рядок. Потім перезапустіть vsftpd:

Sudo service vsftpd restart

Якщо ви зняли коментарі з усіх трьох рядків, то користувачі зі списку не будуть обмежені своїми домашніми каталогами, на відміну від користувачів, що не увійшли до списку.

Аналогічно файл /etc/ftpusers містить список користувачів, яким заборонено доступ до FTP . За замовчуванням він включає root, daemon, nobody і т.п. Щоб заборонити доступ до FTP для додаткових користувачів, просто додайте їх до списку.

Якщо при спробі підключення ви бачите помилку:

Відповідь: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

то це означає, що локальний користувач має доступ на запис у домашній каталог, чого не повинно бути. Способів вирішення цієї помилки кілька:

    Заборонити запис до домашнього каталогу локальному користувачеві (підходить не всім і не завжди)

sudo chmod a-w /home/user/ allow_writeable_chroot=YES

    Прописати /home каталогом, куди потраплятимуть локальні користувачі після входу на сервер FTP. Тоді кожен з них матиме можливість писати лише до свого домашнього каталогу

local_root=/home

Шифрування

FTP може бути зашифрованим під час використання FTPS. На відміну від SFTP, FTPS- це FTP поверх SSL. SFTP- це сесія, подібна до FTP, по зашифрованому SSH з'єднанню. Основна відмінність полягає в тому, що користувачі SFTP повинні мати обліковий запис із власним оточенням (shell account) замість оболонки nologin. Надання всім користувачам доступу до оболонки може виявитися не найкращим рішенням для деяких систем, таких як веб-сервер загального доступу. Однак є можливість обмежити такі облікові записи лише SFTP та заборонити взаємодію з оболонкою. Дивіться розділ OpenSSH для додаткової інформації.

Щоб настроїти FTPS, додайте /etc/vsftpd.conf до кінця файлу:

Ssl_enable=Yes

Також зверніть увагу на опції сертифіката та ключа:

Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

За замовчуванням ці опції встановлені на значення, надані пакетом ssl-cert. Для робочого середовища вони повинні бути замінені на сертифікат та ключ, створені для певного комп'ютера. Додаткову інформацію дивіться у розділі Сертифікати .

Тепер перевантажте vsftpd і неанонімні користувачі будуть використовувати FTPS:

Sudo service restart vsftpd

Щоб дозволити користувачам з оболонкою /usr/sbin/nologin отримати доступ до FTP , але не надавати доступ до shell, відредагуйте /etc/shells, додавши до оболонки nologin:

# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh / usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

Це необхідно, оскільки за умовчанням vsftpd використовує авторизацію PAM, а файл налаштувань /etc/pam.d/vsftpd містить:

Auth required pam_shells.so

Модуль PAM shellsобмежує доступ до оболонок, наведених у файлі /etc/shells.

Найбільш популярні клієнти FTP можуть бути налаштовані використання FTPS. FTP клієнт командного рядка lftp також може використовувати FTPS.

Це можливість передавати файли за допомогою file transfer protocol. Він використовується для зручного обміну файлами по провідній та бездротовій місцевій мережі. Цим локальний сервер може бути корисним як у роботі, так і в домашніх умовах. З використанням Ubuntu, FTP-сервер ще зручніший, оскільки вимагає мінімум сил і ресурсів для налаштування та використання.

На базі Ubuntu можна встановити ftp-сервер.


Протокол обміну файлами особливо часто використовують для передачі власних ресурсів на сервери в інтернеті, а також між довіреними комп'ютерами. Добре відомі клієнти FTP для Windows, наприклад, FileZilla, націлені на взаємодію двох комп'ютерів, обмін даними між якими максимально простий та керований.

Протокол будується на основі клієнт-серверної логіки. Це означає наявність двох технічних сторін - клієнта (чиї потреби обслуговуються) та сервера (який обслуговує потреби). Підключення до сервера може виконуватись як за допомогою відкритої аутентифікації (логін та пароль), так і анонімно (якщо підтримується). Попри це протокол ФТП слабкий щодо захисту, особливо за стандартами сьогодення. Однак у Ubuntu встановлення FTP може включати деякі додаткові стандарти захисту.

Переходимо до практики. Демон Profpd

Щоб установка FTP-сервера Ubuntu пройшла вдало, ми використовуємо так званий «демон». Це програма, яка дозволяє виконувати рутинні завдання, будучи запущеною на тлі. Демон, який потрібен для FTP на Ubuntu – Proftpd. Його установка виконується простою командою в Терміналі:

"sudo apt-get install proftpd".

Після завершення інсталяції потрібно оновити конфігурацію сервера та змінити базові установки. Це допоможе конфігурувати процес входу на сервер. Усі необхідні зміни потрібно вносити у файлі /etc/proftpd/proftpd.conf. Його можна одразу відкрити за допомогою редактора nano.

Отже, налаштування FTP-сервера Ubuntu розпочалося. Насамперед, змінимо 2 потрібні параметри.

У кінець файлу необхідно додати рядок:

"AuthUserFile /etc/proftpd/ftpd.passwd"

Саме в цьому документі, який ми запропонуємо додати пізніше, будуть зберігатися основні параметри входу. Забираємо символ коментаря з рядка "DefaultRoot" - "#". Тепер перейдемо до виправлення файлу /etc/shells. До нього потрібно додати рядок "/bin/false". За допомогою цих команд ви зможете додавати нових користувачів до існуючої групи:

"addgroup ім'я_користувача група", якщо вставити "ім'я_користувача" = "ftp" і "група" = "www-data", то стає можливим працювати з файлами у "власності" сервера.

Крім того, установка FTP-сервера Ubuntu передбачає команду "change owner": "chown-R ftp: www-data". З її допомогою можна зробити власником файлів користувача FTP. Групі користувачів www-data буде надано груповий доступ до документів. Коли всі налаштування будуть завершені, просто перезавантажте сервер:

"sudo /etc/init.d/proftpd restart"

Тепер потрібно настроювати віртуальні облікові записи користувачів. Це необхідно робити за такою схемою:

"ftpasswd -passwd -file=/etc/proftpd/ftpd.passwd -name=(ім'я користувача) -shell=/bin/false -home=/var/www/html -uid=(ID користувача, можна дізнатися за командою " id ftp») -gid=(ID групи, допустимо для групи «www-data» – 33)

sudo nano /etc/dhcp3/dhcpd.conf

У нього треба записати таке:

Ім'я домену (внутрішнього).
option domain-name "ім'я_домену";
#DNS сервер на ПК, що підключається.
option domain-name-servers IP_адреса;
#З цього рядка потрібно прибрати коментар «#».
authoritative;
#бажані дані підмережі для сервера.
subnet 192.168.0.0 netmask 255.255.255.0 (
#Діапазон видачі адрес.
range IP_адреса IP_адреса;
#Роутер із виходом в інтернет. option routers IP_адреса;
#Файл, що завантажується при початковому завантаженні в мережі.
filename = "tftp/pxelinux.0";

Тепер залишилося лише перезавантажити DHCP-сервер:

"sudo /etc/init.d/dhcp3-server restart".

Як бачите, налаштування FTP-сервера Ubuntu не потребує спеціальних технічних навичок. Крім того, вона досить проста у виконанні для кожного, хто працював у Linux.

На завершення

У цій статті ми детально та детально розглянули, як встановити FTP-сервер на Ubuntu, а також приділили увагу налаштуванню сервера TFTP. Ці інструменти - чудовий зразок того, наскільки Убунту гнучка та функціональна. Якщо у вас все ж таки з'явилися питання щодо її використання та налаштування - не соромтеся ставити їх у коментарях до цієї статті. Також читайте інші матеріали на сторінках нашого сайту.

F ile T ransfer P rotocol, тобто FTP – протокол передачі файлів і, як відомо з повної назви, призначений передачі файлів між віддаленими комп'ютерами через мережу. Незважаючи на те, що сам протокол FTP є на сьогоднішній день не найдосконалішим через те, що дані, що передаються, не шифруються, однак це не робить його застарілим. До того ж до FTP можна використовувати криптографічний захист на основі протоколу SSL, що і робить FTP гідним інструментом для передачі файлів.

Оскільки FTP працює за схемою клієнт-серверної взаємодії, то вміла і надійна реалізація протоколу (та й взагалі системи) може забезпечити йому надійний захист, високу швидкість і, як наслідок - популярність, що і можна спостерігати на сьогоднішній день, адже більшість великих проектів , таких як ftp.gnu.org , ftp.suse.com , ftp.redhat.com , ftp.gnome.org і т. д. використовують для поширення програмного забезпечення зі своїх серверів саме FTP. Слід зазначити, що такий популярністю FTP зобов'язаний, переважно, однієї зі своїх численних реалізацій - vsFTPd. Це FTP-сервер, що підтримує роботу з найсучаснішими технологіями захисту даних - SSL і IPv6, його реалізація поєднує в собі високу надійність, стабільність, швидкість роботи і передачі даних, а також гнучке настроювання роботи сервера і широкий функціонал. Розробником vsFTPd є Кріс Еванс – професійний дослідник у сферах захисту даних та інформаційної безпеки. vsFTPd є FTP-сервером за замовчуванням практично у всіх Linux-системах, оскільки, як уже згадувалося, крім надійності та високої швидкості роботи, має великі функціональні можливості, найзначнішими з яких є:

  1. Робота із віртуальними користувачами.
  2. Робота з віртуальними IP-адресами.
  3. Налаштування користувачів.
  4. Підтримка
  5. SSL-шифровані для захисту даних, що передаються.
  6. Контролює смугу пропускання.

У цій статті розглядається установка і налаштування FTP-сервера на прикладі vsFTPd, який, до речі, є програмним забезпеченням (ПО), що вільно розповсюджується, з відкритим вихідним кодом. Офіційна сторінка проекту: https://security.appspot.com/vsftpd.html.

Установка vsFTPd

Встановити Vsftd у Debian-орієнтованих дистрибутивах Linux дозволяє команда:

$ sudo apt-get install vsftpd

Також корисно буде встановити і простий FTP-клієнт для тестування з'єднання та передачі файлів:

$ apt-get install ftp

Для дистрибутивів на основі RPM-пакетів, CentOS, RedHat:

$ yum install vsftpd $ yum install ftp

Зазвичай після установки демон vsFTPd автоматично запускається, переконатися в цьому можна за допомогою наступних команд:

$systemctl status vsftpd

$ service vsftpd status

Запуск, перезапуск та зупинка сервера:

$systemctl start vsftpd $systemctl restart vsftpd $systemctl stop vsftpd

Для включення демона vsftpd в автозавантаження використовується команда:

$systemctl enable vsftpd

Аналогічно і з командою service.

Якщо vsFTPd використовується у серверних дистрибутивах, у яких часто працює фаєрвол, наприклад ufw, то ще може знадобитися дозволити використання портів 20 та 21:

$ufw allow 20/tcp $ufw allow 21/tcp

Налаштування vsFTPd

Конфігураційним файлом для установки vsFTPd є файл vsftpd.conf, який зазвичай знаходиться в каталозі etc/. Ознайомитись з його одержимим можна командою cat:

$cat /etc/vsftpd/vsftpd.conf

Про всяк випадок корисно перед редагуванням оригінального файлу налаштувань зробити його резервну копію:

$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup

FTP-сервер vsFTPd передбачає два основні варіанти роботи: з анонімними та авторизованими користувачами. Перший варіант вважається «безпечнішим», але тільки тому, що для забезпечення надійного захисту практично нічого налаштовувати і не потрібно. Але при грамотній організації авторизованого доступу, що передбачає роботу з FTP локальних користувачів системи, можна забезпечити безпеку не гірше, ніж при використанні анонімного доступу.

Настроювання в режимі анонімного доступу

Робота vsFTPd в даному режимі полягає в тому, що дії з файлами на віддаленому сервері виконуються одним за замовчуванням користувачем, наприклад, користувачем з ім'ям « ftp» або « anonymous», при цьому як пароль використовується e-mail.

Щоб увімкнути анонімний доступ по FTP, потрібно у фалі vsftpd.conf визначити значення «YES» для відповідної директиви:

Anonymous_enable=YES

Тепер для управління файлами використовуватиметься певний каталог (зазвичай це /srv/ftp) і певний користувач - зазвичай ftp.

Можна визначити й інше розташування файлів для анонімного доступу FTP, тобто змінити домашню директорію користувача ftp:

$ sudo mkdir /srv/share/ftp $ sudo usermod -d /srv/share/ftp ftp

Якщо потрібно, щоб анонімні користувачі могли ще й завантажувати файли на віддалений сервер, це дозволить зробити директива:

Anon_upload_enable=YES

Тепер можна скопіювати необхідні для анонімного доступу файли до домашньої папки користувача ftp і перезапустити демон vsftpd:

$systemctl restart vsftpd

Зазвичай, цього набору налаштувань достатньо для організації анонімного FTP-доступу. Для перевірки з'єднання можна виконати команду ftp address_host:

$ ftp 127.0.0.1

$ftp localhost

що у разі успішного виконання дасть приблизно такий висновок:

Настроювання в режимі авторизованого доступу

Local_enable=YES

Write_enable=YES

Тепер потрібно перезапустити vsftpd для активації змін:

$systemctl restart vsftpd

Обмеження користувачів у своїх домашніх каталогах

Для визначення користувачів, яким дозволено доступ тільки до свого домашнього каталогу, існують директиви:

Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

Перша включає використання списку користувачів, друга визначає файл, у якому в кожному рядку перераховані користувачі з доступом лише до своїх домашніх каталогів. Якщо при цьому ще вказати директиву:

Chroot_local_user=YES

яка «замикає» в chroot() локальних користувачів і вище своїх домашніх каталогів вони піднятися не зможуть, то в цьому випадку користувачі у файлі vsftpd.chroot_list не будуть обмежуватися своїми домашніми каталогами, на відміну від тих, хто в цей список не внесений.

При розподілі FTP-доступу серед користувачів може виникнути помилка, яка виникає через те, що локальний користувач має права на запис у корені домашнього каталогу, що з міркувань безпеки є неприпустимим. Ця помилка виглядає так:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Найкращим способом виправити цю помилку є вказівка ​​якогось загального кореневого каталогу, куди при підключенні потраплятимуть усі користувачі, маючи доступ лише до своїх домашніх піддиректорій, наприклад:

Local_root=/home

Можна також вимкнути перевірку на запис у домашній каталог для усунення цієї помилки.

Allow_writeable_chroot=YES

Але все ж таки це варто робити лише тоді, коли є чітке розуміння, навіщо це потрібно для конкретної ситуації.

Захист даних за допомогою SSL

Щоб мати можливість шифрувати дані, що передаються, слід налаштувати vsFTPd в режимі FTPS. Це та сама передача даних по FTP, але організована поверх SSL – протоколу. Шифрує та перевіряє дані за допомогою сертифікатів та ключів.

Для включення режиму FTPS необхідно задіяти таку директиву:

Ssl_enable=Yes

За промовчанням у конфігураційному файлі vsftpd.conf також є опції, що визначають сертифікати та ключі, наприклад:

Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Цей сертифікат і ключ необхідно замінити. Для використання FTPS необхідно використовувати сертифікат та ключ. Cгенеровані (або отримані) для конкретного сервера чи комп'ютера.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.