Управление системой с помощью центра управления: web-интерфейс. Маршрутизация
Web-интерфейс центра управления
Продолжим обзор настройки системы при помощи Alterator, но с другой стороны. У нас курс расширенного сетевого администрирования. По плану людей, которые его писали, это настройка служб. Если при нажатиях кнопок в том Alterator мы придерживались какой-то легенды --- оператор ЭВМ, недостаточная информированность, и так далее, то здесь подразумевается более глубокое знание предмета настройки. Прежде чем приступать к собственно изучению Web-интерфейса центра управления, рассмотрим применение Alterator в различных дистрибутивах. Alterator используется в полном объеме в ALT Linux Master, также Web-интерфейс альтератора применяется в ALT Linux Server, наконец, он отсутствует в Junior. В ALT Linux Server, в целом, небольшое количество программных продуктов, управлять ими можно через web-интерфейс. В их число входят ряд web-служб. Напомним, что Alterator изначально был предназначен для настройки сервера.
(Хотя в рамках данного проекта разрабатывается ПО для рабочей станции, не для класса, в ряд задач входят такие задачи, как фильтрация информации, межсетевые экраны и т. д.)
Итак, во-первых, определим расположение этого Web-интерфейса. Для доступа к Alterator через меню необходимо открыть Меню далее Прочие и наконец Центр управления системой (www) (или же, перейти в браузере по адресу https://localhost:8080).
Одной из особенностей ALT Linux является поиск по меню. Так, набрав в поиске "www", мы сразу увидим, как добраться до нужного пункта меню, а все остальные пункты меню будут неактивны.
Обратите внимание, что работа с центром управления осуществляется по HTTPS.
Изначально эта технология была предназначена для управления сервером, причем не обязательно с той же машины, т.е. и по сети. Очевидно, что при входе в систему сервера по сети необходимо сделать ввод логина и пароля максимально безопасным, поскольку входить придется как суперпользователь. Для того, чтобы пароль не передавался по сети открытым текстом, используется зашифрованное соединение. Кстати, сохранять пароль не стоит, также в целях повышения безопасности. Итак, вводим root в качестве имени пользователя и его пароль. Обратите внимание, что Центр Управления системой, который у нас запущен, работает на нестандартном порту --- 8080; некоторые серверы используют его для других целей, но и протокол там не http, а https . Логин и пароль здесь суперпользователя, а порт нестандартный, это означает, что, во-первых, попасть туда случайно очень трудно и, во-вторых, это не мешает работе других web-служб.
Здесь появляется предупреждение о возможном нарушении безопасности, но боятся его не нужно. Это предупреждение о том, что сертификат этого компьютера, подтверждающий то, что он действительно этот компьютер, подписан им самим, а не в сертификационном центре.
Существуют значительные различия между сертификатом, который утверждён в сертификационном центре, и сертификатом, который не утверждён (самоподписанным). На самом деле, неизвестно, заходите вы на сайт свой или незнакомый, который может подглядеть Ваш пароль. Чтобы быть полностью быть уверенными в том, что Вы заходите туда, куда надо, необходимо, чтобы сертификат был подписан в сертификационном центре. Однако сертификат стоит денег, и если кто-то действительно захочет взломать сеть при доступе к ней, то он сможет подменить корневые сертификаты (это не так просто сделать, но в общем случае возможно).
В нашем случае следует выбрать пункт "всегда принимать этот сертификат". Тогда при следующем подключении сам факт, что произошло соединение по https и предупреждение о возможном нарушении безопасности не возникает, говорит о том, что вы подключаетесь так же, как делали это раньше. Через некоторое время мы еще поговорим об этом.
Часть настроек здесь та же, очевидно, что для части модулей был написан другой пользовательский интерфейс. Стоит отметить, что некоторые из пунктов содержат больше настроек, чем в обычном Alterator. Например, в пункте "Информация о системе" можно узнать собственно некоторую информацию о системе:
В большинстве случаев настройки отличаются только внешним видом:
Обратите внимание, что здесь появилось несколько пунктов, которых не было в обычном Alterator. Начнем с пункта "Обновления". Перейдем туда и увидим:
После этого можно попробовать обновить систему:
Однако в результате ничего не изменится. Итак, мы переходим к следующему пункту "Источники обновлений". В принципе, этот материал относится скорее к разделу "Администрирование". Дело в том, что в разделе "Системное администрирование", мы рассказываем о том, как работает пакетный диспетчер, и где лежат его настроечные файлы и файлы, связанные с установкой и настройкой программного окружения. В принципе, никакой проблемы не составляет выполнить вручную команды apt-get update и apt-get dist-upgrade, однако в ситуации, когда большая часть системы управляется по веб-интерфейсу, то логично рассмотреть это сейчас.
Используется схема, подобная той, что используется в Debian, с /etc/apt/sources.list и /etc/apt/sources.list.d/. То есть, имеется большой список источников обновлений, но большинство источников спрятаны в комментарии, в частности, там есть зеркала на Яндексе и многое другое. Среди них есть CD, с которого ставили систему --- он единственный включён. Если включить какие-то из других источников обновлений, например, updates.altlinux.org/4.0., этот интерфейс всего лишь удалит комментарий из соответствующего файла и больше ничего, но, с другой стороны, просмотреть весь список всего и выбрать, что нужно, в web-интерфейсе гораздо удобнее.
Существуют сервера разного типа: школьные сервера (с пометкой school) и обшие для ALT Linux (updates).
Речь идёт не только об обновлении системы, но и о выборе дополнительного хранилища пакетов. Мы можем установить в качестве дополнительного хранилища, откуда мы будем брать пакеты с программами, которые у нас не установлены (и обновленные пакеты) branch. Стоит отметить, что в хранилище, которое использовалось для подготовки дистрибутива ПСПО, существенно больше пакетов, чем в любом дистрибутиве ПСПО. Это обусловлено тем, что существует некий набор ПО, за который компания ALT Linux отвечаем перед заказчиком, есть некий набор, который мы посчитали нужным включить, чтобы обеспечить комфорт пользователя, а есть некий набор ПО, который включать или не включать --- личное дело каждого. Но при этом обеспечивать поддержку одновременно всех пакетов невозможно. С другой стороны, не хотелось включать пакеты, которые не вполне понятны.
Но все-таки давайте попробуем подключить хранилище пакетов. Выберем один или несколько серверов и отметим их, выберем "включить" и нажмем ОК:
Выбранные сервера станут включенными, они отобразятся в верхней части списка. Теперь можно попробовать обновится. Появились доступные обновления, теперь можно нажать "обновить систему".
Можно было бы конечно выбрать и branch (так в ALTLinux называются основное хранилище для текущей ветки дистрибутива).
Однако надо понимать, что подавляющее количество пользователей этого дистрибутива --- учителя, причём не только учителя информатики, и дети. А кому надо, тот может поставить и сам любой пакет. Единственная возможная проблема --- в отсутствии качественного интернета. Даже самый большой дистрибутив, который называется Мастер, всё равно не включает полного комплекта всех пакетов.
Также существует школьный бранч (он же school).
ALTLinux имеет обязанность некое время поддерживать школьную ветку. В школьный branch включено меньшее программ, чем в основной. Школьный бранч был отделен от 4.0, поскольку там делаются изменения, которые в 4.0 делать не будут. Этот бранч является основой для создания школьных дистрибутивов. Вообще говоря, его и следует использовать для компьтеров в школах.
Web-интерфейс центра управления: продолжение
Proxy
Следующий пункт меню: прокси-сервер. Сам этот термин буквально означает "ретранслятор". Применяются ретрансляторы в следующей ситуации: пусть некоторая группа компьютеров в локальной сети подключена к Интернету через маршрутизатор. В самой сети компьютеры имеют адреса из диапазона, скажем, 10.0.0.0/8. Как известно, пакеты с такими адресами не маршрутизируются в Интернете. В такой ситуации можно действовать двумя способами. Первый предполагает выполнение преобразования сетевых адресов, второй же вообще не позволяет внутренним машинам устанавливать какие-либо соединения с машинами из Интернета. Вместо этого устанавливается соединение со специальным внутренним сервером, который ретранслирует это соединение "наружу" (устанавливает отдельное, новое соединение). Благодаря такой схеме внешний сервер соединяется лишь с ретранслирующим сервером, который имеет корректный Интернет-адрес. Фактически, при работе функционируют два отдельных TCP-соединения:
Наиболее простой способ организации такой схемы состоит в следующем: внутреннее подключение осуществляется на специальный порт. В ПСПО (и не только) это по умолчанию 3128. Клиент знает, что для соединения с Интернет-сервером ему надо передать на этот порт локального ретранслирующего сервера адрес и порт Интернет-сервера, с которым он желает соединиться. Прокси-сервер осуществляет подключение, передает данные, получает ответ и транслирует его клиенту. Дальнейшее взаимодействие происходит таким же способом. Заметим, что при этой схеме удаленная сторона не знает, какой именно внутренний компьютер к ней подключается (а может, вообще говоря, и вовсе не знать, что подключается к ней не обычный клиент, а ретранслирующий сервер).
Иногда это представляет некие неудобства: в некоторых случаях удалённому серверу передаётся локальный адрес того, кому нужно передавать данные в ответ. Именно поэтому существуют анонимизирующие прокси, которые работают на уровне протоколов прикладного уровня (FTP, IRC), подменяя адреса в нужных пакетах. Говорят также о прозрачных прокси --- не требующих настройки со стороны клиента (в RFC они описаны как intercepting - "перехватывающие").
Настройка браузера
Начнём с простого: настроим браузер на то, чтобы он пользовался нашим прокси-сервером.
Если мы настраиваем в браузере прокси на своей машине, надо первым делом запомнить, что надо соединяться с конфигуратором по адресу localhost, то есть 127.0.0.1. Альтернативный вариант - в список исключений в браузере (адресов, для которых прокси использовать не надо) добавить адрес локальной машины (или всей локальной сети).
Настройка прокси-сервера
Выберем в Web-интерфейсе Alterator'a пункт "Прокси-сервер", чтобы настроить прокси-сервер под названием Squid:
Как видно, здесь можно задать основные настройки прокси-сервера:
- Принимать соединения - если на машине с прокси-сервером есть несколько сетевых интерфейсов, то по умолчанию подключаться к прокси можно с любого из них. Можно, однако, явно задать список адресов прокси-сервера, на которых он принимает соединения. Именно эти адреса могут указывать клиенты в настройках прокси своего браузера.
- Допускать сети - список возможных пользователей прокси-сервера. Сюда следует добавить адреса клиентских машин и подсетей.
- Добавлять домен - в случае, когда адреса клиентских машин "относительные" (внутри домена), к ним приписывается заданный в этом поле домен.
- Администратор сервера - поле, задающее опцию cachemgr_passwd в конфигурационном файле Squid'а. Предъявляющий данный пароль пользователь получает возможность производить с сервером и его кэшем некоторые заранее определенные операции (см. полный список в squid.conf).
Служба слежения за сетевым трафиком
Сетевой трафик. По умолчанию эта служба выключена, чтобы не увеличивать нагрузку на компьютер.
Управление веб-сервером конфигуратора
В пункте "Web-интерфейс: Сервер" можно задать настройки используемого конфигуратором Web-сервера. Как видно, здесь можно создать "самоподписанный" сертификат с настраиваемыми параметрами. Это может оказаться удобным: если сертификат самоподписанный и не может быть проверен, то его можно переподписать и в дальнейшем проверять, что это тот самый сертификат. Отсюда же можно отправить запрос на подпись сертификата в удостоверительный центр.
Настройка сетевого экрана
В настройках сетевого экрана можно настраивать блокировку входящего трафика в соответствии с используемым протоколом. По умолчанию пропускается любой протокол, а при внесении каких-либо изменений любой не разрешенный явно протокол блокируется. Разумно, к примеру, разрешать ICMP, HTTP, HTTPS, SSH (это, очевидно, зависит от функций, выполняемых конкретной машиной в сети). Каждый из сетевых интерфейсов конфигурируется отдельно.
Другие конфигураторы с web-интерфейсом
Итак, универсальный конфигуратор эффективен, если он отвечает двум требованиям:
- Модульность;
- Наличие большой команды разработчиков.
Использование универсальных конфигураторов актуально для обособленных подсистем, особенно если о создании конфигуратора позаботились разработчики подсистемы. В качестве примера можно привести большинство систем управления сайтами (CMS), в частности, Drupal. Подобные системы часто написаны на PHP, устанавливаются методом копирования в предопределенные места и полностью управляются через собственный графический интерфейс. Например, для установки Drupal необходимо скачать PHP-файл и подготовить SQL базу данных, после чего при первой попытке запуска система определит, что она еще не установлена, произведет установку, и при последующих обращениях предоставит разнообразные возможности -- скачивание и включение новых модулей, и т. п.
Впрочем, требование обособленности подсистемы не является обязательным. В некоторых случаях достаточно того, что разработчики предусмотрели удобный графический интерфейс для конфигурирования, распространямый вместе с самой подсистемой. В таком случае может быть целесообразно адаптировать уже имеющийся конфигуратор под конкретную ОС или дистрибутив. Например, нет смысла заново реализовывать функциональность конфигуратора CUPS (Common Unix Printing System, сервер печати) на Scheme для интеграции её в Альтератор, когда этот конфигуратор сам по себе весьма хорош и неплохо поддерживается разработчиками.
Стоит заметить, что существуют и не очень удачные web-конфигураторы. Например, конфигуратор к службе Samba --- Swat, по сути представляет собой редактор конфигурационного файла, но при этом генерирует конфигурационный файл без комментариев, что сильно затрудняет администрирование. Пользоваться подобными конфигураторами не рекомендуется без знания структуры конфигурационного файла. А в таком случае, зачастую, проще написать конфигурационный файл самому.
Далее рассмотрим более детально конфигуратор CUPS.
Устройство конфигуратора CUPS
CUPS является достаточно сложным программным продуктом, поддерживающим администрирование печати в многоранговых сетях со сложной структурой распределения прав доступа групп пользователей к классам принтеров. Данное пособие не претендует на исчерпывающее описание возможностей CUPS, будут рассмотрены лишь основные функции и настройки.
Так же как и Alterator, конфигуратор CUPS представляет собой web-сервис. В отличие от Alterator, использование которого требует прав суперпользователя, web-интерфейс конфигуратора CUPS предоставляет доступ к большому количеству действий всем пользователям, в том числе и не представившимся системе. Например, пользователь, указавший только свои логин и пароль, может отменить собственные задания.
По умолчанию, в ALT Linux, сервер печати запускается на всех компьютерах, а не только на тех, к которым подключен принтер. Дело в том, что определенным образом настроенный CUPS рассылает сообщения о доступности принтера в локальной сети (используя свой собственный протокол --- Internet Printing Protocol), чем может воспользоваться для настройки печати любой клиент, на котором запущен CUPS. Использование CUPS на клиентских машинах не является обязательным, но альтернативные способы решения задачи настройки печати весьма трудоемки.
Главная страница web-конфигуратора CUPS:
Добавление и настройка принтера в CUPS
- Откроем вкладку "Administration". Здесь указывается общая информация о принтере. Перейдем на следующий этап, нажав "Continue".
- Выберем устройство, которое надо подключить.
- Далее необходимо указать информацию для выбора драйвера нового устройства. Возможны два варианта:
- Драйвер есть в базе данных CUPS (весьма обширной). В таком случае в пунктах 3 и 4 достаточно выбрать производителя и модель принтера.
- В противном случае, необходимо скачать драйвер(файл формата ppd) с сайта производителя, и указать путь к нему в соответствующем поле ввода.
- В случае использования драйвера из базы данных, указываем модель принтера.
В данном примере мы выбрали некий generic (общий) принтер использующий PostScript. База данных драйверов принтеров очень велика, и основная сложность заключается в том, чтобы выбрать нужный. Но существуют драйвера, которые подходят для любого принтера, использующего определенный формат команд, например, PostScript. Существуют и другие форматы команд: EXC/P, для матричных принтеров; PCL, продвигаемый HP и поддерживаемый большинством принтеров этого производителя, и т. д. В данном примере выберем PostScript-принтер.
- Нажимаем Add Printer
- На данном этапе CUPS должен внести изменения в конфигурационные файлы системы. Для этого необходимы либо права суперпользователя, либо права пользователя из группы lpadmin.
- Добавление принтера завершено.
Мы видим страницу управления принтером.
- В меню Printer Options укажем формат используемой бумаги. Так как CUPS разработан в США, где принят несколько иной формат бумаги, во избежание недоразумений нужно выставить значение Page Size в A4.
- Printer Policy позволяет задать действия CUPS в случае прекращения работы принтера. По умолчанию неработающий принтер отключается. Это удобно, если в сети есть много принтеров, так как в этом случае CUPS автоматически выберет один из неотключенных принтеров и отправит задания на него. Если же в сети есть только один принтер, то это не самый удачный выбор -- задания, отправленные на неработающий принтер будут накапливаться. Для личного принтера больше подходит вариант retry job, для единственного принтера в компьютерном классе -- abort job. В последнем случае допустим так же вариант stop job, однако при таком выборе рекомендуется при включении принтера очищать список задач.
- Вернемся к странице Administration. Рассмотрим подробнее список Basic Server Settings.
- Show printers shared by other systems. Позволяет увидеть список принтеров, видимых в локальной сети в данный момент. Первая кнопочка показывет принтеры которые в данный момент видимы в локальной сети.
- Share published printers connected to this system. Позволяет предоставлять общий доступ к принтерам.
- Allow printing from the Internet. Позволяет предоставлять доступ к принтерам пользователям не только из локальной сети.
- Allow remote administration. Позволяет производить действия от аккаунта суперпользователя по сети.
- Allow users to cancel any job (not just their own). Если эта опция не включена, то любой обычный пользователь может отменить только те задания, которые послал сам. В противном случае, все пользователи могут отменять любые задания. Второй вариант удобен, если, например, на разных машинах в сети различаются списки пользователей. Также второй вариант позволяет пользователям не обращаться к системному администратору каждый раз, когда кто-нибудь послает файл на распечатку и забывает о нём.
Довольно долго в процессе администрирования CUPS не выполнял заданий по печати, но теперь эта проблема решена.
Занятное
Межсетевые экраны: теория
Вспомним о том, что мы говорили о компьютерных сетях и стеке протоколов TCP/IP. В частности, говорилось о задаче маршрутизации, говорилось о том, что маршрутизацией обычно занимаются выделенные для этого устройства --- маршрутизаторы. В роли маршрутизатора может выступать и обычный компьютер. Для того, чтобы компьютер под управлением ОС Linux был маршрутизатором, нужно выставить параметр ядра ip_forwarding.
Маршрутизация может быть рассмотрена как частная задача. Более общей задачей является задача ограничения, перераспределения и преобразования сетевого трафика (под трафиком понимается обобщенный массив передаваемых по сети данных). То есть, компьютер должен манипулировать данными, которые проходят через него (возможно, он и посылает эти данные, или они направлены ему), каким-либо образом модифицировать эти данные и накладывать на трафик ограничения, начиная от простой фильтрации данных, поступающих с определенного компьютера или относящихся к определенному протоколу и заканчивая более тонкими ограничениями, например, на объём передаваемого трафика (шейпинг).
Итак, мы имеем следующие задачи:
- Ограничение (фильтрация и шейпинг)
- Перераспределение (маршрутизация, перенаправление, балансировка)
- Преобразование
Это задачи межсетевого экрана.
Некоторые из этих задач выполняются, в некотором роде, автоматически. Если установлен соответствующий параметр ядра и таблицы маршрутизации правильные, то корректная маршрутизация будет производиться ядром сразу. Также, если послать пакет на недоступный адрес, то он не передастся. Это некоторое "естественое" ограничение трафика.
Все три из упомянутых задач могут возникнуть на любом из 4 уровней стека TCP/IP. Межсетевой экран --- это некий совокупный инструмент для их решения, он может состоять из многих программ и аппаратных средств. Рассмотрим подробнее задачи межсетевого экрана на каждом из уровней TCP/IP.
Интерфейсный уровень
Ограничение
Ограничение на интерфейсном уровне. Примером задачи может служить фильтрация по MAC-адресам. Средства такой фильтрации есть в iptables.
Перераспределение
Обычно распределение на интерфейсном уровне делается следующим образом: в среде передачи данных создается искуственным образом виртуальные сети (VLAN), например, добавлением байта в теле Ethernet-фрейма, указывающего номер виртуальной сети. На маршрутизаторе регистрируются виртуальные интерфейсы, соответствующие VLAN, и таким образом задача перераспределения переносится с интерфейсного уровня на сетевой. Это делается с помощью специального модуля ядра (vlanutils) и iptables.
Преобразование
Преобразование таким же образом выносится на уровень выше посредством VLAN.
Обычно эти задачи на интерфейсном уровне не очень востребованы и решаются не компьютерами, а специальными аппаратными средствами.
Сетевой уровень
Ограничение
Наиболее часто здесь решается задача фильтрации по IP-адресам. У пакета есть отправитель и получатель, на основе их адресов принимается решение, что делать с пакетом. Также иногда ограничиваются некоторые виды ICMP-сообщений. Делается это с помощью iptables.
Перераспределение
Распределение на уровне IP всегда нужно --- это, в частном случае, маршрутизация, основная задача на этом уровне. Нужно создать некоторое множество правил, согласно которым управлять пакетами. Иногда эта система правил может оказаться очень сложной. Выполняют эту задачу iptables и iproute2.
Преобразование
Преобразование IP-адресов --- также очень часто встречающаяся задача. Каким образом, например, компьютеры локальной сети, могут подключаться к серверам в Интернете, если они имеют локальный адрес? Один метод -- это использование proxy, но он неудобен. Обычно используется NAT (Network Address Translation --- преобразование сетевых адресов). Если машина из внутренней сети посылает пакет наружу, на маршрутизаторе IP-адрес этой машины подменяется IP-адресом машрутизатора во внешней сети, и, когда поступает ответ, адрес преобразуется обратно. Делается это опять-таки с помощью iptables.
Траспортный
Ограничение
Ограничение по портам, типичное ограничение на этом уровне, производится с помощью iptables. Ограничение по объёму, traffic control, входит в пакет iproute2 (программа tc).
Распределение
Одна из основных задач на этом уровне --- проброс портов (port forwarding), позволяет перенаправлять данные с какого-либо порта одного компьютера на какой-либо порт другого. Здесь также используется iptables.
Преобразование
NAT работает и на транспортном уровне, т.к. задействует некоторые свойства пакета, связанные с этим уровнем. Этим занимается iptables.
Прикладной
Ограничение
Фильтрация. Для этого существуют различные программы для различных протоколов, например, squid может фильровать HTTP-соединения по адресу прикладного уровня, URL. Для запрета конкретных протоколов, наприер, ICQ, есть инструмент l7filter для netfilter (iptables). Он по последовательности пакетов определяет, какой протокол ими реализуется. Простейшее взаимодействие с прикладным уровнем есть также и в iptables. Еще одна задача, относящаяся к этому уровню и часто встречающаяся --- антиспам. Анализируется адрес протокола прикладного уровня SMTP, то есть e-mail, анализируется содержимое прикладного уровня, содержимое письма.
Фактически, фильтрация на этом уровне --- это чаще всего дело отдельного специального приложения.
Распределение
Если речь идет о распределении на уровне прикладного протокола, значит, оно должно быть реализовано в этом самом протоколе. Допустим, пересылка почты реализуется на уровне e-mail адресов, доменов, и т.д.
Преобразование
То же самое: реализуется обычно отдельным приложением. Хотя преобразование на прикладном уровне делает также iptables. Когда в прикладном протоколе используется адрес клиента (примером может служить FTP), то нельзя, чтобы туда просочился локальный адрес. Iptables с этим справляется.
Сводная таблица:
|
Интерфейсный уровень |
Сетевой |
Транспортный |
Прикладной |
Ограничение |
iptables |
iptables |
iptables, iproute2 |
l7-filter, iptables, squid, спам-фильтры, ... |
Перераспределение |
iptables |
iptables, iproute2 |
iptables, iproute2 |
... |
Преобразование |
? |
iptables |
iptables |
iptables, ... |
Мы видим, что основным инструментом в нашей задаче является iptables, поэтому мы и рассмотрим его подробнее. Но нельзя забывать, что для решения этой задачи могут потребоваться и другие инструменты.
Достаточно неплохо введение в эту тему изложено в "Курячем-Маслинском", в соответствующей главе (Настройка сети: Межсетевой экран).