Настройка vsftpd
Установка:
И так, имеем систему
Linux version 2.6.26-2-openvz-amd64 (Debian 2.6.26-26lenny2) (dannf@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) # SMP Tue Jan 25 06:04:33 UTC 2011
Устанавливаем
sudo apt-get install vsftpd
Делаем, на всякий случай, копию исходного конфига1
cp /etc/vsftpd.conf /etc/vsftpd.conf.default
Редактируем конфиг
vi /etc/vsftpd.conf
Мой конфиг:
listen=YES #listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 #anon_upload_enable=YES #anon_mkdir_write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES #chown_uploads=YES #chown_username=whoever #xferlog_file=/var/log/vsftpd.log #xferlog_std_format=YES #idle_session_timeout=600 #data_connection_timeout=120 #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES #ascii_download_enable=YES #ftpd_banner=Welcome to blah FTP service. #deny_email_enable=YES #banned_email_file=/etc/vsftpd.banned_emails chroot_local_user=YES #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list ls_recurse_enable=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem pasv_min_port=50000 pasv_max_port=59000
От конфига по умолчанию мой отличается следующим:
Права на загружаемые файлы local_umask=022
Разрешаю локальным пользователям запись
write_enable=YES
Убирал доступ для анонимных пользователей
anonymous_enable=NO
Разрешил локальным пользователям логиниться (убрал комментарий в конфиге)
local_enable=YES
Установил права для заливаемых файлов (убрал комментарий в конфиге)
local_umask=022
Дал пользователям только его домашний каталог, домашний каталог пользователя можно посмотреть в /ets/passwd (убрал комментарий в конфиге)
chroot_local_user=YES
Включил ls -R, требуется некоторым FTP клиентам, иначе будет зависать FTP передача, особенно со включенным файрволом
ls_recurse_enable=YES
Указал пассивные порты1 pasv_min_port=50000
pasv_max_port=59000
Перезапускаем VsFTPd
/etc/init.d/vsftpd restart
Список заблокированных локальных пользователей
root@rekka:~# cat /etc/ftpusers
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root daemon bin sys sync games man lp mail news uucp nobody root@rekka:~#
Чтобы у root появился доступ, надо удалить его из списка (НЕ СОВЕТУЮ)
Правила для IPTABLES1 -A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 32768:65535 -j ACCEPT -A INPUT -p udp -m udp --dport 32768:65535 -j ACCEPT
Дополнительно:
Запретить доступ к определенным типам файлов по маске deny_file={*.mp3,*.mov, *.avi, .filelist}
Скрыть определенные типы файлов при выводе списка, но дать скачать тем кто знает точное имя.
hide_file={*.mp3,*.mov, *.avi}
Ограничить скорость для пользователей (байт в сек.)анонимным
anon_max_rate=50000
локальным
local_max_rate=100000
Расшифровка параметров vsftpd
Все настройки сервера находятся в файле /etc/vsftpd/vsftpd.conf. Ваш сервер и при установке по-умолчанию будет работать, но вы можете провести дополнительную настройку "под себя".
Параметры | Параметр по умолчанию | Пояснение |
allow_anon_ssl | NO | Значение YES позволяет анонимным пользователям подключаться через SSL-соединение. |
anon_mkdir_write_enable | NO | Значение YES позволяет анонимным пользователям при определённых условиях создавать каталоги. Чтобы они могли это делать, должен быть включен параметр write_enable и анонимный пользователь должен иметь права на запись для родительского каталога. |
anon_other_write_enable | NO | Значение YES позволяет анонимным пользователям выполнять не только операции закачки файлов и создания каталогов, но и операции удаления и переименования. |
anon_upload_enable | NO | Значение YES позволяет анонимным пользователям осуществлять закачку файлов на сервер при определённых условиях: должен быть включен параметр write_enable и анонимные пользователи должны иметь права на запись в каталог закачки. Этот параметр также должен быть включен для того, чтобы виртуальные пользователи могли закачивать файлы так как по умолчанию виртуальные пользователи считаются анонимными./td> |
anon_world_readable_only | YES | Значение YES говорит, что анонимные пользователи могут скачивать только файлы, доступные на чтение всем. Это такие файлы, владельцем которых является пользователь ftp, что особенно касается закаченных файлов. |
anonymous_enable | YES | Значение YES разрешает подключаться к серверу анонимным пользователям с именами ftp и anonymous. |
ascii_download_enable | NO | Значение YES позволяет выбрать для скачивания файлов режим ASCII |
ascii_upload_enable | NO | Значение YES позволяет выбрать для закачивания файлов режим ASCII |
async_abor_enable | NO | Значение YES включает возможность использования специальной команды FTP, известной как "async ABOR". Не все клиенты поддерживают эту команду, к тому же, её неудобно управлять. Но к сожалению, некоторые FTP-клиенты будут "зависать" при отмене передачи файлов, если данная команда будет недоступна, так что возможно вы захотите включить её. |
background | YES | Значение YES включае выполнение vsftpd в фоновом режиме. |
check_shell | YES | Внимание! Данная опция работает только для vsftpd, собранного без PAM!. Если NO, то vsftpd не проверяет наличие shell локального пользователя в /etc/shells. Обычно же, если shell пользователя не найден в /etc/shells, то в доступе по FTP этому пользователю будет отказано! |
chmod_enable | YES | Значение YES позволяет локальным пользователям использовать команду SITE CHMOD. Анонимным пользователи НИКОГДА не разрешается использовать эту команду! |
chown_uploads | NO | Значение YES приводит к тому, что для всех файлов, которые закачивают анонимные пользователи, владелец будет изменён на пользователя, указанного в параметре chown_user-name. Это полезно для административных целей и возможно из соображений безопасности. |
chroot_list_enable | NO | Значение YES позволяет задать список локальных пользователей, для которых после входа будет выполнен chroot() в их домашний каталог. Есть параметр chroot_local_user установлен в YES, то всё работает с точностью до наоборот: для локальных пользователей в предоставляемом списке НЕ БУДЕТ выполняться chroot(). По умолчанию, список пользователей находится в файле /etc/vsftpd/chroot_list, однако вы можете указать другое имя файла с помощью параметра chroot_list_file |
chroot_local_user | NO | Значение YES приводит к тому, что после входа, для локальных пользователей будет выполнен chroot() в их домашний каталог. Внимание! Данный параметр может нанести ущерб безопасности, особенно в случае, когда пользователи могут закачивать файлы или имеют shell доступ. Включайте его только если понимаете, что делаете! |
connect_from_port_20 | NO | Значение YES позволяет использовать на сервере порт 20 (ftp-data) для передачи данных. По соображениям безопасности, некоторые клиенты могут требовать такого поведения от сервера. Наоборот, выключение данного параметра, позволяет запускать vsftpd с меньшими превилегиями. |
debug_ssl | NO | Значение YES приводит к протоколированию работы подключений по SSL. (Добавлено в 2.0.6) |
deny_email_enable | NO | Значение YES позволяет предоставить для анонимных пользователей список паролей в стиле E-mail адресов, для которых доступ будет запрещён. По умолчанию, список находится в файле /etc/vsftpd/banned_emails, но можно задать другой файл с помощью параметра banned_email_file. |
dirlist_enable | YES | Значение NO запрещает доступ на выполнение команд просмотра содержимого каталогов. |
dirmessage_enable | NO | Значение YES позволяет показывать сообщения пользователям, которые первый раз заходят в какой-либо каталог. По умолчанию, сообщения находятся в файлах .message, но можно указать другой файл с помощью параметра message_file. |
download_enable | YES | Значение NO запрещает выполнять скачивание файлов. |
dual_log_enable | NO | Значение YES включает параллельную генерацию двух журналов /var/log/xferlog и /var/log/vsftpd.log. Первый формируется в стиле wu-ftpd, второй в собственном формате vsftpd. |
force_dot_files | NO | Значение YES включает показ файлов и каталогов, имя которых начинается с точки. Исключения составляют имена "." и ".." |
force_anon_data_ssl | NO | Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех анонимных пользователей в режим SSL при скачивании и закачивании файлов. |
force_anon_logins_ssl | NO | Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех анонимных пользователей при отправке пароля. |
force_local_data_ssl | YES | Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при скачивании и закачивании файлов. |
force_local_logins_ssl | YES | Работает только если включен параметр ssl_enable. Значение YES принудительно переключает соединения всех НЕ-анонимных пользователей в режим SSL при отправке пароля. |
guest_enable | NO | Значение YES говорит о том, что все анонимные соединения должны рассматриваться как "гостевые". Гостевой вход будет переназначен на пользователя, который задан параметром guest_username. |
hide_ids | NO | Значение YES приводит к тому, что при показе для всех файлов и каталогов, группа и владелец всегда будут "ftp". |
listen | YES | Значение YES приводит к запуску vsftpd в режиме "демона". Это означает, что vsftpd не может быть запущен из inetd. Вместо этого, vsftpd запускается напрямую один раз и далее сам будет обслуживать входящие соединения. |
listen_ipv6 | NO | Тоже что и для параметра listen, только vsftpd будет обслуживать IPv6, а не только IPv4. Этот параметр и параметр listen являются взаимоисключающими. |
local_enable | NO | Значение YES позволяет входить по FTP локальным пользователям (из /etc/passwd или авторизуемых через PAM). Данный параметр должен быть включен, если вы хотите организовать работу НЕ-анонимных пользователей, включая и виртуальных. |
lock_upload_files | YES | Значение YES включает блокировку на запись для всех закачиваемых файлов. Все скачиваемые файлы имеют разделяемую блокировку на чтение. Внимание! Перед тем как включить этот параметр помните, что злонамеренное чтение может привести к тому, что пользователи, закачивающие файлы не смогут их дозаписать. |
log_ftp_protocol | NO | Значение YES приводит к протоколированию всех запросов и ответов протокола FTP, а также в выключению параметра xferlog_std_format. |
ls_recurse_enable | NO | Значение YES включает использоваение "ls -R". Это создаёт значительный риск безопасности, потому что выполнение "ls -R" для каталога верхнего уровня, который содежит множество подкаталогов и файлов, может привести к очень большому потреблению ресурсов. |
mdtm_write | YES | Значение YES включает MDTM установку времени изменения файлов (полезно для проверки доступа) |
no_anon_password | NO | При установленом YES, vstpd не спрашивает пароля у анонимных пользователей. |
no_log_lock | NO | Значение YES говорит vsftpd не выполнять блокировку при записи в файлы журналов. Обычно данный параметр выключен. В Solaris в связке с файловой системой Veritas иногда появляется ошибка, выражающаяся в зависании при попытке установить блокировку на файлы журналов. |
one_process_model | NO | Для ядер 2.4 поддерживается другая модель безопасности: один процесс на одно соединение. Такая модель менее безопасна, но более производительна. Не включайте, если не понимаете что делаете и если вашему серверу не нужна поддержка огромного количества отдельных соединений. |
passwd_chroot_enable | NO | Значение YES совместно сchroot_local_user, включает chroot() отдельно для каждого пользователя, исходя из данных о его домашнем каталоге, взятых из /etc/passwd. При этом, значение "/./" в строке, задающей домашний каталог, означает отдельное местоположение в пути. |
pasv_addr_resolve | NO | Установите YES, если вы хотите использовать имя (вместо IP адреса) в pasv_addres |
pasv_enable | YES | Установите NO, если вы хотите запретить метод PASV в полученном соединении для приёма/передачи данных. |
pasv_promiscuous | NO | Установите YES если вы хотите запретить проверку безопасности, назначение которой убедиться, что соединение на приём/передачу данных осуществляется с того же IP-адреса, что и управляющее соединение. Включайте только если понимаете, что вы делаете! Такое необходимо только в некоторых случаях при организации безопасных туннелей или поддержке FXP. |
port_enable | YES | Установите NO, если вы хотите запретить метод PORT в полученном соединении для приёма/передачи данных. |
port_promiscuous | NO | Установите YES, если вы хотите запретить проверку безопастности PORT, назначение которой убедиться, что исходяще соединение подключено именно к клиенту. Включайте только если понимаете, что делаете! |
require_cert | NO | Значение YES требует от всех SSL клиентов наличия клиентского сертификата. Уменьшение подлинности, применимое к этому сертификату, управляется параметром validate_cert (добавлен в 2.0.6). |
run_as_launching_user | NO | Установите YES, если вы хотите запускать vsftpd от пользователя, который собственно и производит запуск. Обычно это нужно в тех случаях, когда доступ от пользователя root недоступен. СЕРЬЁЗНЕЙШЕЕ ЗАМЕЧАНИЕ! НЕ включайте этот параметр пока вы полностью не осознаете то, что вы делаете, так как использование этого параметра может создать серьёзную проблему с безопасностью. Особенно важно, чтобы vsftpd не мог использовать / в качестве корневого каталога, а также используйте chroot для ограничения доступа к файлам, когда включен данный параметр (даже если vsftpd запущен от root). Менее подходящим решением может быть использование deny_file с такими аргментами как {/*,*..*}, но надёжность такого решения не может сравниться с chroot, так что сильно на это не полагайтесь. При использовании этого параметра, вводятся ограничения на другие опции. Например не ждите, что будут работать опции требущие привелегий, такие как неанонимные входы, закачка файлов с изменением владельца, соединение по 20 порту и подключение по портам меньше, чем 1024, а также и другие подобные. |
secure_email_list_enable | NO | Установите YES, если вы хотите, чтобы для анонимных входов, в качестве паролей, использовался только указанный вами список E-mail адресов. Это полезно для некоторого ограничения доступа к содержимому сервера, без создания виртуальных пользователей. Анонимным пользователям будет отказано во входе, если пароль, который они указали не будет в списке, который находится в файл email_password_file. Формат файла: один пароль на строку без дополнительных пробелов. Местоположение файла по умолчанию: /etc/vsftpd/email_passwords |
session_support | NO | При значении YES, vsftpd будет пытаться вести сессии. При этом он будет пытаться обновлять wtmp и utmp. Если для авторизации используется PAM, то vsftpd также будет пытаться открывать pam_session при входе и закрывать его только при выходе пользователя. Если вам не нужно протоколирование сессий, вы можете запретить это, а также вы можете указать vsftpd запускать меньше процессов и/или с меньшими привелегиями. Модификация wtmp и utmp работает только, если vsftpd собран с поддержкой PAM. |
setproctitle_enable | NO | Если YES, то vsftpd будет пытаться показывать информацию о состояние сессий в списке процессов. Другими словами, показываемое имя процесса будет изменено, чтобы отражать состояние сессии vsftpd (idle, downloading и т.д.) Из соображений безопасности, возможно вам лучше оставить этот параметр выключенным. |
ssl_enable | NO | Если YES и vsftpd был собран с библиотекой openSSL, то vsftpd будет обслуживать безопасные соединения через SSL. Это относится как к управляющим соединениям, так и к соединениям передающим данные. Также необходимо, чтобы и клиент поддерживал SSL соединения. Используйте этот параметр с осторожностью, потому что vsftpd целиком полагается на библиотеку openSSL в плане безопаснотсти SSL соединений и не может гарантировать, что эта библиотека свободна от ошибок. |
ssl_request_cert | YES | Если YES, то vsftpd запрашивает (но не делает из этого необходимости) у клиента сертификат. Обычно, это не вызывает проблем, но IBM zOS считает иначе (добавлено в 2.0.7) |
ssl_sslv2 | NO | Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу SSL v2. Предпочтительными являются соединения по протоколу TLS V1. |
ssl_sslv3 | NO | Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу SSL v3. Предпочтительными являются соединения по протоколу TLS V1. |
ssl_tlsv1 | YES | Применяется только если включен параметр ssl_enable. В случае YES допускаются соединения про протоколу TLS V1. Предпочтительными являются соединения по протоколу TLS V1. |
vsftpd для Debian Weezy
source.list:
deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib
apt-key:
wget -O - "http://ftp.cyconet.org/debian/repo.key" | apt-key add - aptitude install debian-cyconet-archive-keyring
examples config:
# -------------------------------------- # Конфиг с пояснениями. Сайт: vacadem.ru # -------------------------------------- # http://vacadem.ru/blog/linux-unix-and-other/install-vsftpd-on-debian-7.html #----------------------------------------------------------------------------- # Режим "standalone mode". В этом случае он сам заботится о прослушивании и определении входящих соединений. listen=YES # Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно. # Этот параметр и listen взаимно исключаемые. listen_ipv6=NO # Фоновый режим. Т.е. контроль передается той оболочке в которой был запущен vsftpd. # background=NO # Максимальное количество клиентов, которые могут быть подключены. # Попытки подключения сверх указанного количества, получат сообщение об ошибке. #max_clients=10 # Максимально возможное количество клиентов с одинаковыми ip адресами. # Клиентские подключения пытающиеся превысить этот лимит, получат сообщение об ошибке. #max_per_ip=10 # Разрешает или запрещает вход анонимных пользователей. anonymous_enable=NO # Разрешает или запрещает вход для локальных пользователей. # Должно быть включено для разрешения любых не анонимных входов, включая вход виртуальных пользователей. local_enable=YES # Разрешает FTP команды изменяющие файловую систему. Такие команды как: # STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE. write_enable=YES # Значение номера порта для PASV стиля передачи данных. # Может быть использовано для указания подробного размещения портов помогая файрволлингу. #pasv_min_port=70000 #pasv_max_port=80000 # Маска файлов назначаемая при загрузке файлов на сервер. # При желании возможно изменить на 0777 если есть необходимость файлы сделать исполняемыми. file_open_mode=0644 # Значение маски назначения прав доступа к файлам созданным локальными пользователями. local_umask=022 # Показ скрытых файлов. force_dot_files=YES # Позволяет анонимным пользователям загружать файлы на сервер, в соответствии с условиями. # Для того чтобы это работало опция write_enable должна быть активирована, # и анонимный ftp пользователь должен иметь права на запись в каталоге для загрузки. #anon_upload_enable=YES # Позволяет анонимным пользователям создавать новые каталоги в соответствии с определенными для этого условиями. #anon_mkdir_write_enable=YES # При входе в каталог пользователям показывается сообщение из файла .message. # По умолчанию, директория сканируется на наличие сообщения в файле .message. # Его можно изменить задав имя другого файла параметром message_file. dirmessage_enable=YES # При включении, vsftpd производит листинг каталогов с отображением времени лично # вашей временной зоны. По умолчанию в листинге отображается GMT временная зона. # Времена обновляемые MDTM командами также затрагиваются этой опцией. use_localtime=YES # # Если включено, журнал будет включать детальные отчеты о закачках на сервер, # и закачках с сервера (uploads, downloads). По умолчанию, этот файл будет располагаться в /var/log/vsftpd.log, # но расположение может быть изменено используя опцию vsftpd_log_file. xferlog_enable=YES # Включение этой опции указывает исходящим с сервера соединениям использовать 20 порт. # Некоторые клиенты могут настаивать на этом значении. # Отключение этой опции позволяет vsftpd стартовать с немного меньшими привилегиями. connect_from_port_20=YES # Если включить, у всех анонимно закачанных файлов на сервер будут # изменены владельцы на пользователя в указанного в chown_username. # Это может быть полезно при администрировании, и возможно из соображений безопасности. #chown_uploads=YES #chown_username=$USER #chown_username=whoever # В параметре этой опции можно указать альтернативный путь к файлу журнала в wu-ftpd стиле. #xferlog_file=/var/log/vsftpd.log # # Если включено, запись в журнал производится в стандартном wu-ftpd стиле, xferlog формата. # Полезно при желании использования уже существующих привычных способов генерации статистики. # Однако с другой стороны, формат используемый по умолчанию лучше читается. #xferlog_std_format=YES # Временной промежуток в секундах указывающий для удаленного клиента # максимальное время которое он может бездействовать не выполняя FTP команды. # Если время исчерпано, соединение отбрасывается. #idle_session_timeout=600 # Максимальный временной промежуток в секундах, разрешенного замирания процесса передачи данных. # Если перерыв превышен, соединение с удаленным клиентом отбрасывается. #data_connection_timeout=120 # Указывает имя пользователя под которым работает сервер, когда ему не нужны привилегии. #nopriv_user=ftpsecure # При включении, специальные FTP команды известные как "async ABOR" #будут разрешены. # Только плохо продуманные FTP клиенты используют эту функцию. # Эта функция неудобна в управлении, поэтому отключена по умолчанию. # Некоторые FTP клиенты могут зависать в момент отмены передачи, если эта функция выключена. #async_abor_enable=YES # Если включить, ASCII режим передачи данных будет разрешен при Upload. ascii_upload_enable=YES # Если включить, ASCII режим передачи данных будет разрешен при download. ascii_download_enable=YES # В этой опции можно указать банер-строку выводимую на экран клиента при подключении к серверу: ftpd_banner=Welcome to qbpro.ru FTP service. # Позволяет использовать список анонимных паролей типа e-mail, # при использовании которых попытки подключения будут отвергнуты. #По умолчанию, файл содержащий этот список располагается в /etc/vsftpd.banned_emails #deny_email_enable=YES #Эта опция указывает имя файла в котором содержится список анонимных e-mail паролей не принимаемых сервером. #banned_email_file=/etc/vsftpd.banned_emails #Если выбрано локальные пользователи будут (по умолчанию) перенесены в chroot () "заточение" #в их домашнем каталоге после входа. Эта опция имеет смысл быть включенной из соображений безопасности. chroot_local_user=YES allow_writeable_chroot=YES #Если включить, вы можете использовать список локальных пользователей помещаемых в chroot() после входа. #chroot_list_enable=YES # Указывает альтернативный путь к файлу содержащему список локальных пользователей. #chroot_list_file=/etc/vsftpd.chroot_list # # При включении, разрешает рекурсивный листинг "ls -R". Включение немного # рискованно исходя из соображений безопасности, так как выполнение "ls -R" в # верхнем уровне большого сайта может поглощать много ресурсов. #ls_recurse_enable=YES # Кастомизация #------------- # Эта опция указывает на имя пустого каталога. Каталог не должен быть записываемый для ftp пользователя. # Этот каталог используется как безопасный chroot(), когда vsftpd не нужен доступ к файловой системе. secure_chroot_dir=/var/run/vsftpd/empty # В этой строке можно указать имя PAM сервиса который будет использоваться для vsftpd. pam_service_name=vsftpd # Если включено, и vsftpd был скомпилирован с поддержкой OpenSSL, # vsftpd будет поддерживать безопасность соединения с помощью SSL. # Это позволяет контролировать соединения (включая входы в систему) и также передачу данных. # Для этого также необходим клиент с поддержкой SSL. ssl_enable=NO # Эта опция задает расположения RSA сертификата для использования в SSL зашифрованных соединениях. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # Эта опция задает расположения личного RSA ключа для использования в SSL зашифрованных соединениях. # Если эта опция не выбрана, сертификат предусматривается как личный ключ. rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key #каталоги пользователей user_sub_token=$USER local_root=/vsftpd/$USER
ИСТОЧНИКИ:
- Packages for Debian Stable
- Установка FTP сервера vsftpd в Debian 7
- Установка FTP сервера - VsFTPd - CentOS Wiki
- Установка vsftpd в Debian/Ubuntu
ПОЛЕЗНОЕ: