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

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

.pdf
Скачиваний:
123
Добавлен:
24.05.2014
Размер:
4 Мб
Скачать

Глава 31. MySQL – сервер баз данных

461

Шаг 2

Для создания пользователя, например, drwalbr, обладающего всеми привилегиями по отношению к базе friends_book, добавьте соответствующие записи в таблицы привилегий user и db базы данных

mysql:

mysql> USE mysql;

Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

Database changed

mysql> INSERT INTO user SET

-> Host='localhost', User='drwalbr', Password=PASSWORD('Walbr_$_W0rd');

Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO db

-> VALUES ('localhost','friends_book', 'drwalbr', -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

Query OK, 1 row affected (0.00 sec)

Для вступления изменений в силу наберите: mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

Завершите соединение с сервером баз данных: mysql> \quit

Bye

Шаг 3

Для создания таблицы friends, содержащей имена и соответствующие им адреса электронной почты, установите соединение с сервером баз данных от имени пользователя drwalbr и подключитесь к базе данных friends_book:

[drwalbr@drwalbr /]$ mysql -u drwalbr -h localhost –p friends_book Enter password: Dr_Walbr_$_W0rd

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.13

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Создайте таблицу:

mysql> CREATE TABLE friends -> (Name VARCHAR(20), -> Email VARCHAR(20));

Query OK, 0 rows affected (0.00 sec)

Шаг 4 Если необходимо можете добавить соответствующие записи в таблицу. Для построчного добавления

записей выполните:

mysql> INSERT INTO friends

-> VALUES ('Андрусенко Ю.В.', 'andrysenco@domen.ru');

Query OK, 1 row affected (0.00 sec)

Для добавления нескольких записей одновременно выполните:

mysql>

INSERT INTO friends VALUES

->

('Карлов С.В.', 'karlnext@domen.ru'),

->

('Поляков

А.В.',

'polyakov@domen.ru'),

->

('Урбанов

В.К.',

'urbanoffff@domen.ru');

Query OK, 3 rows affected (0.01 sec)

Records: 3 Duplicates: 0 Warnings: 0

Шаг 5

Проверьте правильность внесенных в таблицу friends данных: mysql> SELECT * FROM friends;

+-----------------

+---------------------

+

462

Часть 8. Программное обеспечение для сервера баз данных

| Name

| Email

|

+-----------------

+---------------------

+

| Андрусенко Ю.В. | andrysenco@domen.ru |

| Карлов С.В.

| karlnext@domen.ru

|

| Поляков А.В.

| polyakoff@domen.ru

|

| Урбанов В.К.

| urbanoffff@domen.ru |

+-----------------

+---------------------

+

4 rows in set (0.00 sec)

Завершите соединение с сервером баз данных: mysql> \quit

Bye

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

463

Часть 9

Программное обеспечение для организации службы

FTP-сервера

464

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

Глава 32

ProFTPD – FTP-cервер

В этой главе:

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

2.Пакеты

3.Компиляция, оптимизация и инсталляция ProFTPD

4.Конфигурирование ProFTPD

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

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

7.Конфигурационный файл /etc/sysconfig/proftpd

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

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

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

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

13. Конфигурирование ProFTPD с поддержкой протокола SSL

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

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

465

Протокол передачи файлов (File Transfer Protocol, FTP) остается одним из самых популярных способов передачи файлов по сети с одной системы на другую. В настоящее время для каждой операционной системы существуют клиентские и серверные программы.

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

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

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

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

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

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

Пакеты

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

Исходные коды ProFTPD содержатся в архиве proftpd-version.tar.gz (последняя доступная на момент написания главы стабильная версия proftpd-1.2.8.tar.gz). Для использования ProFTPD c поддержкой протокола TSL/SSL обязательным условием является наличие установленной программы

OpenSSL.

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

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

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

ми. Для этого можно воспользоваться процедурой, описанной в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12.

Шаг 2

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

[root@test tmp]# tar xzpf proftpd-1.2.8.tar.gz

Шаг 3

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

[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 Попробуйте увеличить заданное по умолчанию максимально допустимое число открытых дескрипто-

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

[root@test tmp]# cd proftpd-1.2.8/

[root@test proftpd-1.2.8]# ulimit -n 8192

Если не выводится сообщения вида:

bash: ulimit: cannot modify open files limit: Operation not permitted

то вам удалось увеличить максимально допустимое число открытых дескрипторов файлов.

466

 

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

Если

предыдущая

операция

прошла

удачно,

в

файле

/tmp/proftpd-

1.2.8./include/options.h замените строку:

 

 

 

 

#define TUNABLE_BUFFER_SIZE

1024

 

 

 

 

на:

 

 

8192

 

 

 

 

#define TUNABLE BUFFER SIZE

 

 

 

 

Шаг 6

Отконфигурируйте исходные коды ProFTPD:

[root@test proftpd-1.2.8]# CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS

./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var/run \ --mandir=/usr/share/man \ --enable-pam \

--with-openssl-dir=/usr/share/ssl \ --with-modules=mod_readme:mod_tls\

В рассматриваемом примере исходные коды ProFTPD сконфигурированы с поддержкой стандартных модулей аутентификации PAM и поддержкой подключения модулей mod_readme и mod_tls. Использо-

вание опции --with-openssl-dir=/usr/share/ssl и подключение модуля mod_tls необходимо только в случае, если вы собираетесь использовать ProFTPD с поддержкой протокола TSL/SSL.

Шаг 7

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

[root@test proftpd-1.2.8]# make

[root@test proftpd-1.2.8]# find /* > /root/proftpd1 [root@test proftpd-1.2.8]# make install

[root@test proftpd-1.2.8]# strip /usr/sbin/proftpd [root@test proftpd-1.2.8]# strip /usr/sbin/ftpshut [root@test proftpd-1.2.8]# strip /usr/bin/ftpcount [root@test proftpd-1.2.8]# strip /usr/bin/ftpwho [root@test proftpd-1.2.8]# find /* > /root/proftpd2

[root@test proftpd-1.2.8]# diff /root/proftpd1 /root/proftpd2 >

/root/proftpd.installed

[root@test proftpd-1.2.8]# mv /root/proftpd.installed

/very_reliable_place/proftpd.installed.YYYYMMDD

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

[root@test proftpd-1.2.8]# cd /var/tmp/

[root@test tmp]# rm -rf proftpd-1.2.8/ [root@test tmp]# rm -f proftpd-1.2.8.tar.gz

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

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

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

системного конфигурационного файла /etc/sysconfig/proftpd;

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

/etc/pam.d/ftp;

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

серверу;

файла инициализации /etc/rc.d/init.d/proftpd;

файлов .ftpaccess.

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

467

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

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

Для конфигурации ProFTPD используется метод директив и контекстов. В настоящее время ProFTPD имеет семь различных контекстов конфигурации: <General>, <Global>, <Limit>, <Anonymous>, <Directory>, <VirtualHost>. В главном конфигурационном файле могут содержаться следующие разделы:

раздел общей конфигурации FTP-сервера – General server context;

раздел глобальной конфигурации FTPсервера – Global Server context;

раздел конфигурации ограничений FTP-сервера – Limit Server context;

раздел анонимной конфигурации FTP-сервера – Anonymous Server Context.

Шаг 1

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

# General Server Context.

 

ServerName

"Test FTPD BRUY.INFO"

ServerAdmin

ftpadmin@bruy.info

ServerType

standalone

DefaultServer

on

Port

21

tcpBackLog

10

MaxInstances

30

CommandBufferSize

50

UseReverseDNS

off

IdentLookups

off

User

ftp

Group

ftp

AccessDenyMsg

"Access for %u has been denied"

AuthPAMAuthoritative

on

DeferWelcome

on

MultilineRFC2228

on

AllowFilter

"^[a-zA-Z0-9 ,.,-]*$"

DefaultRoot

~ users

# Global Server Context.

 

<Global>

 

DeleteAbortedStores

on

MaxClients

3

MaxLoginAttempts

3

TransferRate

APPE,RETR,STOR,STOU 56.4:256000

ServerIdent

on "Ok, Test FTPD BRUY.INFO!"

Umask

022

</Global>

 

#Limit normal user logins, because we only want to allow Guest logins. <Limit LOGIN>

DenyAll </Limit>

#Anonymous Server Context.

#

<Anonymous /home/karl_next>

User

karlnext

Group

users

AnonRequirePassword

on

468

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

<Limit LOGIN>

 

AllowAll

 

</Limit>

 

HideUser

root

HideGroup

root

<Directory /*> AllowOverwrite on

</Directory>

</Anonymous>

Раздел General Server Contex.

В разделе General Server Context содержатся наиболее общие (не переопределяемые в других разделах) директивы.

Директива:

 

ServerName

"Test FTPD BRUY.INFO"

используется для определения строкового сообщения, отображаемого пользователям FTP-сервера при под-

ключении.

 

Директива:

 

ServerAdmin

ftpadmin@bruy.info

используется для определения адреса электронной почты администратора сервера.

Директива:

 

ServerType

standalone

используется для определения режима работы сервера. В рассматриваемом примере сервер работает в режиме автономного сервера без задействования суперсервера xinetd. Это, по мнению авторов, более безопасный режим, обеспечивающий наилучшую производительность.

Директива:

 

DefaultServer

on

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

Директива:

 

Port

21

используется для определения номера порта, на котором FTP-сервер ожидает подключений.

Директива:

 

tcpBackLog

10

используется для управления размером неудовлетворенной очереди (backlog queue) TCP соединений при работе ProFTPD в автономном режиме. Другими словами, когда TCP соединение установлено, существует некоторый промежуток времени между моментом фактической установки соединения и началом обработки соединения непосредственно пользовательской программой. Продолжительность этого периода может изменяться в зависимости от различных факторов (конфигурации системы, на которой установлен FTP-сервер, загрузки системы, числа виртуальных хостов и т. п.). В некоторых случаях это может привести к получению пользователями сообщений об отказе подключения (Connection refused). Для устранения этого эффекта осуществляется перераспределение ресурсов, выделяемых для различных модулей FTP-сервера. Чем больше значение параметра, определяемое директивой tcpBackLog, тем больше подключений может быть установлено в единицу времени.

Директива:

 

MaxInstances

30

используется для управления максимальным числом одновременно открытых соединений. Это позволяет предотвращать атаки, типа отказа в обслуживании.

Директива:

 

CommandBufferSize

50

используется для управления максимальной длиной команды, которая может быть передана для исполнения FTP-серверу. Ограничение длины команды позволяет предотвращать различные атаки, основанные на отказе в обслуживании.

Директива:

 

UseReverseDNS

off

используется для запрета определения имен систем, с которых осуществляется подключение к FTP-серверу с использованием службы DNS, что, в конечном счете, позволяет несколько повысить производительность сервера.

Директива:

 

IdentLookups

off

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

469

используется для отключения протокола IDENT, описанного в RFC-1413, обычно применяемого для идентификации имени удаленного пользователя и неиспользуемого FTP-сервером. Отключение протокола IDENT также позволяет добиться некоторого прироста производительности сервера.

Директивы:

User

ftp

и

 

Group

ftp

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

Директива:

 

AccessDenyMsg

"Access for %u has been denied"

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

Директива:

AuthPAMAuthoritative on

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

Директива:

 

DeferWelcome

on

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

Директива:

 

MultilineRFC2228

on

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

Директива:

 

AllowFilter

"^[a-zA-Z0-9 ,.,-]*$"

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

Директива:

 

DefaultRoot

~ users

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

Раздел Global Server Context.

В универсальном разделе Global Server Context определяются наиболее общие параметры конфигурации ProFTPD. Признаком начала и окончания раздела служат директивы <Global> и </Global>, соответственно.

Директива:

 

DeleteAbortedStores

on

используется для запрета сохранения на FTP-сервере частично загруженных и поврежденных при загрузке

файлов.

 

Директива:

 

MaxClients

3

используется для ограничения максимального числа клиентов, одновременно обслуживаемых FTP-

сервером.

 

Директива:

 

MaxLoginAttempts

3

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

Директива:

 

TransferRate

APPE,RETR,STOR,STOU 56.4:256000

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

перечень команд (допустимые значения: APPE – добавить файл, RETR – принять файл, STOR – сохранить файл, STOU – сохранить файл с уникальным именем), для которых ограничивается скорость соединения;

максимально допустимая скорость соединения в кБит/с, в рассматриваемом примере 56,4 кБит/с;

объем трафика в байтах – в рассматриваемом примере 256 кБайт – по превышении которого начинает действовать ограничение на пропускную способность соединения.

Директива:

ServerIdent

on "Ok, Test FTPD BRUY.INFO!"

470

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

используется для определения строкового сообщения, получаемого пользователем при соединении с FTPсервером.

Директива:

Umask

022

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

Раздел Limit Server Context.

В разделе Limit Server

Context определяются различные ограничения. С использованием ди-

ректив:

<Limit LOGIN> DenyAll

</Limit>

запрещается любой доступ всем пользователям к FTP-серверу, ниже он будет разрешен только специально определенным пользователям.

Раздел Anonymous Server context.

В разделе Anonymous Server context можно разрешить доступ пользователям к определенным каталогам сервера. Некоторых читателей может дезориентировать название раздела, из которого можно сделать ошибочный вывод, что в нем настраивается анонимный доступ к FTP-серверу. Оставим название раздела на совести разработчиков и перейдем к настройке доступа с аутентификацией пользователей путем использования стандартных модулей PAM.

Директивы:

<Anonymous /home/karl_next>

и

</Anonymous>

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

Директивы:

 

User

karlnext

Group

users

AnonRequirePassword

on

<Limit LOGIN>

 

AllowAll

 

</Limit>

разрешают доступ к каталогу /home/karl_next пользователю karlnext из группы users после удачной аутентификации с использованием пароля.

Директивы:

HideUser

root

HideGroup

root

используются для скрытия от пользователя каталогов и файлов, владельцами которых являются соответствующий пользователь и группа пользователей, в рассматриваемом примере – root.

Директивы

<Directory /*> AllowOverwrite on

</Directory>

</Anonymous>

разрешают пользователю karlnext осуществлять перезапись файлов в своем домашнем каталоге.

Шаг 2

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

root:

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

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

Шаг 1

Создайте файл /etc/sysconfig/proftpd и добавьте строки:

#Uncomment the following line if you want to debug ProFTPD. All

#log or debug messages will be send to the syslog mechanism.

#

#OPTIONS="-d 5"