анонимный ftp сервер на vsftpd (с аплоадом. легко управляемый.)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

анонимный ftp сервер на vsftpd

Сообщение kasak »

Здравствуйте. Решил сделать небольшой мануал для тех кто хочет открыть анонимный фтп, без особых усилий, но чтобы он был защищённым и надёжным.
само собой всё будет сделано на vsftpd, потому что я считаю его самым правильным и достойным внимания ftp сервером.

1) Установка
Думаю ни у кого не возникнет вопросов с установкой, vsftpd можно установить без проблем почти в любом дистрибутиве Linux или *BSD системах.
в пакетном менеджере ubuntu:
sudo apt-get install vsftpd
в мандриве:
urpmi vsftpd
в сюсе:
yast -i vsftp
ну или можно установить через графический интерфейс.

2) Пользователи, Группы, права доступа.
В данном примере я хочу показать как сделать анонимный фтп с аплоадом и лёгкой управляемостью. Поэтому следующим шагом опишу как поставить правильные права доступа, для лёгкого управления закачанными файлами.

Прежде всего хочу отметить что для удобства работы необходим иметь как пользователя ftp так и группу ftp.
Например в убунту при установке vsftpd группа ftp не создаётся. А создаётся только лишь пользователь. А в Сюсе создаётся и группа и пользователь (прошу прощения если где-то ошибаюсь)

Для начала проверьте присутствие пользователя ftp в файле /etc/passwd
и группы ftp в файле /etc/group
можно сделать это с помощью комманды grep:

Код: Выделить всё

root@kasak-desktop:/home/kasak# grep ftp /etc/passwd
ftp:x:113:65534::/home/ftp:/bin/false
root@kasak-desktop:/home/kasak# grep ftp /etc/group
ftp:x:49:kasak

У меня эти значения уже добавлены. Вам возможно придётся их изменить.
в файле passwd вам возможно захочется изменить домашнюю директорию пользователя ftp. записи в файле имеют формат
login:password:UID:GID:GECOS:home directory:shell

GID (Group ID) в данном случае указан по умолчанию.конечно группы 65534 у меня нету. В вашем случае этот номер может отличатся. Его менять не требуется. GECOS это дополнительная информация о пользователе. Можно заметить что она у меня пропущена. Это поле менять тоже не требуется. далее идёт поле где указана домашняя директория. У меня это /home/ftp. Анонимные пользователи, заходящие на фаш ftp будут попадать в домашнюю директорию именно этого пользователя. Если Ваш ftp будет находится на другом диске, измените эту директорию на нужную Вам. Последнее поле (shell) менять не следует.
Вобщем из всего этого Вам нужно (а может и не нужно) изменить поле указывающее на домашнюю директорию пользователя ftp.
Файл /etc/group гораздо проще.
Записи в нём имеют формат
group:password:GID:users

Если по умолчанию у вас в файле /etc/group такой группы нет, вам нужно её создать.
начните с поиска свободного GID. Обычно группы 49 нету. можете посмотреть что идёт перед 50й группой, и если 49 там нету, смело пишите ftp:x:49:
и добавьте в последнее время пользователя под которым вы будете перемещать файлики на фтп. У меня это kasak. Сохраните всё это и можете приступать к созданию фиректорий и распределению прав доступа.
Для этого перейдите в папку где в вас предполагается корень ftp.
прежде всего заметьте что эта папка должна иметь владельца root и права доступа непозволяющие запись.
для этого примените на эту директорию комманды: (приведу свой пример)
chown root /home/ftp
chmod -w /home/ftp

теперь создайте в этой папке папку для аплоада.
mkdir upload
задайте ей права доступа
chmod a+rwx upload
и владельца (СВОЕГО пользователя. в моём случае это kasak. Группу надо задать ftp (это обязательно)
chown kasak:ftp upload
это сделает владельцем пользователя kasak и группу ftp.
Теперь нужно дать директории upload бит SetGID это делается коммандой
chmod g+s upload
Это действие нужно для того чтобы всем создаваемым внутри аплоада папкам присваивался бы владелец тот же что и у самого аплоада. Это действие необходимо.
Всё. Теперь у Вас есть upload. Можете положить в домашнюю директорию ftp другие папки, которые вы хотите раздавать.
Присвойте им владельца - вашего пользователя, группу ftp (для наглядности)
присвойте добавленным папка права доступа только на чтение ( и на запись владельцу)
chown kasak:ftp -R {список папок}
chmod a-w -R {список папок)
chmos u+w -R {список папок}

опция -R служит для задания прав доступа рекурсивно (т.е. применится и для вложенных папок)
Теперь при вызове комманды ls -l внутри директории с ftp вы можете видеть что-то типа

Код: Выделить всё

drwxr-xr-x   9 kasak ftp   4096 2008-11-13 16:45 backup
drwxr-xr-x 172 kasak ftp   4096 2008-11-21 14:47 MP3
drwxrwsrwx   2 kasak ftp   4096 2008-12-09 12:53 upload

Обратите внимание на права доступа директории upload.
drwxrwsrwx

3) Конфигурационный файл
Откойте файл /etc/vsftpd.conf подходящим Вам редактором. Я приведу пример уже готового конфига, с удалёнными комментариями, и тут же опишу его опции и зачем они нужны.

Код: Выделить всё

listen=YES
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=kasak
xferlog_file=/var/log/vsftpd.log
anon_root=/home/ftp/
delete_failed_uploads=yes
anon_umask=0000
chown_upload_mode=0777
file_open_mode=0777
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key


listen=yes
думаю не для кого не секрет для чего эта опция. она включает опцию сервера чтобы он мог запускаться как демон.
Если вы используете slackware советую убрать эту опцию и использовать vsftpd в связке с inetd. К сожалению slackware под рукой нет и напомнить как именно надо строку в /etc/inetd.conf вписать я не могу. Но думаю слакварщики разберутся и без меня :)
anonymous_enable=YES
эта опция включает возможность анонимного входа
write_enable=YES
включает комманды записи на фтп
anon_upload_enable=YES
включает возможность заливки для анонимных пользователей
anon_mkdir_write_enable=YES
позволяет анонимным пользователям создавать папки
dirmessage_enable=YES
включает возможность посылать сообщения при входе в папку. (необязательно)
xferlog_enable=YES
включает лог закачек
connect_from_port_20=YES
указывает порт ftp-data. Опция прописана в конфиге "по умолчанию" трогать её не нужно
chown_uploads=YES
включает опцию присваивания закачкам владельца.
chown_username=kasak
опция указывает кому должны принадлежать закачки.. смените kasak на нужного пользователя
xferlog_file=/var/log/vsftpd.log
имя лог файла для закачек
anon_root=/home/ftp/
директория в которой "запирается" анонимный пользователь. её нужно сменить на домашнюю директорию пользователя ftp (для достижения поставленной задачи) опцию можно использовать в других целях.
delete_failed_uploads=yes
эта опция доступна ТОЛЬКО если у вас vsftpd версии не ниже 2.0.7 (в опенбсд на момент написания только 2.0.5. это же касается так же slackware)
anon_umask=0000
эта опция задаёт umask только для анонимных пользователей. (смотри далее)
chown_upload_mode=0777
эта опция задаёт права доступа для залитых файлов с изменённым владельцем.
Я особо не экспериментировал так что лучше оставить как есть.
file_open_mode=0777
эта опция задаёт значение прав доступа по умолчанию от которых будет отниматься anon_umask или local_umask.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

указыает на расположения сертификата и ключа для защищённых соединений. Эта опция в данном случае нас не интересует. В разных дистрибутивах может варьироваться или отсутствовать вообще.

Вот впринципе и всё. Если захотите изменить anon_umask на 0002 это впринципе не возбраняется, всё равно никто не сможет изменить или удалять файлы уже залитые. это не позволит vsftp.
Теперь заметьте. chown_uploads работает ТОЛЬКО на файлы. на директории оно не работает. Для этого мы и назначили директории для аплоада бит sgid.
Теперь когда заливаете файлы они будут иметь права доступа:
root@kasak-desktop:/home/ftp/upload# ls -lR
.:
итого 4
drwxrwsrwx 3 ftp ftp 4096 2008-12-09 18:41 Видео

./Видео:
итого 4
drwxrwsrwx 2 ftp ftp 4096 2008-12-09 18:41 Новая папка

./Видео/Новая папка:
итого 74352
-rwxrwxrwx 1 kasak ftp 76129446 2008-12-09 18:41 file.avi
Как видите папки создаются для пользователя ftp а файлы для kasak.
но удалять их и перемещать вы сможете так как ваш пользователь должен быть в группе ftp. вот в принципе и всё :)
для интересующихся скажу сразу что бит sgid в данном случае я поставил только для того чтобы все директории БЕЗУСЛОВНО принадлежали группе ftp. Никакой дыры в системе это не сделает (если конечно ftp не связан с html сервером, хотя сомневаюсь что кто-то будет так делать)
Ну вот и всё :) Успехов!
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
12345
Сообщения: 6
ОС: ubuntu 16 server
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение 12345 »

Если уж взялся рассказать лузерам(к которым я себя отношу) как настроить сервер, то пиши полностью. Как его запустить, как с ним работать! Почему у меня анонимный сервер просит аутентификацию?
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

12345 писал(а):
29.01.2009 19:48
Если уж взялся рассказать лузерам(к которым я себя отношу) как настроить сервер, то пиши полностью. Как его запустить, как с ним работать! Почему у меня анонимный сервер просит аутентификацию?


какой дистрибутив? покажи конфиг vsftpd.conf
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение rm_ »

Почему у меня анонимный сервер просит аутентификацию?

Так ведь анонимность сервера заключается не в том, что он без авторизации, а в том, что авторизоваться можно с параметрами: пользователь "anonymous" (или "ftp"), пароль - любой, но если не ошибаюсь, по правилам нетикета здесь надо вводить Ваш адрес электронной почты (и некоторые старые сервера могут даже проверять на наличие собаки, и прочие признаки валидного адреса).
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 930
ОС: BSD/LINUX
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение bars »

вообщем проблема такая...помогите разобраться...
черпал материал с этой статейки
http://ru.gentoo-wiki.com/wiki/%D0%9D%D ... %B0_vsftpd
устонвил vsftpd
конфиг вот мой

Код: Выделить всё

idirmessage_enable=YES
# banner_file=/etc/vsftpd/vsftpd.banner # edit banner first
chown_uploads=NO
idle_session_timeout=600
virtual_use_local_privs=YES
data_connection_timeout=120
ascii_upload_enable=NO
ascii_download_enable=NO
chroot_list_enable=YES
ls_recurse_enable=NO
#use_microsoft_no_smpke_driver=NO
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
local_enable=NO
write_enable=YES
local_umask=022
pasv_min_port=49152
pasv_max_port=65535
dirmessage_enable=YES
xferlog_enable=YES
#connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
nopriv_user=ftp
listen=YES
# chown_upload_mode=0777 вот эти фукциия включал непомогают
# file_open_mode=0777
# anon_umask=0000

права на директории

Код: Выделить всё

drwxrwxrwx  2 root root 4096 Фев 28 22:56 other
dr-sr-xr-x  2 root root 4096 Фев 25 22:26 pub
drwxrwxrwx  2 root root 4096 Мар  1 00:26 upload


но почему-то я не могу, например, нормально файлы принимать, которые мне закачивают...пока не изменю этим файлам права...

которые мне файлы закачивают, права автоматически становятся
-rw-------

а так все нормально, если я создаю в директориях файлы, то все нормально....
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
dangerous3
Сообщения: 137
Статус: Let me google for you?
ОС: Ubuntu 10.04.3, openSuse 11.4
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение dangerous3 »

Я так понимаю, поиграться с anon_umask (напр., anon_umask=022 и пр.) тоже попробовали?
bash-scripting@conference.jabber.ru - jabber-конференция для участников проекта bash-scripting.ru
http://sivkaburka.blogspot.com/
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

file_open_mode=0777
anon_umask=0000
вот эти опции раскомментируйте и перезапустите
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 930
ОС: BSD/LINUX
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение bars »

спасибо, получилось...
но еще сеть вопрос , а как мне сделать, что я только бы мог заливать файлы в pub
прова на диреткорию pub
dr-xr-xr-x 2 root root 4096 Мар 1 19:40 pub
я знаю способ 1 только...
создать локального пользователя и сделать его владельцем pub. но локальных пользователей не безопасно создавать.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

bars писал(а):
01.03.2009 20:16
спасибо, получилось...
но еще сеть вопрос , а как мне сделать, что я только бы мог заливать файлы в pub
прова на диреткорию pub
dr-xr-xr-x 2 root root 4096 Мар 1 19:40 pub
я знаю способ 1 только...
создать локального пользователя и сделать его владельцем pub. но локальных пользователей не безопасно создавать.

пользователь который что-то смотрит на фтп незалогинившись, является пользователем Other то есть не владелец и не группа.
Если вы сделаете владельцем другого пользователя, не ftp то ничего страшного не произойдёт. Зато вы сможете делать с файлами всё что угодно. главное чтобы у other были права на чтение.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
ntl21
Сообщения: 11

Re: анонимный ftp сервер на vsftpd

Сообщение ntl21 »

А как можно добавить папки для общего доступа на фтп, если они, например, на другом диске(винчестере)? Симлинки не работают.

PS нашел ответ, что их можно туда подмонтироать, но mount ругается, что может монтировать только устройства, а не папки :mellow:
Глаза у меня добрые, но рубашка смирительная...
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 930
ОС: BSD/LINUX
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение bars »

попробуй так mv /home/bagas/musik /var/ftp/
ln -s /var/ftp/musik //home/bagas/musik

так создай диретории на своем фтп например видео или что то типа этого и пропиши в fstabe с параметром чтения ro
/home/bagas/musik /var/ftp/musik none ro, 0 0
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

ntl21 писал(а):
02.03.2009 19:48
А как можно добавить папки для общего доступа на фтп если они например на другом диске(винчестере)? Симлинки не работают.

PS нашел ответ что их можно туда подмонтироать, но mount ругается что может монтировать только устройства, а не папки :mellow:

с помощью mount --bind
например

mount --bind /mnt/disk2 /home/ftp/disk2

или в фстабе прописать.
поищите в гугле mount bind
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
qubick
Сообщения: 1
ОС: XP
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение qubick »

Спасибо за инструкцию, на досуге надо будет организовать.
Спасибо сказали:
happy
Сообщения: 66
ОС: OpenSUSE 11.1
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение happy »

сделал все по инструкции - выдает ошибку

refusing to run with writeble anonymous root

Что делать?


Решил вопрос, установив 755 на /home/ftp, как написано тут.
Вопрос теперь в другом: Возможно ли разрешить анонимусу удалять файлы из upload?
All You Need Is Love!!!
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

happy писал(а):
26.07.2009 00:04
сделал все по инструкции - выдает ошибку

refusing to run with writeble anonymous root

Что делать?


Решил вопрос, установив 755 на /home/ftp, как написано тут.
Вопрос теперь в другом: Возможно ли разрешить анонимусу удалять файлы из upload?

anon_other_write_enable=YES
и они будут удалять, но так не круто =)
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
happy
Сообщения: 66
ОС: OpenSUSE 11.1
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение happy »

Спасибо большое!

anon_other_write_enable=YES
и они будут удалять, но так не круто =)


Понимаю, что не круто :) НО просто интересно для саморазвития. Вдруг пригодится. Еще раз спасибо! :)
All You Need Is Love!!!
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: анонимный ftp сервер на vsftpd

Сообщение kasak »

happy писал(а):
26.07.2009 08:20
Спасибо большое!

anon_other_write_enable=YES
и они будут удалять, но так не круто =)


Понимаю, что не круто :) НО просто интересно для саморазвития. Вдруг пригодится. Еще раз спасибо! :)

всегда пожалуйста :)
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
cheater
Сообщения: 59

Re: анонимный ftp сервер на vsftpd

Сообщение cheater »

поэксперементировал с правами для файлов и для себя решил использовать

Код: Выделить всё

anon_root=/srv/ftp
chown_uploads=YES
chown_username=cheater
chown_upload_mode=0600

#no need of these if chown_upload_mode is used
#anon_umask=0111
#file_open_mode=0777


В мане пишется что если включён chown_uploads, то для файлы от anonymous меняют владельца на указанного, а права меняются на chown_upload_mode, эксперементально установил, что anon_umask и file_open_mode при этом никак не влияют на выставляемые права.

Возник такой вопрос: если делаем chown g+s upload, то создаваемые в upload папки имеют ту же группу что и upload, при этом владельцем остаётся ftp; можно ли владельцем тоже сделать своего пользователя (в моём случае cheater)?
Все мы бывшие пользователи венды... (с)
Спасибо сказали:
Ответить