Встановлення та налаштування ftp ubuntu server. Встановлення та налаштування FTP-сервера в Linux. Обмеження входу користувача

Головна / Додатковий функціонал

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.

Оригінал: How to setup and use FTP Server in Ubuntu Linux
Автор: Lubos Rendek
Дата публікації: 28 січня 2013 року
Переклад: А. Кривошей
Дата перекладу: листопад 2013 р.

1. Введення

Практично кожен користувач, який хоча б іноді працює в інтернеті, стикався з FTP. У цьому посібнику детально та покроково описується, як встановлювати FTP-сервер в Ubuntu Linux. Ми покажемо, як встановити його в нормальному та автономному режимах, а також як забезпечити його безпеку. Ми будемо використовувати легкий та ефективний FTP-сервер vsFTPd, призначений для роботи на високонавантажених серверах.

2. Угоди

3. Що таке FTP

Для тих, хто не знайомий з FTP, наведено короткий опис його можливостей. FTP розшифровується як File Transfer Protocol. Назва має на увазі, що цей протокол використовується для передачі файлів або директорій з одного хоста на інший через мережу - як локальної, так і через інтернет.
Головні можливості vsFTPd: налаштування для віртуальних IP, віртуальні користувачі, мережеві або автономні операції, великий спектр налаштувань користувача, регулювання пропускної здатності каналу, налаштування лімітів по IP, підтримка IPv6 і шифрування (за допомогою SSL).

4. Встановлення FTP-сервера в Ubuntu

Як завжди в Ubuntu та системах на її основі, встановлення FTP-сервера виконується однією командою. Відкрийте термінал та введіть:

$ sudo apt-get install vsftpd

Після виконання цієї команди сервер буде встановлений та запущений.

Setting up vsftpd (2.3.5-1ubuntu2) ... vsftpd start/running, process 1891

5. Нормальний та автономний режими роботи FTP

5.1. Автономний режим

За замовчуванням vsftpd запускається в автономному режимі, в якому служба, що запускається на сервері, використовує власний стартовий скрипт, званий демоном. У випадку vsftpd це /etc/init.d/vsftpd. Цей автономний демон у момент старту служби FTP бере керування нею на себе. Демон vsftpd надає адміністратору кілька команд для управління FTP-сервером vsftpd:

startабо stop- використовується для запуску або зупинки сервера ftp.
status- виводить докладну інформацію про стан Вашого FTP-сервера.
restart- це альтернатива послідовності із зупинки та запуску сервера. Якщо сервер зупинено, команда restart запустить його.
reload- ця команда дозволяє перезавантажити та застосувати нові настройки. Її відмінність від restart полягає в тому, що застосування нових налаштувань провадиться без зупинки сервера.
Для запуску, перезавантаження та застосування нових налаштувань використовується утиліта service:

$ sudo service vsftpd start

Такий синтаксис застосовується до виконання всіх команд.

5.2. Нормальний режим

Інший підхід до запуску vsftpd – це нормальний режим, у якому за роботу служби відповідає суперсервер xinetd. Для запуску сервера vsftpd у нормальному режимі необхідно спочатку встановити суперсервер xinetd:

$ sudo apt-get install xinetd

Наведена вище команда встановлює та запускає суперсервер xinetd. У випадку, якщо він у вас уже встановлений, ця команда не потрібна. Далі, створіть файл vsftpd у директорії /etc/xinetd.d/ з таким вмістом:

Service ftp ( disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 10.1.1.10 banner_fail = /etc/vsftpd.busy log_on_success += PID = HOST )

У той же час ви можете змінювати будь-які опції, щоб настроїти суперсервер відповідно до своїх вимог.
Опції, на які варто звернути увагу:
server- введіть у командному рядку "$which vsftpd", щоб дізнатися правильний шлях.
no_access- всі хости з IP-адресами, зазначеними в цій директиві, будуть заблоковані.
banner_fail- тут можна вказати шлях до текстового файлу, вміст якого буде показано будь-яких блокованих IP-адрес.

Ця директива дасть команду FTP-серверу не відкривати жодних портів, повністю перепоручивши їх суперсервер xinetd. Перед тим, як запустити сервер у нормальному режимі, переконайтеся, що демон vsftpd вимкнено:

$ sudo service vsftpd stop

Тепер можна запустити FTP-сервер у нормальному режимі за допомогою команди:

Щоб переконатися в нормальній роботі FTP-сервера, протестуйте та відкрийте порт 21 за допомогою команди netstat:

$netstat-ant | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

6. Створення першого підключення FTP

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

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. За допомогою binary mode до transfer files. ftp > ftp > quit 221 Goodbye.

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

7. Налаштування FTP-сервера

У цьому розділі ми розглянемо деякі основні приклади опцій конфігурації vsftpd.

Примітка: при внесенні будь-яких змін у налаштування FTP-сервера не забудьте скористатися командою restart/reload, щоб активувати їх.

7.1. Налаштування доступу користувача

vsftpd дозволяє залишити лише анонімний доступ, або дозволити користувачам, прописаним у файлі /etc/passwd або у відповідному списку, автентифікуватись.

7.1.1. Анонімний доступ до FTP

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

No_anon_password=YES

7.1.2. Доступ локальних користувачів за FTP

Тепер ваш сервер повинен забороняти будь-який доступ за винятком користувача anonymous. Щоб дозволити авторизуватися всім користувачам, вказаним у файлі /etc/passwd, необхідно змінити значення директиви local_enable у файлі /etc/vsftpd.conf. Її значення за промовчанням - "NO".

Local_enable=YES

Тепер будь-який користувач, вказаний у файлі /etc/passwd, зможе авторизуватись, використовуючи свій пароль.

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. За допомогою binary mode до transfer files. ftp> quit 221 Goodbye.

7.1.3. Список доступу користувачів

Спочатку створимо список доступу сервера vsFTPd. Зазвичай, ви можете задати його в директорії /etc/. Створіть файл із довільним ім'ям та перерахуйте у ньому всіх користувачів, яким ви хочете дозволити або заборонити доступ. Наприклад, давайте створимо новий список із єдиним користувачем "lubos":

Echo lubos > /etc/vsftpd.userlist

Userlist_file=/etc/vsftpd.userlist userlist_enable=YES

Таким чином, всім користувачам, перерахованим у файлі /etc/vsftpd.userlist, буде відмовлено в доступі до FTP-серверу.

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 530 Permission denied. Login failed. ftp>

Щоб дозволити доступ всім користувачам, переліченим у файлі /etc/vsftpd.userlist, установіть значення "NO" для директиви userlist_deny. При цьому ви відкриваєте доступ лише користувачам, перерахованим у /etc/vsftpd.userlist. Кожне ім'я користувача в цьому файлі має розташовуватися на окремому рядку.

7.2. Зміна номера порту

За замовчуванням, будь-який FTP-сервер слухає стандартний порт 21 для автентифікації користувача і порт 20 для передачі даних. vsFTPd не є винятком. Для зміни порту, що прослуховується за замовчуванням, використовується директива listen_port у файлі /etc/vsftpd.conf. Наприклад, для зміни порту на 2121 просто додайте наступну директиву до вашого конфігураційного файлу:

Listen_port=2121

Після цього перезапустіть FTP-сервер.

Однак це застосовується тільки до vsFPTd, що працює в автономному режимі. У випадку, якщо ваш FTP-сервер запущено в нормальному режимі з використанням суперсервера xinetd, і ви хочете змінити порт за замовчуванням на 2121, знайдіть у файлі /etc/services рядок FTP і замініть 21 на 2121, після чого перезапустіть xinetd.

$ sudo service xinetd restart

Тепер, як ви можете переконатись, FTP-сервер слухає порт 2121:

$netstat-ant | grep 2121 tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN

7.3. Інші опції конфігурації

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

max_clients- ця опція задає максимальну кількість користувачів, які одночасно використовують FTP-сервер. 0 означає необмежену кількість користувачів.
max_per_ip- задає максимальну кількість користувачів з однієї IP-адреси.
download_enable- якщо її значення - NO, будь-який запит на завантаження буде відхилено.

8. Висновок

На сьогоднішній день vsFTPd має 125 опцій конфігурації. Це робить його дуже гнучким у налаштуванні та водночас простим у використанні та адмініструванні. Чи хотіли б ви використовувати його вдома, в межах корпоративної мережі, або на віддаленому сервері, ви можете бути впевнені, що vsFTPd повністю задовольнить ваші потреби. Крім того, vsFTPd дозволяє активувати sftp, але це питання ми обговоримо наступного разу.

На цьому уроці ми покажемо вам установку та налаштування VSFTPD на . VSFTPD є абревіатурою від безпечного протоколу передачі файлів Daemon. Це безкоштовний і з відкритим вихідним кодом, швидкий, стабільний, легкий і безпечний FTP – сервер для операційних систем Unix і Linux, встановлених відповідно до GNU General Public License. VSFTPD є одним з найбільш часто використовуваних FTP-серверів для Linux і використовується як FTP-сервер за замовчуванням в деяких з найбільших дистрибутивах, таких як , Fedora, Ubuntu, NimbleX, Slackware і RHEL.

Для того, щоб встановити VSFTPD на вашому сервері Ubuntu 16.04, ви повинні увійти через SSH як користувач root

Ssh [email protected] _address

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

Apt-get update && apt-get upgrade

Все, що вам потрібно зробити, щоб встановити VSFTPD на Ubuntu 16.04 VPS, це виконати наступну команду у вашому терміналі Linux

Apt-get -y install vsftpd

Після того, як його буде успішно встановлено, ми повинні внести деякі зміни до його конфігурації. Відкрийте файл /etc/vsftpd.conf,знайдіть та змініть наступні рядки:

Vim /etc/vsftpd.conf # Контроль анонімного вхід, дозволено чи ні. anonymous_enable=NO # Локальні користувачі для входу в систему local_enable=YES # Набір "write_enable", для того, щоб дозволити зміни до файлової системи write_enable=YES # включити відправку в ASCII (для запобігання завантаженню скриптів і т. д. від злому) # без ризику Осн розміру та скачування у форматі ASCII. ASCII повинен бути # на клієнті в будь-якому випадку. Якщо не вказано, домашній каталог користувача дорівнює кореневому каталогу FTP local_root=public_html

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

Systemctl restart vsftpd

Встановіть VSFTPD на автоматичний запуск під час завантаження системи

Systemctl enable vsftpd

Ви можете знайти список усіх опцій у файлі конфігурації на http://vsftpd.beasts.org/vsftpd_conf.html

Кореневий логін за замовчуванням відключено в VSFTPD з міркувань безпеки. Для того, щоб отримати доступ до свого FTP-серверу, вам доведеться створити нового користувача системи

Adduser FTPUSER

Де FTPUSER – це ім'я користувача, якого ви хочете створити. Вам буде запропоновано ввести новий пароль для нового користувача та кілька додаткових відомостей, таких як повне ім'я користувача, номер телефону тощо. Будь ласка, зверніть увагу, що дуже важливо завжди використовувати для облікових записів. Найкраще використовувати комбінацію літер та цифр і не менше 10 символів.

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

У цьому посібнику розповімо, як встановити FTP сервер на VPS з ОС Ubuntu. Будемо використовувати сервер vsftpd , який вважається найшвидшим та найбезпечнішим FTP сервером для UNIX-систем.

FTPабо F ile T ransfer P rotocol – протокол прийому та передачі файлів у мережі. Використовуючи модель клієнт/сервер та безпеку SSL/TLS, FTP дозволяє користувачам обмінюватися файлами з віддаленими комп'ютерами безпечно, ефективно та надійно, передаючи дані протоколу TCP/IP.

FTP працює подібно до HTTP або SMTP, з єдиною відмінністю, що він відповідальний за безпечну передачу даних від відправника до одержувача, а не веб-сторінки з сервера до користувача або електронного листа через інтернет. У цьому посібнику розглянуто створення FTP сервера на Ubuntu версії 16.04.

Примітка: Поточний посібник базується на версії ОС Ubuntu 16.04. Але ви можете застосувати ті самі кроки створення FTP сервера на Ubuntu 14.04.

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

Sudo apt-get update

Дочекайтеся завершення всіх процесів і ви побачите підтвердне повідомлення:

Потім встановимо демон vsftpd наступною командою:

Sudo apt-get install vsftpd

Ви отримаєте повідомлення, яке вимагає підтвердження, натисніть Yі Enterдля продовження встановлення.

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

Sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Тепер ми можемо переходити до наступного кроку та налаштовувати фаєрвол.

Крок 2 – Дозвіл FTP трафіку на фаєрволі

Щоб дозволити серверу FTP, розгорнутому на ОС Ubuntu взаємодіяти із зовнішнім світом, потрібно налаштувати шлях через фаєрвол. Для початку подивимося, чи включений фаєрвол. Запустіть наступну команду для визначення статусу:

Sudo ufw status

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

Ufw: command not found

Це означає, що фаєрвол не встановлений і можна переходити до наступного кроку.

Якщо на виході будуть показані правила або повідомлення про те, що фаєрвол активний, потрібно визначити, як він оброблятиме FTP-трафік. Давайте зробимо наступне, відкриємо порти 20 та 21 для трафіку FTP; порти 40000-50000 будуть зарезервовані, як діапазон пасивних портів, який зрештою буде встановлено у файлі конфігурації; порт 990 буде використовуватися, коли TLS буде увімкнено. Виконаємо такі команди:

sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 990/tcp sudo ufw allow 40000:50000/tcp

Тепер подивимося на статус:

Результат буде виглядати десь так:

Output Status : active To Action From -- -- -- -- -- -- -- 990 / tcp ALLOW Anywhere 20 / tcp ALLOW Anywhere 21 / tcp ALLOW Anywhere 40000 : 50000 / tcp ALLOW Anywhere 20 / t v6 ) 21 / tcp (v6 ) ALLOW Anywhere (v6 ) 990 / tcp (v6 ) ALLOW Anywhere (v6 ) 40000 : 50000 / tcp (v6 ) ALLOW Anywhere (v6 )

Тепер всі необхідні порти відкриті і доступні для нас і ми можемо перейти до наступного кроку.

Крок 3 – Створення каталогу користувача

На третьому кроці створення Ubuntu FTP сервера потрібно вибрати користувача, який буде підключатися по FTP. Для цього створимо нового користувача, виконавши таку команду:

sudo adduser alex

Запросіть пароль та інші деталі. В ідеалі, з погляду безпеки, FTP має бути обмежений одним спеціальним каталогом. Vsftpd використовує chroot для створення цього захисту. З увімкненим chroot, локальний користувач обмежується його домашнім каталогом (за замовчуванням). Однак може виявитися, що через захист vsftpd, користувач не зможе нічого створювати в каталозі. Ми не прибираємо права на запис у домашньому каталозі, натомість ми зробимо каталог ftp, який поводитиметься як chroot разом із збереженням здатності до запису, що дозволятиме зберігати файли. Використовуйте таку команду для створення каталогу FTP:

sudo mkdir / home / alex / ftp

Встановіть права власності:

sudo chown nobody : nogroup / home / alex / ftp

Нарешті видаліть права на запис:

sudo chmod a - w/home/alex/ftp

Тепер, використовуючи наступну команду, перевірте права доступу:

sudo ls - la/home/alex/ftp

На виході ми побачимо приблизно це:

total 8 dr - xr - xr - x 2 nobody nogroup 4096 Jun 29 11 : 32 . drwxr - xr - x 3 alex alex 4096 Jun 29 11 : 32 . .

На наступному етапі ми створимо файл, що містить каталоги та права доступу до них:

sudo mkdir / home / alex / ftp / files sudo chown alex : alex / home / alex / ftp / files

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

echo "vsftpd sample file" | sudo tee/home/alex/ftp/files/sample. txt

Крок 4 – Налаштування vsftpd

Щоб продовжити встановлення FTP сервера на Ubuntu VPS, нам потрібно налаштувати vsftpd і наш FTP-доступ. У цьому посібнику ми дозволимо одному користувачеві підключатися FTP, використовуючи локальну консоль. Необхідне для цього дво етапне налаштування вже встановлено в конфігураційному файлі ( vsftpd.conf). Спочатку перевірте, щоб налаштування у файлі збігалися з наведеними нижче, :

sudo nano/etc/vsftpd. conf. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable = NO # # Uncomment this allow local users to log in. local_enable=YES. . .

У цьому ж файлі, продовжимо видаляючи # включаємо write_enable:

. . . write_enable=YES. . .

Chroot також розкоментуємо, щоб переконатися, що користувач, що підключився по FTP, має доступ до файлів усередині дозволеної директорії:

. . . chroot_local_user=YES. . .

Декілька нових значень будуть також потрібні для додавання вручну. Ви можете просто вставити їх у кінець файлу. На початку, user_sub_tokenдодамо до шляху каталогу local_root. Це дозволить конфігурації працювати з поточним користувачем та будь-яким іншим користувачем, який буде додано пізніше:

user_sub_token=$USER local_root=/home/$USER/ftp

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

pasv_min_port = 40000 pasv_max_port = 50000

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

userlist_enable=YES userlist_file=/etc/vsftpd. userlist userlist_deny = NO

Прапор userlist_denyвідповідає за перемикання логіки, коли він встановлений у “NO”, тільки користувачі, які є у списку має доступ. Після завершення натисніть CTRL+Xта підтвердьте збереження змін у файлі.

На завершення, продовжимо створення та додавання нашого користувача до файлу:

echo "alex" | sudo tee-a/etc/vsftpd. userlist

Перевіримо, що користувач дійсно активний запуском команди:

cat/etc/vsftpd. userlist

Висновок має бути “ alex”, як показано на скріншоті:

Перезапустіть демона, використовуючи наступну команду, щоб запустити зміни налаштувань:

sudo systemctl restart vsftpd

Крок 5 – Робимо захищений FTP

За замовчуванням, FTP не робить жодного шифрування даних, тому ми будемо використовувати TLS/SSL, щоб дбати про безпеку. Як перший крок нам потрібно створити SSL сертифікат і використовувати його для захисту Ubuntu FTP сервера. Для початку виконаємо таку команду:

Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Прапор – daysробить сертифікат чинним протягом року і ми включаємо 2048-бітний приватний ключ RSA у цій же команді. Коли запитує потрібні дані, введіть їх у наданому полі.

Після створення сертифіката ще раз відкрийте конфігураційний файл:

Sudo nano /etc/vsftpd.conf

Наприкінці файлу є рядок з “ _rsa”. Закоментуйте ці два рядки:

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

Натомість ми направимо конфіг файл на сертифікат, який ми створили. Додайте такі рядки:

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

Тепер ми включимо SSL і переконаємося, що лише користувачі з увімкненим SSL можуть з нами зв'язуватися. Змініть значення ssl_enableна YES:

ssl_enable = YES

Тепер додайте наступні рядки для продовження створення захисту (це заборонити будь-які анонімні з'єднання з використанням SSL):

Allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES

Налаштуйте TLS за допомогою:

Ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO

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

Require_ssl_reuse=NO ssl_ciphers=HIGH

Зробимо ще раз перезапуск, для набуття змін чинності:

Sudo systemctl restart vsftpd

Прекрасно! Ось ви і налаштували FTP сервер на вашому Ubuntu VPS для роботи з протоколом SSL/TLS.

Крок 6 – Перевірка підключення за допомогою FileZilla

Сьогодні FTP клієнти підтримують налаштування шифрування TLS, тому це чудова можливість перевірити, чи працює наш Ubuntu FTP сервер як слід. Щоб перевірити з'єднання, використовуватимемо . Для початку запустіть FileZilla, натиснувши на іконку Site Manager.

Натисніть на кнопку New Siteу вікні, почніть заповнювати дані про Ubuntu FTP сервері.

Заповніть необхідні поля інформацією про нещодавно створений Ubuntu FTP сервер. Так як ми налаштували його з використанням TLS, ми можемо відзначити налаштування шифрування в “ explicit FTP over TLS”становище. Остаточне вікно налаштувань виглядає так:

Як тільки налаштуйте, натискайте Connectі з'явиться вікно із запитом для введення пароля користувача FTP.

Насамкінець вам потрібно буде підтвердити SSL сертифікат на вашому FTP сервері на Ubuntu VPS.

Після підтвердження, кореневий root-каталог із тестовим файлом з'являться на вашому екрані.

Це все! Тепер ви можете робити будь-яку передачу файлів з вашого комп'ютера на Ubuntu FTP сервер і назад.

Висновок

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

Настав час організовувати файлове сховище, як усередині мережі, так і зовні. Ця стаття є продовженням першої частини, присвяченої настроюванню WiFi роутера на Вашому домашньому сервері. Всі жорсткі диски з Вашого домашнього комп'ютера (крім системного) можна перенести на сервер, оскільки швидкість передачі цей коливається в районі 10-20 мегабайт в секунду [даний параметр ще й дуже залежить від моделі Вашого жорсткого диска], та й до речі, давно вже час для системного диска купувати SSD накопичувачі.

FTP-сервер.
Існує безліч ftp серверів для linux, багато хороших, багато поганих, але є найкращий [природно, що це суб'єктивна думка, і найкращий він для мене] і це vsftpd. Його ми й розглядатимемо.
Завантажити його можна зі стандартних репозитаріїв OpenSUSE, Виконавши в терміналі команду:
zypper in vsftpd
Тепер перейдемо до опису. Це консольний ftp server, у нього немає GUI [графічна оболонка], тому все налаштування відбувається в одному конфізі, за адресою /etc/vsftpd.conf.
Ось приклад робочого конфігу:
#дозволяємо будь-які форми запису на FTP сервер write_enable=YES #дозволяємо можливість відображення повідомлень про переходи з папки до #папки. dirmessage_enable=YES #вибираємо користувача БЕЗ всяких привілеїв (read-only) nopriv_user=ftpsecure #дозволяємо локальних користувачів (локальні користувачі - це ті, #які зареєстровані в системі, тобто на них є облікові записи) local_enable=YES #запхуємо локального користувача chroot. chroot_local_user=YES #заборона анонімного входу на сервер anonymous_enable=NO #включаємо логування syslog_enable=YES #дозволяємо приєднатися по 20му порту connect_from_port_20=YES #дозволяємо аплоадити папки з кирили назва PAM сервісу в системі pam_service_name=vsftpd #можливість роботи в автономному режимі listen=YES #забороняємо SSL аутентифікацію ssl_enable=NO #рейнж портів для режиму PASV. pasv_min_port=30000 pasv_max_port=30100 #приведення при заході на ftp-server ftpd_banner=Welcome to my ftp-server #час, через скільки користувача кікнуть з сервера при його бездіяльності idle_session_timeout=900 #максимальна кількість максимальна кількість ip адреси max_per_ip=3 #дозвіл режиму PASV(пасивний режим) pasv_enable=YES #маска дозволяючих привілеїв для локальних користувачів. local_umask=0002
У наведеному вище конфізі немає проблем розподілу прав доступу окремим користувачам, окремих папок. Все досить просто і лаконічно, налаштував один раз і користуєшся. Vsftpd був обраний, тому що у нього найкраща система налаштування прав доступу, яка поділяється на два види: внутрішня, системна автентифікація та зовнішня, з окремим конфігураційним файлом для розподілу прав доступу, але при цьому користувачі також беруться з системи.

У даному прикладі і користувачі, і розподіл прав доступу цих користувачів береться з системи, додатковий конфіг-файл не використовується.

Рисунок 1. Виставлення прав
На цьому, власне, все.

Samba.
Хочете завжди мати під рукою файлове сховище всіх колекцій та іншого з ноутбука, з домашнього комп'ютера, з телефону, з планшета? Поїхали.

Спочатку, при стандартній установці системи OpenSUSE все, що потрібно для встановлення та налаштування samba на сервері вже встановлено. Тому перейдемо безпосередньо до настроювання. Оскільки доступ з-під ОС Windows як «Підключення мережного диска» буде доступний тільки всередині Вашої локальної мережі [для інтернету є ftp сервер, та й до того ж, вивішувати самбу в інтернет вкрай не безпечно, а ми ж, - «ЗА СЕК'ЮРНІСТЬ! !! УРА!»] тому налаштування будуть вкрай банальні та прості у розумінні. Є два [відомих мені і адекватних на мій погляд] налаштування самби, це через, той самий, конфігураційний файл і за допомогою утиліти - WebMin. Це дико-крута штука, особливо для тих, хто не любить колупати конфіги [але і тут є свої нюанси]. У цій статті не будемо зупинятись на засобах " для лінивих", тому продовжуємо. Ми будемо розглядати робочий конфіг файл. Знаходиться він за адресою: /etc/samba/smb.conf. Ось він:
# Вказуємо ім'я користувача. guest account = nobody # Вказуємо ім'я netbios name = homeserver # Включаємо можливість прав "write" writeable = yes # Додаткова опція, що прибирає затримку. socket options = TCP_NODELAY IPTOS_LOWDELAY # При необхідності, вказуємо робочу групу, де будуть комп'ютери # (абсолютно не обов'язковий параметр) workgroup = HOMENET # Вибираємо інтерфейси, на які "прослуховуватиме" самба. # (також, необов'язкова опція, за замовчуванням, будуть прослуховувати всі інтерфейси) interfaces = eth1 wlan0 # Вдома безпека особливо не потрібна. security = share public = yes # Дозволяємо гостя guest ok = yes # Тільки гість? Так. guest only = yes # Шлях до публічної папки path = /cifs/pub # Не забороняємо запис. read only = no # Також, якщо цікавить можливість доступу до CD-ROM", то вставте # в конфіг самби наступні опції: fake oplocks = yes guest ok = yes guest only = yes path =
Також, додаткове налаштування можна виконати через вбудований в YaST GUI samba.

Того користувача, що ми вказали на початку конфігу, в даному прикладі це користувач nobodyнеобхідно створити безпосередньо в системі. Задати йому необхідні права (вдома, має сенс поставити повні права, створення, видалення, редагування всіх файлів і папок (тобто права 777). Також, якщо Ви зіткнетеся з ситуацією, коли з якоїсь причини стане неможливим видалення/ створення файлів в будь-якій папці на сервері, то виконайте команду:
chmod 777-R/path
Розберемо її, про всяк випадок:
chmod- команда встановлення прав.
777 - Власне права, в буквеному позначенні означають rwx, rwx, rwx - права читання, запис, виконання для власника, групи (де власник), всіх.
-R- ключ рекурсії, щоб команда виконалася як для тієї папки(і файлів, що у ній), що Ви вказали в /path, але і для всіх підпапок і файлів у них теж.
/path- шлях до папки, яку необхідно встановити права. Аналогічна команда відповідає серверу FTP, якщо виникли схожі проблеми. Так, і треба обмовитися, що якщо виникають подібні проблеми, то, швидше за все, проблема криється в користувачах створених у системі, а точніше в правах, виданих на використання їх домашніх директорій.

rTorrent.
Напівавтоматизований торент клієнт.
Насправді, це звичайний торент клієнт, але, можливості налаштування якого, дуже багаті на різноманітність. Зараз ми з Вами розберемо одну дуже корисну функцію клієнта. Уявіть, Ви вже налаштували самбу на Вашому домашньому сервері, файлове сховище, що знаходиться на сервері, підключена до Вашого комп'ютера як Мережевий Диск, Ви відкриваєте Ваш мережевий диск, відкриваєте папку torrents, там відкриваєте папку music і переміщаєте туди всі торрент файли з музикою, які Ви хочете скачати і ... все, лягайте спати. На ранок вже будуть завантажені та перевірені хеші всіх торентів, що Ви туди поклали (тут звичайно все залежить від того скільки торентів Ви хочете завантажити, яка у них вага та яка ширина Вашого інтернет каналу). Подобається? От і я балдію вже як півроку, від цієї функції.
Давайте розумітися.
Вам потрібно встановити rtorrent, виконуємо наступну команду в терміналі:
zypper in rtorrent
Після того, як Ви завантажили та встановили торрент-клієнт rtorrent, необхідно зробити налаштування клієнта. Налаштування програми здійснюється за допомогою конфігураційного файлу .rtorrent.rc, що розміщується в домашньому каталозі користувача. (За замовчуванням файл.rtorrent.rc відсутній. Його потрібно створювати самостійно. Наводжу приклад із докладними коментарями робочого конфігу:
#обмін бенкетами? Так! peer_exchange = yes #мінімальна кількість бенкетів на торрент min_peers = 1 #максимальна кількість бенкетів на торрент max_peers = 1000 #максимальна швидкість завантаження download_rate = 0 #максимальна швидкість віддачі. 1 - не обмежена upload_rate = 0 #каталог для збереження завантажень або звідки сидітимуться торренти. directory = /files/torrents #каталог, куди буде зберігатися стан торентів. #Тут, в цьому прикладі, вони зберігаються в папку session session = /files/torrents/session/ #rtorrent кожні 5 секунд перевіряє цей каталог на нові *.torrent #файли #і якщо вони є то ставить їх на завантаження #schedule = watch_directory ,5,5,load_start=/home/user/torrent_auto_load/ #перевіряє каталоги на нові *.torrent файли та зберігає завантаження в #відповідні папки schedule = watch_directory,5,5,"load_start=/files/torrents/music/*. torrent,d.set_directory=/files/music" schedule = watch_directory_2,5,5,"load_start=/files/torrents/video/*.torrent,d.set_directory=/files/video" schedule = watch_directory_3,5,5, "load_start=/files/torrents/video/serial/*.torrent,d.set_directory=/files/video/serial" schedule = watch_directory_4,5,5,"load_start=/files/torrents/progs/*.torrent,d .set_directory=/files/progs" schedule = watch_directory_5,5,5,"load_start=/files/torrents/games/*.torrent,d.set_directory=/files/games" schedule = watch_directory_6,5,5,"load_start= /files/torrents/unsorted/*.torrent,d.s et_directory=/files/unsorted" schedule = watch_directory_7,5,5,"load_start=/files/torrents/doc/*.torrent,d.set_directory=/files/doc" schedule = watch_directory_8,5,5,"load_start=/ files/torrents/doc/books/*.torrent,d.set_directory=/files/doc/books" #Видалення торрент-файлів з директорії music(бо в даному #прикладі, папка music йде як "directory"(#1) , які вже завантажені. schedule = untied_directory,7,5,remove_untied= #номер порту (або декількох портів) який відкриває клієнт для #обміну даними port_range = 40890-40890 #випадковий вибір порту для обміну даними. В даному випадку він #відключений port_random = no #перевіряти хеш торрента після закачування check_hash = yes #зберігати сесію session_save = yes #приймати зашифровані вхідні з'єднання, встановлювати #незашифровані вихідні з'єднання, #якщо повертає помилку, повторювати з . встановлення #зашифрованого з'єднання encryption = allow_incoming,enable_retry,prefer_plaintext #використати udp use_udp_trackers = yes


Рисунок 2. Головне вікно програми rTorrent

Власне, і все. Далі хитрий прийом - відкриваємо консоль і пишемо (можна і по ssh зайти на сервер):
screen rtorrent
Далі, в терміналі відкриється торрент-клієнт, там Ви можете його налаштувати і налагодити додатково. Тепер натискаємо чарівні комбінації клавіш Ctrl+A, потім Ctrl+D і консоль радісно Вас повідомить, що:


Рисунок 3. "Заскринювання" процесу програми rTorrent.

Це говорить про те, що процес Вашого торрент-клієнта «закрінін», тобто виконується, але його не видно. Для тих, адептів, кому завжди, все цікаво, може прочитати ось тут про дану утиліту обтяжувати голову такими речами (хоча вони дуже цікаві і пізнавальні, і застосовуються часто) примусово я не хочу.
Якщо Вам знадобилося по-новому відкрити клієнт, пишемо:
screen -r
ВАЖЛИВО: Якщо Ви хочете запускати торрент-клієнт під рутом (root, тобто через команду sudo), необхідно конфіг файл створювати в кореневому каталозі користувача root, а також, screen -r необхідно виконувати також, під тим самим користувачем, під яким Ви її «заскринили».
Таким чином, у Вас у фоні завжди буде висіти торрент-клієнт, який качатиме і роздаватиме рівно стільки, скільки працюватиме Ваш сервер.

На цій «важливій» ноті я хочу закінчити цю статтю. Дякуємо за увагу, і так, користуйтеся пошуковою системою Google, він молодець!

Якщо помилився топіком, підкажіть куди перенести.

© 2022 androidas.ru - Все про Android