[LinuxFocus-icon]
<--  | Домой  | Карта  | Индекс  | Поиск

Новости | Архивы | Ссылки | Про LF
[an error occurred while processing this directive]
[Photo of the Author]
автор Mario M. Knopf
<netzmeister/at/neo5k/dot/org>

Об авторе:

Mario нравится Linux, сети и темы связанные с компьютерной безопасностью. В свое свободное время он занимается двумя сайтами : neo5k.org и linuxwallpapers.de.



Перевод на Русский:
Лебедев Александр Сергеевич <slice(at)list.ru>

Содержание:

 

vsftpd - Введение в безопасный FTP-демон

vsftp

Резюме:

Эта статья описывает основные возможности "Very Secure FTP Daemon". Я начну с описания основ работы FTP и vsftpd. После этого мы произведем установку и настройку vsftpd-демона. И закончим тестом работоспособности нашего сервера.

_________________ _________________ _________________

 

Введение

File Transfer Protocol (FTP) предназначен для передачи данных в интернете независимо от платформы на которой он установлен, он основан на клиент/сервер архитектуре. RFC 959[1] определяет FTP разделив его на 2 различных канала. Один служит для отправки данных (через TCP-порт 20), а другой для передачи комманд (TCP-порт 21). Этим каналом управляют клиент и сервер, обмениваясь друг с другом информацией о передаваемых данных.
FTP соединение происходит в несколько этапов:

Контроль над передачей данных выполняет протокол TCP (Transmission Control Protocol), который гарантирует получателю доставку сообщения, поэтому FTP нет необходимости проверять были ли пакеты потеряны и произошли ли какие-нибудь ошибки во время их передачи. TCP гарантирует, пришли ли они без ошибок и в правильной последовательности.

Передача данных происходит тремя различными способами маркировки потока, которые могут означать конец файла (EOF) или двумя другими, использующими маркировку конца записи (EOR).

Определяют еще два различных режима:

ASCII-режим используется для передачи текстовой информации, а бинарный - для передачи других данных, обычно программ. Пользователю не нужно менять режимы при передачи своих данных, обычно функции определения их типа выполняет FTP-клиент.

Каждый пользователь должен понять, что пароли, передаваемые при авторизации, не шифруются , и на это нужно особо обратить внимание. Над этим стоит серьезно призадуматься. В октябре 1997 в RFC 2228[2] были опубликованы некоторые поправки, касающиеся безопасности FTP.

 

vsftpd

vsftpd - представляет собой сервер для Linux-подобных операционных систем, он запускается на таких платформах как Linux, *BSD, Solaris, HP-UX и IRIX. Он включает в себя множество полезных функций, которых нет в других 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] в котором было выявлено огромное количество ошибок за последние несколько лет.

 

Инсталляция

Установку vsftpd можно легко произвести из rpm-пакета, который входит во многие дистрибутивы. Также его можно установить из исходников, которые можно найти здесь [6].

После того как вы скачали и распаковали архив с исходниками, зайдите в созданную распаковщиком директорию и запустите make. Ниже показан один из способов, как можно это сделать:

neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make

Настоятельно рекомендуется проверить существует ли пользователь "nobody", а также проверить наличие директории "/usr/share/empty" и если ее нет, то создать ее. Если планирутся предоставить доступ анонимным пользователям, то также потребуется создать пользователя"ftp" и предоставить ему домашнюю директорию "/var/ftp". Это можно сделать при помощи следующих комманд:

neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp

Для обеспечения безопасности директория"/var/ftp" не должна принадлежать пользователю"ftp" с правами записи. Следующие две команды позволяют сменить владельца папки и отобрать у него эти привелегия.

neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp

После всего этого мы можем приступить к установке vsftp-демона:

neo5k@phobos> make install

Man-страницы, а также сама программа должны быть скопированы в надлежащие директории. В случае каких-нибудь проблем сделайте это самостоятельно.

neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8

Пока не скопирован конфигурационный файл - сделаем наше вступление более доступным - начнем новый раздел:

neo5k@phobos> cp vsftpd.conf /etc

 

Конфигурирование

Файл конфигурации может быть найден в директории "/etc" под именем "vsftpd.conf". Как и в большинствах конфигурационных файлах комментарий обозначается знаком #("решетка").

# Это - комментарий

Простейшая конфигурация демона может выглядеть примерно вот так:

# Разрешать ли анонимный доступ ? YES/NO
anonymous_enable=NO
 
# Разршать ли загрузку файлов анонимному пользователю? YES/NO
anon_upload_enable=NO
 
# Разрешать ли анонимному пользователю создавать свои директории ? YES/NO
anon_mkdir_write_enable=NO
 
# Разрешать ли пользователю производить операции с записью, такие как перименование или удаление ? YES/NO
anon_other_write_enable=NO
 
# Регистрировать ли сообщения локальных пользователей ? YES/NO
local_enable=YES
 
# Должны ли пользователи находится только в своих директориях ? YES/NO
chroot_local_user=YES
 
# Максимальная скорость передачи данных для зарегистрированных пользователей. По-умолчанию = 0 (неограниченная).
local_max_rate=7200
 
# Разрешать ли запись в каталог ? YES/NO
write_enable=YES
 
# Включать сообщения при смене директории ? YES/NO
dirmessage_enable=YES
 
# Показ баннера при регистрации пользователя.
ftpd_banner="Welcome to neo5k's FTP service."
 
# Включить регистрацию событий ? YES/NO
xferlog_enable=YES
 
# Регистрировать все ативные FTP-соединения ? YES/NO
# Осторожно! Возможно на экране будет огромное количество информации.
log_ftp_protocol=NO
 
# Разрешать соединения только на порт 20 (ftp data) ? YES/NO
connect_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

 

Запуск FTP-службы

vsftpd может быть запущен тремя различными способами. Первый способ - запуск через inetd или xinetd, третий - запускать сервер вручную.  

inetd

Если FTP-сервис должен запускаться через inetd, то следует поместить следующие строчки в конфигурационный файл "/etc/inetd.conf" :

neo5k@phobos> vi /etc/inetd.conf

Далее, надо найти строку, в которой упоминается FTP, раскомментировать ее, и в конце строки вписать vsftpd . Затем следует перезапустить inetd. У вас должно получиться примерно  так, как показано ниже:
# ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   in.ftpd
ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
 

xinetd

Рекомендуется запускать vsftp именно таким способом, так как xinetd намного новее, чем inetd. В нем есть такие вещи как регистрация запросов, контроль доступа, привязка сервиса к определенному сетевому интерфейсу и т.д. Очень хорошая статья, посвященная xinetd находиться здесь[7]. После изменений в конфигурационном файле перезапустите xinetd . Этот файл может выглядеть примерно вот так:
# 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
}
 

Ручной способ

Существует также возможность запуска vsftp вручную. Для этого откройте его конфиг и внесите следующие изменения:

# Должен ли vsftpd-демон запускаться вручную? YES/NO
listen=YES

После этого можно запустить сервер:

neo5k@phobos> /usr/sbin/vsftpd &

А если было правильно указано, в какой папке искать в первую очередь, то просто:

neo5k@phobos> vsftpd &

Просмотреть, является ли эта папка проверяемой по-умолчанию можно вот так:

neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin

Естественно, если мы запускаем сервер вручную, мы должны убедиться, что сервер не запущен при помощи inetd или xinetd.  

Проверка работы

После удачной инсталляции и конфигурирования давайте проверим доступ к FTP-серверу:
neo5k@phobos> ftp phobos
Connected to phobos
220 "Welcome to neo5k's FTP service."
Name (phobos:neo5k): testuser
331 Please specify the password.
Password:
230 Login successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -l
229 Entering Extended Passive Mode
150 Here comes the directory listing
drwxr-xr-x 11 500 100 400 May 07 16:22 docs
drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds
drwxr-xr-x 39 500 100 4168 May 10 09:15 projects
226 Directory send OK.
ftp>
 

Вывод

Как вы наверно уже убедились, vsftp не является сложным ни в инсталляции, ни в конфигурировании. Однако он является достаточно функциональным средством и предоставляет высокий уровень безопасности.

Конечно, эта статья описывает лишь малую часть того, что может предоставить нам vsftpd, раскрыты не все аспекты его конфигурирования. Если вы хотите найти больше информации о vsftpd , то вы можете посетить его домашнюю страничку [6]и прочитать более подробную документацию.

 

Ссылки

[1] ftp://ftp.rfc-editor.org/in-notes/rfc959.txt [RFC 959 - File Transfer Protocol]
[2] ftp://ftp.rfc-editor.org/in-notes/rfc2228.txt [RFC 2228 - FTP Security Extensions]
[3] linuxfocus.org: article225, January2002 [chroot]
[4] http://vsftpd.beasts.org/DESIGN [Security vsftpd]
[5] http://www.wu-ftpd.org/ [WU-FTPD]
[6] http://www.vsftpd.beasts.org/ [Домашняя страница vsftpd]
[7] linuxfocus.org: article 175, November2000 [xinetd]

 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей
 talkback page 

<--, перейти к начальной странице выпуска

Webpages maintained by the LinuxFocus Editor team
© Mario M. Knopf
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
de --> -- : Mario M. Knopf <netzmeister/at/neo5k/dot/org>
de --> en: Jürgen Pohl <sept.sapins/at/verizon.net>
en --> ru: Лебедев Александр Сергеевич <slice(at)list.ru>

2004-11-01, generated by lfparser version 2.48