Системное администрирование в Linux 9785498071176, 9780596009526

Вы опытный системный администратор и желаете приобрести навыки управления сетью в системе Linux? Или вы уже работаете в

117 14

Russian Pages 289 Year 2010

Report DMCA / Copyright

DOWNLOAD PDF FILE

Recommend Papers

Системное администрирование в Linux
 9785498071176, 9780596009526

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

LINUX

SYSTEM ADMINISTRATION

Tom Adelstein andBillLubanovic

O’REILLY® Beijing • Cambridge* Farnham • Köln • Paris-Sebastopol’Taipei • Tokyo

СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ В

LINUX Том Абельштайн, БиллАюбанович

ПИТЕР Москва - Санкт-Петербург * Нижний Новгород - Воронеж Ростов-на-Дону - Екатеринбург • Самара * Новосибирск Киев - Харьков * Минск

2010

Аделыитайн Т., Любанович Б. Системное администрирование в Linux Серия «Бестселлеры O'Reilly»

Перевел с английского А. Одноочко Заведующий редакцией Руководитель проекта Ведущий редактор Художник Корректоры Верстка

Д. Гурский А. Громаковский Н. Гринчик Е. Туровец Т. Драпезо, Е. Павлович О. Махлина

ББК 32.972.2-018.2 УДК 004.451 А29

Адельштайн Т., Любанович Б. Системное администрирование в Linux. — СПб.: Питер, 2010. — 288 с.: ил. — (Серия «Бестселлеры O'Reilly»).

ISBN 978-5-49807-117-6 Вы опытный системный администратор и желаете приобрести навыки управления сетью в системе Linux? Или вы уже работаете в Linux и хотите продвинуться дальше в изучении этой операционной систе­ мы и стать системным администратором? Книга, которую вы держите в руках, даст вам такую возмож­ ность. Она предоставит вам все необходимое — как теоретические знания, так и практические навыки, чтобы вы смогли управлять сетями в операционной системе Linux.

Права на издание получены по соглашению с O'Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было фор­ ме без письменного разрешения владельцев авторских прав.

Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как на­ дежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возмож­ ные ошибки, связанные с использованием книги.

ISBN 978-5-49807-117-6 ISBN 978-0-596-00952-6 (англ.)

© 2007 O'Reilly Media, Inc © Перевод на русский язык ООО «Лидер», 2010 © Издание на русском языке, оформление ООО «Лидер», 2010

ООО «Лидер», 194044, Санкт-Петербург, Б. Сампсониевский пр., 29а.

Налоговая льгота — общероссийский классификатор продукции ОК 005-93. том 2; 95 3005 — литература учебная. Подписано в печать 16.06.09. Формат 70*100/16. Усл. п. л. 23,22. Тираж 2000. Заказ 16614.

Отпечатано по технологии ФР в ОАО «Печатный двор» им. А. М. Горького. 197110, Санкт-Петербург, Чкаловский пр., 15.

Краткое содержание Введение ................................................................................................... 12 Глава 1.

Требования к системному администратору Linux............................ 17

Глава 2.

Настройка многофункционального сервера Linux............................24

Глава 3.

Система доменных имен................................................................. 54

Глава 4.

Подготовка оборудования для работы в Интернете........................ 87

Глава 5.

Почта............................................................................................ 114

Глава 6.

Администрирование Apache......................................................... 134

Глава 7.

Кластеры с балансировкой нагрузки............................................. 165

Глава 8.

Службы локальных сетей............................................................. 175

Глава 9.

Виртуализация на современном предприятии.............................. 204

Глава 10. Сценарии......................................................................................221 Глава 11. Резервное копирование............................................................... 245

Приложение. Примеры сценариев bash....................................................... 266 Об авторах................................................................................................. 281

Указатель .................................................................................................. 282

https://t.me/it_boooks

Оглавление Введение..................................................................................................... 12

Как построена книга.......................................................................... 13

Соглашения, принятые в книге......................................................... 14 Использование примеров кода......................................................... 14 Safari® Enabled................................................................................ 15 Как с нами связаться........................................................................ 15

Благодарности.................................................................................. 16 От издательства................................................................................ 16 Глава 1. Требования к системному администратору Linux................................ 17 Об этой книге.................................................................................... 18

Чем мы можем помочь...................................................................... 18 С чего начать.................................................................................... 19

Нужна ли вам эта книга....................................................................19 Кто нуждается в вас..........................................................................20

Поиск помощи............................................................................ 20

Анализ профессиональных навыков........................................... 21 Что системный менеджер должен знать о Linux.................................23 Что дальше...................................................................................... 23

Глава 2.

Настройка многофункционального сервера Linux............................ 24 Требования к серверу........................................................................25 Установка Debian.............................................................................. 26

Удаленный вход в систему............................................................... 28

Конфигурирование сети................................................................... 28 Изменение пакета Debian по умолчанию........................................... 30 Настройка квот.................................................................................. 32

Предоставление услуг по доменному имени.....................................34 Добавление реляционной базы данных: MySQL.................................36

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP....................................................... 38 Добавление веб-сервера Apache....................................................... 48

7

Оглавление

Добавление FTP-сервисов с помощью инструмента ProFTPD.......... 50

Суммирование веб-статистики с помощью вебалайзера.................... 51 Синхронизация системного времени ............................................... 52

Установка модулей Perl, необходимых для инструмента SpamAssassin......................................................... 52 Что дальше...................................................................................... 53

Глава 3.

Система доменных имен ................................................................. 54

Основы DNS .................................................................................... 54

Доступ в BIND.................................................................................. 56

Настройка сервера DNS................................................................... 57 Конфигурирование сервера DNS с аутентификацией........................ 60 Ответственность в DNS............................................................. 61 Дистрибутивный метод интерпретации доменных имен.......... 61 Поиск домена..............................................................................62

Ответы на запросы..................................................................... 63 Первичные и вторичные DNS-серверы.......................................64 Серверы только для кэширования............................................. 65 Редактирование файлов конфигурации............................................. 66 named.conf.................................................................................. 66 Основной файл зоны................................................................. 69 Обратный файл зоны................................................................. 74

Тестирование поиска................................................................. 76 Конфигурирование вторичного сервера имен............................ 77 Инструменты BIND............................................................................78 Команда nslookup........................................................................78 Команда rndc..............................................................................80 Устранение ошибок BIND................................................................. 80 Невозможность связи при использовании rndc.......................... 81

named запускается, но не интерпретирует имена...................... 82

Хосты не распознаются............................................................. 83

Что дальше...................................................................................... 86

Глава 4.

Подготовка оборудования для работы в Интернете.......................... 87

Установка ISPConfig..........................................................................88 Системные требования............................................................... 88 После старта..............................................................................90

Структура директории ISPConfig................................................. 96

8

Оглавление

Настройка сервера для работы с помощью ISPConfig........................ 96 Добавление клиентов и сайтов................................................... 98 Управление пользователями и электронной почтой.................104

Конфигурирование почтового клиента..................................... 107 Обеспечение безопасности веб-сервера Linux................................. 108 Роль демона, наблюдающего за демонами............................... 108 Установка и настройка monit................................................... 110 Что дальше.................................................................................... 113 Глава 5.

Почта.............................................................................................. 114 Ключевые термины почтовой службы............................................. 114 Postfix, Sendmail и другие почтовые клиенты................................... 115 Почтовый сервер Postfix SMTP на Debian......................................... 117 Пакеты Debian, относящиеся к Postfix....................................... 117 Установка Postfix на Debian..................................................... 118 Основы конфигурации Postfix................................................... 120 Тестирование почты.................................................................. 122 Добавление аутентификации и шифрования................................... 123 Аутентификация SASL.............................................................. 123 Шифрование TLS...................................................................... 127 Конфигурирование почтовых агентов POP3 и IMAP ....................... 131 Настройка почтового клиента..........................................................132 Что дальше.................................................................................... 133

Глава 6. Администрирование Apache............................................................ 134 Статические и динамические файлы............................................... 134 Простая настройка LAMP.................................................................. 135

Установка........................................................................................ 136 Apache...................................................................................... 136 PHP.......................................................................................... 137 MySQL...................................................................................... 137 Файлы конфигурации Apache..........................................................139 Директивы конфигурации файлов........................................... 140 Аутентификация и авторизация............................................... 142 Контейнеры и алиасы (псевдонимы)......................................... 145 Ограничения............................................................................ 146 Расширения серверной стороны............................................... 147 CGI.......................................................................................... 148

Оглавление

9 Специфические директивы модулей РНР................................. 150

Виртуальные хосты.................................................................. 150 Файлы журналов............................................................................ 152 Дробление и ротация журналов............................................... 153 Дробление журналов с помощью vlogger................................. 153 Анализ журналов с помощью вебалайзера............................... 154 Шифрование SSL/TLS .................................................................... 154 Поддержка suEXEC ........................................................................ 155

Оценка производительности по эталону......................................... 156 Установка и администрирование Drupal......................................... 157 Установка Drupal с помощью утилиты apt-get........................... 158 Установка Drupal с ресурса........................................................159 Конфигурирование Drupal........................................................160 Устранение ошибок........................................................................ 161 Веб-страница не отображается в браузере............................... 161 Виртуальные хосты не работают............................................. 163 SSI не работает........................................................................ 164 Программа CGI не работает......................................................164

SSL не работает........................................................................ 164 Дополнительные источники............................................................ 164 Глава 7.

Кластеры с балансировкой нагрузки............................................... 165 Балансировка нагрузки и высокая доступность............................... 165 Программное обеспечение для БН........................................... 166 IPVS на балансировщике нагрузки........................................... 167 Idirectord.................................................................................. 167 Конфигурирование реального сервера (узлы Apache).............. 168 Конфигурирование балансировщика нагрузки......................... 169 Тестирование системы.............................................................. 171 Добавление ВД к БН................................................................ 172 Добавление других служб БН....................................................173

Старт без БН и ВД.......................................................................... 173 Дополнительные источники............................................................ 174

Глава 8.

Службы локальных сетей................................................................ 175 Распределенные файловые системы............................................... 176

Введение в Samba.......................................................................... 176 Конфигурирование сети.................................................................. 177

10

Оглавление

DHCP.............................................................................................. 180

Установка DHCP........................................................................ 181 Запуск вашей службы DHCP......................................................182 Обеспечение статических IP-адресов....................................... 183 Назначение 1Ру6-адресов с помощью radvd............................. 184

Службы шлюзов ............................................................................ 185 Службы печати................................................................................ 192 Размышления о программах для печати................................... 193 Кросс-платформенная печать................................................... 194 Контроль очередей принтера через командную строку.......... 196 Управление пользователями............................................................197 Удаление пользователя............................................................ 199 Блокировка домашней директории........................................... 201 Графические пользовательские менеджеры............................. 201

Глава 9.

Виртуализация на современном предприятии................................. 204 Почему виртуализация популярна................................................. 204 Обработка данных высокой надежности......................................... 206 Непрерывность бизнеса и управление загрузками.................. 207

Скоростная подготовка к работе............................................... 208 Чем помогает виртуализация................................................... 209

Установка Хеп на Fedora 5............................................................. 209 Установка VMware.......................................................................... 214 Виртуализация. Преходящая причуда?........................................... 220

Глава 10. Сценарии........................................................................................ 221 Основы bash.................................................................................... 221 Имена путей и права доступа................................................... 223 Путь по умолчанию..................................................................224 Перенаправление ввода/вывода............................................... 225 Переменные.............................................................................. 226 Полезные элементы для сценариев bash......................................... 228 Выражения.............................................................................. 228 Арифметика.............................................................................. 228 Оператор if.............................................................................. 229 Устранение ошибок простого сценария..................................... 231 Циклы...................................................................................... 233 Планировщик задач cron......................................................... 235

Оглавление

11 Конкуренция сценарных языков..................................................... 236 Формат данных: файл /etc/passwd........................................... 237 Версии сценария...................................................................... 238 Выбор сценарного языка......................................................... 244 Дополнительные источники........................................................... 244

Глава 11. Резервное копирование..................................................................245 Резервное копирование данных насервер с помощью rsync......... 245 Основы rsync............................................................................ 246 Создание пользовательского сценария резервного копирования......................................................... 247 Построение списка файлов сервера резервных копий.............. 248 Восстановление потерянных или поврежденных файлов .... 249 Автоматизация резервного копирования................................. 250 TAR-архивы.................................................................................... 250 Создание архива......................................................................251 Извлечение файлов из архива................................................. 252 Полный пример архивирования и распаковки с помощью tar... 253 Сохранение файлов на оптические носители................................. 254 Доступ к вашему приводу CD-R............................................... 255 Установка значений по умолчанию........................................... 256 Подготовка к записи на CD-R................................................... 257 Запись CD-R.............................................................................. 257 Проверка записи...................................................................... 258 Резервное копирование и архивация на магнитной ленте с помощью Amanda.......................................................................... 260 Установка Amanda....................................................................260 Конфигурирование Amanda..................................................... 261 Восстановление файлов, скопированных в резерв Amanda ... 262 Резервное сохранение данных MySQL............................................. 262 Приложение. Примеры сценариев bash......................................................... 266 Добавление пользователей............................................................. 266 Генератор случайных паролей....................................................... 267 Надежный поиск по DNS..................................................................268 Интегрирование ssh и screen......................................................... 276 Об авторах................................................................................................. 281 Указатель ................................................................................................. 282

Введение Когда мы с Биллом Любановичем (Bill Lubanovic) добавляли к этой книге послед­ ние штрихи, я случайно подслушал беседу двоих сотрудников нашей лаборатории в Cisco, обсуждавших систему Linux. Старший из них — гуру в области сетевых технологий — сделал интересное замечание. Он сказал, что, несмотря на все зна­ ния, чувствует, что его профессионализма недостаточно, так как он никогда не изучал Linux. Я улыбнулся и продолжил работу. В тот же вечер перед конференцией наш директор по информационным техно­ логиям обратился ко мне с просьбой, которая удивила меня своей необычностью. Он сказал, что хотел бы изучить Apache, а когда я спросил его зачем, он ответил, что просто хотел бы уметь с ним работать. Позже, на конференции, наш директор рассказывал об управлении обновлени­ ями (Patch Management), описывая в качестве примера программу rsync. Подроб­ но объясняя технологические принципы инкрементного и кумулятивного управ­ ления обновлениями, он сказал, что хочет чего-то подобного. Я хорошо знаю rsync и работал с этой программой, но ни на одном собрании не получал такого подроб­ ного академического описания какого-либо инструмента с открытым кодом. В обоих упомянутых случаях и во многих других я хотел бы иметь под рукой такую книгу, как эта, которая предназначена для высокообразованных людей — профессионалов в своем деле, желающих изучить администрирование в Linux. Возможно, у вас был похожий опыт, и вы тоже хотели бы иметь под рукой подоб­ ную книгу. Когда мы с Энди Орамом (Andy Oram) начинали обсуждать будущую книгу по системному администрированию в Linux, у нас были разные представления о том, чего мы хотим достичь. Энди говорил о книге, каждая глава которой поэтапно зна­ комила бы читателей с принципами построения и эксплуатации приложений для серверов, и при этом не было бы подробных обсуждений. Он считал, что обсужде­ ние должно находиться в одной главе, а практические примеры — в другой. Позже я предложил составить каждую главу из отдельных модулей и позволить читателю компоновать их по своему усмотрению. Когда издание вышло в свет, мы почувствовали, что действительно достигли желаемого. Чтобы стать системным администратором Linux, вы должны прочитать эту книгу от корки до корки. При этом можете начать с того, что для вас наиболее интересно. Когда я впервые начал использовать Linux, паша компания состояла в основном из увлеченных программистов-энтузиастов. Я не помню протоколов тех дискус­ сий, которые касались Рабочих столов и коммерческих приложений. Мы заходили в Интернет, запуская демон, у нас не было программ набора телефонного номера и браузеров, доступных сейчас. Абсолютное большинство знакомых мне людей сами занимались своим системным администрированием либо находились на ка­ кой-либо стадии обучения.

Как построена книга

13

Размышляя о том времени, когда, по нашим оценкам, на планете было 30 000 поль­ зователей Linux, я удивляюсь, как много людей используют Linux сегодня, не имея ни малейшего понятия о том, как написать файл конфигурации. Возникает такое ощущение, что форумы Linux полны людей, спрашивающих, где взять CUPS или Samba для работы. В рассылках пользователи ведут подробные дискуссии о техни­ ческих деталях таких проектов, как Postfix, J Boss и Monit. Многие люди все еще страстно желают изучить возможности Linux, использу­ емой в качестве платформы для приложений. Если вы применяете эту систему и хотите сделать следующий шаг от пользователя к администратору, данная книга поможет вам в этом. Том Аделыитайн (Тот Adelstein)

Как построена книга Весь материал разделен на тематические главы. О Глава Í. Требования к системному администратору Linux. В данной главе опи­ сываются цели издания и объясняется его ценность. О Глава 2. Настройка многофункционального сервера Linux. Здесь рассматри­ ваются основы управления сервером, почти готовым для работы в Интернете. О Глава 3. Система доменных имен. Объясняются принципы настройки первич­ ных и вторичных серверов DNS. О Глава 4. Подготовка оборудования для работы в Интернете. Здесь описыва­ ется конфигурация системы на основе свободного программного обеспечения ISP. Прочитав эту главу, вы сможете начать работу с большим набором служб, которые затем будете использовать, изучая оставшуюся часть книги. О Глава 5. Почта. В данной главе рассказывается, как с помощью аутентификации SASL настраивать почтовый сервер Postfix, а также серверы POP и IMAP. О Глава 6. Администрирование Apache. Здесь дается полный обзор популяр­ ной комбинации Apache, MySQL и РНР (вместе с Linux, известной как сервер LAMP), а также описывается шифрование SSL. О Глава 7. Кластеры с балансировкой нагрузки. В этой главе продолжается рас­ сказ о конфигурации Apache. Объясняется, как работать с виртуальным сер­ вером (Virtual Server) и пакетом 1 di rectoró для обеспечения высокой надеж­ ности. О Глава 8. Службы локальных сетей. Показывается, как управлять пользовате­ лями и конфигурировать общие элементы сети, такие как DHCP и шлюзовые программы в локальных сетях (LAN). О Глава 9. Виртуализация на современном предприятии. В данной главе описы­ вается, как настраивать Хеп, VMware на хосте Linux, а затем добавлять другие операционные системы. О Глава Í0. Сценарии. Здесь рассматриваются некоторые базовые методы напи­ сания сценариев для надежной и мощной оболочки bash, которая поможет вам сэкономить много времени.

14

Введение

О Глава 11. Резервное копирование. В данной главе описываются многочислен­ ные технологии для выполнения критических функций: от базовых программ rsync и tar до мощной системы Amanda. О Приложение. Примеры сценариев bash. Содержит некоторые сценарии для оболочки, которые могут быть полезными для системного администрирования и стать подспорьем при написании собственных сценариев.

Соглашения, принятые в книге Здесь приводится список соглашений, принятых в данной книге.

Шрифт для названий Применяется для отображения URL, а также названий папок и выводимой на экран информации.

Шрифт для команд Используется для имен файлов, названий путей, имен переменных и команд. Например, путь будет выглядеть так: /Developer/Appl 1 cations.

Шрифт с постоянной шириной Применяется для отображения примеров исходного кода и содержимого фай­ лов.

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

Курсивный шрифт с фиксированной шириной

Обозначает код, который должен быть заменен подходящим значением (напри­ мер, имя_пользователя).

Следует обращать особое внимание на специальные врезки, выделенные с по­ мощью следующих рисунков. Это подсказка, пожелание, заметка общего типа. Содержит полезную прикладную инфор-

Е

мацию по рассматриваемой теме.

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

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

15

Как с нами связаться

кода. Например, не требуется разрешения при создании программы, в которой использовано несколько фрагментов кода из этой книги. Однако разрешение необ­ ходимо, если вы хотите продавать или распространять компакт-диски с примерами из книг издательства O’Reilly. Если вы отвечаете на вопросы, цитируя эту книгу и приводя примеры кода, разрешение не требуется. Но при включении серьезного объема кода из этой книги в документацию к вашему продукту вы должны полу­ чить разрешение. Мы приветствуем ссылку на нашу книгу, но не требуем ее. Она включает загла­ вие, имя автора, издателя и ISBN: «Linux System Administration by Tom Adelstein and Bill Lubanovic. Copyright 2007 O’Reilly Media, Inc., 978-0-596-00952-6». Если вы считаете, что использование примеров кода выходит за рамки ав­ торского права и разрешений, описанных выше, свяжитесь с нами по адресу [email protected].

Safari® Enabled Если на обложке вашей любимой книги по компьютерным технологиям вы видите значок Safari® Enabled, это значит, что данная книга доступна в интернет-каталоге издатель­ ства O’Reilly — O’Reilly Network Safari Bookshelf. BOOKS ONLINE Safari предлагает лучшее решение чем электронная кни1 EHABLCO 1 га. Это виртуальная библиотека, обеспечивающая простой поиск по сотням лучших технологических книг и позво­ ляющая вырезать и вставлять образцы кода, скачивать главы, находить быстрые ответы на вопросы и др. Вы можете бесплатно воспользоваться ею по адресу http:// safari.oreilly.com.

Safari

K./LXXC4.XX XX

ХС4Х UXV/ X * .j

1 1 1 vXliXvj

jLv/IvX

c/vXvXv X

v/XXXXCXZJ. XvXXxX

Как с нами связаться Вы можете направлять вопросы и замечания, касающиеся этой книги, издателю: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 800-998-9938 (в США или Канаде) 707-829-0515 (международный или местный) 707-829-0104 (факс) Кроме того, на сайте издательства есть веб-страница, на которой перечислены найденные ошибки и дается дополнительная информация. Она находится по ад­ ресу http://www.oreilly.com/catalog/9780596009526. Примеры, советы и новые процедуры время от времени будут появляться на тестовом сайте, созданном авторами книги, по адресу http://www.centralsoft.org. Если у вас есть желание оставить свой комментарий или задать какие-либо вопросы по этой книге, пишите по адресу [email protected]. Дополнительную информацию о данном издании, конференциях, центрах ресур­ сов и сети O’Reilly вы найдете на сайте издательства по адресу http://www.oreilly.com.

16

Введение

Благодарности Книги, подобные этой, выходят в свет только благодаря объединению усилий мно­ гих людей. К сожалению, перечислить всех здесь невозможно. В первую очередь мы хотели бы поблагодарить Энди Орама (Andy Oram), чья работа по редактированию этой книги кажется нам замечательной. Кроме того, Энди помогал в выборе тем, описываемых в издании, а также стал менеджером проекта, проявив при этом большое терпение. В создании книги нам также очень помогли такие профессионалы, как Фаль­ ко Тимме (Falko Timme), Фил Говард (Phil Howard) и Гершель Коэн (Herschel Cohen). Фалько помог в создании глав 2 и 4. Фил написал большую часть главы 11 и обеспечил базу для главы 10, а также участвовал в создании сопутствующего приложения сценариев. Гершель написал части нескольких глав, включая главы 8 и 10, и поделился своими знаниями в главе 6. Кроме того, наши помощники про­ верили другие части книги. Большое спасибо техническим экспертам, которые провели много времени, пе­ репроверяя, тестируя нашу работу и внося полезные замечания: Маркусу Амерсдорферу (Markus Amersdorfer), Кейт Бюргесс (Keith Burgess), Роберту Дэю (Robert Day), Аммару Ибрагиму (Ammar Ibrahim) и Яману Сакка (Yaman Saqqa). Отдельное спасибо Ивон Аделыптайн (Yvonne Adelstein) и Мэри Любанович (Mary Lubanovic) — нашим женам, проявившим бесконечное терпение. Мы бы не написали эту книгу без их поддержки.

От издательства Ваши замечания, предложения и вопросы отправляйте по адресу электронной поч­ ты [email protected] (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение! На сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.

1

Требования к системному администратору Linux

Нам нравится Linux. Из тех UNIX-систем, которыми нам доводилось пользовать­ ся, многие сейчас забыты1. Linux — любима. Это отличная служебная платформа с хорошим Рабочим столом, являющаяся центром многих инноваций современного компьютерного мира. Linux имеет очень большую область влияния. Она проникла в сферы телеком­ муникаций, встроенных систем, спутников, медицинской техники, военных систем, компьютерной графики и — особенно — в настольные компьютеры. За сравнительно короткое время Linux превратилась из увлечения финского хакера в систему высшего уровня, поддерживаемую такими тяжеловесами, как IBM и Oracle. Пользовательская база увеличилась с 30 000 в 1995 году до сотен миллио­ нов сегодня. Во время интернет-бума, который пришелся на 1990-е годы, многие системные администраторы UNIX с удивлением обнаружили, что Linux на персо­ нальном компьютере может работать лучше, чем более дорогие рабочие станции и UNIX-серверы. Кроме того, многие администраторы Windows и Novell увидели, что Linux может работать с DNS, электронной почтой и файловыми службами более надежно, чем их нынешние платформы, и при этом не требует постоянного обслужи­ вания. Рост Интернета привел к стремительному распространению использования серверов Linux и появлению необходимости уметь обращаться с ними. Эта книга предназначена для системных администраторов Linux. Хотя вы мо­ жете быть поседевшим ветераном UNIX, смелым сторонником Modular Standard Control Electronics или непреклонным мейнфреймером2, при исследовании новой территории вам понадобятся карта и компас. Некоторые сведения будут известны вам, некоторые — нет. Издание охватывает много тем, которые лишь недавно ста­ ли рассматриваться в контексте системы Linux, например основы виртуализации и кластеры3 с балансировкой нагрузки. Успех Интернета и программного обеспечения с открытым кодом меняет биз­ нес. Google, Amazon, eBay и другие корпорации построили гигантские серверные 1

2

3

Нашей любимой системой стала PNX, о которой впоследствии было сказано, что это название вряд ли снова появится на страницах книг O’Reilly. — Примеч. авт. Приверженец больших универсальных электронно-вычислительных машин (мейнфрей­ мов). — Примеч. ред. Кластер — группа компьютеров, объединенных высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс. — При­ меч. ред.

18

Глава 1. Требования к системному администратору Linux

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

а

При создании этой книги мы постоянно тестировали новые программы и продолжим наши

г эксперименты, когда книга будет продана. Приглашаем вас посетить тестовый сайт с ин‘ формацией о книге: http://www.centralsoft.org, где мы будем публиковать новые примеры, указания по новым полезным инструментам и разнообразные советы.

06 этой книге Книги по системному администрированию обычно вполне предсказуемы. Они объясняют, как вы должны управлять пользователями, файловыми системами, устройствами, процессами, принтерами, сетями и т. д. Но они не рассказывают вам, что делать, если возникнут проблемы. Если ваш сайт стал популярным, вам придется быстро изучить, что такое прокси-серверы, различные уровни кэширо­ вания, балансировка нагрузки, распределенное подтверждение паролей и другие сложные вещи. Если вы добавили базу данных, вам вскоре понадобится измерять ее размеры и учиться избегать атак внедрения SQL. Неожиданно сайт может стать критически важным, и вы должны быть способны делать горячие резервные копии по системе «24 часа в сутки семь дней в неделю». Спустя какое-то время вы устанете делать все сразу и сложным путем, почти каждый день обнаруживая новые технические инструменты со скудными вспо­ могательными ресурсами. Техническая документация как для коммерческих, так и для свободно доступных программ редко находится на должном уровне, и пропасть, кажется, все больше увеличивается. Например, серверы каталогов с открытым исходным кодом (Open Source Directory Servers) стали важны для управления компьютерами, пользователями и ресурсами. Оригинальные при­ емлемые RFC-протоколы лежат в основе многих коммерческих продуктов, но при этом необычайно сложно найти хорошую документацию для общественных проектов.

Чем мы можем помочь Пользователи Linux решают проблемы. Типичный представитель может организо­ вать маленький сервер, получить на дом выделенный интернет-канал со статичным IP-адресом, зарегистрировать доменное имя и построить сервер в Сети. Если вы относитесь к этой категории, то можете просто проштудировать остальные темы этой книги и расширить свои профессиональные возможности. Однако если все это для вас подобно стремительному спуску с горы высотой 10 000 футов, то просто начните с чего-нибудь. Как иногда говорят, глаза боятся, а руки делают!

Нужна ли вам эта книга

19

У вас могут быть свидетельства в пользу других операционных систем. Пока вы будете устанавливать обновления и использовать механизм оперативного пере­ назначения, ваш босс может попросить вас установить сервер Apache, поработать с преобразованиями DNS или заменить Exchange на Zimbra. Если вы все-таки хотите или должны изучить систему Linux, вам понадобится помощь, которую и окажет эта книга.

С чего начать В издании описываются шаги, которым вы должны следовать, чтобы создать авто­ номные серверы. Если вам нужно настроить почтовый сервер, создать веб-сервер или систему блоггинга либо настроить шлюз для вашего LAN, можете перейти пря­ мо к середине книги. Вам не нужно читать все издание от начала и до конца. Мы начнем рассматривать систему издалека, пошагово разъясняя в главе 2, как создать сервер Linux. Вы можете выбрать для себя наилучший способ работы в за­ висимости от того, что вам нужно сделать: создать кластер высокой доступности для веб-сервисов, выполнить консолидацию серверов посредством виртуализации с использованием Хеп или VMware или настроить сервер для локальной сети. Управлять современной операционной системой невероятно дешево. Вы мо­ жете настроить для себя утонченный учебный центр на аппаратном обеспечении, которое многие сочтут устаревшим. Мы использовали бывший в употреблении компьютер, управлявшийся процессором Intel второго поколения, который го­ раздо старше нынешних моделей, и базовую свободную версию Linux.

Нужна ли вам эта книга Популярность технической литературы снижается по мере распространения Интерне­ та. Чтобы сегодня написать успешную книгу, автор должен высоко ценить читателя. Интересная история об одном из первых интернет-магазинов объясняет цен­ ность, которой должна обладать книга. Руководители компании по продаже тво­ рожных пирожных разместили рекламу в Сети. Как рассказывают, прошло несколь­ ко месяцев, а компания не получила ни одного заказа. Тогда руководители сделали необычный шаг — опубликовали свой секретный рецепт выпекания творожных пирожных. Спустя несколько часов после появления рецепта в Сети начались звонки на бесплатную телефонную линию компании. Люди стали заказывать творожные пирожные в больших количествах. Потребители смотрели на рецепт, прикидывали, какие усилия нужно потратить на приготовление собственных тво­ рожных пирожных, и видели смысл покупать их у компании. Одни составляющие этой книги были собраны по всему Интернету, в рассыл­ ках, форумах и дискуссионных группах, другие — из книг, периодических изданий и опыта коллег. В ходе исследований, описанных в издании, мы решили определен­ ное количество проблем, которые совершенно точно не были задокументированы ранее. Теперь мы передаем свои знания вам. Многие отличные сайты проектов не имеют адекватной документации. Разра­ ботчики напряженно и подолгу работают, чтобы раздавать отличные программы

20

Глава 1. Требования к системному администратору Linux

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

Кто нуждается в вас Несколько лет назад большинство системных администраторов Linux сказали бы вам, что не они выбрали свою карьеру — система Linux выбрала их. В прежние дни Linux была похожа на юную UNIX. Большинство системных администра­ торов Linux знали все ходы и выходы на отдельных рабочих станциях и в очень маленьких сетях. Linux унаследовала некоторые серверы UNIX (BIND, Sendmail, Apache), но мало офисных программ и приложений. Сегодня системное админи­ стрирование Linux включает в себя тысячи комплектов и возможность взаимо­ действия с другими операционными системами. Кому нужны администраторы Linux? Например, Центру вычислительных наук НАСА (Center for Computational Sciences, NCCS), созданному в Центре космиче­ ских полетов имени Годдарда (Goddard Space Flight Center). Его высоконадежные вычислительные кластеры, базирующиеся на Linux, спроектированы для того, что­ бы радикально увеличить количество материала для приложений, применяемых для решения любых задач: от изучения погоды и изменений климата до моделиро­ вания астрофизических феноменов. Linux дополняет архитектуру NCCS, предна­ значенную для выполнения не менее 40 триллионов операций в секунду в полной конфигурации. Linux используется в большем количестве передовых мировых суперкомпьюте­ ров, чем любая другая операционная система. Поразительно, но на момент созда­ ния этой книги Linux была установлена на 389 суперкомпьютерах планеты из 500 (это практически 78 %) (http://www.top500.org/stats/28/osfam). По словам глав от­ делов Национальной лаборатории в Ливерморе, СА, Linux управляет их десятью мощными системами, которые входят в ТОР-500. Среди этих систем числятся BlueGene/L — самый мощный суперкомпьютер в мире, и Thunder, который сего­ дня занимает 19-е место (http://www.top500.org/list/2006/ll/100).

Поиск помощи Администраторы Linux широко востребованы. Чтобы дать представление, что от них ожидается, мы просмотрели выборку с сайта национальной биржи труда, со­ стоящую из десятков тысяч записей, которые касаются системных администрато­ ров Linux. Здесь дан краткий срез некоторых требований. О Администрирование и управление широкой средой сервера Linux, включая кон­ троль функционирования, настройку и управление. О Проектирование на физическом уровне, администрирование и сопровождение документацией баз данных. О Устранение ошибок сети, расширенная техническая поддержка и упреждающий мониторинг критически важных систем.

Кто нуждается в вас

21

О Управление техническими решениями для организации, обучение админист­ раторов низшего уровня. О Обеспечение ежедневной технической поддержки и телефонных консультаций по аппаратному обеспечению и окружению операционной системы; поддержка общей платформы: администрирование инфраструктуры сервера Linux для поддержания стабильности и максимальной эффективности компьютерной среды. О Установка и конфигурирование всего аппаратного обеспечения, периферии и необходимого оборудования для достижения интегрированных целей сис­ темы; устранение ошибок. О Обеспечение эффективной поддержки первого и второго уровня для среды Linux в компании с 300 и более серверов, включая blade-серверы Linux. О Организация всех аспектов целостности среды, включая безопасность, наблю­ дение (мощность и эксплуатационные качества), контроль изменений и управ­ ление программами. О Сотрудничество с другими внутренними группами поддержки, управляющими контролем изменений, разработкой приложений, проектированием, админи­ стрированием баз данных, командными центрами, а также следящими за веб­ сервисами, хранением информации, обеспечением безопасности. О Администрирование служб инфраструктуры — DNS, NIS, LDAP, FTP, SMTP, Postfix/Sendmail, NFS, Samba — серверов приложений и баз данных с акцентом на автоматизацию и мониторинг. Сейчас Linux — это стандартная корпоративная платформа, и профессионалы с навыками администрирования в Linux очень востребованы. Таким образом, изу­ чив Linux, вы повысите свою ценность как работника.

Анализ профессиональных навыков Если вы поинтересуетесь у системных менеджеров насчет роли системного адми­ нистратора, то получите различные ответы. Инерция рынка удивила нынешнее поколение менеджеров, которым недостает информации о Linux. Они не знают, что должны знать профессионалы по Linux, а профессионалы по Linux редко по­ нимают таких менеджеров. Многие менеджеры информационных систем, разбирающиеся в UNIX, пы­ таются навязать администраторам Linux стандарты UNIX. Это редко работает. Администраторы UNIX считают, что им будет легко перейти на Linux, но быстро понимают, что не обладают достаточными знаниями. Администраторы же Linux испытывают меньше проблем при переходе на UNIX. Одно из объяснений состо­ ит в том, что они лучше понимают свои системы, поскольку такова сама природа программ с открытым кодом. При решении задач системного администрирования специалисты чаще нуж­ даются в Интернете, чем обходятся без него. Большинство операций относится к управлению электронной почтой и Сетью, добавим еще телекоммуникации и мо­ бильность. Только электронная почта составляет 70 % интернет-трафика. Сегодня широкополосные приложения, такие как телефонная связь по технологии IP (VoIP)

22

Глава 1. Требования к системному администратору Linux

и другие формы коммуникации, включая интернет-пейджеры, стали более попу­ лярны и также забирают часть трафика, снижая процент, занимаемый электрон­ ной почтой. Но пока используются протоколы и средства массовой информации, Интернет останется основной сферой действия Linux. Продолжим анализ профессиональных навыков, описанных в предыдущем под­ разделе. Последний пункт («администрирование служб инфраструктуры») может дать вам представление о стандартном наборе навыков для Linux. Работодатели хотят нанимать системных администраторов, которые могут обращаться с тем, что они считают «службами инфраструктуры». Обратите внимание, что вовлекают­ ся технологии Интернета. В списке компонентов Linux, которые требуется знать хотя бы на минимальном уровне, в большинстве случаев будут находиться DNS, LDAP, FTP, SMTP и Postfix/Sendmail. В главах 2-6 мы обсудим большинство из этих компонентов. Другая категория работ обычно относится к внутренним нуждам предприятия. Сюда включаются расширенный технический сервис, поддержка и телефонные консультации по аппаратному обеспечению и среде операционной системы. Боль­ шинство системных администраторов Linux должны обладать соответствующими знаниями для оказания этих услуг, но эти услуги не рассматриваются в данной книге, поскольку не являются чисто техническими. Оставшиеся виды ответственности попадают в категорию «навыков работы с программами». Раньше не каждый ожидал бы от типичного системного админи­ стратора работы с другими внутренними группами поддержки, управляющими, например, разработкой приложений, проектированием, администрированием баз данных и пр. Хотя системный администратор уже давно не является только тех­ ником со знаниями некоторых тайных систем. Он непосредственный сотрудник компании, имеющий право принимать решения. Обычно навыки и специализация по программному обеспечению приобрета­ ются после изучения основ. Мы лишь коснемся этих тем в данной книге, но счи­ таем, что они находятся вне диапазона нашей работы. Другие книги издательства O’Reilly и время, проведенное в их практическом изучении, помогут вам получить эти ценные способности. Сейчас мы кратко рассмотрим те области, в которых оче­ видно наибольшее развитие системного администрирования и ощущается недо­ статок документации. Лишь отдельные учебные заведения предлагают курсы по системному админи­ стрированию Linux, в то время как специалистов в других областях компьютерных знаний и инженерно-технического обеспечения готовят во многих вузах. Таким образом, если вы захотите изучить системное администрирование Linux, то вынуж­ дены будете искать материалы за стенами университета. Но многие материалы, которые вы сможете найти, не будут включать того, что профессионалы Linux счи­ тают наиболее важным. Большинство администраторов Linux — самоучки, которые были вынуждены изучить эту систему. На определенном этапе они начинали работать. Необходи­ мость продолжала расти, заставляя их узнавать все больше и больше, пока они не научились делать практически все из того, что должен делать системный ад­ министратор. Данная книга позволит вам достичь профессионализма в широкой области задач системы Linux более быстро и эффективно, чем это было возможно ранее.

Что дальше

23

Что системный менеджер должен знать о Linux Менеджер по информационным технологиям в первую очередь должен знать, что Linux — это не UNIX. Linux не только может надежно выполнять абсолютное боль­ шинство программ для UNIX, но и располагает большим объемом приложений для открытых и закрытых сетей. Администраторы Linux могут конфигурировать варианты, выбирая из боль­ шого количества компонентов, выполняющих подобную работу. Например, почти в любом варианте UNIX Sendmail — это единственный доступный почтовый агент (МТА). Но, используя Linux, вы можете выбирать из множества сравнимых МТА, в зависимости от того, с чем вы собираетесь работать: с приложением рабочей груп­ пы, крупномасштабной почтовой корпоративной опорной сетью или с простым веб-приложением для обращения с формами обратной связи. Дальнейший завет гибкости Linux состоит в том, что это первая операционная сис­ тема, применяемая IBM, которая работает на всех ее аппаратных платформах, от сер­ веров xSeries Intel class, включая pSeries и iSeries, до мейнфреймов S/390 и zSeries. Если вам нужен администратор Linux и вы используете большие системы IBM, то кандидат должен знать архитектуру мейнфреймов и понимать такие термины, как DASD для ЗУ жестких дисков, IPL для загрузки системы, «каталог» для ди­ ректории и «список команд» (command list) для сценария оболочки. Но не оценивайте администраторов Linux слишком дешево. Они отличают­ ся быстрой обучаемостью и адаптацией, наличием широкой базы знаний, какой вы не найдете у других специалистов. Они могут научиться управлять вашими комплектами Microsoft за меньшее время, чем то, что уйдет у MSCE на изучение одной-единственной задачи Linux.

Что дальше Теперь мы знаем, что вам не нравятся медленное обучение и горы неясного контек­ ста (на самом деле мы изумлены, что вы прочитали главу так далеко), поэтому мы хотим начать как можно скорее. Сначала рассмотрим работающий сервер, где будут выполняться многие виды работ с Linux, которые вы сможете изучить и использо­ вать. Именно с этого сервера, готового к работе в Интернете, мы начнем следующую главу. Вам понадобятся такие инструменты, как веб-сервер и электронная почта, вне зависимости от того, как вы используете свой сервер (даже если, например, он работает только с LAN). Причем эти инструменты понадобятся уже на старте. В остальной части книги затрагиваются те же темы и вводятся некоторые новые понятия, поэтому вы можете не считать каждый день. Данное издание совмещает черты поваренной книги и путеводителя: вы можете наслаждаться приятным зав­ траком, одновременно просматривая книгу. Обычно мы объясняем тему в начале главы и четко, отдельными этапами рассматриваем ее применение на практике. Если вы хотите просто следовать пошаговым инструкциям, займитесь этим. Вы можете наметить, что делать дальше. Мы чувствуем, что наша помощь поможет вам двигаться в правильном направлении. Вперед и вверх!

Настройка многофункционального сервера Linux Есть серьезная разница между чтением о предмете и применением этого предме­ та на практике. Вот почему в школах по такому большому количеству дисциплин предлагаются лабораторные занятия. Если вы планируете изучать системное адми­ нистрирование Linux, вам нужен сервер. Итак, первая задача состоит в организации базовой серверной среды. Когда вы ее построите, у вас будет хорошая основа для того, чтобы приступить к изучению Linux. Операционная система Linux напоминает колесную базу автомобиля, которая может иметь огромное множество различных функций, зависящих от выбора шас­ си и комплектующих. Когда вы добавляете такие службы, как электронная почта или база данных, система приобретает новый характер. Нужны ли вам веб-сервер, платформа для разработок, шлюз или файловый и печатный сервер? Все, что вам нужно, — ядро, которое описывает эта глава. Мы начнем с сервера, который вы могли встретить в Интернете, размещая сайты. Вы можете спросить, почему именно с него. Потому что вы сможете адап­ тировать веб-сервер ко многим дополнительным задачам, таким как управление доступом пользователей, обеспечение печатных и файловых служб, управление локальной электронной почтой и обеспечение удаленного доступа. Вы можете взять сервер для занятия веб-хостингом, включить его и предлагать веб-сервисы. Вы даже можете оставить его у себя дома, если получите от своего ISP1 статичный 1Р-адрес. Настройка сервера для Интернета может изменить ваш взгляд на вычислитель­ ные науки. Использование сети широкого доступа (WAN) отличается от использо­ вания Linux в качестве Рабочего стола, файлового или печатного сервера или обыч­ ного брандмауэра. Начинающие администраторы при конфигурации сервера могут немного за­ путаться в незнакомых терминах и концепциях. У вас не будет удобного графи­ ческого интерфейса операционной системы X Window System, и вам потребуется набирать команды вместо того, чтобы просто щелкать кнопкой мыши на значках. Ваша работа будет выполняться в консольном режиме, через интерфейс команд­ ной строки. 1

Internet service provider — поставщик интернет-услуг, или провайдер. — Примеч. ред.

Требования к серверу

I |

25

В следующей главе мы покажем вам, как внедрить в систему инструмент на базе Сети (поставщики услуг используют такой инструмент для управления серверами Linux, которые они выделяют клиентам для хостинга). Таким образом, не все, что вам придется делать, будет ограничено черно-белым экраном.

Если вы будете следовать инструкциям этой главы, то получите набор для хос­ тинга, который позже сможете адаптировать для своих целей. Ваша система будет использовать следующие компоненты: О веб-сервер (Apache 2.0.x); О почтовый сервер (Postfix); О сервер DNS (BIND 9); О сервер FTP (ProFTPD); О агенты для доставки почты (POP3/POP3s/IMAP/IMAPs); О вебалайзер1 для статистики сайта. Хотя есть много возможностей настроить удаленный веб-сервер, следование приведенным здесь инструкциям дает хорошую базу для понимания Linux. Освоив эту настройку, вы будете способны сконфигурировать сервер для любых задач. Во время рассмотрения процесса установки вы, наверное, увидите незнакомые команды и тер-

Е

\ мины. Мы предложим вам вводить данные, которые, казалось бы, не имеют ни малейшего смысла. Мы попытаемся рассказать о процессе настройки как можно более подробно, однако вам не стоит довольствоваться лишь той информацией, что приводится в этой главе.

Человеку трудно запомнить сложную информацию с первого раза, поэтому мы будем воз­ вращаться к деталям предыдущих тем в последующих главах.

Войдите в ожидающий вас новый мир Linux. Итак, поехали!

Требования к серверу Вы можете использовать практически любой дистрибутив Linux для настройки веб-сервера. В этом разделе мы будем использовать Debian. Мы выбираем Debian, поскольку хотим пользоваться стабильным вариантом Linux. Основные коммер­ ческие варианты — Red Hat Enterprise Linux и Novell’s SUSE Linux Enterprise Server — имеют такую цену, что остаются недоступными для большинства поль­ зователей, a Debian вы можете приобрести бесплатно. Кроме того, Red Hat и SUSE используют запатентованные инструменты управления, которые создают трудно­ сти при передаче знаний о Linux. Используя Debian, вы можете узнать о стандартном поведении Linux больше, чем применяя SUSE или Red Hat. Чтобы настроить веб-сервер Linux, вам потребуется соединение с Интернетом и статический IP-адрес. Если вы не можете приобрести статический IP-адрес, то 1

Прикладная программа, распространяемая под лицензией GPL, генерирующая HTMLстраницы со статистикой о работе сайта на основе файлов регистрации событий веб­ сервера. — Примеч. ред.

26

Глава 2. Настройка многофункционального сервера Linux

можете настроить систему с адресом, предоставленным вашим ISP, и конфигури­ ровать его статически. Убедитесь, что знаете длительность срока пользования IP на случай, если вам придется менять его во время работы вашей системы. Вам также потребуется компьютер, оснащенный процессором модели минимум Pentium III, оперативной памятью объемом минимум 256 Мбайт и жестким диском емкостью минимум 10 Гбайт. Разумеется, более новый процессор и дополнитель­ ная память обеспечат лучшие эксплуатационные качества. Эта глава основана на стабильной версии Debian. Мы настоятельно рекомендуем использовать компакт-диск с ядром Netinstall. На сайте Debian (http://www.debian.org) можно скачать образы дисков.

Установка Debian Мы предполагаем, что вы знаете, как инсталлировать Linux из Сети. Вам потребу­ ется только несколько указаний, чтобы настроить базовый комплект. Вставив диск Debian, вы увидите экран входа. Убедитесь, что тип системы — linux26. Это позволит получить последнюю версию ядра 2.6 вместо устаревшей версии 2.4. Программа установки проведет вас через ряд экранов установки. Когда вы по­ падете на экран под названием Конфигурировать сеть, Debian сначала предложит настроить вашу сеть с помощью DHCP. Вы можете сделать это, если имеете доступ к DHCP. Если нет, то по умолчанию Debian перейдет к экрану, который позволит вам конфигурировать сеть вручную. Вас попросят сообщить имя хост-системы, доменное имя, шлюз, IP-адрес, сетевую маску и сервер имен. Если вы зарегистри­ ровали домен и статичный IP-адрес, то все в порядке. Если вы не зарегистрировали доменное имя, то его нужно получить.

а

?

На некоторых ресурсах вы можете приобрести доменное имя дешевле чем за $3. Поищите

в Интернете по ключевым словам «регистрация домена». Вы найдете списки регистраторов. Одни поставщики предлагают свои услуги по низким ценам, другие — вообще бесплатные доменные имена. Вам требуется иметь под рукой два зарегистрированных ОИБ-сервера, чтобы получить доменное имя. Вы также можете воспользоваться доступом к ОИБ-серверу своего регистратора, если у вас нет физического сервера, для обеспечения вторичных до­ менных услуг. Каждый зарегистрированный вами домен требует первичного ОМБ-сервера и резервной копии или вторичного ОИБ-сервера.

Теперь, когда вы настроили свою сеть, можете продолжить инсталляцию, чтобы завершить создание базовой системы. Установочный сценарий Debian проведет вас через следующие этапы. Сначала вы увидите окно с отображением секторов жест­ кого диска. Для работы с этой книгой вам достаточно создать только один большой сектор с точкой монтирования / (просто косая черта, или слэш) и областью под­ качки. Установите флажок Перенести все файлы в один сектор. Наконец, укажите необходимость окончательного сегментирования и запишите результаты на диск. Базовая установка Debian выполняется в два этапа. На первом этапе инсталлируется ин­ струмент, который многие называют GNU/Linux plumbing. Он позволяет перезагрузить жест­ кий диск и получить корневую подсказку. Он также переносит файлы с компакт-диска на жесткий диск.

Установка Debian

27

Когда первый этап закончится, последует запрос извлечь диск и нажать Start для инсталля­ ции. С этого момента установка продолжается с использованием файлов, сохраненных на жестком диске.

Теперь нужно пройти через несколько оставшихся окон установки. В итоге вам будет предложено перезагрузиться для инициализации ядра и завершения инстал­ ляции. После перезагрузки компьютера Debian захочет добавить вас как непривиле­ гированного пользователя. Это позволит вам зарегистрироваться и использовать команду su, чтобы получить root-статую. Из соображений безопасности системные администраторы выработали стандартную практику не входить в систему в rootстатусе, если не требуется восстановления вышедшей из строя системы. Назовите свою первую пользовательскую учетную запись Администратор и дайте ей пользовательский идентификатор (ID) admin. Не применяйте для admin тот же пароль, что и для root. В последующих главах мы будем пользоваться ID admin. Когда вы попадете в окно выбора программного обеспечения Debian, установи­ те курсор в поле, следующем за указанием почтового сервера, нажмите клавишу Пробел и дайте системе установить комплект по умолчанию, пока не попадете в окно, где увидите клиент libe. Вы должны инсталлировать клиент libe со стандартной поддержкой почтового ящика UNIX, а не с поддержкой maildir. Почтовые ящики UNIX содержат всю почту в одном файле, тогда как maildir сохраняет каждое сообщение отдельным файлом. Почтовые ящики UNIX проще в использовании и настройке, так что начните с них. Debian также предложит вам конфигурировать Exim в качестве почтового агента (МТА), но не делайте этого. Мы изменим Exim на Postfix несколько поз­ же в этой главе. Когда вы увидите окно, где предлагается настроить Exim v4, установите флажок Не конфигурировать. Затем ответьте Да, когда программа уста­ новки выдаст сообщение Вы действительно хотите не конфигурировать почтовую систему?. Наконец, в последнем окне, касающемся конфигурирования Exim, введите имя пользователя admin как получателя почты для root и postmaster.

Агенты МТА: Sendmail и альтернативы Процесс установки Debian по умолчанию связан с Exim, тогда как другие варианты Linux обычно используют Sendmail. Долгое время Sendmail фактически был стандартным почтовым клиентом, и в ранних вариантах Linux предпочтение отдавалось ему. Практически все процессы в Linux, касающиеся почты, используют файлы конфигурации Sendmail, и большинство бесплатных программных приложений предполагают существование Sendmail в операционной системе. Можно обмануть Linux так, чтобы система предполагала, что использует Sendmail, но заменить его другим почтовым клиентом. Например, когда вы устанавливаете Red Hat, Sendmail устанавливается по умолчанию. Хотя и Red Hat, и Fedora выпускаются с программой, позволяющей пользователю подключать­ ся к Postfix, мы будем подключаться вручную.

, ; ’ < ; i ■

28

Глава 2. Настройка многофункционального сервера Linux

Проект-менеджеры Debian выбрали Exim как почтовый клиент по умол­ чанию, поскольку его создатель лицензировал его под стандартной общест­ венной лицензией (GPL). Подобно Postfix, Exim является тестовой заменой для Sendmail. В обычной практике сегодня используется Postfix (по многим причинам мы затронем этот вопрос далее в этой главе). Изменив Exim на Postfix, вы не ис­ портите свою систему. На самом деле вы загрузите Postfix из архива Debian.

Удаленный вход в систему После завершения установки вам следует войти на сервер из удаленной консоли на вашем Рабочем столе. Мы рекомендуем в дальнейшем осуществлять админист­ рирование из другой системы (даже с ноутбука), поскольку надежный сервер, как правило, работает в так называемом режиме head-less, то есть не имеет ни монитора, ни клавиатуры. Подходите к администрированию вашего сервера таким образом, как если бы вы находились на производственной площадке. На удаленной машине вам требуется только SSH-клиент, который виртуально содержит все варианты Linux и вполне может быть загружен для других операционных систем. В следующем листинге показан типичный пример кода, который вы увидите при первом использовании SSH на вашем новом сервере Linux:

$ ssh admin0serverl.centralsoft.org The authenticity of host 'serverl.centralsoft.org (70.253.158.42)' can't be established. RSA key fingerprint is 9f:26:c7:cc:f2:f6:da:74:af:fe:15:16:97:4d:ЬЗ:e6. Are you sure you want to continue connecting (yes/по)? yes Warning: Permanently added 'serverl.centralsoft.org,70.253.158.42' (RSA) to the list of known hosts. Password: enter password for admin user here Linux serverl 2.6.8-2-386 #1 Thu May 19 17:40:50 JST 2005 i686 GNU/Linux The programs included with the Debian GNU/Linux system are free software: the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY N0 WARRANTY, to the extent permitted by applicable law. Last login: Sun Dec 25 19:07:38 2005 from 70.255.197.162 admin@serverl:~$ На этом этапе вы наладили удаленное соединение и можете формулировать за­ дачи, как если бы вы наблюдали систему с монитора вашего сервера. Если хотите, можете удалить все мониторы, клавиатуры и мыши, которые вы подсоединили к своему серверу.

Конфигурирование сети Если во время установки Debian вы использовали DHCP, то теперь должны кон­ фигурировать свой сервер со статичным IP-адресом. Так вы сможете выполнить тестирование, о необходимости которого будет рассказано далее в этой главе. Если

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

29

у вас был публичный IP-адрес, а вы конфигурировали его как статичный, то мо­ жете пропустить этот раздел. Если вы установили Debian с помощью клиента DHCP со своего устройства маршрутизации или с помощью интернет-провайдера, то должны заново настроить сеть. Этот урок ценен сам по себе для исследования конфигурации сети Linux. Чтобы изменить установки для использования статичного IP-адреса, нужно стать root-пользователем и отредактировать файл /etc/network/interfaces. В каче­ стве примера мы будем использовать IP-адрес 70.153.258.42. Первоначально наш файл конфигурации выглядит примерно так:

# /etc/network/interfaces -- configuration file for ifup(8). ifdown(8) # The loopback interface auto lo iface lo inet loopback # The first network card - this entry was created during the Debian # installation (network, broadcast, and gateway are optional) # The primary network interface iface ethO inet dhcp Для добавления IP-адреса 70.153.258.42 к интерфейсу ethO мы должны изме­ нить файл, чтобы он выглядел примерно так (вы должны узнать некоторую ин­ формацию о вашем ISP):

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface auto lo iface lo inet loopback # The first network card - this entry was created during the Debian # installation (network, broadcast, and gateway are optional) auto ethO iface ethO inet static address 70.153.258.42 netmask 255.255.255.248 network 70.153.258.0 broadcast 70.153.258.47 gateway 70.153.258.46

После редактирования файла /etc/network/i nterfaces перезапустите сеть, введя следующую команду: # /etc/init.d/networking restart

Далее вам нужно будет отредактировать файл /etc/resol v.conf и добавить серверы имен, чтобы распределить хост-имена Интернета по соответствующим IP-адресам. Хотя уже пора конфигурировать сервер имен, мы сделаем это позже. Сейчас мы просто настроим минимальный DNS-сервер. Остальные серверы имен должны задать IP-адреса DNS-серверов, предложенных вашим ISP. Наш файл resol v. conf выглядит следующим образом: search server nameserver 70.153.258.42 nameserver 70.253.158.45 nameserver 151.164.1.8

30

Глава 2. Настройка многофункционального сервера Linux

а

Убедитесь, что вы используете DNS-серверы, работающие с сайтом вашего домена; в про-

f. тивном случае ваш DNS-сервер не определит, что это полномочие вашего домена.

Теперь отредактируйте файл /etc/hosts и добавьте свои IP-адреса:

127.0.0.1 local host.local domain local host serverl 70.153.258.42 serverl.central soft.org serverl л*

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

а

Игнорируйте информацию IPv6 в файле /etc/hosts. В главе 8 мы покажем, как настроить IPv6-cepBep.

Теперь, чтобы установить хост-имя, введите следующие команды: # echo serverl.centralsoft.org > /etc/hostname # /bin/hostname -F /etc/hostname

Вам нужно использовать одни и те же команды, независимо от того, как вы на­ строите свою сеть во время инсталляции, а именно подставляя свое доменное имя вместо serverl. central soft. org. Далее вам нужно удостовериться, что вы правильно конфигурировали свое хостимя. Для этого запустите команду hostname:

hostname serverl ~$ hostname -f serverl.central soft.org

Если у вас получился такой результат, то вы готовы перейти к следующему эта­ пу. Если нет, то посмотрите файл /etc/hostname. Вы увидите, что он выглядит так: #less /etc/hostname serverl Ой! А должно быть serverl. central soft. org. Сейчас вы можете это поменять.

Изменение пакета Debian по умолчанию Мы начали с пакета, который специалисты по Debian размещают в варианте по умолчанию. Как было замечено выше, мы должны изменить кое-что — при исполь­ зовании Postfix. Если вы полагаете, что мы дублируем хорошую работу команды Debian, то это совсем не так. Команда Debian выбрала для установки по умолчанию службы, подходящие для LAN, такие как Network File System (NFS). Но мы запускаем свой сервер для работы в Интернете, поэтому удалим NFS и некоторые другие службы, добавив новые, например OpenSSL. Для получения необходимых файлов выполните следующую команду:

# apt-get install wget bzip2 rdate fetchmail libdb3++-dev \ unzip zip ncftp xlispstat libarchive-zip-perl \ zliblg-dev libpopt-dev nmap openssl lynx fileutils

Изменение пакета Debian по умолчанию

31

В своей консоли вы увидите, как Debian загружает файлы. Вскоре загрузка пре­ кратится, и вы получите сообщение, подобное следующему, с вопросом, хотите ли вы продолжить: О upgraded, 42 newly installed, 0 to remove and 0 not upgraded. Need to get 12.2MB of archives. After unpacking 35.8MB of additional disk space will be used. Do you want to continue? [Y/n]

Нажатие клавиши Y завершит установку дополнительных файлов. В дальнейшем вы можете захотеть удалить неиспользуемые службы. Выполни­ те следующую команду, и вы увидите такой код: # apt-get remove Ipr nfs-common portmap pidentd pcmcia-cs \ pppoe pppoeconf ppp pppconfig Reading Package Lists... Done Building Dependency Tree... Done Package pcmcia-cs is not Installed, so not removed The following packages will be REMOVED: lpr nfs-common pidentd portmap ppp pppconfig pppoe pppoeconf 0 upgraded, 0 newly Installed, 8 to remove and 0 not upgraded. Need to get OB of archives. After unpacking 3598kB disk space will be freed. Do you want to continue? [Y/n] Y (Reading database ... 22425 files and directories currently installed.) Removing lpr ... Stopping printer spooler: Ipd . Removing nfs-common ... Stopping NFS common utilities: statd. Removing pidentd ... Removing portmap ... Stopping portmap daemon: portmap. Removing pppoeconf ... Removing pppoe ... Removing pppconfig ... Removing ppp ... Stopping all PPP connections...done.

а

Убедитесь, что вы перепроверили команды, которые вводите. Если вы допустите опечатку, Debian сообщит, что не может найти запрашиваемый файл. В этом случае просто заново введите apt-get, обозначив имя пакета.

После того как вы внесли изменения в базу данных комплекта, вы должны из­ менить сценарии, запускаемые при загрузке. Используйте следующие команды, чтобы модифицировать сценарии, загружаемые по умолчанию: # update-rc.d -f exim remove Removing any system startup links for /etc/init.d/exim # update-inetd -remove daytime # update-inetd -remove telnet # update-inetd ■remove time # update-inetd -remove finger # update-inetd -remove talk

32

Глава 2. Настройка многофункционального сервера Linux

# update-inetd --remove ntalk # update-inetd --remove ftp # update-1netd --remove discard

Теперь вам нужно перезапустить программу inetd, являющуюся служебным про­ цессом для стандартных интернет-сервисов. Как правило, inetd запускается в момент загрузки, но, поскольку вы изменили системные службы, вы должны перезапустить ее, чтобы она смогла обнаружить изменения в файле конфигурации. Команда 1 netd принимает аргумент, указывающий на файл конфигурации, записывая службы, кото­ рые он обеспечивает. Однако если в командной строке не задан аргумент, программа inetd считывает информацию о конфигурации из файла /etc/1 netd. conf, что удовле­ творяет нашим задачам. Команда update-inetd сохраняет изменения в этот файл. Для перезапуска программы inetd с использованием конфигурационного файла по умолчанию введите следующее: # /etc/init.d/inetd reload Вы увидите в командной строке такое сообщение:

Reloading internet superserver: inetd

Настройка квот Веб-сервер Apache дает Linux возможность обеспечивать виртуальный хостинг — это означает, что ваш сервер может принимать несколько сайтов, чьи доменные имена отличаются от имени физического сервера. В файле конфигурации веб-сер­ вера вы можете определить различные домены, используя условия виртуального хостинга. Например, в этой книге применяется доменное имя centralsoft.org, но вместо него может быть mothersmagic.com, wildbills.info и любое другое доменное имя, которое мы зарегистрируем, используя тот же 1Р-адрес. Мы подробно разъясним эту концепцию в главе 6. Сейчас просто представьте, что IP-адрес — это номер телефона, расположенного в доме, в котором живет не­ сколько разных людей. Когда браузер попадает на порт 80, он может попасть на домен, который вы настроите. Linux предоставляет средства управления использованием диска для множе­ ственных доменов с помощью средств обслуживания, называемых квотами. Перво­ начально система UNIX обеспечивала квотами пользовательскую учетную запись так, что они не занимали много места на сервере. Например, если дисковое про­ странство вашего сервера разделено между 50 пользователями, то без применения квот один пользователь может заполнить весь диск, из-за чего приложения осталь­ ных пользователей больше не смогут сохранять данные. Наличие квот вынуждает пользователей придерживаться ограничений потреб­ ления дискового пространства. Система сохраняет запись квот на каждого пользо­ вателя и на файловую систему. Если у вас несколько файловых систем, в которых пользователи могут создавать файлы, то настройте сервис отдельно для каждой файловой системы. Вы можете использовать ту же систему квот для ограничения пространства, отведенного под домен, который вы размещаете на сервере. Различные инструмен­ ты позволяют администрировать и автоматизировать алгоритмы квот в системе.

Настройка квот

33

На данном этапе настройки сервера вы добавляете возможность квотирования для ее дальнейшего применения. Сначала инсталлируйте пакет quota, используя команду apt-get:

# apt-get install quota quotatool Вы получите следующее сообщение:

Enable this option if you want the warnquota utility to be run dally to alert users when they are over quota. Send dally reminders to users over quota?

Здесь нужно выбрать . Debian установит и сконфигурирует два пакета, но вы должны отредактировать файл /etc/fstab, чтобы квоты поддерживались всеми нужными вам файловыми системами. Поскольку в нашей системе есть только один раздел для всех пользо­ вательских файлов, то вы просто можете добавить параметры usrquota и grpquota к разделу с точкой монтирования системы /:

# /etc/fstab: static filesystem Information. # # /proc proc defaults 0 0 proc defaul ts.errors=remountro,usrquota,grpquota / ext3 /dev/sdal 0 1 0 sw 0 none swap /dev/sda5 0 /medla/cdromO 1so9660 ro,user,noauto 0 /dev/hdc 0 /medla/floppyO auto rw,user,noauto 0 /dev/fdO Теперь выполните следующие команды для добавления файлов в корневой ка­ талог:

# # # #

touch /quota.user /quota.group chmod 600 /quota.* mount -o remount / quotacheck -avugm

Ядро Linux обычно поддерживает квоты по умолчанию. Оно находит настрой­ ки квот в файле /etc/fstab и проверяет параметры quota. user и quota. group, чтобы определить, имеют ли пользователи и/или группы ограничения использования дискового пространства. Сейчас вы увидите в командной строке следующее: quotacheck: Scanning /dev/hdal [/] done Вы также увидите сообщение, подобное следующему:

quotacheck: Checked 1912 directories and 28410 files

Теперь вы можете выполнить такую команду: # quotaon -avug Вы увидите следующие сообщения:

/dev/hdal [/]: group quotas turned on /dev/hdal [/]: user quotas turned on

34

Глава 2. Настройка многофункционального сервера Linux

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

Предоставление услуг по доменному имени В главе 3 вы узнаете, как управлять доменными именами для вашего сервера и для любых виртуальных доменов, размещенных в системе. Сейчас мы настроим минимальную конфигурацию для BIND — повсеместно используемого DNS-сер­ вера. Debian предлагает в своем архиве стабильную версию BIND. Мы установим и настроим BIND, а также закрепим его в среде chroot, чтобы он не мог видеть файлы, находящиеся за пределами его собственного дерева каталогов, или полу­ чать доступ к ним. Это важная методика безопасности. Термин chroot относится к способу изменения корневой файловой системы (директории /) так, что для процесса действительно недоступна большая часть системы. Мы также конфигурируем BIND для работы в режиме пользователя non-root. Таким образом, если кто-нибудь дает доступ к BIND, это не дает root-привилегии или возможности контролировать другие процессы. Чтобы установить BIND на свой сервер Debian, выполните следующую команду: # apt-get install bind9 Debian загружает и конфигурирует этот файл как интернет-сервис. Вы увидите в консоли следующее сообщение:

Setting up b1nd9 (9.2.4-1) Adding group 'bind' (104) Done. Adding system user 'bind' Adding new user 'bind' (104) with group 'bind'. Not creating home directory. Starting domain name service: named.

®

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

г. мощью утилиты apt-get.

Чтобы поместить BIND в защищенную среду, вы должны создать каталог, в ко­ тором эта служба сможет выполняться независимо от других процессов. Вы также запустите ее как непривилегированный пользователь, но только root-пользователь сможет иметь доступ к этому каталогу. Сначала остановите сервис, выполнив следующую команду:

# /etc/init.d/bind9 stop

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

35

Далее отредактируйте файл /etc/defaul t/bi nd9, чтобы демон работал как непри­ вилегированный пользователь bind, изменив корневой каталог на /var/11 b/named. Измените строку

OPTS="-u bind"

на OPTIONS="-u bind -t /var/1ib/named"

Для обеспечения полноценной среды для работы BIND создавайте необходи­ мые директории в папке /var/11 b: # # # #

mkdir mkdir mkdir mkdir

-р /var/1ib/named/etc /var/1ib/named/dev -p /var/1ib/named/var/cache/bind -p /var/1ib/named/var/run/bind/run

Затем переместите каталог config из /etc в /var/1 ib/named/etc: # mv /etc/bind /var/1ib/named/etc

Далее создайте символьную ссылку к новому каталогу config со старого места во избежание проблем, если в будущем BIND будет перемещен: # In -s /var/1ib/named/etc/bind /etc/bind

Установите для использования в BIND нулевые и случайные устройства и за­ фиксируйте допуск к каталогам: # mknod /var/1ib/named/dev/null с 1 3 # mknod /var/1ib/named/dev/random с 1 8

Затем замените допуск и права собственности на файлы: # chmod 666 /var/1ib/named/dev/null /var/1ib/named/dev/random # chown -R bi nd:bi nd /var/1ib/named/var/* # chown -R bi nd:bi nd /var/1ib/named/etc/bind

Вы также должны изменить стартовый сценарий /etc/init .d/sysklogd, чтобы по-прежнему можно было видеть сообщения в системном журнале. Измените строку SYSLOGD="" на

SYSLOGD="-a /var/1ib/named/dev/log"

Теперь перезапустите процесс входа следующей командой: # /etc/init.d/sysklogd restart Вы увидите такое сообщение:

Restarting system log daemon: syslogd.

Наконец, запустите BIND: # /etc/init.d/bind9 start

36

Глава 2. Настройка многофункционального сервера Linux

Проверьте /var/1 og/syslод на наличие ошибок. Вы можете просмотреть файл, используя следующую команду: # less /var/1og/syslод Вы можете быть уверены, что BIND запущен успешно, если увидите такое со­ общение:

Starting domain name service: named.

Теперь нужно проверить, работает ли named без ошибок. Выполнив эту команду, вы должны увидеть следующий результат: serverl:/home/admin# rndc status number of zones: 6 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF server is up and running serverl:/home/admin#

Если DNS работает неправильно, то вместо предыдущего кода увидите что-то вроде этого: serverl:-# rndc status rndc: neither /etc/bind/rndc.conf nor /etc/bind/rndc.key was found serverl:-# К счастью, наша система DNS работает правильно. Хотя некоторых людей пугает важность этого процесса, овладение DNS имеет ключевое значение, поскольку от него зависят многие другие службы. Вы увидите, что DNS является критически важным компонентом практически любого интернет-сервиса, используемого вашей системой. На данный момент вы еще не настроили файлы первичной зоны и не сконфигу­ рировали DNS системы для других целей, кроме работы с сервером кэша, который дополняет кэш всякий раз, когда кто-нибудь заходит на веб-страницу. Как настра­ ивать первичные и вторичные DNS-серверы, мы покажем вам в главе 3.

Добавление реляционной базы данных: MySQL Сайты и приложения веб-сервисов используют реляционные базы данных для вне­ дрения объектов в веб-страницы. Это делает возможным стремительное масштаби­ рование запросов сайта. Браузеры могут стимулировать одновременно 30 запросов, увеличивая загрузку процессора, памяти и доступ к диску. Реляционные базы данных в комбинации с веб-сервером могут эффективно создавать сложные веб-страницы на лету. В этой книге мы не рассматриваем полностью сложную тему администрирова­ ния баз данных. Хотя системные администраторы Linux часто обнаруживают, что разработчики ожидают от них настройки баз данных. Поэтому сейчас мы покажем,

Добавление реляционной базы данных: MySQL

37

как конфигурировать ваш сервер Linux с помощью одной из самых популярных систем управления базами данных с открытым кодом — MySQL. Для эффектив­ ного использования базы данных вы должны знать: О как инсталлировать и затюкать MySQL; О создавать root-пользователя MySQL; О создавать обычного пользователя MySQL, с помощью которого в приложении можно получить доступ к базе данных; О работать с резервными копиями и восстановлением баз данных. Для установки сервера базы данных, удобной программы-клиента, которую вы можете использовать для администрирования сервера, и библиотеки, которую ис­ пользуют эти инструменты, введите следующую команду: # apt-get install mysql-server mysql-client libmysqlclientl2-dev Debian загрузит MySQL из своего архива и начнет процесс инсталляции. Вы увидите следующие сообщения:

Install Hints MySQL will only install if you have a NON-NUMERIC hostname that is resolvable via the /etc/hosts file. E.g. if the "hostname" command returns "myhostname" then there must be a line like "10.0.0.1 myhostname". A new mysql user "debian-sys-maint" will be created. This mysql account is used in the start/stop and cron scripts. Don't delete. Please remember to set a PASSWORD for the MySQL root user! If you use a /root/.my.cnf, always write the "user" and the "password" lines in there, never only the password! See /usr/share/doc/mysql-server/README.Debian for more Information.

В административном отношении система управления базами данных MySQL сравнима с Linux: обе имеют root-пользователя, способного контролировать все происходящее и наделять других пользователей привилегиями либо отбирать их. Оба root-пользователя не имеют ничего общего, кроме имени. Создайте root-пользователя MySQL, введя следующую команду:

# mysqladmin -u root password 'pword'

Выберите для своего пароля строку символов, которую сложно отгадать. Если в будущем вы захотите администрировать MySQL, введите следующую команду и снабдите свой пароль подсказкой: # mysql -u root -р Enter password: Теперь попробуйте убедиться, что клиент и сервер работают и что вы попали на сервер. Вы должны видеть в консоли код, похожий на следующий:

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection Id is 14 to server version: 4.0.24_Debian-10-log Type 'help:' or '\h' for help. Type '\c' to clear the buffer, mysql>

Введите /q или quit; для выхода.

38

Глава 2. Настройка многофункционального сервера Linux

Поскольку сервер MySQL работает, вы можете выполнить команду netstat -tap и увидеть такую строку: tcp

0

0

1ocalhost.local do:mysql *:*

LISTEN

2449/mysqld

База данных MySQL доступна на локальном хосте (127.0.0.1) на порту 3306. Если вы не видите этой строки, исправьте /etc/mysq 1 /ту. cnf (конфигурацию файла, чьи операционные параметры проверяют клиент и сервер) и добавьте символ #, чтобы закомментировать skip-networking:

#skip-networking Если вам требуется MySQL для подключения ко всем доступным IP-адресам, отредактируйте файл /etc/mysql/my.cnf и закомментируйте строку bind-address = 127.0.0.1:

#bind-address

= 127.0.0.1

Если вам пришлось редактировать файл /etc/mysql /ту. cnf, перезапустите MySQL, используя следующую команду:

# /etc/init.d/mysql restart

Здесь не раскрыты все функции базы данных, знания которых могут ожидать от вас разработчики. Теперь MySQL настроена для работы на вашем сервере, и этого достаточно, чтобы сделать следующие шаги. Мы подробнее рассмотрим MySQL в главах 6 и И.

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP В этом разделе мы добавим на сервер возможность передачи электронной почты и применим жесткий контроль над системным окружением. Мы покажем, как аутентифицировать добросовестных пользователей в системе электронной почты и предотвратить обманный доступ к ее услугам. Более 25 лет назад Sendmail заработал как первый в Интернете клиент доставки электронной почты. Многие приложения, написанные для Linux, предполагают ра­ боту Sendmail на вашем сервере. Однако, поскольку Sendmail был создан до того, как Интернет стал доступен широкой публике, этот клиент имеет много проблем в области безопасности, перечисленных в списке CVE (Common Vulnerabilities and Exposures) — единого тезауруса уязвимостей, который расположен по адресу http://cve.mitre.org. К счастью, другие почтовые клиенты появились, чтобы занять место Sendmail. Основной их проблемой является ожидание ядерными приложениями того, что на сервере Linux будет находиться Sendmail. Чтобы обойти это, такие клиенты, как Postfix и Exim, должны быть способны убедить приложения в том, что они — Sendmail (мы называем это ложными заменами) и работать в его режиме. В качестве замены Sendmail мы предпочитаем Postfix. Этот клиент быстрее, чем Sendmail, более надежен, имеет модульную архитектуру и предлагает много возможностей, требуемых поставщиками больших объемов почты. Postfix не за­ писывает исключенные протоколы, а использует стандартный протокол Интерне­

39

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP

та — Simple Mail Transport Protocol (SMTP). Надо отметить, что в нем наименьшее количество позиций из списка CVE. По этим причинам в качестве нашего почто­ вого клиента мы используем Postfix вместо Sendmail. Обеспечение надежности электронной почты включает полное недопущение на сервер неавторизованных пользователей (так что они не могут использовать его для пересылки электронных писем большого объема). Это дает уверенность в том, что никто не сможет обмануть законных пользователей, и защищает содержимое каждого электронного письма от прочтения или изменения в процессе пересылки. Низкая надежность электронной почты упрощает злоумышленникам работу. Для содействия идентификации мы установим Postfix с протоколом TLS (безопас­ ности на транспортном уровне) и протоколом SSL (протоколом безопасных со­ единений). Это будет препятствовать пересылке паролей с незашифрованным тек­ стом с почтового клиента на сервер. Для завершения мы применим SASL (Simple Authentication and Security Layer)1 — простую аутентификацию и слой безопас­ ности. Таким образом создается расширение (ESMTP), позволяющее почтовому клиенту выполнить аутентификацию сервера. Для установки пакетов, необходимых Postfix и другим компонентам почты, введите следующую команду: # apt-get install postfix postfix-tls 1ibsasl2 sasl2-bin \ 11bsasl2-modules Ipopd-ssl uw-1mapd-ssl Когда Debian устанавливает пакеты, на экран выводится несколько полноэкран­ ных окон (ncurses-based), в которых вам задаются различные вопросы. Если вы видите окно Configuring ipopd (Конфигурирование ipopd), показанное на рис. 2.1, то выберите рорЗ и pop3s. Далее вы увидите окно, как на рис. 2.2, где вам следует выбрать . Это зна­ чение обеспечит гибкость изменения маршрутизации портов, если позже вы по­ чувствуете необходимость этого. —1

pop2 pops

~ POP 3



I--------



' support. POP 2 он TCP port 109 with‘ TLS

This is obsolete.

on TCP port 110 with TLS support.

pop3s = POP 3 on fCPport 995 with SSL support.

If in doubt, choose рорЗ and pop3s. Which ports should the server listen on? [ 1 pop2 [*] рорЗ [*1 pop3s

Рис. 2.1. Экран конфигурирования почты Debian

1

Метод для добавления поддержки аутентификации в протоколы соединения. — Примеч. ред.

40

Глава 2. Настройка многофункционального сервера Linux

------------------------------------------- J

/ivfiqufiPfl

'

{ I--------------------------------------

The ports selected for enabling may be overridden by locally configured services. By default the port selection is" respected only on initial installs, and is ignored on later reconfiguration.

Do you want to ignore possible local tweaks and always use selected ports?

Enforce port selection?

1

Рис. 2.2. Оставление для почты портов по умолчанию

В данном случае работают порты по умолчанию, поскольку мы используем TLS и демон SASL. Рисунок 2.3 — информационный: программа установки Debian рассказывает вам об имеющихся параметрах конфигурирования электронной почты. ----- ---------------------------------- 1

post-ix

Conf1

j-----------------------------------------|

You have several choices for general configuration at this point. If you have your debconf priority set to ‘low1 or 'medium', you will be asked more questions later. You can always run "dpkg-reconfigure --priority=low postfix” at a later point if you want to see these questions again.

#

No configuration - IF YOU WANT THE INSTALL TO LEAVE YOUR CONFIG ALONE, CHOOSE THIS OPTION. No configuration changes will be done now: If you have not already configured Postfix, your mail system will be broken and should not be used. You must then do the configuration yourself by editing /usr/share/postfix/main.cf.dist and saving your changes as /etc/postfix/main.cf, or by running dpkg-reconfigure Postfix, mam.cfwill not be modified by the Postfix install process. internet site - mail is sent and received directly using SMTP. If your

SSI

Рис. 2.3. Параметры настройки Postfix

Нажмите OK, чтобы попасть в меню, изображенное на рис. 2.4. Здесь вы мо­ жете выбрать нужный параметр. Мы выбираем Internet Site (Интернет-сайт), по­ скольку будем использовать SMTP для всего трафика — внутреннего в локальной сети и внешнего в Интернете. Debian обеспечит тот вид конфигурации, который наилучшим образом отвечает нашим нуждам. Позже мы сможем добавить к ней конфигурацию по умолчанию. Когда вы настроите Postfix для работы с почтой, он будет работать как стандарт­ ный почтовый клиент. Вы не сможете выбрать другой почтовый сервер в качестве промежуточного узла (smarthost) в окне, представленном на рис. 2.4. Другими сло­ вами, ваша почтовая система будет авторизована для вашего домена.

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP

41

General type c-f configuration? ' - He >: onf i gu ration ttnternet Siti

Internet withsmarthost Satellite system Local only



Рис. 2.4. Выбор параметра Internet Site (Интернет-сайт) в меню конфигурации

Если ранее для отправки и получения почты вы использовали другой сервер (например, популярный портал или ISP), то теперь ваш сервер примет на себя эти повседневные обязанности. Далее, в окне, показанном на рис. 2.5, выберите пункт NONE. Postfix предложит вам создать собственный файл под псевдонимом.

Рис. 2.5. Параметр использования существующей учетной записи под псевдонимом

На рис. 2.6 и 2.7 конфигуратор Postfix хочет узнать, от кого он будет получать почту и кому ее будет доставлять. Основным доменным именем также является имя почты. Postfix будет использовать это имя для проверки почты, направляемой на сервер. Когда вы увидите окна, показанные на рис. 2.6 и 2.7, в синих полях бу­ дут указаны значения по умолчанию. Вы можете принять окно, изображенное на рис. 2.6, в том виде, в каком оно вам представлено. centralsoft.org — доменное имя, которое мы используем в этой книге, чтобы быть уверенными,

B

что заменяем ваше доменное имя.

42

Глава 2. Настройка многофункционального сервера Linux

-------------------------------------[ [---------------------------------Your 'mail name’ is the hostname portion of the address to be shown on outgoing news and mail messages (following the username and @ sign).

This name will be used by other programs besides Postfix; it should be the single, full domain name (FQDN)■ from which mail will appear to originate. Mail name?.

:

[server1-centralsoft _ о rg__________



Рис. 2.6. Проверка полностью приготовленного доменного имени, настроенного для Postfix y ;; -—y -rv " •-r " •I C’lOT 1 gLp'H'Win |—- “ ~~~ ■ Give a comma-separated list of domains that this machine should’consider itself the final destination for. If tins is a mail domain gateway, you probably want to include the top-level domain.



Other destinations to accept mail for? (blank for none) {server 1.centralsoft.orgЛ localhost-centralsoft.org, , localhost

J

Cancel»

Рис. 2.7. Внутренний доменный список, используемый в Postfix

На рис. 2.7 вы заметите, что за именем localhost.centralsoft.org следуют две запя­ тые. Удалите вторую запятую. На рис. 2.8 конфигуратор Postfix запрашивает возможность синхронного обнов­ ления. Более подробно администрирование почтового сервера будет рассмотрено в главе 5, а пока ответьте на этот вопрос и двигайтесь далее. —

/• •

• ] pQStfiX L3FW 1QCrWtijan

|



——

-



e—

If synchronous updates are forced, then mail is processed more slowly. If not forced, then there is a remote chance of losing some mail if the system crashes at an inopportune time, and you are not using a journaled file system (such as ext3) . The default is 55off". Force synchronous updates on mail queue?

Рис. 2.8. Отказ от синхронного обновления

После того как Debian завершит установку, вы вернетесь к окну с системной подсказкой о том, что вам нужно начать собирать воедино различные компоненты

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP

43

почты. Это означает, что вы создадите записи для файла конфигурации Postfix и сгенерируете сертификаты и ключи кодировки. Мы предупреждали вас об этом этапе настройки еще в начале главы. Некоторые из этих команд покажутся вам бессмысленными. Не волнуйтесь — вы сможете по­ нять больше, если еще раз просмотрите приведенную выше информацию, где мы излагаем задачи этого раздела. Команда postconf находится в каталоге /usr/sbln. Вы используете ее, чтобы указать параметры Postfix в главном файле конфигурации этого почтового кли­ ента. После установки Postfix нужно «рассказать» почтовому клиенту, что следует сделать для надежной аутентификации. Используйте следующие команды:

# postconf -e ’smtpd_sasl_local-domain =' # postconf -e 'smtpd_sasl_auth_enable = yes' # postconf -e 'smtpd_sasl_security_options = noanonymous' # postconf -e 'broken_sasl_auth_clients = yes' # postconf -e 'smtpd-recipient-restrictions = \ permi t_sasl_authenti cated,permi t_mynetworks,reject_unauth_desti nati on' # postconf -e 'inet-interfaces = all'

Эти команды записывают информацию в файл smtpd.conf: # echo 'pwcheckjnethod: saslauthd' » /etc/postfix/sasl/smtpd.conf # echo 'mechjist: plain login* » /etc/postfix/sasl/smtpd.conf

Теперь создайте каталог для ваших сертификатов SSL и сгенерируйте одновре­ менно сертификаты и ключи кодировки: # mkdir /etc/postfix/ssl # cd /etc/postfix/ssl/ # openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 293 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .......................................................................... ++++++ .................................................................... ++++++ e Is 65537 (0x10001) Enter pass phrase for smtpd.key: Verifying - Enter pass phrase for smtpd.key:

Затем используйте следующую команду для вывода изменений аутентифика­ ции в файл, содержащий ключ OpenSSL RSA: # chmod 600 smtpd.key Далее сгенерируйте другой ключ и сертификат и замените существующие клю­ чи заново сгенерированными:

# openssl req -new -key smtpd.key -out smtpd.csr You are about to be asked to enter Information that will be Incorporated Into your certificate request. What you are about to enter Is what Is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter the field will be left blank. Country Name (2 letter code) [AU]:

44

Глава 2. Настройка многофункционального сервера Linux

State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: centralsoft.org Organizational Unit Name (eg, section) []: web Common Name (eg, YOUR name) []: Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: cso # openssl x509 -req -days 3650 -in smtpd.csr -signkey snrtpd.key -out \ smtpd.crt Signature ok subject=/C=US/ST=Texas/L=Dal1as/O=centralsoft.org/OU=web/CN=Tom_Adelstei n/ emai1Address=tom.adel stei nOcentralsoft.org Getting Private key Enter pass phrase for smtpd.key: # openssl rsa -in smtpd.key -out smtpd.key.unencrypted Enter pass phrase for smtpd.key: writing RSA key # mv -f smtpd.key.unencrypted smtpd.key # openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out \ cacert.pem -days 3650 Generating a 1024 bit RSA private key .................................... ++++++ ............................................. ++++++ writing new private key to 'cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: You are about to be asked to enter Information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widglts Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []:

Существуют некоторые споры о том, требуют ли самостоятельно сгенерирован­ ные сертификаты информации, запрашиваемой в подсказках. Мы рекомендуем вам вводить соответствующую информацию. Теперь вам нужно рассказать Postfix о ключах и сертификатах, используя сле­ дующие команды post conf: # postconf -е ’smtpd_tls_auth_only = no' # postconf -e 'smtp_use_tls = yes' # postconf -e ’smtpd_use_tls = yes'

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP

# # # # # # # #

postconf postconf postconf postconf postconf postconf postconf postconf

-е -е -е -е -е -е -е -е

45

'smtp_tls_note_starttls_offer = yes' 'smtpd_tls_key_f11e = /etc/postfix/ssl/smtpd.key' ’smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' ’smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' 'smtpd_tls_loglevel = Г 'smtpd_tls_received_header = yes' 'smtpd_tls_session_cache_timeout = 3600s’ ’tls_random_source = dev:/dev/urandom'

Файл /etc/postf1 x/mai n. cf теперь должен выглядеть примерно так: # See /usr/share/postfix/main.cf.dist for a commented, more complete # version smtpd_banner = Smyhostname ESMTP $mail_name (Debian/GNU) biff = no # Appending .domain is the MUA's job append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h myhostname = serverl.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = serverl.example.com, localhost.example.com, local host relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmall -a "$EXTENSION" mailbox_size_limit = 0 recipient-delimiter = + 1 net-interfaces = all smtpd-sasljocal-domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipi ent-restrictions = permi t_sasl_authenti cated,permi t_mynetworks,reject_unauth-destinati on smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tlS-Cert-file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd-tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom

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

# /etc/init.d/postfix restart Stopping mail transport agent: Postfix. Starting mail transport agent: Postfix.

46

Глава 2. Настройка многофункционального сервера Linux

Аутентификацию выполнит saslauthd — демон SASL, но вам придется сделать пару изменений для его нормальной работы. Поскольку Postfix работает в режиме chrooted в папке /var/spool/postfix, введите следующие команды:

# mkdir -р /var/spool/postfix/var/run/saslauthd # rm -fr /var/run/saslauthd Теперь вы должны отредактировать /etc/defaul t/sasl authd, чтобы активировать saslauthd. Удалите знак # перед START=yes и добавьте строку PARAMS=" -m /var/spool / postflx/var/run/saslauthd", чтобы файл выглядел следующим образом:

# This needs to be uncommented before saslauthd will be run automatically START=yes PARAMS="-m /var/spool/postflx/var/run/saslauthd" # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also Include # "shadow" or "sasldb", like this: # MECHANISMS="pam shadow" MECHANISMS="pam"

Наконец отредактируйте файл /etc/init.d/saslauthd. Измените строку dir='dpkg-statoverride --list $PWDIR' на #dir='dpkg-statoverride --list $PWDIR'

Теперь замените переменные PWDIR и PIDFILE и добавьте переменную di г в начало файла: PWDIR="/var/spool/postflx/var/run/${NAME}" PIDFILE="${PWDIR}/saslauthd.pid" dir="root sasl 755 ${PWDIR}"

Файл /etc/init.d/saslauthd теперь должен выглядеть так: #!/bin/sh -е NAME=sasl authd DAEMON="/usr/sb1n/${NAME}" DESC="SASL Authentication Daemon" DEFAULTS=/etc/default/saslauthd PWDIR="/var/spool/postf1x/var/run/${NAME}" PIDFILE="${PWDIR}/saslauthd.pl d" dir="root sasl 755 ${PWDIR}" created!r( ) { # $1 = user # $2 = group # $3 = permissions (octal) # $4 = path to directory [ -d "$4" ] || mkdir -p "$4" chown -c -h "$1:$2" "$4" chmod -c "$3" "$4" } test -f "${DAEMON}" || exit 0 # Source defaults file: edit that file to configure this script, if [ -e "${DEFAULTS}" ]; then "${DEFAULTS}"

Надежное конфигурирование почты с помощью Postfix, POP3 и IMAP

fl # If we're not to start the daemon, simply exit if [ "${START}" != "yes" ]; then exit 0 fi # If we have no mechanisms defined if [ "x${MECHANISMS}" = "x" ]: then echo "You need to configure ${DEFAULTS} with mechanisms to be used" exit 0 fi # Add our mechanisms with the necessary flag PARAMS="${PARAMS} -a ${MECHANISMS}" START»"--start --quiet --pidfile ${PIDFILE} --startas ${DAEMON} --name ${NAME} -- ${PARAMS}" # Consider our options case "${1}" in start) echo -n "Starting ${DESC}: " #dir='dpkg-statoverride --list $PWDIR' test -z "$dir" || createdir $dir if start-stop-daemon ${START} >/dev/nul1 2>&1 ; then echo "${NAME}." else if start-stop-daemon --test ${START) >/dev/null 2>&1; then echo "(failed)." exit 1 else echo ”${DAEMON} already running exit 0 fi fi stop) echo -n "Stopping ${DESC}: " if start-stop-daemon --stop --quiet --pidfile ”${PIDFILE}" \ --startas ${DAEMON} --retry 10 --name ${NAME} \ >/dev/null 2>&1 ; then echo "${NAME}." else if start-stop-daemon --test ${START} >/dev/null 2>&1; then echo "(not running)." exit 0 else echo "(failed)." exit 1 fi fi

restart|force-reload) $0 stop exec $0 start

*)

47

48

Глава 2. Настройка многофункционального сервера Linux

esac exit О echo "Usage: /etc/inlt.d/${NAME} {start|stop|restart|force-reload}" >&2 exit 1 esac exit 0

Теперь запустите saslauthd:

# /etc/inlt.d/saslauthd start Starting SASL Authentication Daemon: changed ownership of '/var/spool/postfix/var/run/saslauthd' to root:sasl saslauthd. Чтобы увидеть, корректно ли работают SMTP-AUTH и TLS, выполните следу­ ющую команду:

# telnet local host 25 Trying 127.0.0.1... Connected to local host.local domain. Escape character is ,x]'. 220 serverl.centralsoft.org ESMTP Postfix (Debian/GNU) Так налаживается связь c Postfix. Теперь наберите следующую команду:

# ehl о local host Если вы увидите такие строки:

serverl:/etc/postfix# telnet local host 25 Trying 127.0.0.1... Connected to local host.local domain. Escape character is ,ж]'. 220 serverl.centralsoft.org ESMTP Postfix (Debian/GNU) ehlo local host 250-serverl.central soft.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME

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

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

49

Добавление веб-сервера Apache

В ноябре 2006 года Netcraft опубликовала доклад, в котором утверждалось, что 60 % сайтов в Интернете используют Apache. Таким образом, можно ска­ зать, что этот сервер применяется шире, чем все остальные веб-серверы, вместе взятые. Apache хорошо интегрируется с большинством разновидностей Linux. В этой главе мы будем придерживаться знакомого образца и установим и настроим Apache, используя следующую команду:

# apt-get install apache2 apache2-doc Setting up ssl-cert (1.0-11) ... Setting up apache2-ut11s (2.0.54-5) ... Setting up apache2-common (2.0.54-5) ... Setting Apache2 to Listen on port 80. If this Is not desired, please edit /etc/apache2/ports.conf as desired. Note that the Port directive no longer works. Module userdir Installed; run /etc/1n1t.d/apache2 force-reload to enable. Setting up apache2-mpm-worker (2.0.54-5) ... Starting web server: Apache2. Setting up apache2 (2.0.54-5) ... Setting up apache2-doc (2.0.54-5) ...

Когда Debian завершит инсталляцию сервера Apache HTTP, выполните следу­ ющую команду: # apt-get install Iibapache2-mod-php4 Iibapache2-mod-perl2 \ php4 php4-cli php4-common php4-curl php4-dev php4-domxml \ php4-gd php4-imap php4-ldap php4-mcal php4-mhash php4-mysql \ php4-odbc php4-pear php4-xslt curl llbwww-perl Imagemagick

Эта команда выбирает и конфигурирует 48 файлов, то есть ее выполнение зай­ мет некоторое время. Когда она выполнится, вы сможете перейти к следующему шагу. Измените директиву Di rectoryindex в файле /etc/apache2/apache2.conf с

DirectoryIndex 1ndex.html Index.cgl 1ndex.pl Index.php Index.xhtml на

Di rectoryIndex 1ndex.html 1ndex.htm Index.shtml Index.cgl Index.php Index.php3 1ndex.pl Index.xhtml Далее добавьте символы #, как показано ниже, чтобы закомментировать сле­ дующие строки в файле /etc/mime.types:

#appl1cat1on/x-httpd-php #appi 1catlon/x-httpd-php-source #appi 1catlon/x-httpd-php3 #appl1cat1on/x-httpd-php3-preprocessed #app!1cat1on/x-httpd-php4

phtml pht php phps php3 php3p php4

Вы также должны будете закомментировать две строки в файле /etc/apache2/ mods-enabled/php4.conf:

#AddType appllcatlon/x-httpd-php .php .phtml .php3 #AddType appllcatlon/x-httpd-php-source .phps

50

Глава 2. Настройка многофункционального сервера Linux

Затем убедитесь, что следующие строки находятся в файле /etc/apache2/ports. conf, или же добавьте их: Listen 80 Listen 443

Теперь вы должны ввести некоторые модули Apache (SSL, rewrl te и suexec), сим­ вол ьно связав их ссылками с файлами в подкаталоге mods-enabled: # # # # # #

cd In In In In In

/etc/apache2/mods-enabled -s /etc/apache2/mods■available/ssl.conf ssl.conf -s /etc/apache2/mods-available/ssl.load ssl.load -s /etc/apache2/mods-available/rewrite.load rewrite.load -s /etc/apache2/mods-available/suexec.load suexec.load -s /etc/apache2/mods-available/include.load include.load

Как вы уже видели выше в этой главе при описании установки, загрузка соот­ ветствующих модулей посредством команды a pt-get автоматически запускается в системе Apache. Поскольку вы внесли в конфигурацию некоторые изменения, вы должны перезапустить Apache, чтобы изменения вступили в силу без перезагрузки сервера. Введите следующую команду:

# /etc/init.d/apache2 restart Ваш веб-сервер перезапустится и начнет использовать новые модули в соответ­ ствии с изменениями конфигурации.

Добавление FTP-сервисов с помощью инструмента ProFTPD Вместе с сервером HTTPD для отображения веб-страниц в браузере вы можете при­ менить сервер протокола передачи файлов (FTP). Мы будем использовать для этой цели инструмент с открытым кодом ProFTPD, поскольку он популярен, надежен и легко конфигурируется. Сервер FTP использует только один главный файл конфигурации с директива­ ми и группами директив, так что любой администратор, хоть раз пользовавшийся сервером Apache, поймет, что в ProFTPD на каждую директорию имеются кон­ фигурации .ftpaccess, похожие на файлы Apache .htaccess, которые вынуждают пользователей вводить свои ID и пароли для доступа в личные каталоги. ProFTPD позволяет конфигурировать множественные виртуальные FTP-серве­ ры и анонимные FTP-сервисы. Он никогда не выполняет внешних программ и ра­ ботает как непривилегированный пользователь. Инсталлируйте ProFTPD, выполнив следующую команду: # apt-get install proftpd

На рис. 2.9 показано окно, которое вы уже видели во время загрузки Debian. Отсюда начинается установка ProFTPD. Данный инструмент может выполняться либо отдельно, либо как служба inetd. Из соображений безопасности мы запустим ProFTPD в автономном режиме.

Суммирование веб-статистики с помощью вебалайзера

51

—— ---- - ----- I proFFPd conf1 gyration — ■; ----- —-——ProFTPd can be run either as a service from metd, or as a standalone server. Eeach choice has its own benefits. If you have only a few ftp connections per day, it may not be worth the resources to keep proftpd running at all times.

On the other hand/ if your ftp site is visited frequently/ inetd is not a good choice, because each time a connection is opened, a new process is spawned.

Pun proftpd from inetd or standalone? metd [standalone

Рис. 2.9. Экран конфигурации Debian для инструмента ProFTPd

Далее добавьте следующие строки к вашему файлу /etc/proftpd.conf:

DefaultRoot - IdentLookups off Serverldent on "FTP Server ready."

Теперь, когда вы завершили остальные процессы, перезапустите ProFTPD, вы­ полнив следующую команду: # /etc/init.d/proftpd restart

Суммирование веб-статистики с помощью вебалайзера Вебалайзер разрабатывает статистические отчеты для файлов журналов веб-сер­ вера. Вы можете использовать его с помощью стандартного браузера, и он создаст подробный, легко конфигурируемый отчет о загрузке ресурса в формате HTML. Проект Debian включает вебалайзер в своем стабильном архиве, и вы можете установить его, используя следующую команду:

# apt-get install webalizer В процессе инсталляции вы должны проверить каталог установки (/var/www/ webal 1 zer), имя, используемое в заглавиях статистических отчетов (например, обо­ значить свое доменное имя), и местонахождение файла журнала веб-сервера (в на­ шей системе /var/1 og/apache/access. 1 og. 1): Which directory should webalizer put the output in? /var/www/webalizer Enter the title of the reports weballzer will generate. Usage Statistics for serverl.centralsoft.org What is the filename of the rotated webserver log? /var/1og/apache/access .1og.1

52

Глава 2. Настройка многофункционального сервера Linux

Синхронизация системного времени Системные часы компьютера имеют тенденцию сбиваться. Тем не менее точная базовая задача конфигурации — соединить систему с сервером сетевого протокола времени (NTP), который будет сохранять его в рамках погрешности в несколько секунд по сравнению с реальным временем. Для синхронизации системных часов с сервером NTP добавьте в файл /va г/ spool /cron/crontabs/root следующие строки:

# update time with NTP server 0 3,9,15.21 * * * /usr/sbln/rdate 128.2.136.71 | logger -t NTP

Если файл не существует, то можете создать его с помощью команды:

# touch /var/spool/cron/crontabs/root IP-адрес 128.2.136.71 принадлежит публичному серверу времени университета Карнеги — Меллона (Carnegie Mellon University’s). Если желаете, можете исполь­ зовать другой сервер времени. Модифицируйте допуск к файлу с г on tab, запустив такую команду:

# chmod 600 /var/spool/cron/crontabs/root

Затем перезапустите службу cron посредством следующей команды: # /etc/init.d/cron restart

Установка модулей Perl, необходимых для инструмента SpamAssassin Многие инструменты зависят от языка программирования Perl или предлагают для работы с ними одноименный интерфейс (хотя другие языки приобретают все боль­ ше сторонников в мире программ с открытым кодом и UNIX). SpamAssassin — кри­ тически важный инструмент для почтовых администраторов (и даже пользователей почты). Это одна из программ, основанных на Perl, которую мы будем рассматри­ вать в этой книге. Как системный администратор, вы, даже если не хотите програм­ мировать на Perl, должны уметь устанавливать модули Perl, находящиеся в одном из самых популярных и заслуживающих доверия архивов Всеобъемлющей сети архивов Perl (Comprehensive Perl Archive Network, CPAN). Чтобы передать вам ощущение от установки модулей Perl, мы сейчас покажем, как загружать оболочку, использующую Perl CPAN. Это среда для поиска архива и установки модулей из него. Войдите в командную строку как root-пользователь и выполните следующую команду для запуска оболочки Perl CPAN: serverl:/home/adm1n# perl -MCPAN -e shell /etc/perl/CPAN/Conf1 g.pm Initialized. Ответьте на все вопросы, нажимая клавишу Enter для принятия значений по умолчанию. Затем выполните команды для установки модулей, которые мы будем использовать в следующей главе:

Что дальше

53

> install HTML::Parser > install DB_File > install Net::DNS На вопрос enable tests? ответьте no. Если модуль уже установлен в вашей системе, вы увидите такое сообщение: HTML: ¡Parser is up to date. Если загрузка модуля прошла успешно, вы увидите сооб­ щение /usr/bin/make install — OK. Когда вы все сделаете, просто введите q для выхода из Perl и возврата к систем­ ной подсказке.

Что дальше Теперь, выполнив все задачи, связанные с настройкой сервера, вы можете захотеть начать работу в производственном режиме. Но для этого еще нужно настроить службы DNS и зарегистрировать свой домен (это тема следующей главы). Спра­ вившись с конфигурацией DNS, вы сможете установить приложение, использу­ ющее Интернет (мы будем использовать ISPConfig), и начать изучать, как рабо­ тают веб-приложения.

3

Система доменных имен

В этой главе мы расскажем вам, как построить систему доменных имен (DNS), используя BIND. Прочитав весь материал, вы узнаете, как инсталлировать, кон­ фигурировать, поддерживать сервер и устранять в нем ошибки для любого домен­ ного имени, которое вы зарегистрируете. Мы начнем с введения в DNS, которое вы можете пропустить, если сразу хотите перейти к пошаговой установке и разделу о конфигурировании. Если столкнетесь с проблемами, то всегда сможете вернуться и прочитать и/или просмотреть предыдущий материал.

Основы DNS Если вы проведете исследование DNS в Интернете, то непременно столкнетесь с утверждением, что DNS — это величайшая в мире база данных. Хотя ее сравнение с такими базами данных, как Oracle или MySQL, обманчиво. На самом деле DNS является самой большой в мире рассредоточенной цифровой директорией. Как в онлайн-телефонном справочнике, вы увидите соответствие номеров именам, но в случае DNS номерами являются IP-адреса всего множества серверов, подклю­ ченных к Интернету: от маленьких серверов, управляемых небольшими сайтами, до гигантских серверных ферм, например Google и Amazon. Как в публичной библиотеке с ее основной коллекцией телефонных справочни­ ков книги разделены по странам, так и DNS делит домены на категории. Основная коллекция категорий расположена в так называемых корневых каталогах. Она раз­ делена на домены первого уровня (TLDs), что похоже на разделение телефонной книги по странам. Вместо поиска телефонного номера с кодом района Нью-Йорка DNS ищет домены, оканчивающиеся на такие суффиксы, как edu, огд, com, net, mil, de, fr и т. д. После просмотра всех доменов первого уровня DNS в итоге приводит к адресу, который вы можете использовать для связи с сервером. DNS (впервые определенная в RFC 882 в 1983 году, а позже пересмотренная как RFC 1034 и 1035) дала различные идеи для управления сопоставлением общих интернет-имен по IP-адресам. Система иерархически распределяет данные и имена хостов в пространстве доменного имени. Каждый домен напоминает ветвь дерева, а каждая ветвь содержит более мелкие ответвления. Программы, называемые сер­ верами имен, поставляют информацию о своих частях дерева, а интерпретаторы запрашивают доменную информацию у серверов имен с помощью программ-кли­ ентов.

Основы DNS

55

Иерархические имена в схемах, подобных DNS, предотвращают дублирова­ ние данных. Каждый домен уникален, и в его рамках вы можете иметь столько серверов, сколько захотите, — просто прибавьте имена их хостов к доменному имени в качестве префиксов. Например, сайт, контролирующий centralsoft.org, мо­ жет иметь любое количество имен хостов: serverl.centralsoft.org, ldap.centralsoft.org, mail.centralsoft.org и т. д. Преимущества локализованного администрирования DNS. Небольшие ор­ ганизации часто поручают ведение администрирования DNS своим поставщикам интернет-услуг. Настройка же собственного сервера имеет преимущества. Она предоставляет вам полный контроль над системами, использующими ваши обще­ доступные сервисы (например, веб-сервисы и электронную почту), а ввод в инфра­ структуру DNS дает вам большую расширяемость: вы можете при необходимости добавлять серверы и даже выполнять между ними балансировку нагрузки. Это важно, если вы владеете и оперируете несколькими активными доменами или внутренними службами аутентификации. Вы также получаете больше возмож­ ностей контролировать обновление ваших имен. Иначе говоря, в современной деловой среде очень удобно контролировать собственную DNS, а не перепоручать это кому-то еще. Многие компании приспособили для Сети свои ядерные бизнес-приложения. Вместо того чтобы заменять рабочие системы, они желают сделать свои унасле­ дованные веб-приложения доступными через новые привлекательные веб-интер­ фейсы. В бизнесе это делается путем добавления внешних веб-интерфейсов с ис­ пользованием базирующихся на Сети вычислительных машин для соединения в корне различных систем. IT-отделы используют серверы приложений, такие как Jboss (сейчас принадлежит Red Hat), IBM’s Web-Sphere и BEA’s Web Logic для вычислительных машин и многочисленных продуктов для веб-интерфейсов. В любом случае DNS становится интегральной частью выхода в Сеть, поскольку такие системы используют серверы директорий, между которыми происходит коммуникация. DNS также занимает важное место в появлении веб-сервисов и исполняемых интернет-приложений, например предлагаемых Google, Yahoo! и др. Быстрая и на­ дежная интерпретация IP-адресов для этих продуктов важна как в Интернете, так и внутри предприятий. Вы можете считать конфигурирование и управление DNS одним из наиболее ценных навыков системного администратора. Итак, что вы должны делать как системный администратор, управляя своим собственным публичным сервером? Вы должны поставлять адреса двух и или более таких серверов на регистрирующее устройство своего домена (требуется минимум два — так появляются хорошие шансы, что хотя бы один всегда будет работать, когда люди будут запрашивать имя). Вы также должны управлять до­ менными именами систем, которые хотите сделать видимыми: ваши веб-серверы, почтовые серверы и т. д. Начав изучение DNS, вы, возможно, посчитаете эту систему неинтуитивной. По многим причинам некоторые термины кажутся непонятными. Они не будут для вас много значить, пока вы не поработаете с ними некоторое время. Мы по­ кажем вам, как очень быстро создать DNS-сервер. Потом мы заново рассмотрим некоторые ключевые концепции и термины, прежде чем отдаться во власть файлов конфигурации.

56

Глава 3. Система доменных имен

Доступ в BIND Большинством DNS-серверов мира управляет Berkeley Internet Name Daemon, или BIND — служба доменных имен в Интернете. BIND является стандартом для любой версии UNIX и Linux. Поскольку администраторы должны хорошо разби­ раться в управлении им, в этой главе BIND рассматривается подробно. Наиболее популярной альтернативой BIND является серия djbdns. Она хорошо работает, используется многими крупными серверами имен и имеет более простую конфигурацию. Смотрите детали по адресу http://cr.yp.to/djbdns.html .

Мы не хотим рассказывать вам историю BIND, поскольку эта тема заставит вас заснуть. Но все же мы хотели бы обратиться к одному историческому моменту. Некоторые продолжают использовать уже антикварный, плохо себя зарекомен­ довавший релиз BIND — четвертую версию. В этой главе мы описываем более новую девятую версию. Если вы работаете с системой DNS, в которой конфигу­ рация файлов отличается от показанной в данной главе, то это, наверное, потому, что в системе используется BIND четвертой версии. Как мы упоминали выше, в бизнесе необходимо заменять рабочие системы, и может случиться катастрофа, если придется быстро усовершенствовать IT-отдел до версии BIND 8 или 9. Даже если из соображений безопасности вы пользуетесь BIND 4, мы тем не менее на­ стоятельно рекомендуем усовершенствовать службу.

S

Кстати, за четвертой версией сразу вышла восьмая, что было сделано умышленно для сов-

г; падения с версиями Sendmail. Поэтому не позволяйте никому продать вам BIND 5, 6 или 7.

Компоненты BIND. BIND состоит из трех компонентов. Первый представляет собой службу, или демон, которая управляет отвечающей стороной DNS. Этот ком­ понент называется named (произносится «нэйм-ди»). Он отвечает на телефонный звонок. Вторая часть связки BIND — это библиотека интерпретаторов. Она консуль­ тирует браузеры, почтовые программы и другие приложения, пытающиеся найти сервер по его имени DNS где-то в «джунглях» Интернета. Некоторые думают, что интерпретатор — это клиент в рамках BIND. Но, в от­ личие от сервера, клиент — не просто программа: это библиотека, связанная ссыл­ ками с каждым браузером, почтовым клиентом и т. д. Код интерпретатора служит серверу источником при попытке перевода имен в IP-адреса. Эта часть BIND использует собственный маленький файл resolv. conf, имеющий­ ся в любой компьютерной системе. Ваша задача — сконфигурировать этот файл. Рассмотрим, как resol v. conf выглядит на компьютерах домена centralsoft.org: search centralsoft.org nameserver 70.253.158.42 nameserver 70.253.158.45

Как видите, конфигурация файла интерпретатора BIND проста. Первая строка задает поиск сервера в локальном домене. Другие две строки предоставляют ад­ реса серверов имен, известных администратору, к которым интерпретатор может вернуться, если изначальный поиск сервера не удастся.

Настройка сервера DNS

57

Третья часть BIND сопровождается такими инструментами, как команда dig для тестирования DNS. Перейдите в консоль, наберите dig yahoo.com (можно ука­ зать любой другой известный домен) и посмотрите, что произойдет. Мы обсудим команду dig и другие утилиты позже в этой главе.

Настройка сервера DNS Чтобы построить сервер, мы используем последнюю стабильную версию Debian и конфигурируем ее с минимальным количеством пакетов. Если у вас еще нет установочного диска, описанного в главе 2, скачайте его с сайта http://www.us.debian.org/CD/netinst. Выполните сетевую установку и убеди­ тесь в наличии пригодного доменного имени. Затем конфигурируйте Debian, как описано в этой книге. Если вы приобрели действующую версию Debian GNU/Linux, то можете об­ наружить различия между ней и той версией, которую мы использовали для на­ писания этих инструкций. Разработчики Linux часто обновляют версии своих продуктов, и в результате обновления из-за заплаток и новых версий ядра Linux изменяются процедуры установки. Если вы столкнетесь с различиями между ша­ гами, описываемыми нами, и этапами, которые вам приходится выполнять, про­ смотрите лишь основные пункты из того, что мы объясняли. Таким образом, у вас будет меньше проблем при работе с более новой версией. После начальных стадий установки Debian вы увидите окно с предложением выбрать тип установки. Это будет выглядеть примерно так:

( ( ( ( ( ( ( (

) ) ) ) ) ) ) )

Desktop Environment Web Server Print Server DNS Server File Server Malí Server SQL database manual package selection

Не выбирайте ни один из пунктов, а просто нажмите клавишу Tab. Нажмите подсвеченную кнопку ОК, и программа установки Debian начнет загрузку и уста­ новку пакетов. Во время установки вы увидите еще одно окно с запросом. Программа уста­ новки попросит вас указать, хотите ли вы конфигурировать Exim (Exlm-conflg). Выберите No configuration (Не конфигурировать). После этого появится сообщение Really leave the mail system unconfigured? (Действительно оставить систему неконфигурированной?). Ответьте yes. Когда вы закончите минимальную установку Debian, необходимо будет уда­ лить некоторые ненужные программы, которые могут использоваться в LAN, но не в почтовом интернет-сервере. Вы можете удалить их, используя команду apt-get:

# apt-get remove lpr nfs-common portmap pidentd pcmcia-cs pppoe \ pppoeconf ppp pppconfig Если вы решили использовать SUSE или Fedora вместо Debian, то можете уда­ лить эти пакеты удобным для вас способом.

58

Глава 3. Система доменных имен

Теперь вырежем некоторые служебные сценарии и перезапустим inetd: # # # # # # # # #

update-inetd remove daytime update-inetd remove tel net update-inetd remove time update-inetd remove finger update-inetd remove talk update-inetd remove ntalk update-inetd remove ftp update-inetd remove discard /etc/init.d/inetd reload

Чтобы установить BIND на свой сервер Debian, выполните команду:

# apt-get install bind9 Debian загрузит файл и сконфигурирует его как веб-службу. В своей консоли вы увидите следующие сообщения:

Setting up b1nd9 (9.2.4-1) Adding group 'bind' (104) Done. Adding system user 'bind' Adding new user 'bind' (104) with group 'bind'. Not creating home directory. Starting domain name service: named.

Использование среды chroot в целях безопасности. Многие администраторы, отвечающие за безопасность, рекомендуют использование BIND в качестве неroot-пользователя в изолированной директории среды chroot. Это защищает от существенного риска, что прореха в безопасности будет найдена в вашей версии BIND потенциально возможными хакерами, которые могут атаковать систему с помощью named-демона для получения доступа к ней. Даже если named исполь­ зуется, среда chroot ограничивает любой ущерб, который может быть причинен службам имен. Для того чтобы поместить BIND в среду chroot, вы должны создать ката­ лог, где сервер сможет работать независимо от других процессов. Помимо это­ го, вы будете управлять им как непривилегированный пользователь, но лишь root-пользователь будет иметь возможность доступа к этому каталогу. Данный каталог будет содержать все файлы, которые необходимы BIND, и вам будет казаться, что вся файловая система BIND по вашему указанию выполняет команду chroot. Сначала остановите службу, выполнив следующую команду: # /etc/init.d/bind9 stop

Далее отредактируйте файл /etc/defaul t/bi nd9 так, чтобы демон работал как непривилегированный пользователь bind, переведенный chroot в папку /var/lib/ named. Измените строку OPTS="-u bind" так: OPTIONS="-u bind -t /var/llb/named"

Настройка сервера DNS

59

Чтобы обеспечить цельную среду для работы BIND, создайте необходимые ка­ талоги в папке /var/1 ib:

# # # #

mkdiг mkdiг mkdiг mkdir

-р /var/1ib/named/etc /var/1ib/named/dev -p /var/1ib/named/var/cache/bind -p /var/1ib/named/var/run/bind/run

Потом переместите директорию config из папки /etc в /var/1 ib/named/etc:

# mv /etc/bind /var/1ib/named/etc Теперь создайте символьную ссылку к новой директории config со старого места, чтобы избежать проблем, если BIND будет изменен:

# In -s /var/1ib/named/etc/bind /etc/bind

Установите для использования BIND нулевые и случайные устройства и за­ фиксируйте доступ к каталогу: # mknod /var/1ib/named/dev/null с 1 3 # mknod /var/1ib/named/dev/random с 1 8

Затем измените права доступа и собственности для файлов: # chmod 666 /var/1ib/named/dev/null /var/1ib/named/dev/random # chown -R bi nd:bi nd /var/1ib/named/var/* # chown -R bind:bind /var/1ib/named/etc/bind

Вы также должны будете изменить стартовый сценарий /etc/i nit.d/syskl ogd, чтобы он по-прежнему мог «видеть» сообщения системных журналов. Измените строку SYSLOGD="" так:

SYSLOGD="-a /var/1ib/named/dev/1og"

Теперь перезапустите процесс входа командой # /etc/init.d/sysklogd restart

Вы увидите следующее сообщение: Restarting system log daemon: syslogd.

Наконец, запустите BIND: # /etc/init.d/bind9 start Проверьте файл /var/1 og/syslog на наличие ошибок. Вы можете просмотреть файл, используя такую команду:

# less /var/1og/syslog Если вы увидите следующее сообщение, то BIND стартовал успешно: Starting domain name service: named. К сожалению, named может стартовать с неудавшейся загрузкой начальных фай­ лов данных, что оставит его нерабочим. Итак, проверьте, функционирует ли named, введя такую команду:

60

Глава 3. Система доменных имен

# rndc status number of zones: 6 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries In progress: 0 query logging Is OFF server Is up and running serverl:/home/adm1n# Если DNS работает неправильно, то вместо приведенного выше кода вы уви­ дите что-то подобное:

# rndc status rndc: neither /etc/blnd/rndc.conf nor /etc/blnd/rndc.key was found

Если появилась такая ошибка, прочтите подраздел «Невозможность связи при использовании rndc» раздела «Устранение ошибок BIND» далее в этой главе.

Конфигурирование сервера DNS с аутентификацией Если вы хотите найти в телефонном справочнике номер Джейн Доу (Jane Doe), то телефонная компания предоставит эту информацию. Но если вы хотите получить возможность найти janedoe.com, то системный администратор должен опередить вас с доменным именем и IP-адресом и сделать их частью рассредоточенной ди­ ректории DNS. Администраторы делают это, создавая листинги, в которых при­ верженцы DNS запрашивают файлы зон. Зона содержит информацию по домену или, продолжая нашу более раннюю аналогию с телефоном, с домашним хозяйством. Скажем, в вашем доме живут 15 детей, и кто-то просит вас помочь в поиске одного из них. У каждого ребенка есть сотовый телефон, но вы не помните все номера наизусть. Вместо этого вы используете собственный каталог, чтобы найти нужный телефонный номер ре­ бенка. Похожим образом в вашем дата-центре могут «жить» 15 серверов или на ва­ шем сервере могут быть размещены 15 сайтов. Чтобы проиллюстрировать это, предложим вам администрировать сервер, на котором размещено пять различных сайтов с совершенно разными доменными именами. Одно из них, предположим, centralsoft.org, а другие — linhelp.com, supportcall.org, jdshelp.net и linuxconf.net. Все вла­ дельцы сайтов просят вас управлять их DNS-записями. Универсальность BIND позволяет вам одновременно управлять несколькими DNS-серверами и множе­ ственными доменами независимо от сервера. Каждый сайт находится в отдельном домене, так что вы должны написать файл зоны для каждого сайта. В базах данных регистрирующего устройства ваш DNS-cepвер будет записан как сервер доменных имен. Другими словами, serverl.centralsoft.org будет записан так, что гость, пришедший в дом, сможет найти в нем других детей (linhelp.com, supportcall.org и др.). Файл, соответствующий списку номеров телефонов в нашем доме-анало­ гии, — это /etc/named.conf. Иными словами, этот файл хранит файлы зон из на­

Конфигурирование сервера DNS с аутентификацией

61

шего каталога. Он обеспечивает нас информацией о размещении каждой зоны в системе.

Ответственность в DNS Как было сказано выше, DNS рассредоточивает свои директории. Если вы упла­ чиваете взнос и регистрируете домен, один из вопросов, на который вам придется ответить, касается серверов имен. Вы должны распределить имена и адреса по двум серверам, а они должны быть зарегистрированы в системе DNS. Теперь вы можете себе представить, в чем состоит работа системного админи­ стратора. Вы должны конфигурировать все серверы имен в рамках своего домена, чтобы они соответствовали набору спецификаций, установленных проблемной группой проектирования в Интернете1 (IETF). Если вы не будете следовать специ­ альным протоколам, ваша система не станет частью всемирной службы каталогов. Надеемся, что предыдущее обсуждение позволило вам понять, что такое DNS. Теперь давайте поближе взглянем на то, как ввести в работу вашу часть дирек­ тории.

Дистрибутивный метод интерпретации доменных имен Теперь мы вновь рассмотрим структуру директории DNS. Директория имеет три уровня. Серверы первой группы называются корневыми, поскольку они обеспечи­ вают отправную точку для поисковых запросов. Вторая группа состоит из серверов доменов первого уровня. Они включают такие домены, как com, net, org, mil, gov, edu, и т. д., а также домены государств, например de. Домены нечувствительны к регистру; сот и СОМ — это одно и то же.

а у

На рис. 3.1 показана структура DNS. В верхней части рисунка вы можете ви­ деть изображение корневых серверов Интернета. Они содержат только имена и IP-адреса следующего уровня серверов и отвечают лишь за переадресацию за­ просов доменам первого уровня. В центре рисунка вы видите несколько серверов домена первого уровня org. Они содержат имена и IP-адреса всех зарегистрированных серверов DNS с суффиксом org. Если вы регистрируете домен с таким суффиксом, то его IP-адрес будет нахо­ диться в каждом из серверов домена первого уровня org. Вы должны будете пред­ ставить оставшуюся информацию обо всех поддоменах, находящихся на сервере вашего домена. Нижний уровень на рис. 3.1 изображает первичный сервер имен под названием serverl.centralsoft.org. Он работает как DNS-сервер для некоторого количества доме­ нов, что вы увидите позже. Сейчас просто запомните, что сервер serverl.centralsoft.org представляет собой часть DNS-системы, которой вы должны управлять. 1

Одна из групп Координационного совета Интернета. — Примеч. ред.

62

Глава 3. Система доменных имен

Root-серверы

Сервер

Сервер

Сервер

Сервер

Серверы домена первого уровня огд

Centralsoft

DNS-сервер

Рис. 3.1. Рассредоточенная структура директории DNS

Поиск домена Как было указано выше, наряду с демоном для внесения записей DNS в распре­ деленную директорию BIND предоставляет механизм для чтения каталога. Если вашему компьютеру нужно найти адрес сайта, он использует в качестве источни­ ков DNS-серверы, которые вы выделяете (скорее всего, они размещены в вашей локальной сети или у вашего ISP). Предположим, ваш браузер должен найти сайт www.google.com. «Клиент» BIND выполняет команду, которая, собственно, спрашивает DNS-сервер, известен ли ему адрес сайта. Если DNS-сервер не знает адреса, то он запрашивает его у корневого сервера. Корневой сервер отвечает: «Я не знаю этого, но я знаю, где найти ответ. Начните с сервера домена первого уровня сот». После этого он сообщает IP-адрес сервера, который знает все домены (достаточно много!), зарегистрированные в сот. В вашем браузере интерпретатор DNS-сервера запрашивает адрес у сервера сот. Сервер отвечает: «У меня нет такой информации, но я знаю сервер имен, на котором она имеется. Его адрес — 64.233.167.99, а имя — nsl.google.com». Дружественный вам DNS-сервер следует по адресу, читает информацию каталога, представляемую nsl.google.com , и сообщает вашему браузеру адрес www.google.com.

Конфигурирование сервера DNS с аутентификацией

63

После этого DNS-сервер кэширует эту информацию, и вам не придется снова искать адрес Google. Файл resolV.conf контролирует запросы, создаваемые браузерами и другими клиентами для доменных имен, тогда как named отвечает на запросы и удостове­ ряет, что на всех серверах хранится актуальная информация.

Ответы на запросы На рис. 3.2 изображен процесс, используемый для ответа на запрос. Рассмот­ рим, как его прервать. В верхнем левохМ углу рисунка изображена серверная башня (в нашем примере этот сервер называется serverl.centralsoft.org, он реали­ зует ту же функцию, что и nsl.google.com). Допустим, на сервере работают Linux и BIND. Сервер более высокого уровня адресует интерпретаторы системе (в слу­ чае serverl.centralsoft.org домен первого уровня org посылает запросы на сервер доменов первого уровня org).

Файлы зоны

Рис. 3.2. Ответ на запрос

Демон named перехватывает сигнал с протокола датаграмм пользователя пор­ та 53 для всех, кто запрашивает имя в домене. Когда named получает запрос, он консультирует файл конфигурации /etc/named.conf. Если сервер располагает ин­ формацией в домене для ответа на запрос, он просматривает соответствующий файл зоны. Если файл зоны содержит запрошенную информацию, то сервер вы­ дает ее запрашивающей системе. Некоторые называют файлы конфигурации файлами управления. Это имеет смысл, так как корректная работа DNS требует точного согласования с ее правила­ ми и протоколами. Хотя файлы зон работают именно как часть директории DNS. Они служат прежде всего для передачи информации, а не для обеспечения выпол­ нения правил.

64

Глава 3. Система доменных имен

Первичные и вторичные DNS-серверы Как было сказано выше, при регистрации своего домена вы должны сообщить ин­ формацию минимум двух DNS-серверов. Если хотите, можете полностью продуб­ лировать информацию, которую указываете на первом DNS-сервере, на второй сервер. Некоторые провайдеры так поступают, но более приемлемой практикой является понимание первого сервера как основного — master (на котором вы буде­ те проводить вручную все обновления), а второго — как второстепенного — slave. Тогда BIND позволяет второму серверу связываться с первым и автоматически тиражировать директорию, что на практике называется передачей зоны. Вторичные серверы так же надежны, как и основные. Они могут отвечать на за­ просы и выдавать информацию во все зоны, за которые они ответственны. Разница в том, что, когда вы вносите изменения, вы должны делать это только на основном сервере. Вторичные серверы будут получать эту информацию от основного. Основной сервер не передает свою новую конфигурацию вторичным серверам непосредственно. Вместо этого каждый из вторичных серверов с равными интер­ валами времени и в определенном порядке опрашивает основной сервер, были ли внесены какие-либо изменения. Вторичный сервер знает, что должен опрашивать «большого брата», поскольку это отмечено термином si ave в его файле named. conf, как показано здесь: zone "centralsoft.org" { type slave; file "sec.centralsoft.org"; masters { 70.253.158.42; }; }; Мы не хотим прямо сейчас обсуждать весь синтаксис и роль этой записи. Здесь для нас важна строка type slave, которая определяет сервер как вторичный, а также строка masters, рассказывающая серверу, где взять информацию. В этом примере master находится по IP-адресу 70.253.158.42. Данный адрес соответствует тому, который мы ранее внесли в файл resol v. conf (см. раздел «Доступ в BIND»). Файл resolV.conf помогает клиенту связаться с DNS, в ходе чего предыдущая запись в файле named.conf помогает вторичному DNS-серверу найти основной сервер.

Брандмауэры Если на вашем основном сервере находится брандмауэр, убедитесь, что вы разбло­ кировали протокол передачи пользовательских датаграмм (UDP) порта 53. Этот порт используется для получения запросов и для ответов на них. Вторичные сер­ веры применяют и протокол управления передачей (TCP), и протокол передачи пользовательских датаграмм для обработки переносов зон, которые требуются для поддержания сервера обновленным. Позиционирование вторичных серверов как slave обязывает их периодически сверяться с основным сервером, чтобы узнать, были ли внесены изменения в ди­ ректорию файлов домена. Файл named. conf на каждом сервере определяет проведе­

Конфигурирование сервера DNS с аутентификацией

65

ние опроса и переносы зон. Обновленное значение сообщает вторичному серверу, как часто он должен сверяться с основным сервером. Значение серийного номера следует увеличивать на основном сервере. Основной файл конфигурации также определяет повторное значение, использу­ емое вторичным сервером вместо обновленного значения, если он не может свя­ заться с основным сервером. Это может произойти при выходе сети из строя. В этом случае вторичный сервер начинает работать как основной. Однако вторичный сервер не может так маскироваться постоянно. В этом слу­ чае его информация может так устареть, что будет предпочтительнее прекратить ответы на запросы. Следовательно, файл конфигурации также определяет время ожидания. Если за это время не происходит успешного обновления, то вторич­ ный сервер продолжает попытки связаться с основным сервером, но отказывает запросам. Есть еще одно значение, которое следует учитывать перед тем, как заняться конфигурацией файлов — минимальное время жизни пакета (TTL). Если удален­ ный DNS-сервер получает от вас ответ на запрос, он кэширует эту информацию и повторно использует ее в период времени, определенный TTL. Кэширование важно для эксплуатации DNS. Если кто-то проводит время, посещая различные страницы вашего сайта (каждое посещение в этой серии может включать множест­ венные загрузки), то благодаря кэшированию ближайший к пользователю сервер должен будет сделать лишь один запрос на доменное имя. После этого он сможет удовлетворить любой запрос информацией из своего кэша. Чтобы вы могли из­ бежать устаревания кэшированной информации, TTL гарантирует, что каждый раз, когда сервер сбрасывает кэшированное значение, оно возвращается к вам на уполномоченный сервер за актуальной информацией. Вы увидите все эти значения в своем файле зоны, а не в файле named. conf, кото­ рый лишь указывает размещение вашего файла зоны.

Серверы только для кэширования Дополнительно к основным и вторичным серверам DNS предлагает серверы толь­ ко для кэширования. Администраторы используют их для уменьшения нагрузки на уполномоченные серверы. Сервер для кэширования не имеет полномочий, он просто ускоряет работу DNS путем запасания доменных имен, которые он получает с уполномоченных серверов, и сообщения их клиентам. Сервер, настраиваемый вами для размещения доменов, обычно полностью за­ гружен ответами на запросы других DNS-серверов Интернета. Однако эта работа перегружает его ресурсы, так что администраторы часто используют серверы для кэширования, чтобы локально сохранять информацию для пользовательских за­ просов. Вы увидите серверы для кэширования, используемые ISP, например, толь­ ко для обслуживания своих одиночных пользователей. Для передачи доменных имен размещаемым сайтам применяется другой сервер. Если вы устанавливаете BIND, то он настраивает кэширование на сервере по умолчанию. Если вы отправляете запрос, то кэширующий сервер сохраняет ре­ зультаты в кэш. В следующий раз, когда вы попытаетесь отыскать тот же сайт, вам не придется повторять процесс поиска — вы получите размещение IP-адреса из кэша.

66

Глава 3. Система доменных имен

Редактирование файлов конфигурации Итак, мы подробно рассмотрели систему доменных имен и детально объяснили, как вы должны с ней работать. Сейчас мы разберемся в файлах конфигурации, чтобы вы могли их записывать, изменять и фиксировать, если возникает такая необходимость. Когда вы устанавливаете BIND на Linux, пакет предоставляет вам файлы кон­ фигурации: вам не придется записывать каждый файл с нуля. На рис. 3.3 показа­ ны основные файлы. Мы начнем с файла named.conf, который координирует всю систему на сервере BIND.

хост-системы

зоны

зоны

Рис. 3.3. Файлы конфигурации BIND

named.conf Вспомним информацию, изложенную в разделе «Ответы на запросы»: когда named получает запрос, он консультирует собственную небольшую директорию — файл конфигурации named. conf. Файл named указывает файл зоны запрошенного домена. Рассмотрим простой файл named.conf. Если вы не понимаете смысла его рабо­ ты, то можете просто рассмотреть, как он выглядит. Мы сейчас разложим его на составные части. Запомните — как правило, этот файл устанавливается по умолчанию на ваш сервер Linux. В зависимости от варианта, named. conf может находиться в различных директориях (в версии BIND 9 для Debian он размещается в директории /etc/Ы nd/ named.conf) и его содержимое может немного отличаться. Например, файл может быть подробно прокомментирован. Приведем пример файла named.conf. Комментарии следуют за двойной косой чертой:

Редактирование файлов конфигурации

67

options { pid-file "/var/run/bind/run/named.pid"; directory "/etc/bind"; // query-source address * port 53: }: // // a master nameserver config // zone { type hint: file "db.root": }•: zone "0.0.127.1n-addr.arpa" { type master; file "db.local": }; zone "158.253.70.in-addr.arpa" { type master: file "pri.158.253.70.in- addr.arpa"; }; zone "centralsoft.org" { type master; file "pri.centralsoft.org"; }■

Основы безопасности при передаче данных

| |

I В нашей настоящей конфигурации каждый сервер имен может передавать зону | centralsoft.org с основного сервера имен. Поскольку мы хотим разрешить передачу зоны только вторичному серверу (70.253.158.45), мы должны добавить к зоне | centralsoft.org в файле named. conf на основном сервере имен serverl.centralsoft.org следующую строку: | al low-transfer { 70.253.158.45; };

Зона должна выглядеть так: zone "centralsoft.org" { type master; file "pri.centralsoft.org"; al low-transfer { 70.253.158.45; };

I

I | g | |

Приведенный файл named. conf относится к четырем другим файлам конфигура­ ции. Третья строка списка директории определяет их все: /etc/bind. Оператор options включает две строки. Первая показывает местоположение файла named.pid, который просто содержит ID процесса работающего демона named. Может казаться, что смешно хранить такой маленький кусочек информа­ ции, но он очень полезен для утилит, которые должны убивать или перезапускать

68

Глава 3. Система доменных имен

named. Более важна вторая строка оператора opt 1 ons, определяющая директорию, в которой содержатся named и файлы, касающиеся его работы. Подчиненное положение имеет оператор zone, пример которого был рассмотрен выше. Он идентифицирует места размещения нескольких файлов, содержащих информацию о конфигурации. Файл named.conf должен определять в операторе zone следующие файлы. О Файл указаний (Hints file) (zone "."). Этот файл содержит имена и адреса кор­ невых каталогов Интернета. Named должен знать адреса этих серверов, чтобы он мог начать запрос, когда в кэше еще не сохранен ни один из компонентов запрашиваемого домена. О Локальный файл хост-системы (Local host file) (zone "0.0.127.1n-addr.arpa"). Этот файл представляет вашу собственную систему (1Р-адрес 127.0.0.1) в DNS. Точка создания локальных файлов зон для каждого аспекта вашего локального хоста предназначена для того, чтобы уменьшить трафик и позволить программе работать одним и тем же образом, независимо от того, имеет ли она прямой или удаленный доступ к вашей системе. О Обратный файл зоны (Reverse zone file) (zone "158.253.70.In-addr.arpa"). Этот файл соотносит IP-адреса с именами хостов. Это зеркальное отображение ос­ новного файла зоны. Вы можете узнать обратный файл зоны по расширению in-addr.агра. Он использует записи PTR (описаны ниже). О Основной файл зоны (Primary zone file) (zone "centralsoft.org"). Этот файл, иногда называемый базой данных домена, определяет большую часть информа­ ции, необходимой для интерпретации запросов о домене, который вы админист­ рируете. Когда вы устанавливаете BIND, конфигурация этого файла не задана. Обычно нужно записать этот файл с нуля или использовать какой-либо файл, сопровождающий BIND в качестве маски. Основной файл зоны соотносится с IP-адресами и сообщает информацию о служ­ бах вашего компьютера, предлагаемых для работы в Интернете (включая ваши веб- и FTP-серверы, почтовые серверы, серверы имен и т. д.) По умолчанию файл конфигурации будет содержать два оператора zone (для указаний и локальных файлов — такие файлы, как правило, появляются, если вы устанавливаете BIND и не должны вносить изменения). Вы должны добавить за­ писи для основных и обратных файлов зон. Файлы зон могут использовать несколько типов записи, включая следующие: О SOA (Start of Authority) — начальная запись зоны; О NS (Name Server) — сервер имен; О MX (Mail eXchanger) — обменник почты, идентифицирующий на домене почто­ вый сервер; О A (Address) — хост-имя для адресного соответствия; О CNAME (Canonical Name) — каноническое (независимое от конечной реализации) имя, определяющее псевдоним для записи в А; О PTR (Pointer) — указатель, соотносящий адреса с именами. Нет необходимости запоминать сейчас эти типы записи. У вас будет отличная возможность использовать их, когда мы глубже начнем рассматривать тему. Далее мы рассмотрим основной файл зоны.

Редактирование файлов конфигурации

69

Основной файл зоны Основной файл зоны содержит информацию по конфигурированию, необходимую DNS. Формат этого файла не стандартизирован, но хранящиеся в нем элементы специфицированы в RFC 1035. Если вы используете набор файлов, предлагаемый при установке Debian, то должны назвать свой основной файл зоны по своему домену. Мы назвали файл зоны pri. central soft. org по домену centralsoft.org (префикс pr 1 поможет вам понять, что файл является основным). Здесь мы опишем каждую из частей файла. Чтобы просмотреть его полностью, откройте раздел «Сведение всего вместе». Первые строки сообщают информацию, необходимую для синхронизации с ва­ шими вторичными или slave-серверами:

@ IN SOA serverl.centralsoft.org. root.local host. ( 2006012103; serial-no 28800; refresh, seconds 7200: retry, seconds 604800; expiry, seconds 86400 ); mlnlmum-TTL. seconds Это запись SOA — начальная запись зоны, которая определяется в качестве ин­ формации для самостоятельных серверов (как основных, так и вторичных) как противоположная кэширующим серверам. В то время как вы записываете свою часть рассредоточенной директории DNS, система выдает вам права на вашу часть системы. Таким образом, ваш файл зоны должен указать, где начинаются ваши права, то есть начинается обслуживаемый вами домен. Точка с запятой (;) не отмечает конца строки — она всего лишь означает начало коммен­ тария. Хотя, если вы не хотите включать «серийный» комментарий, то можете записать следующую строку: 2006012103; serial-по

таким образом: 2006012103

Рассмотрим слева направо первую строку, начинающуюся с символа @. О Имя (Name) — корневое имя зоны. Символ @ — это быстрый доступ к текущей зоне в файле /etc/named.conf. Другими словами, это эквивалент использова­ ния serverl.centralsoft.org в нашем примере. Знак @ известен на DNS-жаргоне как origin.

О Класс (Class) — класс DNS. Существует несколько классов, но подавляющее большинство сайтов использует класс IN (Интернет). Остальные классы суще­ ствуют с протоколами и функциями не для Интернета. О Тип (Туре) — тип записи ресурса DNS. В данном случае это запись ресурса SOA. О Имя сервера (Nameserver) — полностью определенное имя основного сервера имен. Важна одна деталь: имя должно оканчиваться точкой (.), обозначающей ко­ рень иерархии DNS. Это позволяет указать, что путь — это полное имя домена.

70

Глава 3. Система доменных имен

О Электронный адрес (Email address) — адрес электронной почты лица, ответ­ ственного за домен. Здесь имеет место другая специфичная для DNS концеп­ ция: вы не можете использовать символ имеющийся в каждом адресе элек­ тронной почты, поскольку, как мы видели, этот символ в данном файле имеет другое значение. В качестве замены применяется точка. Здесь мы хотели бы обозначить root-пользователя локальной системы, или root@localhost, но мы должны представить адрес электронной почты в необычном формате, а именно root. 1 оса 1 host.. Заметьте, что адрес электронной почты также должен оканчи­ ваться точкой. Следующие строки записи SOA содержат поля для slave-серверов. О Serial -по — серийный номер — это актуальная конфигурация. Вы применяете этот номер каждый раз, когда меняете конфигурацию, чтобы slave-серверы зна­ ли, что пришло время обновлять информацию. Номер обычно дается в формате даты — гг.мм.дд—с двузначным номером, добавляемым с конца (это позволяет вам выполнять многократное редактирование каждый день). Таким образом, каждый серийный номер выше предыдущего, он документирует дату, на кото­ рую приходятся сделанные изменения. Если актуальный номер сервера выше того, который имеется в конфигурации информации slave-сервера, slave пере­ носит зону. 2006012103 — это стартовый серийный номер нашего примерного файла зоны. О Refresh — промежуток времени, через который slave-сервер DNS должен сверять­ ся с основным сервером, требуется ли перенос зоны. Значение дается в секундах. В нашем файле используется величина 28800 (28 800 секунд = 8 часов). О Retry — определяет, как часто slave-сервер должен связываться с основным сер­ вером при обрыве соединения. Интервал в нашем примере равен 7200 (7200 се­ кунд = 2 часа). О Expi гу — длительность времени, в течение которого slave-сервер должен пытать­ ся связаться с основным сервером до потери содержащихся на нем данных. Если данные пропадают, a slave не в состоянии связаться с сервером для получения свежей информации, он направляет будущие запросы на корневые серверы. Это значение также указывает эффективный период времени, в течение которого slave-сервер должен продолжать ответы на запросы, даже если он не может об­ новить файл зоны. Кроме того, значение определяет, как долго вы можете ми­ риться с выдачей необновленной информации. В нашем примере используется величина 604800 (604 000 секунд = 7 дней). О ml mmum-TTL — время жизни по умолчанию для данного домена в секундах. Любая запись ресурса, не имеющая специально указанного времени жизни, использует значение по умолчанию 86400. Поскольку 86 400 секунд — это один день, запись запроса в кэше должна удаляться через день. Мы рассмотрели запись SOA. За ней следует список хост-имен различных типов: NS served. central soft. org.; NS server2.centralsoft.org.; Данные записи NS определяют серверы имен для домена (вы перечислили их, регистрируя домен). Точка с запятой вновь не является обязательной, но удобна, если вы хотите поместить комментарий в конце строки.

Редактирование файлов конфигурации

71

Далее следует запись MX, определяющая почтовый сервер для домена: MX 10 serverl.centralsoft.org.

В нашем примере мы использовали только один сервер имен, но большинство производственных сред предлагают несколько (одновременно для обращения с большими нагрузками и для подстраховки, если один выйдет из строя). Второе поле в данной записи (в нашем примере 10) может использоваться для индикации порядка, в котором должны проверяться серверы. Иными словами, значение опре­ деляет приоритетность серверов. В нашем примере основного файла зоны за записью MX следует несколько за­ писей А: centralsoft.org. www server1 server2

А А А А

70.253.158.42 70.253.158.42 70.253.158.42 70.253.158.45

Эта запись обеспечивает соответствие имени и IP-адреса. Поскольку несколь­ ко имен могут быть присвоены одному компьютеру, у вас получается несколько записей А, указывающих на один IP-адрес. Однако каждое хост-имя может иметь максимум одну запись А. Наш файл имеет четыре записи А, соотнося три имени с одним адресом и одно имя — с другим.

Расширение функциональных возможностей Если вы настраиваете файл с содержимым из предыдущего раздела, то убедитесь в том, что вводите верные хост-имена и IP-адреса для своей среды, в которой распо­ ложен ваш работающий файл зоны (конечно же, вам требуются и другие файлы, что мы объясним далее). Однако вы должны принимать во внимание и некоторые дру­ гие полезные вещи, которые вы можете делать с помощью основного файла зоны. Записи MX. Как видите, типичная запись MX выглядит так: MX 10 serverl.centralsoft.org.

Эта запись означает, что электронное письмо, адресованное домену centralsoft.org, должно быть доставлено на сервер serverl.centralsoft.org (почтовый сервер этого до­ мена), который имеет приоритет 10. Приоритеты вступают в игру при более сложных конфигурациях, когда до­ ступно несколько почтовых серверов. Более низкие номера означают более высо­ кий приоритет. Иными словами, 1 является наивысшим приоритетом. Система приоритетов работает следующим образом: удаленный почтовый сервер сначала пытается связаться в вашем списке с наивысшим приоритетом. Если он не отвеча­ ет, то сервер переходит к использованию следующего приоритета, и так до конца списка. Допустим, вы перечисляете несколько почтовых обменников, например: MX 10 serverl.centralsoft.org. MX 20 mail.someotherdomain.com.

Теперь если почта идет на сервер centralsoft.org , то созданный почтовый клиент сначала пытается связаться с сервером serverl.centralsoft.org, поскольку он имеет наи­ высший приоритет (10). Если доступ к серверу serverl.centralsoft.org невозможен, то почтовый клиент будет использовать следующий сервер: mail.someotherdomain.com, имеющий приоритет 20.

72

Глава 3. Система доменных имен

a

DNS не определяет, как обрабатывать множественные почтовые серверы с одинаковым

г. приоритетом. Многие почтовые клиенты делают выбор случайным образом, чтобы применить * грубый вариант балансировки нагрузки.

До сих пор мы определяли записи MX только для электронной почты, адресован­ ной учетной записи [email protected]. Что делать, если вы хотите распределить почту по различным отделам в компании или по различным подразделениям пра­ вительственного агентства? Вы можете добавлять подчиненные поддомены для своей записи MX. В этом случае добавление accounting.centralsoft.org просто потребует другой за­ писи MX: accounting.centralsoft.org.

MX 10 serverl.centralsoft.org.

Обратите внимание на точку (. ) в конце записи accountl ng. central soft. org.. Если вы не добавите ее, то оригинал зоны будет прибавлен к имени. Например, если вы написали

account1ng.centralsoft.org

MX 10 serverl.centralsoft.org.

и не поставили точку, то запись трансформируется в accounting.centralsoft.org. centralsoft.org, что, конечно же, неправильно. A-записи. Записи MS и MX используют такие имена хостов, как centralsoft.org, serverl.centralsoft. org и server2.centralsoft.org, но основной файл зоны обязан также определять IP-адреса, которым эти имена должны соответствовать. Многие наблю­ датели считают их наиболее важными записями DNS, поскольку их можно исполь­ зовать их для создания таких хост-адресов, как www.centralsoft.org, где www — это хост. Следующая простая запись А из нашего основного файла зоны отмечает, что centralsoft.org имеет IP-адрес 70.253.158.42:

centralsoft.org.

А 70.253.158.42

Не забудьте добавить точку в конце имени хоста. В браузере вы, возможно, привыкли набирать www.centralsoft.org, а не centralsoft.org. Первый адрес технически совершенно отличен от второго, но большинство посети­ телей ожидает увидеть один и тот же сайт, независимо от того, ввели ли они www или нет. Затем мы создадим и такую запись: А 70.253.158.42

www

За www не следует точка, поэтому BIND прикрепляет оригинал зоны. Эффект такой же, как при указании следующего значения: www.centralsoft.org.

А 70.253.158.42

Указание IP-адресов для serverl.centralsoft.org и server2.centralsoft.org : served served

А 70.253.158.42 А 70.253.158.45

Запись для server2.centralsoft.org указывает на другой IP-адрес, что имеет смысл, так как это наш вторичный сервер имен. Если наш основной сервер выйдет из строя, речь будет идти об иной системе.

Редактирование файлов конфигурации

73

Проблема самообеспечения и связующих записей Вы можете заинтересоваться, как serverl.centralsoft.org и server2.centralsoft.org могут использоваться для поиска записей для centralsoft.org, если они находятся в зоне, которую требуется искать. Это классическая проблема самообеспечения: вы не можете использовать для начала поиска тот же способ, который вы применяете для сбора записей. Решение обеспечивают связующие записи. Если серверы доменов первого уровня для огд прямо перенаправляют сайты к серверам имен centralsoft.org, то они, как правило, возвращают имя, а не 1Р-адрес (то есть serverl.centralsoft.org вместо 70.253.158.42). На тот случай, если бы в зоне поиска не было самостоятельных ЭИЗ-серверов, на сервере домена первого уровня создается связующая запись, соотносящая имя с 1Р-адресом (в нашем случае serverl.centralsoft.org с 70.253.158.42), и серверы доменов первого уровня доставляют 1Р-адрес вместо названия сервера имен. Это означает, что вам не нужно его находить до того, как произойдет запрос о месте его размещения.

| | | I I I | | | I

|

Записи CNAME. CNAME — это сокращение от CANONICAL NAME — канониче­ ского имени. Вы можете понимать его как псевдоним для записи А. Например, запись

ftp

CNAME www

означает, что ftp.centralsoft.org является альтернативным именем для www.centralsoft. org, то есть указывает на ту же машину, что и www.centralsoft.org. Вы можете столк­ нуться с ситуацией (в особенности загружая пакеты Linux), когда архив выглядит как http://ftp.mirrors.kernel.org. В таком случае практически наверняка для опреде­ ления FTP-части хост-имени в системе была использована запись CNAME, которая отличается от А-записи. CNAME всегда должна указывать на A-запись, а не на другую CNAME. Кроме того, вы не можете использовать имена хостов CNAME в записях MX или SOA. Рассмотрим пример того, что не разрешено: MX 10 ftp Использование записей CNAME имеет свои «за» и «против». Многие специалисты по DNS не рекомендуют ими пользоваться. Все же вы можете обнаружить некото­ рую ценность записей CNAME. Например, если ваша директория DNS содержит много записей А, указывающих на один и тот же IP-адрес, и вы переходите на другой хос­ тинг, предлагающий иной IP-адрес, вы должны обновить каждую запись А. Но если у вас есть только одна запись А и все ваши имена хостов находятся в записях CNAME, вам придется обновить всего лишь одну запись А. Итак, мы верим, что CNAME все еще занимает свое место в окружении DNS. Записи ТХТ и SPF. Запись ТХТ позволяет добавлять в зону текст. В основном записи ТХТ используются для внедрения записей SPF, контролирующих, должны ли обменники почты получать почтовые адреса со своих доменов. Крупнейшие

74

Глава 3. Система доменных имен

почтовые компании, например Yahoo! и Hotmail, сегодня в большой мере полага­ ются на записи SPF, чтобы помешать спамерам подделывать почтовые адреса с до­ менными именами поставщиков услуг. Если приходит почта с машины, которой нет в списке SPF, почтовый клиент может классифицировать ее как спам. Программу для создания записей SPF можно найти по адресу http://www.openspf. org/wizard.html?mydomain=&x=26&y=8. Мы использовали эту программу для созда­ ния двух записей SPF для centralsoft.org, затем внедрили их в записи ТХТ и добавили к нашему файлу зоны: centralsoft.org. serverl.centralsoft.org.

TXT "v=spfl a mx -all" TXT "v=spfl a -all"

Сведение всего вместе Теперь рассмотрим наш файл зоны pri .centralsoft.org. Обратите внимание, что мы добавили записи CNAME и ТХТ к частям, рассмотренным выше:

@ IN SOA serverl.centralsoft.org. root.local host. ( 2006012103; serial-no 28800; refresh, seconds 7200; retry, seconds 604800; expiry, seconds 86400 ); minimum-TTL. seconds

NS serverl.central soft.org.; NS server2.central soft.org.;

MX 10 serverl.centralsoft.org. centralsoft.org. A 70.253.158.42 WWW A 70.253.158.42 serverl A 70.253.158.42 server2 A 70.253.158.45 CNAME www ftp centralsoft.org. TXT "v-spfl a mx —all serverl.centralsoft.org. TXT "v=spfl a -all"

Обратный файл зоны Программы могут искать в DNS домен centralsoft.org и все его поддомены при нали­ чии законченного файла зоны. Но нам все еще требуется обратный файл зоны. Обратный файл зоны соотносит IP-адреса с именами. Это выглядит практиче­ ски зеркально основному файлу зоны: обратный файл зоны сначала записывает IP-адреса, а не имена. Для чего можно использовать обратный файл зоны? В прошлом многие орга­ низаторы не позволили бы вам использовать свои сервисы, если бы не смогли пин­ говать ваше доменное имя обратным образом. Сегодня многие интернет-серверы используют обратный просмотр для верификации оригиналов электронной почты, чтобы остановить спамеров: эта задача записей SPF обсуждалась выше. Система, которую мы описали здесь, имеет дело с проблемой в почте, кото­ рая будет объяснена в главе 5. DNS отмечает, какой почтовый агент ответствен за

Редактирование файлов конфигурации

75

почту с домена, записанного в адресе отправителя. Многие спамеры пытаются передавать почту, используя различные почтовые клиенты, но получающий клиент способен выполнять обратный поиск, обходить эту нерегулярность и отвергать ненужную почту. Поскольку мы не хотим, чтобы почта, поступающая с домена centralsoft.org, клас­ сифицировалась как спам, то создадим обратный файл зоны. Сначала, чтобы ука­ зать данный файл, мы должны поместить такую запись в нашем файле named. conf:

zone "158.253.70.1n-addr.arpa" { type master; file "prl.158.253.70.1n-addr.arpa"; }; Числа могут показаться странными, но они подчиняются простому правилу. Домен centralsoft.org расположен по адресу 70.253.158, и мы переставляем элементы 70.253.158 для создания адреса 158.253.70, а затем используем его в операторе zone в файле named.conf. Домен in-addr.arpa — это домен первого уровня, используемый при любом обратном поиске. Мы назовем наш обратный файл зоны pr 1.158.253.70.1 n-addr.arpa и поместим его в ту же директорию, что и основной файл зоны pr 1. central soft. org. Начало файла prl .158.253.70.In-addr.arpa выглядит точно так же, как и файла prl.centralsoft.org:

@ IN SOA serverl.centralsoft.org. root.local host. ( 2006012103: serial-no 28800; refresh, seconds 7200; retry, seconds 604800; expiry, seconds 86400 ); mlnlmum-TTL, seconds

NS serverl.centralsoft.org.; NS server2.centralsoft.org .; Однако здесь мы не добавляем никаких записей А, MX или CNAME. Вместо этого мы создаем записи PTR. Записи PTR. PTR — это сокращение от Pointer, то есть указателя доменного име­ ни. Создадим одну такую запись, начав с IP-адреса centralsoft.org — 70.253.158.42. Как мы показали выше, файл named.conf определяет хосты в домене 70.253.158. Итак, все записи PTR должны указывать последнюю часть хоста IP-адреса: 42:

42

PTR

centralsoft.org.

Создайте по одной PTR-записи для каждого хоста в своем домене. В нашем примере единственный иной IP-адрес, используемый нами, — 70.253.158.45 (для server2.centralsoft.org), поэтому мы добавляем следующую запись: 45

PTR

server2.centralsoft.org .

И все. Теперь наш обратный файл зоны выглядит так:

@ IN SOA serverl.centralsoft.org. root.localhost. ( 2006012103; serial-no 28800; refresh, seconds 7200; retry, seconds

76

Глава 3. Система доменных имен

604800; expiry, seconds 86400 ); minimum-TTL, seconds

NS serverl.central soft.org.; NS server2.central soft.org.; 42 PTR centralsoft.org. 45 PTR server2.centralsoft.org.

Тестирование поиска Отредактировав все файлы конфигурации и файлы зон, вы должны сообщить BIND о сделанных изменениях. Вы можете остановиться и запустить named следующим образом:

# /etc/init.d/bind9 stop # /etc/init.d/bind9 start

Если появятся ошибки или ваша служба BIND будет работать не так, как ожи­ далось, прочтите следующий раздел об устранении ошибок для уточнения деталей часто возникающих проблем. В будущем, если единственное выполняемое вами изменение — это обновление файла зоны новой записью DNS для соответствующего домена, достаточно просто сообщить BIND о необходимости перезагрузить информацию о конкретной зоне (это лучше запуска сразу всей службы): # rndc reload centralsoft.org

Команда rndc будет рассматриваться более подробно в следующем разделе. Теперь мы можем испытать нашу конфигурацию, выполнив поиск с использо­ ванием инструмента командной строки dig. Для начала найдем IP-адрес домена www.cetntralsoft.org: # dig centralsoft.org ; «» DiG 9.2.1 «» centralsoft.org global options: printcmd :: Got answer: :: -»HEADER«- opcode: QUERY, status: NOERROR, id: 48489 flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0. ADDITIONAL: 0 :: QUESTION SECTION: ¡central soft.org. IN A :; ANSWER SECTION: centralsoft.org. 86400 IN A 70.253.158.42 :: Query time: 198 msec ;: SERVER: 81.169.163.104#53(81.169.163.104) ;; WHEN: Sat Mar 11 18:55:21 2006 :; MSG SIZE rcvd: 49 Как видите, этот поиск возвращает IP-адрес 70.253.158.42. Теперь мы можем сделать обратный запрос:

# dig -х 70.253.158.42 : «» DIG 9.2.1 «» -х 70.253.158.42 global options: printcmd

Редактирование файлов конфигурации

77

Got answer: -»HEADER«- opcode: QUERY, status: NOERROR, id: 4096 flags: qr rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 QUESTION SECTION: IN ;42.158.253.70.in-addr.arpa. PTR ;; ANSWER SECTION: IN 42.158.253.70.in-addr.arpa. 5304 PTR centralsoft.org :: Query time: 2 msec :; SERVER: 81.169.163.104#53(81.169.163.104) ;; WHEN: Sat Mar 11 18:57:54 2006 ;; MSG SIZE rcvd: 98 Прямой и обратный запросы соответствуют друг другу. Настройка нашего основного сервера завершена.

Конфигурирование вторичного сервера имен Теперь настроим наш вторичный сервер имен server2.centralsoft.org. Он будет рабо­ тать как резервный сервер имен на случай отказа основного (serverl.centralsoft.org), чтобы пользователи по-прежнему могли находить centralsoft.org и его поддомены. Файл named.conf, относящийся к серверу server2.centralsoft.org, имеет некоторые отличия от файла основного сервера имен. options { pld-file "/var/run/blnd/run/named.pld"; directory "/etc/blnd"; // query-source address * port 53; }: zone "." { type hint: file "db.root"; }: zone "0.0.127.in-addr.arpa" { type master: file "db.local”: }; zone "centralsoft.org" { type slave; file "sec.centralsoft.org"; masters { 70.253.158.42; }; }; Наиболее важное отличие обсуждалось ранее в этой главе. Строка type slave; в последнем операторе zone отмечает, что это — зона slave. В строке fl 1 е мы ука­ зываем имя файла, в котором должна храниться зона slave, а в строке masters — IP-адрес основного сервера имен. Это все, что мы должны сделать для настройки вторичного сервера имен. Перезапустите named на сервере server2.centralsoft.org, и вскоре вы должны буде­ те найти файл /etc/Ы nd/sec. central soft. org на своем вторичном сервере имен. Что произошло? Вторичный сервер имен установил связь с основным сервером имен, который передал ему зону.

78

Глава 3. Система доменных имен

Теперь всякий раз, когда вы будете обновлять зону основного сервера имен, не забудьте убедиться, что серийный номер увеличивается. В ином случае обновлен­ ная зона не будет передана на вторичный сервер имен.

Инструменты BIND Как отмечалось выше в этой главе, BIND состоит из трех частей: демона named, библиотеки resolver и некоторых инструментов. Большинство администраторов DNS применяют команду dig для устранения проблем DNS по причине ее гибкости, простоты в использовании и ясности. Дру­ гие инструменты поиска имеют менее удобную функциональность. Однако одна альтернатива, о которой вы должны знать, — это команда nslookup. Мы также рас­ смотрим команду rndc — полезный инструмент для администрирования в составе BIND.

Команда nslookup Команда ns 1 ookup похожа на dig, но не годится для Linux. Ее использование требует больше усилий, но вы должны быть знакомы с ней, поскольку Microsoft Windows все еще применяет ее как основной инструмент поиска. Команда nslookup двояко запрашивает серверы имен интернет-доменов: в интер­ активном и неинтерактивном режиме. Интерактивный режим позволяет запра­ шивать у серверов имен информацию о различных хостах и доменах или печатать список хостов домена. В неинтерактивном режиме просто выводится имя и запрошенная информация по хосту и домену. Например, вы можете выполнить следующий поиск для полу­ чения некоторой информации о сервере Google: # nslookup nsl.google.com Server: 68.94.156.1 Address: 68.94.156.1#53 Non-authorltail ve answer: Name: nsl.google.com Address: 216.239.32.10 В интерактивном режиме команда ns 1 ookup дает подсказку, в которой вы можете выполнять команды. Например:

# nslookup >

Из подсказки вы можете осуществлять простой поиск, например, IP-адреса: > 70.253.158.42 Server: 172.30.1.2 Address: 172.30.1.2#53 Non-authorltatlve answer: 42.158.253.70.1n-addr.arpa name = adsl-70-253-158-42.dsl.rcsntx.swbell.net. Authoritative answers can be found from:

Инструменты BIND

79

158.253.70.1n-addr.arpa nameserver = nsl.swbell.net. 158.253.70.in-addr.arpa nameserver = ns2.swbell.net. > Вы также можете выполнять несколько команд, включая 1 server (которая при­ казывает вашему локальному серверу выполнить поиск) и host. Рассмотрим при­ мер работы команды 1 server: > 1 server google.com Default server: google.com Address: 64.233.167.99#53 Default server: google.com Address: 64.233.187.99#53 Default server: google.com Address: 72.14.207.99#53

Подкоманда host представляет собой простую утилиту для формулирования поиска. Если не дано аргументов или условий, host печатает краткое обобщение условий и аргументов своей командной строки. В основном ее используют для пре­ вращения имен в IP-адреса и наоборот. Рассмотрим пример: > host centralsoft.org centralsoft.org has address 70.253.158.42 Если вы поставите команду host в режим расширенного вывода, указав пара­ метр -v, то она выдаст информацию, похожую на ту, что дает команда dig:

> host -v centralsoft.org Trying "centralsoft.org" :: -»HEADER«- opcode: QUERY, status: NOERROR, Id: 43756 ;; flags: qr rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 QUESTION SECTION: A IN ;central soft.org. :: ANSWER SECTION: A 70.253.158.42 centralsoft.org. 86400 IN AUTHORITY SECTION: centralsoft.org. 29437 IN NS serverl.central soft.org Received 71 bytes from 68.94.156.1#53 in 30 ms

Эта информация пришла с IP-адреса 68.94.156.1 порта 53, являющегося сервером имен, указанным в файле resol v. conf Рабочего стола, который выполнил поиск. Вы можете вновь использовать команду host для нахождения имени этого сер­ вера: > host 68.94.156.1 1.156.94.68.1n-addr.arpa domain name pointer dnsrl.sbcglobal.net. Наберите exit, чтобы закончить интерактивную сессию nslookup. В некоторых случаях для исправления ошибок вы также можете использовать named. Например, для выяснения номера версии BIND выполните следующую команду:

# named -v named 8.4.6-REL-NOESW Tue Feb 1 10:10:48 UTC 2005 bul 1dd@rockhopper:/bul 1d/bul1dd/blnd-8.4.6/src/bln/named

80

Глава 3. Система доменных имен

Команда rndc BIND предлагает команду rndc как часть инсталляции. Данная команда позволяет администрировать named с использованием командной строки. Утилита посылает команды действующему серверу named, работающему с ними. Команда rndc также используется сценарием инициализации системы BIND 9. Чтобы предотвратить доступ не имеющих разрешения пользователей к серверу имен, вы должны использовать для получения аутентификации общий тайный ключ. Что касается rndc, то для подачи команд любому серверу named, даже на ло­ кальной машине, и rndc, и named должны использовать один и тот же ключ. Данный ключ хранится в файле /etc/Ы nd/rndc. key, и обе команды будут читать ключ из этого места. Файл rndc. key должен быть создан при установке BIND. Синтаксис команды rndc следующий: # rndc параметры_гпс!с команда параметры_команды Рассмотрим некоторые параметры команды, которыми вы можете воспользо­ ваться: О -к — использовать указанный ключ_файла вместо файла по умолча­ нию /etc/bind/rndc.key; О -s — отправить команду указанному серверу вместо локального сер­ вера; О -V — применить расширенную регистрацию. Кроме того, мы приводим несколько часто используемых команд, которые ко­ манда rndc может посылать named (для получения полного списка команд просто наберите саму команду — rndc). О halt — немедленная остановка сервера имен. О qиеry 1 og — вводит или отменяет регистрацию всех запросов, сделанных клиен­ тами на этот сервер имен. Это команда-переключатель: она включает регистра­ цию, если в настоящий момент она отключена, и наоборот. О rel oad [] — перезагружает файлы зоны, но сохраняет все предварительно кэшированные ответы. Это позволяет вам вносить изменения в файлы зоны и оставлять их действующими на ваших master- и slave-серверах без потери всех сохраненных разрешений имен. Если изменения затрагивают только частную зону, вы можете приказать named перезагрузить только ее. О retransfer — обуславливает обратный перенос указанной зоны без про­ верки серийного номера. О stats — сбрасывает имеющуюся статистику файла named. stats. О status — показывает настоящий статус сервера имен. О stop — корректно останавливает сервер, сохраняя все динамические обновления данных перед выходом.

Устранение ошибок BIND К этому времени вы уже должны понимать принципы функционирования DNS. Вы также должны знать, как конфигурировать свои файлы и находить в них син­

Устранение ошибок BIND

81

таксические ошибки, например опечатки. В этом разделе мы рассмотрим некото­ рые общие проблемы, которые могут вам встретиться при работе с BIND и DNS. Это не исчерпывающее руководство, но предлагаемая информация должна по­ мочь вам заставить заработать DNS на вашем сервере Linux, если у вас возник­ нут проблемы с доменом при интерпретации имен хостов или при выполнении переносов зон.

а

Система доменных имен спроектирована очень добротно, однако случайно могут появляться

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

Невозможность связи при использовании rndc Для начала рассмотрим благоприятную индикацию разрешения DNS. Ранее мы обсуждали, как, используя команду rndc status, показать текущий статус DNSсервера. Попробуем войти на сервер в качестве root-пользователя и выполнить следующую команду: serverl:-# rndc status number of zones: 6 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries In progress: 0 query logging Is OFF server Is up and running serverl:-#

Команда rndc зависит от разделенного файла ключа /etc/Ы nd/rndc. key для named, получающего доступ к его командам. Проблемы с этим файлом могут ме­ шать rndc посылать команды. Рассмотрим пример того, что мы можем увидеть, если файл ключа будет пропущен: serverl:-# rndc status rndc: neither /etc/blnd/rndc.conf nor /etc/blnd/rndc.key was found serverl:-#

С помощью следующей команды мы можем установить, что происходит потеря файла: serverl:-# Is -1 /etc/blnd/rndc.key Is: /etc/blnd/rndc.key: No such file or directory

Мы можем исправить проблему, изменив этот файл так же, как это делала ини­ циализация BIND:

serverl:-# rndc-confgen -а serverl:-# Is -1 /etc/bind/rndc.key -rw-------- 1 root bind 77 Jul 19 22:38 /etc/blnd/rndc.key serverl:-# Поскольку у named нет этого нового ключа, сейчас мы должны завершить про­ цесс named и вновь запустить его. Для этого мы выполним системную команду

82

Глава 3. Система доменных имен

kl 11 а 11, принимающую полное имя пути программы named. Для остановки named настолько аккуратно, насколько это возможно, мы выполним две команды к 111 all с интервалом в несколько секунд между ними, а затем перезапустим named.

served:-# kill all -TERM /usr/sbin/named served:-# killall -KILL /usr/sbin/named /usr/sbin/named: no process killed serverl:-# /etc/init.d/bind9 start Starting domain name service: named. serverl:-# rndc status number of zones: 6 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries In progress: 0 query logging Is OFF server Is up and running serverl:-#

named запускается, но не интерпретирует имена Теперь рассмотрим ситуации, в которых named работает неправильно. Неправильно расположенные файлы BIND часто вызывают проблемы, особенно в средах chroot, где эти файлы расположены в изолированной директории. Если named запускается нормально, но не загружает некоторые файлы зон, то их может не быть в изолированной директории. Вы должны просмотреть файл /var/1 og/sysl од, чтобы узнать, тот ли это случай. Рассмотрим пример из журнала: starting BIND 9.2.4 -u bind -t /var/llb/named using 1 CPU loading configuration from '/etc/blnd/named.conf' listening on IPv4 Interface lo, 127.0.0.1#53 listening on IPv4 Interface ethO. 70.253.158.42#53 command channel listening on 127.0.0.1#953 command channel listening on ::1#953 running

Журнал показывает, что BIND запустился нормально, но в нем нет строк, указывающих, что были загружены файлы зон. Поскольку named выполняется в окружении chroot по адресу /var/И b/named, он будет выглядеть для всех файлов относящимся к этой директории. Действительно, он читает файл /var/11 b/named/ etc/Ы nd/named. conf, чтобы найти список зон для загрузки. Каждый из этих файлов зон должен относиться к директории /var/llb/named. Другая распространенная ошибка — это отказ соединения, включающего rndc во время перезагрузки или перезапуска сервера имен:

# /etc/init.d/ bind9 reload Stopping named: rndc: connect failed: connection refused [OK] Starting named: [OK]

Устранение ошибок BIND

83

Подобные ошибки могут также появляться в результате работы BIND в окру­ жении chroot, если один или несколько файлов изолированной директории про­ пущены. Вы можете проверить некоторые существенные файлы, чтобы убедиться, что они находятся в верных местах:

# Is -1 /var/lib/named/etc/bind/named.conf -rw-r--r-- 1 root bind 1611 2006-09-07 12:21 /var/1ib/named/etc/bind/named.conf # Is /var/1ib/named/etc/blnd/ db.O db.local named.conf.local pri.centralsoft.org db.127 db.root named.conf.options pr1.opensourcetoday.org db.255 named.conf prl .156.18.67.1n-addr.arpa rndc.key db.empty named.conf- prl.156.18.67.1n-addr.arpa- zones.rfcl918 # Если эти файлы не существуют, то окружение chroot настроено неправильно или не полностью. Вернитесь к разделу «Настройка сервера DNS» в начале этой главы и внимательно следуйте инструкциям, чтобы обеспечить правильное место­ положение всех файлов. Как только решите проблему, вы должны остановить и перезапустить named для ввода команды rndc, чтобы получить доступ на работающий сервер. Используйте последовательность команд к 111 а 11 так, как это описано в предыдущем разделе:

served:-# kill all -TERM /usr/sbin/named served:-# kill all -KILL /usr/sbin/named /usr/sbin/named: no process killed served:-# /etc/init.d/bind9 start Starting domain name service: named, served:-# Далее проверьте свой файл /var/Тog/sysl од, чтобы определить, загружены ли файлы зоны. Вы должны увидеть что-то вроде этого кода: starting BIND 9.2.4 -u bind -t /var/lib/named using 1 CPU loading configuration from '/etc/bind/named.conf' listening on IPv4 interface lo, 127.0.0.1#53 listening on IPv4 Interface ethO, 70.253.158.42#53 command channel listening on 127.0.0.1#953 command channel listening on ::1#953 zone 0.0.127.in-addr.arpa/IN: loaded serial 1 zone 158.253.70.1n-addr.arpa/IN: loaded serial 2006070401 zone centralsoft.org/IN: loaded serial 2006070502 zone supportcall.org/IN: loaded serial 2006062704 running

Хосты не распознаются Следующий шаг проверки корректной работы DNS состоит в том, чтобы убедиться, что на запросы на ваши имена хостов даются правильные ответы. Во-первых, вы должны удостовериться, что файл /etc/resol v. conf перечисляет ваши серверы имен с правильными адресами. Большинство программ используют адреса из данного файла для определения того, на каком сервере делать запрос и в каком порядке:

84

Глава 3. Система доменных имен

serverl:-# cat /etc/resolv.conf search centralsoft.org nameserver 70.253.158.42 nameserver 70.253.158.45 serverl:-# Команда host осуществляет простой DNS-запрос, используя серверы, перечис­ ленные в файле /etc/resolv.conf. Она выбирает желаемый вами хост для поиска аргумента и необязательного второго аргумента, делает команду-запрос к опреде­ ленному серверу имен. Рассмотрим примеры команды host и ее результатов: serverl:-# host www.centralsoft.org www.centralsoft.org has address 70.253.158.42 server1:-# host www.centralsoft.org server2.centralsoft.org Using domain server: Name: serverl.centralsoft.org Address: 70.253.158.45#53 Aliases: www.centralsoft.org has address 70.253.158.42 serverl:-#

Альтернативой для host является команда dig, которая более сложна, но дает более подробные ответы. Кроме того, она содержит больше параметров, позволя­ ющих делать конкретные запросы. Вывод из команды dig размечается в синтаксисе файла зоны. Это удобно, по­ скольку, один раз выучив, как размечаются записи в файле зоны, вы можете легко понимать все детали этих записей в выводе dig. Команда dig также представляет некоторую дополнительную информацию о результатах запроса в форме коммен­ тариев зоны, начинающихся с символа ;. Посмотрим на результат команды di g. Многие строки вывода di g очень длинны и не помещаются в формат этой книги. В приведенном ниже листинге они пере­ носятся на следующую строку. Вы должны увидеть сходные результаты, запустив эту команду в своей сессии оболочки: serverl:-# dig www.centralsoft.org а

; «» DiG 9.2.4 «» www. central soft .org a ;; global options: printcmd ;: Got answer: ;; -»HEADER«- opcode: QUERY, status: NOERROR, Id: 1633 ;; flags: qr aa rd ra; QUERY: 1. ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: A IN ;www.centralsoft.org . ;; ANSWER SECTION: A 70.253.158.42 86400 IN www.centralsoft.org. ;; AUTHORITY SECTION: NS serverl.central soft. org 86400 IN centralsoft.org. NS server2.central soft.org 86400 IN centralsoft.org. :: ADDITIONAL SECTION: A 70.253.158.42 serverl.central soft.org . 86400 IN A 70.253.158.45 server2.central soft.org . 86400 IN :: Query time: 1 msec :: SERVER: 70.253.158.42#53(70.253.158.42)

Устранение ошибок BIND

85

;; WHEN: Mon JuJ 17 23:30:51 2006 MSG SIZE rcvd: 129 served:-# Первая часть кода обозначает различные статусные коды и флажки. Обратите особое внимание на значение параметра status в четвертой строке. В этом примере оно равно NOERROR. Любое другое значение свидетельствует о какой-то проблеме. Точные данные зоны можно разбить на четыре раздела. О QUESTION — этот раздел детализирует запрос как таковой. Он отображается как комментарий, поскольку не является чем-либо, что должно содержаться в фай­ ле зоны. О ANSWER — данный раздел содержит точные результаты, полученные по запросу. Здесь будет показан запрос отдельных записей, если это доступно, или всех за­ писей, если был использован особый тип записи запроса any. О AUTHORITY — в этом разделе определяются официальные серверы имен для зоны, для которой пришел ответ. О ADDITIONAL — здесь сообщаются адреса некоторых или всех имен предыдущих разделов, чтобы избавить вас от дополнительных запросов этой информации. Теперь посмотрим, что мы получим, если была допущена ошибка. В предыду­ щем примере использовалось действительное имя веб-сервера. На этот раз мы сде­ лаем запрос на имя FTP-сервера, который мы не конфигурировали в своем файле зоны:

served:-# dig ftp.centralsoft.org а

: «» DIG 9.2.4 «» ftp.central soft .org a global options: printcmd :: Got answer: -»HEADER«- opcode: QUERY, status: NXDOMAIN. id: 6531 :: flags: qr aa rd ra: QUERY: 1. ANSWER: 0. AUTHORITY: 1. ADDITIONAL: 0 ;; QUESTION SECTION: ; ftp.central soft.org. IN A AUTHORITY SECTION: centralsoft.org. 86400 IN SOA served, central soft. org. admin. centralsoft.org. 2006070502 28800 7200 604800 86400 : : Query time: 1 msec ;; SERVER: 70.253.158.42#53(70.253.158.42) ;; WHEN: Mon Jul 17 23:30:59 2006 ;; MSG SIZE rcvd: 87 served:-#

Заметьте, что статус запроса — NXDOMAIN, который, по существу, означает «Нет такого доменного имени». Если вы пропустите или неправильно запишете имя хоста в своем файле зоны, то получите эту ошибку. Другой тип ошибки, которую вы можете увидеть при использовании dig, про­ является, если доменное имя делегировано вашему серверу имен, но этот домен не конфигурирован на сервере либо загрузить его не удается. Эта ошибка возвращает статус SERVFAIL. Если вы видите эту ошибку на одном из своих доменов, то должны добавить домен в свой файл named. conf и убедиться, что это верный файл зоны для данного домена. Если ошибка повторяется и после того, как вы проделали эти шаги,

86

Глава 3. Система доменных имен

проверьте файл /var/log/syslод на наличие любых сообщений о том, что зона не загрузилась. Рассмотрим эту проблему с доменным именем, которое зарегистри­ ровано, но сейчас не используется: served:-# dig linhelp.org а

: «» DIG 9.2.4 «» linhelp.org а ;; global options: printcmd :: Got answer: ;; -»HEADER«- opcode: QUERY, status: SERVFAIL, id: 29949 :: flags: qr rd ra; QUERY: 1. ANSWER: 0. AUTHORITY: 0. ADDITIONAL: 0 ;; QUESTION SECTION: :11nhelp.org. IN A :: Query time: 2 msec :: SERVER: 70.253.158.42#53(70.253.158.42) :: WHEN: Mon Jul 17 23:47:14 2006 :: MSG SIZE rcvd: 37 served:-#

Что дальше Только что вы познакомились с основами DNS и BIND. Администраторы в малом и среднем бизнесе могут посчитать, что информация, предложенная в этой гла­ ве, — это все, что им требуется, но администраторам систем больших предприятий, скорее всего, придется столкнуться с вещами гораздо более сложными, чем те, ко­ торые могут быть описаны в одной-единственной главе. Есть несколько книг, которые могут обеспечить значительно более подробную информацию для администраторов больших предприятий и администраторов DNS. Среди них — книги DNS and BIND Крикета Лью (Cricket Liu) и Пола Албитца (Paul Albitz) (издательство O’Reilly), Pro DNS and BIND Рона Эйтшсона (Ron Aitchison) (издательство Apress) и DNS in Action: A Detailed and Practical Guide to DNS Implementation, Configuration, and Administration Л. Досталека (L. Dostalek) и А. Каблеовы (A. Kableova) (издательство Packt). Теперь, когда у вас есть работающие серверы имен, отвечающие на запросы и страхуемые вторичными, или slave-серверами, в следующей главе вы можете приступить к установке приложения для веб-сервиса. Новое приложение будет использовать службы, которые вы настроили в главе 2. Одно из приложений, на­ зываемое ISPConfig, будучи установленным и запущенным в работу, даст вам пример полностью обслуживаемого сайта. Далее мы начнем исследование адми­ нистрирования сложного ряда служб Linux, которые можно найти в Интернете.

Подготовка оборудования для работы в Интернете Одно из самых замечательных достоинств системы Linux — гибкость. Коммерче­ ские компании, например Cisco, спрятали Linux за очень простыми интерфейсами, чтобы сделать систему маршрутизации ссылок и продукты понятными пользова­ телю. Мы тоже можем это сделать. ISPConfig (http://ispconfig.org), дружественный пользователю проект Linux, вы­ пущенный под лицензией свободного программного обеспечения (BSD), позволяет строить многофункциональный рабочий интернет-сервер на основе одного-единственного скачиваемого приложения. Установив его, вы получите инструмент, ко­ торый поможет вам конфигурировать и легко поддерживать сервер, позволяющий управлять сайтами, оказывать услуги по доменным именам, пользоваться пере­ сылкой электронной почты и файлов, добавлять пользователей, администраторов и других лиц, которые могут получить доступ к системе для решения различных административных задач. Кроме того, вы сможете выполнять все эти администра­ тивные задачи с графического интерфейса. Мы выбрали ISPConfig в первую очередь потому, что этот инструмент позво­ ляет эксплуатировать мощные серверные приложения в Linux без ущерба для про­ изводительности или гибкости. Отметим его особенности. О ISPConfig использует стандартные демоны, имеющиеся в вариациях Linux. Мы будем использовать Apache для обслуживания сайтов, Postfix для элек­ тронной почты, ProFTPD для FTP, BIND для DNS и MySQL в качестве ре­ зервной базы данных. О Инсталляция ISPConfig автоматически конфигурирует различные компоненты сервера. О Пакеты, участвующие в работе ISPConfig, совместимы с наиболее доступными вариантами Linux. О Могут использоваться стандартные пакеты дистрибутива. О Поддержку для каждой из составляющих частей можно найти в Интернете. О Техническая группа ISPConfig оказывает онлайн-поддержку по всему прило­ жению.

88

Глава 4. Подготовка оборудования для работы в Интернете

После прочтения этой главы вы получите развернутое представление о том, что включается в предоставление различных услуг, обеспечиваемых и выполня­ емых сервером. Вы также научитесь определять, позволяют ли вам настройки ис­ пользовать визуальную панель администрирования вместо интерфейса командной строки. Сама по себе программа ISPConfig не предоставляет интерфейса командной строки. Вместо этого она позволяет управлять сервером через сетевой админист­ ративный интерфейс, или панель, описанную ниже в этой главе. Сначала вам при­ дется выполнить кое-какие действия в командной строке, настраивая ISPConfig так, чтобы она смогла инсталлировать все остальное позже, а далее мы полностью сосредоточимся на визуальном интерфейсе. Панель веб-приложения ISPConfig упрощает выполнение многих админист­ ративных задач Linux, но важно знать, как использовать стандартные утилиты командной строки для достижения одних и тех же результатов. Мы обсудим эти темы в последующих главах. Вы не будете привязаны к ISPConfig: если решите обходиться без нее, вы также узнаете, как это делать.

Установка ISPConfig Разработчиками ISPConfig являются Тиль Брем и Фалько Тиме (компания Projekt­ farm GmbH). Первоначально они продавали приложение как патентованную сис­ тему, которую раскручивали на сайте http://42go.de. Сейчас вы можете скачать приложение с сайта http://sourceforge.net/projects/ispconfig . Проект конфигурирует следующие сервисы: О Httpd (виртуальные хосты, базирующиеся на домене и 1Р-адресе); О FTP; О BIND; О автоответчик POPS; О клиентские базы данных MySQL; О статистику вебалайзера; О квоты жесткого диска; О почтовые квоты; О ограничение трафика; О IP-адреса; О SSL; О SSI; О доступ к оболочке; О сканер почты (антивирус); О брандмауэр.

Системные требования Рассмотрим системные требования, которые действовали на момент создания этой книги.

Установка ISPConfig

89

Операционная система Linux (ядро 2.4 или выше с библиотекой glibc6). Поддерживаются следующие варианты: О CentOS 4.1,4.2,4.3 и 4.4; О Debian версии 3.0 или выше; О ядро Fedora от 1 до 6; О Mandrake Linux версии 8.1 или выше; О Mandriva2006n2007; О Red Hat Linux версии 7.3 или выше; О SUSE Linux версии 7.2 или выше; О Ubuntu от 5.04 до 6.10.

Комплектация Linux Специалисты по техническому обслуживанию проекта перечисляют специфиче­ ские компоненты вариантов Linux, которые должны быть установлены в вашей системе, прежде чем вы сможете инсталлировать ISPConfig. В их число входят: О веб-сервер Apache версии 1.3.12, 2.0.40 или выше; О BIND 8 или 9; О iptables или ipchains; О система управления базами данных MySQL; О OpenSSL и mod_ssl для создания виртуальных хостов SSL; О РНР 4.0.5 или выше как модуль Apache; О демон POP3/IMAP, поддерживающий традиционный формат почтового ящика UNIX (например, gnu-pop3d, qpopper, ipop3d, popa3d или vm-pop3d) либо фор­ мат maildir (например, Courier-Imap, Dovecot); О Procmail; О ProFTP как автономная версия или демон vsftpd как автономная версия службы Inetd/xlnetd/; О пакет quota; О Sendmail или Postfix. Важно понимать, что, прежде чем вы инсталлируете ISPConfig, эти серверы и пакеты должны быть уже установлены в вашей системе, как описано в главе 2. ISPConfig не поставляется вместе с этими инструментами, но требует, чтобы они уже существовали в системе. Преимущество такого подхода состоит в том, что вы сможете использовать имеющиеся по умолчанию пакеты вашего дистрибутива, а позже обновлять их, как если бы вы просто использовали инструментарий этого дистрибутива. Вы не должны компилировать эти сервисы из источников со спе­ цифическими условиями для использования с ISPConfig — это сделают пакеты, предоставляемые по умолчанию. ISPConfig настраивает две директории с файлами и подкаталогами, образу­ ющими панель приложения: /root/ispconflg и /home/admlspconflg. Вы можете деин­ сталлировать ISPConfig и вернуться к стандартному серверу с текстовой основой, запустив /root/1 spconf 1 g/uni nstal 1.

90

Глава 4. Подготовка оборудования для работы в Интернете

Специальные демоны ISPConfig

I I

В дополнение к управлению приложениями, которые вы уже установили в своей системе, ISPConfig поддерживает свои версии некоторых приложений для собственного использования. Вы можете найти исходные данные на этот счет в каталоге пакета i nstall_i spconfig/compi 1 e_aps. Эти резервные службы существуют для того, чтобы вы могли продолжить управление ISPConfig, даже если регулярные сервисы (такие как ваш общедоступный веб-сервер Apache) выйдут из строя. ISPConfig позволяет работать и с общедоступными, и с внутренними серверами, используя нестандартный порт для внутреннего сервера. Например, внутренний сервер ISPConfig Apache ожидает порт 81, а не порт 80, обычно используемый для варианта веб-сервера, на котором размещаются общедоступные сайты.

| | I | | | I I | I 1 |

После старта Как и многие пакеты Linux и UNIX, ISPConfig предлагается как набор файлов в комбинации с утилитой tar, результат действия которой часто называют тарболл1. Если вы щелкнете кнопкой мыши на ссылке Скачать по адресу http://sourceforge.net/ projects/ispconfig, то перейдете к зеркалу сайта SourceForge. ISPConfig содержится по адресу http://superb-west.dl.sourceforge.net/sourceforge/¡spconfig/ISPConfig-2.2.6.tar.gz. Вы можете просто выбрать ссылку Скачать для скачивания файла, но, поскольку файл достаточно большой, может быть полезно скопировать сам URL и вставить его в команду wget в окне вывода. Преимущество использования wget заключается в том, что вы легко можете вернуться в исходное состояние, если что-то помешает скачиванию. Если вы введете команду с параметром -с, то при сбое сможете возоб­ новить загрузку, а не начинать вновь. Если скачивание прерывается, просто пере­ запустите команду wget и возобновите загрузку в том месте, где она прервалась. В этой главе мы предлагаем вам начать с каталога системы, называемого /root. Вы можете скачать тарболл ISPConfig командой (в одну строку, заменив указан­ ный URL последней версией сайта SourceForge):

# wget -с http://superb-west.di.sourceforge.net/sourceforge/i spconfi g/ISPConfi g-2.2.6.tar.gz

Ваш терминал выдаст сообщение, похожее на следующее:

--16:20:48-- http ://superb-west.di.sourceforge.net/sourceforge/i spconf1g/ISPConfi g2.2.1.tar.gz => 'ISPConfig-2.2.1.tar.gz' Resol vi ng superb-west.dl.sourceforge.net... 209.160.59.253 Connecting to superb-west.dl.sourceforge.net1209.160.59.2531:80... connected. HTTP request sent, awaiting response... 200 OK Length: 26,633.490 (25M) [application/x-gzip] 242 [========> ] 6,533,049 252.80K/S ETA 01:32 i

Тарболл — формат для распространения исходного кода. — Примеч.ред.

91

Установка ISPConfig

Распакуйте архив ISPConfig такой командой:

# tar xvfz ISPConfig*.tar.gz В результате будет создан подкаталог installjspconfig. Перейдите в директорию /root/install Jspconfig. Проверьте файл dist.txt и посмотрите, подходят ли ука­ занные там значения вашему серверу Linux. Для Debian 3.1 значения в di st. txt выглядят примерно так: distjnit_scripts=/etc/init.d ## dist_runlevel=/etc ##

# debian31 # debian31

Файл содержит 19 дополнительных значений для Debian, которые здесь не пе­ речисляются. Если вы не обладаете значительным опытом в администрировании Linux и не очень знакомы с работой ISPConfig, придерживайтесь значений по умол­ чанию. Они должны работать, пока вы используете один из вариантов, перечис­ ленных в этой главе выше. Опытные администраторы могут менять значения, если формат файла сохраняется. Теперь начните установку. Запустите команду ./setup из командной строки. Установочный сценарий начнет с компилирования Apache с РНР, работающего на порте 81. Сначала вам будет предложено сменить язык: server2:-/installjspconfig # ./setup SuSE 10.0 Neuinstallation eines ISPConfig-Systems. / Installation of a new ISPConfig system. / Installation d'ISPConfig sur un nouveau systeme. Whlen Sie Ihre Sprache (deutsch/englisch/spanisch/franzsisch/italienisch/ niederlndisch/polnisch/schwedisch) : / Please choose your language (German/English/Spanish/French/Italian/ Dutch/Polish/Swedish): / Merci de choisir votre langue (Allemand/Anglais/Espagnol/ Francai s/Itali en/Nerlandai s/Polonai s/Sudoi s): 1) de 2) en 3) es 4) fr 5) it 6) nl 7) pl 8) se Ihre Wahl: / Your Choice: / Votre Choix:

Затем вы увидите предупреждающее сообщение: With the system installation, some system files are replaced where adjustments were made. This can lead to loss of entries in httpd.conf, named.conf as well as in the Sendmail configuration. Do you want to continue with the installation? [y/n] у Система отобразит лицензионное соглашение, которое вы должны прочитать и принять:

Do you accept the license? [y/n] у

92

Глава 4. Подготовка оборудования для работы в Интернете

Программа установки продолжит задавать вам вопросы, касающиеся настроек вашей системы (например, о почтовом клиенте, сервере FTP, веб-сервере, журна­ лах и т. д.). Поскольку вы уже установили пакеты, то должны суметь ответить на все вопросы. В ходе первой части установки сценарий спросит вас, в каком режиме вы хотите запустить инсталляцию. Выберите режим эксперта: 1) standard 2) expert Your Choice: 2

В режиме эксперта вам будут предложены дополнительные возможности вы­ бора, для которых ISPConfig в стандартном режиме определяет значения по умол­ чанию: When prompted for a default directory, you can choose any directory you like, but make sure it is on a partition with enough disk space for the web sites you plan to host. Furthermore, if you want to configure quotas with ISPConfig. make sure you enabled quotas for that partition as described in Chapter 2. If you want to enable suExec for web sites that are allowed to run Perl/CGI scripts, the directory should be within suExec's document root. On Debian and Fedora/Red Hat. suExec's default document root is /var/www, while on SUSE it's /srv/www. If you're enabling suExec. the document root is a good choice for the directory in which to put ISPConfig: ########## WEB SERVER ^1IIIIIIIIШIIII Checking for program httpd... /usr/sbin/httpd OK Checking the syntax of the httpd.conf... Syntax OK The syntax is ok! Web-Root: /home/www Is this correct? [y/n] n Web-Root: /var/www

S

suExec — это модуль веб-сервера, предназначенный для повышения безопасности, требу-

r.. ющий сценариев CGI, чтобы определенный пользователь мог владеть им и использовать его.

Здесь установка начинается с компилирования сервера Apache, который будет использоваться для предоставления веб-интерфейса ISPConfig на порте 81. Когда установка ISPConfig Apache завершится, вы увидите форму для составления сер­ тификата SSL. Программа установки попросит вас ввести некоторые значения. Вы можете принять значения по умолчанию или ввести свои собственные. Данные сертификата будут выглядеть примерно следующим образом:

SSL Certificate Generation Utility (mkcert.sh) Copyright (c) 1998-2000 Ralf S. Engelschall. All Rights Reserved. Generating custom certificate signed by own CA [CUSTOM]

STEP 0: Decide the signature algorithm used for certificates The generated X.509 certificates can contain either

Установка ISPConfig

93

RSA or DSA based ingredients. Select the one you want to use. Signature Algorithm ((R)SA or (D)SA) [R]: STEP 1: Generating RSA private key for CA (1024 bit) [ca.key] 1698765 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .................... ++++++ .............. ++++++ e is 65537 (0x10001)

STEP 2: Generating X.509 certificate signing request for CA [ca.csr] You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. 1. Country Name (2 letter code) [XY]: 2. State or Province Name (full name) [Snake Desert]: 3. Locality Name (e.g, city) [Snake Town]: 4. Organization Name (e.g, company) [Snake Oil, Ltd]: 5. Organizational Unit Name (e.g, section) [Certificate Authority] 6. Common Name (eg, CA name) [Snake Oil CA]: 7. Email Address (e.g, nameOFQDN) [caOsnakeoil.dom]: 8. Certificate Validity (days) [365]: STEP 3: Generating X.509 certificate for CA signed by itself [ca.crt] Certificate Version (1 or 3) [3]: Signature ok subject=/C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/OU=Certificate Authority/ CN=Snake Oil CA/[email protected] Getting Private key Verify: matching certificate & key modulus Verify: matching certificate signature .,/conf/ssl.crt/ca.crt: /C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/ OU=Certificate Authority/CN=Snake Oil CA/[email protected] error 18 at 0 depth lookup:self signed certificate OK

STEP 4: Generating RSA private key for SERVER (1024 bit) [server.key] 1698765 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus ............................................... ++++++ ......................++++++ e is 65537 (0x10001) STEP 5: Generating X.509 certificate signing request for SERVER [server.csr] You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value.

94 If 1. 2. 3. 4. 5. 6. 7. 8.

Глава 4. Подготовка оборудования для работы в Интернете

you enter '.1, the field will be left blank. (2 letter code) [XY]: Country Name ESnake Desert]: State or Province Name (full name) ESnake Town]: Locality Name (eg, city) Organization Name [Snake Oil, Ltd]: (eg, company) [Webserver Team]: Organizational Unit Name (eg, section) Common Name (eg, FQDN) [www.snakeoil,dom] (eg, name@fqdn) [www@snakeoil,dom] Email Address [365]: Certificate Validity (days)

STEP 6: Generating X.509 certificate signed by own CA [server.crt] Certificate Version (1 or 3) [3]: Signature ok subject=/C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/OU=Webserver Team/ CN=www. snakeoil.dom/[email protected] Getting CA Private Key Verify: matching certificate signature ../conf/ssl.crt/server.crt: OK

В шагах 7 и 8 процесса создания сертификата вас спросят, хотите ли вы сейчас зашифровать соответствующие ключи: STEP 7: Enrypting RSA private key of CA with a pass phrase for security [ca.key] The contents of the ca.key file (the generated private key) has to be kept secret. So we strongly recommend you to encrypt the server.key file with a Triple-DES cipher and a Pass Phrase. Encrypt the private key now? [Y/n]: n writing RSA key Enter PEM pass phrase: Verifying - Enter PEM pass phrase: Fine, you're using an encrypted private key.

STEP 8: Enrypting RSA private key of SERVER with a pass phrase for security [server, key] The contents of the server.key file (the generated private key) has to be kept secret. So we strongly recommend you to encrypt the server.key file with a Triple-DES cipher and a Pass Phrase. Encrypt the private key now? (Y/n): n What email address or URL should be used in the suspected-spam report text for users who want more information on your filter installation? (In particular, ISPs should change this to a local Postmaster contact) default text: [the administrator of that system]

Нажмите клавишу N при ответе на эти вопросы. В противном случае программа 18РСоп1^ всегда будет спрашивать у вас пароль, если вы захотите перезапустить ее. Иными словами, это означает невозможность перезапуска программы без вме­ шательства пользователя. Если компиляция не удастся, настройка остановится и все скомпилированные файлы удалятся. Сообщение об ошибке, которое вы должны получить, покажет при­ чину сбоя. В большинстве случаев имеет место пропуск заглавных файлов пакета.

Установка ISPConfig

95

Каковы бы ни были причины, просмотрите настройку своего сервера и решите проблему. Если директория install Jspconfig, несмотря на ошибку, не была удалена, удалите ее вручную. После этого вновь распакуйте источники ISPConfig, перейдите к новому катало­ гу installJspconfig и запустите команду . /setup. Вы не сможете установить ISPConfig дважды из одной и той же директории installJspconfig, если произойдут какие-либо ошибки. Похожим образом, если отсутствует любой из требуемых пакетов, процесс ин­ сталляции будет остановлен. Установите недостающий пакет, удалите директорию installJspconfig, снова распакуйте ISPConfig и перезапустите программу. Сценарий установки проверяет синтаксис имеющихся у вас файлов конфигу­ рации Apache. Ошибка вызовет остановку инсталляции ISPConfig. Если все условия выполнены, вы должны будете ввести некоторые значения во время установки:

Please Please Please Please Please Please Please

enter enter enter enter enter enter enter

your MySQL server: local host your MySQL user: root your MySQL password: Your MySQL password a name for the ISPConfig database: ispconfigdb the IP address of the ISPConfig web: 192.168.0.1 the host name: www the domain: xyz.de

Далее программа конфигурации спрашивает вас, какой протокол вы хотите ис­ пользовать. Выберите HTTP: Please select the protocol (http or https (SSL encryption)) to use to access the ISPConfig system: 1) HTTPS 2) HTTP Your Choice: 2 Вы увидите, как система выполнит последние сценарии и перезапустит неко­ торые службы:

Connected successfully to MySQL server Is: /etc/apache2/vhosts.d/*.conf: No such file or directory Restarting some services... which: no apachectl in (/sbin:/usr/sbin:/usr/local/sbin:/root/bin: /usr/1 ocal/Ы n :/bi n :/usr/bi n :/usr/XHR6/bi n :/usr/1 ocal/11 bexec) Shutting down mail service (Postfix) done Starting mail service (Postfix) done Shutting down mail service (Postfix) done Starting mail service (Postfix) done Shutting down ProFTPD Server: done Starting ProFTPD Server: - warning: "ProFTPD" address/port (70.253.158.45:21) already in use by "ProFTPD Default Installation" done Shutting down ProFTPD Server: done Starting ProFTPD Server: - warning: "ProFTPD" address/port (70.253.158.45:21) already in use by "ProFTPD Default Installation" done Starting ISPConfig system... /root/ispconfig/httpd/bin/apachectl startssl: httpd started ISPConfig system is now up and running!

96

Глава 4. Подготовка оборудования для работы в Интернете

Разработчики заканчивают установочный сценарий следующим образом: Congratulations! Your ISPConfig system is now Installed. If you had to install quota, please take the steps described in the installation manual. Otherwise your system is now available without reboot.

Здесь вы можете ввести IP-адрес своего сервера или доменное имя, за которым следует :81 в вашем браузере, для доступа к экрану приветствия ISPConfig,

Структура директории ISPConfig Как было указано выше, основная директория, настроенная ISPConfig, называет­ ся ispconfig и располагается в папке, где вы произвели сборку (/root в этой главе). Вы также найдете другую директорию в /home, называемую admispconfig. Каждая директория независимо содержит файлы, требуемые для запуска ISPConfig. Сначала рассмотрим директорию / root/ispconfig: -rwxr-xr-x -rwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r-drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwx-------

1 1 12 12 1 6 6 4 4 2 1

root root root root root root root root root root root

root root root root root root root root root root root

33660 9673 4096 4096 8 4096 4096 4096 4096 4096 9389

2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26 2006-04-26

12 12 09 12 13 09 10 12 12 12 12

28 28 55 28 54 50 00 28 28 28 28

cronolog cronosplit httpd isp .old_path_httpd_root openssl php scripts standard_cgis SV uninstall

В ней содержатся файлы конфигурации ISPConfig Apache, PHP и OpenSSL (для Apache, Postfix, Sendmail, BIND и т. д.). ISPConfig использует эти модели при запи­ си системных файлов конфигурации для настраиваемых служб. Вы также найдете здесь много классов РНР, обеспечивающих функции создания системных файлов конфигурации, то есть каталог / root/ i spconf i g содержит вычислительную машину ISPConfig. В директории /home/admispconfig вы увидите другой набор каталогов: -rwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x

1 8 2 1

admispconfig admispconfig 24 2006-04-26 12:28 admispconfigadmispconfig 4096 2006-04-26 13:53 admispconfig admispconfig 4096 2006-04-26 12:28 admispconfig admispconfig 176 2006-04-26 12:28

.forward ispconfig mailstats .procmailrc

Они содержат внешний интерфейс, то есть веб-интерфейс, а также некоторые инструменты, например SpamAssassin (http://spamassassin.apache.org) и ClamAV (http://www.clamav.net). Вы можете конфигурировать их с помощью ISPConfig для защиты от спама и вирусов.

Настройка сервера для работы с помощью ISPConfig Настройка сайта — это один из первых шагов после создания полностью функциони­ рующего интернет-сервера. В этом разделе мы рассмотрим все необходимые этапы.

Настройка сервера для работы с помощью ISPConfig

97

Если вы поинтересуетесь, почему мы сейчас не призываем вас посмотреть сайт ISPConfig

В

Г» и почитать справочное руководство, учтите следующее: разработчики ISPConfig написали свою пользовательскую документацию для сайтов клиентов хостинга ISP. Если вы рассчи­ тываете пользоваться ими только таким образом, мы рекомендуем почитать документацию по адресу http://ispconfig.org. В ином случае мы предложим вам план использования вашего сервера единственным системным администратором, который управляет безопасностью собственного сайта, его почтой и службами FTP.

ISPConfig попросит вас настроить клиента, который будет владеть одним или несколькими доменами в Интернете. В нашем примере мы настроим одного кли­ ента (одного из авторов этой книги), который будет владеть четырьмя доменами: О centralsoft.org; О linuxnewswire.org; О opensourcetoday.org; О tadelstein.com. Если вы рассмотрите содержание директории в /var/www, то увидите, как ISPCon­ fig настраивает домены: $ ls -а apache2-default sharedlp web2 web4 weballzer www.opensourcetoday.org localhost webl web3 www.centralsoft.org www.11nuxnewswire.org www.tadelste1n.com Сравните список этой директории со списком сайтов на рис. 4.1. Каждый сайт содержит каталоги. Директории www, чьи имена показывают домены (например, www.opensourcetoday.org), являются символьными ссылками к тому, что известно системе как webl, web2 и т. д.

Рис. 4.1. Интерфейс ISP Manager

98

Глава 4. Подготовка оборудования для работы в Интернете

На рис. 4.2 дано лучшее представление о списке доменов. Отметьте для себя, что на рис. 4.2 домен для каждой директории появляется в листинге командной строки. *SP Manager [expand collapse

admin $■■¿3 J Reseller Clients

fr tJ / Sites \... V/ Recycle Bin b—A centtalscft.org

linuxnewswire.org opensourcetoday.org tadelstein.com TomAdelstein

Рис. 4.2. Список доменов ISP Manager

Добавление клиентов и сайтов Для настройки клиента и доменов вы должны сначала войти в интерфейс ISPConfig. В браузере введите IP-адрес своего сервера, за которым следует порт ISPConfig :81 — в нашем случае http://70.253.158.45:81 (используйте https://, если во время установки вы выбрали HTTPS в качестве протокола ISPConfig). На экране входа (рис. 4.3) введите логин admin и пароль admin. Затем сразу же смените пароль на тот, который будете знать только вы. Для изменения пароля выберите на панели инструментов вкладку Tools и щелкните кнопкой мыши на пункте Change Password (рис. 4.4).

В Tools & Options Й-^1 General L Change Password | Change Language

Ö- J Data Export i... [7] Master data Backup Manager Backup —O Software Version

... Portscanner -R| Whois

Рис. 4.4. Меню Tools

Появится окно смены пароля, показанное на рис. 4.5, и вы сможете заполнить форму. Выйдите из программы и снова войдите под новым паролем. Прежде чем вы сможете настроить сайт, вы должны будете создать его владель­ ца. Выберите раздел ISP Manager. Вы увидите навигационное меню, похожее на то, что показано на рис. 4.6. Теперь рассмотрим, как мы создали клиента tadelstein и сайт linhelp. Щелкните кнопкой мыши на значке New client в разделе ISP Manager. Вы увидите окно, похожее на то, что представлено на рис. 4.7.

99

Настройка сервера для работы с помощью ISPConfig

Change Password old password:

New reseller New client

New site

Hostingplan New folder

Search

ISP Manager [expand collapse] admin

new password:

/

confirm new password: j

Reseller

I±l-£2/ ’Clients / Site5 Save |

Cancel ]

Рис. 4.5. Форма ISPConfig для изменения пароля

i—Re eye I e Bin eentralsoft.crg linhelp =... £1 tad elite in

Рис. 4.6. Раздел ISP Manager с добавленным доменом и клиентом

Рис. 4.7. Форма для ввода информации о клиенте

Введите необходимую информацию о клиенте. На рис. 4.8 показан пример за­ полнения формы. Обратите внимание, что мы использовали сайт Linhelp.org в ка­ честве названия компании. В левой части навигационного меню вы увидите новый значок в виде человечка с именем клиента рядом. Теперь вы можете настроить сайт. Просто выберите зна­ чок New site на панели инструментов — и увидите окно, как на рис. 4.9.

100

Глава 4. Подготовка оборудования для работы в Интернете

Рис. 4.8. Заполненная форма для административного клиента

Рис. 4.9. Форма, используемая для создания сайта linhelp.org

Дайте сайту имя и IP-адрес и создайте запись DNS. Обратите также внимание на вкладки в верхней части формы, где вы вводите имя сайта: О Basis; О User & Email;

Настройка сервера для работы с помощью ISPConfig

101

О О О О

Co-Domains; Statistics; Options; Invoice. Каждая из этих вкладок обеспечивает различные функции конфигурирования и управления. На рис. 4.9 не показаны все функции вкладки Basis. Вы также найдете несколько других параметров, которые может указать администратор сайта. Для нашего сай­ та мы обеспечиваем доступ к оболочке, создание базы данных, FTP и параметры логина (рис. 4.10).

Рис. 4.10. Параметры сайта

Обратите внимание также на то, что на рис. 4.10 в поле Anon. FTP МВ значение по умолчанию равно -1. Это позволяет использовать неограниченное дисковое FTP-пространство. Вы можете обеспечить такой доступ, если создаете зеркало загруженного сайта; в другом случае предпочтительнее установить лимит, чтобы любой пользователь мог закачивать достаточно данных, ограничивая дисковое пространство, используемое другими службами. К этому времени у вас должен быть пригодный для использования сайт. Простой способ добавления страниц — это применение FTP-клиента, например графиче­ ского приложения gFTP для переноса сайта, который вы уже построили в папке на своем Рабочем столе, как показано на рис. 4.11. Теперь браузер, направленный на http://linhelp.org, отображает нашу страницу 1ndex.html (рис.4.12).

102

Глава 4. Подготовка оборудования для работы в Интернете

Рис. 4.11. Использование дПР для переноса файлов в корневую директорию linhelp.org

Рис. 4.12. Сайт Linhelp.org в браузере Firefox

Настройка сервера для работы с помощью ISPConfig

103

Сейчас мы имеем простой, но функциональный сайт. Посмотрите на рис. 4.13, чтобы получить понятие о том, что же мы настроили. ISPConfig использует иерар­ хическую модель с корнем /var/www/webl/web для порта 80. В каждой директории, которую вы создаете по этому пути, Apache создает новую ветку, куда вы може­ те помещать страницы. По умолчанию, когда браузер запрашивает директорию, Apache ищет для отображения файл с именем index.html. Если вы не обеспечите его наличия, то будут отображены имена корневых каталогов и файлов.

На рис. 4.13 приведен пример корневого каталога сайта. Домашняя страница отображается всякий раз, когда браузер указывает имя директории, поскольку она имеет имя по умолчанию. Домашняя страница содержит ссылки на другие страницы сайта. Примерная диаграмма на рис. 4.13 может считаться функциональной схемой. Точный код домашней страницы будет выглядеть примерно так:

104 Support



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

Управление пользователями и электронной почтой Одна из основных задач системного администрирования Linux — управление поль­ зователями и их учетными записями. Вы можете делать это, используя графиче­ ский интерфейс ISPConfig. Когда вы настроите свои домены, выбор одного из них в разделе ISP Manager па­ нели инструментов приведет к открытию формы сайта ISP, показанной на рис. 4.9. Давайте вернемся и снова ее рассмотрим. В форме имеется шесть вкладок. Вторая вкладка называется User & Email. С ее помощью вы можете добавлять новых пользователей и управлять существующи­ ми. Если вы нажмете кнопку New, то увидите другую форму (рис. 4.14).

Рис. 4.14. Пользовательская форма ISP

В этой форме вы можете вводить данные о новом пользователе и лимитировать объем памяти. Значение -1 дает неограниченный объем, но вы можете управлять квотами любым удобным для вас образом. На вкладке Advanced Settings (рис. 4.15) вы можете определить возможность пересылки для разрешения электронной почте, отправленной пользователю, быть переадресованной другому человеку. Иными словами, у пользователя уже есть основной почтовый адрес, который он использует, а вы можете применять воз­ можность переадресации для отправки почты этой учетной записи.

105

Настройка сервера для работы с помощью ISPConfîg

ISP User

User & Email

Advanced Settings

Spamfilter & Antivirus

Forward:

Э Hint one email per line.

Keep Copy:

гa

Email Alias:

a Hint: one alias periine.

catchAII-Email:

MailScan:

1 й гa

Рис. 4.15. Дополнительные параметры почты

Рассмотрим другие настройки на этой вкладке. О Keep Сору — установите этот флажок, если у вас работает переадресация почты, сохраняющая копии всех сообщений, входящих на локальный почтовый ящик пользователя. Это полезно, если переадресованные письма не приходят по назначенному адресу (из-за спам-фильтра или других особенностей). О Email Alias — если вы не хотите предавать огласке почтовый адрес пользо­ вателя, посетители сайта могут отправлять почту на общее имя, например [email protected] или [email protected]. Вы можете обеспечить это, создав псевдоним учетной записи. О catchAII-Email — установив этот флажок, вы укажете программе перенаправ­ лять все письма с заданного почтового ящика, адресованные несуществующей пользовательской учетной записи. Иногда люди пишут на часто используемые адреса, например [email protected] или [email protected] , не прове­ ряя, существуют ли они. Вы можете собирать все такие сообщения на одну учетную запись для каждого сайта. О MailScan — если хотите сканировать на сервере почту на наличие вирусов или кода JavaScript, установите этот флажок. О Autoresponder — позволяет автоматически отвечать на входящие электронные письма определенного уникального пользователя, когда он отсутствует в офисе в течение длительного периода.

106

Глава 4. Подготовка оборудования для работы в Интернете

Перейдя на вкладку Spamfilter & Antivirus, показанную на рис. 4.16, вы можете разработать стратегию борьбы со спамом. Активируйте спам-фильтр для учетной записи, тогда вы сможете определить поведение фильтра. ISP User

User &. email

Advanced Settings

Spamfilter:

P

Antivirus:

17

Spam Strategy:

Spamfilter & Antivirus

Э

{accept

rf

Spam Hits:

5Ï0

Rewrite Subject

[7

Subject

***SPAM»**

| Save |

| Cancel

|

| Delete |

Рис. 4.16. Вкладка спам-фильтра и антивируса

Если вы выберете стратегию приема спама, то разрешите ему попадать в поч­ товый ящик пользователя и заставите почтовый клиент (МТА) сортировать спам. Многие администраторы изначально предпочитают эту стратегию, пока у пользо­ вателя не накопится база почты, квалифицированной как спам. После этого поль­ зователь может включить режим удаления, при котором все письма, обозначенные как спам, удаляются с сервера. Теперь рассмотрим другие настройки для борьбы со спамом. О Spam Hits — спам-фильтр проводит с входящей почтой ряд тестов и выставляет за них очки. Если сумма очков достигает значения, указанного в данном поле, либо превышает его, письмо квалифицируется как спам и обрабатывается в со­ ответствии с пользовательской стратегией борьбы со спамом. О Rewrite Subject — установка этого флажка в режиме приема означает, что стро­ ка темы в каждом письме, квалифицированном как спам, получает идентифи­ кационный префикс (по умолчанию ***SPAM***). Это позволяет пользователю сортировать почту по строке Тема. Для того чтобы дать пользователю возможность самостоятельно вносить изме­ нения в свою почтовую учетную запись (включая пароль, спам-фильтр и настройки антивируса), вы должны установить флажок Mailuser Login для этого пользователя на вкладке Basis формы сайта ISP (см. рис. 4.10). Для внесения изменений просто войдите на сайт под простым логином, например http://centralsoft.org:81/mailuser. Пользовательские, почтовые, домашние и общедоступные веб-директории. Каждый пользователь домена в ISPConfig имеет собственную домашнюю дирек­ торию в папке users. Если на домене разрешен FTP-доступ, пользователи попадают в свои домашние директории, входя на FTP. Итак, каждая домашняя директория

Настройка сервера для работы с помощью ISPConfig

107

содержит папку web, в которую пользователь может попасть, посетив гиперссылку вида http://www.centralsoft.org/~user или http://www.centralsoft.org/users/user. На рис. 4.17 показана структура пользовательской домашней директории, соз­ данной нами на сайте centralsoft.org.

Рис. 4.17. Вид пользовательской директории в браузере

Конфигурирование почтового клиента На данный момент вы должны понимать принципы настройки сайта, создания пользовательской учетной записи и обращения с электронной почтой. Но вам, возможно, придется помогать пользователям конфигурировать почтовый клиент, указывая входящий и исходящий почтовые серверы. В нашей системе ISPConfig использует serverl.centralsoft.org одновременно как исходящий сервер SMTP и вхо­ дящий сервер POP3/IMAP. С помощью наиболее современных почтовых клиентов вы можете использо­ вать Transport Layer Security (TLS) — протокол безопасности на транспортном уровне. По возможности выбирайте TLS, конфигурируя сервер исходящей почты. Поскольку большинство почтовых клиентов используют на своих серверах ис­ ходящей почты SMTP, вы можете выбрать протокол TLS, если ваш ISP также ее использует. Для получения почты настройте сервер входящей почты (мы использовали serverl.centralsoft.org) и выберите POP3 или IMAP. Используйте свое системное имя (например, webl.adelstein) и укажите почтовый адрес как псевдоним (напри­ мер, [email protected]). Если вы получаете сообщение об ошибке -ERR Unknown AUTHORIZATION state command,

Й

г. пытаясь выбрать POP3, то, возможно, вы забыли активировать кодировку SSL/TLS. Перекон­ фигурируйте почтовый клиент РОРЗ-over-SSL и попытайтесь снова.

108

Глава 4. Подготовка оборудования для работы в Интернете

Обеспечение безопасности веб-сервера Linux В современной деловой среде часто происходят неожиданные события. Злоумыш­ ленники просматривают IP-адреса для использования их в своих интересах. Они применяют изощренные варианты подбора паролей, пытаясь получить root-доступ к серверу, чтобы иметь возможность передавать спам, вирусы и червей. Ситуации, с которыми сталкиваются системные администраторы, получаются из уникальных комбинаций переменных факторов, а их нельзя точно и уверенно контролировать. Следовательно, администратор должен научиться быстро адаптироваться к новым (часто враждебным) ситуациям. Есть два способа адаптации. Во-первых, если вы уверены, что понимаете ситуа­ цию на продвинутом уровне, то можете принять превентивные меры. Мы будем называть это предчувствием. В другом случае вам придется адаптироваться к ситуации, разворачивающейся в настоящий момент, не имея времени на подготовку. Это включает импровиза­ цию. Чтобы в совершенстве адаптироваться, вы должны уметь и предчувствовать, и импровизировать.

Роль демона, наблюдающего за демонами Не имеет значения, насколько тщательно вы работаете над безопасностью своего веб-сервера, — по какой-нибудь непредвиденной комбинации причин что-то в ва­ шей системе может выйти из строя. В совершенном мире вы могли бы следить за любой службой и система сразу же предупреждала бы вас о любых неполадках. Но пока мы живем в мире, где наши ожидания оправдываются далеко не всегда. Представьте, что вы установили свой сервер у провайдера в 250 километрах от своей операционной базы. Если сервер вышел из строя, кто-то должен будет по­ звонить провайдеру и лично воспользоваться одной из его услуг, чтобы остановить серверный блок и вновь запустить его в работу. Лицо, осуществляющее на провай­ дере техническую поддержку, не обязательно будет на месте, таким образом, вам придется долго ожидать, пока важное приложение будет находиться в нерабочем виде. На большом предприятии вы можете ощутить себя таким же изолированным, как и ваш сервер на расстоянии 250 километров. Операторы дата-центра редко позволяют входить в серверное помещение даже системным администраторам, поэтому, независимо от местоположения, администратору важно знать, как уда­ ленно управлять своей системой. Демон наблюдения за демонами (DMD) — это утилита, которая наблюдает за вашими службами и процессами за вас и автоматически пытается перезапустить их при выходе из строя. Если служба выходит из строя, то, как правило, необхо­ димо войти на сервер и открыть панель для выполнения команды /etc/1 nl t. d/ mysql restart. Однако DMD может выполнить эту команду и без вмешательства с вашей стороны. Если служба перезапустится, то проблема исчерпана. Если она не перезапустит­ ся успешно, то DMD попытается выполнить команду установленное количество

Обеспечение безопасности веб-сервера Linux

109

раз (скажем, пять), а затем свяжется с вами посредством текстового сообщения, электронного письма или другого вида связи, чтобы предупредить вас о проблеме. Здесь вы должны будете попытаться выяснить, почему служба вышла из строя. ЭМБ работает как любая другая служба вашей системы. Он имеет файл кон­ фигурации, позволяющий выбирать параметры, наиболее соответствующие ва­ шим требованиям. Вы можете запускать его автоматически во время загрузки или вручную. В следующем разделе мы настроим ОМЭ под названием топй, имеющий про­ стой веб-интерфейс, показанный на рис. 4.18.

Рис. 4.18. Веб-интерфейс демона monit, работающего на centralsoft.org

Обратите внимание на пять процессов под наблюдением. На рис. 4.19 мы по­ дробно показали работу одного из системных процессов, в частности sshd. На рис. 4.19 статус sshd показывает, что процесс находится в рабочем состоянии, а система за ним наблюдает. В третьей строке снизу вы можете увидеть инструкции насчет того, что делать, если sshd выйдет из строя:

If failed localhost:22 [SSH] with timeout 5 seconds then restart else If recovered then alert

110

Глава 4. Подготовка оборудования для работы в Интернете

Process status Parameter

Value

Name

sshd

Pld file

/var/run/sshd.pid

Status

Monitoring mode

active

Monitoring status

Start program

/etc/init.d/ssh start

Stop program

/etc/init.d/ssh stop

Check service

every 1 cycle

Timeout

If 5 restart within 5 cycles then unmonltor else if recovered then alert

Data collected

Sun Apr 30 15:49:22 2006

Port Response time

0.003s to localhost22 [SSH]

Process id

2343

Parent process Id

1

Process uptime

77d 17h 58m

CPU usage

0.0%

Memory usage

0.3%[1504kB]

Children

0

Total CPU usage (ind. children)

0.0%

Total memory usage (incl. children)

0.3% [1504kB]

Port

If failed Iocalhost22 [SSH] with timeout 5 seconds then restart else if recovered then alert

Pid

If changed then alert

Ppld

If changed then alert

Start service |

Stop service |

Restart service |

Disable monitoring |

Рис. 4.19. Сведения о процессе sshd

Этот алгоритм просто перезапускает вышедший из строя процесс и посылает сообщение в случае его успешного запуска. Наконец, monit предлагает четыре кнопки внизу страницы для пользователь­ ского вмешательства вручную. Теперь рассмотрим, как работает система.

Установка и настройка monit Чтобы установить monit, вы можете либо использовать менеджер системных па­ кетов Linux, либо загрузить тарболл с сайта http://www.tildeslash.com/monit. Если вы пользуетесь настроенным дистрибутивом Debian, описанным в главе 2, то просто введите следующую команду: # apt-get install monit После того как вы установите monit, исправьте файл /etc/monit/monltrc. Файл, созданный во время инсталляции, содержит много примеров. Кроме того, вы мо­ жете найти много примеров конфигурации по адресу http://www.tildeslash.com/monit/ doc/examples.php. В нашем случае мы хотим сделать следующее: О ввести в использование веб-интерфейс monit на порту 2812; О наблюдать за процессами proftpd, sshd, mysql, apache и postfix; О создать веб-интерфейс SSL (https), куда мы сможем войти под именем admin; О приказать monit посылать предупреждения по электронной почте на адрес root@localhost.

Обеспечение безопасности веб-сервера Linux

111

Наш файл конфигурации /etc/monit/monitrc выглядит так:

daemon 60 log file syslog facility log_daemon mail server local host mail-format { from: monit0serverl.centralsoft.org } alert root@localhost httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin: test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/niysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/apache2.pid group www start program = "/etc/1nit.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed host www.centralsoft.org port 80 protocol http and request "/monit/token" then restart if cpu is greater than 60Я for 2 cycles then alert if cpu > 80X for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout

set set set set set set

Необходимые задачи и параметры описаны в документации по monit на сайте http://www.tildeslash.com/monit/doc/manual.php . В разделе apache конфигурации monit вы увидите следующую задачу: if failed host www.centralsoft.org port 80 protocol http and request "/monit/token" then restart

Это значит, что monit пытается установить соединение с сайтом www.centralsoft.org на порту 80 и получить доступ к файлу /monit/token. Поскольку корень документации

112

Глава 4. Подготовка оборудования для работы в Интернете

сайта — это /var/www/www.centralsoft.org/web, имя файла расширяется до /var/www/ www.centralsoft.org/web/monit/token. Если monit не достиг цели, то это означает, что Apache не работает, и monit пытается его перезапустить. Теперь мы должны создать файл /var/www/www.centralsoft.org/web/monit/token и записать в него произвольную строку:

# mkdir /var/www/www.centralsoft.org/web/monit # echo "hello" > /var/www/www.centralsoft.org/web/monit/token

Вы можете выполнить в своей системе похожую процедуру. Далее создайте директорию для хранения файла сертификата pem (/var/certs/ monit. рет), требуемую для веб-интерфейса monit в кодировке SSL. # mkdir /var/certs # cd /var/certs Вам понадобится файл конфигурации OpenSSL для создания файла сертифи­ ката /var/certs/monit. pem, который должен выглядеть так:

# create RSA certs - Server RANDFILE = ./openssl.rnd [ req ] default_bits = 1024 encrypt_key = yes distinguishedjiame = req_dn x509_extensions = cert_type [ req_dn ] countryName = Country Name (2 letter code) countryName_default = МО stateOrProvi nceName = State or Province Name (full name) stateOrProvi nceName_defaul t = Monitoria localityName = Locality Name (eg, city) 1 ocali tyName_default = Monittown organizationName = Organization Name (eg, company) organi zationName_defaul t = Monit Inc. organi zati onalUni tName = Organizational Unit Name (eg, section) organizational UnitName_default = Dept, of Monitoring Technologies commonName = Common Name (FQDN of your server) commonName_default = server.monit.mo emailAddress = Email Address ema i1 Add res s_de fa u11 = [email protected] [ cert-type ] nsCertType = server Теперь создайте сертификат:

# openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out \ /var/certs/monit.pem -keyout /var/certs/monit.pem # openssl gendh 512 » /var/certs/monit.pem # openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem # chmod 700 /var/certs/monit.pem

Затем исправьте /etc/defaul t/monit для ввода в работу демона monit. Измените значение startup на 1 и установите значение CHECK_INTERVALS для интервала в секун­

Что дальше

113

дах, с которым вы желаете проверять свою систему. Мы выбрали значение 60. Файл должен выглядеть таким образом:

# Defaults for monit initscript # sourced by /etc/init.d/monit # installed at /etc/default/monit by maintainer scripts # Fredrik Steen # You must set this variable to for monit to start startup=l # To change the intervals which monit should run uncomment # and change this variable. CHECK_INTERVALS=60 Наконец, запустите monit:

# /etc/init.d/monit start

Теперь укажите в своем браузере адрес https://your_domain:2812/ (убедитесь, что порт 2812 не блокирован брандмауэром), войдите под именем admin и паролем test. Вы должны увидеть веб-интерфейс monit, показанный выше на рис. 4.16.

Что дальше Мы начали с основательного изучения и запуска вашего сервера, чтобы вы смогли использовать его как интернет-платформу. Мы настроили сервер, основанный на тексте, без использования системы X Window System (из эксплуатационных сооб­ ражений и соображений безопасности), а затем настроили базирующиеся на сети интерфейсы, чтобы позволить вам надежно осуществлять мониторинг платформы веб-сервисов. В оставшихся главах вы углубите свои знания по системному администриро­ ванию Linux. Начиная со следующей главы, вы уже не будете зависеть от самоустанавливающихся административных программ. Мы сконфигурируем основные приложения Linux, которые люди используют в повседневной жизни на предпри­ ятиях малого и среднего бизнеса.

Почта В этой главе рассматривается, как настроить почтовый сервис для сайта малого и среднего размера. Элементы сервиса включают: О сервер Postfix в качестве почтового клиента SMTP, получающий почту от ваших пользователей и взаимодействующий с другими сайтами в Интернете с целью доставки почты; О серверы почтового протокола (POP) и интерактивного протокола почтового доступа (IMAP) для доставки почты пользователям вашего сайта; О Simple Authentication and Security Layer (SASL) для аутентификации к почте и предотвращения обмана. Мы сконфигурируем Postfix, используя традиционную аутентификацию на базе файлов, которые будут касаться тысяч пользователей. Более крупные установки электронной почты могут хранить имена учетных записей и паролей электронной почты в реляционной базе данных или директории LDAP. В качестве примера вы­ сокомасштабируемого сервера электронной почты, основанного на Postfix с аутен­ тификацией LDAP, см. Zimbra (http://www.zimbra.com). В темах этой главы сводятся воедино различные компоненты для создания креп­ кой, надежной и эффективной системы доставки почты. Сегодня такие люди, как Вит­ це Венема (Wietse Venema) (изобретатель Postfix), устранили почти всю сложность и ненадежность, связанную с конфигурированием почтовых систем. Вместо того чтобы напряженно работать над сложной конфигурацией агента почтового сервера, системные администраторы Linux должны решать другие интересные проблемы: О обеспечивать безопасность электронной почты — средства коммуникации, спро­ ектированного без инструментов защиты от обманных попыток и других видов нападения злоумышленников; О защищать секретные данные компании; О давать доступ к электронной почте удаленным пользователям за пределами сети компании.

Ключевые термины почтовой службы Почтовые клиенты определяют серьезное нарастание коммуникации в Интернете, передавая почту от сайта к сайту. Для отправки почты пользователь соединяет свою систему с почтовым клиентом, который, применяя SMTP, передает почту почтовому клиенту, ответственному за доставку почты получателю.

Postfix, Sendmail и другие почтовые клиенты

115

Получатель имеет несколько возможностей извлечения почты из почтового кли­ ента, причем без применения SMTP: он может войти в качестве пользователя в систе­ му, использующую почтовый клиент, подключиться к удаленному почтовому клиен­ ту посредством прямого соединения (например, dial-up) или туннеля через Интернет (мы не учитываем здесь методы, связанные с извлечением электронной почты через веб-интерфейс, подобный Gmail, или с использованием мобильного телефона). Независимо от того, какие именно методы применяет пользователь, он получает свою почту посредством агента доставки почты (MDA), такого как Courier IMAP. Агент доставки почты сообщает почтовому клиенту о необходимости получения почты и предоставляет ящик входящей почты, так что пользователь может соби­ рать свои письма. Позже почта может отображаться в пользовательской системе с помощью почтового клиента пользователя (MUA), например Outlook, Evolution или Thunderbird. Как правило, пользователи извлекают почту, используя POP3 или IMAP4, че­ рез протокол TCP/IP. Практически все современные пользовательские почтовые клиенты поддерживают и POP3, и IMAP4. Клиенты отправляют почту, прикреп­ ляясь к почтовым агентам МТА и передавая почту через SMTP. Большинство людей держат в адресной книге список своих контактов, поэтому пользовательские почтовые клиенты могут искать почтовые адреса. В производ­ ственных средах эти списки контактов часто хранятся на серверах директории LDAP. Большинство пользователей даже не знают, что их списки контактов имеют внутренние интерфейсы LDAP.

Postfix, Sendmail и другие почтовые клиенты Вы могли бы спросить, почему мы выбрали в качестве нашего почтового клиента Postfix, а не Sendmail — родной почтовый интернет-сервер, разработанный в начале 1980-х Эриком Аллманом (Eric Allman) в университете Беркли. Sendmail давно рас­ полагает самой большой базой инсталляций почтовых клиентов в Интернете, но мы не уверены, что сегодня все обстоит именно так. Многие исследователи отмечают, что популярность Sendmail стремительно снизилась и он используется менее чем на 40 % серверов Интернета. В то время как некоторые убежденные сторонники Sendmail называют его гибким и масштабируемым, многие системные администра­ торы считают его излишне сложным, неудобным при настройке и поддержке. Sendmail был разработан до появления спама и зловредных программ и, следо­ вательно, имеет некоторые недостатки в безопасности. Одна из наиболее серьезных проблем связана с тем, что по умолчанию Sendmail позволяет открытую передачу, то есть он передает почту, приходящую из любого места за пределами локальной сети сервера. Эта проблема безопасности проиллюстрирована на рис. 5.1. Отправители непрошеной почты (UBEs), известные также как спамеры, и от­ правители непрошеной рекламы в настоящее время ответственны за более чем 50 % почтового трафика в Интернете. Это серьезно загружает почтовые очереди, DNSсерверы, процессоры, а также ресурсы инфраструктуры. Спамеры используют раз­ личные технологии для скрытия своих личностей, включая обманные IP-адреса, фальсификацию конвертов и передачу почты через открытые SMTP-серверы.

116

Глава 5. Почта

Незатребованная массовая рассылка Мобильные пользователи I I I .< * х

I I I

< L.

л .1 л I 5

Почтовый сервер допускает ретрансляцию почты из-за пределов сети

Г

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

Хост-узел в сети I

Æjj

Пользователи

Пользователи

Рис. 5.1. Проблема безопасности в среде, недружественной электронной почте

Правильно сконфигурированный почтовый клиент принимает (передает) исхо­ дящую почту только с сетевых адресов, принадлежащих законным пользователям, как правило ограниченных частной подсетью. Однако по умолчанию Sendmail будет пересылать почту, пришедшую от кого угодно. Если вы используете Sendmail и не позаботились о том, чтобы отключить открытую пересылку, спамеры могут вос­ пользоваться вашим почтовым клиентом для скрытия своих личностей. Тогда ваш почтовый сервер может попасть в черный список открытых средств передачи почты, из-за чего вся легальная почта, проходящая через него, может оцениваться как спам. Теоретически у вас даже могут появиться проблемы с законом, если запрещенные материалы будут пересылаться через вашу станцию. Большая, укоренившаяся пользовательская база Sendmail, часто работающая с недоработанными, недокументированными и старыми версиями приложений, всецело помогает спамерам. Разработчикам Sendmail известно об этой пробле­ ме1, и они напряженно трудятся, чтобы сделать Sendmail более безопасным, но наилучшие дополнения по части безопасности были сделаны в платной версии продукта. 1

См. статью One in Three Companies Operate Without Email Usage Policies, Risking Damage to Their Systems and Reputations, Sendmail Finds в журнале Business Wire за 25 мая 2006 года (http://goliath.ecnext.com/coms2/summary_0199-5568576_ITM). — Примеч. авт.

Почтовый сервер Postfix SMTP на Debian

117

Аарон Вайс (Aaron Weiss) помогает разъяснить некоторые сложности, связан­ ные с бесплатными и платными версиями Sendmail, в своей статье The Fee vs. Free Divide (http://www.serverwatch.com/tutorials/article.php/3580006): Компания Sendmail, Inc. была создана для коммерциализации Sendmail и продук­ тов с дополнительными возможностями, что значительно способствует их вне­ дрению. Ведущий продукт — Sendmail Switch — построен на бесплатном Sendmail. Он находится на пике ядра Sendmail и добавляет централизованную графическую консоль управления, поддержку текущей безопасности, круглосуточную поддержку фильтров управления содержимым (включая защиту от спама и вирусов), поддерж­ ку каталогов SSL, SASL и LDAP, а также проверку, группирование и возможность удаленного управления. Все это завершается графическим инсталлятором и мас­ терами настройки, основанными на решении задач. Итак, Sendmail Consortium (ответственный за бесплатный почтовый клиент Sendmail с открытым кодом) спонсируется компанией Sendmail, Inc., обеспечива­ ющей защиту от спама и вирусов, а также дополнительные программы управления алгоритмами для этого почтового клиента. Далее находится описание бизнес-модели Sendmail, Inc. (взято с сайта http://www.sendmail.com/company): Sendmail предлагает производственные решения для безопасного, надежного, гибкого обмена сообщениями, включая электронную, голосовую почту и возмож­ ность мгновенной передачи сообщений. Решения Sendmail контролируют безопас­ ность и гибкость входящей, исходящей и внутренней электронной почты. Sendmail отличается работой во многих направлениях программного обеспечения и оборудо­ вания. Его продукты работают в неоднородной почтовой инфраструктуре, вклю­ чающей Exchange, Notes, Groupwise и другие почтовые решения. Postfix изначально был разработан как безопасная и добротная замена Sendmail. Почтовым агентом Debian по умолчанию является Exim 4, но мы предпочитаем Postfix, поскольку Exim имеет некоторые проблемы с масштабируемостью. Ему не хватает центрального менеджера очереди и центральной балансировки нагруз­ ки. Кроме того, имеются свидетельства, что разработчики дистрибутивов Debian могут сделать Postfix его почтовым клиентом по умолчанию в самом ближайшем будущем. В настоящее время вы можете самостоятельно заменить Exim на Postfix, что увидите в следующем разделе.

Почтовый сервер Postfix SMTP на Debian Для обустройства сервера мы собираемся использовать последний дистрибутив Debian. Если вы предпочтете другой вариант, то для достижения тех же результатов сможете применять процедуры, похожие на те, что описаны в этой главе.

Пакеты Debian, относящиеся к Postfix Используйте последнюю надежную версию Debian и конфигурируйте ее с мини­ мальным количеством пакетов. Если у вас еще нет образа установочного диска Debian, скачайте его с сайта http://www.us.debian.org/CD/netinst. Потом выполните сетевую установку и убедитесь в обеспечении полностью квалифицированного доменного имени. Конфигурируйте Debian так, как мы покажем в этом разделе.

118

Глава 5. Почта

Инсталлятор Debian перед установкой проведет вас через стандартный сцена­ рий. Следуйте стандартному процессу установки, пока не увидите окно, в котором можно выбрать желаемый тип установки. Там будут следующие пункты: ( ( ( ( ( ( ( (

) ) ) ) ) ) ) )

Desktop Environment Web Server Print Server DNS Server File Server Mail Server SQL database manual package selection

He выбирайте ни один из параметров, так как вы не собираетесь использовать почтовый сервер Debian по умолчанию (Exim), а хотите установить вместо него Postfix. Просто нажмите клавишу Tab, а затем появившуюся на экране кнопку ОК. Программа установки Debian продолжит скачивать и устанавливать пакеты. Во вре­ мя скачивания вы увидите еще одно окно, в котором программа установки спросит вас, хотите ли вы конфигурировать Exim (Exim-config). Выберите No configuration. Затем ответьте Yes на вопрос Really leave the mail system unconfigured? (Действительно оставить почтовую систему неконфигурированной?). Программа установки Debian продолжит скачивание и конфигурирование па­ кетов. Когда Debian закончит свою работу, вы увидите окно с благодарностью за использование Debian. Здесь вы должны будете удалить некоторые ненужные программы, используя команду Debian apt-get. Если вы решили пользоваться другим вариантом, то мо­ жете удалить пакеты в соответствии с их процедурами. В Debian запустите такую команду:

# apt-get remove lpr nfs-common portmap pidentd pcmcia-cs pppoe \ pppoeconf ppp pppconfig

Теперь отключите некоторые сервисные сценарии: # # # # # # # #

update-inetd update-inetd update-inetd update-inetd update-inetd update-inetd update-inetd update-inetd

remove remove remove remove remove remove remove remove

daytime telnet time finger talk ntalk ftp discard

и перезапустите суперсервер inetd: # /etc/init.d/inetd reload

Установка Postfix на Debian Следующая команда устанавливает пакеты, необходимые для работы с Postfix, вме­ сте со средствами защиты TLS и SASL, позволяющими аутентифицировать поль­ зователей:

Почтовый сервер Postfix SMTP на Debian

119

# apt-get install postfix postfix-doc postfix-tls 1 ibsasl2 \ sasl2-bin libsasl2-modules

Когда вы установите эти пакеты, Debian может выбрать установку libldap2. Па­ кет libsasl2 уже может быть установлен в вашей системе. Теперь утилита установки Debian начнет скачивание и конфигурирование неко­ торых файлов. В ходе этого процесса вы увидите длинный диалог, начинающийся следующими строками:

Reading Package Lists... Done Building Dependency Tree... Done Далее вы увидите экран расширенного вывода, начинающийся со следующей строки:

You have several choices for general configuration at this point... В нижней части экрана вы найдете интересующий вас вопрос:

General type of configuration? No configuration Internet Site Internet with smarthost Satellite system Local only

Cancel >

Выберите Internet Site, даже если вы планируете использовать Postfix только для доставки по локальной сети. Далее программа скажет вам, что инсталляция записывает файл конфигурации Postfix. Если вы уже имеете рабочий сервер, использующий Sendmail, то у вас будет файл al i ases. В этой главе мы рекомендуем вам начать запись с нуля, то есть ввести в следующем окне NONE: The user root (and any other users with a uid of 0) must have mail redirected via an alias, or their mail may be delivered to /var/mai1/nobody. This is by design: mail is not delivered to external delivery agents as root. If you already have a /etc/aliases file, then you possibly need to add this entry. (I will only add it if I am creating a new /etc/aliases.) What address should I add to /etc/aliases, if I create the file? (Enter NONE to not add one.) Where should mail for root go NONE________________________________________________

Cancel >

Следующий вопрос касается вашего FQDN. Postfix требуется, чтобы команда hostname возвратила FQDN, например mail.centralsoft.org. Но по умолчанию в Debian команда hostname передает только mail. Чтобы позволить вам конфигурировать FQDN, установочный сценарий предложит следующий диалог: Your 'mail name' is the hostname portion of the address to be shown on outgoing news and mail messages (following the username and @ sign). This name will be used by other programs besides Postfix: it should be the

120

Глава 5. Почта

single, full domain name (FQDN) from which mall will appear to originate. Mall name? mail.centra 1 soft.org________________________________

Ответьте , чтобы принять значение по умолчанию, которое появится в го­ лубом окне. Следующий диалог перечисляет значения для доменов по умолчанию, на кото­ рые ваш сервер должен ответить: Give a comma-separated list of domains that this machine should consider Itself the final destination for. If this Is a mall domain gateway, you probably want to Include the top-level domain. Other destinations to accept mall for? (blank for none) server2.centralsoft.org, localhost.centralsoft.org, , local host

Перечисленные домены появятся в вашем файле конфигурации main.cf. Последний вопрос имеет значение для файловых систем без ведения журнала: If synchronous updates are forced, then mall Is processed more slowly. If not forced, then there Is a remote chance of losing some mall If the system crashes at an Inopportune time, and you are not using a journaled filesystem (such as ext3). The default Is "off". Force synchronous updates on mall queue?

Поскольку почти все имеющиеся на данный момент варианты используют фай­ ловую систему с ведением журнала ext3 по умолчанию, вы можете ответить здесь . Здесь установка завершается и записывает файл конфигурации Postfix. Пара­ метры и значения, указанные здесь, могут сейчас не иметь для вас смысла, но вы найдете их в файле конфигурации и при необходимости сможете изменить.

Основы конфигурации Postfix Далее следует возможный файл конфигурации Postfix, /etc/postf 1 x/maln.cf:

smtpd_banner = Smyhostname ESMTP $ma11_name (Deblan/GNU) biff = no append_dot_mydoma1n = no myhostname = mydomain = myorlgln = Smydomaln 1 net-interfaces = mydestlnation = Smydomaln, local host.Smydomaln, local host mynetworks = 127.0.0.0/8 Если вы настраиваете Postfix вручную, то вам придется заполнить многие из этих значений самостоятельно. Заготовка этого файла учитывается в процессе ин­ сталляции Debian. Postfix использует простой синтаксис, где каждая строка состоит из параметра конфигурации, за которым следуют одинаковые символ и значение. Как только

121

Почтовый сервер Postfix SMTP на Debian

параметр определен, более поздние строки в файле могут ссылаться на файл, обо­ значая его префиксом в виде символа $. Тогда команда

mydomain = centralsoft.org myorigin = Smydomain

приводит к присвоению значения central soft. org одновременно параметрам mydomai n nmyorigin. Базовый файл конфигурации работает только с локальной доставкой. Он пред­ полагает, что получатели имеют учетные записи оболочки и домашние директории на самом почтовом сервере. Он не требует от системы добавления суффикса @ (как было указано для параметра append_dot_mydomai п). Вот почему в процессе установки Debian спрашивает вас о доменах, именах хостов и адресах назначения. Менеджер пакетов Debian конфигурирует многие параметры за вас в файле /etc/ postflx/main.cf (табл. 5.1). Полный список параметров можно найти в системном списке Debian в файле примера /usr/share/postfix/main.cf .dist. Таблица 5.1. Ключевые параметры конфигурации Postfix

Параметр

Описание

.smtpd-banner = Указывает текст в баннере, обозначающий данный сервер, если он $myhostname ESMTP связывается по SMTP с другим сервером. Согласно спецификациям $mail name (Debian/GNU) SMTP, использование баннера обязательно biff = no

Это небольшой процесс Postfix, который может уведомлять локаль­ ных пользователей, что почта была получена. Если у вас нет локаль­ ных пользователей, вам следует его отключить. По умолчанию при установке Debian он отключен

append_dot_mydomain = no

В среде, подобной нашей, прикрепление адреса электронной почты является работой MUA. Это значение показывает, что Postfix не будет прикреплять суффикс, подобный ©centraIsoft.org

#delay_warning_time = 4h Оставьте эту строку незакомментированной для генерирования предупреждений об отложенной почте. Мы не будем включать этот параметр, поскольку начнем с небольшого объема пользователей и не предполагаем откладывания

myhostname = server2. centralsoft.org

Указывает сетевое хост-имя данной почтовой системы. По умолча­ нию указывается полностью пригодное к использованию доменное имя. $myhostname используется по умолчанию для многих других параметров конфигурации

alias_maps = hash:/etc/ aliases alias_database = hash:/etc/aliases

Определяет базы псевдонимов, используемых локальным почтовым клиентом. Псевдоним — это просто альтернативное имя, применяемое вместо оригинального. Например, вы можете указать admin как псев­ доним для root. Понимать роли этих двух параметров на настоящий момент не так важно; просто помните, что Postfix содержит весь спи­ сок псевдонимов в одном файле, а эти параметры сообщают системе, где он расположен и каков формат используемого файла базы данных

myorigin = mydomain

Указывает домен, с которого приходит локальная почта

mydestination = server2. centralsoft.org, localhost. centralsoft.org,, localhost

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

relayhost =

Указывает хост по умолчанию, который сервер будет использовать для пересылки почты, если он не знает, как достичь получателя. Мы остав­ ляем его пустым, передавая через следующий параметр mynetworks

Продолжение &

122

Глава 5. Почта

Таблица 5.1 (продолжение)

Параметр

Описание

mynetworks = 127.0.0.0/8

Определяет хосты, относительно которых сервер уверен, что они не являются спамерскими. Здесь мы указали только наш локальный хост. Вместо этого вы можете указать параметр mynetworks_style = class, если Postfix должен доверять клиентам SMTP в сетях того же класса (А/В/С), что и локальная машина. Не доверяйте целому клас­ су на dial-up-сайте, поскольку это обусловит для Postfix открытую пересылку по всей сети вашего провайдера

mailbox command = Указывает опциональную внешнюю команду ilbox. Команда выполня­ procmail -a '^EXTENSION" ется для пользователя с надежными установками среды HOME SHELL и LOGNAME

mailbox_size_limit = 0

Устанавливает квоты на почту, хранимую каждым пользователем. Значение 0 отменяет лимиты квот

recipient_delimiter = +

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

inetjnterfaces = all

Определяет адреса сетевого интерфейса (сетевой карты), на кото­ рые данная почтовая система получает почту. Это полезно, только если вы имеете несколько сетевых карт

Некоторые простые и полезные настройки, которые вам, возможно, придется сделать, включают следующее. О Как правило, mydestination перечисляет домены, появляющиеся в почтовых адресах локальных пользователей, то есть домены, с которых Postfix получает и на которые отправляет почту. По умолчанию Postfix получает почту, опреде­ ленную как Smyhostname и 1 оса 1 host. Smydomai n — хост, на котором работает Postfix. Вы можете указать, что система должна получать почту со всего вашего домена, добавив в список Smydomaiп: mydestination = Smyhostname. 1ocalhost.Smydomain. Smydomain

О Вы можете сообщить Postfix, с каких хостов хотите получать почту, установив параметр mynetworks (если вы установите этот параметр, Postfix проигнорирует параметр mynetworks_style). Вы можете задать один или несколько IP-адресов и/или использовать нотацию сети или маски сети (например 151.164.28.0/28). Этот параметр полезен, если вы хотите обеспечить доставку почты на хосты за пределами вашей локальной сети, например для работы дома, общения с про­ давцом в дороге и т. д. Далее в этой главе мы внесем некоторые изменения в файл /etc/postfix/mai n. cf, чтобы добавить аутентификацию и шифрование паролей.

Тестирование почты Имея конфигурацию Debian, вы можете отправлять и получать почту со своей учет­ ной записи оболочки. Далее следует пример двух тестовых посланий, созданных одним из авторов книги — Томом Адельштайном. Сначала Том использовал учет­ ную запись Gmail, чтобы послать почтовое сообщение на учетную запись системы server2.centralsoft.org. Далее он прочел сообщение с оболочки с помощью стандартной UNIX-команды mail:

Добавление аутентификации и шифрования

123

mail Message 1: Date: Tue, 11 Jul 2006 17:38:32 -0500 From: "Tom Adel stein" [email protected] To : [email protected] soft.org Subject: Testing simple STMP services We're sending this email to test our mall server's capability to send and receive simple SMTP mall.

Потом Том написал ответ на оригинальное сообщение и отправил его на свою учетную запись Gmail: Del 1vered-To: [email protected] Received: from server2.centralsoft.org Tue, 11 Jul 2006 16:10:44 -0700 (PDT) To:[email protected] Subject: Re: testing simple SMTP mall In-Reply-To [email protected] (Tom Adelstein) We're sending this email to test our mall server's capability to send and receive simple SMTP mall

Использование команды mal 1 — это примитивный способ управления больши­ ми объемами почты даже в учетной записи оболочки. Альтернативой является команда mutt, имеющая более ясный интерфейс и гораздо больше возможностей. Как администратор, вы можете использовать один из этих почтовых клиентов командной строки, получая почту со своих учетных записей в Linux.

Добавление аутентификации и шифрования Сейчас мы сконфигурировали сервер SMTP по умолчанию. Что еще мы можем сделать с помощью Postfix? В этой главе мы добавим аутентификацию (используя SASL) и шифрование (с помощью TLS) в наш файл конфигурации /etc/postf 1 х/ main. cf. Благодаря аутентификации мы убеждаемся, что только пользователи с на­ дежными удостоверениями личности смогут использовать наш сервер SMTP. Благодаря шифрованию мы гарантируем, что ID и пароль пользователя не будут пересылаться по сети открытым текстом.

Аутентификация SASL На рис. 5.1 изображена группа мобильных пользователей, которым необходимо отправить почту через почтовый сервер, находясь за пределами его локальной сети. Это обычный сценарий. Для того чтобы отличить этих законных пользова­ телей от случайных спамеров, потребуется механизм безопасности на внутреннем интерфейсе. SASL, разработанный как часть проекта Cyrus в университете Кар­ неги — Мэллона (Carnegie Mellon University), обеспечивает Postfix средствами для контроля за пересылкой почты и определения ресурсов, с которых приходит отправляемая на сервер почта.

124

Глава 5. Почта

Системные администраторы могут использовать SASL для аутентификации многих взаи-

а

модействий «клиент — сервер», но каждый сервис, использующий SASL в операционной системе Linux, требует разных файлов конфигурации. Вы не можете просто установить SASL и конфигурировать его для всей системы.

Как SASL стал частью решения Postfix? За ответом придется отправиться в 1999 год, когда в IETF был создан стандарт, называемый служебным расшире­ нием SMTP для аутентификации. Вы увидите этот манускрипт, если вставите ак­ роним ESMTP, например, в первую строку файла /etc/postfix/maln.cf (см. табл. 5.1). ESMTP препятствует использованию неизвестных почтовых клиентов при от­ правке больших объемов почты. Он также обеспечивает безопасность при аутен­ тификации пользователей и записи в журнал их действий. IETF основало свое сервисное расширение ESMTP на SASL. Как часть прото­ кола SMTP, ESMTP просто добавляет команду AUTH к командам, используемым серверами для связи и обмена данными. Основа аутентификации SASL предоставляет несколько способов обмена лич­ ными данными пользователей и их хранения. Может использоваться системный пароль Linux (/etc/passwd, /etc/shadow или подключаемые модули аутентифика­ ции), отдельные файлы, внешние службы, например LDAP, Kerberos или sasldb (директория, разработанная в проекте Cyrus и включенная в SASL). В этой главе мы покажем два способа использования Postfix с SASL. Сначала мы продемонстрируем простой метод, хорошо работающий на маленьких сайтах, при котором вы сможете дать каждому из пользователей почтовую учетную запись на сервере Linux. В этом методе применяются подключаемые модули аутентифи­ кации, а для логинов используется аутентификация по умолчанию. Во-вторых, мы сконфигурируем более сложную систему, которая позволит аутентифицировать пользователей, не имеющих учетной записи на сервере.

а

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

Г; является ли запрашивающий пользователь тем, за кого себя выдает. Во-вторых, он обес‘ печивает пользователя запрошенным сервисом, который может быть командной оболочкой (bash, tcsh, zsh и т. д.) или сессией системы X Window, работающей под его именем.

Конфигурирование Postfix с помощью SASL для аутентификации пользователей с учетными записями К счастью, Debian предоставляет пакет SASL с Postfix. Вы можете использовать библиотеки Debian SASL, чтобы позволить пользователям аутентифицироваться за пределами сети. В следующем примере мы используем SASL для удостоверения того, что люди, пытающиеся выйти на связь, имеют валидные учетные записи на сервере Linux. Наша система позволяет подключаться и посылать почту только пользователям с учетными записями на сервере. Мы будем применять механизм входа Linux по умолчанию, то есть подключать модули аутентификации. Если вы инсталлировали пакеты ранее, то обеспечили необходимые расшире­ ния и библиотеки SASL (postflx-tls, 11 bsasl 2, sasl2-bin и 11 bsasl 2). Теперь вам нужно конфигурировать файл / etc/post fl x/mal n. cf. Сначала мы покажем вам, как

Добавление аутентификации и шифрования

125

добавлять параметры в файл, используя команды postconf, затем покажем альтер­ нативный способ, включающий простое редактирование /etc/postfi x/mai n. cf. Включение аутентификации на сервере Postfix SMTP добавляет параметры smtpd к вашему файлу mai n. cf командой postconf. # postconf -е 'smtpd_sasl_auth_enable = yes'

Далее добавьте параметр для согласования с некоторыми нестандартными кли­ ентами, которые не следуют аутентификации SMTP правильно: # postconf -е 'broken_sasl_auth_clients = yes’

Параметр smtpd_sasl_security_options позволяет контролировать механизмы паролей, когда клиенты подключаются к вашему серверу SMTP. Следующая кон­ фигурация блокирует анонимную аутентификацию: # postconf -е 'smtpd_sasl_security_options = noanonymoiis' По умолчанию Postfix не позволяет неавторизованной пересылки почты. Итак, чтобы разрешить пользователям работать с вашим сервером из Интернета, вы должны добавить другой параметр (одной строкой):

# postconf -е 'smtpd_recipient_restrictions = permi tjnynetworks.permi t_sasl_authenticated,reject_unauth_destinati on'

Наконец, параметр smtpd_sasl_l ocal_domai n ставит условием имя домена локаль­ ной аутентификации. По умолчанию Postfix считает имя машины доменным име­ нем локальной аутентификации. Чтобы использовать поведение по умолчанию, укажите пустую строку: # postconf -е ' smtpd-SaslJ ocal_domain =’ Это завершает конфигурирование SASL для Postfix. В качестве альтернативы, вместо выполнения предшествующих команд postconf вы можете отредактировать файл /etc/postfi x/mai n. cf, добавить следующие записи и перезагрузить Postfix:

smtpd_sasl_local_domain = Smyhostname smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_sasl_local_domain =

Вы уже завершаете настройку SASL и можете начать его использовать. Прежде чем мы обсудим последние шаги, выполните следующие команды, чтобы создать файл конфигурации SASL в директории, где Postfix будет его искать (параметр -р позволяет избежать ошибки, если директория уже существует): # mkdir -р /etc/postfix/sasl # cd /etc/postfix/sasl Create the smtpd.conf file with these two lines: pwcheckjnethod: saslauthd mech_list: plain login Теперь вы можете перезапустить Postfix:

# postfix reload

126

Глава 5. Почта

Демон saslauthd В файле smtpd. conf мы указали saslauthd в качестве нашего метода для подтверждения личных данных пользователей. Почему? Наш внутренний интерфейс пароля использует подключаемую аутентифи­ кацию модулей, и непривилегированные процессы не имеют доступа к файлам пароля. Поскольку служебная учетная запись Postfix работает с ограниченными привилегиями, она не может прямо аутентифицировать пользователей. Библиотеки SASL в комплекте с Debian в данной ситуации действуют, добав­ ляя демон аутентификации saslaufhd, работающий с запросами к Postfix. Он рабо­ тает с привилегиями суперпользователя в процессе, отдельном от Postfix, поэтому взломанный почтовый сервер не может получать выгоду от привилегий. Демон saslaufhd не общается за пределами вашей локальной сети, поэтому вы можете считать угрозу безопасности при его использовании минимальной даже при том, что saslaufhd применяет пароли с открытым текстом. Демону требуются точные пароли, так как он использует ту же службу входа, которую применяете вы для открытия сессии консоли Linux. Теперь сконфигурируем saslaufhd для работы с почтовым сервером. Следу­ ющие советы специально разработаны для Debian, но вы можете выполнять то же самое с минимальными изменениями директорий и команд с другими системами Linux. Порт Debian на Postfix работает в области /va г/spool /postfl х. Следовательно, вы должны поместить демон saslauthd в ту же область имен. Выполните такие шаги. 1. Создайте для демона необходимую директорию:

# mkdiг -р /var/spool/postfix/var/run/saslauthd

2. Исправьте / etc / defa ul t/saslauthd, чтобы активировать saslauthd. Удалите знак комментария (#) из строки START=yes, затем добавьте следующую строку: PARAMS="-m /var/spool/postflx/var/run/saslauthd -г"

3. Теперь ваш файл должен выглядеть так:

# This needs to be uncommented before saslauthd will be run automatically START=yes PARAMS="-m /var/spool/postflx/var/run/saslauthd -r" # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also Include # "shadow" or "sasldb". like this: # MECHANISMS="pam shadow" MECHANISMS="pam" 4. Далее исправьте /etc/lnit.d/saslauthd для изменения местоположения файла saslauthd процесса ID. Измените значение PIDFILE на следующее:

PIDFILE="/var/spool/postf1x/var/run/${NAME}/sasl authd.pld" 5. Запустите saslauthd:

# /etc/lnlt.d/saslauthd start Если вы используете не Debian, а иную разновидность Linux, то будете ра­ ботать с другими файлами, директориями и командами. Например, во многих

Добавление аутентификации и шифрования

127

системах стандартный путь запуска saslauthd в первый раз осуществляется такой командой: # saslauthd -а рат

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

Конфигурирование Postfix с помощью SASL для аутентификации пользователей без учетных записей Использование файла пароля для аутентификации Postfix в системе Linux требует от любого пользователя, отправляющего почту через сервер, наличия учетной за­ писи. Часто не замечают, что это решение менее гибко и требует больше времени на администрирование. Для поддержки пользователей, не имеющих учетных записей на сервере SMTP, SASL предоставляет другие параметры хранения. Среди наибо­ лее популярных можно назвать sasldb, LDAP, Kerberos и MySQL. Демон saslauthd не работает, если Postfix использует один из этих методов: отдельная программа с привилегиями суперпользователя не требуется, так как SASL не нужен доступ к файлу пароля операционной системы. Используя saslauthd, вы ограничены передачей пароля открытым текстом и аутентификацией логина. Кроме того, Postfix также предлагает альтернатив­ ный метод auxprop, поддерживающий логин, записываемый открытым текстом, методы аутентификации CramMD5, DigestMD5, ОРТ и NTLM. Наиболее надежным и масштабируемым из механизмов аутентификации, об­ суждаемых в этой главе, является LDAP, но он имеет ограничение — использует в основном пароли, записанные открытым текстом. Чтобы решить эту проблему, системные администраторы обычно применяют TLS для шифрования паролей, переданных от клиента на сервер (это рассматривается в следующем разделе). Комбинация LDAP и TLS в настоящее время обеспечивает наибольшую безопас­ ность. В небольшой сети sasldb может предложить простое решение для введения в работу небольшого количества удаленных пользователей. Для действительно крупных сайтов с большим количеством пользователей вы можете счесть MySQL более масштабируемой и простой в использовании и управлении. Методы директорий sasldb и MySQL требуют от вас установки дополнительных программ — вспомогательных плагинов безопасности. Если вы конфигурируете sasldb или MySQL, то должны исправить файл smtpd.conf, изменив строку pwcheckjnethod: saslauthd

на следующую, предоставляющую основу для дополнительных плагинов безопас­ ности: pwcheckjnethod: auxprop

Шифрование TLS Недостаток использования метода auxprop для проверки пользователей состоит в том, что без дополнительных мер безопасности метод превращается в проверку

128

Глава 5. Почта

открытым текстом. Если вы входите на собственное рабочее место, это не явля­ ется проблемой. Но если вы пересылаете свой пользовательский ID и пароль по сети открытым текстом, то любой сможет легко завладеть вашими личными данными. В главе 2 мы обсуждали использование TLS, обновленной версии шифрования SSL для пересылки паролей вашего рабочего места на почтовый сервер безопас­ ным образом. Здесь мы расширим решение по шифрованию идентификационной информации, создав сертификат с использованием OpenSSL.

В

Как и предыдущий, этот раздел касается безопасности, но с другой целью. В разделе SASL обсуждается аутентификация, определяющая, кто имеет право посылать почту через ваш сервер. Этот раздел касается защиты пароля, обеспечивающей то, что потенциальные злоумышленники не смогут завладеть личными данными пользователя. Для безопасности электронной почты вам требуются оба сервиса.

Начните с создания директории для сертификатов SSL. Сделайте ее подката­ логом в основном месте размещения Postfix на Debian: # mkdir /etc/postfix/ssl # cd /etc/postfix/ssl/ Далее сгенерируйте два сертификата и два шифровальных ключа. Вам требу­ ется личный ключ, не известный никому, кроме вас, и общий ключ, позволяющий другим пересылать секретные личные данные. Начните с ключа сервера:

# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 293 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .......................................................................... ++++++ .................................................................... ++++++ e Is 65537 (0x10001) Enter pass phrase for smtpd.key: Verifying - Enter pass phrase for smtpd.key:

Измените права доступа к результирующему файлу, содержащему ключ сервера OpenSSL: # chmod 600 smtpd.key Далее сгенерируйте другой ключ и сертификат:

# openssl req -new -key smtpd.key -out smtpd.csr You are about to be asked to enter Information that will be Incorporated Into your certificate request. What you are about to enter Is what Is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value. If you enter '.'. the field will be left blank. Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg. city) []: Organization Name (eg. company) [Internet Wldglts Pty Ltd]: centralsoft.org Organizational Unit Name (eg, section) []: web Common Name (eg. YOUR name) []:

Добавление аутентификации и шифрования

129

Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: cso

а

Ведутся споры относительно того, требуют ли самостоятельно сгенерированные сертификаты

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

Следующие команды генерируют ключ электронно-цифровой подписи и меня­ ют существующие ключи на новые:

# openssl х509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out \ smtpd.crt Signature ok subject=/C=US/ST=Texas/L=Dal1as/O=centralsoft.org/OU=web/CN=Tom_Adelsteln/ [email protected] Getting Private key Enter pass phrase for smtpd.key: # openssl rsa -in smtpd.key -out smtpd.key.unencrypted Enter pass phrase for smtpd.key: writing RSA key # mv -f smtpd.key.unencrypted smtpd.key # chmod 600 smtpd.key # openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out \ cacert.pem -days 3650 Generating a 1024 bit RSA private key .................................... ++++++ ............................................. ++++++ writing new private key to 'cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: You are about to be asked to enter Information that will be Incorporated Into your certificate request. What you are about to enter Is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter the field will be left blank Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg. city) []: Organization Name (eg, company) [Internet Wldgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []: Теперь вы должны сообщить Postfix о своих ключах и сертификатах, используя команду postconf: # postconf -е 'smtpd_tls_auth_only = no' # postconf -e 'smtp_use_tls = yes'

130 # # # # # # # # #

postconf postconf postconf postconf postconf postconf postconf postconf postconf

Глава 5. Почта

-e -e ■e -e ■e -e -e -e -e

'smtpd_use_tls = yes' 'smtp_tls_note_starttls_offer = yes' 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem’ 'smtpd_tls_loglevel = 1' 'smtpd_tls_received_header = yes' 'smtpd_tls_session_cache_timeout = 3600s' 'tls_random_source = dev:/dev/urandom'

Файл /etc/postf 1 x/mai n. cf теперь должен выглядеть следующим образом:

# See /usr/share/postflx/maln.cf.dist for a commented, more complete version smtpd_banner - Smyhostname ESMTP $ma11_name (Deblan/GNU) biff = no # appending .domain Is the MUA's job. append_dot_mydoma1n = no # Uncomment the next line to generate "delayed mall" warnings #delay_warn1ng_t1me = 4h myhostname = serverl.example.com allasjnaps = hash:/etc/al1ases al1as_database = hash:/etc/al1ases myorlgln = /etc/mallname mydestlnatlon = serverl.example.com , localhost.example.com. localhost relayhost = mynetworks = 127.0.0.0/8 ma11box_command = procmall -a "SEXTENSION" ma11box_s1ze_11m1t = 0 recipient-dellmiter = + 1 netjnterfaces = all smtpd_sasl_local_doma1n = smtpd_sasl_auth_enable = yes smtpd_sasl_secur1ty_opt1ons = noanonymous broken_sasl_auth_cl1ents = yes smtpd_rec1plent_restr1ctlons = permlt_sasl_authent1cated,permlt_mynetworks,reject unauth_dest1nation smtpd_tls_auth_only = no smtp_use_tls = yes mtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd-tls_key_f11e = /etc/postfix/ssl/smtpd.key smtpd-tls_cert_f11e = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAf11e = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_rece1ved_header = yes smtpd_tls_sess1on_cache_t1meout = 3600s tls_random_source = dev:/dev/urandom

Теперь вы можете перезапустить демон Postfix: # /etc/init.d/postfix restart Stopping mall transport agent: Postfix. Starting mall transport agent: Postfix.

Конфигурирование почтовых агентов POP3 и IMAP

131

Конфигурирование почтовых агентов POP3 и IMAP В этом разделе мы добавим почтовые агенты для доукомплектования Postfix. Ис­ пользуйте в Debian следующую команду для добавления сервера IMAP и POP3:

# apt-get Install ipopd-ssl uw-imapd-ssl Мы выбрали пакет ipopd-ssl для поставки почтовых агентов POP2 и POP3 и uw-imapd-ssl для IMAP. Не позвольте суффиксам ssl обмануть вас: оба пакета предоставляют как незашифрованные, так и зашифрованные сервисы. Стандарт­ ный IMAP использует порт 143, а POP3 — порт 110. Зашифрованные протоколы и порты — это POP3S (порт 995) и IMAPS (порт 993). Разработанный в Университете Вашингтона (University of Washington) пакет ipopd-ssl сейчас поддерживается Debian. Вам просто нужно инсталлировать его: он самостоятельно настраивается для использования домашней почтовой дирек­ тории, существующей на почтовом сервере, — подобно той, которую мы настроили в главе 4. Провайдеры продолжают использовать POP3, но на предприятиях он применяется редко. Пакет uw-imapd-ssl обеспечивает сервер IMAP. Несмотря на то что он требует больше дискового пространства, IMAP лучше POP, поскольку он оставляет почту на сервере и позволяет пользователям смотреть почту из любого места, где есть доступ в Интернет и почтовый клиент. Мы не знаем ни одного современного почто­ вого клиента, который бы не понимал IMAP, поэтому большинство пользователей не откажутся работать с этим сервером. Вы также можете доставлять электронную почту на свой почтовый сервер, ис­ пользуя SSL, давая пользователям удобную возможность просматривать почту из браузера.

а

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

шем почтовом сервере, даже если они читают почту с помощью почтового клиента в другой операционной системе. Обычно Postfix обеспечивает локальную доставку в пределах домена, но ему требуется отправка через внутренний интерфейс (обсуждавшаяся выше, в разделе «Конфигурирование Postfix с помощью SASL для аутентификации пользователей без учетных записей»), если пользователи находятся за пределами домена.

Пакет uw- i mapd имеет как преимущества, так и недостатки. Положительной чертой является то, что в нем используется хранение почты в формате mbox в стиле UNIX, что позволяет держать всю почту пользователя в одном файле в его домашней ди­ ректории. Иными словами, вам будет легко администрировать такой сервис. Отрицательной чертой является то, что uw-imapd не позволяет виртуальным пользователям или пользователям без учетных записей оболочки и домашних ди­ ректорий получать доступ к почте. Кроме того, многим администраторам не нравит­ ся простой формат хранения mbox, они предпочитают более развернутый формат maildir. Как формат одного файла, mbox позволяет одновременный доступ только к одному приложению, что требует блокировки файлов и может тормозить систему при высокой загруженности.

132

а

Глава 5. Почта

Блокировка файла — это механизм, который обеспечивает доступ к файлу компьютера

г* только одного пользователя или процесса в определенный момент времени. Цель блоки­ ровки — избежать конфликтов при обновлениях.

Многие полагают, что блокировка файлов является проблемой применительно к почте. Многим развернутым файловым системам не хватает надежного механизма блокировки. Некоторые также считают, что блокировка является недостаточной мерой для предотвращения случайного искажения mbox. В случае Linux искажение возможно, если почтовый процесс завершен в ходе обновления mbox. Формат maildir, напротив, позволяет одновременный доступ нескольких при­ ложений и не требует блокировки файлов. Другие серверы IMAP, например Cyrus, Courier и Dovecot, используют формат maildir и позволяют виртуальным пользователям и пользователям без учетных записей оболочки и домашних каталогов получать доступ к почте. Будучи скон­ фигурированными в отношении Postfix, пользовательские учетные записи имеют только почтовые ящики. Это позволяет системному администратору поддерживать агенты по отправке и получению почты, не управляя самими стандартными учет­ ными записями на сервере. Серверы IMAP, отличные от uw-1mapd, сложны и для конфигурирования требуют существенных знаний, так что вы сами можете судить, оправданно ли их использо­ вание в организации такого размера, как ваша. Если да, то вам стоит изучить другие источники информации, например книгу The Book of Postfix Ральфа Гильдбрандта (Ralf Hildebrandt) и Патрика Каттера (Patrick Katter) (издательство No Starch Press).

Настройка почтового клиента В нашем введении к файлу конфигурации Postfix /etc/postfi x/mai n. cf выше в этой главе мы поставили почтовому клиенту пользователя задачу добавления доменно­ го имени, когда пользователь вводит имя своей учетной записи:

append_dot_mydoma1n = по Это совпадает с поведением большинства клиентов, которые способны прикреп­ ляться к домену, например, ©centralsoft.org, если пользователь вводит имя учетной записи в поле Кому электронного сообщения. Если вы конфигурируете Postfix для использования шифрования, как было показано выше в этой главе, то пользователь также должен конфигурировать свой почтовый клиент для использования шифрования TLS при пересылке почты. Наиболее современные клиенты поддерживают эту возможность и предостав­ ляют графический интерфейс для введения в работу TLS на сервере исходящей почты. Если вы находитесь не в сети, определяемой Postfix, и являетесь стационарным (а не мобильным) пользователем, то применяйте сервер исходящей почты для SMTP. Кроме того, вы должны выбрать TLS, если его использует ваш провайдер. В абсолютном большинстве случаев ваши логин и пароль будут путешествовать по линиям провайдера в виде открытого текста.

Что дальше

133

Для того чтобы ваш почтовый сервер получал почту, вы должны настроить DNS на входящем сервере, как рассказывалось в главе 3. Напомним, что для этого нужно использовать записи MX. Типичная запись MX выглядит так: MX 10 serverl.centralsoft.org. Эта запись сообщает, что электронное письмо, адресованное на домен centralsoft. org, должно быть доставлено на сервер serverl.centralsoft.org (являющийся почтовым сервером домена).

Что дальше В этой главе мы рассмотрели, как установить и настроить Postfix, службы IMAP и POP3. Это важные компоненты почтовой системы, которые вы можете исполь­ зовать в корпоративной среде. Если это ваше первое знакомство с почтой, то теперь вы можете понять, почему предприятия тратят большие суммы денег, покупая комплекты для систем, лицен­ зированных по принципу «за рабочее место». Вы также можете понять, почему они нанимают дюжину или больше системных администраторов для управления своими структурами электронных коммуникаций. Эта область требует специаль­ ной экспертизы. Когда вы прочитаете эту книгу, вы, возможно, захотите изучить больше компонентов прикладных систем электронной почты. Вы должны пони­ мать, как инсталлировать и конфигурировать надежные и масштабируемые поч­ товые серверы и как много усилий необходимо для приобретения опыта в этой области. Вам также нужно иметь представление о таких сервисах директорий, как OpenLDAP или Fedora для валидации большого количества пользователей и со­ ставления списков пользователей почты на вашем предприятии. Следующая глава касается сервиса, который большинство пользователей счита­ ют наиболее важным организационным предложением, — веб-сервера. Сначала мы расскажем вам, как устанавливать наиболее популярный сервер Apache, затем опи­ шем ряд важных возможностей, например динамическую поддержку сайтов и ста­ тистические доклады, и дадим вам некоторые советы по устранению ошибок.

Администрирование Apache В этой главе мы построим черновой вариант веб-сервера Linux. Вы узнаете: О как инсталлировать и конфигурировать Apache, PHP и MySQL; О управлять множественными сайтами с помощью виртуальных хостов; О шифровать критичные страницы с помощью SSL; О активировать расширения серверной стороны и сценарии CGI; О тестировать проблемы эксплуатации и безопасности; О инсталлировать vlogger и вебалайзер для просмотра статистики; О устанавливать Drupal, систему управления содержимым, которая будет вам по­ лезна во многих окружениях и используется многими из этих элементов. Эта глава описывает окружение с одним веб-сервером; в главе 7 мы покажем вам настройку пары веб-серверов для балансировки нагрузки. Веб-серверы велики и сложны, и во время их конфигурирования не всегда ясно, как или почему делаются некоторые вещи. В этой главе мы расскажем, почему вы­ брали одни варианты и пропустили другие. Чтобы сделать объяснения краткими и простыми, будем использовать стандартные процедуры Debian, установленные по умолчанию. Мы будем обеспечивать надежность инсталляции по ходу, чтобы подчеркнуть важность того, что вы должны все время думать о безопасности и стро­ ить ее с самого начала. Кроме того, в конце главы приводится раздел «Устранение ошибок».

Статические и динамические файлы Базовый сайт состоит из файлов разных типов: HTML, рисунков, JavaScript, таб­ лиц стилей и др. Содержание этих файлов статично — оно не меняется на сер­ вере, и вся работа веб-сервера состоит в возвращении их на браузер по запросу. Веб-серверу требуется лишь незначительная конфигурация для обслуживания статических файлов. Многие сайты также имеют динамические аспекты, включая генерирование со­ держимого, контроль доступа, хранение и возвращение базы данных. Простейший способ сделать статические HTML-файлы динамическими связан с расширениями серверной стороны (SSI), являющимися особо форматированными комментария-

Простая настройка LAMP

135

ми для HTML, которые Apache интерпретирует для отображения значений пере­ менных или включения содержимого других HTML-файлов. Включение файлов SSI является для сайта, например, простым способом определения общих верхних и нижних колонтитулов для его страниц. SSI имеет свои границы, поэтому наиболее динамичные сайты используют гораздо более мощные программы стандартного интерфейса обмена данными (CGI). Эти выполняемые программы могут быть написаны на любом языке, под­ держиваемом Linux, хотя наибольшей популярностью пользуются «динамиче­ ские» («сценарные») языки, такие как Perl, PHP, Python и Ruby, за которыми следует JavaScript. CGI — это протокол, указывающий, как веб-клиенты и серверы должны обмениваться запросами и ответами. Когда CGI впервые появился в Сети, его программы были полностью отделены от веб-серверов. Каждый запрос вынуждал веб-сервер запускать новый процесс CGI. За счет запуска увеличивалась нагрузка на систему, и когда сайты стали за­ гружены сильнее, были разработаны альтернативы. Люди часто путают протокол CGI с этим более ранним методом реализации и полагают, что CGI, по существу, является медленным. Хотя стандарт CGI не определяется этой реализацией. Есть более быстрые методы, следующие тому же протоколу CGI. Более быстрым методом является FastCGI, запускающий программу CGI как отдельный длительный процесс и управляющий двусторонней коммуникацией между ним и веб-сервером. Это помогает избежать неудобств постоянной загрузки, а отделение процесса гарантирует, что, если программа CGI выйдет из строя, это не выведет из строя одновременно и весь веб-сервер. FastCGI имеет один недоста­ ток, а именно: программы FastCGI, похожие на автономные программы CGI, не могут попасть внутрь веб-сервера, что может требоваться в некоторых сложных приложениях. Некоторые программы CGI включены в модули Apache, загружаемые как час­ ти самого веб-сервера: интерпретатором Perl становится mod_perl, PHP — mod_php, a mod_squad превращается в ужасную игру слов из 1970-х годов. Эксплуатация программ FastCGI довольно похожа на использование модулей Apache; модули одновременно имеют преимущества и недостатки. Они имеют доступ к внутрен­ ним структурам данных и функций сервера, которые могут быть использованы на различных стадиях сетевых взаимодействий, не только для генерирования HTMLсодержимого. Однако модули увеличивают размер и использование памяти веб­ сервера, а ошибки в модулях могут вывести веб-сервер из строя.

Простая настройка LAMP Стандартная настройка LAMP (Linux, Apache, MySQL, PHP/Perl/Python) ис­ пользует модули Apache для эксплуатации функций CGI. Этот подход хорошо работает и масштабируется, хотя всему есть пределы. Мы укажем на некоторые из возможных ограничений в данной главе, но вы можете пропустить эти разделы, если предпочитаете учиться на горьком опыте. Apache — это не самый быстрый или простой в конфигурации веб-сервер, он также и не наиболее безопасный, но он достаточно хорош, чтобы доминировать

136

Глава 6. Администрирование Apache

над всеми остальными. Согласно Netcraft, с помощью Apache управляется более 60 % всех общедоступных сайтов (http://news.netcraft.com/archives/web_server_survey . html). Apache работает на Linux, Mac OS X и других системах, похожих на UNIX, как и на многих воплощениях Microsoft Windows. Подобно другим программам UNIX, Apache в комбинации со всеми модулями может быть построен в виде одной большой программы (статическая компонов­ ка) или с модулями, загружаемыми в память по мере надобности {dynamic shared objects — динамические объекты совместного использования, или DSOs). Метод DSO более прост и гибок, поскольку он позволяет вам уже после компоновки добавлять к Apache модули. При установке Debian для РНР и других модулей Apache исполь­ зуется метод DSO.

Установка В этом разделе мы настроим Apache, РНР и MySQL. Мы протестируем каждый компонент с настройками по умолчанию, чтобы убедиться, что они работают пра­ вильно. В следующем разделе мы рассмотрим файлы конфигурации Apache и узна­ ем, как улучшить нашу настройку.

Apache Вы должны быть root-пользователем, чтобы инсталлировать пакеты. Сначала по­ лучите сервер Apache:

# apt-get install apache2

Эта команда должна установить сервер Apache и запустить его. Сработало? Чтобы проверить, введите URL своего сайта в браузер. Для примеров в этой главе мы будем использовать имя нашего тестового сервера (http://serverl.centralsoft.org). Когда вы увидите эту ссылку в примере, измените ее на URL вашего сервера. Если вы запускаете браузер на той же машине, что и сервер, и вдруг возникли пробле­ мы с DNS для имени вашего сервера, то можете использовать http://localhost или http://127.0-0.1. Если вы тестируете его снаружи, то можете использовать IP-адрес сервера, например http://70.253.158.4L Введя URL своего сервера в адресной строке браузера, вы должны будете уви­ деть страницу, которая начинается так: If you can see this, it means that the Installation of the Apache web server software on this system was successful. You may now add content to this directory and replace this page.

Ваш браузер также должен показать, что Apache преобразовал введенный вами адрес следующим образом: http://serverl.centralsoft.org/apache2-default Мы объясним это несколько позже, когда дойдем до файлов конфигурации Apa­ che. Но сейчас создадим наш первый сайт. Перейдите в директорию, которую Apache считает домашней для вашего сайта, и создайте маленький текстовый файл: # cd /var/www # echo testing > test.html

Установка

137

Затем наберите URL (например, http://serverl.centralsoft.org/test.html) в браузере. Вы должны увидеть на экране слово testing. Ваш сервер Apache работает без ограничений доступа, обслуживая все файлы и директории, существующие в ка­ талоге /var/www.

PHP PHP — это наиболее популярный модуль Apache CGI. В этой главе мы будем ис­ пользовать РНР 4, остающийся более популярным, чем его потенциальный на­ следник РНР 5. Использование любой из этих версий — хороший способ создания динамических веб-страниц, а большая библиотека модулей РНР добавляет много полезных функций. Начнем с освоения программы РНР и библиотек:

# apt-get install php4

Теперь установим модуль РНР Apache mod_php. Эта команда инсталлирует mod_ php и прикажет Apache исполнять файлы с расширением РНР: # apt-get install 1ibapache2-mod-php4

Создайте этот тестовый сценарий РНР и сохраните его в папке /var/www/info/ Php:

Затем введите URL сценария (http://serverl.centralsoft.org/info.php ) в адресной строке браузера. Вы должны увидеть страницу с таблицами, полными информации по конфигурации РНР. Это информация о вашей машине, и вряд ли вы захотите поведать ее всему миру, поэтому вам следует удалить этот сценарий после тестирования. Если вы ничего не видите, обратитесь к разделу «Устранение ошибок» в конце этой главы. Кстати, если вы новичок, то вы только что написали свой первый сценарий CGI! В следующем разделе по CGI мы более детально расскажем вам о том, как веб-сер­ вер выполняет внешние программы и сценарии.

MySQL Если вам не требуется база данных и у вас платформа LAP, то можете пропустить этот раздел. Для установки LAMP инсталлируйте сервер базы данных MySQL и мо­ дуль РНР MySQL: # apt-get Install mysql-server # apt-get install php4-mysql

Это все, что вам требуется для создания сценария РНР CGI, который может попасть на сервер базы данных MySQL, но мы также инсталлируем стандартный клиент командной строки MySQL (mysql ), чтобы иметь возможность тестировать базы данных без привлечения РНР или Apache: # apt-get install mysql-client

138

®

Глава 6. Администрирование Apache

Если вы запустите клиент mysql, но не укажете имя учетной записи MySQL параметром -и , он попытается использовать имя вашей учетной записи в Linux. В наших примерах мы вошли в систему как root, поэтому имя будет root. Именно поэтому учетную запись администратора MySQL также называют root, и он обладает полным контролем над базой данных. Однако учетные записи root в MySQL и Linux не имеют ничего общего. MySQL хранит имена и пароли своих учетных записей в самой базе данных.

Используйте следующую команду, чтобы проверить, как настроен и работает сервер базы данных: # mysql -u root Welcome to the MySQL monitor. Commands end with : or \g. Your MySQL connection Id Is 5 to server version: 4.0.24_Deb1an-10sarge2-log Type 'help;' or '\h’ for help. Type '\c' to clear the buffer. mysql> show databases; +------------ + | Database | +------------ + I mysql | | test I +------------ + 2 rows In set (0.00 sec) mysql> quit; Bye #

Если это работает, то сервер MySQL задействован. Плохая новость — то, что root-пользователь MySQL запускается без пароля. Зададим какой-нибудь па­ роль (используйте какой-нибудь заковыристый пароль на свой выбор вместо newmysqlpassword): # mysqladmin -u root password newmysqlpassword

Теперь снова попытайтесь войти без пароля: # mysql -u root ERROR 1045: Access denied for user: ’rootOlocalhost' (Using password: NO)

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

# mysql -u root -р Enter password: newmysqlpassword Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection Id Is 8 to server version: 4.0.24_Deb1an-10sarge2-log Type 'help;' or ’\h' for help. Type '\c' to clear the buffer. mysql> quit;

Запишите root-пароль этой MySQL, поскольку вы должны будете сообщать его еще раз, когда мы будем инсталлировать приложение Drupal, а также всякий раз, когда вы захотите войти в MySQL в качестве основного администратора. Из соображений безопасности инсталляция MySQL по умолчанию, которую мы выполнили, ограничивает сервер MySQL локальными клиентами, такими как веб-сценарии РНР в командной строке клиента mysql. В противном случае люди

Файлы конфигурации Apache

139

смогут выйти на вашу базу данных через Интернет, что будет ужасно для такой базы, как ваша. Вы можете проверить, является ли IP-адрес 127.0.0.1 (локаль­ ный адрес или адрес обратной связи) адресом сервера, используя следующую команду: # netstat -tlnp Proto Recv-Q Send-Q Local Address Foreign Address StatePID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN25948/mysqld

Файлы конфигурации Apache Apache использует простые ASCII-файлы конфигурации. Их размещение отли­ чается в зависимости от варианта Linux. В табл. 6.1 показано, где они находятся в Debían. Таблица 6.1. Файлы конфигурации Apache

Файл/каталог Описание в /etc/apache2 apache2.conf

Основной файл конфигурации. Включает остальные файлы через следующие директивы: # Включает конфигурацию модуля Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # Включает все пользовательские конфигурации Include /etc/apache2/httpd.conf # Включает список портов Include /etc/apache2/ports.conf # Включает характерные фрагменты выражений Include /etc/apache2/conf.d/[A.#]*

conf.d/*

Сюда может относиться все, что пожелаете. По умолчанию он пуст

mods-enabled/*. conf

Определения для каждого включенного модуля. Debian включает програм­ мы a2enmod для введения модуля и a2dismod для его отключения. Эффект состоит в перемещении файлов xyz.conf и xyz. load между каталогами /etc/ apache/mods-available и /etc/apache2/mods-enabled для модуля с именем xyz. Файл apache2.conf использует файлы mods-enabled

sites-enabled/*

Определения для каждого сайта. По умолчанию — ООО-default. В этом имени нет ничего магического. Вы можете иметь здесь столько файлов, сколько хотите

.htaccess

Определения для директории, содержащиеся в этом каталоге. Отменяет другие файлы конфигурации, поскольку читается последним. Это справедли­ во, если только параметру AllowOverride не присвоено значение попе. Может быть изменен без перезагрузки Apache. Таким образом, многие веб-мастера позволяют своим клиентам обустраивать сайты, не затрагивая основных файлов конфигурации Apache

Если параметр Al 1 owOverrl de включен для какой-либо директории, то по любому запросу клиента веб-сервер Apache должен проверять каждую директорию от корне­ вого документа до каждого из файлов . htaccess и читать их. Это замедляет Apache. Более важно, что в этом случае некоторые из характеристик конфигурации файлов

140

Глава 6. Администрирование Apache

Apache распространяются на всю файловую систему, затрудняя понимание того, какие параметры эффективны для директории в данный момент времени. Если вам не нужны файлы . htaccess, не используйте их. По умолчанию они отключены.

Директивы конфигурации файлов Каждый файл конфигурации Apache имеет разделы с директивами (команды или настройки) Apache и их значениями. Некоторые директивы входят в состав ядра Apache, тогда как другие применяются только отдельными модулями. Если ди­ ректива относится к модулю, который вы не конфигурировали для использования Apache, веб-серверу не удастся запуститься, а сообщение, содержащее неправиль­ ные строки, будет занесено в журнал ошибок. После того как вы успешно запустите Apache, вы можете посмотреть, какие из ди­ ректив Apache применяются в настоящий момент, напечатав следующую команду:

# /usr/sbin/apache2 -L Раздел «Устранение ошибок» в конце этой главы содержит пошаговые инструк­ ции, которые позволят вам диагностировать проблемы с веб-сервером. Сделав вывод, что тестовый файл работает, вы теперь можете перейти к кон­ фигурированию Apache. Рассмотрим содержимое файла конфигурации Apache по умолчанию: /etc/apache2/sites-enabled/ .OOO-default. Разделы начинаются и закан­ чиваются HTML-тегами:



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

# Ответ на любое имя или IP-адрес : NameVirtualHost * # Для любого виртуального хоста как любого адреса, любого порта:

# Если у Apache есть проблемы, кто должен вступать в контакт? ServerAdmin webmasterfclocalhost

# Наши файлы сайта будут в этой папке: DocumentRoot /var/www/ # Общие директивы на тот случай, если мы переместим DocumentRoot # или забудем определить позже:

# Дать Apache следующие символьные ссылки: Options Fol 1owSymLinks # Заблокировать файлы .htaccess files в поддиректории: Al 1owOverride None

# Сама DocumentRoot:

Файлы конфигурации Apache

141

Options Indexes FollowSymLlnks MultiViews # Запрет файлов .htaccess: AllowOverrlde None Order al low,deny allow from all # Преобразовываем / в /apache2-default, страницу приветствия # co словами "If you can see this...": RedlrectMatch ж/$ /apache2-default/

# Разрешение CGI-сценариев: ScrlptAllas /cgl-Ып/ /usr/11 b/cgl-bln/

Options Indexes Multi Views FollowSymLlnks AllowOverrlde None Order deny,al low Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128

Большинство изменений, которые мы внесем в файлы конфигурации Apache в этом разделе, находятся именно в этом файле. Основной файл конфигурации сер­ вера — / etс/ a pache2/a pache2. conf — содержит много настроек, действительных для всего сервера. Их обычно не нужно менять — некоторые исключения, на которые следует обратить внимание, обсуждаются ниже.

142

Глава 6. Администрирование Apache

Директивы пользователей и групп Эти важные настройки приказывают Apache работать с ID-номерами частных пользователей и групповыми ID-номерами. По умолчанию в файле /etc/apache2/ a pache2. conf для Debian указаны такие директивы: User www-data Group www-data Все файлы и директории, обслуживаемые Apache, должны быть читаемы поль­ зователем и группой. Неверные права доступа к файлам и директориям — очень частые причины таких ошибок Apache, как невозможность просмотреть страницу (или возможность увидеть что-то, чего вы видеть не должны).

Ожидание директив Как правило, Apache отвечает на запросы TCP порта 80, однако вы можете ожидать на других портах вместо 80-го или дополнительно к нему. Обычно для тестиро­ вания используют другой порт: многие применяют порт 81, поскольку его легко запомнить и он не используется для чего-либо еще. Чтобы указать один или более портов, используйте одну из директив Listen:

Listen 81

Если вы будете применять шифрование SSL для некоторых страниц, вам при­ дется включить эту директиву для использования стандартного безопасного веб­ порта: Listen 443

Директива DocumentRoot Каждый сайт имеет корневой каталог документов, то есть директорию, в которой хранятся файлы с содержимым сайта и сценарии. Он указывается директивой DocumentRoot. При настройке Apache в Debian по умолчанию она находится по ад­ ресу /etc/apache2/s1tes-enabled/OOO-defaul t:

DocumentRoot /var/www/

Аутентификация и авторизация Некоторые разделы вашего сайта могут быть открыты всему миру, но другие вам следует оградить от случайных посетителей. Аутентификация определяет, кто посетитель. Авторизация определяет, что посетитель может делать, например: О читать файл; О использовать составляющие сервера; О запускать программу CGI; О создавать главную страницу для директории, в которой такая страница отсут­ ствует. В Apache обычным местом для хранения аутентификационной информации является пользовательский файл с открытым текстом (часто называемый фай­ лом . htpasswd — по программе, модифицирующей его). Пользовательский файл

Файлы конфигурации Apache

143

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

Пользовательские файлы В качестве примера создайте директорию, защищенную паролем, и разместите в ней небольшой текстовый файл: # # # #

cd /var/www mkdir secret cd secret echo "now you see it" > file.html

Поскольку вы его еще не защитили, файл должен быть виден в вашем браузере (http://serverl.centralsoft.org/secret/file.html ):

now you see It

Теперь создайте пользовательский файл: # cd /tmp # htpasswd -с /tmp/users jack New password: blackjtearl Re-type new password: black_pearl Adding password for user jack

Ваш пароль не отобразится так, как вы его печатаете. Следует добавить пара­ метр -с, и только после этого вы сможете запустить программу htpasswd, чтобы создать файл. Не применяйте параметр -с, если позже вы будете добавлять других пользователей, поскольку из-за этого файл придется переписывать.

Если позже вы захотите изменить пароль пользователя jack, то введите следу­ ющее:

# htpasswd /tmp/users jack New password: kraken Re-type new password: kraken Updating password for user jack

Пользовательский файл состоит из строк, в каждой из которых содержатся имя пользователя и зашифрованный пароль, разделенные двоеточием следующим образом: jack :OSRBcYQOd/qsI

Теперь исправьте файл конфигурации сайта Apache /etc/apache2/s 1 tes-enabled/ ООО-default и добавьте такой код (до последней строки ):

AuthName "test" AuthType Basic

144

Глава 6. Администрирование Apache

AuthUserFile /tmp/users Order deny.allow require valid-user

Директива AuthName является обязательной, и за ней должна следовать строка в кавычках. Мы используем здесь значение "test". Кроме того, вы можете приме­ нять пустую строку " ", но по некоторым причинам вы не сможете пренебречь этой директивой. Директива AuthType Basic означает, что мы используем пользователь­ ский файл типа htpasswd. С помощью директивы AuthllserFi 1 е указывается местопо­ ложение этого пользовательского файла. Директива Order сообщает, что Apache по умолчанию должен закрыть доступ. Разрешить доступ можно только тем, кто указан в пользовательском файле. Наконец, директива requi re сообщает, что допускается любой пользователь, указанный в пользовательском файле. Чтобы разрешить поль­ зователю jack видеть скрытую информацию, вы должны заменить команду

require valid-user на require jack

Если у вас несколько допущенных пользователей, то вы должны добавлять их таким образом: require jack will elizabeth Веб-серверу Apache должно быть приказано перечитать свой файл конфигура­ ции относительно этих изменений, чтобы достичь эффекта:

# /etc/init.d/apache2 reload Теперь попытайтесь попасть в закрытый файл (http://www.example.com/secret/file. html) с одной из учетных записей, перечисленных в пользовательском файле. Вы увидите окно с сообщением, подобным следующему:

Enter username and password for "test" at serverl.centralsoft.org Username: Password:

Введите имя пользователя и пароль (вводя пароль, вы будете видеть звездочки) и нажмите кнопку ОК. Вы увидите такое сообщение:

now you see it

Файлы групп Другой способ управления множественными пользователями — применение груп­ пового файла. Создайте файл /tmp/groups, содержащий имя группы, двоеточие и одно или несколько имен пользователей, разделенных пробелами:

pirates: jack will elizabeth Допускается также перечислить пользователей группы индивидуально: pirates: jack pirates: will pirates: elizabeth

Файлы конфигурации Apache

145

Затем добавьте директиву AuthGroupFI 1 е в содержимое файла конфигурации Apache по умолчанию ООО-default:

AuthName "test" AuthType Basic AuthUserFIle /tmp/users Order deny,al low AuthGroupFile /tmp/groups require group pirates

Как обычно, перезагрузите Apache, чтобы ваши изменения вступили в силу:

# /etc/init.d/apache2 reload

Контейнеры и алиасы (псевдонимы) В Apache ограничения авторизации применяются к контейнерам, или к файлам и директориям на сервере. Один из таких контейнеров — раздел Location, обсуж­ давшийся ранее. Здесь мы рассмотрим различные директивы хранилищ.

Абсолютные имена путей: Directory Эта директива указывает директорию на сервере. Рассмотрим пример оригиналь­ ного содержимого файла конфигурации Apache:

Options FollowSymLlnks AllowOverrlde None

Относительные имена путей: Location Данная директива указывает файлы и директории относительно корневого доку­ мента. Например:

Options ExecCGI

Этот код допускает программу CGI в /var/www/cgl. Мы вновь встретимся с ним в подразделе «CGI» этого раздела.

Совпадение образцов: Files и FilesMatch Вам может понадобиться указать файл или директорию, базирующуюся на опре­ деленном текстовом образце. Вот пример, препятствующий скачиванию изображе­ ний с вашего сайта без авторизации, с проверкой, откуда происходит запрос. Ис­ пользуется директива Fl 1 esMatch, позволяющая указывать регулярные выражения (образцы) с отметкой в виде кавычек:

# Некоторые примечания по регулярным выражениям: # \. обозначает символьную константу.

146

Глава 6. Администрирование Apache

# (gif IJP91 Jpeg I png) обозначает любую из этих четырех строк. # $ указывает на конец имени файла. # Регулярное выражение проверяет файлы по расширению # -gif. -Jpg. .jpeg или .png.

# Устанавливаем локальную переменную среды в 1, # если страница, на которую указывает ссылка # (URL этого изображения) на этом сайте. # Устанавливаем local в 0, если URL относится к другому сайту. SetEnvIfNoCase Referer ,,Ahttp://serverl.centralsoft.org/" local=l Order Allow, Deny # Это проверка локальной переменной # и открытие доступа, только если ссылка была локальной. Allow from env=local

Алиасы, или псевдонимы Директива Alias присваивает директории имя: Alias /test /tmp/test

Псевдоним (новое имя), в первый раз появляясь в директиве, имеет последу­ ющим значением точное местоположение директории. Директория может нахо­ диться за пределами корневого документа. В этом случае файл /tmp/test/button. gi f будет доступен по ссылке http://www.example.com/test/button.gif, даже если он не находится в папке /var/www/test.

Ограничения На загруженном сервере Apache способен создать много одновременных дочерних процессов и использовать большой объем памяти. Это может повысить среднюю загруженность и замедлить или даже «подвесить» систему. В табл. 6.2 показыва­ ется, как вы можете ограничить некоторые из рабочих значений Apache в файле конфигурации. Таблица 6.2. Директивы ресурсов Apache

Директива

По умолчанию

Использование

MaxClients

256

Максимальное количество одновременных запросов. При достижении этого значения дальнейшие запро­ сы отклоняются

MaxRequestsPerChild

0 (infinite)

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

KeepAlive

on

Повторное использование соединения TCP между веб-клиентом и Apache. Нарастает при выборе всего содержимого страницы в ходе одного соеди­ нения

KeepAliveTimeout

15

Максимальное время ожидания следующего запроса (в секундах) во время текущего соединения

Файлы конфигурации Apache

147

Расширения серверной стороны SSI могут использоваться для включения результатов программ, содержимого переменных среды исполнения в качестве частей HTML-файла. Синтаксис, пред­ назначенный для указания SSI в файлах конфигурации Apache, может показать­ ся сложным. Например, чтобы разрешить включения только со стороны сервера в /var/www/ssl, но не другие параметры, создайте следующую директорию:

# mkdir /var/www/ssl

и прикажите Apache разрешить внутри ее только SSI:

«location /ss1> Options Includes

Для добавления SSI к существующим параметрам используйте такую команду:

Options -^Includes

SSI позволяет включать содержимое файлов, но она также может запускать лю­ бую программу и включать ее вывод. Это может быть небезопасно, поэтому, чтобы ограничить включение SSI только содержимым файлов, используйте такой код:

Options IncludesNoExec

Если вы хотели бы иметь файлы SSI в разных местах, а не закреплять их в этой директории, можете приказать Apache связать определенное расширение файла с SSI: AddHandler server-parsed .shtml Для работы SSI нужно загрузить запускающий их модуль Apache 1 ncl ude. Если он не был загружен при настройке Apache или РНР по умолчанию, мы сделаем это сейчас:

# a2enmod include Module Include Installed: run /etc/lnlt.d/apache2 force-reload to enable. # /etc/init.d/apache2 force-reload

Команды SSI выглядят как комментарии HTML. Они имеют такую форму:

О О О О

Рассмотрим возможные значения команды: 1 ncl ude — включение файла; echo — отображение переменных среды; ехес — включение вывода команды; conf 1 g — формат некоторых переменных echo.

148

Глава 6. Администрирование Apache

Сначала протестируем включение файла. Создайте два файла: # cd /var/www/ssi # echo "top stuff" > top.html # echo "bottom stuff" > bottom.html

Теперь создайте файл mi ddl e. shtml со следующим содержимым:

< ! - -#i nd ude vi rtual="top. html " - -> middle stuff!

Заключительное использование SSI служит для отображения переменных окру­ жения CGI и некоторых других удобных переменных. Быстрый путь распечатки всех переменных таков:

А для отдельно взятой переменной — такая строка:

Отобразится что-то вроде:

Tuesday. Ol-Aug-2006 02:42:24 GMT Если у вас только статические файлы либо смесь статических файлов и сцена­ риев CGI, наиболее разумно отменить выполнение команды SSI:

Options IncludesNoExec

CGI CGI — это гораздо более гибкий (и опасный) путь запуска программ на веб-сер­ верах, поскольку пользователи могут пропустить информацию по программе. В Apache существует два способа указания, какие программы могут работать как программы CGI.

Файлы конфигурации Apache

149

Расположение Каждая из следующих директив соединит программы CGI в директорию /va г/cgi с началом ссылки вида http://serverl.centralsoft.org/cgi/: ScriptAlias /cgi /var/cgl

или:

Options ExecCGI

Расширения файлов Метод suffix связывает тип MIME (стандартный тип наименования файла) с рас­ ширением. Модуль РНР использует этот метод, чтобы позволить Apache пропус­ кать PHP-файлы интерпретатору mod_php:

AddType appl1cation/x-httpd-php .php Здесь дано полное содержимое файла конфигурации Apache для mod_php (/etc/ apache2/mods-enabl ed/php4.conf), который также воспринимает файлы с расшире­ ниями PHTML или РНРЗ как РНР:

AddType appllcation/x-httpd-php .php .phtml .php3 AddType appllcation/x-httpd-php-source .phps

Первая строка AddType заставляет любые файлы с расширениями РНР, РНРЗ или PHTML выполняться в качестве PHP-программ CGI. Вторая строка AddType заставляет Apache производить структурную распечатку содержимого файлов с расширениями PHPS, а также запускать их и возвращать их результат. Веб-разработчики используют ее для запуска сценария (РНР) и позволяют пользователям видеть печатную версию (PHPS). Если вы случайно указали расширение PHPS, имея в виду РНР, то ваш сценарий не будет выполнен, а вместо этого будет напе­ чатано его содержимое.

LyJ

Никогда не помещайте интерпретатор сценариев, такой как Perl, РНР или Linux shell, в директорию CGI. Их сможет запустить любой человек, обладающий доступом к пользователю и группе Apache.

Когда мы выше тестировали вашу установку РНР, вы создали небольшую РНРпрограмму CGI: