Контроль над передачей данных выполняет протокол TCP (Transmission Control Protocol), который гарантирует получателю доставку сообщения, поэтому FTP нет необходимости проверять были ли пакеты потеряны и произошли ли какие-нибудь ошибки во время их передачи. TCP гарантирует, пришли ли они без ошибок и в правильной последовательности.
Передача данных происходит тремя различными способами маркировки потока, которые могут означать конец файла (EOF) или двумя другими, использующими маркировку конца записи (EOR).
Определяют еще два различных режима:
ASCII-режим используется для передачи текстовой информации, а бинарный - для передачи других данных, обычно программ. Пользователю не нужно менять режимы при передачи своих данных, обычно функции определения их типа выполняет FTP-клиент.
Каждый пользователь должен понять, что пароли, передаваемые при авторизации, не шифруются , и на это нужно особо обратить внимание. Над этим стоит серьезно призадуматься. В октябре 1997 в RFC 2228[2] были опубликованы некоторые поправки, касающиеся безопасности FTP.
Название vsftpd произошло от "very secure FTP deamon" (чрезвычайно безопасный FTP-демон) который разрабатывается под руководством Chris Evans. С самого начала этапа разработки FTP-сервера, безопасности уделялось особое внимание.
К примеру, vsftpd можно запустить в chroot-среде. Это означает, что программа ( vsftpd)создает для нее новую корневую директорию (l), к которой не будут иметь доступ внешние программы или файлы. Поэтому, если FTP-сервер будет скомпрометирован злоумышленником, он не сможет выйти за пределы этой директории и нанести вред системе. Больше информации о chroot вы можете подчерпнуть из другой статьи [3]. Следующая статья [4] также рекомендуется к прочтению об этом интересном механизме безопасности в vsftpd
Среди многих требований предъявляемых к FTP-серверу, безопасность имеет наибольший приоритет, и в этом плане vsftpd значительно превосходит другие FTP-сервера. Достаточно упомянуть WU-FTPD[5] в котором было выявлено огромное количество ошибок за последние несколько лет.
После того как вы скачали и распаковали архив с исходниками, зайдите в созданную распаковщиком директорию и запустите make. Ниже показан один из способов, как можно это сделать:
neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gzneo5k@phobos> cd vsftpd-x.x.xneo5k@phobos> make
neo5k@phobos> mkdir /var/ftpneo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftpneo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
neo5k@phobos> cp vsftpd /usr/sbin/vsftpdneo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5neo5k@phobos> cp vsftpd.8 /usr/share/man/man8
neo5k@phobos> cp vsftpd.conf /etc
# Это - комментарий
# Разрешать ли анонимный доступ ? YES/NOanonymous_enable=NO # Разршать ли загрузку файлов анонимному пользователю? YES/NOanon_upload_enable=NO # Разрешать ли анонимному пользователю создавать свои директории ? YES/NOanon_mkdir_write_enable=NO # Разрешать ли пользователю производить операции с записью, такие как перименование или удаление ? YES/NOanon_other_write_enable=NO # Регистрировать ли сообщения локальных пользователей ? YES/NOlocal_enable=YES # Должны ли пользователи находится только в своих директориях ? YES/NOchroot_local_user=YES # Максимальная скорость передачи данных для зарегистрированных пользователей. По-умолчанию = 0 (неограниченная).local_max_rate=7200 # Разрешать ли запись в каталог ? YES/NOwrite_enable=YES # Включать сообщения при смене директории ? YES/NOdirmessage_enable=YES # Показ баннера при регистрации пользователя.ftpd_banner="Welcome to neo5k's FTP service." # Включить регистрацию событий ? YES/NOxferlog_enable=YES # Регистрировать все ативные FTP-соединения ? YES/NO# Осторожно! Возможно на экране будет огромное количество информации.log_ftp_protocol=NO # Разрешать соединения только на порт 20 (ftp data) ? YES/NOconnect_from_port_20=YES # Таймаут сессииidle_session_timeout=600 # Таймаут передачи данныхdata_connection_timeout=120 # Предоставлять вход через Pluggable Authentication Modules (PAM)pam_service_name=vsftpd # Запускать вручную ? YES/NO - зависит от режима (inetd, xinetd, Standalone).# У автора FTP-сервис запускается через xinetd, поэтому у него стоит значение NO.listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpdftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# vsftp daemon.service ftp{ disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10}
# Должен ли vsftpd-демон запускаться вручную? YES/NOlisten=YES
neo5k@phobos> /usr/sbin/vsftpd &
neo5k@phobos> vsftpd &
neo5k@phobos> echo $PATH/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobosConnected to phobos220 "Welcome to neo5k's FTP service."Name (phobos:neo5k): testuser331 Please specify the password.Password:230 Login successfulRemote system type is UNIX.Using binary mode to transfer files.ftp> ls -l229 Entering Extended Passive Mode150 Here comes the directory listingdrwxr-xr-x 11 500 100 400 May 07 16:22 docsdrwxr-xr-x 9 500 100 464 Feb 01 23:05 hldsdrwxr-xr-x 39 500 100 4168 May 10 09:15 projects226 Directory send OK.ftp>