Архив метки: ftp

FreeBSD настройка ftpd.

Настраиваем штатный ftpd для FreeBSD 9.0 RELEASE.

Добавляем группу и пользователя ftp. Открываем файл /etc/group — добавляем группу ftp.

ftp:*:21:

Файл /etc/master.passwd — добавляем пользователя ftp.

ftp:*:21:21::0:0:FTPD pseudo-user:/wwwroot/pub:/usr/sbin/nologin

Обновляем базу пользователей вручную.

pwd_mkdb -p /etc/master.passwd

Создаем домашний каталог пользователя для анонимного ftp доступа если необходимо.

mkdir /wwwroot
mkdir /wwwroot/ftp

Меняем владельца и права.

chown ftp:ftp /wwwroot/ftp
chmod 555 /wwwroot/ftp

Добавляем в /etc/rc.conf следующие строчки для запуска в режиме демона.

ftpd_enable="YES"
ftpd_flags="-l"

Запускаем.

/etc/rc.d/ftpd start

проверяем что получилось.

# ps -x | grep ftpd
22255  ??  Is      0:00.00 /usr/libexec/ftpd -D -l
22371   0  S+      0:00.00 grep ftpd

Второй способ — через inetd — по факту не используется. В /etc/rc.conf добавляем

inetd_enable="YES"

и раскоментируем строчку в файле /etc/inetd.conf

ftp    stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l

и даем команду

/etc/rc.d/inetd start

Результат — мы настроили анонимный FTP сервер, анонимный пользователь может только читать, логи подключений пишутся в файл по умолчанию /var/log/xferlog.
Дополнительные настройки.
/etc/ftpwelcome – приветственное сообщение выводимое сервером до ввода логина и пароля.
/etc/ftpmotd – приветственное сообщение, выводимое при удачном входе на сервер.
/etc/ftphosts – настройка виртуальных хостов.
/etc/ftpchroot — настройка chroot для пользователей. Например для пользователя test делать chroot в каталог /wwwroot/test/html, для всех пользователей группы ftptest — chroot в каталог /wwwroot/test, для пользователей группы www — chroot в свои домашние каталоги.

test /wwwroot/test/html
@ftptest /wwwroot/test
@www

Незабываем про настройку файервола если используется, дополнительно можно воспользоватся настройками в файле /etc/hosts.allow для разрешения/запрещения коннектов с тех или иных адресов.

ftpd : localhost : allow
ftpd : 192.168.4.23 : deny
ftpd : .nice.guy.example.com : allow
ftpd : .evil.cracker.example.com : deny
ftpd : ALL : allow

Но помним — проблемы с настройкой пассивного режима работы — актуально если необходимо обслуживать соединения из-за NAT.

Дополнительные ключи ftpd.

-4      Когда указана опция -D, принимать соединения через сокет AF_INET.

-6      Когда указана опция -D, принимать соединения через сокет AF_INET6.

-8      Разрешить прозрачный режим UTF-8. Клиенты, совместимые со стандартом RFC 2640 оповещаются об использовании сервером символов в кодировке UTF-8. Эта опция не включает любые перекодировки имен файлов сервера; это работает для имен файлов сервера, закодированных в UTF-8. При выкачке (upload) файлов на FTP включается для клиентов, совместимых с RFC 2640, перекодировка из локальной кодировки клиента в UTF-8. FTP команды и собственные сообщения ftpd в любом случае кодируются в ASCII, который является подмножеством UTF-8. Следовательно, здесь не нужна перекодировка на сервере.

-A      Разрешается только анонимный доступ к ftp.

-a      Когда указана опция -D, соединения принимаются только от указанного адреса.

-D      Когда указана эта опция, ftpd отсоединяется от консоли и становится демоном, принимающим соединения через порт FTP и порождающим (forking) дочерние процессы для поддержки запросов. Это обеспечивает меньшие траты ресурсов в сравнении с запуском ftpd через inetd(8) и полезно для применения на нагруженных серверах для уменьшения нагрузки.

-d      Отладочная информация будет записываться в лог с изпользованием LOG_FTP.

-E      Запретить команду EPSV. Это хорошо применять для серверов за файерволом.

-h      Запрет вывода в сообщениях сервера информации, специфичной для хоста, такой как версия ПО сервера или имя хоста.

-l      Каждая успешная и ошибочная ftp(1) сессия записывается через syslog LOG_FTP. Если эта опция указана дважды, то записыватся команды retrieve (get), store (put), append, delete, make directory, remove directory и операции rename вместе с именами файлов и аргументами. По умолчанию, syslogd(8) записывает эти сообщения в /var/log/xferlog.

-M      Предотвращает создание анонимными (anonymous) пользователями директорий.

-m      Разрешает анонимным пользователям перезаписывать или модифицировать существующие файлы, если это разрешено правами файловой системы. По умолчанию anonymous не может модифицировать существующие файлы; в частности, файлы для выгрузки на сервер (upload) должны создаваться с уникальными именами.

-O      Переводит сервер а режим write-only только для anonymous. Команда RETR запрещена для anonymous, что предотвращает анонимные загрузки (downloads) с сервера. Не дает эффекта, если также указана опция -o.

-o      Переводит сервер а режим write-only. Команда RETR запрещена для всех, что предотвращает загрузку информации с сервера.

-P      Когда указана опция -D, принимает соединения на указанном порту, указанном как числовая величина или имя сервиса, вместо порта «ftp» по умолчанию.

-p      Когда указана опция -D, записывает файл process ID в указанный файл вместо pid-файла по умолчанию /var/run/ftpd.pid.

-R      Когда указана эта опция, ftpd возвращается к историческому поведению по отношения к проверкам безопасности операций пользователей и ограничениям по запросам PORT. В настоящий момент ftpd поддерживает только команды PORT, направленные на непривилегированные порты для удаленных пользователей хоста (которые нарушают спецификацию протокола FTP, однако закрывают некоторые дыры в безопасности).

-r      Переводит сервер с режим read-only (только для чтения). Все команды, которые могут модифицировать файловую систему, запрещены.

-S      Когда указана эта опция, ftpd пишет в лог /var/log/ftpd все загрузки файлов anonymous, если этот файл лога существует.

-T      Клиент может также запрашивать отличеющийся период таймаута; максимально разрешенный период таймаута, который может быть установлен, задается опцией -T в секундах. Лимит по умолчанию 2 часа.

-t      Таймаут неактивности в секундах (по умолчанию 15 минут).

-U      Эта опция инструктирует ftpd использовать порты данных в диапазоне IP_PORTRANGE_DEFAULT вместо IP_PORTRANGE_HIGH. Это изменение полезно для некоторых специфичных конфигураций файерволла; см. ip(4) для дополнительной информации.

Примите к сведению, что эта опция является виртуальной и не работает на FreeBSD 5.0 выше; оба диапазона портов на них по умолчанию идентичны.

-u      Маска создания режима файла по умолчанию (file creation mode mask) устанавливается в umask, которая ожидается в восьмеричной числовой величине. См. umask(2) для деталей. Эта опция может быть переустановлена (запрещена) через login.conf(5).

-v      Синоним -d.

-W      Не записывать в лог /var/log/wtmp сессии FTP.