Tagged: vsftpd debian

FileZilla

FileZilla — это свободный мультиязычный FTP-клиент для Microsoft Windows, Mac OS X и Linux. Он поддерживает FTP, SFTP, и FTPS (FTP через SSL/TLS).

Так же существует FileZilla Server — проект, родственный FileZilla Client. Это FTP-сервер, разрабатываемый той же компанией. На 3 марта 2009 года имеет версию 0.9.31. Он поддерживает FTP, SFTP, и FTPS (FTP через SSL/TLS). На 25 марта 2009 года он являлся пятым в списке самых популярных программ SourceForge.net.

(далее…)

Vsftpd

index

Легковесный, самый защищенный и очень быстрый FTP-сервер. Легко настраивается, имеет интуитивно понятный конфигурационный файл.

(далее…)

Задача: установить фтп-сервер и настроить доступ из интернета.

ОС — ubuntu-sever 7.10 (только консоль) .

Устанавливаю пакет proftpd:

sudo aptitude install proftpd

Перед установке потянулись еще три зависимости, согласился.
При установке пакет спрашивает о способе запуска: самостоятельно или через inetd?

Я выбираю «самостоятельно».

Затем открываю файл /etc/shells:

sudo nano /etc/shells

добавляю в него одну строку:

/bin/false

И создаю в /HOME каталоге папку FTP-shared:

cd /home

sudo mkdir FTP-shared

После этого создаю пользователя с именем userftp:

sudo useradd userftp -p parol -d /home/FTP-shared -s /bin/false

где вместо «parol» — ввожу слово или фразу в качестве пароля :)

В папке FTP-shared создаю две дополнительные папки:

cd /home/FTP-shared/

sudo mkdir public

sudo mkdir upload

и даю нужные права созданным папкам:

cd /home

sudo chmod 755 FTP-shared

cd FTP-shared

sudo chmod 755 public

sudo chmod 777 upload

После этого переименовываю имеющийся конфигурационный файл proftpd.conf и создаю новый:

sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old

sudo nano /etc/proftpd.conf

добавив в него следующие строки:

  1. UseIPv6                         off
  2. AllowOverwrite on
  3. AuthAliasOnly on
  4. # Здесь присваивается alias пользователю (я присвоил имя donet)
  5. UserAlias donet userftp
  6. ServerName          »server»
  7. ServerType          standalone
  8. DeferWelcome            on
  9. MultilineRFC2228 on
  10. DefaultServer           on
  11. ShowSymlinks            off
  12. TimeoutNoTransfer 600
  13. TimeoutStalled 100
  14. TimeoutIdle 2200
  15. DisplayFirstChdir               .message
  16. ListOptions                 »-l»
  17. RequireValidShell       off
  18. TimeoutLogin 20
  19. RootLogin           off
  20. # пути для логов
  21. ExtendedLog             /var/log/ftp.log
  22. TransferLog             /var/log/xferlog
  23. SystemLog           /var/log/syslog.log
  24. #DenyFilter         \*.*/
  25. # Я не использую файл /etc/ftpusers (здесь вводим имена пользователей, для ограничения их доступа)
  26. UseFtpUsers off
  27. # Allow to restart a download
  28. AllowStoreRestart       on
  29. # Стандартный порт для фтп 21, для повышения безопасности можно выбрать другой (произвольный):
  30. Port                21
  31. # To prevent DoS attacks, set the maximum number of child processes
  32. # to 30.  If you need to allow more than 30 concurrent connections
  33. # at once, simply increase this value.  Note that this ONLY works
  34. # in standalone mode, in inetd mode you should use an inetd server
  35. # that allows you to limit maximum number of processes per service
  36. # (such as xinetd)
  37. MaxInstances 8
  38. # Set the user and group that the server normally runs at.
  39. User                  nobody
  40. Group                 nogroup
  41. # Umask 022 is a good standard umask to prevent new files and dirs
  42. # (second parm) from being group and world writable.
  43. Umask               022 022
  44. PersistentPasswd        off
  45. MaxClients 8
  46. MaxClientsPerHost 8
  47. MaxClientsPerUser 8
  48. MaxHostsPerUser 8
  49. # Display a message after a successful login
  50. AccessGrantMsg »welcome !!!»
  51. # This message is displayed for each access good or not
  52. ServerIdent                  on       »you’re at home»
  53. # делаем /home/FTP-shared папку домашней
  54. DefaultRoot /home/FTP-shared
  55. # запрещаем выходить пользователям за пределы домашней папки (строго рекомендуется)
  56. DefaultRoot ~
  57. MaxLoginAttempts    5
  58. #VALID LOGINS
  59. <Limit LOGIN>
  60. AllowUser userftp
  61. DenyALL
  62. </Limit>
  63. <Directory /home/FTP-shared>
  64. Umask 022 022
  65. AllowOverwrite off
  66. <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
  67. DenyAll
  68. </Limit>
  69. </Directory>
  70. <Directory /home/FTP-shared/public/*>
  71. Umask 022 022
  72. AllowOverwrite off
  73. <Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
  74. DenyAll
  75. </Limit>
  76. </Directory>
  77. <Directory> /home/FTP-shared/upload/>
  78. Umask 022 022
  79. AllowOverwrite on
  80. <Limit READ RMD DELE>
  81. DenyAll
  82. </Limit>
  83. <Limit STOR CWD MKD>
  84. AllowAll
  85. </Limit>
  86. </Directory>
UseIPv6                         off
AllowOverwrite on
AuthAliasOnly on
# Здесь присваивается alias пользователю (я присвоил имя donet)
UserAlias donet userftp
ServerName                      "server"
ServerType                      standalone
DeferWelcome                    on
MultilineRFC2228 on
DefaultServer                   on
ShowSymlinks                    off
TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200
DisplayFirstChdir               .message
ListOptions                     "-l"
RequireValidShell               off
TimeoutLogin 20
RootLogin                       off
# пути для логов
ExtendedLog                     /var/log/ftp.log
TransferLog                     /var/log/xferlog
SystemLog                       /var/log/syslog.log
#DenyFilter                     \*.*/
# Я не использую файл /etc/ftpusers (здесь вводим имена пользователей, для ограничения их доступа)
UseFtpUsers off
# Allow to restart a download
AllowStoreRestart               on
# Стандартный порт для фтп 21, для повышения безопасности можно выбрать другой (произвольный):
Port                            21
# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 8
# Set the user and group that the server normally runs at.
User                  nobody
Group                 nogroup
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022     022
PersistentPasswd                off
MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8
# Display a message after a successful login
AccessGrantMsg "welcome !!!"
# This message is displayed for each access good or not
ServerIdent                  on       "you're at home"
# делаем /home/FTP-shared папку домашней
DefaultRoot /home/FTP-shared
# запрещаем выходить пользователям за пределы домашней папки (строго рекомендуется)
DefaultRoot ~
MaxLoginAttempts    5
#VALID LOGINS
<Limit LOGIN>
AllowUser userftp
DenyALL
</Limit>
<Directory /home/FTP-shared>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/FTP-shared/public/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory> /home/FTP-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>

Все, настройка закончена, я буду иметь доступ к фтп-серверу с параметрами доступа:
user (пользователь): donet
password (пароль): parol (тот, что я присвоил для userftp)

Теперь осталось только запустить сервер с измененными параметрами (он уже запущен, но с параметрами по умолчанию):

sudo /etc/init.d/proftpd stop

sudo /etc/init.d/proftpd startsudo /etc/init.d/proftpd restart

Выберите, что вам больше по душе :) я выбрал restart

Для проверки синтаксиса созданного конфиг-файла можно выполнить

sudo proftpd -td5

Что бы узнать, кто подключен к фтп-серверу в данный момент использую команду ftptop (клавиша t меняет отображение, q — выход), можно также использовать команду ftpwho

В итоге я получил фтп-сервер с двумя папками, одна из них (public) доступна только на чтение, а другая (upload) — и на запись

Полезные советы:

Если нужно подключить какую-либо папку или партицию к фтп-серверу
(например, проверить работу только что созданного фтп-сервера) без
редактирования конфига пригодится команда:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/public

или с доступом на запись:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/upload

Таким образом можно в срочном порядке временно подключить папку или диск и потом отмонтировать командой:

sudo umount /home/FTP-shared/public

или:

sudo umount /home/FTP-shared/upload

Для постоянного доступа к нужным папкам я подключил их посредством fstab.
Рекомендую предварительно сделать бэкап файла fstab
Открыть файл /etc/fstab

sudo nano /etc/fstab

и добавить нужные пути:

/здесь/путь/папки/что/я/хочу/расшарить /home/FTP-shared/public none bind 0 0

Теперь даже при рестарте сервера (компьютера) информация будет
доступна, но только в локальной сети. Это потому, что моя локаольная
сеть находится за роутером. Что бы увидеть фтп-сервер из интернета
нужно дать ему внешний ip-адрес. Для этого я просто открываю нужный
порт (в моем случае 21) для локального адреса (вида 192.168.xxx.xxx) на
котором висит мой сервер, для доступа извне.

Теперь нужно дать моему внешнему динамическому айпи-адресу осмысленный и постоянный адрес. Я иду на и регистрируюсь. Затем
себе удобный и запоминающийся адрес (вида moj-server.homeip.net).
Дальше — проще. Вношу регистрационные данные с сервиса DynDNS в
настройки роутера (этот пункт меню называется у меня Dynamic DNS) и … все. Работает!!!
Теперь только осталось поменять ServerName «server» в файле
proftpd.conf на ServerName «moj-server.homeip.net» и рестартануть
фтп-сервер.

При написания статьи были использованы материалы:

Источник: http://www.xima4.com/?p=470

Ping от системного радио, всем привет!

Хочу поделится опытом быстрой настройки ftp сервера. Задача — предоставить возможность кому-то быстро залить файлик-другой прямиком к вам на компьютер. Решать эту задачу я решил ftp сервером с разрешением на заливку анонимусам. Больше ничего. Как только мне зальют мои файлики, я выключу фтп сервер, от греха подальше.

Ставим

sudo aptitude install vsftpd

Очень нетребовательный пакет, который кроме себя самого больше ничего не тянет. После установки появляется директория /home/ftp (drwxr-xr-x 3 root nogroup). Заходим в нее и создаем внутри директорию incoming, даем права на доступ всем желающим (chmod 777 incoming).

Правим конфигурацию:

sudo vi /etc/vsftpd.conf

 

Показываю только включенные опции:
listen=YES
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Что сможет наш анонимус на таком конфиге? Он сможет залить файл в incoming. Он НЕ СМОЖЕТ: прочесть собственный файл :), скачать что-либо себе от вас, создавать директории и заливать в них. Если хочется открыть и на скачивание доступ (от вашего фтп на клиента) то добавляем опцию download_enable=YES. Если запретить заливку на фтп, то write_enable=NO, anon_upload_enable=NO.

Залитые файлы будут помечаться следующими реквизитами: -rw——- 1 ftp nogroup, то есть — ничего нельзя! Меня устраивает. Впрочем, есть и проблемы. Если файл заливается с виндовса, да еще и имя имеет русскими буквами, то у вас имя будет выглядеть примерно так: ??????????? ???~01.05.2009.rar. Для решения кодировочной проблемы можно можно воспользоваться советом. В данный момент я уже себя корю, что не подумал о кодировках сразу. Но ладно.

Рестартуем сервер

sudo /etc/init.d/vsftpd restart

 

Дальше у кого как, кому-то больше ничего делать не нужно, а мне потребовалось открыть на своем роутере 21-й порт с пробросом на комп. Это, в общем, и всё. Оставайтесь на волне системного!

В этой маленькой статье описано как настроить ftp сервер vsFTPd на работу с разными кодировками,

по умолчанию он отдает пользователю список файлов и папок в кодировке системы.

Если вы используете Ubuntu, Debian то по умолчанию кодировка в системе UTF8 а у пользователей

Windows по умолчанию выставлено WIN1251. Стандартными средствами Windows у вас не получится

просматривать русские имена файлов и каталогов на вашем ftp сервере, но есть простое решение проблемы.

Официальный билд vsFTPd не поддерживает перекодировку на лету, но есть
модифицированная версия, переделанная русским разработчиком, в нее
включены несколько весьма полезных функций.
Скачаем последний билд с сайта В наличии там имеются сборки под все распространенные системы.
Если у вас еще нет установленного ftp сервера, то советую вам
ознакомится с руководством по его установке и настройке под виртуальных
пользователей
Если у вас уже установлен vsFTPd то советую вам на всякий случай сделать резервный копии файлов конфигурации.

Код:

cp /etc/vsftpd.conf ~
cp /etc/pam.d/vsftpd ~

Установите скачанный пакет, и отредактируйте файл конфигурации /etc/vsftpd.conf, добавив в него строки:

Код:

convert_charset_enable=1
local_charset=CP
remote_charset=CP

CP может принимать следующие значения: UTF8,
WIN1251 (1251), KOI8R (878), IBM866 (866), ISO-8859-5 (ISO5),
ISO-8859-1 (LATIN1 или ISO1), ISO-8859-15 (LATIN9 или ISO15), WIN1252
(1252), ISO-8859-2 (LATIN2 или ISO2), ISO-8859-16 (ISO16) или WIN1250
(1250).

Вписываем нужные нам значения, перезапускаем сервис vsFTPd командой /etc/init.d/vsftpd restart и поверяем результаты. Проблемы клиентов с кодировками в моем случае полностью исчезли.
О других дополнениях вы можете прочитать в руководстве к данному билду vsFTPd командой man vsftpd.conf