Bog BOS: FTP-сервер vsftpd: установка, настройка і використання
Bog BOS: FTP-сервер vsftpd: установка, настройка і використання
Остання зміна файлу: 2008.06.26
Скопійовано з www.bog.pp.ru: 2019.07.10
Передбачається попереднє знайомство з протоколом FTP .
Сам сервер (/ usr / sbin / vsftpd) має рівно один параметр - ім'я файлу конфігурації.
Файл конфігурації (зазвичай /etc/vsftpd/vsftpd.conf) складається з директив. Кожна директива розташовується на окремому рядку. Рядок, що починається з "#", є коментарем. Директива складається з імені опції і значення, розділених символом "=" без пробілів. Опції діляться на логічні (NO, YES), малі і невід'ємні цілі:
- режими роботи і загальні параметри
- listen NO (автономна робота без inetd / xinetd)
- listen_ipv6 NO
- listen_address
- listen_address6
- listen_port 21 (в автономному режимі)
- ftp_data_port 20
- background NO (перейти в фоновий режим при автономному запуску)
- async_abor_enable NO
- connect_from_port_20 NO (при включенні вихідні з сервера з'єднання виходять з порту 20, при виключенні сервер може працювати з дещо меншими привілеями)
- ascii_download_enable NO
- ascii_upload_enable NO
- one_process_model NO (один процес на користувача замість 2, швидше, але менш безпечно)
- pasv_enable YES (увімкнути режим PASV)
- pasv_min_port 0
- pasv_max_port 0
- pasv_promiscuous NO (не робити перевірок параметрів PASV)
- pasv_address (за замовчуванням, для PASV береться адреса сокета)
- port_enable YES (увімкнути режим PORT)
- port_promiscuous NO (не робити перевірок параметрів PORT)
- run_as_launching_user NO (сервер буде працювати від імені запустив користувача)
- tcp_wrappers NO (змінна VSFTPD_LOAD_CONF в /etc/hosts.allow задає ім'я конфігураційного файлу vsftpd)
- use_sendfile YES (використовувати sendfile () для прискорення роботи)
- nopriv_user nobody (під цим користувачем сервер працює, коли йому не потрібні ніякі привілеї, краще завести спеціального користувача)
- secure_chroot_dir / usr / share / empty (сюди сервер робить chroot, коли йому не потрібен доступ до файлової системи)
- аутентифікація і права входу
- local_enable NO (використовувати / etc / passwd для аутентифікації користувачів)
- userlist_enable NO (користувачі з файлу, заданого опцією userlist_file, не допускаються до запиту пароля)
- userlist_deny YES (якщо задати NO, то будуть допускатися тільки користувачі, зазначені в файлі, ім'я якого задається опцією userlist_file)
- userlist_file (ім'я файлу містить імена заборонених або допустимих користувачів)
- check_shell YES (перевіряти / etc / shells при спробі входу локальних користувачів)
- guest_enable NO (всі неанонімні входи розглядаються від імені гостьового користувача; це дозволяє виробляти аутентифікацію за допомогою PAM (pam_userdb) щодо файлу імен віртуальних користувачів)
- guest_username ftp
- no_anon_password NO (не запитує пароль анонімних користувачів)
- secure_email_list_enable NO (паролі анонімних користувачів задаються у файлі /etc/vsftpd.email_passwords)
- email_password_file /etc/vsftpd.email_passwords (ім'я файлу, що містить паролі анонімних користувачів)
- virtual_use_local_privs NO (віртуальні користувачі матимуть привілеї локальних користувачів замість анонімних)
- pam_service_name ftp
- user_config_dir (дозволяє задавати частина параметрів в залежності від імені користувача; з цього каталогу читається файл з ім'ям користувача, який розглядається як доповнення до файлу конфігурації)
- user_sub_token (генерація імені домашнього каталогу для віртуальних користувачів (див. guest_enable) за шаблоном, наприклад з використанням $ USER)
- авторизація загальна
- cmds_allowed (список допустимих команд протоколу FTP)
- deny_file (шаблон імен заборонених файлів, "deny_file = {*. mp3, *. mov, .private}")
- hide_file (шаблон невидимих файлів)
- download_enable YES (дозволяти читання файлів)
- dirlist_enable YES (дозволяти лістинг каталогів)
- force_dot_files NO (показувати в лістингу каталогів імена файлів, що починаються з '.')
- hide_ids NO (приховувати імена власників файлів і групи)
- ls_recurse_enable NO
- text_userdb_names NO (показувати текстові імена користувачів і груп в лістингу)
- use_localtime NO (використовувати локальне час замість UTC)
- write_enable NO (дозволяти команди STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE)
- tilde_user_enable NO (дозволяти в іменах файлів конструкції "~" і "~ ім'я-користувача")
- права локальних користувачів
- chroot_list_enable NO (в файлі /etc/vsftpd.chroot_list задається список користувачів, при аутентифікації яких виділяється chroot в їх домашній каталог)
- chroot_list_file /etc/vsftpd.chroot_list
- chroot_local_user NO (при аутентифікації всіх локальних користувачів деляется chroot в їх домашній каталог, в цьому випадку chroot_list_enable задає список винятків)
- passwd_chroot_enable NO (ім'я каталогу для chroot витягується з / etc / passwd по рядку "/./")
- chmod_enable YES (SITE CHMOD для локальних користувачів, анонімні користувачі не можуть в будь-якому випадку)
- local_umask 077
- local_root (в який каталог переходити для локальних користувачів)
- права анонімних користувачів
- anonymous_enable YES
- anon_world_readable_only YES
- anon_upload_enable NO
- anon_umask 077
- anon_mkdir_write_enable NO
- anon_other_write_enable NO (видалення, перейменування і ін.)
- chown_uploads NO (власник анонімно завантаженого файлу встановлюється параметром chown_username)
- chown_username root
- anon_root (в який каталог переходити для анонімних користувачів)
- ftp_username ftp (з правами якого користувача обробляти анонімні запити, домашній каталог цього користувача буде коренем доступу)
- журнали і повідомлення
- xferlog_enable NO (журнал завантажень і записів в /var/log/vsftpd.log)
- xferlog_std_format NO (записувати журнал в форматі wu-ftpd в / var / log / xferlog)
- dual_log_enable NO (записувати обидва журналу: / var / log / xferlog і /var/log/vsftpd.log)
- syslog_enable NO (журнал виводиться через syslog , Підсистема FTPD)
- vsftpd_log_file /var/log/vsftpd.log (ім'я журналу в форматі vsftpd)
- xferlog_file / var / log / xferlog (ім'я журналу в форматі wu-ftpd)
- log_ftp_protocol NO
- no_log_lock NO
- session_support NO (підтримка сесій: запис в utmp і wtmp; pam_session)
- setproctitle_enable NO (стан сесії показується в списку процесів)
- banner_file (файл з текстом привітання)
- ftpd_banner (текст привітання)
- dirmessage_enable NO (при вході в каталог користувач отримує повідомлення з файлу .message)
- message_file .message (дозволяє задати ім'я файлу з повідомленням в каталозі)
- SSL
- ssl_enable NO
- ssl_sslv2 NO
- ssl_sslv3 NO
- ssl_tlsv1 YES
- allow_anon_ssl NO (дозволяти анонімним користувачам користуватися SSL)
- force_local_data_ssl YES
- force_local_logins_ssl YES
- dsa_cert_file
- rsa_cert_file /usr/share/ssl/certs/vsftpd.pem
- ssl_ciphers DES-CBC3-SHA
- інтервали очікування (в секундах)
- accept_timeout 60 (для PASV)
- connect_timeout 60 (для PORT)
- data_connection_timeout 300 (завмирання в процесі передачі даних)
- idle_session_timeout 300
- управління трафіком (в байтах в секунду) і навантаженням
- anon_max_rate 0
- local_max_rate 0
- max_clients 0
- max_per_ip 0
- trans_chunk_size 0
Встановлював з пакета vsftpd-2.0.5-17.fc7 (i386). Потрібно порожній каталог / usr / share / empty / і окремий користувач (я взяв користувача ftp, в якості домашнього каталогу / var / ftp, користувач ftp не є його власником, / sbin / nologin). До складу пакету входять скрипт запуску (/etc/rc.d/init.d/vsftpd, для кожного файлу конфігурації /etc/vsftpd/*.conf запускається свій екземпляр сервера), /etc/pam.d/vsftpd (/ etc / vsftpd / ftpusers використовується як заборонний список) і настройка ротації журналів (/etc/logrotate.d/vsftpd.log).
Налаштування /etc/vsftpd/vsftpd.conf:
Налаштування iptables в / etc / sysconfig / iptables
-A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport від: до -j ACCEPTзапуск:
service vsftpd start # дивимося в журнал syslog chkconfig --level 345 vsftpd onПроблема з SELinux : Як зазвичай, політика обмежує права процесу vsfdpd неправильна. Цю політику можна правити , Але простіше тупо скопіювати / usr / sbin / vsftpd в / usr / sbin / vsftpd2 (і поміняти /etc/init.d/vsftpd).
Встановлював з пакета vsftpd-2.0.5-10.el5 (x86_64). Потрібно порожній каталог / usr / share / empty / і окремий користувач (я взяв користувача ftp, в якості домашнього каталогу / var / ftp, користувач ftp не є його власником, / sbin / nologin). Передбачуваний каталог для роздачі: / var / ftp замінений на / mirror / anonftp. До складу пакету входять скрипт запуску (/etc/rc.d/init.d/vsftpd, для кожного файлу конфігурації /etc/vsftpd/*.conf запускається свій екземпляр сервера), /etc/pam.d/vsftpd (/ etc / vsftpd.ftpusers використовується як заборонний список) і настройка ротації журналів (/etc/logrotate.d/vsftpd.log).
Налаштування /etc/vsftpd/vsftpd.conf:
- anonymous_enable = YES
- local_enable = NO
- write_enable = NO
- anon_upload_enable = NO
- anon_mkdir_write_enable = NO
- anon_other_write_enable = NO
- xferlog_enable = YES
- connect_from_port_20 = YES
- xferlog_std_format = YES
- nopriv_user = ftp #?
- async_abor_enable = YES
- ascii_download_enable = YES
- ftpd_banner = текст запрошення
- ls_recurse_enable = YES
- pam_service_name = vsftpd
- userlist_enable = YES
- listen = YES
- listen_address = IP-адреса
- tcp_wrappers = YES
- hide_ids = YES
- syslog_enable = YES
- # Відповідні правила в iptables
- pasv_min_port = від
- pasv_max_port = до
- anon_root = / mirror / anonftp
- local_root = / mirror / anonftp
- guest_enable = NO
- anon_world_readable_only = YES
Налаштування iptables в / etc / sysconfig / iptables
-A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport від: до -j ACCEPTзапуск:
service vsftpd start # дивимося в журнал syslog chkconfig --level 345 vsftpd onПроблема з SELinux : В CentOS 5 є політика обмежує права процесу vsfdpd. Цю політику можна правити , Але я тоді про це не знав і вважав за краще тупо скопіювати / usr / sbin / vsftpd в / usr / sbin / vsftpd2 (і поміняти /etc/init.d/vsftpd).
Встановлював з пакета vsftpd-2.0.1-5.EL4.5. Потрібно порожній каталог / usr / share / empty / і окремий користувач (я взяв користувача ftp, в якості домашнього каталогу / var / ftp, користувач ftp не є його власником, / sbin / nologin). Передбачуваний каталог для роздачі: / var / ftp замінений на / mirror / anonftp. До складу пакету входять скрипт запуску (/etc/rc.d/init.d/vsftpd, для кожного файлу конфігурації /etc/vsftpd/*.conf запускається свій екземпляр сервера), /etc/pam.d/vsftpd (/ etc / vsftpd.ftpusers використовується як заборонний список) і настройка ротації журналів (/etc/logrotate.d/vsftpd.log).
Налаштування /etc/vsftpd/vsftpd.conf:
- anonymous_enable = YES
- local_enable = NO
- write_enable = NO
- anon_upload_enable = NO
- anon_mkdir_write_enable = NO
- anon_other_write_enable = NO
- xferlog_enable = YES
- connect_from_port_20 = YES
- xferlog_std_format = YES
- nopriv_user = ftp #?
- async_abor_enable = YES
- ascii_download_enable = YES
- ftpd_banner = текст запрошення
- ls_recurse_enable = YES
- pam_service_name = vsftpd
- userlist_enable = YES
- listen = YES
- listen_address = IP-адреса
- tcp_wrappers = YES
- hide_ids = YES
- syslog_enable = YES
- # Відповідні правила в iptables
- pasv_min_port = від
- pasv_max_port = до
- anon_root = / mirror / anonftp
- local_root = / mirror / anonftp
- guest_enable = NO
- anon_world_readable_only = YES
Налаштування iptables в / etc / sysconfig / iptables
-A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport від: до -j ACCEPTзапуск:
service vsftpd start # дивимося в журнал syslog chkconfig --level 345 vsftpd onBog BOS: FTP-сервер vsftpd: установка, настройка і використання
Copyright © 1996-2018 Sergey E. Bogomolov; www.bog.pp.ru (КДБ знає все, навіть те що у Вас на диску;)