Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
119
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 32. ProFTPD – FTP-сервер

481

# We want clients to UserAlias

be able to login with "anonymous" as well as "ftp". anonymous ftp

# Limit the maximum number of anonymous logins.

MaxClients

10000

# Limit WRITE everywhere in the anonymous chroot jail. <Limit WRITE>

DenyAll </Limit>

#Upload directory that allows storing files but #not retrieving or creating directories.

<Directory uploads/*> HiddenStor on

<Limit READ RMD DELE MKD> DenyALL

</Limit>

<Limit STOR CWD> AllowAll

</Limit>

</Directory>

</Anonymous>

В блоке, ограниченном директивами <Directory uploads/*> и </Directory>, содержатся директивы, используемые для конфигурирования загрузки файлов анонимными пользователями.

Директива:

HiddenStor on

запрещает сохранение не полностью загруженных и поврежденных файлов. Блок директив:

<Limit READ RMD DELE MKD> DenyAll

</Limit>

запрещает чтение, перемещение, удаление и создание файлов и подкаталогов в каталоге /home/ftp/uploads для всех пользователей.

Блок директив:

<Limit STOR CWD> AllowAll

</Limit>

разрешает всем анонимным пользователям загружать файлы в каталог /home/ftp/uploads.

Шаг 5

Установите права доступа к файлу /etc/proftpd.conf и назначьте его владельцем пользователя

root:

[root@test /]# chmod 640 /etc/proftpd.conf [root@test /]# chown 0.0 /etc/proftpd.conf

Шаг 6 Создайте остальные конфигурационные файлы в соответствии с рекомендациями раздела «Конфигу-

рирование ProFTPD c аутентификацией пользователей».

Шаг 7

Протестируйте анонимный доступ к FTP-серверу, в соответствии с рекомендациями раздела «Тести-

рование ProFTPD».

482

Часть 9. Программное обеспечение для организации службы FTP-сервера

Глава 33

vsftpd – безопасный FTP-сервер

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Установка из rpm-пакетов

4.Компиляция, оптимизация и инсталляция vsftpd

5.Конфигурирование vsftpd c аутентификацией пользователей

6.Конфигурационный файл /etc/vsftpd.conf

7.Конфигурационный файл /etc/pam.d/ftp

8.Конфигурационный файл /etc/ftpusers

9.Конфигурационный файл /etc/logrotate.d/vsftpd

10. Файл инициализации /etc/init.d/vsftpd

11. Создание учетной записи FTP-клиента для соединения с FTP-сервером 12. Конфигурирование vsftpd в режиме анонимного FTP-сервера

13. Тестирование vsftpd

Глава 33. vsftpd – безопасный FTP-сервер

483

Если вам необходим высокопроизводительный и безопасный FTP-сервер, не реализующий экзотические варианты настроек, например поддержку протокола SSL, авторы настоятельно рекомендуют использовать программу vsftpd. С нашей точки зрения, vsftpd является идеальным вариантом для реализации сервера анонимного доступа. Он предельно прост в инсталляции и настройке и может быть рекомендован пользователям и системным администраторам, не имеющим опыта организации службы ftp.

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp.

Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).

Перекомпиляция ядра не требуется.

Процедуры, описанные в этой главе, могут оказаться применимыми и для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта vsftpd по состоянию на 09.07.2003. Регулярно посещайте домашнюю страницу проекта http://vsftpd.beasts.org и отслеживайте обновления.

Исходные коды vsftpd содержатся в архиве vsftpd-version.tar.gz (последняя доступная на момент написания главы стабильная версия vsftpd-1.2.0.tar.gz).

Инсталляция с помощью rpm-пакетов

Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением, установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие операции.

ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.

Шаг 1

Проверьте, установлен ли пакет программы vsftpd с помощью следующей команды:

[root@test /]# rpm –iq vsftpd

Шаг 2

Перейдите в каталог, где находится пакет vsftpd-1.0.1-5.asp.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:

[root@test /]# cd /home/distrib

и установите:

[root@test distrib]# rpm -ihv vsftpd-1.0.1-5.asp.i386.rpm

или обновите пакет:

[root@test distrib]# rpm –Uhv vsftpd-1.0.1-5.asp.i386.rpm

После установки пакета перейдите к настройке программы.

Компиляция, оптимизация и инсталляция vsftpd

Для инсталляции vsftpd из архива с исходными кодами необходимо выполнить следующие операции.

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодами

с использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляция

OpenSSL» главы 12.

Шаг 2

Распакуйте архивы с исходными кодами vsftpd в каталоге /var/tmp:

484

Часть 9. Программное обеспечение для организации службы FTP-сервера

[root@test tmp]# tar xzpf vsftpd-1.2.0.tar.gz

Шаг 3

Создайте специального пользователя ftp, от имени которого будет выполняться vsftpd:

[root@test tmp]# groupadd -g 24 ftp > /dev/null 2>&1 || :

[root@test tmp]# useradd -u 24 -g 24 -s /bin/false -M -r -d /home/ftp ftp

> /dev/null 2>&1 || :

Шаг 4

Для добавления несуществующего командного интерпретатора, «используемого» пользователем ftp добавьте (проверьте наличие) в файл /etc/shells строку:

/bin/false/

Шаг 5

Для того, чтобы изменить каталоги, используемые по умолчанию в файле /var/tmp/vsftpd- 1.2.0/Makefile, замените строки:

install:

if [ -x /usr/local/sbin ]; then \

$(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \ else \

$(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi if [ -x /usr/local/man ]; then \

$(INSTALL) -D -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \ $(INSTALL) -D -m 644 vsftpd.conf.5

/usr/local/man/man5/vsftpd.conf.5; \ elif [ -x /usr/share/man ]; then \

$(INSTALL) -D -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \ $(INSTALL) -D -m 644 vsftpd.conf.5

/usr/share/man/man5/vsftpd.conf.5; \ else \

$(INSTALL) -D -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \ $(INSTALL) -D -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5;

fi

if [ -x /etc/xinetd.d ]; then \

$(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi

на: install:

$(INSTALL) -m 0511 vsftpd /usr/sbin/vsftpd

$(INSTALL) -D -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8 $(INSTALL) -D -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5

Шаг 6

Откомпилируйте, проинсталлируйте vsftpd, создайте и сохраните в надежном месте список установленных файлов:

[root@test tmp]# cd vsftpd-1.2.0

[root@test vsftpd-1.2.0]# make CFLAGS="-O2 -march=i686 -funroll-loops"

[root@test vsftpd-1.2.0]# find /* > /root/vsftpd1 [root@test vsftpd-1.2.0]# make install

[root@test vsftpd-1.2.0]# find /* > /root/vsftpd2

[root@test vsftpd-1.2.0]# diff /root/vsftpd1 /root/vsftpd2 >

/root/vsftpd.installed

[root@test vsftpd-1.2.0]# mv /root/vsftpd.installed

/very_reliable_place/vsftpd.installed.YYYYMMDD

Шаг 7 Удалите архив и каталог с исходными кодами:

[root@test vsftpd-1.2.0]# cd /var/tmp/

[root@test tmp]# rm -rf vsftpd-1.2.0/ [root@test tmp]# rm -f vsftpd-1.2.0.tar.gz

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

Глава 33. vsftpd – безопасный FTP-сервер

485

Конфигурирование vsftpd осуществляется с использованием следующих файлов:

главного конфигурационного файла /etc/vsftpd.conf;

файла поддержки аутентификации пользователей с использованием модулей PAM

/etc/pam.d/ftp;

файла /etc/ftpusers, содержащего список пользователей, которым запрещен доступ к FTP-

серверу;

файла настройки чередования регистрационных файлов /etc/logrotate.d/vsftpd;

файла инициализации /etc/init.d/vsftpd.

Конфигурирование vsftpd c аутентификацией пользователей

Конфигурационный файл /etc/vsftpd.conf

Шаг 1

Создайте файл /etc/vsftpd.conf, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 xferlog_enable=YES connect_from_port_20=NO one_process_model=NO nopriv_user=ftp

ftpd_banner=TEST FTP SERVER TEST.BRUY.INFO chroot_local_user=YES

В нем строка: listen=YES

предписывает запускать vsftpd в качестве автономного демона. Строка:

anonymous_enable=NO

запрещает доступ анонимным пользователям. Строка:

local_enable=YES

разрешает доступ пользователям, прошедшим аутентификацию. Строка:

write_enable=YES

разрешает осуществлять запись в пользовательские каталоги. Строка:

local_umask=022

определяет права доступа к вновь создаваемым пользователями файлам. Значение 022 соответствует правам доступа -rw-r--r--.

Строка:

xferlog_enable=YES

предписывает регистрацию загрузки vsftpd и файлов с FTP-сервера пользователями в файлы каталога

/var/log/messages.

Строка:

connect_from_port_20=NO

позволяет выполнять vsftpd с меньшими правами доступа, однако некоторые клиенты могут требовать подключения на 20 порту. Попробуйте запускать свой сервер с отключенной опцией connect_from_port_20, если возникнут проблемы, то включите ее.

Строка:

one_process_model=NO

По умолчанию vsftpd обслуживает соединение двумя процессами. На сильно загруженных FTP-серверах это может привести к падению производительности. Поэтому, если ваш FTP-сервер поддерживает большое число пользователей, лучше разрешить эту опцию, т. е. изменить установленное нами значение "no" на "yes".

Строка: nopriv_user=ftp

486 Часть 9. Программное обеспечение для организации службы FTP-сервера

определяет имя пользователя, от имени которого запускается vsftpd. Строка:

ftpd_banner=TEST FTP SERVER TEST.BRUY.INFO

определяет содержание строкового сообщения, отображаемого при подключении FTP-клиента к серверу. Строка:

сhroot_local_user=YES

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

Шаг 2

Установите права доступа к файлу /etc/vsftpd.conf и назначьте его владельцем пользователя

root:

[root@test /]# chmod 600 /etc/vsftpd.conf [root@test /]# chown 0.0 /etc/vsftpd.conf

Конфигурационный файл /etc/pam.d/ftp

Этот файл используется для поддержки аутентификации пользователей с использованием стандартных модулей PAM.

Шаг 1

Создайте файл /etc/pam.d/ftp, содержащий следующие строки:

#%PAM-1.0

auth

required

/lib/security/pam_listfile.so item=user

sense=deny

file=/etc/ftpusers onerr=succeed

auth

required

/lib/security/pam_stack.so service=system-auth

auth

required

/lib/security/pam_shells.so

account

required

/lib/security/pam_stack.so service=system-auth

session

required

/lib/security/pam_stack.so service=system-auth

Шаг 2

Установите права доступа к файлу /etc/pam.d/ftp и назначьте его владельцем пользователя

root:

[root@test /]# chmod 640 /etc/pam.d/ftp [root@test /]# chown 0.0 /etc/pam.d/ftp

Конфигурационный файл /etc/ftpusers

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

Шаг 1

Внесите в файл /etc/ftpusers всех привилегированных пользователей вашей системы:

root;

bin;

daemon;

sync;

mail;

nobody;

named;

rpm;

www;

mysql.

Шаг 2

Установите права доступа к файлу /etc/ftpusers и назначьте его владельцем пользователя root:

[root@test /]# chmod 600 /etc/ftpusers [root@test /]# chown 0.0 /etc/ftpusers

Конфигурационный файл /etc/logrotate.d/vsftpd

Глава 33. vsftpd – безопасный FTP-сервер

487

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

Шаг 1

Создайте файл /etc/logrotate.d/vsftpd, содержащий следующие строки:

/var/log/vsftpd.log { nocompress missingok

Шаг 2

Установите права доступа к файлу /etc/logrotate.d/vsftpd и назначьте его владельцем пользователя root:

[root@test /]# chmod 640 /etc/logrotate.d/vsftpd [root@test /]# chown 0.0 /etc/logrotate.d/vsftpd

Файл инициализации /etc/init.d/vsftpd

Шаг 1

Для запуска и остановки демона vsftpd создайте файл /etc/init.d/vsftpd, содержащий следующие строки:

#!/bin/bash

#This shell script takes care of starting and stopping vsftpd.

#chkconfig: 345 58 74

#description: vsftpd is the FTP-server.

#Source function library.

. /etc/init.d/functions

#Source networking configuration.

. /etc/sysconfig/network

#Source for additional options if we have them. if [ -f /etc/sysconfig/vsftpd ];then

. /etc/sysconfig/vsftpd

fi

#Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

#If vsftpd is not available stop now. [ -f /usr/sbin/vsftpd ] || exit 0

[ -f /etc/vsftpd.conf ] || exit 0

#Path to the vsftpd binary. vsftpd=/usr/sbin/vsftpd

RETVAL=0

prog="vsftpd"

start() {

echo строка запуска $vsftpd $OPTIONS echo -n $"Starting $prog: "

daemon $vsftpd $OPTIONS & RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/vsftpd return $RETVAL

}

stop() {

echo -n $"Shutting down $prog: " killproc $vsftpd

RETVAL=$?

488

Часть 9. Программное обеспечение для организации службы FTP-сервера

echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/vsftpd return $RETVAL

}

# See how we were called. case "$1" in

start)

start

;;

stop)

stop

;;

status)

status $vsftpd RETVAL=$?

;;

restart) stop start

RETVAL=$?

;;

condrestart)

if [ -f /var/lock/subsys/vsftpd ]; then stop

start RETVAL=$?

fi

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart}" exit 1

esac

exit $RETVAL

Шаг 2

Установите права доступа к файлу, назначьте его владельцем пользователя root и создайте соответствующие ссылки:

[root@test /]# chmod 700 /etc/init.d/vsftpd [root@test /]# chown 0.0 /etc/init.d/vsftpd

Шаг 3

Если вы хотите, чтобы vsftpd запускался автоматически при загрузке системы, создайте соответствующие ссылки:

[root@test /]# chkconfig --add vsftpd [root@test /]# chkconfig --level 345 vsftpd on

Создание учетной записи FTP-клиента для соединения с FTP-сервером

Для того, чтобы пользователь мог установить соединение с FTP-сервером необходимо создать соответствующую учетную запись. Для этого необходимо выполнить следующие операции.

Шаг 1

Создайте учетную запись для пользователя, например karlnext, которому будет разрешен доступ к FTP-серверу:

[root@test /]# ureradd -g urers -d /home/karl_next -s /bin/false karlnext

Шаг 2

Задайте пароль для пользователя karlnext:

[root@test /]# passwd karlnext

Changing password for user karlnext New UNIX password:

Глава 33. vsftpd – безопасный FTP-сервер

489

Retype new UNIX password:

passwd: all authentication tokens updated successfully

Конфигурирование vsftpd в режиме анонимного FTP-сервера

Для конфигурирования vsftpd в режиме анонимного FTP-сервера необходимо выполнить следующие операции.

Шаг 1 Создайте каталог для анонимных пользователей:

[root@test /]# mkdir /home/ftp/

и определите права доступа к нему:

[root@test /]# chmod -R 0555 /home/ftp/

Назначьте владельцем этого каталога пользователя ftp:

[root@test /]# chown -R ftp.ftp /home/ftp/

Шаг 2 Если вы хотите разрешить анонимным пользователям осуществлять запись файлов в какой-нибудь

каталог, то создайте его:

[root@test /]# mkdir /home/ftp/uploads

и назначьте его владельцем пользователя ftp:

[root@test /]# chown -R ftp.ftp /home/ftp/uploads/

Шаг 3

Отредактируйте файл /etc/vsftpd.conf, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

listen=YES anon_root=/home/ftp #For put files write_enable=YES anon_umask=022 anon_upload_enable=YES chown_uploads=YES chown_username=ftp #/For put files dirmessage_enable=YES anon_max_rate=33600 max_clients=1000 max_per_ip=2 connect_from_port_20=NO one_process_model=NO nopriv_user=ftp

ftpd_banner=TEST FTP SERVER TEST.BRUY.INFO

В нем строка:

anon_root=/home/ftp

определяет местоположение каталога анонимных пользователей. Строка:

dirmessage_enable=YES

разрешает использование файла .messages, содержимое которого отображается пользователю при первом изменении каталога.

Строка:

anon_max_rate=33600

ограничивает скорость передачи данных от сервера к клиенту для анонимных пользователей. В рассматриваемом примере установлено ограничение 33600 Бит/с.

Строка:

max_clients=1000

ограничивает количество клиентов, одновременно подключаемых к серверу. Строка:

max_per_ip=2

490

Часть 9. Программное обеспечение для организации службы FTP-сервера

ограничивает максимальное количество клиентов, подключаемых к серверу с одного IP-адреса. В строках:

write_enable=YES anon_umask=022 anon_upload_enable=YES chown_uploads=YES

chown_username=ftp

разрешается загрузка файлов для анонимных пользователей. Если вы не собираетесь разрешать анонимным пользователям сохранять на сервере файлы, то удалите эти строки.

Назначение остальных опций описано выше при конфигурировании vsftpd в качестве FTP-сервера с аутентификацией пользователей.

Шаг 4

Установите права доступа к файлу /etc/vsftpd.conf и назначьте его владельцем пользователя

root:

[root@test /]# chmod 600 /etc/vsftpd.conf [root@test /]# chown 0.0 /etc/vsftpd.conf

Шаг 5 Создайте остальные конфигурационные файлы в соответствии с рекомендациями раздела «Конфигу-

рирование vsftpd c аутентификацией пользователей».

Тестирование vsftpd

Шаг 1

Запустите FTP-сервер:

[root@test /]# /etc/init.d/vsftpd

start

Starting vsftpd:

[ОК]

Дальнейшие операции осуществлялись в варианте конфигурации анонимного FTP-сервера.

Шаг 2

Попытайтесь установить соединение с FTP-сервером с помощью FTP-клиента, например, входящего в комплект поставки ASPLinux 7.3, находящегося в пакете ftp-0.17-13.i386.rpm. Установка данного пакета описана в шаге 2 раздела «Тестирование ProFTPD» главы 32.

Установите соединение с вашим FTP-сервером:

[drwalbr@test dr_walbr]$ ftp test.bruy.info Connected to test.bruy.info. 220 TEST FTP SERVER TEST.BRUY.INFO

530 Please login with USER and PASS.

Шаг 3

Зарегистрируйтесь на FTP-сервере в качестве анонимного (anonymous) пользователя или пользователя ftp:

Name (test.bruy.info:drwalbr): anonymous 331 Please specify the password.

Вместо пароля можно ввести любую, в том числе и пустую, строку:

Password:Any_or_empty_string

230 Login successful. Remote system type is UNIX.

Using binary mode to transfer files.

Шаг 4 Получите список файлов и каталогов, содержащихся в корневом каталоге сервера:

ftp> dir

229

Entering Extended Passive Mode (|||51857|)

 

150

Here comes the

directory listing.

 

 

-r-xr-xr-x

1 24

24

700610

Jun 06

13:21 Mail-

SpamAssassin-2.55.tar.gz

 

 

 

dr-xr-xr-x

2 24

24

4096

Jul 07

12:59 uploads

226

Directory

send

OK.

 

 

 

Шаг 5

Соседние файлы в предмете Информатика