Як я vsftpd налаштував

У зв'язку з недавніми подіями популярного поштового сервісу, який зберігав особисті файли користувачів у вільному доступі, я вирішив налаштувати FTP сервер для своїх потреб, - щоб знайомі могли безпосередньо мені передавати файли і завантажувати їх. Ні, тим сервісом я не користувався і давно зарікся не довіряти третім особам нічого зайвого, однак, якщо не свій особистий FTP, то коткто що? Звичайно OpenSSH, але чи будете ви кожному знайомому людині пояснювати, що потрібно для цього скачати / встановити, чи все ж просто повідомте посилання на свій FTP? Так само, консольний ftp-клієнт є «з коробки» навіть в Windows (якщо ви розумієте, про що я).

Все відбувається на локалхосте (тобто, на домашньому комп'ютері), тому обов'язковою умовою є наявність зовнішнього IP. І Linux. Звичайно ж Linux, куди ж без нього ...

I. Чому і навіщо?

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

Не маю нічого проти anonymous-користувачів, - нехай, буду викладати на паблік всілякі дурниці. Щоб не відчувати дискомфорт, для anonymous будуть жорсткі обмеження на зразок швидкості 16Кбайтам / секунду.
anonymous зможуть заливати файли на сервер в окрему директорію.
Порушувати структуру FHS не буду, тому anonymous потрапляють в директорію / srv / ftp. і в ній, вже дотримуючись традицій, створюю дві директорії для завантаження і віддачі файлів.

mkdir / srv / ftp /
chown root: ftp / srv / ftp /
chmod g + w / srv / ftp / incoming

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

/ Downloads (яка так само використовується іншими програмами).
Вважаю ви здогадалися. що ці користувачі на сервері - ті самі знайомі, яким я хочу надати вільний доступ до файлообміну.
У неї вони можуть вільно завантажувати, завантажувати файли з необмеженою швидкістю. І мені не потрібно нічого зайвий раз милицях з правами і вигадуванням нових директорій. Все завантаження, - браузер, торрент, фтп, - все лежить в одному місці. Зручно.

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

Усе? Більше ніяких екзотичних побажань немає? Тоді почнемо.

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

vsftpd is the default FTP server in the Ubuntu, CentOS, Fedora, NimbleX, Slackware and RHEL Linux distributions.

II. установка

Розповідати про установку зайвий раз не стану, в кожному дистрибутиві свій пакетний менеджер, і про три заповітні команди ./configure make su -c "make install" ви і так багато чули ... vsftpd у вас встановлений.

Для багатьох користувачів може бути звичним запускати програму, жмякайте кнопочки і розставляти галочки для управління користувачами і правами на директорії / файли.
У випадку з vsftpd є лише базові настройки сервера, а права на файли - реальні права, які встановлюються через chmod. Тому наприклад, щоб дозволити користувачам завантажувати файли на сервер, вам відповідно потрібно просто дозволити запис в директорію стандартними засобами. У vsftpd ви лише тільки включаєте функцію, що файли можна завантажувати на сервер, а в яку директорію, який користувач може завантажувати - це встановлюється стандартними chmod / chown. Так, для ясності.

III. Базова настройка

Включаємо роботу сервера в режимі самостійного демона, без всяких inetd, і ведення логів (по-замовчуванню /var/log/vsftpd.log)

Включаємо 20 порт для обміну безпосередньо даними через команду PORT, і обмежуємо кількість одночасних з'єднань.

Ховаємо користувачів в системі, так, що при лістингу директорій ім'я / група всіх об'єктів буде просто іменуватися ftp. а не мати id реального власника цього об'єкту, і включаємо можливість завантажувати файли на сервер - для цього ми його і налаштовуємо, же.

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

Все, наша система з такими настройками в безпеці.

IV. користувачі

І тепер-то налаштуємо наших віртуальних користувачів на сервері.
Зазначимо директорію, де буде лежати персональний конфиг кожного такого користувача.

username
password
spoofing
blahblahblah
root
toor

Пробуємо через curl --ftp-ssl завантажити файл

Перевіряємо файл в / home / spoofing / Downloads

Схожі статті