Семинар по системам мониторинга и управления ресурсами CAREN NOC Этот документ является учебником для семинара по мониторингу и управлению ресурсами системы NOC. 1 Апреля 2011г. Copyright (c) 2011 CAREN NOC. All Rights Reserved. Управление ресурсами и мониторинг производительности системы Порядок создания документа Дата Вариант Автор Примечания 1 апр 2011 0.01 Жумабек уулу З. - 1 апр 2011 0.01 Албанов Э. - 1 апр 2011 0.01 Чокутаев С. - Тренинг-курс по системам мониторинга, CAREN NOC. 2/132 Управление ресурсами и мониторинг производительности системы Краткое содержание Порядок создания документа .............................................................................................. 2 Краткое содержание ............................................................................................................. 3 1. Основы системы Debian Linux ................................................................................... 6 2. Установка ОС Debian Linux ...................................................................................... 23 3. Основы использования Linux ................................................................................... 39 4. Security Services ........................................................................................................ 47 5. Основы DNS сервера (BIND) ................................................................................... 50 6. Расширенные возможности DNS (BIND) ................................................................ 56 7. Установка и конфигурация Apache с исходного кода............................................ 58 8. Squid - прокси сервер ............................................................................................... 66 9. Инструмент для веб фильтрации ............................................................................ 80 10. Фильтрация контента (Content Filtering) (утилита Squid Guard) ........................... 85 11. TCP-Упаковщик (Wrapper) ........................................................................................ 90 12. Вводный курс по Брандмауэру ОС Linux ................................................................ 91 13. IP-имитация (iptables) ............................................................................................. 108 14. DNAT (Переадресация портов) ............................................................................. 110 15. Системы мониторинга ............................................................................................ 111 16. Бесплатная почта для корпоративной работы Zimbra ........................................ 125 Тренинг-курс по системам мониторинга, CAREN NOC. 3/132 Управление ресурсами и мониторинг производительности системы Содержание Порядок создания документа .............................................................................................. 2 Краткое содержание ............................................................................................................. 3 1. Основы системы Debian Linux ................................................................................... 6 1.1. Что такое Debian? ................................................................................................ 6 1.2. Что такое GNU/Linux? .......................................................................................... 7 1.3. Что такое Debian GNU/Linux? ............................................................................. 9 1.4. Что такое Debian GNU/kFreeBSD? ................................................................... 10 1.5. Минимальные требования к аппаратному обеспечению ............................... 10 1.6. Дисковые разделы Debian и их размеры ......................................................... 12 1.7. Структура каталогов (File System) .................................................................... 13 1.8. Рекомендуемые схемы разметки ..................................................................... 14 1.9. Имена устройств в Linux.................................................................................... 16 1.10. Программы разметки в Debian.......................................................................... 17 1.10.1. 1.11. Разметка для 64-bit PC.............................................................................. 17 Основы системы LVM........................................................................................ 19 1.11.1. Создание и удаление ................................................................................ 20 1.11.2. Добавление и удаление физических томов ............................................ 21 1.11.3. Изменение размеров ................................................................................. 21 1.11.4. Зеркалирование данных ........................................................................... 22 1.11.5. Восстановление после сбоя ..................................................................... 22 2. Установка ОС Debian Linux ...................................................................................... 23 3. Основы использования Linux ................................................................................... 39 3.1. 4. Security Services ........................................................................................................ 47 4.1. Установка программы SSH ........................................................................... 48 4.1.2. Подключения к удаленному терминалу....................................................... 48 4.2.1. 6. Webmin ................................................................................................................ 48 Установка программы Webmin ..................................................................... 49 Основы DNS сервера (BIND) ................................................................................... 50 5.1. Записи DNS......................................................................................................... 51 5.2. Установка и Конфигурация BIND...................................................................... 52 5.3. DNS Slave (подчиненный компонент системы) ............................................... 54 Расширенные возможности DNS (BIND) ................................................................ 56 6.1. 7. SSH ...................................................................................................................... 47 4.1.1. 4.2. 5. Текстовый редактор vim .................................................................................... 45 Важные параметры настройки.......................................................................... 57 Установка и конфигурация Apache с исходного кода............................................ 58 7.1.1. Уснавка веб-сервера Apache2 ...................................................................... 59 7.1.2. Конфигурация веб-сервера .......................................................................... 59 Тренинг-курс по системам мониторинга, CAREN NOC. 4/132 Управление ресурсами и мониторинг производительности системы 8. Squid - прокси сервер ............................................................................................... 66 9. Инструмент для веб фильтрации ............................................................................ 80 9.1. 10. 9.1.1. Как работает программа DansGuardian ....................................................... 80 9.1.2. Установка ........................................................................................................ 81 9.1.3. Настройка веб браузера ............................................................................... 84 Фильтрация контента (Content Filtering) (утилита Squid Guard) ........................... 85 10.1. 11. Программа DansGuardian .................................................................................. 80 Установка ............................................................................................................ 86 TCP-Упаковщик (Wrapper) ........................................................................................ 90 11.1. Формат файла TCP-упаковщиков..................................................................... 90 11.2. Определение имени демона TCP .................................................................... 91 12. Вводный курс по Брандмауэру ОС Linux ................................................................ 91 13. IP-имитация (iptables) ............................................................................................. 108 14. DNAT (Переадресация портов) ............................................................................. 110 15. Системы мониторинга ............................................................................................ 111 15.1. Система мониторинга Nagios.......................................................................... 111 15.1.1. Установка.................................................................................................. 112 15.1.2. Настройка конфигурации ........................................................................ 113 15.2. Служебное средство контроля (RRDtool + Cacti) ......................................... 117 15.2.1. RRDtool ..................................................................................................... 117 15.2.2. Cacti ........................................................................................................... 117 15.2.3. Преимущества: ........................................................................................ 117 15.2.4. Установка:................................................................................................. 117 15.3. Анализатор пакетов TCP Dump ...................................................................... 123 15.3.1. 15.4. 16. TCP Dump ................................................................................................. 123 Утилита сканирования Nmap .......................................................................... 124 Бесплатная почта для корпоративной работы Zimbra ........................................ 125 Тренинг-курс по системам мониторинга, CAREN NOC. 5/132 Управление ресурсами и мониторинг производительности системы 1. Основы системы Debian Linux 1.1. Что такое Debian? Debian — это организация, полностью состоящая из добровольцев, посвятившая себя разработке свободного программного обеспечения и распространению идеалов сообщества Свободного Программного Обеспечения (Free Software). Проект Debian начался в 1993 году, когда Иэн Мэрдок (Ian Murdock) выпустил открытое приглашение к разработчикам программ внести свой вклад в полноценный программный дистрибутив, основанный на относительно новом ядре Linux. Небольшая группа энтузиастов, на которых повлияла философия GNU, изначально поддерживаемая Фондом Свободного Программного Обеспечения, с годами выросла в организацию, насчитывающую приблизительно 886 разработчиков Debian. Разработчики Debian выполняют различные задачи, включая администрирование Web и FTP сайтов, графический дизайн, юридический анализ программных лицензий, написание документации и, конечно же, сопровождение пакетов. В интересах распространения нашей философии и привлечения разработчиков, которые верят в принципы Debian, проект Debian выпустил множество документов, которые подчёркивают наши ценности и рассказывают, что значит быть разработчиком Debian: Общественный Договор Debian — это утверждение обязательств Debian перед Сообществом Свободного Программного Обеспечения. Любой, кто соглашается следовать Общественному Договору Debian может стать сопровождающим. Любой сопровождающий может добавить новые программы в Debian — при условии, что программы соответствуют нашим критериям свободы, а пакеты следуют нашим стандартам качества. Критерии Debian по определению Свободного Программного Обеспечения (DFSG) — это краткие и ясные определения критериев Debian к свободным программам. DFSG является очень влиятельным документом в Движении Свободного Программного Обеспечения и взят за основу Определения Открытых Исходных Текстов. Руководство по политике Debian — это обширная спецификация стандартов качества проекта Debian. Тренинг-курс по системам мониторинга, CAREN NOC. 6/132 Управление ресурсами и мониторинг производительности системы Разработчики Debian также вовлечены и в другие проекты, некоторые из которых созданы специально для Debian, другие выполняются для части или для всего сообщества Linux. Вот несколько примеров: Проект Linux Standard Base (LSB, Основа Стандарта Linux) нацелен на стандартизацию базовой системы GNU/Linux, что позволит сторонним разработчикам программного обеспечения и оборудования легко разрабатывать программы и драйверы устройств для Linux в целом, а не для конкретного дистрибутива GNU/Linux. Стандарт Иерархии Файловой Системы (FHS) — это попытка стандартизировать организацию файловой системы Linux. Стандарт FHS позволит разработчикам программ сконцентрировать свои усилия на создании программы и не беспокоиться о том, как пакет будет устанавливаться в различные дистрибутивы GNU/Linux. Внутренний проект Debian для детей, его цель — уверенность в том, что Debian'у есть что предложить нашим младшим пользователям. Для более общей информации о Debian, смотрите Debian FAQ. Источник: www.debian.org 1.2. Что такое GNU/Linux? Linux — это операционная система: набор программ, которые позволяют вам работать с вашим компьютером и запускать другие программы. Операционная система (ОС) состоит из нескольких основных программ, которые нужны вашему компьютеру, чтобы он мог общаться и получать инструкции от пользователей; читать и записывать данные на жёсткие диски, ленты и принтеры; контролировать использование памяти; запускать другие программы. Самая важная часть ОС — ядро. В системе GNU/Linux ядром является Linux. Оставшаяся часть системы состоит из других программ, многие из которых написаны проектом GNU или для проекта GNU. Поскольку одно ядро Linux — это ещё не вся работающая ОС, мы предпочитаем использовать термин «GNU/Linux» для обозначения систем, которые многие люди ошибочно называют «Linux». Linux сделана по образцу операционной системы Unix. С самого начала Linux разрабатывалась как многозадачная, многопользовательская система. Этих факторов достаточно, чтобы сделать Linux отличной от других широко известных операционных систем. Однако, Linux отличается намного сильнее, чем вы можете Тренинг-курс по системам мониторинга, CAREN NOC. 7/132 Управление ресурсами и мониторинг производительности системы себе представить. В отличие от других операционных систем, Linux никому не принадлежит. Значительная часть системы разработана добровольцами бесплатно. Разработка того, что позже станет GNU/Linux, началась в 1984 году, когда Фонд Свободного Программного обеспечения начал разработку свободной Unix-подобной операционной системы, названной GNU. Проект GNU разработал всеобъемлющий набор свободного программного обеспечения для использования в Unix™ и Unix-подобных операционных системах, таких как Linux. Эти программы позволяют пользователям выполнять задачи широкого спектра, от простых (копирование или удаление файлов из системы) до сложных (написание и компилирование программ или выполнение сложного редактирования в различных форматах документов). Хотя многие рабочие группы и отдельные люди вложили свой труд в создание Linux, наибольшим пока ещё остается вклад Фонда Свободного Программного Обеспечения. Помимо разработки большинства используемых инструментов, фонд также создал философию и организовал сообщество (независимых программистов и энтузиастов-пользователей). От этого, в свою очередь, стало возможным появление отлаженных Linux систем. Ядро Linux впервые появилось в 1991 году, когда финский студент-компьютерщик по имени Линус Торвальдс (Linus Torvalds) анонсировал первую версию замены ядра Minix в группе новостей comp.os.minix. Подробнее смотрите на сайте Linux Internationals страничку истории Linux. Линус Торвальдс продолжает координировать работу нескольких сотен разработчиков с помощью нескольких сопровождающих подсистем. Есть официальный сайт для ядра Linux. Подробную информацию о списке рассылки linux-kernel можно найти в FAQ списка рассылки linux-kernel. Пользователи Linux имеют огромную свободу в выборе программного обеспечения. Например, пользователи Linux могут выбирать из дюжины различных оболочек командной строки и нескольких графических рабочих столов. Этот выбор часто удивляет пользователей других операционных систем, которые и не думали, что командные оболочки или рабочий стол можно заменить. Linux также менее подвержен сбоям, лучше приспособлен для одновременного выполнения более чем одной программы и более защищён, чем многие другие системы. Благодаря этим преимуществам, Linux быстро завоёвывает рынок серверных операционных систем. С недавних пор, Linux начал становиться популярным среди домашних пользователей и в корпоративной среде. Источник: www.debian.org Тренинг-курс по системам мониторинга, CAREN NOC. 8/132 Управление ресурсами и мониторинг производительности системы 1.3. Что такое Debian GNU/Linux? Комбинация философии и методологии Debian, средств GNU, ядра Linux и других важных программ, составляют уникальный дистрибутив под названием Debian GNU/Linux. Этот дистрибутив собран из большого количества пакетов программ. Каждый пакет в дистрибутиве содержит исполняемые файлы, сценарии, документацию, конфигурационную информацию и имеет сопровождающего, который отвечает за поддержание пакета в актуальном состоянии, отслеживает сообщения об ошибках (bug reports) и общается с основными авторами программы. Огромная база наших пользователей в сочетании с нашей системой отслеживания сообщений об ошибках гарантируют, что проблемы будут быстро обнаружены и устранены. Внимание Debian к деталям позволило создать высококачественный, стабильный и расширяемый дистрибутив. Установленные системы могут быть легко настроены на выполнение самых различных задач: от упрощённого межсетевого экрана (firewall), рабочей станции учёного, до высокопроизводительного сетевого сервера. Debian особенно популярен среди опытных пользователей из-за его технического совершенства и глубокого понимания нужд и ожиданий сообщества Linux. Debian также добавил много новых свойств в Linux, которые теперь повсеместно используются. Например, Debian был первым дистрибутивом Linux, который имел систему управления пакетами для более лёгкой установки и удаления программ. Также он был первым дистрибутивом Linux, который можно обновить до последней версии без переустановки. Debian продолжает быть лидером в разработке Linux. Его процесс разработки является примером того, как хорошо может работать модель Открытых Исходников (Open Source) даже для очень сложных задач, таких как построение и сопровождение целой операционной системы. Наиболее отличительной особенностью Debian от других дистрибутивов Linux является его система управления пакетами. Она даёт администратору системы Debian полный контроль над пакетами, установленными в системе, будь это установка одного пакета или автоматическое обновление всей операционной системы. Также, отдельные пакеты могут быть защищены от обновления. Вы даже можете указать системе управления пакетами программы, которые вы собрали сами и о том, от каких программ она зависит. Тренинг-курс по системам мониторинга, CAREN NOC. 9/132 Управление ресурсами и мониторинг производительности системы Для защиты вашей системы от «троянских коней» и других вредоносных программ, на серверах Debian выполняется проверка, что поступающие пакеты получены только от зарегистрированных сопровождающих Debian. Также, разработчики Debian заботятся о настройке безопасности программ в своих пакетах. Когда случаются проблемы с безопасностью в выпущенном пакете, обычно очень быстро выходят исправления. С помощью простой системы обновлений Debian исправления безопасности можно загружать и устанавливать автоматически через Интернет. Основным и самым лучшим способом получения поддержки системы Debian GNU/Linux и общения с разработчиками Debian является множество списков рассылки проекта Debian (на момент написания этих строк их было более 245). Самый простой способ подписаться на один из этих списков — посетить страницу подписки на списки рассылки Debian и заполнить форму. Источник: www.debian.org 1.4. Что такое Debian GNU/kFreeBSD? Debian GNU/kFreeBSD — это система Debian GNU с ядром kFreeBSD. Этот перенос Debian в настоящее время разработан только для архитектур i386 и amd64, хотя возможен перенос и на другие архитектуры. Заметим, что Debian GNU/kFreeBSD не является системой Linux, и поэтому некоторая информация о Linux к ней неприменима. Подробности смотрите на странице переноса Debian GNU/kFreeBSD и в списке рассылки проекта <[email protected]>. Источник: www.debian.org 1.5. Минимальные обеспечению требования к аппаратному После сбора всей информации о компонентах компьютера, проверьте, что ваше аппаратное обеспечение соответствует требованиям желаемого типа установки. В зависимости от потребностей, у вас может оказаться машина меньшей мощности, чем рекомендовано в таблице ниже. Однако, большинство пользователей рискуют оказаться расстроенными, если проигнорируют эти советы. Тренинг-курс по системам мониторинга, CAREN NOC. 10/132 Управление ресурсами и мониторинг производительности системы Минимальной рекомендуемой конфигурацией для настольной системыявляется машина с процессором Pentium 4, 1 ГГц. Таблица 3.2. Рекомендуемые минимальные требования к системе Тип установки Без настольных приложений С настольными приложениями Память Память Жёсткий (минимум) (рекомендуется) диск 64 мегабайта 256 мегабайт 1 гигабайт 128 мегабайт 512 мегабайт 5 гигабайт Реальное минимальное требование к размеру памяти намного меньше, чем указано в таблице. В зависимости от архитектуры, возможно установить Debian на имеющихся от 20МБ (для s390) до 60МБ (для amd64). То же самое можно сказать о требовании к дисковому пространству, особенно, если вы выбираете сами, какие приложения устанавливать; дополнительную информацию о требованиях к дисковому пространству смотрите в Раздел D.2, «Дисковое пространство, необходимое для задач». Возможно запускать графическое окружение рабочего стола на старых или дешёвых машинах, в этом случае рекомендуется установить менеджер окон, который потребляет меньше ресурсов, чем окружения рабочего стола GNOME или KDE; здесь стоит упомянуть xfce4, icewm и wmaker, но есть и другие. Практически невозможно указать требования к диску и памяти для установки серверной конфигурации, так как это в многом зависит от типа задач, выполняемых сервером. Не забудьте, что в данные размеры не включены размеры файлы, которые обычно лежат на машине: файлы пользователя, почта и данные. Всегда нужно быть более щедрым, когда подсчитываешь место для своих файлов и данных. Дисковое пространство, необходимое для гладкой работы в Debian GNU/Linux уже включено в рекомендуемые требования к системе. В частности, раздел /var содержит много специфичной для Debian информации, а также обычные данные типа журнальных файлов. Файлы dpkg (с информацией о всех установленных пакетах) могут легко занять 40МБ. apt-get также помещает сюда скачанные файлы перед их установкой. Обычно, требуется выделить по крайней мере 200МБ для /var и гораздо больше, если вы планируете установку графического окружения рабочего стола. Источник: www.debian.org Тренинг-курс по системам мониторинга, CAREN NOC. 11/132 Управление ресурсами и мониторинг производительности системы 1.6. Дисковые разделы Debian и их размеры Как минимум, для GNU/Linux требуется один раздел. Вы можете иметь единственный раздел, содержащий всю операционную систему, приложения и ваши личные файлы. Большинство людей считают, что также необходим раздел подкачки, хотя это не совсем верно. «Раздел подкачки (swap)» — это рабочее пространство для операционной системы, которое позволяет использовать дисковое пространство в качестве «виртуальной памяти». Linux работает с виртуальной памятью более эффективно, если она расположена в отдельном разделе. Linux может использовать для подкачки обычный файл, но это не рекомендуется. Однако большинство людей выделяют под GNU/Linux больше одного раздела. Есть две причины, по которым возможно вы захотите разделить файловую систему на несколько маленьких разделов. Первая — это безопасность. Если что-то повредится в файловой системе, пострадает только один раздел. То есть, вам нужно будет восстановить (из резервной копии, которую вы заботливо храните) только часть системы. Как минимум, вам нужно создать так называемый «корневой раздел». Он содержит наиболее важные компоненты системы. Если любой другой раздел будет повреждён, вы всё равно сможете загрузиться в GNU/Linux чтобы починить систему. Это может спасти вас от неприятной полной переустановки системы. Вторая причина обычно более важна для бизнеса, но на самом деле это зависит от того, в каком качестве используется машина. Например, почтовый сервер, получая спам, может легко переполнить раздел письмами. Если вы сделаете для /var/mail отдельный раздел на почтовом сервере, большинство систем будут продолжать работать даже если вас заспамят. Единственным настоящим препятствием по использованию нескольких разделов является то, что часто трудно предсказать размер, который для них нужно выбрать. Если вы сделаете раздел слишком маленьким, то вам придётся или переустанавливать всю систему или постоянно перемещать файлы из-за нехватки места на разделе. С другой стороны, если сделать раздел слишком большим, то это трата места впустую, а оно могло пригодиться где-нибудь ещё. В наши дни дисковое пространство дёшево, но зачем выбрасывать деньги на ветер? Источник: www.debian.org Тренинг-курс по системам мониторинга, CAREN NOC. 12/132 Управление ресурсами и мониторинг производительности системы 1.7. Структура каталогов (File System) Debian GNU/Linux придерживается стандарта Filesystem Hierarchy Standard для каталогов и имён файлов. Этот стандарт позволяет пользователям и программному обеспечению быть уверенным в расположении файлов и каталогов. Уровень корневого каталога представляется просто косой чертой /. На корневом уровне, все системы Debian содержат следующие каталоги: Каталог Содержит bin необходимые исполняемые файлы boot статичные файлы системного загрузчика dev файлы устройств etc настройки системы данной машины home домашние каталоги пользователей lib необходимые библиотеки общего пользования и модули ядра media содержит точки монтирования для съёмных носителей mnt точка монтирования для временно монтируемой файловой системы proc виртуальный каталог для системной информации (для ядер 2.4 и 2.6) root домашний каталог суперпользователя sbin необходимые системные исполняемые файлы sys виртуальный каталог для системной информации (для ядер 2.6) tmp временные файлы usr вторичная иерархия var изменяемые данные srv Данные сервисов, предоставляемых системой opt дополнительное программное обеспечение Далее следует список важных предположений относительно каталогов и разделов. Заметьте, что дисковое пространство может использоваться совершенно по-разному, в зависимости от настроек системы и специфики решаемых задач. Приводимые здесь рекомендации являются лишь отправной точкой в решении задачи разметки. На корневом разделе / всегда физически должны находиться каталоги /etc, /bin, /sbin, /lib и /dev, иначе будет невозможна загрузка системы. Обычно, для корневого раздела требуется 150–250 МБ. В /usr хранятся: все пользовательские программы (/usr/bin) , библиотеки (/usr/lib), документация (/usr/share/doc) и так далее. Этой части файловой системы требуется много места. Вы должны выделить как минимум 500 МБ дискового пространства. Объём этого раздела зависит от числа и типа Тренинг-курс по системам мониторинга, CAREN NOC. 13/132 Управление ресурсами и мониторинг производительности системы пакетов, планируемых к установке. Для рабочих станций общего назначения или серверов цифра может вырасти до 4–6 ГБ. Каталог /var содержит: все изменяющиеся данные типа новостных статей, сообщений электронной почты, веб-сайтов, баз данных, кэша системы управления пакетами и т.д. Размер каталога целиком зависит от степени использования компьютера, но для большинства людей он определяется работой с системой управления пакетами. Если вы собираетесь установить всё, что предлагает Debian, при чём сразу, то 2 или 3 гигабайта для /var должно хватить. Если вы собираетесь производить установку по частям (то есть, установить службы и утилиты, потом программы для работы с текстом, потом X, ...), то можно уложиться в 300–500 МБ. Если пространство жёсткого диска дорого и вы не планируете делать глобальных обновлений системы, то вам будет достаточно 30 или 40 МБ. Каталог /tmp содержит: временные данные создаваемые запущенными программами. Обычно достаточно 40–100 МБ. Некоторые приложения — управление резервным копированием, утилиты работы с CD/DVD и мультимедийными данными — могут использовать /tmp для временного хранения файлов. Если вы планируете использовать данные приложения, то должны выделить пространство под /tmp согласно вашим потребностям. Каталог /home содержит: отдельный подкаталог для каждого пользователя, где хранятся личные данные. Его размер зависит от количества пользователей в системе и какие файлы они будут хранить в своих каталогах. В зависимости от планируемого использования вы должны зарезервировать около 100 МБ для каждого пользователя, но можете изменить это значение согласно своим требованиям. Выделите больше места, если планируете хранить много мультимедийных файлов (картинок, MP3, фильмов) в своём домашнем каталоге. Источник: www.debian.org 1.8. Рекомендуемые схемы разметки Для новичков, устанавливающих Debian только для себя на домашние машины, создание единственного раздела для / (плюс раздел подкачки) вероятно, самый лёгкий и простой путь. Однако, если ваш раздел более 6 ГБ, в качестве типа раздела выберите ext3. Разделы ext2 требуют периодической проверки целостности файловой системы, а это на больших разделах может вызвать паузу при загрузке. Тренинг-курс по системам мониторинга, CAREN NOC. 14/132 Управление ресурсами и мониторинг производительности системы Для многопользовательских систем или систем с большим дисковым пространством будет лучше создать для /usr, /var, /tmp и /home собственные разделы, отдельные от /. Вам может потребоваться отдельный раздел /usr/local, если вы планируете установку многих программ, которые не являются частью дистрибутива Debian. Если ваша машина будет почтовым сервером, вам может потребоваться сделать отдельный раздел под /var/mail. Часто, полезно выделить /tmp в отдельный раздел размером 20–50 МБ. Если вы настраиваете сервер, обслуживающий большое количество пользователей, обычно, хорошо иметь отдельный большой /home раздел. В общем, ситуация с разметкой зависит от цели, которой служит компьютер. Для очень сложных систем вы должны прочитать Multi Disk HOWTO. В нём содержится подробная информация, которая будет наиболее интересна провайдерам Интернет и людям, настраивающим серверы. По поводу размера раздела подкачки существует много точек зрения. Согласно проверенному опытом методу, размер подкачки должен совпадать с размером оперативной памяти. Также, в большинстве случаев он должен быть не менее 16 МБ. Естественно, есть исключения из правил. Если вы пытаетесь одновременно решить 10000 уравнений на машине с 256 МБ памяти, то вам может потребоваться гигабайтный (или более) раздел подкачки. On some 32-bit architectures (m68k and PowerPC), the maximum size of a swap partition is 2GB. That should be enough for nearly any installation. However, if your swap requirements are this high, you should probably try to spread the swap across different disks (also called «spindles») and, if possible, different SCSI or IDE channels. The kernel will balance swap usage between multiple swap partitions, giving better performance. Пример: старая домашняя машина имеет 32 МБ оперативной памяти и 1.7 ГБ жёсткий диск IDE /dev/hda. Здесь можно сделать 500 МБ раздел для другой операционной системы /dev/hda1, 32 МБ раздел подкачки/dev/hda3 и около 1.2 ГБ раздел Linux /dev/hda2. Про то, как будет использовано дисковое пространство можно определить по задачам, которые вы захотите установить после установки системы; смотрите Раздел D.2, «Дисковое пространство, необходимое для задач». Источник: www.debian.org Тренинг-курс по системам мониторинга, CAREN NOC. 15/132 Управление ресурсами и мониторинг производительности системы 1.9. Имена устройств в Linux Имена дисков и разделов в Linux могут отличаться от имён в других операционных системах. Для того чтобы создавать и монтировать разделы вам нужно знать какие имена используются в Linux. Вот основы схемы именования: Первый дисковод гибких дисков называется /dev/fd0. Второй дисковод гибких дисков называется /dev/fd1. Первый SCSI диск (отсчитывая по SCSI ID) называется /dev/sda. Второй SCSI диск (отсчитывая по SCSI ID) называется /dev/sdb и так далее. Первый SCSI CD-ROM называется /dev/scd0, также можно использовать /dev/sr0. Мастер диск первичного IDE контроллера называется /dev/hda. Подчинённый диск первичного IDE контроллера называется /dev/hdb. Мастер и подчинённый диски вторичного контроллера называются /dev/hdc и /dev/hdd соответственно. Новые IDE контроллеры могут на самом деле иметь два канала, эффективно действуя как два независимых контроллера. Имена разделов диска получаются добавлением к имени диска десятичного числа: sda1 и sda2 представляют первый и второй разделы на первом диске SCSI в системе. Вот реальный пример. Предположим, что вы имеете систему с 2-мя SCSI дисками, один имеет SCSI адрес 2, а другой SCSI адрес 4. Первый диск (с адресом 2) называется sda, а второй sdb. Если диск sda содержит 3 раздела, то их имена будут sda1, sda2 и sda3. То же относится к диску sdb и его разделам. Заметим, что если вы имеете два адаптера SCSI (то есть, контроллера), то порядок дисков может показаться непонятным. Лучшее решение в этом случае посмотреть загрузочные сообщения; предполагается, что вы знаете модели дисков и/или их объём. В Linux первичные разделы представляются как имя диска плюс число от 1 до 4. Например, первый первичный раздел первого IDE диска называется /dev/hda1. Логические разделы нумеруются начиная с 5, поэтому первый логический раздел на том же диске называется/dev/hda5. Помните, что это расширенный раздел, то есть первичный раздел содержащий логические разделы, сам по себе не использующийся. Это применимо и к дискам SCSI и к дискам IDE. Источник: www.debian.org Тренинг-курс по системам мониторинга, CAREN NOC. 16/132 Управление ресурсами и мониторинг производительности системы 1.10. Программы разметки в Debian Для работы с различными типами жёстких дисков и компьютерных архитектур разработчиками Debian были адаптированы несколько разновидностей программ разметки. На вашей машине могут работать программы, представленные в списке далее. partman Рекомендуемая утилита разметки в Debian. Этот швейцарский армейский нож может также изменять размеры разделов, создавать файловые системы (как «format» в Windows) и назначать им точки монтирования. fdisk Самая первая программа разметки дисков в Linux, хороша для гуру. Будьте осторожны, если у вас на машине есть разделы FreeBSD. В устанавливаемые ядра включена поддержка этих разделов, но способ их отображения в fdisk может отличаться. Смотрите Linux+FreeBSD HOWTO cfdisk Простая в использовании, полноэкранная программа разметки дисков для повседневного использования. Заметим, что cfdisk не понимает разделов FreeBSD, и ещё раз, поэтому имена устройств могут различаться. Одна из этих программ будет запущена по умолчанию, когда вы выберете Разметка дисков (или типа того). Возможно использовать другую утилиту разметки из командной строки на VT2, но это не рекомендуется. Не забудьте пометить раздел загрузки как «Загрузочный». 1.10.1. Разметка для 64-bit PC Если у вас есть другие операционные системы, например, DOS или Windows, и вы хотите сохранить их, то может потребоваться изменить размеры их разделов, чтобы освободить больше пространства для Debian. Программа установки может изменять размеры файловых систем FAT и NTFS; на шаге разметки выберите Вручную и затем просто выберите имеющийся раздел и измените его размер. Тренинг-курс по системам мониторинга, CAREN NOC. 17/132 Управление ресурсами и мониторинг производительности системы PC BIOS обычно накладывает дополнительные ограничения на дисковую разметку. Есть ограничение на количество «первичных» и «логических» разделов, которые может содержать диск. Также, в BIOS 1994–98 годов, есть ограничения, откуда BIOS может производить загрузку. Подробную информацию можно найти в Разметка в Linux HOWTO и Phoenix BIOS FAQ, но в этом разделе будет дано краткое описание, которое поможет во многих ситуациях. «Первичные» разделы присутствовали в первоначальной схеме разметки дисков на PC. Однако, их может быть только четыре. Чтобы обойти это ограничение, были придуманы «расширенные» и «логические» разделы. Пометив один из первичных разделов как расширенный, вы можете поделить всё его пространство на логические разделы. Вы можете создать до 60 логических разделов на расширенном разделе; однако, вы можете иметь только один расширенный раздел на диске. Linux ограничивает количество разделов до 15 на SCSI дисках (3 первичных раздела, 12 логических разделов), и 63 раздела на IDE дисках (3 первичных раздела, 60 логических разделов). Однако, обычная система Debian GNU/Linux предоставляет только 20 устройств под разделы, поэтому вы не сможете произвести установку на раздел выше чем 20, если только сначала вручную не создадите устройства для этих разделов. Если вы имеете большой IDE диск и не используете ни LBA адресацию, ни драйвера поддержки (иногда предоставляемого производителем жёсткого диска), то загрузочный раздел (раздел, содержащий образ ядра) должен располагаться в пределах первых 1024 цилиндров жёсткого диска (обычно, это 524 мегабайта без BIOS трансляции). Этого ограничения нет в BIOS новее 1995–98 годов (зависит от производителя), которые поддерживают «Enhanced Disk Drive Support Specification». И Lilo, Linux загрузчик, и альтернатива Debian — mbr, должны использовать BIOS для чтения ядра с диска в оперативную память. Если будет найдено расширение прерывания BIOS int 0x13 доступа к диску, то оно будет использовано. Иначе, будет использован обычный старый интерфейс доступа к диску, и не будут использованы адреса, расположенные на диске за 1023-им цилиндром. После загрузки Linux, неважно какой BIOS имеется в компьютере, эти ограничения больше не действуют, так как Linux не использует BIOS для доступа к диску. Если вы имеете большой диск, то можете использовать технологию трансляции цилиндров, которую можно включить в BIOS; она называется LBA (логическая адресация блоков) или режим трансляции CHS («Large»). Подробную информацию о проблемах с большими жёсткими дисками можно найти в HOWTO по большим дискам. Если вы используете схему трансляции цилиндров, а BIOS не поддерживает Тренинг-курс по системам мониторинга, CAREN NOC. 18/132 Управление ресурсами и мониторинг производительности системы расширения доступа к большим жёстким дискам, то ваш загрузочный раздел должен попадать в транслированное представление первых 1024-х цилиндров. Рекомендуемый путь выполнения этого условия — создать маленький (25–50 МБ должно хватить) раздел в начале диска, для использования в качестве загрузочного раздела, а затем создавать любые нужные разделы в оставшейся области. Загрузочный раздел должен быть смонтирован в /boot, так как в этом каталоге хранятся ядра Linux. Такая конфигурация будет работать на любой системе, независимо используется ли трансляции LBA больших дисков или CHS, и независимо от того поддерживает ли BIOS расширение для доступа к большим дискам. Источник: www.debian.org 1.11.Основы системы LVM Менеджер логических томов (англ. Logical Volume Manager) — менеджер логических томов операционных систем Linux и OS/2. LVM — это метод распределения пространства жёсткого диска по логическим томам, размер которых можно легко менять, в отличие от разделов. На 18 сентября 2006 года существовало две версии: первая, стабильная и испытанная, используется преимущественно для ядра Linux 2.4 и OS/2, и LVM2 для ядра 2.6 (её также можно использовать для ядра 2.4, но с патчем). LVM предоставляет собой дополнительный уровень абстракции между физическими/логическими дисками (привычными разделами, с которыми работает fdisk и аналогичные программы) и файловой системой. Это достигается путём разбивки изначальных разделов на небольшие блоки (экстенты, обычно 4—32 МБайт) и объединения их в единый виртуальный том, точнее группу томов (volume group), которая далее разбивается на логические тома (logical volume). Для файловой системы логический том представлен как обычное блочное устройство, хотя отдельные экстенты тома могут находиться на разных физических устройствах (и даже сам экстент может быть распределён подобно RAID). LVM увеличивает гибкость файловой системы, однако, являясь просто промежуточным слоем, не отменяет ограничения и использование других слоёв и усложняет работу. То есть, по-прежнему нужно создавать и изменять разделы, форматировать их; изменение размера должно поддерживаться также и самой файловой системой (так, для JFS и XFS невозможно уменьшить раздел). Дисковое пространство для LVM представлено физическими томами (Physical Volume, PV). Это могут быть винчестеры, разделы или любые другие блочные Тренинг-курс по системам мониторинга, CAREN NOC. 19/132 Управление ресурсами и мониторинг производительности системы устройства. Физические тома дробятся на блоки (Physical Extent, PE) заранее заданного размера. Все полученные блоки образуют группу томов (Volume Group, VG). Из имеющихся в группе томов блоков можно собрать новое виртуальное устройство — логический том (Logical Volume, LV). В простейшем случае каждый блок логического тома (Logical Extent, LE) располагается на некотором блоке физического тома. Приведу пример. Допустим, у нас есть два винчестера: sda и sdb, каждый объёмом 120 GiB. Объявим группу томов vg с размером блока 10 GiB и добавим в неё наши винчестеры. Тогда в группе будет 240 GiB доступного пространства или 24 блока: по 12 блоков с каждого винчестера. Теперь мы можем создать три логических тома: lv0, lv1 и lv2 — объёмом 80 GiB или 8 блоков каждый. Скорее всего том lv0 займёт 8 блоков на винчестере sda, том lv1 — 8 блоков на винчестере sdb, а том lv2 — оставшиеся 4 блока на sda и 4 блока на sdb. Но на самом деле нам не нужно думать, как именно логические тома разместятся на наших винчестерах. Более того, при выполнении некоторых операций с LVM логические тома могут менять своё положение. Это происходит незаметно для приложений, использующих логический том: например, для файловых систем. LVM позволяет динамически добавлять и удалять не только логические тома, но и физические. В нашем примере мы можем удалить логический том lv1, затем уменьшить объём томов lv0 и lv2 до 60 GiB. Тогда в группе томов станет 120 GiB свободного пространства и мы сможем удалить физический том sda из группы. При этом перезагрузка компьютера может понадобиться только для физического добавления или удаления винчестеров. 1.11.1. Создание и удаление Работа с LVM начинается с создания физических томов с помощью команды pvcreate. В нашем примере необходимо вызвать эту команду дважды: pvcreate /dev/sda pvcreate /dev/sdb Команда pvs покажет список всех доступных физических томов. Чтобы создать группу томов, воспользуемся командой vgcreate -s 32M vg /dev/sda /dev/sdb Опция -s задаёт размер физического блока. По умолчанию он равен 4 MiB, но нет смысла дробить дисковое пространство так мелко. Команда vgs выводит список всех групп томов. Теперь можно создать логические тома: Тренинг-курс по системам мониторинга, CAREN NOC. 20/132 Управление ресурсами и мониторинг производительности системы lvcreate -n first -L 20G vg lvcreate -n second -L 30G vg Эти команды создадут устройства /dev/vg/first и /dev/vg/second размером 20 GiB и 30 GiB соответственно. Список всех логических томов можно увидеть с помощью команды lvs. Чтобы удалить логический том first, воспользуемся командой lvremove vg/first Удалить можно только неиспользующийся том. Если том содержит файловую систему, то сначала её нужно отмонтировать. 1.11.2. Добавление и удаление физических томов Чтобы добавить новый винчестер sdc в группу томов, выполним команды pvcreate /dev/sdc vgextend vg /dev/sdc Если теперь мы хотим убрать из группы томов винчестер sda, то выполним команды pvmove /dev/sda vgreduce vg /dev/sda pvremove /dev/sda Команда pvmove переносит все используемые физические блоки с указанного физического тома на другие физические тома, имеющие достаточное количество свободных блоков. 1.11.3. Изменение размеров Уменьшим логический том vg/second, содержащий ReiserFS, до 20 GiB: resize_reiserfs -s 19G /dev/vg/second lvresize -L 20G vg/second resize_reiserfs /dev/vg/second Можно было бы первой же командой уменьшить файловую систему точно до 20 GiB, но на всякий случай лучше использовать последовательность из трёх команд. Файловая система должна быть отмонтирована. Теперь увеличим тот же том до 40 GiB: lvresize -L 40G vg/second Тренинг-курс по системам мониторинга, CAREN NOC. 21/132 Управление ресурсами и мониторинг производительности системы resize_reiserfs /dev/vg/second Эти команды можно выполнять даже без предварительного отмонтирования файловой системы (то же касается и XFS, а вот Ext2/3 не может изменять размер “на лету”). С помощью команды pvresize можно изменять размер физического тома. Эта операция может пригодиться, если вы используете разделы винчестеров в качестве физических томов. 1.11.4. Зеркалирование данных Для повышения надёжности можно использовать зеркалирование данных. При этом каждому логическому блоку соответствует не один физический блок, а два или более на разных физических томах. Если один из винчестеров выйдет из строя, зеркалированный логический том всё равно будет доступен. Создать логический том с одним зеркалом можно с помощью команды lvcreate -n data -m 1 -l 10 vg При этом должно быть достаточное количество физических блоков на трёх физических томах: 10 для самого логического тома, 10 для зеркала и 1 для журнала. Можно обойтись без журнала, указав опцию --corelog, но тогда каждый раз при инициализации логического тома (например, на запуске компьютера) будет происходить пересинхронизация зеркал. Если свободные блоки есть только на двух физических томах, то можно разместить журнал на одном физическом томе с зеркалом: lvcreate -n data -m 1 -l 10 vg /dev/sda /dev/sdb /dev/sdb С помощью команды lvconvert можно добавлять или удалять зеркала и журнал, связанные с уже имеющимся логическим томом. 1.11.5. Восстановление после сбоя Если один из физических томов недоступен, то инициализировать группу томов с помощью команды vgchange невозможно. В этом случае можно поступить так: vgreduce --removemissing vg vgchange -a y vg Первая команда удалит из группы томов вышедший из строя физический том и Тренинг-курс по системам мониторинга, CAREN NOC. 22/132 Управление ресурсами и мониторинг производительности системы каждый логический том, хотя бы один блок которого целиком располагался на удалённом физическом томе. Если утерян физический блок, содержащий журнал зеркалированного логического тома, то этот том будет преобразован в зеркалированный том без журнала (как если бы он был создан с опцией --corelog). Если же утерян физический блок с данными логического тома или его зеркала, то этот том будет преобразован в простой логический том. При наличии достаточного количества свободных физических блоков и томов конфигурацию зеркалированного логического тома можно сразу же вернуть в прежнее состояние с помощью команды lvconvert. 2. Установка ОС Debian Linux Тренинг-курс по системам мониторинга, CAREN NOC. 23/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 24/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 25/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 26/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 27/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 28/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 29/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 30/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 31/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 32/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 33/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 34/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 35/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 36/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 37/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 38/132 Управление ресурсами и мониторинг производительности системы 3. Основы использования Linux Linux поддерживает использование виртуальных консолей или терминалов. Это значит, что вы можете войти в систему (login), запустить программу, и затем перепрыгнуть в другой бланк регистрации, войти (login) и начать другую сессию. Чтобы перейти в другую консоль при использовании Linux в текстовом режиме, войдите в систему и затем нажмите Alt+F2 (по умолчанию будет использоваться первая виртуальная консоль, или vt1). Вы должны увидеть другой экран входа в систему. Войдя, вы будете использовать vt2, или вторую консоль Linux. Для перемещения между консолями, используйте клавишу Alt плюс функциональные клавиши F с номером требуемой сессии. Следует отметить, что по умолчанию существует предельное число доступных сессий (обычно шесть), а также может использоваться одна или более сессий под X Window (занимающих по умолчанию vt7 или vt8). В дополнение к клавишам виртуальных консолей, консоль Linux также различает комбинацию клавиш Ctrl+Alt+Del. При использовании консоли можно прокручивать экран для просмотра. Это осуществляется клавишами Тренинг-курс по системам мониторинга, CAREN NOC. 39/132 Shift+PageUp или Управление ресурсами и мониторинг производительности системы Shift+PageDown. Консоль Linux также поддерживает доступные указательные устройства для операций копирования и вставки. Эта поддержка осуществляется через gpm или mouse-сервер общего назначения, который должен быть запущен при загрузке Linux. Для копирования части текста перетащите текст, удерживая левой клавишей мыши (кнопка 1). Для вставки выберите точку вставки и затем нажмите средней кнопкой мыши (кнопка 2). ls – Вывод содержимого каталога Вы можете быстро просмотреть структуру файловой системы Linux, используя команду вывода содержания каталога, следующим образом: $ ls / bin dev home media opt boot etc lib mnt root srv tmp var proc sbin sys usr В дополнение к имени каждого файла, отображается тип файла, полномочия, число жестких связей, имя владельца, имя группы, размер в байтах и временная метка. $ ls -l total 3 -rw-r--r-- 1 guest users 8 Aug 4 15:56 file1 -rw-r--r-- 1 guest users 8 Aug 5 15:57 file2 -rw-r--r-- 1 guest users 8 Aug 4 15:57 file3 Можно отсортировать содержимое по дате, а не по алфавиту, начиная с самых последних. $ ls -lt total 3 -rw-r--r-- 1 guest users 8 Aug 5 15:57 file2 -rw-r--r-- 1 guest users 8 Aug 4 15:57 file3 -rw-r--r-- 1 guest users 8 Aug 4 15:56 file1 cd – Изменение Каталога Используйте команду cd для перемещения по файловой системе Linux. Эта команда обычно используется со спецификацией расположения каталога или сетевого имени, следующим образом: $ cd /usr/X11 Можно использовать сокращенные варианты команды cd. Например, чтобы быстро переместиться вверх по каталогу, используйте команду cd: $ cd .. Для возвращения в исходный (домашний) каталог из любой точки системы Linux, введите cd команду: Тренинг-курс по системам мониторинга, CAREN NOC. 40/132 Управление ресурсами и мониторинг производительности системы $ cd cp - Копирование Файлов cp file1 file2 – Копирует file1, создавая file2 $ ls file1 file2 file3 $ cp file1 file4 $ ls file1 file2 file3 file4 mv - Переименование Файлов mv [options] source... directory (mv[выбор] источник… каталог) $ ls file1 file2 file3 file4 $ mv file4 /tmp $ ls file1 file2 file3 $ cd /tmp [guest@linux /tmp]$ ls file4 mv [options] source dest $ ls file1 file2 file3 file4 $ mv file4 file5 $ ls file1 file2 file3 file5 rm - Удаление Файлов rm file(s) – Удалить Файл(ы) $ ls file1 file2 $ rm file2 $ ls file1 rm –fr – Удалить Каталог (независимо от его содержимого) $ rm –fr /tmp/testdir mkdir – Создание Каталога (directory) $ ls file1 $ mkdir directory Тренинг-курс по системам мониторинга, CAREN NOC. 41/132 Управление ресурсами и мониторинг производительности системы $ ls -lt total 2 drwxr-xr-x -rw-r--r-- 2 guest 1 guest users 1024 Aug 5 11:40 directory/ users 8 Aug 4 16:04 file1 cat - Объединение файлов и печать на стандартом устройстве вывода cat имя файла Выводит содержимое файла на дисплей $ cat file1 101 3people 2-DK 102 none 1-room 201 2people 2-DK 202 4people 3-LDK less – Скроллинг при чтении содержимого файлов less имя файла $ less /etc/services grep - печать строк, совпадающих с образцом (grep [-cvn] образец [файл1 файл2 ...]) grep [-cvn] pattern [file1 file2 ...] $ cat file1 101 3people 2-DK 102 none 1-room 201 2people 2-DK 202 4people 3-LDK $ cat file2 301 4people 4-DK 302 3people 3-LDK 401 none 2-DK 402 2people 2-DK $ grep LDK * file1:202 4people 3-LDK file2:302 3people 3-LDK echo - создает эхо аргументов $ echo this this $ echo $EDITOR /usr/local/bin/emacs $ echo $PRINTER lab12 Тренинг-курс по системам мониторинга, CAREN NOC. 42/132 Управление ресурсами и мониторинг производительности системы grep - поиск информации в файле или файлах $ cat dict red rojo green verde black negro $ grep red dict red rojo $ grep blanco dict white blanco $ grep brown dict $ more - используется для чтения текстовых файлов $ more poems q - выйти из команды more spacebar - прочитать следующую страницу return key - прочитать следующую строку b - вернуться на одну страницу назад pwd - используется для получения информации о текущей директории. $ pwd /usr/bin sort - используется для сортировки файла. $ cat dict red rojo green verde black negro $ sort dict black negro green verde red rojo tail - используется для просмотра окончания файла. $ cat dict red rojo green verde black negro $ tail 2 dict green verde Тренинг-курс по системам мониторинга, CAREN NOC. 43/132 Управление ресурсами и мониторинг производительности системы red rojo wc - используется для для подсчета количества строк, слов, символов в файле. $ cat dict red rojo green verde blue azul white blanco black negro $ wc dict 5 10 56 tmp $ wc -l dict 5 tmp $ wc -w dict 10 tmp $ wc -c dict 56 tmp find Еще одной часто используемой командой для работы с файлами в Linux является команда поиска нужного файла find. Команда find может искать файлы по имени, размеру, дате создания или модификации и некоторым другим критериям. Общий синтаксис команды find имеет следующий вид: find [список_каталогов] критерий_поиска Параметр "список_каталогов" определяет, где искать нужный файл. Проще всего задать в качестве начального каталога поиска корневой каталог /, однако, в таком случае поиск может затянуться очень надолго, так как будет просматриваться вся структура каталогов, включая смонтированные файловые системы (в том числе сетевые, если таковые есть). Можно сократить объем поиска, если задать вместо одного корневого каталога список из нескольких каталогов (естественно, тех, в которых может находиться искомый файл): $ find /usr/share/doc /usr/doc /usr/locale/doc -name instr.txt Началом "критерия_поиска", определяющего, что именно должна искать программа find, считается первый аргумент, начинающийся на "-", "(", ")"', "," или "!". Все аргументы, предшествующие "критерию_поиска", трактуются как имена каталогов, в которых надо производить поиск. Если не указано ни одного пути, поиск производится только в текущем каталоге и его подкаталогах. Тренинг-курс по системам мониторинга, CAREN NOC. 44/132 Управление ресурсами и мониторинг производительности системы 3.1. Текстовый редактор vim Vim это сокращение от 'Vi Improved'(улучшеный Vi).Vi - это один из самых популярных и мощных редакторов в мире Unix. Vi в свою очередь это сокращение от "Visual" editor (Визуальный редактор). В старые дни,первым редактором на планеты был line editor (линейный редактор), называемый 'ed' (и 'ex'). Визуальный редактор такой как Vi был большим шагом вперед по сравнению с ним. Кстати 'ed' и 'ex' все еще доступны в Линукс.(см. 'man ed' и 'man ex') Для запуска vi используйте команду 'vi filename', где filename – это имя файла, который вы хотите изменить. Если вам необходимо создать новый файл, вы можете просто отметить 'vi newfilename', где newfilename – это имя, которое вы хотите дать новому файлу. Необычность редактора vi –это то, что он содержит два режима, режим ввода и командный режим. При режиме ввода можно только набирать текст, который напрямую записывается в файл, независимо от расположения курсора. При командном режиме можно делать все остальное, включая перемещение курсора, поиск, и настройка опций. Для переключения из режима ввода в командный режим используйте клавишу [ESC]. Если вы забыли сделать это и, в результате, ваша строка заканчивается чем-нибудь вроде ':wq' и т.п., просто удалите ненужные символы, затем нажмите [ESC]. Если вы нажали [ESC] при работе в командном режиме, терминал подаст звуковой сигнал, но с вашим файлом ничего не случится. Если вы не уверены, нажмите [ESC]. Для переключения из командного режима в режим ввода используйте команду i, a, o, или O как описано ниже. Существуют и другие команды, но эти – самые распространенные. Для использования этих команд вы должны находиться в командном режиме. Перемещение курсора Эти команды очень удобны в использовании, так как вы можете сначала набрать цифру, которая покажет редактору сколько раз нужно выполнить команду. Например, команда h перемещает курсор на один символ влево, а 12h перемещает курсор на 12 символов влево. Кстати, вам не должны быть видимы ни число, ни команда, которые вы вводите. Если вы их видите, вы находитесь в режиме ввода; удалите команду, нажмите [ESC] и попытайтесь снова. h – перемещает курсор на один символ влево j – перемещает курсор на строчку ниже k – перемещает курсор на строчку выше Тренинг-курс по системам мониторинга, CAREN NOC. 45/132 Управление ресурсами и мониторинг производительности системы l – перемещает курсор на один символ вправо ^f – перемещает курсор в следующий экран ^d – перемещает курсор на пол экрана вниз ^b - перемещает курсор в предыдущий экран ^u - перемещает курсор на пол экрана вверх ^ - перемещает курсор на начало строки $ - перемещает курсор на конец строки w - перемещает курсор на одно слово вперед, принимая знаки препинания и скобки за отдельное слово W - перемещает курсор вперед к следующему слову b - перемещает курсор на одно слово назад , принимая знаки препинания и скобки за отдельное слово B - перемещает курсор назад к предыдущему слову numberG (номерG)– Переносит курсор в указанный номер строки G – Переносит курсор в конец файла /pattern (/образец) – ищет указанный образец и перемещает туда курсор ?pattern (?образец)- ищет указанный образец в обратном направлении и перемещает туда курсор Удаление текста: x – удаляет символ у которого находится курсор X – удаляет символ слева от курсора dd – удаляет всю строчку, на которой находится курсор Команда d, за которой следует любая из указанных команд перемещения курсора, удаляет указанное количество текста. Например, w перемещает курсор вперед на одно слово, а при использовании dw происходит удаление этого слова. Команда 5h перемещает курсор на пять символов влево, а команда d5h удаляет пять символов слева. Вставка текста Эти команды кажутся на первый взгляд немного запутанными. Команда i означает, что все, что набирается до нажатия [ESC], будет вставлено слева от курсора. Другими словами, эта команда вводит вас в режим ввода с вставлением данных туда, где находился курсор до нажатия клавиши i. Тренинг-курс по системам мониторинга, CAREN NOC. 46/132 Управление ресурсами и мониторинг производительности системы i – вставляет текст слева от курсора (вводит вас в режим ввода) a – добавляет текст справа от курсора (вводит вас в режим ввода) A – добавляет текст в конце строки (вводит вас в режим ввода) o – добавляет новую строку под той, где находится курсор (вводит вас в режим ввода) O - добавляет новую строку над той, где находится курсор (вводит вас в режим ввода) Как осуществить выход При нажатии двоеточия (:) вы увидите его внизу экрана (если, конечно, вы не в режиме ввода - в этом случае удалите его, нажмите [ESC] и затем попытайтесь снова). Все, что вы будете набирать после двоеточия, будет отображаться внизу экрана. После команд, использующих двоеточие, необходимо нажать Ввод. :q! – выход без сохранения изменений :w – сохранить изменения :wq – сохранить изменения и выйти Команды Номера Строки Это может быть полезным для программистов. ^g – показывает внизу экрана на какой вы находитесь строке shows 4. Security Services 4.1. SSH SSH (англ. Secure SHell — «безопасная оболочка»[1]) — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем. Тренинг-курс по системам мониторинга, CAREN NOC. 47/132 Управление ресурсами и мониторинг производительности системы SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол. Таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System. Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удаленного запуска программ (в том числе графических приложений). 4.1.1. Установка программы SSH # apt-get install ssh # apt-get install ssh 4.1.2. Подключения к удаленному терминалу # ssh [remote-server-ip-address] # ssh 192.168.10.10 4.2. Webmin Webmin — это программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров. Используя любой браузер, администратор сервера может создавать новые учётные записи пользователей, почтовые ящики, изменять настройки служб и сервисов, например : веб-сервера Apache, DNS. Однако, в некоторых случаях необходимо знание операционной системы и редактирование конфигурационных файлов вручную. Кроме того, не все возможности операционной системы и не все программы можно конфигурировать через интерфейс Webmin, например nginx пока не входит в базовый набор. Webmin состоит из простого веб-сервера и большого количества скриптов (>500), которые собственно и осуществляют связь между командами администратора через Тренинг-курс по системам мониторинга, CAREN NOC. 48/132 Управление ресурсами и мониторинг производительности системы веб-интерфейс и их исполнением на уровне операционной системы и прикладных программ. Webmin написан полностью на языке Perl и не использует никаких дополнительных нестандартных модулей. Простота, лёгкость и быстрота выполнения команд — одно из самых больших преимуществ данной панели управления. Другое важное преимущество — возможность исправлять конфигурационные файлы вручную, так как Webmin не «портит» конфигурационные файлы, в отличие от некоторых других панелей управления, и следует, как правило, политикам дистрибутивов по конфигурированию программ. Данная панель управления бесплатно распространяется для коммерческого и некоммерческого использования. Авторы этой программы позволяют всем желающим не только бесплатно использовать программу, но и изменять её по своему усмотрению. Работать с Webmin достаточно просто — нужно запустить браузер, набирать https://имя_домена.com:10000/ (по умолчанию) и попасть на страницу администрирования. 4.2.1. Установка программы Webmin Сначала устанавливаем требуемые библиотеки, скачиваем пакет и устанавливаем Webmin. # apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions # wget http://prdownloads.sourceforge.net/webadmin/webmin_1.550_all.deb # dpkg --install webmin_1.550_all.deb Если вы хотите установить и обновить Webmin с помощью APT, вам надо отредактировать файл /etc/apt /sources.list на вашей системе и добавить строки: deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib Вы должны также выбрать и установить GPG ключ, с которым хранилище будет Тренинг-курс по системам мониторинга, CAREN NOC. 49/132 Управление ресурсами и мониторинг производительности системы подписан, с команды: # cd /root # wget http://www.webmin.com/jcameron-key.asc # apt-key add jcameron-key.asc # cd /root # wget http://www.webmin.com/jcameron-key.asc # apt-key add jcameron-key.asc # cd /root # wget http://www.webmin.com/jcameron-key.asc # apt-key add jcameron-key.asc Теперь Вы будете в состоянии установить и обновить Webmin с помощью команд: # apt-get update # apt-get install webmin Все зависимости должны быть решены автоматически. 5. Основы DNS сервера (BIND) Система Доменных Имен, или DNS – это система, хранящая информацию об именах хостов и доменов в сети Интернет. Важно то, что она присваивает каждому хосту IP-адрес и регистрирует почтовые сервера, принимая электронную почту каждого домена. DNS составляет важнейшую часть Интернет, т.к. аппаратным средствам необходим IP-адрес для маршрутизации, а уже люди используют имена хостов и доменов, например в адресах URL и адресах электронной почты. Как работает DNS Тренинг-курс по системам мониторинга, CAREN NOC. 50/132 Управление ресурсами и мониторинг производительности системы Запрашивает IP-адрес Имя сервера www.yahoo.com 2 “” Запрашивает Возвращает имя сервера 3 IP-адрес Имя администратора “” Имя сервера com www.yahoo.com 1 Запрашивает IP-адрес Имя сервера верхнего уровня www.yahoo.com 4 com 8 Возвращает имя сервера 5 Возвращает Имя сервера com jp kg yahoo.com Запрашивает IP-адрес IP-адрес www.yahoo.com www.yahoo.com 6 yahoo.com DNS кэш 7 Возвращает IP-адрес Имя www.yahoo.com сервера yahoo cnn Рис. 6,1. Как функционирует DNS Имя домена, как правило, состоит из двух или более частей (технически – ярлыков), разделенных точками. Самый правый ярлык выражает домен высшего уровня (например, высший домен адреса www.yahoo.com - com). Каждый ярлык левее определяет подраздел субдомена (например, yahoo.com – это субдомен com, а www.yahoo.com – это субдомен yahoo.com). 5.1. Записи DNS Запись A, или запись адреса, отображает имя хоста в виде 32-bit IPv4 - адреса. Запись AAAA, или адреса IPv6, отображает имя хоста в виде 128-bit IPv6 - адреса. Запись CNAME, или запись канонического имени, делает одно имя домена псевдонимом другого. Домен-псевдоним получает все субдомены и DNS-записи оригинального домена. Запись MX, или запись обмена почтой, отображает имя домена в списке почтовых серверов для этого домена. Запись PTR, или запись указателя, относит имя к хоста каноническому имени этого хоста. Установка записи PTR для имени хоста в домене addr.arpa, соответствующему IP-адресу, осуществляет противоположный DNS поиск этих адресов. Например (во время записи), www.icann.net имеет IP-адрес 192.0.34.164, но запись PTR устанавливает его каноническому имени 164.34.0.192.in-addr.arpa, направляя к icann.org. Запись NS, или запись имени сервера, относит имя домена к списку серверов DNS этого домена и используется для делегирования. Тренинг-курс по системам мониторинга, CAREN NOC. 51/132 Управление ресурсами и мониторинг производительности системы Запись SOA, или запись начала полномочий, определяет сервер DNS, обеспечивая информацией по полномочиям Интернет - домена. BIND (Служба доменных имен в сети Интернет) – наиболее часто используемый DNS-сервер в Интернет, особенно для систем типа Unix, где он является фактическим стандартом. 5.2. Установка и Конфигурация BIND Установите следующие пакеты. bind-9 # apt-get install bind9 dlns:~# apt-get install bind9 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: bind9utils libbind9-50 libdns58 libisc50 libisccc50 libisccfg50 liblwres50 Suggested packages: bind9-doc resolvconf ufw The following NEW packages will be installed: bind9 bind9utils libbind9-50 libdns58 libisc50 libisccc50 libisccfg50 liblwres50 0 upgraded, 8 newly installed, 0 to remove and 36 not upgraded. Need to get 1306kB of archives. After this operation, 3641kB of additional disk space will be used. Do you want to continue [Y/n]? y . . . . Adding group `bind' (GID 106) ... Done. Adding system user `bind' (UID 103) ... Adding new user `bind' (UID 103) with group `bind' ... Not creating home directory `/var/cache/bind'. wrote key file "/etc/bind/rndc.key" # Starting domain name service...: bind9. Автоматический запуск BIND t1:/var/lib/named # chkconfig -list | grep bind9 named 0:off 1:off 2:on 3:off 4:off Тренинг-курс по системам мониторинга, CAREN NOC. 52/132 5:off 6:off Управление ресурсами и мониторинг производительности системы t1:/var/lib/named # chkconfig bind9 on t1:/var/lib/named # chkconfig -list | grep bind9 named 0:off 1:off 2:on 3:on 4:off 5:on 6:off 1. Размещение файлов установки Путь Описание /etc/bind/named.conf Основной файл конфигурации /etc/bind/master/test100.kg Основной файл конфигурации для новой области /etc/bind/master/2.168.192.zone Обратный файл области /etc/resolv.conf Конфигурация DNS Client 2. Главная область Для начала необходимо зарегистрировать область в named.conf include "/etc/named.conf.include"; zone "test100.kg" in { file "master/test100.kg"; type master; }; Далее, создать область файла /etc/bind//master/test100.kg $TTL 2D @ IN SOA t100.test100.kg. root.t100.test100.kg. ( 2004110903 3H ; refresh 1H ; retry 1W ; expiry 1D ) ; minimum IN MX 10 t100.test100.kg. IN NS t100.test100.kg. t100 IN A pop3 IN CNAME t100 smtp IN CNAME t100 www proxy t2 ; serial 192.168.2.100 IN CNAME t100 IN CNAME IN A t100 192.168.2.2 Тренинг-курс по системам мониторинга, CAREN NOC. 53/132 Управление ресурсами и мониторинг производительности системы 3. Обратная Область Сначала мы должны зарегистрировать область в named.conf zone "2.168.192.in-addr.arpa" in { file "master/2.168.192.zone"; type master; }; Далее, создать файл обратной зоны # vi /etc/bind/master/2.168.192.zone $TTL 2D @ IN SOA t100.test100.kg. root.t100.test100.kg. ( 2004110903 3H ; refresh 1H ; retry 1W ; expiry 1D ) ; minimum IN NS 100 2 IN IN ; serial t100.test100.kg. PTR t100.test100.kg PTR t2.test2.kg 4. Конфигурация Распознавателя (Resolver) Последнее, что необходимо сделать перед запуском BIND, это настроить локальную программу Распознавателя. # vi /etc/resolv.conf nameserver 192.168.2.100 search test100.kg 5. Как перезапустить При любом изменении конфигурации вам необходимо перезапустить сервис для того, чтобы изменения вступили в силу. # /etc/init.d/bind9 restart 5.3. DNS Slave (подчиненный компонент системы) Этот пример играет роль подчиненного компонента (slave) для test2.gov.kg zone "test2.kg" { type slave; file "slave/test2.kg"; masters {192.168.2.2;}; Тренинг-курс по системам мониторинга, CAREN NOC. 54/132 Управление ресурсами и мониторинг производительности системы }; Как осуществить проверку 1. Команда nslookup # nslookup Default Server: t100.test100.kg Address: 192.168.2.100 > t100 Server: t100.test100.kg Address: Name: Address: 192.168.2.100 t100.test100.kg 192.168.2.100 > www Server: t100.test100. kg Address: Name: 192.168.2.100 www. test100.kg Addresses: canonical name = t100.test100.kg. 192.168.2.100 > set type=mx > test100.kg Server: t100.test100.kg Address: 192.168.2.100 test100.kg MX preference = 10, mail exchanger = t100.test100.kg test100.kg nameserver = t100.test100.kg t100.test100.kg internet address = 192.168.2.100 > 2. Команда dig # dig test100.kg ; <<>> DiG 9.2.3 <<>> test100.kg ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43439 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: Тренинг-курс по системам мониторинга, CAREN NOC. 55/132 Управление ресурсами и мониторинг производительности системы ; test100.kg. IN A IN A ;; ANSWER SECTION: test100.kg. 79836 192.168.2.100 ;; Query time: 14 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Tue Nov 9 05:50:30 2004 ;; MSG SIZE rcvd: 43 6. Расширенные возможности DNS (BIND) Перенаправляющий DNS Таблица 7,1. Каталоги и конфигурационные файлы DNS (BIND) Файл, Каталог Описание /etc/named.conf Конфигурационный файл BIND /etc/bind/master/ Каталог для файлов основной и обратной зоны /etc/bind/slave/ Каталог для файлов подчиненной основной и подчиненной обратной зоны Для использования сервера имен провайдера или сервера имен, уже работающего в вашей сети в качестве перенаправляющего сервера, введите соответствующий IP адрес или адрес в блоке Параметры (options) в строке forwarders. Нижеследующие адреса являются всего лишь примерами. Вводимые данные могут быть изменены в соответствии с вашими настройками. options { directory "/var/lib/named"; forwarders { 10.11.12.13; 10.11.12.14; }; listen-on { 127.0.0.1; 192.168.0.99; }; allow-query { 127/8; 192.168.0.0/24; }; notify no; }; Параметры перенаправления в файле named.conf После блока options следует блок для зоны, (например, для localhost), 0.0.127.in-addr.arpa, и входные данные для указателя, описываемого с помощью символа «.», который всегда должен присутствовать. Соответствующие файлы могут быть использованы в таком же виде - в их изменении нет необходимости. Также Тренинг-курс по системам мониторинга, CAREN NOC. 56/132 Управление ресурсами и мониторинг производительности системы удостоверьтесь в том, что каждая строка заканчивается символом «;» и в правильности местонахождения фигурных скобок. Каждый раз после изменения конфигурационного файла /etc/named.conf или файла настройки зоны перезапускайте BIND. 6.1. Важные параметры настройки Каталог "/var/lib/named" указывает место, где BIND может найти файлы, содержащие записи зоны: forwarders 10.0.0.1;; указывает сервер имен (в большинстве провайдеров), к которому запросы DNS должны быть направлены в случае, когда они не могут быть разрешены напрямую. forward first; становятся причиной направления запросов DNS сервером до того, как будет произведена попытка их разрешения корневым сервером имен. Вместо forward first может быть использован forward only для перенаправления всех запросов, при этом ни один из запросов не направляется корневому серверу имен. Это может стать причиной изменения конфигурации брандмауэра. listen-on port 53 127.0.0.1; 192.168.0.1;; указывает BIND, какой сетевой интерфейс и порт необходимо прослушивать. Спецификация 53 порта может быть пропущена, так как 53 порт является портом по умолчанию. Если эта запись полностью пропущена, то BIND принимает запросы от всех интерфейсов. query-source address * port 53; эта запись необходима в случае, когда брандмауэр блокирует исходящие запросы DNS. Это указывает BIND отправлять запросы внешне от 53 порта и не отправлять запросы от других портов выше 1024. allow-query 127.0.0.1; 192.168.1/24;; определяет сетевой участок, из которого клиенты могут отправлять запросы DNS. Значение /24 в конце является сокращенным определением сетевой маски, в нашем случае 255.255.255.0. allow-transfer ! *;; контролирует, какие узлы могут запрашивать зональные переводы. В приведенном примере такие запросы полностью запрещены с помощью символа «!*». Без этой записи зональные переводы могут запрашиваться откуда угодно без ограничения. notify no; если параметр notify установлен на yes (по умолчанию), при изменении данных зоны уведомления направляются другим серверам имен. Вместо установки глобального оператора 'notify' в блоке 'options' может быть добавлен в зону отдельный оператор 'notify'. Round Robin В методе балансировки нагрузки вся мощь балансировки помещена в самом DNS сервере, в отличие от других методов балансировки, для которых существует необходимость строгого выделения отдельной машины. Round robin работает на циклической основе; имеет только один IP адрес, который последовательно добавляется к концу списка, далее выдается следующий IP адрес и.т.д. Количество IP адресов зависит от численности серверов, используемых в сети. Тренинг-курс по системам мониторинга, CAREN NOC. 57/132 Управление ресурсами и мониторинг производительности системы Данный процесс имеет циклическую форму. Round Robin DNS - обычно используется для балансировки нагрузки географически распределенных веб серверов. Например, одна компания имеет доменное имя с тремя одинаковыми веб страницами, которые находятся на трех разных серверах с разными IP адресами. Когда первый пользователь обращается к WEB странице, то он перенаправляется к первому IP адресу. Затем обращение второго пользователя к веб странице перенаправляется ко второму IP адресу, далее третий пользователь перенаправляется к третьему IP адресу и.т.д. Каждый раз выданный IP адрес перемещается в конец списка. Поэтому четвертый пользователь перенаправляется к первому IP адресу, и т. д. Несмотря на легкость установки, Round Robin DNS имеет и существенные недостатки, такие как время TTL (Time To Live – время жизни) (является причиной нежелательного кэширования адресов, которыми очень трудно управлять), а также недостатки, унаследованные от иерархии DNS. Кроме того, простота использования Round Robin создает непредсказуемые ошибки удалённых серверов и ошибки несовместимости в таблицах DNS. Однако эта методика, вместе с методикой балансировки нагрузки и методами кластеризации, может создавать хорошие решения в некоторых ситуациях. Например, веб портал www.yahoo.com работает на 8 веб серверах. nslookup www.yahoo.com Server: local.gateway Address: 192.168.0.1 Non-authoritative answer: Name: www.yahoo.akadns.net Addresses: 66.94.230.49, 66.94.230.47, 66.94.230.46, 66.94.230.35 66.94.230.43, 66.94.230.48, 66.94.230.37, 66.94.230.51 Aliases: www.yahoo.com ; Round Robin www IN A 212.0.0.1 www IN A 212.0.0.2 Пример Round Robin DNS в файле Zone 7. Установка и конфигурация Apache с исходного кода Apache HTTP-сервер (произносится /ə.ˈpæ.ʧi/, сокращение от англ. a patchy server) — Тренинг-курс по системам мониторинга, CAREN NOC. 58/132 Управление ресурсами и мониторинг производительности системы свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет использовать подключать СУБД для внешние модули аутентификации для предоставления пользователей, данных, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6. 7.1.1. Уснавка веб-сервера Apache2 # apt-get install apache 7.1.2. Конфигурация веб-сервера Файлы конфигурации состоят из директив. Файл - PREFIX/conf/httpd.conf является основным файлом конфигурации. Директивы в данном файле применяются ко всему серверу, однако, действие директив может быть ограничено конкретной директорией URL-адреса. <Директория> <Местоположение> <Виртуальный хост> Можно децентрализовать администрирование с помощью файла .htaccess. Ниже приведен перечень важных директив конфигурации. В версии веб-сервера Apache2.0 данные значения по умолчанию определяются в файле httpd.conf, либо включают в себя файл, например extra/httpd-default conf. Корневой каталог сервера “/usr/local/apache2” ServerRoot Определяет директорию высшего уровня для файлов конфигурации веб-сервера Apache и его журналов регистрации. В качестве корневого каталога сервера (ServerRoot) в настоящем учебнике представлена директория PREFIX. Название файла без косой черты (символ слэш) (/) в начале, Веб-сервер Apache добавляет данный префикс PREFIX к своему префиксу. Например, если в качестве префикса (корневого каталога) PREFIX используется директория ‘usr/local/apache’, то директория ‘doc/cgi-bin’ будет признаваться веб-сервером как ‘usr/local/apache/doc/cgi-bin’ Корневая ссылка для документов DocumentRoot “/var/www” Определяет директорию высшего уровня для HTML -документов. Включение Include conf/extra/httpd-userdir.conf Конфигурационный файл httpd.conf способен включать в себя (вставлять) другие Тренинг-курс по системам мониторинга, CAREN NOC. 59/132 Управление ресурсами и мониторинг производительности системы файлы. Например, модули расширения веб-сервера Apache требуют отдельных установок. Поэтому лучше определить конфигурацию модуля в зависимости от установок вне файла httpd.conf. В веб-сервере Apache2 – файл httpd.conf немного отличается от предыдущей версии, в которой файл httpd.conf был разделен на несколько файлов конфигурации. При необходимости внесения изменений в установки по умолчанию, необходимо удалить пометку ‘#’ и изменить конфигурацию по умолчанию, расположенную в директории conf/extra. Количество httpd серверов (передаваемых с использованием протокола НТТР) - extra/httpd-mpm.conf MinSpareServers 3 (минимальное количество доп. серверов) MaxSpareServers 15 (максимальное количество доп. серверов) StartServers 3 (серверы запуска) Установки по умолчанию расположены в файле ‘extra/httpd-mpm.conf’. Требования к соединению для веб-сервера определяются каждым процессом. Запросы пользователей обрабатываются каждым отдельным процессом. При запуске веб-сервера Apache он запускает минимальное количество процессов, определенных в файле httpd.conf. При запуске веб-сервера Apache процессы httpd запускаются в количестве, не превышающем значения минимального количества серверов MinSpace Servers. Когда количество серверов запуска и минимальное количество серверов определено как 3 (StartServers и MinSpareServers = 3), то результаты начального процесса запуска будут следующими: # ps ax | grep httpd 5728 ? Ss 0:00 /usr/local/apache2/bin/httpd -k start 5729 ? S 0:00 /usr/local/apache2/bin/httpd -k start 5730 ? S 0:00 /usr/local/apache2/bin/httpd -k start 5731 ? S 0:00 /usr/local/apache2/bin/httpd -k start Максимальное количество соединений - extra/httpd-mpm.conf MaxClients 150 (максимальное количество клиентов) Данная установка по умолчанию расположена в файле ‘extra/httpd-mpm.conf’. Определите максимальное количество одновременно поддерживаемых соединений (подчиненных серверов). Если количество соединений достигло максимума, веб-сервер Apache будет отказываться обрабатывать запросы на создание новых соединений. Модули LoadModule AddModule Функции веб-сервера Apache’s могут быть расширены путем определения модулей. Для получения дополнительной информации см. раздел «Модули веб-сервера apache». Тренинг-курс по системам мониторинга, CAREN NOC. 60/132 Управление ресурсами и мониторинг производительности системы Пользователь и группа User daemon (пользователь) Group daemon (группа) Определите имена пользователя и группы для ОС UNIX, которые будут запускать веб-сервер Apache. Apache должен запускаться конкретным пользователем, и он после запуска будет пользоваться правами данного пользователя. Вы не должны запускать веб-сервер Apache с правами привилегированного пользователя, так как права привилегированного пользователя могут быть получены злоумышленником. Пользовательская директория Userdir - extra/httpd-userdir.conf UserDir (пользовательская директория) publilc_html Данная установка по умолчанию расположена в директории ‘extra/httpd-mpm.conf’. Директива определения пользовательской директории UserDir определяет директорию в домашней директории пользователя для случаев, когда будет получен запрос на документ для пользователя. В вышеуказанном случае, когда веб-сервер apache получает запрос ‘domain name/~user’, он изменяет директорию на название ‘user’s home directory’/public_html’. Индекс директории - Directory Index DirectoryIndex index.php, index.html index.htm default.html default.htm Определяет файлы запуска по умолчанию. Директива определения журналов регистрации и типов Log-files/ Log-types ErrorLog /var/log/apache2/error_log CustomLog /var/log/apache2/access_log common Данная директива должна быть изменена, в случае если вы сами определяете директорию для журналов регистрации, в противном случае будет использована директория по умолчанию. Также вы можете определить типы журналов регистрации – общие, отправительские, агентские, комбинированные. Разрешение сценариев для сервера AddHandler AddType cgi-scripts .cgi text/html .shtml AddOutputFilter INCLUDE .shtml Если вы планировать использовать директивы Include с сервера или сценарии CG -I убедитесь, что три вышеуказанные строки в директиве остались без комментариев (uncommented). Конфигурационный файл httpd.conf – Структура директорий <Directory /> Options FollowSymLinks AllowOverride None </Directory> Вы можете определять контроль доступа к блоку директорий. Каждый блок <Directory></Directory> определят конфигурацию доступной Тренинг-курс по системам мониторинга, CAREN NOC. 61/132 информации для Управление ресурсами и мониторинг производительности системы указанной директории и его поддиректорий. Первый блок определяет права доступа по умолчанию ко всем директориям. В нашем случае значок слэш (/) ссылается на директорию, определенную в директиве корневого каталога сервера ServerRoot. Программа-Установщик Apache1 определяет данную директорию по умолчанию в директиве ServerRoot как ‘/usr/local/apache’, программа-установщик Apache2 определяет ее как ‘/usr/local/apache2’ to ServerRoot, будет исключением, если вы явно зададите собственную директорию в директиве определения корневой директории для сервера ServerRoot. 1. Директива опций Options. Директива определения опций Options определяет функции сервера, которые будут применяться к указанной директории, перечень данных функций будет определен в виде перечня с разделением пробелами: ALL – разрешить использование всех опций ExecCGI – разрешить запуск сценариев CGI FollowSymlinks – Разрешить серверу устанавливать символьные связи в данной директории Includes – разрешить SSI (server0side Include) IncludesNOEXEC – Разрешить SSI, но отключить команду SSI #exec и ее использование для сценариев CGI 2. Директива разрешения отмены AllowOverride. Директива AllowOverride разрешает возможность отмены, то есть пользователи могут определять установки опций. Веб-сервер Apache проверяет файл ‘.htaccess’, имеющийся в каждой директории, и затем добавляет его содержимое в файл httpd.conf. В данном случае перечень пользователей и перечень отмен должны находиться в файле ‘.htaccess’. Отключение разрешения отмены ‘AllowOverride None’ не допускает никаких отмен. 3. Образцы определений опций для пользовательской директории. Ниже приводится образец директории, определенной директивой определения пользовательской директории UserDir. Тренинг-курс по системам мониторинга, CAREN NOC. 62/132 Управление ресурсами и мониторинг производительности системы <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> Запуск программы CGI 7.2. ScriptAlias /cgi-bin “/var/www/cgi-bin” В установках по умолчанию допускается исполнять только CGI программы, расположенные в директории, определенной в директиве Script Alias. Все файлы, расположенные в данной директории будут считаться приложениями при запуске веб-сервера Apache. Программа-установщик Apache устанавливает сценарий запуска CGI по умолчанию как “printenv”. Для его запуска наберите команду “http://yourHTTPserver/cgi-bin/printenv” строке URL веб-браузера. Необходимо отметить, что маршрут доступа к языку Perl может быть задан неправильно. Вам может потребоваться изменить маршрут доступа, определенный в “printenv”. Базовая аутентификация 7.3. Этапы конфигурации разделяются на следующие три процедуры: Создание файла пароля Установка конфигурации для использования данного пароля Необязательная процедура – создание файла группы Создание файла пароля (.htpasswd). При первом создании файла пароля в него также добавляется user1 # PREFIX/bin/htpasswd –c PREFIX/conf/.htpasswd user1 запрос пользователю user1 ввести пароль. во второй раз создавать файл пароля не потребуется: # PREFIX/bin/htpasswd PREFIX/conf/.htpasswd user2 Тренинг-курс по системам мониторинга, CAREN NOC. 63/132 Управление ресурсами и мониторинг производительности системы Создать файл .htaccess в веб - директории, для которой вы хотите установить аутентификацию: # vi .htaccess AuthType Basic AuthUserFile "/usr/local/apache2/conf/.htpasswd" AuthName "Authentication Area" Require valid-user Установить директиву AllowOverride в директорию, определенную в файле httpd.conf <Directory "a directory you want to set authentication"> AllowOverride AuthConfig Options None Order allow, deny Allow from all </Directory> Аутентификация группы: Процедуру аутентификации также можно установить для группы таким образом, чтобы ограничить доступ всех входящих в нее пользователей. Создать файл .htgroup (с подобным или другим аналогичным именем): # vi –c PREFIX/conf/.htgroup group1: user11 user12 group2: user21 user22 group3: user31 user32 Создать/изменить файл .htaccess в веб-директории, для которой вы хотите ограничить групповой доступ: # vi .htaccess AuthType Basic AuthUserFile "/usr/local/apache2/conf/.htpasswd" AuthGroupFile "/usr/local/apache2/conf/.htgroup" AuthName "Group Authentication Area" Require group group2 Обновить конфигурацию веб-сервера Apache # killall –HUP httpd Digest аутентификация Как работает справочная аутентификация: В отличие от механизма базовой аутентификации, которая посылается в качестве незашифрованного текста, справочная аутентификация использует хэш код (hash code) MD5. С помощью digest аутентификации пароль никогда не посылается через сеть открыто, он всегда посылается в виде кодировки из хэш символов MD5, обозначающей пароль пользователя. Digest аутентификация выполняется модулем mod_auth_digest. Тренинг-курс по системам мониторинга, CAREN NOC. 64/132 Управление ресурсами и мониторинг производительности системы СУБД Аутентификация Как работает СУБД аутентификация: Базовая аутентификация и справочная аутентификация используют текстовые файлы для хранения информации об аутентификации пользователей. Для аутентификации в веб сайт большого количества запросов, тот факт, что механизм аутентификации использует текстовые файлы для хранения информации об имени пользователя пароле, приводит к замедлению процесса аутентификации, так как текстовые файлы не имеют индексирования. Каждый раз при необходимости выполнения базовой и справочной аутентификации приходится выбирать текстовый файл из рабочей области. СУБД аутентификация помогает решить данную проблему. При этом создается база данных для конкретного блока информации в случае большого блока данных. С помощью команд mod_auth_db, или mod_auth_dbm, веб-сервер Apache сохраняет имена пользователей и пароли в базе данных в файлах DB или DBM. Веб-сервер Apache использует систему управления базами данных Беркли - простую систему базы данных, чтобы сохранить пару записей - имя пользователя и пароль с индексированием ключа и значения данной пары записей. Имея индекс, веб-сервер, Apache способен быстро отыскать нужную пару записей в большом массиве данных. Контроль доступа Контроль доступа ограничивает веб запросы, основывающие на имени хоста, или адресе хоста/сети. Аутентификация по имени пользователя и паролю является лишь частью общей процедуры. Директивы разрешения и запрещения доступа (Allow и Deny) позволяют вам разрешать и запрещать доступ на основании названия хоста, или адресе хоста для компьютеров, направивших запрос на получение документа. Параллельно с вышеуказанными директивами проходит директива приказа (Order), которая указывает веб-серверу Apache в каком порядке применять фильтры. Порядок использования данных директив является следующим: Order allow, deny Allow from all Deny from *.kyrgyzstan-linux,org В примере, когда пользователь попытается получить доступ с одного из персональных компьютеров в файл Kyrgyzstan-linix.org, веб-сервер Apache проверит перечень фильтров, определенных директивой Order в отношении разрешения и запрещения доступа к файлу. В соответствии с жесткой процедурой сначала происходит разрешение доступа в соответствии с требованиями перечня директивы Allow, и затем происходит запрет доступа в соответствии с перечнем директивы Deny. Ниже показан пример ограничения разрешения доступа только для пользователей Тренинг-курс по системам мониторинга, CAREN NOC. 65/132 Управление ресурсами и мониторинг производительности системы локальной сети. Order allow, deny Allow from 192.168.1/24 Deny from all 8. Squid - прокси сервер Приложение Squid является бесплатным кэшируемым прокси сервером, который был разработан множеством индивидуальных специалистов сообщества Интернет (Internet community). Форум данного приложения расположен по адресу http://www.squid-cache.org. Squid может брать на себя исполнение следующих функций: прокси - proxy1 кэш - cache В качестве модуля доступа (proxy) приложение Squid действует как посредник при веб-трансляциях. Он принимает запрос клиента, обрабатывает его и перенаправляет запрос на исходный сервер. Запрос регистрируется, отклоняется и изменяется в соответствии с его установками. Рис. 1-1 показывает режим поведения Squid в качестве прокси сервера (proxy). Клиент отправляет запрос в адрес Squid. Squid в основном поддерживает протоколы HTTP, HTTPS, FTP, а также многие другие. Прокси сервер является посредником с двумя интерфейсами. Одну из сторон представляет клиентский интерфейс, поддерживающий связь с веб-клиентом, с другой стороны находится сервер, поддерживающий связь с серверами HTTP, HTTPS и FTP. HTTP сервер Squid FTP сервер Клиент Рис. 6.1. Поведение Squid в качестве модуля доступа (proxy) Кэширование - это способ хранения запрашиваемых Интернет-объектов (т.е. данных, доступных через HTTP, FTP и гоферовские (gopher) протоколы) в системах, близких к запрашиваемому сайту. Web-браузер может в этом случае использовать локальный proxy - прокси – модуль доступа (напр., к сети Internet); программа-посредник, агент (механизм, посредством которого одна система представляет другую в ответ на запросы протокола; proxy-системы используются в сетевом управлении, чтобы избавиться от необходимости реализации полного стека протоколов для таких простых устройств, как модемы) 1 Тренинг-курс по системам мониторинга, CAREN NOC. 66/132 Управление ресурсами и мониторинг производительности системы «Squid - кэш», как «прокси HTTP сервер», сокращая время доступа и использование пропускной способности. Это очень часто полезно для Интернет-провайдеров (ISP), так как кэширование часто используемых данных уменьшает внешний трафик, что снижает стоимость расходов на него и обеспечивает быстрый доступ к кэшированным данным для их потребителей. Кроме того, Squid обеспечивает некоторую анонимность и безопасность, так как при обращении к внешней сети ведет себя как клиент от имени настоящего клиента. При использовании кэша при ответе он ссылается на запрашиваемый HTTP сервер из кэша приложения Squid. Примерное соотношение ответов на запросы из кэш-памяти составляет 30 – 60%. В настройках клиентской программы (например, браузера) необходимо определить данные прокси-сервера, к которому она должна обратиться, или браузер может использовать прокси без дополнительной конфигурации: «прозрачное кэширование». В этом случае все исходящие HTTP-запросы перехватываются Squid и все отклики кэшируются. Последнее обычно применяется в корпоративных сетях, где все клиенты находятся в одной локальной сети. Squid развивался долгие годы, и является завершенным и устойчивым прокси-сервером с открытым исходным ключом (GPL). Он поддерживает много протоколов, хотя главным образом он используется для протоколов HTTP и FTP. 6.1 Установка и конфигурирование Squid 1. Установить пакет Squid (см. таблицу 6.1.). В установочном диске Debian6 содержится пакет программы версии squid-3 Таблица 6.1. Этапы установки 1) 2) 3) 4) 5) Установка Установка # apt-get install squid acl в директории ,,etc # vi /etc/squid/squid.conf Проверка конфигурации # /usr/sbin/squid –k parse Запуск # /etc/init.d/squid start Автоматический запуск # chkconfig –-add squid 2. Редактировать файл /etc/squid/squid.conf (таблицу 1.1.) Файл конфигурации squid.conf необходим для задания дополнительных настроек программы. Ниже приводится образец конфигурации. # vi /etc/squid/squid.conf Таблица 6.2. Настройки файла конфигурации http_port 3128 Адреса сокета где Squid будет слушать запросы HTTP клиента. Я поменял на 8080 Тренинг-курс по системам мониторинга, CAREN NOC. 67/132 Управление ресурсами и мониторинг производительности системы cache_mem 8 MB 'cache_mem' определяет идеальный объем памяти для использования: Объекты в ходе перемещения Горячие объекты Объекты отказного кэширования Вы можете увеличить, если у вас достаточно памяти. Отследите командой выше и откорректируйте его. maximum_object_size 4096 KB Объекты больше чем этот размер НЕ будут записаны на диск. Значение определяется в килобайтах и по умолчанию равно 4 МБ. Если вы хотите получить более высокую результативность в байтах, вы должны, вероятно, увеличить максимальный размер объекта (одно попадание 32 МБ объекта стоит 3200 10КБ попаданий). Если вы желаете увеличить скорость, которая будет больше, чем вы хотите для сохранения полосы пропускания, вы должны оставить максимальный размер объекта низким. cache_dir ufs /var/cache/squid 100 16 256 Вы можете определить кэш-директорию и объем дискового пространства (MB) для использования под этой директорией. По умолчанию 100MB. Измените его так, чтобы, он соответствовал вашей конфигурации. НЕ помещайте размер вашего дисковода здесь. Взамен, если вы хотите, чтобы Squid использовал весь дисковод, вычтите 20% и используйте это значение. acl our_networks src 192.168.0.0/24 192.168.2.0/24 http_access allow our_networks Разрешение или отказ в доступе основываются на определенных списках доступа. Чтобы разрешить доступ с локальной сети, вы можете задать его как указано ниже: 3. Запустить Squid Вы можете запустить Squid таким образом: # /etc/init.d/squid start Если вы изменили конфигурацию, вы можете быстро перезапустить службу, используя опцию reload # /etc/init.d/squid reload Вы должны настроить Squid, чтобы он работал автоматически. В этом случае он начнет работать с уровня 3 и 5. # chkconfig squid on # chkconfig --list | grep squid squid 0:off 1:off 2:off 3:on 4:off 5:on 6:off Теперь вы способны использовать Squid из браузера для определения вашего Squid Тренинг-курс по системам мониторинга, CAREN NOC. 68/132 Управление ресурсами и мониторинг производительности системы Прокси. 6.1.1 Файл автоматической конфигурации прокси сервера (Proxy Auto Config file (PAC)) После установки приложения Squid веб браузер должен знать адрес брандмауэра. Системный администратор напрямую должен ввести IP-адрес брандмауэра в каждое окно, обеспечивающее «конфигурацию брандмауэра вручную». При изменении IP-адреса брандмауэра системный администратор должен вручную выполнить повторную конфигурацию каждого браузера. Файл автоматической конфигурации брандмауэра (Proxy Auto Config) дает указание браузеру загрузить его конфигурацию брандмауэра из удаленного файла запуска сценария JavaScript, а не скачивать статическую информацию, указанную в браузере напрямую. В данном файле указывается, какие модули доступа используют браузер; для каждого адреса URL вы можете указать различные модули доступа. # cd ‘document_root of apache2’ # vi proxy.pac function FindProxyForURL(url, host) { if (isPlainHostName(host) || isInNet(host, "192.168.0.11", "255.255.255.0") || isInNet(host, "127.0.0.0", "255.255.0.0")) { return "DIRECT" } else { if(url.substring( 0, 5 ) == "http:" || url.substring( 0, 4 ) == "ftp:" || url.substring( 0, 7 ) == "gopher:" ) { return "PROXY 192.168.0.11:3128; DIRECT"; } else { return "DIRECT"; } } } Затем необходимо указать местоположение данного файла proxy.pac в браузере. Тренинг-курс по системам мониторинга, CAREN NOC. 69/132 Управление ресурсами и мониторинг производительности системы Рис. 6.2. Ввод установок PAC файла 8.2. Контроль доступа Контроль доступа позволяет системным администраторам предоставлять доступ пользователям, имеющим соответствующие полномочия, или запрещать его, чтобы предотвратить возможность несанкционированного доступа для пользователей, не имеющих соответствующих прав. Контроль доступа включает в себя два различных компонента: элементы перечня контроля доступа (ACL); правила доступа к перечню. 6.1.2 Элементы контроля доступа Элементы перечня контроля доступа (ACL) являются компонентами организации системы контроля доступа для Squid. Каждый элемент ACL имеет имя, указываемое в правилах доступа к перечню. Основным синтаксисом элемента ACL является следующее выражение: acl name type value1 value2 Squid имеет 25 различных типов ACL. Чтобы избежать избыточности контроля, ниже приводятся некоторые разъяснения по разным типам: o src: IP-адреса источника (клиента); o dst: IP адреса точки назначения (сервера); o myip: локальный IP адрес соединения клиента; o srcdomain: имя домена источника (клиента); Тренинг-курс по системам мониторинга, CAREN NOC. 70/132 Управление ресурсами и мониторинг производительности системы o dstdomain:имя домена точки назначения (сервера); o port: номер порта точки назначения (сервера); o ident: строка, проверяющая имя пользователя; o proto: протокол передачи (http, ftp, и так далее); o proxy_auth: аутентификация пользователя через внешние процессы; o snmp_community: проверка строки через простой протокол сетевого управления SNMP. 6.1.3 Правила доступа к перечню На втором этапе происходит проверка правил доступа к перечню. В правиле доступа к перечню элементы контроля доступа объединяются, создавая условия для разрешения или отмены доступа к определенным действиям. Squid имеет несколько правил доступа к перечню: o http_access: разрешает HTTP клиентам (браузерам) получить доступ к HTTP порту. Это первичный перечень контроля доступа; o http_reply_access: разрешает HTTP клиентам (браузерам) получить ответ на их запрос. Кроме того, данный элемент ограничивает разрешения, в соответствии с данным правилом http_access, и его основной задачей является использование совместно с acl типом the rep_mime_type для блокирования типов с другим содержанием; o never_direct: контролирует, какие запросы никогда не должны направляться на исходный сервер напрямую; o snmp_access: контролирует доступ SNMP клиента к кэш-памяти. 6.1.4 Как Squid проверяет соблюдение правил доступа к перечню Правила доступа к перечню при их наличии должны обязательно проверяться. Поиск в перечне прекращается, как только будет отмечено исполнение хотя бы одного правила. Так как правило включает в себя несколько элементов ACL, оно использует логическую функцию «И» (AND). Другими словами для выполнения правила в нем должны быть выполнены все элементы ACL. Это значит, что можно составить правило, которое никогда не сможет быть исполнено. Например, номер порта никогда не сможет одновременно иметь номера 80 и 8000. http_access allow|deny acl AND acl AND ... Тренинг-курс по системам мониторинга, CAREN NOC. 71/132 Управление ресурсами и мониторинг производительности системы ИЛИ http_access allow|deny acl AND acl AND ... ИЛИ Пример 1 acl ALL src 0/0 acl Grigory ident grigory acl Mihael ident mihael acl Natasha ident natasha http_access allow Grigory http_access allow Natasha http_access deny All В данном примере указывается что, только пользователи с именами grigory и natasha будут иметь доступ к Squid. Пример 2 acl All src 0/0 acl Net0 src 192.168.0./24 acl Net1 src 192.168.1./24 acl Net2 src 192.168.2./24 acl Net3 src 192.168.3./24 acl WorkingHours time 08:00-16:30 http_access allow Net0 WorkingHours http_access allow Net1 WorkingHours http_access allow Net2 WorkingHours http_access allow Net3 http_access deny All Вышеуказанный пример использования http_access аналогичен примеру, приведенному ниже, который гораздо легче для понимания. http_access allow Net3 http_access deny ! WorkingHours http_access allow Net0 http_access allow Net1 http_access allow Net2 http_access deny All 6.2 6.2.1 Аутентификация модуля доступа Как работает аутентификация модуля доступа Squid поддерживает функцию, обеспечивающую аутентификацию модуля доступа к протоколу HTTP. С помощью аутентификации модуля доступа запрос HTTP клиента включает заголовок, содержащий данные аутентификации (authentication credentials) Тренинг-курс по системам мониторинга, CAREN NOC. 72/132 Управление ресурсами и мониторинг производительности системы – имя пользователя и пароль. Squid декодирует информацию мандата и проверяет ее достоверность. Squid поддерживает три вида данных аутентификации: базовый HTTP протокол справочный протокол аутентификации (Digest authentication protocol) NTLM Если Squid был сконфигурирован на использование аутентификации модуля доступа (proxy authentication), он создает внешние вспомогательные подпроцессы. Очевидно, что процесс аутентификации осуществляется через внешние процессы. Исходный текст программы Squid включает вспомогательные программы для осуществления базовой аутентификации. Они включают в себя: LDAP: использует облегченный протокол доступа к директории; NCSA: использует файл с именем пользователя и паролем типа NCSA; MSNT: использует домен аутентификации Windows NT; PAM: использует схему подключаемых модулей аутентификации ОС Linux Pluggable; SMB: использует SMB сервер, применяемый, например, в Windows NT или в Samba. getpwam: использует старый файл паролей для Unix; sasl: использует SALS библиотеки; winbind: использует аутентификацию Samba в домене Windows NT. Директива в auth_param файле конфигурации squid.conf конфигурацию вспомогательных программ. 6.2.2 Установка базовой аутентификации NCSA Создайте элемент ввода пароля. В первый раз требуется использование аргумента –c: # $APACHE_HOME/bin/htpasswd -c /etc/squid/passwd username New password: xxxxxx Re-type new password: xxxxxx После первого использования аргумент -c больше не нужен: # $APACHE_HOME/bin/htpasswd /etc/squid/passwd username Местом ввода ACL определен файл squid.conf: Тренинг-курс по системам мониторинга, CAREN NOC. 73/132 контролирует Управление ресурсами и мониторинг производительности системы # vi /etc/squid/squid.conf # auth_param auth_param basic program /usr/sbin/ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours # proxy_auth entry (изменить строку: acl aclname proxy_auth username …) acl foo proxy_auth REQUIRED # Access to the HTTP port: http_access allow foo Повторно запустите Squid: # killall squid # /usr/sbin/squid –s 6.3 Иерархическая структура кэш-памяти (Cache Hierarchy) 6.3.1 Как работает иерархическая структура кэш-памяти Одной из причин установки прокси сервера является функция кэш-памяти. Прокси сервер сохраняет информационные ресурсы, к которым клиент получает доступ. В следующий раз при получении аналогичного запроса прокси сервер возвращает объект клиенту из своей кэш-памяти вместо того, чтобы разрешить доступ к сайту. В результате этого кэш-память снижает потребность в увеличении пропускной способности и обеспечивает быстрый доступ к информации. Однако в больших сетях, насчитывающих более 500 клиентов, все запросы также концентрируются на прокси сервере (proxy). Это приводит к снижению пропускной способности сети. В данном случае приходит на помощь иерархическая структура кэш-памяти. Как показано на рис. 1-3, иерархическая структура кэш-памяти представляет собой набор из прокси-серверов, обеспечивающих кэширование, организованных определенным образом контролирующий/подчиненный сервер и с использованием родственной структуры (sibling) (вершины дерева, имеющие общего родителя). Когда кэш-память запрашивает объект у вышестоящего сервера (если сервер не имеет данного объекта в своей кэш-памяти), этот сервер скачивает данный объект, заносит его в кэш-память и предоставляет в распоряжение нижестоящему серверу. Основным преимуществом установки иерархической структуры кэш-памяти является снижение нагрузки на прокси серверы, снижение использования линий связи, обеспечение быстрого доступа к объекту и возможность создания сложной структуры кэш-памяти, содержащей большой объем информации. Тренинг-курс по системам мониторинга, CAREN NOC. 74/132 Управление ресурсами и мониторинг производительности системы Интернет Squid A1 Родитель/ потомок Родитель/ потомок Squid B1 Клиент Squid A2 Родитель/ потомок Размещение Squid B2 Клиент Sibling Squid C1 Клиент Клиент Рис. 6.3. Иерархическая структура кэш-памяти При среде кэш-памяти, использующей иерархическую структуру, для связи между кэшами squid применяется ICP протокол. ICP протокол размещает конкретные объекты в родственные кэши (sibling). Если кэш программа squid не имеет необходимого документа, он посылает ICP запрос родственным кэшам (siblings), и с помощью ICP протокола родственные кэши отвечают положительно “HIT'' или отрицательно “MISS.'' 6.3.2 Конфигурация Конфигурация иерархической структуры кэш-памяти, расположенная в файле squid.conf, имеет прямую конструкцию. На вышеуказанном рисунке Squid A1 и Squid A2 являются вышестоящими серверами для подчиненных серверов. Конфигурирование Squid A1 как вышестоящий сервер для Squid B1 и B2 производится в файле squid.conf, также должно устанавливать родственные отношения (sibling) между Squid B2 и Squid C1, чтобы предоставить Squid C1 возможность использования кэшированных объектов Squid A1. Чтобы дать указания для Squid об установлении взаимоотношений, необходимо использоваться директивой ‘cache_peer’ в файле squid.conf. cache_peer hostname type http-port icp-port hostname: the neighbour’s hostname, or IP address (имя хоста соседа или его IP адрес) type: parent, or sibling. (вышестоящий или родственный) http-port: HTTP port number, usually 128 (номер HTTP порта, обычно 128) Тренинг-курс по системам мониторинга, CAREN NOC. 75/132 Управление ресурсами и мониторинг производительности системы icp-port: ICP port number. usually 3130 (номер ICP порта – обычно 3130) На рис. 1-3 каждая конфигурация в файле squid.conf должна выглядеть следующим образом: Squid A1, A2 # no cache_peer Squid B1 cache_peer SquidA1 parent 3128 3130 Squid B2 cache_peer SquidA1 parent 3128 3130 cache_peer SquidC1 sibling 3128 3130 Squid C1 cache_peer SquidA1 parent 3128 3130 cache_peer SquidB2 siblingparent 3128 3130 6.4 Пулы задержки (Delay Pools) 6.4.1 Как работают пулы задержки Представьте себе, что кто-то постоянно смотрит фильмы с помощью программы RealPlayer через Интернет, что абсолютно не связано с его рабочими обязанностями. Нагрузка данного пользователя на Интернет перегружает телефонную сеть ISDN, что замедляет работу в Интернете для других пользователей. Если у данного пользователя будет запрещено соединение, то возникшая проблема будет решена. Однако Squid имеет изобретательный способ препятствовать перегрузке трафика. Пулы задержки представляют собой функцию ограничения скорости и разделения трафика. Они работают путем ограничения скорости, при которой Squid возвращает отсутствующие в кэш-памяти данные. Информация, находящаяся в кэш-памяти, пересылается с максимально доступной скоростью, обеспечиваемой местной сетью. Пулы задержки имеют “сегмент остановки полосы пропускания”. При этом ответ задерживается на определенное количество времени, до тех пор, пока не будет исчерпана остановка полосы пропускания. В конфигурации пула задержки задается максимальная скорость пропускания в битах в секунду. Более ранние версии разрешали пользователю использовать всю полосу пропускания линии, если он не использует ее по максимуму, что позволяло временами резко увеличивать скорость передачи информации. При резком увеличении скорости передачи информации происходит опустошение буфера остановки полосы пропускания, и тем самым ограничивается скорость доступа к информации, так как требуется некоторое время для заполнения данного буфера. Таким образом, экономные пользователи получают дополнительные выгоды по увеличению скорости доступа к информации, создается препятствие возможности перегрузки трафика. Далее описывается, каким образом пользователю предоставляется возможность воспользоваться резким увеличением скорости скачивания информации. Есть три типа буферов остановки: Тренинг-курс по системам мониторинга, CAREN NOC. 76/132 Управление ресурсами и мониторинг производительности системы пул класса 1: один общий сегмент, распределяемый между всеми пользователями пул класса 2: один общий сегмент, разделенный на 256 отдельных сегментов пул класса 3: один общий сегмент, разделенный на 258 сетевых сегментов и 65,536 индивидуальных сегмента Необходимо отметить, что для включения функции пулов задержки Squid должен быть перекомпилирован или восстановлен с использованием опции “--enable-delay-pools” (расположенной в директории ./configure –enable-delay-pools). 6.4.2 Конфигурация файла squid.conf Существует несколько различных директив, связанных с конфигурированием пулов задержки delay_pools ‘number of pools’ // количество пулов для Squid; delay_class ‘pool number’ ‘class_number’ // определение класса каждого пула задержки. Например, delay_class 1 3: первый пул будет иметь класс 3 delay_class 4 2: четвертый пул будет иметь класс 2 delay_parameters ‘pool number’ rate(Bytes)/size(Bytes) [rate(Bytes)/size(Bytes)] [rate(Bytes)/size(Bytes)] // определение полосы пропускания и максимального размера каждого типа сегментов. К примеру, delay_class 4 2 delay_parameters 4 7000/15000 3000/4000 delay_access ‘pool number’ [allow/deny] ‘users’ // определяет какие конкретно запросы должны проходить через определенные пулы задержки, например, Delay_access 1 allow Student. 6.4.3 Примеры 1). Пример 1 Тренинг-курс по системам мониторинга, CAREN NOC. 77/132 Управление ресурсами и мониторинг производительности системы ########EX1 - delay pools class 1######### # пример снижения пропускной способности, пользователи совместно используют канал 512 кБит/сек delay_pools 1 delay_class 1 1 # 512 Kbit/s fill rate, 1 MB in reserve delay_parameters 2 65536/1048576 acl All src 0/0 delay_access 1 allow All Значения delay_parameters задаются в байтах, значит, пропускная способность, указанная в битах в секунду, должна делиться на 8. “acl All src 0/0” создает правило доступа All, и включает в себя весь диапазон IP. “delay_access 1 allow All” указывает, какой запрос проходит через конкретный пул задержки. В вышеуказанном примере отсутствуют ограничения для отдельных пользователей. Это значит, что пользователи используют один и тот же сегмент памяти. Во время простоя Squid будет «заполнять» сегмент, разрешая пропускную способность более 512 к-бит/сек до тех пор, пока не будет заполнен резервный сегмент емкостью 1 МБ. Затем пользователи будут иметь ограничение пропускной способности канала до 512 кбит/сек, с резервированием полосы пропускания для других приложений, таких как электронная почта, веб-сервер, или случаи перегруженности линии связи. 2). Пример 2 ########EX2 – пулы задержки класса 3######### # простое снижение пропускной способности пользователи совместно # используют канал связи 512 кбит/сек delay_pools 1 delay_class 1 3 # заполнение канала 512 кБит/Сек, 1 МБ в резерве delay_parameters 2 65536/104856 acl All src 0/0 delay_access 1 allow All Одной из проблем примера 1 является отсутствие ограничения перегрузки канала связи для неэкономных пользователей. Чтобы уменьшить пропускную способность канала для отдельного пользователя необходимо использовать пулы задержки классов 2 и 3. В примере 3 общая пропускная способность канала также составляет 512 кбит/сек, но для каждого отдельного пользователя она ограничена до 128 кбит/сек. 3). Пример 3 Тренинг-курс по системам мониторинга, CAREN NOC. 78/132 Управление ресурсами и мониторинг производительности системы ########EX2 – пулы задержки класса 2######### # предоставляет расширение пропускной способности канала для # экономных групп пользователей delay_pools 2 delay_class 1 1 delay_class 2 1 delay_parameters 1 65536/1048576 delay_parameters 2 10000/50000 acl goodUsers src 192.168.4.32-192.168.4.127/32 acl All src 0/0 delay_access 1 allow goodUsers delay_access 2 allow All В данном случае обеспечивается предоставление разных классов обслуживания. В вышеуказанном примере некоторые пользователи имеют большую пропускную способность канала связи путем выбора конкретных IP каналов. Генератор отчетов анализа состояния журналов регистрации Squid 6.5 (Squid Analysis Report Generator) - SARG 6.5.1 Что такое SARG? SARG (Squid Analysis Report Generator) – генератор отчетов анализа состояния журналов регистрации, является бесплатной программой, предназначенной для создания HTML отчетов из файла Squid access.log. Отчеты включают в себя в иерархическом порядке имена пользователей, названия сайтов, дату доступа, время, загруженные данные. можно SARG скачать по адресу http://sarg.sourceforge.net/sarg.php. 6.5.2 Установка # tar zxvf sarg-2.0.9.tar.gz # cd sarg-2.0.9 # ./configure \ --enable-bindir=”директория, в которой расположен исполняемый файл” \ 000 + --enable-sysconfdir=”директория, в которой расположен файл конфигурации” \ --enable-mandir=”директория, в которой существует пользователя man ” # make # make install # cd /usr/local/sarg # rm –R /usr/local/sarg-2.0.9 Файл конфигурации отредактируйте следующим образом: Тренинг-курс по системам мониторинга, CAREN NOC. 79/132 руководство Управление ресурсами и мониторинг производительности системы # vi sarg.conf # TAG: access_log file # Where is the access.log file # sarg -l file # access_log “/var/log/squid/access.log” : # TAG: output_dir # The reports will be saved in that directory # sarg -o dir # output_dir "/usr/local/apache2/htdocs/analysis” : # sarg или /usr/bin/sarg Наберите следующий адрес в вашем веб браузере: http://192.168.0.11/analysis/ 9. Инструмент для веб фильтрации 9.1. Программа DansGuardian 9.1.1. Как работает программа DansGuardian Программа DansGuardian – это бесплатно распространяемый фильтр данных скачиваемых с Интернета, который запускается перед Squid, и является полезным приложением для школ, чтобы не допускать просмотра порнографических сайтов. Фильтрация конкретного содержания веб-страниц основана на методе поиска совпадающих фраз и использует фильтр адресов URL filter, программа DansGuardian не обеспечивает полной фильтрации с применением списка запрещенных сайтов, как менее распространенные коммерческие программы-фильтры. Программа DansGuardian пропускает адреса URL, которые получают через специально сконфигурированные фильтры, и при любом совпадении перенаправляют веб-трафик на динамическую веб-страницу, которая разъясняет пользователю, что их запрос был блокирован из-за нарушения правил доступа. По умолчанию программа DansGuardian блокирует доступ к веб-сайтам, запрещенным для детей. Более того, программа DansGuardian является гибким Тренинг-курс по системам мониторинга, CAREN NOC. 80/132 Управление ресурсами и мониторинг производительности системы приложением, так что системный администратор имеет возможность самостоятельно задавать правила фильтрации. Программа DansGuardian работает вместе со Squid, запущенным с порта 3128. Устанавливаемая между браузером клиента и прокси-сервером Squid, программа DansGuardian обращается к порту 8080 и соединяется со squid с порта 3128. Следовательно, для демона, использующего порт 8080 (как работает пакет Tomcat) программа DansGuadian работать не будет. 9.1.2. Установка Исходный текст программы можно получить по адресу http://www.dansguardian.org. Самораспаковывающаяся установка может быть удобнее, так как она предлагает DEB файл для ОС Linux Debian. Когда программа DansGuardian будет установлена из исходного архива, операция ‘make install’ может не создать сценария запуска/остановки оболочки в файле /etc/init.d. Следовательно, его необходимо определить в опции конфигурации. Вы должны создать сценарий запуска оболочки вручную. Ниже приводится пример установки их архива исходного текста программы. 1. Загрузка и компиляция # wget http://dansguardian.org/downloads/2/Stable/dansguardianNM.source.tar.gz # cd /usr/local # tar zxvf /’downloadedDirectory’/dansguardian-NM.source.tar.gz # groupadd dansguardian # useradd –G dansguardian –s /bin/false dansguardian # ./configure --sysvdir=/etc/init.d --cgidir=/var/www/cgi-bin \ \ --runas_usr=dansguardian \ --runas_grp= dansguardian # make # make install 2. Сценарий ротации журналов # vi /etc/crontab 59 23 * * sat root /etc/dansguardian/logrotation 3. Конфигурирование вручную – dansguardian.conf. Вы должны подтвердить данную директиву в файле dansguardian.conf. Тренинг-курс по системам мониторинга, CAREN NOC. 81/132 Управление ресурсами и мониторинг производительности системы # vi /etc/dansguardian/dansguardian.conf # Defines the log directory and filename. Определяет директорию журнала и имя файла loglocation = '/var/log/dansguardian/access.log' # the port that DansGuardian listens to. Порт к которому образуется программа DansGuardian filterport = 8080 # the ip of the proxy (default is the loopback - i.e. this server) IP адрес прокси-сервера (по умолчанию он определяется как loopback, то есть текущий сервер) proxyip = 192.168.0.11 # the port DansGuardian connects to proxy on Порт с помощью которого DansGuardian подключается к прокси серверу proxyport = 3128 # accessdeniedaddress is the address of your web server to which the cgi … accessdeniedaddress = 'http://192.168.0.11/cgi-bin/dansguardian.pl' 4. Запуск программы dansguardian # /usr/sbin/dansguardian (для завершения работы dansguardian наберите dansguardian –q) 5. Автоматический запуск при загрузке системы Создайте следующий сценарий и поместите его в директорию /etc/init: # vi /etc/init.d/dansguardian #! /bin/sh # Description: Start, or stop the dansguardian daemon Описание: запуск или остановка демона dansguardian case "$1" in start) Тренинг-курс по системам мониторинга, CAREN NOC. 82/132 Управление ресурсами и мониторинг производительности системы /usr/sbin/dansguardian echo -n ' Squid' ; ; stop) /usr/sbin/dansguardian -q ; ; esac Добавьте разрешение на исполнение и данные сервиса для каждого уровня запуска: # chmod +x /etc/init.d/dansguardian # chkconfig –add dansguardian # cd /etc/init.d Процесс запуска squid называется “S03squid”. Значит, необходимо запускать danguardian после запуска squid: vi /etc/init.d/squid start) echo -n "Starting WWW-proxy squid " checkproc $SQUID_BIN if [ $? -eq 0 ] ; then echo -n "- Warning: squid already running ! " rc_failed else [ -e $SQUID_PID ] && echo -n "- Warning: $SQUID_PID exists ! " for adir in $CACHE_SWAP ; do if [ ! -d $adir/00 ]; then # create missing cache directories umask 027 # prevent users reading any cache data echo -n " ($adir)" Тренинг-курс по системам мониторинга, CAREN NOC. 83/132 Управление ресурсами и мониторинг производительности системы $SQUID_BIN -z -F > /dev/null 2>&1 fi if [ ! -d $adir/00 ]; then echo " - Could not create cache_dir ! " rc_failed rc_status -v rc_exit fi done sleep 2 fi startproc -l /var/log/squid/rcsquid.log $SQUID_BIN -sYD rc_status $RC_OPTIONS /usr/sbin/dansguardian ;; stop) echo -n "Shutting down WWW-proxy squid " if checkproc $SQUID_BIN ; then $SQUID_BIN -k shutdown 9.1.3. Настройка веб браузера Указать сервер Dansguardian и номер порта в настройках браузера. Тренинг-курс по системам мониторинга, CAREN NOC. 84/132 Управление ресурсами и мониторинг производительности системы Рис. 7.1. Установки веб браузера 10. Фильтрация контента (Content Filtering) 2 (утилита Squid Guard) Утилита SquidGuard содержит функции фильтрации контента, редиректора 3 , и подключаемой программы контроля доступа для Squid. Она может ограничить доступ через Интернет для некоторых пользователей. Она также может переадресованные content filtering (CF) фильтрация контента отсечение нежелательной информации (баннеры, спам, порно), получаемой из Интернета, например с электронной почтой. Осуществляется поиском в приходящих пакетах данных заданных ключевых слов или блокированием доступа к сайтам, содержащим нежелательный контент. Фильтрация может заключаться также в предотвращении попадания в почту файлов с объектами Active X или программами на Java для пресечения распространения вирусов 3 редиректор redirector ( сетевое программное обеспечение, эмулирующее доступ прикладных программ к удаленной файловой системе, как к локальной ) 2 Тренинг-курс по системам мониторинга, CAREN NOC. 85/132 Управление ресурсами и мониторинг производительности системы заблокированные URL указатели на информационную страницу information page. 10.1. Установка Установите утилиту squidGuard : apt-get install squidguard Создайте файл крона /etc/cron.daily/squidguard.cron. Он обеспечит загрузку самой последней версии черного списка через Интернет cd /tmp rm -f /tmp/blacklists.tar.gz wget ftp://ftp.teledanmark.no/pub/www/proxy/squidGuard/contrib/blacklists.tar.gz tar xzf blacklists.tar.gz rm -fr /var/lib/squidGuard/db/blacklists.bak mv /var/lib/squidGuard/db/blacklists /var/lib/squidGuard/db/blacklists.bak cp -rf blacklists/ /var/lib/squidGuard/db/blacklists chmod -R 755 /var/lib/squidGuard/db/blacklists chown -R squid:root /var/lib/squidGuard/db/blacklists /usr/sbin/squid -k reconfigure rm -rf /tmp/blacklists Предоставьте разрешения и выполните данный файл один раз. # chmod 755 squidguard.cron # ./squidguard.cron Создайте страницу предупреждения. Данный пример содержится по адресу /var/www/htdocs/restricted.php <html><head><title>Access Denied</title></head> <body> <h1>Access Denied</h1> <hr> <table border=1> <?php if (isset($_REQUEST['clientaddr']) and $_REQUEST['clientaddr'] !="") { echo "<tr><th>Client Address</th><td>"; echo $_REQUEST['clientaddr'] . "</td></tr>"; } if (isset($_REQUEST['clientname']) and $_REQUEST['clientname'] !="") { Тренинг-курс по системам мониторинга, CAREN NOC. 86/132 Управление ресурсами и мониторинг производительности системы echo "<tr><th>Client Name</th><td>"; echo $_REQUEST['clientname'] . "</td></tr>"; } if (isset($_REQUEST['clientuser']) and $_REQUEST['clientuser'] !="") { echo "<tr><th>Client User</th><td>"; echo $_REQUEST['clientuser'] . "</td></tr>"; } if (isset($_REQUEST['clientgroup']) and $_REQUEST['clientgroup'] !="") { echo "<tr><th>Client Group</th><td>"; echo $_REQUEST['clientgroup'] . "</td></tr>"; } if (isset($_REQUEST['targetgroup']) and $_REQUEST['targetgroup'] !="") { echo "<tr><th>Target Group</th><td>"; echo $_REQUEST['targetgroup'] . "</td></tr>"; } if (isset($_REQUEST['url']) and $_REQUEST['url'] !="") { echo "<tr><th>URL</th><td>"; echo $_REQUEST['url'] . "</td></tr>"; } ?> </table> If you have any queries contact your Network Administrator При наличии любых очередей, обратитесь к своему сетевому администратору </body> </html> Отредактируйте файл конфигурации /etc/squidguard.conf. измените ip адреса и переадресуйте URL указатель на ваш сценарий. logdir /var/log/squidGuard dbhome /var/lib/squidGuard/db/blacklists src allow-users { ip 192.168.2.1-192.168.2.199 } src guests { ip 192.168.2.200-192.168.2.254 } Тренинг-курс по системам мониторинга, CAREN NOC. 87/132 Управление ресурсами и мониторинг производительности системы # # DESTINATION CLASSES # dest ads { domainlist ads/domains urllist ads/urls } dest aggressive { domainlist aggressive/domains urllist aggressive/urls } dest audio-video { domainlist audio-video/domains urllist audio-video/urls } dest drugs { domainlist drugs/domains urllist drugs/urls } dest gambling { domainlist gambling/domains urllist gambling/urls } dest hacking { domainlist hacking/domains urllist hacking/urls } dest mail { domainlist mail/domains } dest porn { domainlist porn/domains urllist porn/urls expressionlist porn/expressions } dest proxy { domainlist proxy/domains urllist proxy/urls } dest violence { Тренинг-курс по системам мониторинга, CAREN NOC. 88/132 Управление ресурсами и мониторинг производительности системы domainlist violence/domains urllist violence/urls expressionlist violence/expressions } dest warez { domainlist warez/domains urllist warez/urls } acl { guests { # It should be one line!!!!!! pass !ads !aggressive !audio-video !drugs !gambling !hacking !mail !porn !p roxy !violence !warez !in-addr any } allow-users { pass all } default { pass none # It should be one line!!!!!! redirect http://www.test1.kg/restricted.php?clientaddr=%a&clientname=%n&cli entuser=%i&clientgroup=%s&targetgroup=%t&url=%u } } Отредактируйте файл конфигурации /etc/squid/squid.conf и добавьте одну программную строку, redirect_program /usr/sbin/squidGuard Перезапустите Squid # /etc/init.d/squid reload Необходимо провести проверку файла журнала регистрации squidGuard. При успешном запуске, появившиеся сообщения можно просмотреть в файле журнала регистрации /var/log/squidGuard/squidGuard.log 2006-08-28 14:19:31 [10927] squidGuard 1.2.0 started (1156756768.997) 2006-08-28 14:19:31 [10927] squidGuard ready (1156756771.444) Тренинг-курс по системам мониторинга, CAREN NOC. 89/132 for requests Управление ресурсами и мониторинг производительности системы В противном случае файл squidGuard будет находиться в аварийном режиме. В данном режиме можно, однако использовать squid без фильтрации. 2006-08-05 14:44:15 [16284] syntax error in configfile /etc/squidguard.conf line 12 2006-08-05 14:44:15 [16284] going into emergency mode 11. TCP-Упаковщик (Wrapper) TCP-Упаковщик - это компьютерная программа, разработанная доктором Вице Венема (Wietse Venema). Это инструмент безопасности для контроля доступа к службам Операционной Системы, такой как Linux. Пакет TCP-упаковщика установлен по умолчанию на Debian и обеспечивает безопасность на компьютере отдельно, независимо от того, что она обеспечивается брандмауэром, функционирующим на самом сервере или где-либо в другом месте. Данная программа зависит от основных файлов, таких как: определяет хосты и сети, допущенные для соединения с /etc/hosts.allow сервером. TCP-упаковщики разрешают приложению искать этот файл для согласования входа, и, если он согласовывает вход, тогда соединение разрешается. определяет хосты и сети, не допущенные для соединения с /etc/hosts.deny сервером. Если в этом файле находится соответствие на недопуск, то в соединении отказывается, если нет, то соединение происходит нормально. Файл /etc/hosts.allow всегда читается первым. Оба файла всегда читаются сверху вниз, поэтому очередность входов является важной. 11.1. Формат файла TCP-упаковщиков Формат файла следующий: <TCP-daemon-name> <client-list> : <option> Итак, для примера ниже мы допускаем прохождение всего трафика с сетей 192.168.1.0/24 и 192.168.2.0/255.255.255.0 и SSH только с двух хостов 172.16.1.1 и 216.10.119.244. Весь HTTP веб-трафик является разрешенным. А весь другой TCP трафик в хост является запрещенным. Обратите внимание, как маска подсети может использовать косую черту "/" системы условных обозначений или десятичный Тренинг-курс по системам мониторинга, CAREN NOC. 90/132 Управление ресурсами и мониторинг производительности системы 255.255.255.0 формат с разделительными точками. /etc/hosts.allow # # File: hosts.allow # ALL: 192.168.1.0/24 192.168.2.0/255.255.255.0 sshd: 172.16.1.1 216.10.119.244 /etc/hosts.deny # # File: hosts.deny # ALL: ALL 11.2. Определение имени демона TCP Наиболее легкий путь определения имени демона - это использовать команду «ps», а затем воспользоваться командой grep, т.е. быстро просмотреть (служебная программа grep в Unix) для фильтрации имени службы. В примере ниже мы хотим определить имя демона для обслуживающего процесса SSH. обнаруживаем, что работающий демон - это Довольно быстро программа /usr/sbin/sshd. TCP-упаковщики требуют только имя программы, но не путь. Поэтому «sshd» становится входом в колонку TCP-имя-демона файла конфигурации. # ps -ef | grep -i ssh root 10053 1 0 Nov06 ? 00:00:00 /usr/sbin/sshd root 14145 10053 0 Nov13 ? 00:00:02 sshd: root@pts/1 root 18100 14148 0 21:56 pts/1 00:00:00 grep ssh # 12. Вводный курс по Брандмауэру ОС Linux Если вы решите открыть вебсайт на своем собственном хостинге, сетевая безопасность выходит на первый план так как угрозы и возможности атак существуют постоянно и становятся все более широко распространенными. Один из способов обеспечения дополнительной защиты - это брандмауэр. Хотя цены все время падают, в некоторых случаях вы сможете создать сопоставимую единицу, Тренинг-курс по системам мониторинга, CAREN NOC. 91/132 Управление ресурсами и мониторинг производительности системы используя пакет программ iptables Linux на существующем сервере, при небольших затратах или вовсе без дополнительных расходов. Эта глава показывает, как преобразовать Linux-сервер в: Брандмауэр, который будет одновременно являться вашей почтой вебсайта, веб-сервером и DNS сервером. Маршрутизатор, который будет использовать службу NAT (преобразование сетевых адресов) и переадресацию портов, направленных на защиту вашей домашней сети, и, несмотря на коллективное использование IP адреса вашего брандмауэра, иметь еще один веб сервер в вашей домашней сети. Необходимо пройти много стадий для того, чтобы создать сценарий брандмауэра iptables, но с помощью простых средств обучения вы сумеете завершить конфигурацию относительно быстро. 12.1.1. Что такое iptables? Первоначально, наиболее популярным брандмауэром / пакетом NAT, который работал на Linux был ipchains, но у него существовало несколько дефектов. Организация Netfilter решила создать новый продукт, который она назвала iptables для того, чтобы исправить ошибки и усовершенствовать предшественника Данный брандмауэр имеет существенные преимущества по сравнению с предыдущей версией: Приложение iptables имеет лучшую интеграцию с ядром Linux, с возможностью загрузки специфических модулей ядра iptables, спроектированных для более улучшенной скорости и надежности. iptables совершает пакетную инспекцию изменения состояния. Это означает, что брандмауэр отслеживает каждое соединение, проходящее через него, и в определенных случаях будет изучать содержимое «поступающих» данных, пытаясь предупреждать последующие действия определенных протоколов. Это является важной особенностью в поддержке активных FTP (протокол передачи данных) и DNS (служба доменных имен), а также многих других сетевых служб. iptables может фильтровать пакеты MAC-адресом и значениями флажков в заголовке TCP (протокол управления передачей). Это полезно для предотвращения атак, использующих деформированные (злонамеренные) пакеты, и для ограничения доступа с локально соединенных серверов к другим сетям, независимо от того, какой у них IP-адрес. Тренинг-курс по системам мониторинга, CAREN NOC. 92/132 Управление ресурсами и мониторинг производительности системы Были улучшения в системной регистрации, которые теперь обеспечиваются опцией для регулировки степени детализации составления отчетов. Было улучшено преобразование сетевых адресов, а также была включена в продукт новая поддержка для прозрачного интегрирования с веб-прокси программами, такими как Squid. Новая функция ограничения частоты помогает iptables блокировать некоторые типы атак на отказ от обслуживания (DoS-атаки). В результате этого, iptables считается более быстрой и надежной альтернативой Приложение ipchains. теперь iptables стал пакетом брандмауэра, устанавливающимся по умолчанию в RedHat и Fedora Linux. 12.1.2. Установка пакета Iptables В большинстве распространяемых операционных системах Linux пакет iptables доступен в формате DEB и RPM. Вам нужно только убедиться, что DEB или RPM программа iptables установлена. Когда ищете DEB, помните, что имя файла обычно начинается с имени программного пакета с номером версии, как, например, данный файл: iptables-1.3.1-3.1.i586.rpm Установка # apt-get install iptables 12.1.3. Определение состояния iptables Вы можете определить, работает iptables или нет, посредством выполнения команды “iptables –L”. # iptables –L Table: filter Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target 12.2. prot opt source destination Обработка пакетов в iptables Все пакеты, проверенные iptables, проходят через ряд встроенных таблиц (последовательностей) для обработки. Каждой из этих последовательностей соответствует определенный вид деятельности Тренинг-курс по системам мониторинга, CAREN NOC. 93/132 пакета и каждая Управление ресурсами и мониторинг производительности системы последовательность управляется соответствующим пакетным преобразованием / фильтрующей цепочкой. В итоге имеются три таблицы. Первая – таблица искажений, которая отвечает за изменение битов «качества обслуживания» в заголовке TCP. Она используется только в домашней / SOHO (малый и домашний офис) обстановке. Вторая таблица – фильтрующая очередь, которая отвечает за фильтрацию пакетов. Она имеет три встроенные цепочки, в которых вы можете разместить ваши правила работы брандмауэра. Это: Прямая цепочка фильтрует пакеты, поступающие в сервера и защищенные брандмауэром. Входная цепочка фильтрует пакеты, предназначенные для брандмауэра. Выходная цепочка фильтрует пакеты, поступающие от брандмауэра. Третья таблица – это NAT - последовательность, которая отвечает за преобразование сетевых адресов. Она включает в себя две встроенные цепочки; это: Цепочка предварительной маршрутизации: NAT-пакеты, когда адрес назначения пакета должен быть изменен. Цепь последующей маршрутизации: NAT-пакеты, когда адрес источника пакета должен быть изменен. Таблица 12.1. Процесс обработки пакетов маршрутизированных Брандмауэром Тип Функция Цепь Функция Цепочек последоват последоват преобразования ельности ельности пакета в последовательности Фильтр Фильтрация (Filter) пакета ПРЯМАЯ Фильтрует пакеты идущие к серверам, доступные для СИЦ (сетевой информационный центр) на брандмауэре. ВХОДНАЯ Фильтрует пакеты, предназначенные брандмауэру. ВЫХОДНАЯ Фильтрует пакеты, возникающие из брандмауэра. Тренинг-курс по системам мониторинга, CAREN NOC. 94/132 Управление ресурсами и мониторинг производительности системы NAT Преобразов ПРЕД. NAT совершается ание МАРШРУТИЗАЦИЯ маршрутизации. Способствует сетевых преобразованию адресов назначения до адреса IP совместимого таблицей с маршрутизации брандмауэра. Может быть использован с NAT IP адреса назначения ПОСЛЕД. NAT совершается МАРШРУТИЗАЦИЯ маршрутизации. после Это подразумевает, что не было необходимости трансформировать IP адрес назначения пакета, как в предв. маршрутизации. Может быть использован с NAT IP адреса источника, использованием с NAT 1 к 1 или много к 1. ВЫХОДНАЯ Преобразование сетевых адресов пакетов, для генерированных брандмауэром. используется (Изредка в SOHO обстановке) Искажение Изменение ПРЕД-МАРШРУТИЗА Изменяет биты качества (Mangle) заголовка ЦИЯ обслуживания TCP пакета до TCP ПОСЛЕ-МАРШРУТИ совершения маршрутизации ЗАЦИЯ (Изредка используется в SOHO обстановке) Вы должны точно определить таблицу и цепочку для каждого правила брандмауэра, который вы создадите. Исключение составляют большинство правил, касающихся фильтрации и поэтому iptables предполагает, что любая цепочка, определенная без ассоциированной таблицы, будет частью таблицы фильтрации. Следовательно, таблица фильтрации является установленной по умолчанию. Давайте рассмотрим, каким образом iptables справляется с пакетами, что, в свою очередь, поможет нам понять механизм работы приложения. На рисунке ниже пакет TCP из Интернета (Network “A”) поступает на интерфейс брандмауэра, чтобы установить соединение для передачи данных. Пакет сначала проверяется согласно установленных правил брандмауэра в цепочке предварительной маршрутизации таблицы ошибок, если это имеет место. Затем, он Тренинг-курс по системам мониторинга, CAREN NOC. 95/132 Управление ресурсами и мониторинг производительности системы проверяется правилами цепочки и предварительной маршрутизации в таблице NAT, чтобы проверить удовлетворяет ли пакет требованиям DNAT (назначения). Затем происходит маршрутизация пакета. Если пакет предназначен для защищенной сети, тогда он фильтруется нормативами в ПРЯМОЙ цепочке таблицы фильтрации и, если необходимо, пакет будет подвергаться SNAT (источник), до прибытия в Сеть "B". Когда сервер назначения решит откликнуться, пакет подвергнется обработке в такой же последовательности шагов. Рис. 12.1. Диаграмма движения пакета в приложении Iptables Если пакет предназначен для самого брандмауэра, тогда он будет отфильтрован согласно правилам во ВХОДНОЙ цепи таблицы фильтрации, до процесса обработки назначенным приложением на брандмауэре. В некой точке брандмауэр должен откликнуться. Это должно быть проверено согласно вашим правилам в ВЫХОДНОЙ цепочке таблицы ошибок, если это имеет место. Правила ВЫХОДНОЙ цепочки таблицы NAT будут определять, нужно ли преобразование адреса и затем до того как пакет направится обратно в Интернет, согласно правилам будет проверена ВЫХОДНАЯ цепочка таблицы фильтрации. 12.3. Каждое Цели и «переходы» правило брандмауэра старается идентифицировать пакеты, как определенную «цель» выполнения какой-либо программы. Как только цель Тренинг-курс по системам мониторинга, CAREN NOC. 96/132 Управление ресурсами и мониторинг производительности системы идентифицирована, пакет должен «перепрыгнуть» для последующей обработки. Имеется некоторое количество встроенных целей, которые iptables использует в своей деятельности. Ниже в таблице они перечислены, Таблица 12.2. Описание наиболее часто используемых целей Цепь Описание Наиболее распространенные параметры ACCEPT/принимать > iptables Нет останавливает дальнейшую обработку после ACCEPT. > Пакет передается конечному приложению или ОС для обработки DROP/сбрасывание > iptables Нет останавливает дальнейшую обработку. > Пакет блокируется LOG/регистрировать > Информация --log-prefix "ряд" пакета отправляется Сообщает, что iptables необходимо в syslog демон предпослать для все регистрации зарегистрированные сообщения с > iptables продолжает определенным обработку рядом. Часто используется для того, на пользователем соответствие чтобы сообщить, следующему правилу заблокированный пакет был удален. в таблице > Так, как вы не можете одновременно совершать DROP, то LOG и принято иметь два одинаковых правила в последовательности. Первое выполнять будет LOG, а Тренинг-курс по системам мониторинга, CAREN NOC. 97/132 почему Управление ресурсами и мониторинг производительности системы второе будет DROP. REJECT/отклонять > Работает, DROP, но как также возвращает Спецификатор сообщает, какой тип сообщения об отклонении вернулся. сообщение ошибке --reject-with спецификатор об на хост Они включают в себя следующие сообщения: пославший пакет, о icmp-port-недоступен том, умолчанию) что пакет заблокирован (по icmp-net- недоступен icmp-host- недоступен icmp-proto- недоступен icmp-net-запрещен icmp-host- запрещен tcp-reset echo-reply DNAT > Выполняет --to-destination ipaddress Преобразование Сообщает iptables, какой IP адрес сетевого назначения должен быть адреса назначения, т.е. переписывает адрес IP назначения пакета. SNAT > Выполняет --to-source преобразование <address>[-<address>][:<port>-<port>] сетевого Определяет IP адрес источника и адреса источника, т.е. переписывает адрес IP портов, которые должны быть использованы SNAT. источника пакета > IP адрес источника определяется пользователем MASQUERADE/маск > Выполняет арад преобразование Определяет ранг портов источника, сетевого оригинальный адреса источника, т.е. переписывает адрес [--to-ports <port>[-<port>]] также отображен. IP источника пакета > По умолчанию, используется такой Тренинг-курс по системам мониторинга, CAREN NOC. 98/132 порт может быть Управление ресурсами и мониторинг производительности системы же адрес источника, какой используется интерфейсом брандмауэра 12.4. Важные операции переключения команд iptables. Каждая строка iptables-скрипта подразумевает не только «переход», но также имеет некоторое количество параметров командной строки, используемых для добавления правил к цепочке-фильтру, которая будет выявлять пакеты с установленными вами характеристиками, таких как IP-адрес источника и TCP-порт. Имеются также параметры, которые могут быть использованы просто для очистки цепи так, что вы сможете запустить все сначала. С наиболее часто используемыми параметрами можно ознакомиться в таблицах 6.3 и 6.4. Таблица 12.3. Общие критерии соответствия в Iptables Переключатель команд Описание iptables -t <table> Если вы не устанавливаете таблицу, тогда по умолчанию принимается таблица фильтрации. Как рассмотрено выше, возможные встроенные таблицы включают в себя: фильтр, NAT, регистрацию ошибок -j <target> Переход на определенную цепочку цели, когда пакет соответствует текущему файлу. -A Добавить правило в конец цепочки -F Подавлять. Уничтожает все правила в выбранной таблице -p <protocol-type> Протокол соответствия. Эти типы включают: icmp, tcp, udp, все -s <ip-address> Соответствие IP-адреса источника -d <ip-address> Соответствие IP-адреса назначения -i <interface-name> Соответствие интерфейса «вход», в который поступает пакет. -o <interface-name> Соответствие интерфейса «выход», из которого отправляется пакет Пример: iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP –j ACCEPT В этом примере iptables сконфигурирован так, чтобы позволить брандмауэру принять TCP-пакеты, поступающие на интерфейс eth0 с любого IP-адреса, предназначенного для IP-адреса брандмауэра 192.168.1.1. Представление IP-адреса как «0/0» означает «любой». Тренинг-курс по системам мониторинга, CAREN NOC. 99/132 Управление ресурсами и мониторинг производительности системы Таблица 12.4. Общие критерии соответствия TCP и UDP протоколов Переключ. Описание Переключ. с с использов. использов. команды команды -p tcp- -p udp- Описание --sport Порт источника TCP --sport порт источника UDP <port> Может быть однозначным или <port> Может быть многозначным в формате: однозначным start-port-number:end-port-number многозначным --dport Порт назначения TCP формате: <port> Может быть однозначным или starting-port:ending-port --syn или в многозначным в формате: --dport UDP destination port starting-port:ending-port <port> Может быть Для распознавания запроса на однозначным или новое соединение многозначным ! --syn означает, что нет нового следующем формате: соединения starting-port:ending-port Пример: iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP --sport 1024:65535 --dport 80 -j ACCEPT В этом примере iptables сконфигурирован так, чтобы позволить брандмауэру принять TCP пакеты для маршрутизации, когда они поступят на интерфейс eth0 с любого IP-адреса и предназначены для IP-адреса 192.168.1.58, который доступен через интерфейс eth1. Порт источника находится в диапазоне от 1024 до 65535, а порт назначения является портом 80 (www/http). Таблица 12.5. Общие критерии совпадения ICMP (Ping) Совпадение с Описание использованием ---icmp-type --icmp-type <type> наиболее часто используемыми параметрами являются echo-reply и echo-request Пример: iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT В этом примере iptables сконфигурирован так, чтобы позволить брандмауэру послать запросы отклика ICMP echo-requests (pings) и, в свою очередь, принять ожидаемые Тренинг-курс по системам мониторинга, CAREN NOC. 100/132 в Управление ресурсами и мониторинг производительности системы отклики ICMP echo-replies. Пример: iptables -A INPUT -p icmp --icmp-type echo-request \ -m limit --limit 1/s -i eth0 -j ACCEPT Свойство «предел» в iptables определяет максимальное среднее число совпадений в одну секунду. Вы можете определить интервалы времени: «/секунда», «/минута», «/час» или «/день» или их аббревиатуры. Так «3/секунды» - это одно и тоже что и «3/с». В этом примере запрос отклика ICMP ограничен значением не более одного в секунду. Когда настройка правильная, это свойство позволит вам фильтровать необычайно большие объемы трафика, что определяет атаки на отказ от обслуживания (DOS-атаки) и обнаруживает Интернет - «черви». Пример: iptables -A INPUT -p tcp --syn -m limit --limit 5/s -i eth0 -j ACCEPT Вы можете расширить свойство «предел» в iptables, чтобы сократить ваши слабые места до определенных типов отказа от обслуживания атак. В этом примере защита от синхронных атак (SYN flood attacks) была создана ограничением приема TCP сегментов, с битом синхронизации, установленным не более чем 5 битов за секунду. Таблица 12.6. Общие критерии многопортового соответствия (Multiport) Расширения TCP/UDP- соответствия Описание с использованием команды-m multiportМножество TCP/UDP-портов источника, разделенных --sport <port, port> запятыми Множество --dport <port, port> TCP/UDP-портов назначения, разделенных запятыми Множество TCP/UDP-портов, разделенных запятыми. --ports <port, port> Порты источника и пункта назначения считаются одинаковыми. Таблица 12.7. Общие критерии cоответствия cостояния cоединения Расширения соответствия Описание с использованием команды -m state --state <state> Наиболее часто проверяемые состояния: ESTABLISHED / УСТАНОВЛЕННОЕ Пакет является частью соединения, которое передавало пакеты в обоих направлениях Тренинг-курс по системам мониторинга, CAREN NOC. 101/132 Управление ресурсами и мониторинг производительности системы NEW / НОВОЕ Пакет является началом нового соединения RELATED / СВЯЗАННОЕ Пакет начинает новое вторичное соединение. Это общее свойство протоколов, таких, как передача данных FTP или ошибка ICMP (протокол управляющих сообщений в сети Internet). Пример: iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP \ --sport 1024:65535 -m multiport --dport 80,443 -j ACCEPT iptables -A FORWARD -d 0/0 -o eth0 -s 192.168.1.58 -i eth1 -p TCP \ -m state --state ESTABLISHED -j ACCEPT Это расшифровка для предыдущего примера. Здесь iptables сконфигурирован так, чтобы позволить брандмауэру принять TCP пакеты для маршрутизации, когда они поступят на интерфейс eth0 с любого IP-адреса. И предназначаются для IP-адреса 192.168.1.58, который доступен через интерфейс eth1. Порт источника находится в диапазоне от 1024 до 65535, а для пункта назначения установлены порты 80 (www/http) и 443 (https). У нас имеется возможность, позволяющая пакетам, которые возвращаются с адреса 192.168.1.58, быть также принятыми. Вместо определения портов источника и портов назначения достаточно позволить пакетам, имеющим отношение к установленным соединениям, использование опций -m state и --state ESTABLISHED. 12.5. Использование цепей, определяемых Пользователем Как сказано во введении, iptables может быть сконфигурирован так, чтобы иметь цепи, определенные пользователем. Это свойство часто используется, чтобы помочь упростить обработку пакетов. Например, вместо использования одной встроенной цепочки для всех протоколов, можно использовать цепочку для определения типа протокола для пакета и затем передать фактически завершающуюся обработку в специфическую цепочку протокола, определяемого пользователем в таблице фильтрации. Другими словами, вы можете заменить длинную цепочку, главным «обрубком» основной цепи, указывающей на множественные обрубленные цепочки. Таким образом, пакет должен пройти через укорочение общей длины всех цепочек. Пример: iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue iptables -A OUTPUT -o eth0 -s 206.229.110.2 -j fast-output-queue iptables -A fast-input-queue -p icmp -j icmp-queue-in iptables -A fast-output-queue -p icmp -j icmp-queue-out Тренинг-курс по системам мониторинга, CAREN NOC. 102/132 Управление ресурсами и мониторинг производительности системы iptables -A icmp-queue-out -p icmp --icmp-type echo-request \ -m state --state NEW -j ACCEPT iptables -A icmp-queue-in -p icmp --icmp-type echo-reply -j ACCEPT В этом примере мы имеем шесть очередей с нижеследующими характеристиками, чтобы помочь содействовать в скорости обработки. Сводку каждого из этих функций, можно будет увидеть в таблице 6-8. Таблица 12.8. Примеры специальных последовательностей Цепь Описание INPUT Постоянная ВХОДНАЯ встроенная цепочка в iptables OUTPUT Постоянная ВЫХОДНАЯ встроенная цепочка в iptables fast-input-queue Входная цепочка, предназначенная для специальных протоколов идентификации и шунтирующая пакеты к протокольным специфическим цепочкам. Выходная цепь, предназначенная для специальных fast-output-queue протоколов идентификации и шунтирующая пакеты к протокольным специфическим цепочкам. icmp-queue-out Выходная очередь, предназначенная для ICMP icmp-queue-in Входная очередь, предназначенная для ICMP 12.6. Восстановление из несохраненного сценария (script) Иногда сценарий, который вы создали для того, чтобы создавать iptables, может быть испорчен или потерян. Или, когда вы приняли новую систему от предыдущего администратора и не можете найти оригинал сценария, используемого для её защиты. В этих ситуациях вы можете использовать команды «iptables-save» и «iptables-restore», для оказания помощи вам в непрерывном управлении сервером. Команда «iptables-save/сохранить» высвечивает активную конфигурацию на экран. Если вы переориентируете вывод экрана «iptables-save» к файлу с символом ">", тогда вы сможете редактировать вывод и перезагрузить обновленные правила, когда они будут соответствовать вашим новым критериям с помощью команды «iptables-restore». Нижеприведенный пример сохраняет вывод команды iptables-save в текстовый файл под именем «firewall-config». # iptables-save > firewall-config После редактирования файла «firewall-config» при помощи необходимых команд вы можете перезагрузить его в активированный набор правил брандмауэра командой «iptables-restore» как указано ниже. # iptables-restore < firewall-config Если необходимо, вы можете, в конечном счете, переделать файл «firewall-config» в постоянный iptables-скрипт, так что он становится более легко узнаваемым и управляемым. Тренинг-курс по системам мониторинга, CAREN NOC. 103/132 Управление ресурсами и мониторинг производительности системы 12.7. Пример сценария брандмауэра The Internet WWW, FTP DNS, WWW, MTA Linux Server DNS, WWW, NTP, NetBIOS, SWAT, SSH, Telnet, FTP, MTA, POP3, IMAP, DHCP DNS, WWW, NTP, NetBIOS, SWAT, Telnet, FTP, MTA, POP3, IMAP, SSH, DHCP LAN Рис. 12.2. Пример конфигурации брандмауэра Создайте скрипт-файл в вашем окне Linux, напишите команду /usr/local/sbin/iptables.sh, и выполните автоматическое редактирование /etc/rc.d/boot, используя команды: #vi /etc/rc.d/boot.local /usr/local/sbin/iptables.sh #vi /usr/local/sbin/iptables.sh #!/bin/sh ### IP адрес, Configuration ### MYHOST='192.168.0.1' # Server Address LAN='192.168.0.0/24' # Internal Network Address NTP1='210.173.160.27' # NTP Server Address # # Load ip_conntrack_ftp # modprobe ip_conntrack_ftp ### iptables command path ### IPTABLES='/usr/sbin/iptables' ### Stop IP forward ### echo 0 > /proc/sys/net/ipv4/ip_forward # Initialize all the chains by removing all the rules tied to them $IPTABLES --flush $IPTABLES -t nat --flush Тренинг-курс по системам мониторинга, CAREN NOC. 104/132 Управление ресурсами и мониторинг производительности системы $IPTABLES -t mangle --flush # Delete user defined chains $IPTABLES --delete-chain $IPTABLES -t nat --delete-chain $IPTABLES -t mangle --delete-chain $IPTABLES -t filter -F > /dev/null 2>&1 $IPTABLES -t filter -X > /dev/null 2>&1 $IPTABLES -t nat -F > /dev/null 2>&1 $IPTABLES -t nat -X > /dev/null 2>&1 $IPTABLES -t mangle -F > /dev/null 2>&1 $IPTABLES -t mangle -X > /dev/null 2>&1 $IPTABLES -t filter -P INPUT ACCEPT > /dev/null 2>&1 $IPTABLES -t filter -P OUTPUT ACCEPT > /dev/null 2>&1 $IPTABLES -t filter -P FORWARD ACCEPT > /dev/null 2>&1 $IPTABLES -t nat -P PREROUTING ACCEPT > /dev/null 2>&1 $IPTABLES -t nat -P POSTROUTING ACCEPT > /dev/null 2>&1 $IPTABLES -t nat -P OUTPUT ACCEPT > /dev/null 2>&1 $IPTABLES -t mangle -P POSTROUTING ACCEPT > /dev/null 2>&1 $IPTABLES -t mangle -P OUTPUT ACCEPT > /dev/null 2>&1 $IPTABLES -t mangle -P PREROUTING ACCEPT > /dev/null 2>&1 $IPTABLES -t mangle -P INPUT ACCEPT > /dev/null 2>&1 $IPTABLES -t mangle -P FORWARD ACCEPT > /dev/null 2>&1 ### Drop all rules in default ### $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP ### Accept any to loopback address ### $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT ### Accept DNS from LAN ### $IPTABLES -A INPUT -p udp -s $LAN --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -p udp -d $LAN --sport 53 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 53 -j ACCEPT ### Allow DNS to access external network ### $IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT $IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT Тренинг-курс по системам мониторинга, CAREN NOC. 105/132 Управление ресурсами и мониторинг производительности системы ### Allow LAN to access NTP request ### $IPTABLES -A INPUT -p udp -s $LAN --dport 123 -j ACCEPT $IPTABLES -A OUTPUT -p udp -d $LAN --sport 123 -j ACCEPT ### Allow NTP server to access external NTP servers ### $IPTABLES -A OUTPUT -d $NTP1 -p udp --dport 123 -j ACCEPT $IPTABLES -A INPUT -s $NTP1 -p udp --sport 123 -j ACCEPT ### Accept file sharing (NetBIOS) within LAN ### $IPTABLES -A INPUT -p udp -s $LAN --dport 137:139 -j ACCEPT $IPTABLES -A OUTPUT -p udp -d $LAN --sport 137:139 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 137:139 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW -d $LAN --dport 137:139 -j ACCEPT $IPTABLES -A OUTPUT -p udp -d $LAN --sport 32772 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 32772 -j ACCEPT ### Accept SWAT(SWAT:901) from LAN ### $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 901 -j ACCEPT ### Accept Proxy (PROXY:8080) from LAN ### $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 8080 -j ACCEPT ### Accept SSH (22) from LAN ### $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 22 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW -d $LAN --dport 22 -j ACCEPT ### Accept Telnet(23) from LAN ### $IPTABLES -A INPUT -p udp -s $LAN --dport 23 -j ACCEPT $IPTABLES -A OUTPUT -p udp -d $LAN --sport 23 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 23 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW -d $LAN --dport 23 -j ACCEPT ### Accept WWW (HTTP:80,HTTPS:443) ### $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT ### Allow access to external WWW servers(HTTP:80,HTTPS:443) ### $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT ### Accept FTP (Active/Passive) ### Тренинг-курс по системам мониторинга, CAREN NOC. 106/132 Управление ресурсами и мониторинг производительности системы $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 4000:4029 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT ### Accept FTP (Active/Passive) ### $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT ### Accept MTA (SMTP:25/465) ### $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 25 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW --dport 465 -j ACCEPT ### Allow access to external MTA (SMTP:25,POP3:110) ### $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 25 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 110 -j ACCEPT ### Accept MTA (POP3:110,IMAP:143) ### $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 110 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW -s $LAN --dport 143 -j ACCEPT ### Accept DHCP request only from LAN ### $IPTABLES -A INPUT -p udp -m state --state NEW --dport 67:68 --sport 67:68 -j ACCEPT $IPTABLES -A OUTPUT -p udp -m state --state NEW --dport 67:68 --sport 67:68 -j ACCEPT $IPTABLES -A FORWARD -p udp -m state --state NEW --dport 67:68 --sport 67:68 -j ACCEPT ### REJECT Ident(113) (DROP is slower than Reject) ### $IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset ### PING ### $IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT ### Accept established packet ### $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Тренинг-курс по системам мониторинга, CAREN NOC. 107/132 Управление ресурсами и мониторинг производительности системы 13. IP-имитация (iptables) Что такое IP–имитация (IP-маскарад)? LAN 192.168.0.0/24 Global Address Private Address The Internet IP Masquerede Рис. 13.1. IP-имитация Ваш маршрутизатор / брандмауэр будет часто сконфигурирован таким образом, чтобы создавать впечатление на другие устройства в Интернете о том, что все сервера в вашей сети имеют действительный «открытый» IP-адрес, а не «частный» IP-адрес. Это называется «преобразованием сетевых адресов (NAT)» и также, часто имеет название «IP-имитация» в мире Linux. Имеется достаточно оснований для этого, два из которых это: 1. Никто в Интернете не знает ваш истинный IP-адрес. NAT защищает ваши ПК, присваивая им IP-адреса из «частного» IPадресного пространства, что не может быть оттрассировано через Интернет. Это не допустит прямой атаки хакеров на ваши домашние системы, так как пакеты, отправленные на «частный» IP, никогда не пройдут через Интернет. 2. Сотни ПК и серверов, находящиеся за устройством NAT, могут маскироваться как один «открытый» IP адрес. Это сильно увеличивает число устройств, которые могут иметь доступ в Интернет без выхода за пределы «открытых» IP-адресов. «Имитация» – это другое название, того, что многие называют NAT «много в одном» или NAT-источника. Другими словами, трафик, идущий со всех устройств из одной или более защищенных сетей, будет появляться, как будто он возник из одного IP-адреса на стороне Интернет брандмауэра. Примечание: Сымитированный IP адрес всегда установлен по умолчанию к IP-адресу основного интерфейса брандмауэра. Преимуществом этого является то, что вы не должны определять IP–адрес NATа. Это делает более легким конфигурирование NAT-iptables с DHCP (протокол динамической конфигурации хоста). Вы можете конфигурировать NAT, как «много в одном» под IP псевдонимом, используя POSTROUTING, а не оператор MASQUERADE. Пример этого можно Тренинг-курс по системам мониторинга, CAREN NOC. 108/132 Управление ресурсами и мониторинг производительности системы увидеть в статической секции NAT ниже. Для запуска опции/функции имитации/маскарада iptables необходимо модуль iptables_nat командой "modprobe". Имитирование загрузить также зависит от операционной системы Linux, которая должна быть настроена поддерживать маршрутизацию между Интернетом и частными сетевыми интерфейсами брандмауэра. Это выполнено посредством разрешения свойства «IP forwarding» или маршрутизации, с заданием файлу /proc/sys/net/ipv4/ip_forward значения «1», в противоположность значению блокирования по умолчанию – «0». Единожды выполнив имитацию с использованием цепи POSTROUTING таблицы "nat", iptables должен будет быть сконфигурированным таким образом, чтобы разрешить пакетам перетекать между двумя интерфейсами. Это сделано с использованием цепи FORWARD таблицы «фильтрация». Более определенно, пакетам, имеющим отношение к соединениям NEW и ESTABLISHED, будет позволено выходить в Интернет. В то же время, лишь пакетам, имеющим отношение к соединению ESTABLISHED, будет разрешен вход. Это поможет защитить домашнюю сеть от лиц, старающихся инициировать соединения из Интернета. Смотрите пример ниже: Пример Сценария (скрипта) IP-имитации Добавьте следующие строки в предыдущий сценарий брандмауэра. EX_ETH=eth1 # External Interface IN_ETH=eth0 # Internal Interface modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward ### Allow IP Masquerading ### $IPTABLES -A POSTROUTING -t nat -o $EX_ETH -s $LAN -d 0/0 -j MASQUERADE $IPTABLES -A FORWARD -t filter -o $EX_ETH -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -t filter -i $IN_ETH -m state --state ESTABLISHED,RELATED -j ACCEPT Тренинг-курс по системам мониторинга, CAREN NOC. 109/132 Управление ресурсами и мониторинг производительности системы 14. DNAT (Переадресация портов) Что такое DNAT? WWW (80) Request to 123.123.123.123 The Internet Redirect to 192.168.0.200:80 LAN 192.168.0.0/24 Web Server 192.168.0.200 DNAT 123.123.123.123 Рис. 14.1. NAT назначения В большинстве случаев, пользователи не могут получить много открытых (public) IP-адресов от своего Интернет-провайдера (ISP). Если Linux брандмауэр служит их интерфейсом доступа в Интернет, и пользователи также хотят предоставить место для вебсайта на одном из защищенных NAT домашних серверов, тогда они должны будут использовать метод «переадресации портов». Здесь комбинация IP адреса брандмауэра, удаленного IP адреса сервера и порта источника/назначения трафика могут быть использованы для однозначного распознавания потока трафика. Весь трафик, который соответствует конкретной комбинации этих факторов, может быть, затем отправлен на один сервер частной сети. Переадресация портов управляется цепью PREROUTING таблицы «nat». Как в процессе имитирования модуль «iptables_nat» должен быть загружен и разблокирован для маршрутизации, чтобы задействовать переадресацию портов. Маршрутизация, также должна будет предоставляться в iptables цепью FORWARDчто и будет включать в себя все новые входящие соединения NEW из Интернета, соответствующих порту переадресации портов и все будущие пакеты, имеющие отношение к соединению ESTABLISHED в обоих направлениях. Смотрите пример далее: Пример сценария DNAT modprobe iptable_nat EX_ETH="eth0" EX_IP="123.123.123.123" echo 1 > /proc/sys/net/ipv4/ip_forward #--------------------------------------------------------------- Тренинг-курс по системам мониторинга, CAREN NOC. 110/132 Управление ресурсами и мониторинг производительности системы # Allow port forwarding for traffic destined to port 80 of the # firewall's IP address to be forwarded to port 80 on server # 192.168.0.200 # # - Interface eth0 is the internet interface # - Interface eth1 is the private network interface #--------------------------------------------------------------iptables -t nat -A PREROUTING -p tcp -i eth0 -d $EX_IP \ --dport 80 --sport 1024:65535 -j DNAT --to 192.168.0.200:80 #--------------------------------------------------------------# After DNAT, the packets are routed via the filter table's # FORWARD chain. # Connections on port 80 to the target machine on the private # network must be allowed. #--------------------------------------------------------------iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.0.200 \ --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT iptables -A FORWARD -t filter -i eth1 -m state \ --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -t filter -i eth0 -m state \ --state ESTABLISHED,RELATED -j ACCEPT 15. Системы мониторинга 15.1. Система мониторинга Nagios Nagios – это наиболее часто используемая система мониторинга с открытыми Тренинг-курс по системам мониторинга, CAREN NOC. 111/132 Управление ресурсами и мониторинг производительности системы исходными кодами. Официальный сайт программы – www.nagios.org Nagios имеет веб-интерфейс, который написан на языке C, с использованием CGI, благодаря чему достигается быстрое время отклика и хорошая масштабируемость. Вся работа по мониторингу систем возлагается на плагины, которые могут быть добавлены в Nagios без особого труда. Если же у вас стоит задача производить мониторинг устройства, для которого нет специального плагина, вы можете самостоятельно написать плагин на любом, удобном для вас языке. Nagios может выполнять проверки любого оборудования, на котором работает протокол SNMP, и любых сервисов (CPU, Bandwidth, Ping и т.д.). Кроме того в Nagios есть возможность строить карту сети, графики, выводить отчеты за определенный период времени и многое другое. Кроме того Nagios может высылать уведомления о работе сервисов с помощью email, sms и др. Конфигурировать Nagios очень просто, это делается с помощью текстовых файлов. B Nagios есть несколько конфигурационных файлов, каждый из которых имеет свою функцию. Наиболее важные из них: cgi.cfg – отвечает за веб-интерфейс и параметры безопасности commands.cfg – отвечает за команды, используемые Nagios nagios.cfg – основной конфигурационный файл conf.d/* - папка, в которой хранятся остальные конфигурационные файлы contacts_nagios.cfg – отвечает за пользователей и группы generic-host_nagios2.cfg – шаблон настройки хоста по умолчанию generic-service_nagios2.cfg – шаблон настройки сервисов services_nagios2.cfg – сервисы, которые будут проверяться timeperiods_nagios2.cfg – отвечает за период проверки, и за пользователей, которых необходимо уведомлять 15.1.1. Установка Для начала необходимо установить саму программу: # apt-get install nagios3 Устанавливаем пароль для администратораЖ: Тренинг-курс по системам мониторинга, CAREN NOC. 112/132 Управление ресурсами и мониторинг производительности системы Сейчас у нас установлен Nagios в минимальной конфигурации. Зайти в веб-интерфейс можно по адресу http://192.168.0.1/nagios3/ На вкладке Services отображаются все сервисы, которые проверяются программой Nagios. Как мы видим по умолчанию проверяются сервисы на локальном хосте. 15.1.2. Настройка конфигурации Для того чтобы добавить какое-либо устройство, необходимо создать конфигурационный для этого устройства. Создаем файл для мониторинга Windows хоста и редактируем его следующим образом: # vim /etc/nagios3/conf.d/winxp.cfg define host{ use host_name generic-host winxp Тренинг-курс по системам мониторинга, CAREN NOC. 113/132 Управление ресурсами и мониторинг производительности системы alias winxp address 192.168.0.2 } define service{ use generic-host host_name winxp service_description PING check_command check_ping!500.0,20%!700.0,60% } Таким образом, мы указали Nagios проверять доступность хоста winxp с помощью команды ping. Точно также можно добавлять для проверки другие сервисы. Добавляя различные плагины можно проверять практически работающие на сетевом оборудовании. Тренинг-курс по системам мониторинга, CAREN NOC. 114/132 все сервисы, Управление ресурсами и мониторинг производительности системы Кроме того, можно строить карту сети и смотреть графики доступности: Тренинг-курс по системам мониторинга, CAREN NOC. 115/132 Управление ресурсами и мониторинг производительности системы Также в настоящее время существует большое количество программ для расширения функционала Nagios, благодаря чему, он является наиболее часто используемой системой мониторинга. Тренинг-курс по системам мониторинга, CAREN NOC. 116/132 Управление ресурсами и мониторинг производительности системы 15.2. Служебное средство контроля (RRDtool + Cacti) 15.2.1. RRDtool Программный пакет RRDtool обеспечивает хранение и отображение данных мониторинга: загрузку каналов, температуру и загрузку процессора, и любую другую зависящую от времени последовательность данных. Объем хранимых данных в RRDtool не увеличивается со временем – ячейки хранения используются циклически. В отличие от MRTG, программа не упаковывает старые данные самостоятельно, сбор информации и генерация HTML-кода также производится с помощью внешних средств. 15.2.2. Cacti Cacti – это система мониторинга, которая позволяет производить мониторинг сетевых устройств, хранить и представлять в удобной графической форме сетевую, системную и серверную статистику. Cacti использует для работы RRDtool, PHP и MySQL. Также она может работать с MRTG и протоколом SNMP. 15.2.3. Преимущества: Удобный интерфейс Конфигурация производится через веб-интерфейс Возможность использования большого количества шаблонов (templates) Возможность использования аутентификации и различных уровней доступа 15.2.4. Установка: В более ранних выпусках Debian необходимо было самостоятельно создавать базу данных, заводить пользователей и др. В более новых версиях это c помощью мастера при установке Cacti. Для начала необходимо установить саму программу: # apt-get install cacti Тренинг-курс по системам мониторинга, CAREN NOC. 117/132 Управление ресурсами и мониторинг производительности системы Задаем пароль для администратора базы данных Указываем тип используемого веб-сервера Соглашаемся с использованием мастера для создания базы Тренинг-курс по системам мониторинга, CAREN NOC. 118/132 Управление ресурсами и мониторинг производительности системы После этого вся настройка будет осуществляться через веб-интерфейс. В браузере открываем адрес: http://192.168.0.1/cacti и нажимаем кнопку Далее [Next] Выбираем новую установку [New Install], и нажимаем кнопку Далее [Next] На следующем экране все пункты должны быть отмечены как FOUND (Обнаружен). Нажимаем кнопку Далее [Next] Вводим имя пользователя: admin, пароль: admin Дважды вводим пользовательский пароль. После выполнения данной операции появится главный экран программы Тренинг-курс по системам мониторинга, CAREN NOC. 119/132 Управление ресурсами и мониторинг производительности системы Для того, чтобы добавить новое устройство, переходим на вкладку [Console], далее выбираем пункт меню Devices, и нажимаем [Add]. Далее указываем все необходимые атрибуты (имя хоста, IP адрес, версия SNMP и др.). Также здесь мы выбираем шаблон (Template), который предоставит нам различную информацию о нашем устройстве. В дальнейшем можно будет добавлять дополнительные шаблоны без особых проблем. Тренинг-курс по системам мониторинга, CAREN NOC. 120/132 Управление ресурсами и мониторинг производительности системы Нажимаем кнопку [Create], и в следующем окне нажимаем на кнопку [Create graphs for this host]. В появившемся окне выбираем необходимые шаблоны для графиков и нажимаем [Create]. Также при необходимости можно изменить цветовую схему. Теперь необходимо создать дерево графиков. Для этого выбираем пункт меню [Graph Trees]. Нажимаем кнопку [Add] Тренинг-курс по системам мониторинга, CAREN NOC. 121/132 Управление ресурсами и мониторинг производительности системы Присваиваем имя дереву, и нажимаем [Create] После этого необходимо добавить в дерево нужные устройства, нажимаем [Add] В следующем окне добавляем устройства, и сохраняем конфигурацию. Теперь мы можем просматривать графики во вкладке [Graphs]. Тренинг-курс по системам мониторинга, CAREN NOC. 122/132 Управление ресурсами и мониторинг производительности системы 15.3. Анализатор пакетов TCP Dump Анализаторы пакетов предназначены для слежения за трафиком в сети, и регистрации, либо выводе на экран пакетов, соответствующих определенным критериям. Например, можно перехватывать все пакеты, посылаемые на определенный адрес или порт, либо TCP-пакеты, относящиеся к определенному сетевому соединению и т.д. Анализаторы пакетов полезны как для решения известных проблем, так и для выявления новых. Наиболее известны и широко применяемы анализаторы пакетов TCP Dump, Ethereal, и Wireshark. 15.3.1. TCP Dump Утилита TCP Dump входит в состав большинства дистрибутивов Linux. Ее можно установить с помощью команды: # apt-get install tcpdump По умолчанию TCP Dump сканирует первый найденный ею интерфейс. Если утилита выбрала не тот интерфейс, Вы можете указать другой с помощью команды: # tcpdump –i eth0 У команды tcpdump существует множество аргументов: i – указание прослушиваемого интерфейса v – детальное описание пакетов vv – наиболее детальное описание пакетов w – сохранение перехваченных пакетов в файл r – чтение пакетов из файла Более подробную информацию об аргументах и фильтрах, можно найти на man странице TCP Dump. Ниже приведен пример использования утилиты TCP Dump для перехвата пакетов. Тренинг-курс по системам мониторинга, CAREN NOC. 123/132 Управление ресурсами и мониторинг производительности системы 15.4. Утилита сканирования Nmap Утилита Nmap представляет собой сканер сетевых портов. Ее основное назначение – проверка указанных компьютеров на предмет того, какие TCP- и UDP-порты на них прослушиваются, т.е. открыты. За большинством сетевых служб закреплены «известные» порты, поэтому такая информация позволяет узнать, какие программы выполняются на компьютере Запуск Nmap – отличный способ узнать, как выглядит система в глазах того, кто пытается ее взломать. Установка Nmap производится очень просто: # apt-get install nmap Для того, чтобы произвести сканирование, необходимо ввести команду # nmap –sT 192.168.0.1 Аргумент –sT сообщает Nmap о необходимости подключиться к каждому TCP-порту. Как только соединение установлено, Nmap тотчас же отключается. Также с помощью Nmap можно определить, какая операционная система установлена на хосте, и какие приложения работают на открытых портах. Для этого используются аргументы –О и –sV соответственно. Тренинг-курс по системам мониторинга, CAREN NOC. 124/132 Управление ресурсами и мониторинг производительности системы 16. Бесплатная почта для корпоративной работы Zimbra Zimbra – Полноценный почтовый сервер (а так же клиент), который предоставляет администраторам и конечным пользователям инновационные особенности, способные решить трудности, с которыми сталкиваются организации, используя сегодняшнюю инфраструктуру коммуникаций. Главные преимущества включают в себя: совместимость с Windows, Mac, GNU\Linux; масштабируемость; гибкое управление; русский язык; общие компоненты почты для корпоративной работы; web клиент и т.д. Преимущества: — Имеет свой почтовый клиент Zimbra, который позволяет пользователям совместно пользоваться календарём, документооборотом, почтой, контактами и т.д. Есть версии под MacOs, Windows, Linux. — Имеет мощную систему плагинов. Так называемые Zimlet. Плагины разрабатываются официально, а так же самими пользователями. Реализовать можно всё что угодно. — Web версия клиента. Можно зайти на почту в любой точке мира, с любого браузера. — Возможность интеграции с Active Directory. — Включенная в пакет Zimbra антивирусная/антиспамовая защита. Тренинг-курс по системам мониторинга, CAREN NOC. 125/132 Управление ресурсами и мониторинг производительности системы Установка: ###Почтовый сервер Zimbra устанавливается на “чистый” сервер, на котором установлен только DNS.### Перед установкой очень важно убедиться, что ваш DNS-сервер правильно сконфигурирован и доменное имя имеет MX и А. Zimbra проверяет это перед установкой. На почтовом сервере необходимо прописать DNS сервер в файле /etc/resolv.conf # vim /etc/resolv.conf nameserver 192.168.0.1 После этого необходимо прописать имя сервера в файле /etc/hosts # vim /etc/hosts 127.0.0.1 localhost 192.168.0.1 ns1.test.local ns1 После этого необходимо удалить устанавливаемый по умолчанию в Debian почтовый агент Exim: # apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light После этого установим дополнительные пакеты, которые могут понадобиться для установки почтового сервера: # apt-get install curl fetchmail libstdc++5 sysstat Теперь необходимо скопировать архив Zimbra на сервер. Для этого создаем папку /install, куда и будет произведено копирование. # mkdir /install # cd /install Тренинг-курс по системам мониторинга, CAREN NOC. 126/132 Управление ресурсами и мониторинг производительности системы Переходим на сайт Zimbra для закачки свежей версии http://www.zimbra.com/community/downloads.html Копируем и распаковываем архив: # tar zxvf zcs-7.0.1_GA_2789.DEBIAN4.0.20090126055528.tgz Начинаем установку. Переходим в разархивированную папку и запускаем скрипт установки. # cd /install/zcs-5.0.12_GA_2789.DEBIAN4.0.20090126055528 # ./install.sh После просмотра лицензий и проверки всех необходимых дополнительно установленных пакетов нам нужно сделать выбор служб для инсталляции. Обычно это все имеющиеся службы, кроме proxy и memcached. Install zimbra-ldap [Y] Y Install zimbra-logger [Y] Y Install zimbra-mta [Y] Y Install zimbra-snmp [Y] Y Install zimbra-store [Y] Y Install zimbra-apache [Y] Y Install zimbra-spell [Y] Y Install zimbra-memcached [N] N Install zimbra-proxy [N] N Началась установка. Она займет некоторое время. После установки появится так называемое main menu: Main menu 1) Common Configuration: 2) zimbra-ldap: Enabled 3) zimbra-store: Enabled +Create Admin User: yes +Admin user to create: [email protected] Тренинг-курс по системам мониторинга, CAREN NOC. 127/132 Управление ресурсами и мониторинг производительности системы ******* +Admin Password UNSET +Enable automated spam training: yes ………………………… x) Expand menu q) Quit Address unconfigured (**) items (? – help) В данном меню показываются настройки по умолчанию. При необходимости их можно изменить. В нашем случае необходимо лишь изменить пароль администратора. Нажимаем цифру 3, затем Enter и входим в подменю. Store configuration 1) Status: Enabled 2) Create Admin User: yes 3) Admin user to create: [email protected] ** 4) Admin Password UNSET 5) Enable automated spam training: yes 6) Spam training user: [email protected] ……………………….. 17) Use spell check server: yes 18) Spell server URL: test.local:7780/aspell.php Select, or ‘r’ for previous menu [r] Нажимаем цифру 4, а затем Enter. Вводим новый пароль, и Enter. Нажимаем Enter и возвращаемся в главное меню. Main menu 1) Common Configuration: 2) zimbra-ldap: Enabled 3) zimbra-store: Enabled 4) zimbra-mta: Enabled 5) zimbra-snmp: Enabled 6) zimbra-logger: Enabled 7) zimbra-spell: Enabled 8) Default Class of Service Configuration: r) Start servers after configuration yes s) Save config to file Тренинг-курс по системам мониторинга, CAREN NOC. 128/132 Управление ресурсами и мониторинг производительности системы x) Expand menu q) Quit *** CONFIGURATION COMPLETE – press ‘a’ to apply Select from menu, or press ‘a’ to apply config (? – help) Теперь нужно подтвердить конфигурацию. Вводим букву a и нажимаем Enter. После этого система задаст нам несколько вопросов. Отвечаем стандартно Enter. В конце жмем на Y. Save configuration data to a file? [Yes] Enter Save config in file: [/opt/zimbra/config.5422] Saving config in /opt/zimbra/config.5422…done. The system will be modified – continue? [No] Y Далее установщик будет конфигурировать сервер. Это займет время. В конце установщик спросит, желаете ли вы зарегистрировать сервер? Это не обязательная процедура. Вводим No и нажимаем Enter. На этом установка закончена. Нажимаем Enter и выходим из установщика. При стандартной установке Zimbra, почтовый сервер будет использовать следующие порты: Сейчас необходимо проверить, все ли службы Zimbra запустились. Для этого входим в консоль с помощью аккаунта Zimbra, Тренинг-курс по системам мониторинга, CAREN NOC. 129/132 Управление ресурсами и мониторинг производительности системы # su – zimbra И вводим следующую команду: # zmcontrol status Сервер ответит: Host mail.caren-noc.org antispam Running antivirus Running ldap Running logger Running mailbox Running mta Running snmp Running spell Running stats Running Если одна или более служба не была запущена, вводим команду: # zmcontrol start Выходим из аккаунта Zimbra: # exit Теперь все настройки будут осуществляться через web-интерфейс Консоль управления доступна по адресу — https://test.local:7071/zimbraAdmin/ Логин - admin, пароль – установленный Вами Web-клиент для почты доступен по адресу – http://mail.test.local Настройка: https://test.local:7071/zimbraAdmin/ Тренинг-курс по системам мониторинга, CAREN NOC. 130/132 Управление ресурсами и мониторинг производительности системы Настройка сервера очень проста, так как производится в графическом интерфейсе, и имеется возможность переключения на русский язык. Здесь можно управлять пользователями, доменами, классами обслуживания, просматривать статистику сервера и многое другое. Zimbra – это отличный почтовый сервер для совместной работы как внутри компании, так и вне ее. У Zimbra есть практически весь функционал MS Exchange. С точки зрения администрирования вы получаете мощный интерфейс управления всеми службами почтового сервера, а также встроенные средства диагностики и настройки. С точки зрения пользователя - приятный глазу интерфейс, общие календари, задачи и даже мини-чат. Функционал совместной работы в Zimbra реализован хорошо. Кроме того в Zimbra можно добавлять различные модули расширения (zimlet), такие как переводчик текста/писем, wiki-поиск и другие. Таким образом мы получаем отличный сервер для корпоративной работы абсолютно бесплатно. Тренинг-курс по системам мониторинга, CAREN NOC. 131/132 Управление ресурсами и мониторинг производительности системы Тренинг-курс по системам мониторинга, CAREN NOC. 132/132