LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В
..pdf482 |
Часть 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:
Глава 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
Глава 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
