Установка FTPD FreeBSD
Открываем /etc/inetd.conf и раскомментируем следующую строчку:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
К ней еще добавляем несколько ключей:
– h – сервер не выдает информации об установленном software;
– S – запись логов анонимных подключений в /var/log/ftpd, если такой файл существует;
– m – разрешение анонимным пользователям удалять файлы;
– d – в debug.log пишется все по ftp-подключениям;
– l – запись в лог удачной или неудачной сесии. Можно указывать дважды, тогда в логах будут отображаиться команды get, put, append, delete, make directory, remove directory, rename.
Все эти опции по желанию. Итого имеем строчку в inetd.conf:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -h -S -m
Для анонимного доступа используется пользователь ftp, т.е. прописывая логин anonymous в ftp-клиенте, на ftp-сервер вход происходит по логину ftp. Теперь нужно определить каталог для анонимного доступа. Это можно делать через Sysinstall или же отредактировать /etc/master.passwd. Для начала поставим любимый текстовый редактор по умолчанию:
#ee /root/.cshrc
в находим строку “setenv EDITOR” и прописываем “setenv EDITOR ee”
Теперь воспользуемся командой vipw. Она запускает тестовый редактор, который мы определили – ee, после выхода запускает pwd_mkdb, которая в свою очередь из master.passwd создает /etc/spwd.db. Запустили и смотрим на юзера ftp и прописываем ему домашний каталог /home/ftp:
ftp:*:14:5::0:0:Anonymous FTP Admin:/home/ftp:/nonexistent
Сам каталог /home/ftp должен существовать, в нем необходимо создать каталоги pub для чтения и incoming для записи и задать права 755 и 777 соответственно:
# mkdir pub
# mkdir incoming
# chmod 755 pub
# chmod 777 incoming
По умолчанию логи складываются в /var/log/xferlog. Я хочу, чтобы все писалось в /var/log/ftpd.log, для этого в /etc/syslog.conf добавляем:
!ftpd
*.* /var/log/ftpd.log
и комментируем:
#ftp.info /var/log/xferlog
Теперь нужно демонам inetd и syslogd дать команду SIGSUP и ftpd заработает:
# ps ax|grep inetd
663 ?? Is 0:00,08 /usr/sbin/inetd -wW -C 60
4259 p0 RL+ 0:00,00 grep inetd
# ps ax | grep syslogd
483 ?? Ss 0:00,29 /usr/sbin/syslogd -s
4261 p0 S+ 0:00,00 grep syslogd
# kill -HUP 663
# kill -HUP 483
Получаем работающий ftp-сервер, смотрим в /var/log/ftpd.log:
Mar 10 18:16:47 server ftpd[4262]: connection from 192.168.0.8 (192.168.0.8)
Mar 10 18:16:49 server ftpd[4262]: ANONYMOUS FTP LOGIN FROM 192.168.210.8,
Mar 10 18:16:49 server ftpd[4262]: session root changed to /home/ftp
Mar 10 18:17:08 server ftpd[4262]: put test.txt = 0 bytes (wd: /incoming; chrooted)
Mar 10 18:17:16 server ftpd[4262]: delete test.txt (wd: /incoming; chrooted)
FTP-сервер может работать в активном и пассивном режиме. При передаче данных используются 2 порта: порт “данных” и порт “команд”(управления).
При активном режиме клиент соединяется с порта N > 1024 на 21 порт ftp-сервера. Далее клиент слушает порт N+1 и на сервер посылает команду PORT N+1, в ответ сервер со своего 20 порта соединяется с портом N+1 клиента.
При пассивном соединении клиент локально открывает 2 порта N>1024 и N+1. Первый порт соединяется с 21 портом сервера, далее клиент выдает серверу команду PASV (в отличии от активного PORT). В результате сервер у себя открывает порт P>1024 и посылает клиенту команду PORT P. Затем, получив от сервера порт P, клиент соединяется со своего N+1 порта с портом P сервера. Преимущества пассивного режима в том, что клиент сам инициируют 2 порта для подключения, даже если он находится NAT-ом, с оединения с ftp-сервером установится. При этом типе соединения ftpd будет использовать порты из диапазона 49152-65535 ( если есть фаервол – их нужно открыть). Этот диапазон описан переменными IPPORT_HIFIRSTAUTO и IPPORT_HILASTAUTO в /usr/include/netinet/in.h.
Источник информации:
1. http://www.bsdportal.ru/viewtopic.php?t=13345
2. http://asmodeus.com.ua/library/os/linux/admin_bsd.htm#vipw
3. http://www.opennet.ru/man.shtml?topic=ftpd-BSD&category=8&russian=0
4. man ftpd, man syslog, man syslog.conf
© mick, 2007.