<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF132%3ADrBrown3</id>
		<title>LXF132:DrBrown3 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF132%3ADrBrown3"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF132:DrBrown3&amp;action=history"/>
		<updated>2026-05-13T13:07:03Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF132:DrBrown3&amp;diff=12283&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF132:DrBrown3&amp;diff=12283&amp;oldid=prev"/>
				<updated>2011-06-28T06:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Настраиваем ''ProFTPD''==&lt;br /&gt;
&lt;br /&gt;
: Установим профессиональный FTP-сервер и настроим анонимный или аутентифицированный доступ с полнофункциональным ''ProFTPD''&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF132_52_1.jpg|300px|Рис. 1]] В активном режиме FTP-сервер инициирует канал данных с клиентом (шаг 3), используя номер порта, переданный ему клиентом на шаге 1. Этот канал скорее всего будет блокирован шлюзом клиента.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF132_52_2.jpg|300px|Рис. 1]] В пассивном режиме канал данных инициирует клиент (шаг 3), используя номер порта, переданный ему сервером на шаге 2. Этот вариант «дружелюбнее» по отношению к брандмауэру.&lt;br /&gt;
|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
На прошлой неделе меня поймал врасплох один из клиентов, просивший помочь в установке FTP-сервера. Я этим давно не занимался, и некогда тесное знакомство с FTP почти улетучилось из памяти. Подозреваю, что дни FTP сочтены, и HTTP более созвучен современности.&lt;br /&gt;
&lt;br /&gt;
Однако недостатка FTP-серверов в обычных репозиториях нет: в Fedora их два (''ProFTPD'' и ''vsftpd''), а в Ubuntu – не менее четырех. Дальнейший поиск с помощью монеты и «звонка другу» помог остановить выбор на ''ProFTPD'', и на данном уроке я опишу свой опыт по его установке и настройке. Я делал это в Fedora 12, но в других дистрибутивах все должно быть примерно так же.&lt;br /&gt;
&lt;br /&gt;
''ProFTPD'' – мощный полнофункциональный FTP-сервер. Он запускается как самостоятельная служба или через ''xinetd'' и поддерживает анонимный и аутентифицированный вход в систему, включая «виртуальных пользователей», учетные записи которых определены в каталогах '''LDAP''' или базах данных ''SQL''. Он также допускает виртуальный хостинг – обслуживание нескольких FTP-сайтов с одного экземпляра FTP-сервера. Рассмотрим все эти возможности.&lt;br /&gt;
&lt;br /&gt;
Сначала я установил сервер и настроил его запуск во время загрузки:&lt;br /&gt;
&lt;br /&gt;
 # yum install proftpd&lt;br /&gt;
 # chkconfig proftpd on&lt;br /&gt;
&lt;br /&gt;
Сразу после установки сервера инстинкт погнал меня к файлу настройки (в данном случае '''/etc/proftpd.conf'''). Его структура с контейнерными XML-тэгами подобна файлу настройки ''Apache''. В файле настройки по умолчанию, который поставляется с Fedora 12, находится рабочая конфигурация с рядом добавочных опций, которые закомментированы. На рис. 2 показан минимальный файл настройки. Он содран с поставляемого (урезан), но достаточен для поддержки аутентифицируемого входа по FTP.&lt;br /&gt;
&lt;br /&gt;
===Анонимный FTP===&lt;br /&gt;
&lt;br /&gt;
Анонимный FTP позволяет пользователю аутентифицироваться под именем «'''ftp'''» или «'''anonymous'''» и паролем, которым по традиции должен быть его e-mail адрес, но на практике это не проверяется. Анонимный FTP широко применяется для предоставления доступа к интернет-ресурсу только на чтение и на много лет предвосхитил использование для тех же целей HTTP и web-сайтов. Анонимный вход в систему снимает мои заботы по поводу безопасности FTP. Во-первых, по сети не передаются настоящие имя и пароль, которые могут перехватить плохие парни; во-вторых, факт отсутствия шифрования соединения не имеет значения, ведь содержимое сервера все равно публично!&lt;br /&gt;
&lt;br /&gt;
В файле '''proftpd.conf''', который по умолчанию поставляется с Fedora 12, также есть секция '''&amp;lt;Anonymous&amp;gt;''', которая работает сразу же. Ну, почти. Мне понадобилось только добавить в файл '''/etc/sysconfig/proftpd''' следующую строку:&lt;br /&gt;
&lt;br /&gt;
 PROFTPD_OPTIONS=”-DANONYMOUS_FTP”&lt;br /&gt;
&lt;br /&gt;
и перезапустить ''ProFTPD'' командой:&lt;br /&gt;
&lt;br /&gt;
 service proftpd restart&lt;br /&gt;
&lt;br /&gt;
В конфигурации по умолчанию каталог '''~ftp''' (которому соответствует '''/var/ftp''') является каталогом '''home''' для анонимных пользователей. При установке пакета ''ProFTPD'' он создает каталоги '''/var/ftp/pub''' (куда нужно выкладывать контент) и '''/var/ftp/upload''' (куда могут выкладывать контент анонимные пользователи).&lt;br /&gt;
&lt;br /&gt;
Конфигурация по умолчанию также поддерживает аутентификацию для пользователей, у которых на сервере есть обычные учетные записи. После входа по FTP вы попадаете в свой домашний каталог. Сначала мне это не удалось, и я некоторое времяискал причину, запустив ''ProFTPD'' не в режиме демона, со включенной отладкой:&lt;br /&gt;
&lt;br /&gt;
 proftpd -n -d 5&lt;br /&gt;
&lt;br /&gt;
и параллельно запустив ''tail -f'' на '''/var/log/messages'''. В итоге оказалось, что ''SELinux'' не давал демону зайти в домашний каталог, и я поступил, как всегда в таких ситуациях: перевел ''SELinux'' в разрешающий режим ('''permissive mode'''):&lt;br /&gt;
&lt;br /&gt;
 setenforce permissive&lt;br /&gt;
&lt;br /&gt;
после чего все заработало. На настоящем сервере относиться к уровню безопасности ''SELinux'' нужно более серьезно.&lt;br /&gt;
&lt;br /&gt;
Виртуальный пользователь – пользователь, у которого нет обычной учетной записи Linux на сервере в '''/etc/passwd''' или где-либо еще. Понятие «виртуальный пользователь» вводит в заблуждение – некоторые из них вполне реальны: настоящее тепло, дышащие тела; виртуальны только их учетные записи. Эти записи могут храниться в '''AuthUserFiles''', каталогах '''LDAP''' и базах данных ''SQL''. Простейший механизм аутентификации виртуального пользователя – '''AuthUserFile''', это простой текстовый файл в том же формате, что и '''/etc/passwd'''.&lt;br /&gt;
&lt;br /&gt;
===Виртуальный хостинг===&lt;br /&gt;
&lt;br /&gt;
А если нужно разместить несколько FTP-сайтов в одной системе? К сожалению, реализовать такой же виртуальный хостинг, как и для web-сайтов, когда записи нескольких узлов в DNS ссылаются на один и тот же IP-адрес, здесь не удастся. Это работает для HTTP, но не для FTP, потому что в HTTP-запросе есть поле «Host», поясняющее web-серверу, для какого сайта предназначен запрос, даже если все они приходят на один и тот же IP-адрес. В протоколе FTP такого поля нет, и в виртуальном хостинге FTP у каждого сайта должен быть собственный IP-адрес, по которому сервер мог бы понять, для какого сайта предназначен запрос.&lt;br /&gt;
&lt;br /&gt;
Но даже если вы счастливый обладатель достаточного количества свободных IP-адресов, нужно сделать еще две вещи. Во-первых, определить «IP-алиас» на сетевой карте для всех адресов, которые будут использоваться. Во-вторых, создать для каждого сайта в файле '''proftpd.conf''' секцию '''&amp;lt;VirtualHost&amp;gt;'''.&lt;br /&gt;
&lt;br /&gt;
В дистрибутивах на базе RedHat для каждого дополнительного IP-адреса, который нужно связать с сетевой картой, понадобится создать файл с именем вроде '''/etc/sysconfig/network-scripts/ifcfg-eth0:N''', где N – номер алиаса (0, 1, 2, ...). Файл будет примерно таким:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF132_53_1.jpg|300px|Рис. 2]] Рис. 2. Этой минимальной конфигурации достаточно для поддержки аутентифицированного входа по FTP.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 DEVICE=eth0:1&lt;br /&gt;
 BOOTPROTO=static&lt;br /&gt;
 IPADDR=192.168.1.69&lt;br /&gt;
 ONBOOT=yes&lt;br /&gt;
 HWADDR=00:0C:29:E1:E4:23&lt;br /&gt;
&lt;br /&gt;
Замените значения '''DEVICE, IPADDR''' и '''HWADDR''' соответствующими в вашей системе. Для каждого IP-адреса понадобится отдельный файл. Насколько я знаю, сделать нечто вроде «Я хочу назначить все адреса из блока 10.1.0.0/24 этой сетевой карте» нельзя (если я неправ, сигнализируйте!).&lt;br /&gt;
&lt;br /&gt;
После создания файлов выполните команду&lt;br /&gt;
&lt;br /&gt;
 service network restart&lt;br /&gt;
&lt;br /&gt;
чтобы подцепить новые адреса, и проверьте, что сетевые интерфейсы для всех адресов созданы, командой ''ifconfig''.&lt;br /&gt;
&lt;br /&gt;
Для каждого из сайтов в файле настройки необходима секция '''&amp;lt;VirtualHost&amp;gt;'''. Она должна выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost 144.16.44.5&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или вместо IP-адреса можно использовать имя компьютера &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost foo.example.com&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
но это не должно ввести вас в заблуждение. Имя компьютера будет разрешено в IP-адрес, а он-то и определяет, какой FTP-сайт будет обслуживаться. Если у вас несколько имен компьютеров, которые DNS преобразует в один и тот же IP-адрес, и у каждого из них есть свой раздел '''&amp;lt;VirtualHost&amp;gt;''', будет выбран первый из них. Если у нескольких хостов есть что-то общее, можно вынести это в раздел '''&amp;lt;Global&amp;gt;''' файла настройки.&lt;br /&gt;
&lt;br /&gt;
Чтобы это доказать, я назначил второй IP-адрес (192.168.1.69) сетевой карте FTP-сервера и добавил раздел в '''proftpd.conf''' – вы можете найти ее на нашем DVD. «Второй» FTP-сервер предоставляет анонимный доступ к каталогу '''/var/ftp/secondary/pub'''. Я также создал файл '''/var/ftp/secondary/welcome.msg''' с приветствием.&lt;br /&gt;
&lt;br /&gt;
Многие возможности ''ProFTPD'' остались за рамками нашего обзора – они включают управление доступом, ведение журналов и «песочницы» c''hroot''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Некролог для FTP?===&lt;br /&gt;
&lt;br /&gt;
FTP – протокол древний. Первые RFC датируются 1971 годом, а формально он был определенв RFC454 (1973) и RFC959 (1985). Приблизительный современник ''Telnet, FTP'' был изобретен задолго до брандмауэров, частных адресных пространств, NAT и прочих сомнительных удовольствий современного Интернета, и не очень хорошо с ними ладит. Начнем с того, что FTP использует два различных соединения – для данных и для управления. Он работает в «активном» или «пассивном» режимах. Эти термины описывают ситуацию с точки зрения сервера, отражая его роль: инициирует ли он канал данных с клиентом или пассивно принимает его от клиента (см. рис. 1). В активном режиме серверу почти наверняка не удастся сделать это из-за фильтрации и маскирования пакетов, выполняемых шлюзом, через который клиент подключен к Интернету. Пассивный режим проще, но ему все равно необходим отдельный порт (на сервере) для каждого клиента, и потенциально на брандмауэре сервера должно быть открыто множество портов.&lt;br /&gt;
&lt;br /&gt;
В FTP нельзя задать полное имя (FQDN) сайта, с которым производится соединение, что делает невозможным виртуальный хостинг на основе имен. Механизм аутентификации, при котором имя и пароль (да и сами файлы) передаются в открытом виде, в нынешнем озабоченным безопасностью Интернете безнадежно устарел.&lt;br /&gt;
&lt;br /&gt;
Часть этих трудностей можно обойти перенаправлением локального порта ''SSH'' для создания защищенного туннеля для FTP-траффика – и есть кое-какие удобные хитрости при отслеживании соединения, которые помогут брандмауэрам приспособиться к необычному использованию портов в FTP. Но все это напоминает мне Главный дуб в Шервудском лесу, давно уж навалившийся на ограду. При виде него я порываюсь из жалости выдернуть подпорки и дать почтенному дереву упасть и достойно умереть, чтобы по законам природы на его месте появился новый росток.&lt;br /&gt;
&lt;br /&gt;
===Где узнать больше===&lt;br /&gt;
&lt;br /&gt;
* Сайт ''ProFTPD'' находится на http://www.proftpd.org.&lt;br /&gt;
* Список директив файла настройки, по алфавиту, см. на сайте http://www.proftpd.org/docs/directives/linked/by-name.html.&lt;br /&gt;
* Интересное обсуждение активного и пассивного режимов FTP – на http://slacksite.com/other/ftp.html.&lt;br /&gt;
* Чтобы узнать больше о виртуальных пользователях, можете заглянуть в руководство по созданию учетных записей с помощью ''MySQL'', http://www.howtoforge.com/proftpd_mysql_virtual_hosting.&lt;br /&gt;
* Также взгляните на http://www.kreci.net/linux/proftpd-virtual-user-quick-howto: там приводится сурово-краткое объяснение '''AuthUserFile'''.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>