Можливості vsftpd і приклади їх використання
У цій статті я детально опишу можливості використання VSFTPD.
VSFTPD - FTP сервер є безпечним, ефективним, стабільним, повністю готовим і
перевіреним рішенням в світі FTP серверів.
Поєднуючи функціональність з безпекою, він все більше привертає до себе увагу,
підтвердженням тому служить (неповний) список проектів довірили йому свої сервера:
* ftp.debian.org
* ftp.freebsd.org
* ftp.suse.com
* ftp.openbsd.org
* ftp.gnu.org
* ftp.kernel.org
* ftp.gnome.org
* ftp.gimp.org
* rpmfind.net
* ftp.linux.org.uk
* ftp-stud.fht-esslingen.de
* gd.tuwien.ac.at
* ftp.sunet.se
* ftp.ximian.com
* ftp.engardelinux.org
* ftp.sunsite.org.uk
* ftp.isc.org
* ftp.redhat.com
* ftp.kde.org
Розробник Chris Evans, будучи професійним дослідником в області інформаційної
безпеки, який знайшов достатню кількість вразливостей в інших програмах
www.scary.beasts.org/security. не забув при цьому подбати про посилення безпеки
свого продукту. При цьому йому вдалося сильно розширити можливості VSFTPD, наділивши його
такими функціями як:
Випуски нових версій трапляються не так часто, тому як повідомлення про помилки залишаються дуже
рідкісним явищем для VSFTPD.
Наприклад в Debian GNU / Linux, програмний пакет встановлюється однією командою:
apt-get install vsftpd.
Після установки слід звернути увагу на файли документації в каталозі / usr / share / doc / vsftpd,
каталог EXAMPLE вже містить різні приклади конфігураційного файлу vsftpd.conf. також буде
корисно подивитися man vsftpd.conf - в цьому мане докладно розписуються всі можливості програми.
Єдиний недолік (а можливо перевага) керівництва, в тому що воно написано англійською
мовою, в кінці цієї статті я додав український переклад цього керівництва.
Сама програма розташовується в каталозі / usr / sbin / vsftpd, можливо в різних дистрибутивах
файл vsftpd.conf знаходиться в різних місцях, дізнатися його розташування наприклад можна
командою - whereis vsftpd.
У дистрибутиві Debian GNU / Linux, пакет vsftpd розміщує свої файли таким чином:
Як вже стало зрозуміло для роботи сервера необхідно відредагувати конфігураційний файл:
/etc/vsftpd.conf, тож розглянемо це питання більш детальніше.
Файл vsftpd.conf складається з трьох видів опцій:
* BOOLEAN OPTIONS - основні опції, які можуть містити значення: YES, NO;
* NUMERIC OPTIONS - опції містять різні цифрові значення, наприклад час в секундах або
номер порту з'єднання;
* STRING OPTIONS - містять рядок, наприклад шлях до каталогу на диску: / var / run / vsftpd;
Варто зауважити що опції можуть бути відсутні в файлі конфігурації, це означає що
використовується значення задане за замовчуванням, що позначається як «Default:» в man vsftpd.conf.
Багато хто не знаючи цього думають що опції треба вказувати безпосередньо, тому їх конфігураційний
файл виростає до великих розмірів, хоча насправді зазвичай необхідно записати в файл
всього лише кілька рядків, інші настройки прийнятні за замовчуванням і тому не потребують
в додаванні.
Багато установки залежать від інших опцій, якщо ті опції від яких вони залежать відключені,
то настройки не будуть працювати. Деякі опції є взаємовиключними, значить не будуть
працювати в парі з іншими включеними опціями.
1. Конфігурація для завантаження з анонімним доступом, без перевірки пароля.
a) inetd / xinetd.
anonymous_enable = YES
no_anon_password = YES
guest_enable = YES
guest_username = ftp
xferlog_enable = YES
ftpd_banner = Hello.
Можна вказати інший шлях до каталогу з файлами для завантаження (за замовчуванням / home / ftp),
в / etc / passwd, відредагувавши рядок «ftp:» наступним чином:
ftp: x: 107. 65534. / home / diretory / way /. / Bin / false # 40; де / home / diretory / way / - шлях # 41;
Перевірте, чи дозволені вхідні з'єднання в налаштуваннях брандмауера, якщо треба
створіть відповідні правила. Спробуйте підключитися до сервера.
listen = YES
background = YES
anonymous_enable = YES
no_anon_password = YES
guest_enable = YES
guest_username = ftp
xferlog_enable = YES
ftpd_banner = Hello.
Опція listen = YES дозволить VSFTPD працювати самостійно, без допомоги inetd / xinetd.
В цьому випадку необхідно запускати сервер вручну або за допомогою завантажувальних стартових
скриптів. Для запуску необхідно ввести в консолі команду / usr / sbin / vsftpd і FTP буде
запущений в фоновому режимі завдяки опції background = YES.
Якщо сервер призначений для роботи в інтернет, корисно додати деякі обмеження.
anonymous_enable = YES
no_anon_password = YES
anon_world_readable_only = YES
connect_from_port_20 = YES
no_anon_password = YES
hide_ids = YES
pasv_min_port = 50000
pasv_max_port = 60000
xferlog_enable = YES
ascii_download_enable = NO
async_abor_enable = YES
one_process_model = YES
idle_session_timeout = 120
data_connection_timeout = 300
accept_timeout = 60
connect_timeout = 60
anon_max_rate = 15000
Для роботи в інтернет в незалежному від inetd / xinetd режимі
listen = YES
max_clients = 200
max_per_ip = 4
anonymous_enable = YES
no_anon_password = YES
anon_world_readable_only = YES
connect_from_port_20 = YES
hide_ids = YES
pasv_min_port = 50000
pasv_max_port = 60000
xferlog_enable = YES
async_abor_enable = YES
one_process_model = YES
idle_session_timeout = 120
data_connection_timeout = 300
accept_timeout = 60
connect_timeout = 60
anon_max_rate = 15000
Я не буду описувати всі можливі варіанти прикладів конфігурації сервера, тому що на самому
справі їх може бути дуже багато, натомість нижче хочу додати мій переклад man vsftpd.conf,
який був написаний для зручності вивчення можливостей vsftpd, а сьогодні виріс в повноцінний
переклад.
Висловлюю подяку Andrew Clark, який погодився взяти участь в перекладі і вніс
свої корективи.
NAME
vsftpd.conf - конфігураційний файл для vsftpd
змінити місце розташування файлу, через аргументи командного рядка. аргументи командного
рядки це шлях і ім'я конфігураци ційного файлу для vsftpd. Така можливість корисна,
якщо ви побажаєте використовувати покращений inetd, такий як xinetd, для запуску vsftpd з
різними файлами на кожен віртуальний хост.
Формат vsftpd.conf дуже простий. Кожен рядок це коментар чи директива. командні
рядки починаються з символу # ігноруються. Директиви мають формат опція = значення.
Важливим фактом є пробіл між опцією або значенням, що призведе до помилки. кожне
значення за замовчуванням може бути змінено в файлі конфігурації.
listen
Якщо опція включена сервер стартує в незалежному від inetd / xinetd режимі
«Standalone mode». У цьому випадку він сам піклується про прослуховування і
визначенні вхідних з'єднань.
Default: NO
listen_ipv6
Теж саме що listen, за винятком того що vsftpd слухає IPv6 протокол включно.
Цей параметр і listen взаємно виключаються.
Default: NO
background
При включенні, vsftpd стартуючи в режимі listen, працює в фоновому режимі.
Тобто контроль передається тій оболонці в якій був запущений vsftpd.
Default: NO
listen_port
Якщо запущено в standalone mode, вказаний порт прослуховується на предмет
що входять FTP з'єднань.
Default: 21
max_clients
Якщо vsftpd знаходиться в standalone_mode, це максимальна кількість клієнтів,
які можуть бути підключені. Спроби підключення понад зазначеної кількості,
отримають повідомлення про помилку.
Default: 0 (unlimited)
run_as_launching_user
Увімкніть для можливості запуску vsftpd від користувача vsftpd. Це корисно коли root
доступ неприпустимий. Важливе попередження! Не дозволяйте цю опцію якщо ви повністю не
впевнені що ви робите, наївне використання цієї опції може створити безліч проблем
пов'язаних з безпекою. Особливо, vsftpd не може використовувати chroot технологію для
розмежування доступу до файлів (навіть якщо при цьому сервер запущений від root). В деякій мірі
можна обмежити доступ за допомогою параметра deny_file, вказавши шаблон заборонених файлів,
такий як. але надійність цього не можна порівняти з chroot, тому не варто покладати на
це великих надій. З використанням цієї опції, також виявляються обмеження в інших опціях.
Для прикладу, в опціях вимагають привілеї, які не анонімні входи, зміна власника закачаних
на сервер файлів, підключення по 20 порту і прослуховування портів менш 1024. Можливо і інші
опції перетинаються з включенням цієї опції.
Default: NO
ПРАВИЛА ДЛЯ АНОНІМНИХ КОРИСТУВАЧІВ
anonymous_enable
Дозволяє або забороняє вхід анонімних користувачів. Якщо дозволено, користувачі
з іменами ftp і anonymous розпізнаються як анонімні користувачі.
Default: YES
anon_max_rate
Максимальна допустима швидкість передачі даних для анонімних
користувачів, виражена в байтах
в секунду.
Default: 0 (unlimited)
anon_root
У цьому рядку вказується каталог, в який vsftp буде переводити
анонімних користувачів після входу. При невдачі просто ігнорується.
Default: NO
no_anon_password
Якщо опція встановлена, vsftp не питає пароль у анонімних
користувачів, дозволяючи їм підключатися відразу.
Default: NO
anon_mkdir_write_enable
Включення цієї опції, дозволяє анонімним користувачам створювати нові каталоги в
відповідно до визначених для цього умовами. Для того щоб це працювало опція
write_enable повинна бути включена, і анонімний користувач повинен мати права на
запис в цьому каталозі.
Default: NO
anon_other_write_enable
Якщо вибрано YES, анонімні користувачі можуть виконувати операції запису відмінні від
завантаження на сервер і створення каталогів, такі як видалення і перейменування. це зазвичай
не рекомендується, але все таки така можливість присутня для повноти.
Default: NO
anon_upload_enable
Включення цієї опції дозволяє анонімним користувачам завантажувати файли на сервер, в
відповідно до визначених для цього умовами. Для того щоб це працювало опція
write_enable повинна бути активована, і анонімний ftp користувач повинен мати права
на запис в каталозі для завантаження. Включення опції також необхідно для надання
можливості завантажувати на сервер файли віртуальним користувачам; за замовчуванням віртуальні
користувачі мають однакові привілеї з анонімними користувачами
(Тобто максимально обмежені привілеї).
Default: NO
anon_world_readable_only
При включення цієї опції, анонімним користувачам буде дозволено завантажувати тільки
видимі ними зі світу файли. Передбачається корисним, якщо користувачі можуть завантажувати
на сервер і зберігати на ньому власні файли.
Default: YES
guest_enable
Якщо опція включена, підключення всіх не анонімних локальних користувачів
розглядаються як «гостьові» ( «guests»). «Гостям» призначаються параметри
указвают в опції guest_username.
Default: NO
guest_username
Опція містить ім'я «гостьового» користувача, що визначає його
домашню директорію.
Працює при включеній guest_enable.
Default: ftp
email_password_file
Ця опція може бути використана для надання альтернативного шляху файлу
використовуваного secure_email_list_enable опцією.
Default: /etc/vsftpd.email_passwords
anon_umask
Значення накладається маски на створювані анонімними користувачами файли.
Зауваження! Якщо ви вирішили вказати цифрове значення, треба пам'ятати про
нульовому «0» префікс, інакше значення буде розглянуто як десятизначні.
Default: 077
ftp_username
Ім'я призначається анонімним користувачам. користувачі з
призначеним іменем прив'язані до свого домашнього каталогу, який
є кореневим каталогом анонімного простору FTP.
Default: ftp
ПРАВИЛА РОБОТИ З КОРИСТУВАЧАМИ
local_enable
Дозволяє або забороняє вхід для локальних користувачів. якщо включено
звичайні для користувача акаунти в / etc / passwd можуть бути використані для входу.
Повинно бути включено для вирішення будь-яких не анонімних входів, включаючи вхід
віртуальних користувачів.
Default: NO
local_root
Ця опція вказує каталог в який vsftpd повинен перевести користувача після
локального неанонімних входу. У разі невдачі просто ігнорується.
Default: (none)
user_config_dir
Ця опція дозволяє задавати додаткові параметри щодо до окремих
користувачам. Наприклад якщо в user_config_dir вибрати / etc / vsftpd_user_conf, тоді
вхід користувача "chris», означає що vsftpd буде використовувати налаштування
з конфігураційного файлу / etc / vsftpd_user_conf / chris
для цієї сесії. Зверніть увагу, не всі настройки застосовні
до окремих користувачів, наприклад listen_address, banner_file,
max_per_ip, max_clients, xferlog_file, і інші.
Default: (none)
chroot_local_user
Якщо вибрано локальні користувачі будуть (за замовчуванням) перенесені в chroot () «ув'язнення»
в їх домашньому каталозі після входу. Увага: ця опція має сенс бути включеною з
міркувань безпеки, особливо якщо користувачі мають права дозволяють завантаження
файлів на сервер, або shell доступ. Включати тільки якщо ви дійсно впевнені що
знаєте навіщо вам це потрібно. Зауважимо що ця опція безпеки в системах класу unix,
характерна не тільки для vsftpd, використовується і в інших FTP серверах.
Default: NO
passwd_chroot_enable
Працює при включеному параметрі chroot_local_user. користувачі
поміщаються в свої домашні директорії, які вказані в файлі / etc / passwd.
Точне вказівку шляху /./ вказує що користувач буде переміщений при вході
в директорію в цьому шляху.
Default: NO
chroot_list_enable
Якщо включити, ви можете використовувати список локальних користувачів розміщені в
chroot () ув'язнення в їх домашньому каталозі після входу. Якщо використовується совме