Ftp сервер linux анонимный доступ

unixforum.org

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

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

Сообщение kasak » 09.12.2008 18:49

Здравствуйте. Решил сделать небольшой мануал для тех кто хочет открыть анонимный фтп, без особых усилий, но чтобы он был защищённым и надёжным.
само собой всё будет сделано на 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

Читайте также:  Astra linux звуковой драйвер

Если по умолчанию у вас в файле /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

Читайте также:  Монтировать samba папку linux

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

Читайте также:  Postgresql windows and linux

Вот впринципе и всё. Если захотите изменить 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

Источник

Оцените статью
Adblock
detector