Issuu on Google+


Алексей Стахнов

СЕТЬ для ОФИСА

и LINUX-СЕРВЕР своими руками

Санкт-Петербург «БХВ-Петербург> 2006


УДК 681.3.06 ББК 32.973.202 СП

СП

Стахнов А. А. Сеть для офиса и Linux-сервер своими руками. — СПб.: БХВ-Петербург, 2006. — 320 с : ил. ISBN 5-94157-668-4 Описывается установка, конфигурирование и настройка Linux-сервера для небольшой локальной офисной сети, где клиентские машины работают под управлением Microsoft Windows. Рассмотрен жизненный цикл небольшой компании, которая расширяется, и по мере расширения усложняются задачи, возложенные на сервер организации. Освещены практические аспекты установки и администрирования серверов: почтового, web-, файлового, печати. При описании конфигурирования сервера используются 2 варианта решения задачи — с помощью графических программ удаленного администрирования и посредством конфигурационных файлов. Для начинающих администраторов

УДК 681.3.06 ББК 32.973.202

Группа подготовки издания: Главный редактор Зам. главного редактора Зав. редакцией Редактор Компьютерная верстка Корректор Оформление обложки Зав. производством

Екатерина Кондукова Евгений Рыбаков Григорий Добин Константин Костенко Натальи Караваевой Зинаида Дмитриева Елены Беляевой Николай Тверских

Лицензия ИД № 02429 от 24.07.00. Подписано в печать 05.12.05. Формат 70x100Vis. Печать офсетная. Усл. печ. л. 25,8. Тираж 3000 экз. Заказ Ne 1500 "БХВ-Петербург", 194354, Санкт-Петербург, ул. Есенина, 55. Санитарно-эпидемиологическое заключение на продукцию № 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12

ISBN 5-94157-668-4

© Стахнов А. А., 2006 О Оформление, издательство "БХВ-Петербург", 2006


Оглавление

Глава 1. Определение стратегам, выбор дистрибутива и аппаратного обеспечения

11

Аппаратное обеспечение Программное обеспечение Стратегия установки ПО Ссылки

11 13 18 20

Глава 2. Установка и первоначальная настройка сервера

21

Установка дистрибутива. Стандартный вариант Текстовый интерфейс установки Графический интерфейс установки Установка дистрибутива "вручную" Резюме

21 21 43 56 61

Глава 3. Настройка разделяемого коммутируемого модемного соединения для общего сетевого пользования

63

Подключение к Интернету Внешние модемы Модемы, подключаемые к последовательному порту Модемы, подключаемые к USB Внутренние модемы Настройка модемного соединения Связь с провайдером Схема организации подключения локальной сети Настройка связи с провайдером Команды pppd Настройка diald Создание сценария соединения: /etc/diald/connect Настройка основной конфигурации: /etc/diald.conf Настройка правил тайм-аутов: /etc/diald/standard.filter Комплексное тестирование

63 63 63 64 64 65 66 66 67 69 72 72 74 75 76


Оглавление

Настройка маршрутизатора Кэшируюший DNS-сервер Настройка сетевых параметров Файл host.conf Файл /etc/hosts Файл /etc/resolv.conf Установка DNS-сервера Настройка кэширующего DNS-сервера Файл /etc/named.conf Файл/etc/127.0.0 Запуск named

76 77 78 78 79 79 79 79 80 81 82

Глава 4. Установка Apache и Webmin

85

Web-сервер Apache Конфигурация Файл access.conf Файл srm.conf Файл httpd.conf. Webmin Страница Webmin Настройка Webmin Страница Система Службы Сеть Оборудование Кластер Прочее Глава 5. Настройка общего доступа к дисковому пространству сервера — Samba Установка Samba Файл конфигурации smb.conf Секция [global] Секция [homes] Секция [сотт] Секция [tmp] Пароли пользователей Добавление пользователей Samba Принтеры Использование ресурсов Samba Утилиты Webmin Антивирусные программы, clamav

....85 85 86 87 87 90 92 94 101 111 117 122 126 126 ,

129 129 130 136 139 139 140 140 141 141 142 143 144 148


Оглавление Глава 6. Настройка общего доступа к дисковому пространству сервера — FTP-сервер

151

Программное обеспечение Пакет vsftp Файл etc/vsftpd/vsftpd.conf Файл etc/vsftpd.ftpusers Файл etc/vsftpd.user_list Пакет wu-flp Файл Файл ftpservers Файл ftpconversions Файл ftpgroups Файл ftphosts Файл Безопасность

151 151 152 155 156 156 156 160 160 161 161 161 161

, ftpaccess

ftpusers

Глава 7. Настройка сетевого принтера

163

Способы вывода на принтер Система печати CUPS Программный пакет LPD Настройка LPD Учет ресурсов Настройка сетевого принтера Samba

164 164 164 166 167 168 168

:

Глава 8. Организация почтового сервера

169

SMTP РОРЗ Протокол IMAP Программное обеспечение РОРЗ fetchmail Программа sendmail Принцип работы программы sendmail Настройка программы sendmail

170 170 171 171 171 171 172 173 173

Глава 9. DHCP

177

Архитектура и формат сообщений Режимы выдачи IP-адресов Параметры конфигурации DHCP клиента DHCP-сервер Файл dhcpd.conf

177 177 178 179 179


Оглавление

Файл dhcpd.leases Пример файла dhcpd.conf DHCP-клиент

182 183 184

Глава 10. Сетевые настройки сервера, маршрутизация и DNS

185

Организация связи по выделенному каналу DNS Настройка первичного DNS-сервера Файл /etc/named.conf Файл /etc/named/firma.ru Файл /var/named/firma Файл /var/naed/firma.rev Настройка вторичного DNS-сервера Файл /etc/named.conf Файл/etc/named/CDfree.ru Некоторые тонкости Записи ресурсов службы DNS Реверсная зона Два сервера DNS Иерархические поддомены Используйте серверы кэширования Инструменты

186 187 187 187 189 190 190 191 191 191 192 192 194 194 194 194 195

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

197

Глава 12. FTP

201

Пакет vsftp Файл etc/vsftpd/vsftpd.conf Файл etc/vsftpd.ftpusers Файл etc/vsftpd.user_list

201 201 205 205

Глава 13. Web-сервер Apache

207

Конфигурация Apache Единственный web-сайт Файл httpd.conf Несколько web-сайтов (виртуальные web-серверы) Настройка DNS

208 208 208 212 213

Глава 14. Прокси-сервер

215

Squid Конфигурирование пакета Squid Сетевые параметры Размер кэша

216 216 217 217


Оглавление

Имена и размеры файлов Параметры внешних программ Время ожидания ACL — Access Control List Права доступа Параметры администрирования Параметры для работы в режиме ускорителя web-сервера Пример конфигурации Squid Transparent proxy Ключи запуска Squid Файлы журналов Squid Файл access.log Файл store.log Файл useragent.log Нестандартные применения Борьба с баннерами Разделение внешнего канала Обработка статистики Программа Squid Cache and Web Utilities (SARG) Программа MRTG

217 218 219 219 220 220 221 221 222 223 224 224 225 226 226 226 227 228 228 229

Глава 15. NNTP. Сервер новостей

231

Протокол NNTP Основные команды протокола NNTP Сервер новостей leafhode INN

231 232 235 235 237

Глава 16. NTP. Синхронизация времени через сеть, настройка временной зоны

239

Сетевой протокол времени Классы обслуживания Обеспечение достоверности данных Рекомендуемая конфигурация Сервер xntpd Конфигурация сервера Класс symmetric Класс procedure-call Класс multicast Общие параметры Обеспечение безопасности сервера Публичные NTP-серверы

239 240 240 241 241 241 241 242 242 242 245 245


8

.

Оглавление

Клиентские программы для синхронизации времени UNIX/Linux Apple Windows

245 246 246 246

Глава 17. Сервер Samba — контроллер домена

249

Конфигурирование Samba в качестве первичного контроллера домена Настройка клиентских компьютеров Windows 9х Windows 2000/XP Управление учетными записями

249 251 251 252 252

Глава 18. Контроль и аудит

253

Прокси-сервер Борьба с баннерами Разделение внешнего канала Организация доступа к web-ресурсам по паролю Запрет на скачивание определенных файлов Запрет на посещение определенных web-сайтов Квотирование трафика Программа NeTAMS Мониторинг загрузки каналов Программа MRTG Конфигурирование MRTG Программа RRDtool Подсчет трафика...

253 254 254 255 256 256 256 256 257 257 258 261 262

Глава 19. Настройка входящего модемного соединения

263

Настройка mgetty Настройка pppd Настройка Callback-сервера Конфигурация Callback-сервера Конфигурация клиентов Конфигурирование Linux-клиента Конфигурирование клиента MS Windows

263 264 265 266 266 266 267

Глава 20. Доступ к удаленным компьютерам

269

Telnet Telnet-протокол Программа-клиент telnet Программа-сервер telnetd Применение Telnet и безопасность

269 269 270 271 271


Оглавление

Протоколы SSH и OpenSSH Принцип работы SSH OpenSSH Конфигурирование OpenSSH Ключи запуска SSH-сервера Ключи запуска SSH-клиента Программы, входящие в пакет OpenSSH Программа ssh-keygen Программа ssh-agent Программа ssh-add Программа sftp Программа scp Программа ssh-keyscan Windows SSH-клиент VNC

272 272 273 273 279 279 281 281 281 ....282 282 283 284 284 287

Глава 21. Утилиты администрирования сети и обеспечения безопасности

289

Расширенное управление доступом к файлам Установка Linux ACLs Установка и изменение прав доступа Дополнительные возможности Шифрование Stunnel : Организация шифрованного туннеля Stunnel и приложения, поддерживающие SSL Сертификаты Утилиты сканирования и защиты сети SATAN.... Portsentry Установка и настройка Запуск Сетевая статистика NeTraMet Протоколирование Демон syslogd Файл конфигурации Сетевое протоколирование Демон klogd Защита системы после взлома Rootkit Обнаружение rootkit Сканирование портов Использование RPM

289 290 291 292 293 293 294 294 295 295 295 296 296 298 298 299 299 299 299 301 301 301 302 303 303 304


10

Оглавление

Сканер для rootkit После обнаружения LIDS Установка Конфигурирование LIDS Возможности Правила доступа Portsentry LogSentry Tripwire AIDE RSBAC Security-Enhanced Linux

304 304 305 305 307 308 310 311 312 312 312 312 313

Глава 22. Борьба с нежелательной почтой

315

RBL SpamAssassin

316 316

Список литературы

319


Глава 1 Определение стратегии, выбор дистрибутива и аппаратного обеспечения В этой главе мы закладываем базу нашего строения — выбираем аппаратное обеспечение, дистрибутив, используемый при установке и модернизации системы, и определяемся — чем же будет заниматься наш сервер, какие службы на нем будут исполняться.

Аппаратное обеспечение Начнем мы с "железа". Не знаю как у вас, а в наших пенатах хозяева фирм могут позволить себе неслабую мебель, евроремонт, приличные автомобили и не могут позволить себе приличный Интернет, компьютеры, мониторы и периферию. Жизнь такая, тяжелая. В результате, системный администратор должен выкручиваться и собирать компьютеры из всякого старого хлама. Особо это касается бюджетных учреждений. Поэтому я буду отталкиваться от цены, скажем, в 350—450 долларов США. Давайте не будем спорить и размахивать руками — знаю я, что такое "правильный" сервер. Я не возражаю, если вы сможете достать ProLiant, но рассчитывать нужно на минимум. Что нам нужно? Если планируется, что сервер также будет и рабочим местом системного администратора, то это потребует дополнительных затрат — на монитор, дополнительную оперативную память и более емкий жесткий диск. Итак, в табл. 1.1 приведена приблизительная конфигурация нашего компьютера, способного служить многоцелевым сервером и одновременно рабочим местом системного администратора.


Глава 1

12

Таблица 1.1. Примерная конфигурация сервера Наименование

Описание

Цена, $ США

Материнская плата

ASUS P4P800-MX S-478 (i865GV/ICH5) mATX 800 МГц, 3PCI, 4 DDR (PC3200) DC, SATA, 8USB, 6ch AC97, SVGA, LAN 10/100

73

Процессор

CPU Intel Celeron 1800 (128 Кбайт, 400 МГц) Socket-478 box, cooler

68

ОЗУ

Модуль DDRAM 256 Мбайт 400 МГц <РС3200> Samsung

52

Жесткий диск

HDD 40GB Samsung SpinPoint PL40 SP0411N, Ultra DMA 133, 60GB/platter, 2 Мбайт, 7200 rpm

55

CD-ROM

CD-RW Drive 52x/32x/52x LITEON LTR-5238S (int., IDE)

29

Дисковод

3,5" SONY

9

Корпус

Case Midi-tower ATX 6058 CA Black (4x5.25"+2x3.5"+5x3.5"(Hidden)) 300WT Pentium-4 475x182x425mm (LxWxH)

30

Монитор

Монитор 17" LG ezT711B Flatron (16", 0.2mm, max 1280x1024 66Hz) TCO99

130

Клавиатура

Mitsumi Business KSX-4 (for Windows 98, 104 key) рус/укр/лат PS/2

7

Мышь

Мышь, Mitsumi Mouse Optical Scroll PS/2 (OEM) black

9

ИБП

APC Back-UPS CS 350VA (BK350EI) USB Control, Soft, фильтр тел. линии

60

Итого

522

А теперь я поясню таблицу и выбор аппаратного обеспечения. Во-первых, компоненты подобраны качественные и с максимальной гарантией. Во-вторых, материнская плата на системной логике от Intel со встроенным видео, интегрированной сетевой картой поддерживает двухканальный доступ к ОЗУ, процессоры Pentium 4 последних модификаций и AGP-разъем для видеокарты, что может послужить в дальнейшем для модернизации. В-третьих, этой конфигурации хватит "за глаза" серверу, на котором не будут выполняться мощные приложения типа Oracle. На самом деле конфигурация тоже не без изъяна — если нет проблем с деньгами, я бы порекомендовал корпус фирмы АОреп или Chieftec — раза в два дороже, чем приведенный в таблице, но лучше как по исполнению, так и по металлу, а главное — великолепные и надежные блоки питания.


Определение

стратегии, выбор дистрибутива и аппаратного обеспечения

73^

Тем не менее корпуса Codegen являются проверенным решением, и большинством сборщиков компьютеров признаны достаточно надежными. Что делать, если денег маловато? Если вы точно знаете, что вам не придется использовать сервер в качестве рабочего места администратора, то смело отказывайтесь от клавиатуры, мыши и монитора. В результате итоговая сумма уменьшится до 376 долларов США. Если же стоит задача сэкономить деньги любой ценой, даже с некоторой потерей надежности или времени восстановления системы, отказываемся от дисковода, меняем планку памяти — вместо Samsung на KingMax (дешевле на 6—7 долларов, гарантия не 3 года, а 2), и меняем жесткий диск — берем тот же Samsung, только со скоростью вращения шпинделя не 7200, а 5400 оборотов в минуту. В результате этого получим стоимость порядка 358 долларов США. На "рационализаторские" предложения бухгалтерии/руководства отказаться от пишущего привода в пользу обычного CD-ROM посмотрите с укором — пишущий привод вам понадобится для изготовления резервных копий системы и данных. Возможность комфортно, быстро и своевременно сохранить важные данные (и как результат — восстановить в случае форс-мажорных обстоятельств) намного дороже экономии в десять долларов. Также не поддавайтесь на провокации и не вздумайте отказываться от источника бесперебойного питания — экономии на 60 долларов, а в случае скачка напряжения — потери на сотни.

Программное обеспечение Первым делом необходимо определиться, какой дистрибутив будет использоваться для установки на наш сервер. Я не буду останавливаться на классификации всех систем, подробно рассматривать их особенности, плюсы и минусы их использования. Тем, кому это интересно, могу порекомендовать Интернет или мою книгу "Linux". Здесь же я кратко расскажу о группах дистрибутивов и постараюсь объяснить, почему я выбрал Fedora Core в качестве решения для сервера. Люди, в первый раз обратившие свое внимание на Linux, с ужасом узнают, что Linux — это ядро операционной системы, которое везде одинаково (правда, есть варианты ядра реального времени, есть с повышенной безопасностью, но в целом — ядро одно), а вот дистрибутивов великое множество. Что подразумевается под этим словом? Дистрибутив — это инсталляционная программа, набор приложений, схема их обновления, политика (безопасности, разбиения диска, вариантов установок и т. д.), тот или иной менеджер пакетов, стратегия развития, и самое главное — подгонка разнородных программ для нормальной совместной работы. Многие думают, что в мире Windows такого нет. На самом деле Windows 2000 Workstation, Windows 2000 Server, Windows XP Home и Windows XP Home Edition — это дистрибутивы. Ядро системы одинаковое, различен только набор приложений и политика (убраны или добавлены некоторые возможности).


J_4

Глава 1

В чем прелесть дистрибутива? Поскольку ядро Linux и программы для него распространяются под лицензией GNU (GNU is Not UNIX, лицензия, подразумевающая распространение и модификацию программ с обязательным предоставлением всего исходного кода пользователям, с возможностью его свободной модификации), идеальным вариантом является компиляция ядра и используемых программ под конкретный экземпляр компьютера. Однако такое могут себе позволить не очень много людей — я думаю, пара десятков тысяч. Помимо того, что необходимо иметь громадные, я не побоюсь сказать, энциклопедические знания, нужна еще чертова уйма времени. Только компиляция ядра, оптимизированного для нашего сервера, займет часов восемь — сначала грамотно настроить все параметры, потом настроить опции компилятора, библиотек, далее сама компиляция. И хорошо, если с первого раза вы получите удовлетворяющий вас результат. В среднем же, в установленной Linux-системе насчитывается порядка 1000—2500 пакетов. Представьте, сколько займет времени компиляция всего этого добра. Тем не менее энтузиасты разработали несколько дистрибутивов, которые при установке производят компиляцию из исходных текстов всего и вся, максимально оптимизируя под ваш экземпляр компьютера. Для профи-энтузиаста — очень заманчивый вариант. Но не для нас. Нам необходимо, в идеале, получить живую систему за пару-тройку часов, потом уже в более спокойной обстановке постепенно наращивать возможности сервера. В случае же сборки из исходных кодов нам понадобится несколько дней. Самым сложным, после "самосборных дистрибутивов" (Linux From Scratch), является Slackware — очень правильный, с простой и понятной философией: "экономика должна быть экономной", он подразумевает минимум накладных расходов при инсталляции, сопровождении и обновлении пакетов. Относительно нетребователен к аппаратной части. Как луковица состоит из слоев, так и здесь — сначала идет набор самых необходимых пакетов, потом набор сетевых пакетов, потом служб и т. д. и т. п. В результате получаются очень компактные системы, где нет ничего лишнего. Оборотная сторона медали — пакеты .tgz представляют собой просто архивы с исходными кодами программ. Для работы с ними необходимо очень хорошо знать логику функционирования и конфигурационные файлы системы, ручная правка которых является нормой (оболочки-конфигураторы выбиваются из логики дистрибутива — поставить их можно, но их использование не соответствует идеологии Slackware). Политика сборщика такова, что появление новой версии системы — достаточно редкое явление, и происходит тогда, когда проистекают глобальные изменения — смена версии ядра (с 2.4 на 2.6), появление новой версии GTK и т. д. С одной стороны это плохо, мир Linux очень динамичен, новые версии программ появляются почти ежедневно. С другой стороны, система считается чуть ли не эталоном надежности и стабильности, и эту репутацию сборщик всеми силами старается поддерживать.


Определение стратегии, выбор дистрибутива и аппаратного обеспечения

Далее — группа дистрибутивов, основанных на Debian. Они, пожалуй, очень сбалансированы как для серверного, так и для десктопного применения. Ориентированы на опытного пользователя. В целом несколько проще в освоении, чем Slackware, менее требовательны (по сравнению опять же со Slackware) к объему знаний, поддерживают свою систему пакетов (deb). Как обычно, упрощение в установке и администрировании тянет за собой более сложную структуру представления данных и появления тяжеловесности — добавляются разные администраторы пакетов, системы по управлению и администрированию программ и служб. Достоинством Debian является, во-первых, набор программ, входящих в него (порядка десяти компактдисков), во-вторых, политика формирования и поддержки. Дистрибутив имеет две ветки — стабильную, носящую свое кодовое имя, проверенную и отлаженную, рекомендованную к использованию, но выходящую достаточно редко. И нестабильную ветку, достоинством которой является практически моментальное обновление пакетов (при появлении новых версий программ), огромнейший репозитарий программ, а также сквозная совместимость пакетов. Таким образом, если хочется надежной и проверенно�� системы, то ставится стабильная версия. Если же нужно что-то экзотическое, либо самое новое — берем версии программ из репозитария — самое свежее, правда, не всегда до конца отлаженное. Сборщики Debian стараются действовать по пословице "и волки сыты, и овцы целы", что в целом им удается — дистрибутив достаточно популярен. Группа дистрибутивов Red Hat. Пожалуй, самая многочисленная группа и самая коммерчески успешная. В целом не все то хорошо, что хорошо продается — это мы можем наблюдать повсеместно. Но в данном случае системы, основанные на Red Hat, заняли прочную нишу как в десктопной части рынка, так и в серверной. Дистрибутивы группы Red Hat ориентированны на неопытного пользователя — простая система установки (в основном, графическая), простота настройки, благодаря различным графическим инсталляторам/конфигураторам, неплохая система пакетов — RPM (Red Hat Package Manager, менеджер пакетов Red Hat). Достоинством такого подхода является "понижение порога вхождения" для пользователей — любой без проблем сможет установить операционную систему на типовой компьютер. Недостатком является несколько накрученная система конфигурации и, как следствие, уклон в графический режим, что служит причиной увеличения занимаемого места на жестком диске. Тем не менее, судя по популярности дистрибутивов этой группы, преимущества перевешивают недостатки. Давайте перечислим основных игроков (по распространенности). • Red Hat. Компания Red Hat некоторое время назад отказалась от универсального дистрибутива, предназначенного для установки и на десктоп, и на сервер. Вместо этого она стала поддерживать Fedora Core — проект, полностью основанный на Red Hat, собираемый группой независимых разработчиков. Red Hat предоставляет место для web-сайта, помогает

15_


16

Глава 1

в создании и тестировании пакетов, написании документации. Себе Red Hat оставила корпоративный сегмент, для которого выпускаются несколько версий системы, ориентированной на решения для рабочих станций, на обычные серверные решения и специальные, особо защищенные, серверные решения. Поскольку корпоративный рынок консервативен, то новые версии выходят достаточно редко. Основные нововведения обкатываются в Fedora Core, а удачные решения и пакеты программ в дальнейшем переносятся в коммерческие решения. Red Hat проводит следующую политику по отношению к пользователю — поддерживается любой дистрибутив, даже выпущенный несколько лет назад. • Mandrake или Mandriva — французский дистрибутив, базирующийся на Red Hat. Основное его назначение — установка на домашний или офисный компьютер, причем в качестве графической оболочки используется KDE. В связи с этим, основной упор на графические "красивости" и различные программы, используемые дома и на рабочем месте. • Alt Linux — российский дистрибутив, базирующийся на Red Hat. Политика по части сопровождения является смесью подходов Debian и Red Hat — от первого взята концепция стабильного, медленно обновляемого дистрибутива и репозитария самых свежих пакетов, называемого Sisyphus. От второго — практика создания нескольких вариантов системы. Далее я просто цитирую официальный сайт Alt Linux. • ALT Linux 2.4 Master (BOX) — универсальный дистрибутив GNU/Linux, включающий в себя множество подготовленных к эксплуатации программных решений для серверов и рабочих станций. ALT Linux 2.4 Master — решение для профессионалов, ценящих свое время и желающих полностью сохранить контроль над системой. Master традиционно пользуется популярностью среди разработчиков, профессиональных системных администраторов, опытных пользователей, специалистов, работающих в области ИТ-образования. • ALT Linux 2.3 SOHO Server — готовое решение, предназначенное для организации сервера доступа в Интернет как для небольших сетей, так и для сетей масштаба предприятия. Среди многих серверных компонентов усилена функция межсетевого экрана. ALT Linux 2.3 SOHO Server поставляется в коробке с печатной документацией. В стоимость включена техническая поддержка по электронной почте в течение 60 дней с момента первого обращения. • ALT Linux Junior 2.3 — дистрибутив для рабочих станций и домашних компьютеров, для начинающих и опытных пользователей, простой в установке и использовании. ALT Linux Junior 2.3 распространяется в двух вариантах: в коробочных версиях с печатной документацией и в компактных jewel-упаковках.


Определение

стратегии, выбор дистрибутива и аппаратного обеспечения

17

• ALT Linux 2.3 Compact — однодисковый дистрибутив для домашнего и офисного использования, идеально подходящий для предустановки на рабочие станции и ноутбуки. В состав ALT Linux 2.3 Compact входит оптимальная подборка свободных офисных и web-приложений. • ALT Linux "Утес-К" — универсальный защищенный дистрибутив Linux, сертифицированный ГТК по 5 классу СВТ защиты конфиденциальной информации, пригодный для использования как в качестве сервера, так и рабочей станции. • ALT Linux Castle — защищенный серверный дистрибутив на основе системы RSBAC (Rule Set Based Access Control, расширение защиты для ядра Linux). • ASP Linux — российский дистрибутив, базирующийся на Red Hat. Политика по сопровождению копирует подход Red Hat. Выпускается несколько вариантов системы, список и краткий обзор которых приведен ниже. • ASPLinux Server II — дистрибутив оптимизирован для создания корпоративных серверов различных классов и поддерживает различные серверные архитектуры, включая многопроцессорные, и системы с большими объемами памяти. Централизованная настройка большинства служб и программ существенно облегчает их установку, использование и администрирование. • ASPLinux Server — стабильное и надежное решение для построения корпоративной сети, включающей почтовый сервер, web-сервер, сервер печати, сервер приложений, сервер баз данных. Включает утилиту централизованной настройки служб и программ, уменьшая сложность настройки, использования и администрирования. • ASPLinux vlO Deluxe — наиболее полный вариант дистрибутива ASPLinux vlO. Это идеальный помощник специалиста, которому необходим надежный и мощный инструмент для решения любой задачи, какой бы сложной она не являлась. Этот дистрибутив с одинаковым успехом может быть использован для установки как на рабочей станции, так и на сервере предприятия малого или среднего бизнеса. • ASPLinux vlO Standard — вариант дистрибутива ASPLinux v 10, подготовленный для установки на компьютеры корпоративных или домашних пользователей. Этот дистрибутив предназначен для тех, кто хочет работать в Linux каждый день, кто хочет знать о нем больше, но не обладает навыками программиста или системного администратора. • ASPLinux vlO Express — вариант дистрибутива ASPLinux vlO, одинаково подходящий как тем, кто только знакомится с миром Linux, так и тем, кто уже знаком с ним настолько, что не нуждается в посторонней помощи. Традиционная мощь и надежность решений от ASPLinux сочетаются в нем с простотой установки и настройки, доступной даже неподготовленному пользователю.


18

Глава 1 • ASPLinux vlO Greenhorn — вариант дистрибутива ASPLinux vlO, загружающийся прямо с компакт-диска и не требующий установки на винчестер. Это идеальное средство для тех, кто только знакомится с ОС Linux и тех, кому, по каким-то причинам, нужно срочно воспользоваться предоставляемыми этой ОС возможностями. Несмотря на то, что ASPLinux vlO Greenhorn не нужно устанавливать на жесткий диск, используя его можно без проблем работать с программами и файлами, размещенными на жестком диске.

Как видите, все три группы интересны по-своему. Однако я позволю себе волевым решением выбрать Fedora Core. Объясню почему. Во-первых, я адресую книгу не очень опытному пользователю, что автоматически исключает Slackware и ставит под сомнение использование Debian. Во-вторых, из трех дистрибутивов, основанных на Red Hat, первичным является Fedora Core, остальные выходят позже его и, в основном, используют пакеты от Fedora Core. В-третьих, к сожалению, не все российские дистрибутивы лишены "ошибок". И в-четвертых, процесс установки и настройки в них очень схож, поэтому нет никаких проблем, используя описание процесса настройки и установки Fedora Core, установить и настроить, к примеру, Alt Linux. А благодаря максимальной совместимости, мы можем в ASP Linux или Fedora Core установить пакеты, взятые из репозитария Alt Linux Sisyphus.

Стратегия установки ПО После того как мы определились с "железом" и дистрибутивом, перейдем к стратегии инсталляции программного обеспечения. В программе-установке системы есть специальный пункт — Server (Сервер), при выборе которого будут устанавливаться пакеты, предназначенные для конфигурации системы в режиме "среднестатистического сервера". В следующей главе я расскажу, как установить сервер, используя эту возможность, и, как альтернатива, будет рассмотрен ручной выбор пакетов. Основной посылкой при установке является минимализм и пошаговый подход. Сначала мы устанавливаем минимальный набор программ, необходимый и достаточный для функционирования сервера, настраиваем нужные службы, а в каждой главе я ставлю задачу, например, организовать доступ в Интернет для локальной сети через коммутируемое соединение, и мы устанавливаем необходимые для этого пакеты, конфигурируем их, не забывая о безопасности системы. Прошу прощения заранее — я не буду рассматривать установку графической системы и графические конфигураторы, поскольку помимо сотен мегабайт необходимого дополнительного программного обеспечения, мы автоматически увеличим вероятность взлома системы или количество проблем, вызываемых неправильным функционированием программ. Но самое главное — вы не получите тех знаний, которые необходимы для понимания принципов


Определение стратегии, выбор дистрибутива и аппаратного обеспечения

функционирования системы. Тем не менее я не на столько кровожаден — мы рассмотрим процесс конфигурирования некоторых аспектов через webинтерфейс. Задачи, стоящие перед нами, я взял из жизни. Это типичный цикл роста небольшой фирмы, которая динамично развивается и обрастает компьютерами и задачами, решаемыми на них. Сперва у фирмы появляется модемное подключение к Интернету, которое необходимо "раздать" на все компьютеры сети. Параллельно нужно организовать общее дисковое пространство, доступное сотрудникам офиса, доступ к сетевому принтеру. В дальнейшем, при развитии фирмы, у нас появляется выделенное постоянное подключение к Интернету и, как следствие, потребность в своем web-сайте, электронной почте, FTP-сервере (File Transfer Protocol, протокол передачи файлов), удаленном администрировании. И при этом не следует забывать, что основные потребители услуг, предоставляемых нашим сервером, — компьютеры с операционной системой Windows. Итак, наши задачи, которые стоят перед нами и которые мы методично и последовательно будем решать. 1. Установка и первоначальная настройка сервера. 2. Настройка коммутируемого модемного соединения и организация шлюза для выхода в Интернет. 3. Установка web-сервера Apache и Webmin — программы для конфигурирования системы через web-интерфейс. 4. Настройка общего доступа к дисковому пространству сервера. 5. Настройка сетевого принтера. 6. Организация простейшего почтового сервера. 7. Установка и настройка DHCP-сервера (Dynamic Host Configuration Protocol, протокол динамической конфигурации хоста). 8. Переход на выделенную линию и перенастройка уже установленных служб и добавление новых. 9. Настройка прокси-сервера. 10. Настройка NNTP-сервера (Network News Transfer Protocol, сетевой протокол передачи новостей) или сервер новостей. 11. Настройка NTP (Network Time Protocol, сетевой протокол времени) для синхронизации времени через сеть и настройки временной зоны. 12. Настройка контроллера домена. 13. Контроль и аудит системы. 14. Настройка входящего модемного соединения. 15. Утилиты администрирования и обеспечения безопасности.

19_


20

Глава 1

Как видите, задач достаточно много. Но, как говорят китайцы, — "даже путь в тысячу ли начинается с первого шага ". Шагом, марш!

Ссылки В целом, по поводу выбора дистрибутива и аппаратного обеспечения, ничего особенного я посоветовать не могу. Читайте информацию на сайтах производителей, подпишитесь на новостную группу, пообщайтесь на форумах и сайтах, посвященных Linux. Но есть один универсальный совет — "выбирайте тот дистрибутив, который хорошо знает ближайший гуру" (С). Народная мудрость. О www.Iinux.org.ru — один из основных русскоязычных web-сайтов, посвященных Linux. • www.linux.org — web-сайт о Linux. • www.linuxdocs.org — web-сайт, содержащий много литературы о Linux. • www.linuxrsp.ru — русскоязычный web-сайт. О www.redhat.com — web-сайт Red Hat. О www.altlinux.ru — официальный web-сайт Alt Linux. О www.asplinux.ru — официальный web-сайт ASP Linux. D www.citforum.ru — здесь вы найдете большое собрание русскоязычной документации и книг, в том числе посвященных Linux.


Глава 2

Установка и первоначальная настройка сервера В этой главе мы произведем установку нашего сервера, причем будем рассматривать два варианта установки: с помощью графического интерфейса и в текстовом режиме. И две стратегии — установка по умолчанию и самостоятельный выбор пакетов. Первичную настройку сервера будем производить как во время, так и после установки системы. В нашем случае это будут: настройка сетевого интерфейса, настройка брандмауэра, DNS (Domain Name System, доменная система имен), маршрутизация.

Установка дистрибутива. Стандартный вариант В этом разделе мы рассмотрим наиболее легкий, с точки зрения пользователя, вариант установки сервера. Минимальные телодвижения, минимальное вмешательство в процесс установки — "за нас уже подумали". Для быстрого старта системы самое то, правда, в дальнейшем придется почистить систему, кое-что добавить, но несомненным плюсом этого подхода является мобильность развертывания системы — полчаса и сервер готов.

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


22

Глава 2

Итак, у вас на руках свежесобранный сервер. Первое, что необходимо вам сделать — зайти в BIOS и грамотно его настроить. Второе — в том же BIOS временно установить в качестве первого устройства загрузки CD-ROM. Уже давно все дистрибутивы поставляются на загрузочных компакт-дисках, поэтому нет необходимости возиться с загрузочными дискетами. Вставляем компакт-диск в CD-ROM, перегружаем компьютер и видим строку приглашения (рис. 2.1).

Fedora СО

R

ode, press the <ENIER> ke tyjia: linux text <ENTER>.

listt s it tit->luu fur nor*/ infornati

Рис. 2 . 1 . Строка приглашения

Давайте займемся расшифровкой. Внизу экрана мы видим командную строку, в которой мы можем вводить команды. Если в течение некоторого времени (порядка минуты) ничего не будет введено, дистрибутив самостоятельно начнет установку в графическом режиме. В средней части экрана находится сообщение о том, что для начала инсталляции или обновления уже установленной системы в графическом режиме необходимо просто нажать клавишу <Enter>. Чтобы проделать то же самое в текстовом режиме, необходимо ввести linux text и нажать клавишу <Enter>. Помимо этого существуют дополнительные возможности, о которых вы можете узнать, нажав соответствующие функциональные клавиши (или прочитав во вставке). Вводим в командной строке linux text, нажимаем клавишу <Enter> и получаем экран, изображенный на рис. 2.2. В этот момент дистрибутив опрашивает все аппаратное обеспечение компьютера, определяет его тип и выводит полученные данные на экран. Как правило, на этом этапе никакого криминала не происходит, и после тестирования железа мы получаем экран, изображенный на рис. 2.3. Система определила, что инсталляция производится с компакт-диска, и предлагает произвести проверку носителя. Это имеет смысл, если у вас со-


Установка и первоначальная настройка сервера

23

мнительные болванки, либо старый CD-ROM. Если же вы уверены в своем аппаратном обеспечении, то смело нажимайте кнопку Skip. Нас приветствуют (рис. 2.4)! Здесь можно вернуться к предыдущему пункту, но мы нажимаем ОК и переходим к экрану, изображенному на рис. 2.5.

tp: Net {'tug л P l ^ y d e v i c e found TtNB Clock D r i v e r w1. \/ с *'typ<jrtrt I n t e r f a c e V H . I H H (c * Have June irt: D e t e c t e d л» I n t e l 448BX C h i p s e t . BGP a p e r t u r e I s (MM *• ВхГВИВИИВЯ \лч/ mix jinrt a t и х ^ в . в х м t n j .12 1И42 KB)! p o r t a t Вхйй.йхМ i r n 1 ] ? 5 B / t 6 5 5 e d r i w r ^ R e v i s i o n ! i.'M $ tl [lorts i t у SO .it I/O I/O 0x3fH ПхЗГН ( i r q » 4 ) h; is; .1 а Ш55ЯП Ш55вЙ tt))Sl iit (/0 •, ИШИП Si;;»!iHfl (/0 0 x 2 f 8 ( i r q а - 3 ) |<; Is ,а nriHIHSK d r i v e r I n i t i a l t z e d : 1Г> КПМ . i i s k s of B18?K si;:« IH24 l>l<n:ki; llnil'iii'M Ни 11 i --PliitforH E IDE d r i v e r R e v i s i o n : 7.HHiilplia7 j d c : flssUHtnfl 33MHz в ^ я ! в м Ь«* speed f o r f'10 Ж1йшя! ovf'rridt» w i t h IMIX<i: IIIK c o n t r o l l e r .it !!(::l Slo1 ИЙВВ:8в:В7.1 РИУЛ'. c h i p s e i r a u l s l o n 1P1IX4: not t4m n a t i v e Mode: w i l t p r o b e f n j s l a t e r id«B: BM BMft a i Вх147И-flxl477, BIOS s l i t t i n g : ! : lirt«: OMf», hrth:pl<i i r t « l : НН--ПНП .<t Bxl47B Их147Г, BIOS s e t t i n g s : M<::I)t1rt, I i d d : p i n 1к!д: UMw.ire U i r t u a l i n s Hard D r i v e , flffl BISK iJrivi! Using <:fq itu SGh.edul0r Idefl a t H x i r B - d x l f ? , e x 3 f n nil I r q 14 i.n-e U i r t u a l IDE Г1ШЛМ l l r i u e . 11ТЙР1 CI!'HUn-R0H d r i v e idRl rtt Пх17В-Вх177,8x376 01) i r q \S

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

То begin testing the CD media before Installation press OK. Choose Skip to skip the media t e s t and start ttie Installation.

Рис. 2.З. Тестирование носителя, с которого производится инсталляция


Глава 2

24

Рис. 2.4. Приветствие

!angiiagR urrnli) you like to use during the Installation process? CliineseiSlmplIf 1ел) Clilncse(Tr-aditianal) i .4 1.-4

I..\l

Рис. 2.5. Выбор языка, на котором будет происходить инсталляция

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


Установка и первоначальная настройка сервера

25

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

Рис. 2.6. Выбор раскладки клавиатуры

Далее нам предлагают определиться с раскладкой клавиатуры, подключенной к компьютеру (рис. 2.6). К сожалению, здесь нельзя автоматически определить тип клавиатуры, понажимав на некоторые клавиши. В дальнейшем раскладку можно поменять с помощью соответствующих утилит. В нашем же случае это не принципиально — на сервере русский язык вам практически не понадобится, поэтому выбираем nil. Нажимаем ОК и переходим к следующему этапу (рис. 2.7). Здесь мы выбираем тип устанавливаемой системы. Мы можем выбрать один из четырех типов: 1. Personal Desktop — система используется на домашнем или офисном компьютере. 2. Workstation — система используется на рабочей станции. 3. Server — система используется в качестве сервера. 4. Custom — самостоятельно определяем устанавливаемые пакеты. Что это нам дает? Создатели дистрибутива проанализировали, какие пакеты чаще всего используются в представленных трех вариантах и сгруппировали их таким образом, что, выбрав нужный тип системы, мы уже получаем


Глава 2

26

на 90% готовый к использованию набор программного обеспечения. Также нам оставляют возможность самостоятельно добавить или убрать некоторые пакеты. Выбираем Server и двигаемся к следующему экрану (рис. 2.8).

Рис. 2.7. Выбор типа инсталляции

Автонатичксхое рлзвивнив бупет веполнкно на основе вь^рлнного ь»гш типа установки. Вы TCIKXC похете изменить разбиение в соответствии ими . Утилита ручного разбиения дискл, Disk Druid, позволяет настроить развели в интерактивноп окружении. Вы можете установить типы файловых систем, точки монтировании и многое притоп. Пптпмлтичг-пкпг.: iirt.t6ur.HUf

РИС. 2.8. Разбиение жесткого диска на разделы


Установка и первоначальная настройка сервера

27

Здесь мы можем выбрать из двух возможностей — либо система сама разобьет на разделы жесткий диск так, как это предусматривает политика создателей дистрибутива, либо мы это сделаем вручную, самостоятельно. На данном этапе выберем Автоматическое разбиение и посмотрим, что будет дальше (рис. 2.9). rednra Спгк (С) ?MW Rrai Hrtt, Inc.

нвтимятичеоюе разбиение \—Перед тем, КАК программа установки еишлиит автоматическое разбиение, вы долхкы чье рать, клк «

иг;ПОЛ1>ЧЙВПИО ЮН; ТО lift ХеКЧГМ*

«MUiflX

Удалить все раадеяы Linux на этой системе .охранить все разделы и

Какие устройства вы хотите испольэоолть для этой установки? •

«

.

• • / • • • • •

'

• • • '

• • • • • •

:

<Tab>/<ftIt ТдЬ> нежду элементами ! <Space> выбор ! <F12> следующей экран

Рис. 2.9. Выбор диска и стратегии его очистки КвЛмго Снге (С) ХИИ4 Ней lint,

1 Перед тем, как программа уст&ноаки вмюлмит

1

1

Вы выбрали удаление ьсех разделов (ВСЕХ ространитиа Какие

Вы уверены, что хотите удалить все раздел»/?

жн'!

<Tab>/<Ciit ТЙЬ> между элементами ! <Space> выбор ! <F12> следукшнй экран

Рис. 2.10. Предупреждение об удалении разделов диска


Глава 2

28

И что же мы видим? Внизу экрана присутствует список жестких дисков. В нашем случае — один IDE-диск с именем hda. Принципы наименования дисков можно найти в литературе, в частности в моей книге "Linux". В верхней части — три варианта использования места на жестком диске. Поскольку у нас новый компьютер, выбираем Удалить все разделы на этой системе и переходим к следующему экрану. Здесь нас пугают потерей всех данных на диске (рис. 2.10), но это не должно смущать — винчестер-то новый, на нем еще нет никакой информации. Смело жмем ОК и переходим на следующий уровень (рис. 2.11). Здесь мы видим окно программы Disk Druid — с ее помощью можно производить низкоуровневые операции с диском. Инсталлятор решил, что нам достаточно трех разделов — корневого, загрузочного (где лежит ядро системы) и swap-раздела. Fedora Core СО 2вИ4 Ked Hat, Inc.

Устройство

: IV LogUolBB /dev/hda Mat

Ha

•«MM UnlGrniiM swap •MOM ext3

LU

hdaZ

1

• 13 65Z

/

1В1П ext3 /boot 5812И physical v

Fl-nono№ FZ-Новьй F3-npauKa F-I-Удалить F5-C6poc FIZ-Ok

Рис.

2 . 1 1 . Предупреждение об удалении разделов диска

Очень спорное разбиение диска и вот почему — если диск не разбит на несколько томов, каждый из которых предназначен для отдельного каталога дерева каталогов Linux, то при переполнении жесткого диска система не сможет нормально функционировать, поскольку должны создаваться временные файлы, куда-то записываться файлы журналов, где-то храниться базы данных и т. д. и т. п. Поэтому рекомендуется либо назначать квоты дискового пространства для каждого пользователя, либо выделить отдельные дисковые тома под некритичные для функционирования сервера каталога. Обычно всегда выделяется каталог /boot, так же рекомендуют выделить либо


Установка и первоначальная настройка сервера

29

весь каталог /var, либо его части, например, /var/samba или /var/http, и каталог /home. Тем не менее, если вы будете устанавливать квоты на дисковое пространство или административными методами не допускать переполнения жесткого диска, можно оставить разбиение в таком виде, как предлагает инсталлятор. Как пользоваться программой Disk Druid, мы узнаем в разделе графической инсталляции. После разбиения диска появится экран, изображенный на рис. 2.12.

Какой загрузчик вы собираетесь испопьлоьл ть?

Рис.

2.12. Выбор типа загрузчика

Здесь необходимо выбрать, устанавливать загрузчик или нет. Загрузчик — это специальная программа, позволяющая, во-первых, загружать операционные системы при включении компьютера; во-вторых, если установлено несколько операционных систем, выбирать из списка необходимую; в-третьих, передавать ядру операционной системы дополнительные параметры; в-четвертых, установить пароль на загрузку (для сервера не рекомендуется). Если же мы не установим загрузчик, то с жесткого диска без дополнительных телодвижений (специального диска) загрузиться не удастся. На рис. 2.13 изображен экран, в котором можно добавить параметры, которые будут передаваться ядру при его загрузке. Обычно это используется при наличии в аппаратуре нестандартных устройств — специальных контроллеров, плат видеозахвата и др. Далее следует установка пароля на загрузку операционной системы (рис. 2.14), в нашем случае я не рекомендую этого делать. Объясняю почему — сервер обычно работает круглосуточно, в автоматическом режиме. К примеру, пропал свет в выходные, источник бесперебойного питания


Глава 2

30

(ИБП) корректно выключил питание в тот момент, когда батареи разрядились. Дали напряжение — ИБП подал питание, а при старте компьютера загрузчик запрашивает пароль. И никого нет, и получается, что наш сервер простоял выходные без дела.

Рис. 2.13. Выбор типа загрузчика

Рис. 2.14. Установка пароля на загрузчик операционной системы


Установка и первоначальная настройка сервера

31

После этого мы выбираем, какая из операционных систем будет загружаться по умолчанию (если их несколько) и как они будут называться в списке загрузчика (рис. 2.15). Это мы оставляем без изменений. Затем указываем, где будет находиться на жестком диске загрузчик операционной системы (рис. 2.16). Оставляем Основная загрузочная запись (MBR).

Мскеяхер здгрдоки Fedora l o r e noser загуухдть токхе другие операционные систепы. Укажите загрузочные разделы и истки, китиимс вы будите ИСПОЛЬЗОВАТЬ ним обраидоии к ним.

Рис. 2.15. Выбор загружаемой операционной системы по умолчанию

Рис. 2.16. Выбор места размещения загрузчика операционной системы


Глава 2

32

'

1 Наптроиил г.гти для СГЫ1

Сетевое iк ттойг.тип: etltfl

Рис. 2.17. Настройка сетевого интерфейса

А вот теперь приступаем к настройке некоторых параметров операционной системы. На рис. 2.17 мы видим форму для настройки нашего сетевого устройства. В Linux сетевые карты имеют имена вида ethx, где х — номер. Нумерация начинается с нуля. В нашем случае это сетевая карта, которая "смотрит" в локальную сеть. По умолчанию программа установки предполагает, что в нашей сети уже есть DHCP-сервер, и что наш компьютер будет при запуске получать от него динамически назначаемый IP-адрес. Но ведь это не так! Это наш компьютер в дальнейшем будет выступать в роли DHCP-сервера. Посему необходимо назначить ему IP-адрес и маску подсети. О принципах назначения адресов, что такое блоки адресов и тому подобное, вы можете прочитать в моей книге "Linux". Пока же примите как данное — есть блок IP-адресов вида 192.168.ххх.ххх, где ххх цифра от 0 до 255. Эти адреса предназначены для использования в локальных сетях. Адреса вида 192.168.ххх.О и 192.168.xxx.255 — специальные и не используются для назначения компьютерам. Маска подсети определяет, к какому участку сети компьютер может обращаться напрямую. Для локальной сети обычно используют маску 255.255.255.0, означающую, что компьютер с адресом, к примеру, 192.168.3.45 может общаться с компьютерами, начиная от 192.168.3.1 и заканчивая 192.168.3.254. Немножко об адресации. Обычно шлюзу сети (маршрутизатору) назначается IP-адрес вида 192.168.xxx. 1. Хотя это и не обязательно (стандартами не оговаривается), но в Microsoft с этим не согласны и на компьютерах под управлением Windows, которые работают маршрутизаторами, ПРИНУДИТЕЛЬНО устанавливают такой IP-адрес.


Установка и первоначальная настройка сервера

33

Поскольку наш сервер, помимо всего прочего, будет работать маршрутизатором, не будем оригинальничать и выдадим ему в качестве IP-адреса 192.168.0.1, а в качестве маски подсети — 255.255.255.0 (рис. 2.18).

Рис. 2.18. Настройка сетевого интерфейса

Шли,; •.:!;:;:;.:.,;.. Первичней M1S: Вторичньм DN;i: Тротичньм [HIS:

РИС. 2.19. Настройка шлюза и первичного DNS-сервера 2 3ак. 1500


Глава 2

34

Следующий этап — определяем шлюз и DNS-сервер. В качестве шлюза указываем 192.168.0.1, так как у нас нет постоянного соединения с Интернетом. Первичный DNS-сервер — то же самое (рис. 2.19). Следующий момент — назначение имени компьютера (рис. 2.20). Можно задать его вручную, например, LinServer (рис. 2.21), а можно вообще не задавать. При наличии DHCP-сервера имя можно получать автоматически. Теперь переходим к обороне. Сборщики дистрибутива позаботились о безопасности системы, и предлагают нам включить брандмауэр для защиты от попыток взлома извне. В целом здравое решение и не стоит от него отказываться. Только для грамотной обороны необходимо знать, как и о�� чего защищаться. По построению надежной защиты существует десяток достаточно объемных книг, к которым я вас и отсылаю. Поскольку мы включили брандмауэр (рис. 2.22), нам предлагают определиться, какие службы нашего сервера могут быть доступны извне (рис. 2.23). Как видно из рисунка — набор очень скуден: • защищенный удаленный доступ к компьютеру или SSH (Secure Shell); • web-сервер; • FTP-сервер; • почтовый сервер.

\ Имя компьютера Если пицц система является частые большой сети, где т е м а учло» назначаются по DHCP, выберите "автоматически по DHCP". В прптикнпи случае укажите имя узла вручную. Если имя узла не будет указано, система будет известна под именем ' l o c a l h o s t ' .

( ) автоматически по DHCP

Рис.

2.20. Назначение имени компьютеру


Установка и первоначальная настройка сервера

РИС. 2.21. Назначение имени компьютеру

Ьрамдмяу'ф МОЖРТ помочь предотвратить неавторизованньм доступ к MUTMIJ компьютеру из анеимего мира. Вклипкть бпандмаузр?

Рис. 2.22. Разрешить брандмауэр

35


Глава 2

36

Чтичнкнйе нлитриикм бранпплчпра I Ислольэуя брдмамауэр, вы возможно злхотмтл рллцеиыть алгтцп к некоторые сервисам влшсго кпмпомтпрл млпнк. К каким сервисам •

'•'

'

~:~.

.

Разрешив exfi(iHu»ir.

РИС. 2.23. Разрешение доступа извне для некоторых служб

На первый взгляд, изобилия не наблюдается. Мы из всего этого добра разрешим только SSH, поскольку ПОСЛЕ инсталляции системы дисковод, клавиатура и монитор будут отключены от сервера, а управлять им мы будем через SSH. По поводу скудности — приведены стандартные службы универсального сервера для небольшого офиса. Добавлять что-то специфическое, например, доступ к базам данных (БД), не имеет смысла — это потенциальная брешь в защите системы. А если вдруг вам захотелось открыть, к примеру, порт, который слушает MySQL, — значит вы опытный администратор, и поправить таблицу правил брандмауэра не составит большого труда. Как вы увидите далее, в конце настройки нашего сервера мы все-таки откроем все эти службы для доступа извне. Следующий этап — увеличение безопасности изнутри (рис. 2.24). SELinux (Security Enhanced Linux) — Linux с расширенной безопасностью, увеличивает надежность функционирования системы в целом, в частности, отслеживает наличие небезопасных действий и осуществляет более строгий контроль над распределением памяти между задачами. Следующий шаг — выбор дополнительных языков, которые будут использоваться при работе (рис. 2.25). Здесь все просто — выбираем дополнительный язык английский и хватит. На самом деле, нам никто не мешает выбрать хоть пятьдесят языков, но нужно ли такое вавилонское столпотворение на сервере, с которым работают максимум 3—4 администратора? Следующий момент — выбор основного языка системы (рис. 2.26).


Установка и первоначальная настройка сервера

Рис. 2.24. Включение режима расширенной безопасности операционной системой (SELinux)

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

Рис. 2.25. Выбор дополнительных языков

37


Глава 2

38

Вы!с|1итг осмпвиои яаьк для Гни I Hi Г МЫ;

Икса ininn

Рис. 2.26. Выбор основного языка системы

Рис. 2.27. Выбор часового пояса

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


Установка и первоначальная настройка сервера

39

галочку в пункте System clock uses UTC (Системные часы используют Универсальные временные координаты) и нажимаем ОК. Далее мы должны ввести пароль пользователя root (рис. 2.28).

Пароль пользователя root I

'

Вьеерите пароль пользователя root. Вы аплжны ввести его пвахдм, чтпЛы исклмчитъ сшибку при вводе. Помните, что пароль пользователя root ключевой понемт безопасности системы? Ппдгвепоите плроль:

Рис. 2.28. Вводим пароль пользователя root

Полним рязпер: ЭЭ4М 1 Грлфическкя среаа GNOME ] Графическая срепл KDE 1 Редакторы и инженерны) 1 Графические среастаа Интернет « ] Тестовые сревстаа Интернет

РИС. 2.29. Выбор устанавливаемых пакетов программ


Глава 2

40

Внимание root — суперпользователь, аналогичный пользователю Администратор в Windows. Он может ВСЕ! Поэтому очень рекомендую выбрать нормальный пароль, длиной 7 и более символов.

Наконец добрались до установки пакетов программного обеспечения (рис. 2.29). Здесь все просто — ставим галочки напротив нужных групп пакетов, снимаем напротив ненужных, вверху пишется общая емкость устанавливаемых пакетов. Внизу списка есть галочка Все, с ее помощью можно выбрать все имеющиеся пакеты. К сожалению, текстовый вариант установки на "втором плане" и не все возможности, предоставленные в графическом режиме, присутствуют в нем. Но об этом позже. Пока же, как я и писал ранее, придерживаемся по возможности политики инсталлятора, ничего не меняем, а просто нажимаем ОК.

* НпЧаяо !(г.тпт»ки

\—

Полиьм протокол установки плиеи системы после перезагрузки Кудет нлхлаитьем в /runt/inst.\11 . Ing. Возможно вам понадобится к нему обратиться.

Рис. 2.30. Информационное окно инсталлятора

Получили окошко с сообщением, что полный протокол инсталляции операционной системы будет находиться в /root/install.log (рис. 2.30). Нужная вещь для "разбора полетов". После этого последнее китайское предупреждение — нам сообщают, какие диски необходимы для инсталляции, и, если вы вдруг испугались последствий, можно отказаться от установки (рис. 2.31).


Установка и первоначальная настройка сервера

41

Все! Понеслись! Нам сообщают, какой пакет устанавливается в данный момент, его краткое описание, размер, общее количество установленных и оставшихся пакетов и приблизительное время инсталляции (рис. 2.32). Во время установки системы можно попить чаю/кофе/коньяк по вкусу! Fedora Core (С) 2ИВ4 Hed Hat, Inc.

перезагрузка

перечисленные

"Перезагрузка"

Придияжить

<Tab>/4Alt-Tab> между элементами I <Space> выбор I <F1Z> следующий :жрлн

Рис. 2.31. Необходимые диски для инсталляции Fedora Core (С) 2884 Bed Hat

Inc.

-) астлмоик* пакета Имя: tzd*t»-Z9l Ме-г-noarch Размер: Ь91Ьк Сведения: Tlmeeone date'

Байт

48Э 8

.:..:.: •:•''•;

швгм m 18ШМ

Время 8:23:51 В:ВВ:83 8:Z3:4?

<Tab>/<ftlt-Tab> между элементами ! <Space> вьйор t <F12> следуми^ш экран

Рис. 2.32. Установка пакетов


42

Глава 2

Ипя: foiits-K0I8-R-l.B-7-ncwrc)i Рлэпер: i — 1 Сиена CD-FC Сведения: Вставите пожалуйста Fedora Core лиси Э лля щюаолхении.

Вг.его Заверши истллос

РИС. 2.33. Смена инсталляционных компакт-дисков Fedora Core (С) 2ВВ4 Red Hot. Inc.

1

•'

jf: глнпг-кл £< A:tf'v.

I ' otoeo I • Curt

'м*щ->}»?•* л .

:•.••••

••• • •• :•

Удалите все носители (дискеты ипи CD-НОШ, котарье ИСГЩЛЬЗО&ДПИСО при устано&кс. и но«этитс <£nter> для перезагрузки системы.

<Enter> для перезагрузки

Рис. 2.34. Установка закончена

Во время инсталляции самостоятельно выдвинется лоток CD-ROM, и нам предложат вставить следующий диск и нажать ОК (рис. 2.33). После окончания нам выводится сообщение о том, что установка прошла успешно, и предлагают перезагрузить компьютер (рис. 2.34).


Установка и первоначальная настройка сервера

43

Графический интерфейс установки Переходим к графическому варианту установки системы. Начинается точно так же, как и текстовый вариант — вставляем компакт-диск и перегружаем компьютер (рис. 2.35).

Fedora Тг» Install or upgrade it! graphical node, p r e s s t h e <EHTER> key. To i n s t a l l or upgrade; in t e x t node, type: linux text <ENTER>. Use tlie func

keys listed beinu for погн information.

Рис. 2.35. Строка приглашения дистрибутива

Нажимаем клавишу <Enter> и начинаем фафическую инсталляцию. Первые 2—3 шага общие с текстовым режимом — командная строка вначале и определение аппаратного обеспечения. Нам точно так же предлагают проверить компакт-диски на ошибки, нажимаем Skip. Нас приветствуют! Окно устроено просто — слева вертикальная полоса с текстом, поясняющим, что делается, и в центральной части окна собственно то, с чем мы работаем на данном этапе (рис. 2.36). Нажимаем ОК и получаем экран, изображенный на рис. 2.37. Нам предлагают выбрать язык, с помощью которого будут выводиться все сообщения в процессе инсталляции. Выбираем русский и нажимаем ОК. Далее нам предлагают выбрать общесистемную раскладку клавиатуры (рис. 2.38). Выбираем, нажимаем ОК и переходим к следующему этапу (рис. 2.39). Здесь мы выбираем тип устанавливаемой системы. В отличие от текстового режима, все типы инсталляции на русском языке, с кратким пояснением. Выбираем вариант Сервер и двигаемся к следующему экрану (рис. 2.40).


Глава 2

44

Fedora Welcome to Fedora Core During this installation, you can f use your mouse or keyboard to n navigate through the various I screens.

Fedora

The Tab key allows you to move around the screen, the Up and Down arrow keys to scroll through lists, + and - keys expand and collapse lists, I while Space and Enter selects I or removes from selection a ! highlighted item. You can also use the Ak-X key command : combination as a way of ; clicking on buttons or making I other screen selections, where j Xis replaced with any : underlined letter appearing

Рис. 2.36. Приветствие

Fedora What language would you like ta use during the installation process?

Language Selection

:•••• • •"•>-—••-Bulgarian (Бъпгарски)

Choose the language you would ! like to use during this installation.

;CaUian<Crt»li)

: j Croatian (Hrvatski) Czech E^eStira) Danish (Dan.sk) •i; Dutch (Nedcriands) :

I Estonian (ee&ti ked) | Finnish (swomi) French (Francais) | German (Deutsch)

I Gujarati (^VIKII)

I Hindi 8HI) | J Hungarian (magyar) 1 Icelandic (fslenska) :l Release Notes

Рис. 2.37. Выбор языка, на котором будет происходить инсталляция


Установка и первоначальная настройка сервера

Fedora < ' Выберите общееистемную раскладку клавиатуры.

Настройка клавиатуры

: Italian (it2) ;Japanese Latin American M Macedonian

Выберите раскладку клавиатуры (например, Russian), которая будет использоваться в вашей системе.

Norwegian : Polish Portuguese Ц • PunjatN flnscript) Romaraan

f.-.:"! Russian (cpl251) : Russian (Microsoft} : Russian (ml) ;

: Russian (w2)

:

i Siavakian

I

:

Russian (win)

Slovenian Spanish

:

Swedish

Рис. 2.38. Выбор раскладки клавиатуры

Fedora Персональны п хомлью тер

Тип установки

Прекрасно подяо^ил ^пя настольные и псргагивных к,-яй(1ьютеров: Выбйритйэтот тип для установки графического окружения; идеально педкодящегс,дяя ^омашмега иофитого

Выберите тип установки, который наиболее полно соответствует вашим потребностям.

О

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

рабочая станция ••'••• : ; ; л Этот тмп установки включает графическое окружюн«, средства разработкиГЮ исйстемнагоадмии^стрироватля.

Выбер»ттевтш ivn установки, если вы котите уставов^ь файловыйс«рййр, сервер пемат и или в«6 сервер Таи жеиогут быть fciaMODлены лопопиитепьныесервисы вы можете выбр самое тоят ель не. устанаи пивать грйфическсеслсужеии^иишн

Выборочная 0b«i5espnrp згот гип, ее ш яы шт кте толучит ь полный »;ont рояы на* процессом установки, включая состав пакетов и разбиени

Скрыть ^правку

Рис. 2.39. Выбор типа инсталляции

45


46

Глава 2

Fedora Разбиение диска Одним из самых больших

•;

препятствий для новичков в В установке Linux является

;|

разметка диска. Процесс

Е

пройдет более гладко при

1

Автоматическое разбитие будет выполнено иа основе аыбранмого вами типа установки. Вы также можете изменить "разбиение в соответствии с вашими нуждами. Утилита ручного разбиения диска, Disk Druid, позволяет настроить разделы s интерактианом окружении, Вы монета установить типы файловых систем, точки монтирования и многое другое.

проведении автоматического I разбиения диска. Если вы выберите

% Автоыатическав разбиение

автоматическую разметку,

О Ручное разбиение программой Qjt$k Dfuitf

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

Рис. 2.40. Выбор стратегии разбиения жесткого диска на разделы

Fedora Разбиение диска Одним из самых бол препятствий для нов! установке Linux явля

*>

разметка диска. Про; •

пройдет более гладк| "• ''"':.

Таблица разделов на устройстве sda нечитаема. Для • :о на основа ; создания новы* разделов устройство должно быть : % можете инициализирована. ВСЕ ДАННЫЕ на этом устройстве • "•;•• ш и нуждами. б у д у т

у т е р я н ы ,

'

••

: ••

• :"

•••••.•••

• .•

..

•••.•

проведении автомат!

Щ, позволяет Эта операция отмени г сдэпиниый ранее аыйор

разбиения диска.

и г н о р и р у е м ы х

Если вы выберите

Г

д и с к о в .

•;""•.

:

" ;

.:"••••

•[;•:'''•

;ении. Вы •

Вы дейстаителвно хотите инициализировать этот, диск с удалением ВСЕХ ДАННЫХ? ; i •: ;: ;:

автоматическую раз* вам не нужно будет \ использовать nporpg разметки для назначения точек монтирования, создания разделов и распределения места для ^ЦСкрыть ^правку

i: *-3ilTQ н

Рис. 2.41. Предупреждение системы

:, точки


Установка и первоначальная настройка сервера

47

Здесь мы можем выбрать из двух вариантов — либо система сама разобьет на разделы жесткий диск, как это предусматривает политика создателей дистрибутива, либо мы это сделаем вручную, самостоятельно. Для понимания процесса разбиения диска выберем ручное разбиение диска. Поскольку операции с жестким диском могут привести к полной потере данных, нас страшно пугают и сообщают, что данные могут быть потеряны (рис. 2.41). Смело переходим в программу Disk Druid (рис. 2.42). Будем самостоятельно разбивать жесткий диск на разделы. Для этого выбираем в списке жестких дисков нужный нам (в нашем случае это единственный диск) и нажимаем Создать. Появится окно, изображенное на рис. 2.43. Что мы здесь видим? Окно для ввода точки монтирования. Это список с уже заранее определенными точками, но если вы не найдете нужной, то просто введите в этом поле ту, которая вам необходима. Далее, выбираем тип файловой системы ext3 и определяем размер дискового раздела. Вот что у нас получилось (рис. 2.44). После разбиения диска появится экран, изображенный на рис. 2.45. Здесь настраивается загрузчик, его параметры и пароль. Теперь приступаем к настройке некоторых параметров операционной системы. На рис. 2.46 мы видим форму для настройки нашего сетевого устройства. Здесь, в отличие от текстового режима, совмещено несколько параметров — сетевой адрес, имя компьютера, DNS и шлюз (рис. 2.47). Следующий этап — настройка брандмауэра и включение SELinux (рис. 2.48). Далее выбор дополнительных языков, которые будут использоваться в системе, и задание языка интерфейса (рис. 2.49). Здесь все просто — выбираем дополнительный и основной язык системы. Теперь настроим время — мы должны выбрать часовую зону, в которой находимся (рис. 2.50). Выбор часового пояса привязан к определенным городам. Выбираем город-ориентир, можно просто щелкнуть на соответствующем городе на карте мира, и нажимаем ОК. Сейчас мы должны ввести пароль пользователя root (рис. 2.51). Внимание root — суперпользователь, аналогичный пользователю Администратор в Windows. Он может ВСЕ! Поэтому очень рекомендую выбрать нормальный пароль, длиной 7 и более символов.

Наконец добрались до установки пакетов программного обеспечения (рис. 2.52). Здесь, в отличие от текстового варианта, можно, помимо выбора группы пакетов, еще и выбирать пакеты внутри группы (рис. 2.53). Внизу списка есть варианты — Установить все и Минимальная установка.


48

Глава 2

Fedora Настройка разметки диска

95 MBMMoctefc VMwarg,VMwar« Virtual Si

Выберите, куда вы хотите установить Fedora Core. Создать

j: Изменить j! Удалить

j; вменить |

RAID • • LYM-.

Если вы не знаете, как провести разметку диска или

Тип

вам нужна помощь по использованию инструментария для проведения разметки вручную, обратитесь к документации. Если вы выбрали автоматическое разбиение j Скрыть устройства RAID/участников группы LVM

.

диска яы.млжятв..шдАя. ЩСкрыть справку

. •

:

.":'•• \Щ Назад

Рис. 2.42. Программа Disk Druid

Fedora Настроим р а З М е Т К И Точка монтирования:

;|

i ТИП ФС: ! Выберите, куд! г.;;

| exi3

:

установить Fe „ i Доступные устройстаа:; I Есливынезне . . провести раз** Размер {Мбайт):

;;;:;::::::::;::•;::;::::::::::::;::::::::::: jlOO

вам н у ж н а пом : ДJ,on оиц.т рплч&ръ

'" "•" •:

использований i # ' * и к с . размер | инструментар^ \:Q заполнить все пространство до (Мбайт)! : проведения рй j О Занять все доступное пространство | вручную, обра-. • I документации; .1..1Сделат& первичным разделом j Если вы выбра

-

автоматическое разбиение цдо^цы.дожАде.ад£а,

\Щ f-*;; Ш

G

•••

••••

Скрыть устройства RAi^ysacTHHKOB группы LVM

Рис. 2.43. Создание дискового раздела

т jg& Далее |


Установка и первоначальная настройка сервера

49

Fedora Настройка Drive ,*i*Wsda (4095 М 8) {Mtxwr VMwar», VM*«№ VITHMI S > • sda6 sda5

разметки диска

И 99Б MB

№9 MB

2036 MB

400 MB

Выберите, куда вы хотите установить Fedora Core. Если вы не знаете, как провести разметку диска или

Формат

вам нужна помощь по

Размер (Мвайт)

• /dev/sda

использованию инструментария для проведения разметки

/dev/sdal

/boot

/dev/sda2

/home

,'dev/sda3

вручную, обратитесь к

swap

"* /dev/sda4

документации.

V

/dev/sda5

/tmp

/dev/sda6

Если вы выбрали автоматическое разбиение

V

400

V

2057

: рыть устройства RAID<V4flCTHHKoe группы LVM

Рис. 2.44. Разделы жесткого диска

Fedora Загрузчик GRUB будет установлен на s

Настройка начального загрузчика По умолчанию устанавливается загрузчик операционной системы GRUB. Если вы не хотите устанавливать GRUB,

вменить загрузчик

Вы можете настроить загрузчик для загрузки других отэрациоимсчх систем. Это пэтамит выбран? операционную систему из списка при загрузке. Чтобы добавить другу о операционную с ис тему, которая на быт г&кфулемд аетомии-ихаи нажмете кнопку "Добавить". Чтобы выбрать ОС, загружаемую по умолчанию, установите параметр 'По умолчанию" для ' ЗТоЙОС...

По умолчанию Ярлык .

•••:•:•

•• :

{Устройство

Fedora Core /ttev/sda6

нажмите кнопку Сменить

Изменить

загрузчик. Вы можете также выбрать, какая ОС (если у вас их

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

несколько) должна загружаться по умолчанию.

. Q Остановите паропв загрузчика

510 2467

Расширенный

ИЗМ'ЗМШЙ ПЯВЬЙЬ

Поставьте отметку По Q Настроить дополнительные параметры 'загрузчика

Рис. 2.45. Выбор типа загрузчика и настройки


Глава 2

50

Fedora Секевош устроие* ш

Настройка сети Все сетевые устройство, имеющиеся в системе, автоматически определены программой установки и показаны в списке Сетевые устройства).

Имя компьютера 7 : Установить имя компьютера; '

О автоматически no DHCP Ф вручную

Чтобы настроить сетевое устройство, сначала отметьте его, затем нажмите: Изменить. На экране Правка интерфейса вы сможете выбрать использовать IP адрес и сетевую маску, полученные по ОНСР, или ввести их

LinSetvet)

; (напр, "h

Дополнительные параметр»

.1

i l .

Рис. 2.46. Настройка сети

Fedora Настройка сети

A4«.««poiai» Устройство при загрузке

Все сетевые устройства, :| имеющиеся в системе, автоматически определеГ ! программой установки и показаны в списке Сетев! устройства). Чтобы настроить сетево^Ц устройство, сначала отметьте его, затем н а ж р Изменить. На экране Правка интерфейса вы j сможете выбрать ' использовать IP адрес и сетевую маску, полученные ! по DHCP, или ввести их

П Иопольэовать DHCP g j Д К Т И В И З ИрОВВТЬ При ЗйГруЭКв

Маска псквети: [255

;.|255

1|255

щ : Щ

•,' нового:

Рис. 2.47. Настройка сетевого интерфейса


Установка и первоначальная настройка сервера

51

Fedora Брандмауэр может помочь предотвратить иеа&ториэованкый доступ к вашему компьютеру из внешнего мира. Включить брандмауэр? .

Настройка

. •':

брандмауэра

О Ё в э брандмауэра #; Цключить враидмауэр

Вы можете использовать брандмаувр для разрешения доступа к некоторым сервисам вашего компьютера со стороны других юипвои-ров К »ми« седежом нужно разоашхть доступ?

брандмауэр (он же firewall) находится между вашей системой и сетью и определяет, к каким

ресурсам вашего

Веб-сервер (HTTP, HTTPS1

О Передача файлов (FTP)

компьютера удаленный

D Почтовый сервер (SMTP)

пользователь в сети может иметь доступ. Грамотно настроенный брандмауэр

Опйхс Улучшенной Безопасностью (SEUnu*) позволяет точнее управлять безопасностью,, чем традиционные Linux системы. Вы можете настроить его в выключенном состоянии, в 'котором только формируются сообщения о том, что, должно быть запрещено, или в полностью включенном состоянии.

сильно повышает безопасность вашей системы.

включить

! Выберите подходящий для @[С1;рыть£прав)су|

Включено

о]

Рис. 2.48. Настройка брандмауэра

Fedora Выдерите основной яаыс для этой системы:

Поддержка

English (USA) :. v

Выберите дополнительные языки, которые йудут использоваться е»тои системе:

дополнительных

LJ bngtish (Botswana)

языков

I I

Выберите язык, который

О English (Canada) D English (Denmark)

I

D English (Great Britain)

будет использоваться в

I

G English (Hong Kong)

качестве основного языка

]

П EnaJish (India)

системы после установки.

i]

D Engfish dtdand)

Если вы установите

I

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

П English <Ncw Zealand) П English (Philippines)

поддержку нескольких

('-] English (Singapore) |

D English (South Africa) D English (Zimbabwe)

{ Программа установки позволяет установить ; поддержку нескольких

D Estonian D Faraese (Faroe Islands) П Finnish Q^French (Belgium)

Рис. 2.49. Выбор дополнительных языков


Глава 2

52

Fedora Вы можете прокрутить Укажите, пожалуйста, ближайший к вам город

список географических названий и выбрать нужную Щ временную зону. Вы можете также выбрать опцию Системные часы используют UTC (UTC, также известное как Всемирное Координированное Время, позволит системе корректно обрабатывать переход на летнее/зимнее время). Выберите эту опцию, если аппаратные часы установлены по UTC, а не установлены по местному времени.

D Системные часы используют UTC

•ыть справку

Рис. 2.50. Выбор часового пояса

Fedora Учетная запись root используется для администрирования системы. Введите пароль пользователя пэд. Парсшь пользователи root: ; •""*•

§

Пароль пользователя root I

Подтвердите: Используйте учетную запись Е суперпользователя только

I для администрирования. По I I завершении установки создайте вида одну, не административную, учетную § запись для обычной работы I I и пользуйтесь командой su I

1

- для работы в качестве администратора, если что-то В надо быстро исправить. Это простое правило, соблюдение которого сведет [ к минимуму возможность

Рис. 2.51. Вводим пароль пользователя root


Установка и первоначальная настройка сервера

53

Fedora Оконные менеджеры

Выбор групп пакетов

• Сист«ма X Window

[O'41]

f-0) Установите эту группу пакетов, чтобы получить ^w графический интерфейс пользователя (X) • Графическая среда GNOME

Выбор группы пакетов

JO/44]

GNOME -эго мощный графический интерфейс ,••# пользователя, который включает панель, рабочий v стол, системные пиктограммы и графический менеджер файлов.

(приложений), которые вы хотите установить. Чтобы отметить группу пакетов, щелкните по квадратику

О Графическая среда KDE

рядом с ее названием.

[0/14]

КОЕ -это мощный графический интерфейс, rfV9j включающий в себя панель приложений, рабочий ^ # * стол, системные значки и графический менеджер файлов.

Если группа отмечена, можно нажать кнопку Дополнительно для

D XFCE

просмотра, какие именно

(0/15J

" ц ^ A lightweight desktop environment that works well on low mk end machines.

пакеты установлены по умолчанию и добавить или

sill

удалить дополнительные Полный размер: 934-М i 3 НОВОГО j

ЗСкрытыгправку

Рис. 2.52. Выбор устанавливаемых групп пакетов программ

Fedora Выбор rf

Отлсшиа Тестовые средства Имнфиет"

'• Группы пакетов могут включать как обязательные., так и необязательные j компоненты. Обязательные компоненты всегда выбраны, если выбрана : группа пакетов. Выбор г р у п п ы j Выберите необязательные компоненты для установки: ПЗКбТОВ

хотите y O f H « | :

отметить rpynii

[/] cadaver - Консольный клиент WebDAV: ЕЙ dinks - Текстовый браузер интернет. О ере - Клиент irclt chat.

щелкните по ке

ft) fetchmai) - Утилита приема и отправки почты. рядом саеназ : G 1у"Х - Программа просмотра страниц WWW в текстовом режиме. 1

G3 mutt - Почтовый клиент для текстового режима.

Если группа o | j

Q

можно нажать

gg slm - A threaded Internet news reader.

^

_ У о о в е р и ю н с т в о в а н н ы й ртр-кпиент.

Дополнитель! просмотра.как пакеты устано;

Полный размер: 934-М ' | Ш Оич-енить

умолчанию и д;.. удалить дополнительные ...пякяхы и х а т п й ГПУППЫ ь ^правку

Рис. 2.53. Выбор устанавливаемых пакетов программ


Глава 2

54

Fedora Все готово к установке Предупреждение: После нажатия кнопки Далее программа установки начнет |; записывать операционную систему на жесткий диск(и) и \\ произвести отмену будет |: невозможно. Если вы решили Ы не производить установку, то это последняя возможность для безопасного отказа от установки.

Нз*ми1е "Далее" дп» начала установки Fedora Core. Полный журнал установки может быть найден в файле '/ roa.1nMall.log' после !Твмы. !, содержащий выбранные вами параметры установки, будет сохранен под именем "''root/anaconda-

Чтобы прервать установку, нажмите КНОПКУ);

'

[ %|Скрыть ^правку I '. \ ЭНто новой

Рис. 2.54. Информационное окно инсталлятора

Fedora Все готово к установке Предупреждение: Пе нажатия кнопки Дал программа установки записывать операци» систему на жесткий i произвести отмену б; невозможно. Если вь: не производить уста! то это последняя I возможность для i безопасного отказа от' установки.

f "Далее" для начала Для установки выбранных ваий пакетов необходимы

и ftitnii Co»e

следуюсциедиаси:

журнал установки

Fedora Core'} CD #1 Fedora Core 5 CD «

fib найден а файле'/ '|||

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

iyjKK систекы. kslarl, ссдержошии ле |аии параметры |«, будет сохранен

Перегрузите | | Пдадоядит»

Чтобы прервать установку, МЯЖЫЧЛТР. кнопку Rp-spf ня

:[£!

"Нового!

Рис. 2.55. Необходимые диски для инсталляции


Установка и первоначальная настройка сервера

55

Fedora

г

Установка пакетов Мы содрали всю информацию,

необходимую для установки Fedora Core в систему. Процесс установки может оказаться длительным,это зависит от

Fedora о

кол-ва пакетов, которые надо установить.

Уотанома boiKrvw-S UW в * < Ш квапт! Криптографическая библиотека под лицензией Open Source.

Рис. 2.56. Установка пакетов

Fedora Установка пакетов Мы собрали всю информацию, необходимую для установки Fedora Core в систему. Про1 установки может оказаться длительным,ето зависит от кол-ва пакетов, которые надо установить.

Вставьте пожалуйста Fedora Cone :йиск Здяя продолжения. .

Оставшееся время: 2 минут Установка fontsKOIS-FU.fW.noarch (316 Кбайт* Шрифты для русского и украинского языков для X Window System. oaoroj «У]' ::::jt»HTO нового

Рис. 2.57. Смена инсталляционных компакт-дисков

|V £- [


56

Глава 2

Fedora

Поздравляем, установка завершена Уделите все носители {дискеты или CD-ROM), которые использовались при установке, и нажмите "Перезагрузка" для перезагрузки системы.

::[«;: Назад , " ] ; Рис. 2.58. Инсталляция в графическом режиме закончена

Получили окошко с сообщением, что полный протокол инсталляции операционной системы будет находиться в /root/Install.log (рис. 2.54). Нужная вещь для "разбора полетов". Также создается специальный файл для утилиты kickstart. Эта утилита предназначена для автоматической установки дистрибутива, что позволяет без ручного вмешательства, массово устанавливать систему на однотипные рабочие места. После этого нам сообщают, какие диски необходимы для инсталляции, и, если вы вдруг испугались последствий, еще можно перегрузить компьютер, отказавшись от установки (рис. 2.55). Во время инсталляции на экран выводится информация о том, какой пакет устанавливается в данный момент, его краткое описание и размер (рис. 2.56). В случае необходимости самостоятельно выдвинется лоток CDROM, и нам предложат вставить следующий диск и нажать ОК (рис. 2.57). После окончания нам выводится сообщение о том, что установка прошла успешно, и предлагают перезагрузить компьютер (рис. 2.58).

Установка дистрибутива "вручную" Этот вариант практически не отличается от предыдущих. Первая точка расхождения — разбиение диска вручную. К сожалению, стратегии разбиения


Установка и первоначальная настройка сервера

57_

диска сильно зависят от назначения сервера. А переиграть неудачное разбиение по прошествии времени не совсем тривиальная задача. Такое, к сожалению, случается, когда пытаются перепрофилировать сервер. Например, был сервер общего назначения, под каталог /var выделили 2 Гбайт, его назначают FTP-сервером и оказывается, что под файлы нужно 20 Гбайт, а на этом разделе столько места нет. Также бывает, что выделяют только один дисковый раздел. Но это чревато проблемами, когда какое-то приложение начинает отъедать дисковое простра��ство и не оставляет свободного места на диске. Что обычно делают — выделяют отдельный небольшой раздел (порядка 100 Мбайт) под /boot; под каталоги пользователей (/home) выделяют место, к примеру, из расчета 100 Мбайт на пользователя; под /tmp, в зависимости от задач, обычно хватает 500 Мбайт; под /var 30 Гбайт — тут хранятся файлы FTP-сервера, HTTP-сервера и т. п.; под корневой каталог порядка 3—4 Гбайт. Если же вы собираетесь тщательно следить за сервером и использовать дисковые квоты, то можно сделать всего 2—3 раздела. Вторая точка расхождения более существенная — это выбор устанавливаемого программного обеспечения. Здесь нужна внимательность. Нужно четко осознавать, для чего нужен тот или иной пакет, что мы хотим сделать на нашем сервере, возможные проблемы с безопасностью. На данном этапе будем устанавливать рабочую конфигурацию минимального размера, которая будет постепенно наращиваться и модернизироваться. Далее будет рассмотрен графический вариант установки, и для каждого набора пакетов я буду приводить только оставляемые пакеты, с комментариями для чего и почему. Итак, выбираем тип установки Выборочная (рис. 2.59). После этого мы опять проходим этап с настройкой брандмауэра, сетевой карты, DNS, загрузчика и, наконец, достигаем, собственно, окна выбора пакетов (рис. 2.60). Как вы видите, пакеты разбиты на классы, в которых есть группы пакетов. Вот они: П Оконные менеджеры • Система X Window • Графическая среда GNOME • Графическая среда KDE • XFCE П Приложения • Редакторы • Научные и инженерные


Глава 2

58

Fedora Персональный компьютер

Тип установки

Прекрасно подходки дни настольных йпорга.гианы* компькп «хм., Выберите этот т ип ддя установки графичм кого

о

окружения, ИДСЛЛЬИО псдаодвшгодпя д

Выберите тип установки, | который наиболее полно | соответствует вашим

Цйбочвя станция

| потребностям.

ЕЛ от тип установки вк i ючает графическое окружение, средства разработки ПО'и с кС1

Установка уничтожит всю ранее сохраненную информацию на выбранных

I

»i tifi ус1шм<и ««иве. tonne ус танок" * файловый сервер, сервер пвчат и ил и веб -сервер. Tat же могут

О

: быть усталойтамЫ(СОЮлк«тв*квые сервисы. Вы мажете выбрать самоегойтеиьно, устанавливат

разделах. Для получения более подробной информации о

тип. ее ям вы жег иге получит ь полный ке*л роль уст*ио»«м. ькяп>«1 сослав пывтм и ра»вив*"в

различиях между классами установки обратитесь к документации.

С* рыть inpae* у

Рис. 2.59. Выборочная инсталляция дистрибутива

Fedora

-

Выбор групп пакетов

Оконные менеджеры О Системах Window

(№41]

гШ\ Установите эту группу пакетов, чтобы получить «*•* графический интерфейс пользователя (X)

Выбор группы пакетов

D-Графически среда GNOME;

(приложений), которые вы #g ^

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

G Графическая среда КОЕ

можно нажать кнопку

D XFCE

просмотра, какие именно

удалить дополнительные

[0/1S]

^10 A lightweight desktop environment tKat works well on low ***** end machines.

пакеты установлены по умолчанию и добавить или

[0/14]

KDE -это мощный графический интерфейс, .у*;'»'? включающий в себя панель приложений, рабочий s f *^ ' стол, системные значки и графический менеджер файлов.

Если группа отмечено, Дополнительно для

[О/М]

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

' "

'

i Полный размер- 2,181M

|Скрыть

Рис. 2.60. Выбор инсталлируемых пакетов


Установка и первоначальная настройка сервера

• Графические средства Интернета • Текстовые средства Интернета • Офисные приложения • Звук и видео • Подготовка публикаций • Графика • Игры и развлечения П Серверы • Средства настройки сервера • Веб-сервер • Сервер электронной почты • Файловый сервер для Windows • Сервер DNS • Сервер FTP • База данных PostgreSQL • База данных MySQL • Сервер новостей • Сетевые серверы • Устаревшие сетевые серверы П Программирование • Средства разработки • Разработка ПО для X • Разработка с использованием GNOME • Средства для разработки KDE • XFCE Software Development О Система • Средства администрирования • Системные средства • Поддержка печати П Разное • Все • Минимальная конфигурация

59


Глава 2

60

Fedora end machines.

Выбор ПЗКбТОВ

'• Группы пакетов йогу i эключать как: обязательные, так и необязательные ' компоненты. Обязательные компоненты всегда выбраны, если выбрана 1 группа пакетов.

.

•".:

'

'

• ".. :.' .•''•'•.'.' ••..•.:•.•

Выбор группы i Выберите необязательные компоненты для установки: (приложений},! •!

:

'

;

"""

'"

'"щ:

хотите у с т » Ц Обязательные пакеты отметить груп( •; "', • ••••• • -• — • Ьщ \ ~{Щое - Интерактивный текстовый редактор, достаточно простой в использован^ ШП\ nedit - Графический текстовый редактор с интерфейсом Motif рядомсевназ.^ | ;G vim-Xll - Версия редактора VIM для X Window System. '] vim-enhanced - Дополненная версия редактора VIM.

!Ь; ;i

Еспи группо oi

;.:.О XEmacs -Текстовый редактор XEmacs можно нажать

Дополнителы просмотра, как пакеты устано; умолчанию и д| .;,. _. удалить дополнительные .ЛЯКЙТЫИ'Я -ЗТП.Й ГПУППЫ

Полный размер; \ Ш Отменить :

Полный размер: 2;260М

,...:L*J

'^Чтонового

Рис. 2.61. Выбор текстовых редакторов

Fedora предыдущими выпусками Red Hat Enterprise Linux.

Выбор rj: ПЗКбТОВ

i Группы пакетов могут акпючать как обязательные, так и нйобнэатепвньи i компоненты. Обязательные компоненты всегда выбраны, если выбрана .."• -•••• '•••'••-. .-.••. .'• \ ••

: группа пакетов.

Выбор группы | ВыбврйтУнеобязательные компоненты для установки; {Приложений),! [ i ^ "si»:^ ш^иириванииьпйскв дда/1Ок.1ч^вуинюх фйянов-; х о т и т е устаноЕ

Н т с - Файловый менеджер и визуальная оболочка с дружественным интерфейс ' m r t 9 "Ш х 1 R o u t e r T r a f f i c G r a P h e r ] mix • Программа управления сменными носителями SCSI.

о т м е т и т ь rpyni

щелкните no « j |П рядом с ее наа :

net-snmp-utils - Network management utilities using SNMP, from the NET-SNMP p J l

. П runap- Инструмент анализа сети и сканер безопасности.

I О rwnap-ftontend - Gtk+ frontend for nmap. "'

5 :Q!open - Инструмент, запускающий программы на виртуальной консоли.

МОЖНО НаЖаТЬ|::р|^:^^---:::„:::::—:::"

Дополнителы

~~

Полный р&знер: 927М

просмотра, как

\ Щ Отменить \

пакеты устано! ,',:• умолчанию и д; удалить дополнительные

Ш

нового

Рис. 2.62. Выбор т с


Установка и первоначальная настройка сервера

61

Теперь пройдемся по классам. В классе Оконные менеджеры мы ничего не выбираем, поскольку на нашем сервере нам не нужны графические системы и оболочки. Класс Приложения. Тут из всего добра нас интересует только раздел Редакторы, в котором мы выберем программы joe и vim (рис. 2.61). Классы Серверы, Программирование — здесь мы ничего не устанавливаем. Как уже говорилось ранее, все службы мы будем устанавливать по мере необходимости, а по поводу программирования — на сервере небезопасно устанавливать компиляторы, производить компиляцию и отладку программ. Класс Система. Здесь нас интересует раздел Системные средства (рис. 2.62). Единственный пакет, который я рекомендую установить, — это т с (от Midnight Commander). Файловый менеджер наподобие Norton Commander или FAR. Достаточно удобный менеджер для людей, не привыкших к командной строке. Итого у нас получился полный размер инсталляции 613 Мбайт. На самом деле, если вдумчиво после инсталляции поработать, то вполне можно уменьшить объем еще на 100—200 Мбайт, но при современных емкостях жестких дисков это уже не принципиально.

Резюме В этой главе мы рассмотрели, различные варианты инсталляции дистрибутива, выяснили, чем они отличаются друг от друга, и произвели инсталляцию нашего сервера в минимальной конфигурации, а так же произвели первичную настройку сетевых параметров. В дальнейшем мы будем наращивать функциональность нашего сервера. Кстати, процесс инсталляции дистрибутива "вручную" занял порядка 20—25 минут.


Глава 3

Настройка разделяемого коммутируемого модемного соединения для общего сетевого пользования В этой главе мы настроим модемное соединение и организуем доступ локальной сети в Интернет, произведем конфигурирование брандмауэра для защиты нашей локальной сети, произведем установку и настройку DNSсервера.

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

Внешние модемы Внешние модемы делятся на два класса: • модемы, подключаемые к последовательному порту; • модемы, подключаемые к USB. Рассмотрим достоинства и недостатки внешних модемов.

Модемы, подключаемые к последовательному порту Пожалуй, самое старое и соответственно самое обкатанное решение. Модем подключается к компьютеру по последовательному интерфейсу (RS-232).


64

Глава 3

Содержит в себе аппаратный обработчик сигналов, выполненный на микропроцессоре. Плюсы такого модема: • внешнее исполнение. При необходимости очень просто и быстро можно снять модем с одного компьютера и перебросить его на другой; П стандартизация. Модем даже самый "навороченный" можно запустить, не тратя время на установку драйверов и их настройку. При этом, возможно, мы теряем какие-то специфические функции модема (например, голосовые функции или АОН 1 ), но благодаря стандартизации, мы можем очень быстро сменить один модем на другой; • индикация. Только во внешних устройствах в наличии такая чудесная вещь, как индикация. Благодаря ей мы можем видеть, что творится с модемом — он передает, принимает или вообще завис. Минусы, большие и не очень: • использует устаревший последовательный интерфейс (с точки зрения Intel). В современных материнских платах есть только один последовательный порт, а в скорости и его не будет; О внешний блок питания. Потребуется дополнительная розетка.

Модемы, подключаемые к USB Все, что было сказано по поводу модемов, подключаемых к последовательному порту, можно смело отнести и к модемам, подключаемым к USB. В плюсы можно добавить компактность модема и отсутствие у многих модификаций блока питания (питание берется прямо из USB-разъема). А вот по поводу минусов, он есть, один, но достаточно большой — для USBмодемов нет единого драйвера, и это осложняет жизнь. Возможен вариант, что для какой-то конкретной модели модема драйвера для Linux нет, либо он реализован частично. Помимо этого, за USB-модемами многих производителей замечена ошибка в работе — периодически система теряет соединение, и для исправления этой ситуации, зачастую, приходится руками отсоединять модем и заново подключать к компьютеру.

Внутренние модемы Внутренние модемы можно разделить по реализации математической обработки сигнала и по интерфейсам подключения модемов. В общем случае, внутренние модемы делятся на две категории — аппаратные (hardware) и программные (soft или win) модемы. Первые — полные аналоги внешнего модема, за исключением того, что они реализованы в виде плат расширения. Второй тип — порождение подхода "экономика должна быть экономной". 1

Автоматический определитель номера.


Настройка разделяемого коммутируемого модемного соединения...

65

Принцип следующий: процессоры нынче мощные, а давайте всю математику модема переложим на них. Благодаря этому модем удешевился, например, дешевые китайские модемы в розницу можно купить за 10—12 долларов. Однако такой подход плохо работает в странах СНГ — наши телефонные станции/линии зачастую не дают нормально работать внешним "вездеходам" за сотню долларов, куда уж тягаться с ними дешевым softмодемам. Далее, поскольку вся обработка сигналов ложится на центральный процессор, то необходимо достаточно мощное аппаратное обеспечение. До последнего времени производители таких модемов выпускали драйверы только для Windows, однако большинство моделей уже имеют драйверы и для Linux. Интерфейсы внутренних модемов: • ISA. Сильно устаревший интерфейс, который не используется более 5 лет. Однако еще есть вероятность столкнуться с этим "чудом". По возможности откажитесь от использования модема с таким интерфейсом; • PCI. Подавляющее большинство внутренних модемов производится с PCI-интерфейсом и почти все — soft-модемы. Использовать можно только в том случае, если есть драйверы под Linux для этого модема и у вас цифровая АТС с хорошей линией; • AMR. Модемы с таким интерфейсом сложно назвать модемом вообще. От модема остались только блок развязки линии и наборное реле, все остальное — программная часть. Мне не удалось заставить работать ни одного AMR-модема, ни под Windows, ни под Linux. От такого варианта следует категорически отказаться. Определились — берем внешний последовательный модем. Следующий шаг, зарегистрироваться у какого-то провайдера и приступить к настройке модемного соединения. Большинство провайдеров при подключении выдают инструкцию по настройке модемного соединения. Так же почти все провайдеры предоставляют электронный почтовый адрес с размером почтового ящика в 5—20 Мбайт. Об этом далее, по ходу настройки модемного соединения, пока же скажу, что большинство провайдеров работают по РРР-протоколу и настройки, DNS и IP-адрес, для пользователя выдаются динамически, в процессе установки соединения.

Настройка модемного соединения Модем распакован, сервер выключен. Подключаем модем к последовательному порту кабелем, включаем его и затем включаем сервер. В Linux/UNIX последовательный порт имеет имя вида ttySx, где х — цифра. Таким образом, ttySO соответствует в DOS/Windows COM1, ttySl — COM2, ttyS2 — COM3, ttyS3 — COM4. Во время старта операционной системы будет обнаЗЗак.1500


66

Глава 3

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

Связь с провайдером Для подключения локальной сети к Интернету с помощью модема обычно используют два варианта. Первый из них предназначен для тех, кто платит за трафик, а второй используется теми, кто оплачивает время. В первом случае выход в Интернет осуществляется с помощью стандартного для Linux набора программ — pppd, chat и, возможно, еще нескольких дополнительных сценариев. Происходит это следующим образом — вначале маршрутизатор дозванивается до провайдера и устанавливает с ним связь по РРР-протоколу. После установления соединения полученным каналом может пользоваться любой компьютер в нашей локальной сети. Канал удерживается до тех пор, пока не выключится маршрутизатор или администратор явным образом не разорвет соединение. Второй вариант — модификация первого, в англоязычной литературе он носит название dial on demand (звонок по требованию). Для его организации дополнительно используется программа diald, с помощью которой можно организовать работу таким образом, что если в течение заранее обусловленного времени не происходит обмена данными между локальной сетью и Интернетом, то diald разрывает соединение. При первой же попытке пользователя подключиться к внешним ресурсам, diald снова дозванивается и устанавливает связь.

Схема организации подключения локальной сети Ниже приведены требования, которым должно удовлетворять подключение локальной сети к Интернету. • Возможность доступа в Интернет — модем, телефонный номер и подключение к провайдеру. • Набор программ для организации связи — pppd, chat и diald. • Средство для управления брандмауэром — утилиты ipchains или iptables (эта утилита считается устаревшей, но поддержка в ядре все еще остается). Теперь, когда цели и средства известны, можно приступать к установке и настройке программ. Для проверки, установлены ли необходимые нам программы в системе, нужно выполнить следующее: rpm

-qi

rpm

-qi

ppp diald

Если такой пакет установлен в системе, то мы получим краткую информацию о нем — имя, версию, когда установлен, к какой группе программ он


Настройка разделяемого коммутируемого модемного соединения...

67

относится, название RPM-пакета и краткое пояснение, для чего он необходим. Если пакет не установлен, то мы получим об этом сообщение. В нашем случае отсутствует diald. В дистрибутиве его тоже нет. Что делать? Идем на сайт www.altlinux.ru, заходим в раздел Sisyphus и в строке поиска набираем diald. В результате мы получим ссылку на пакет diald- 1.0-alt4.src.rpm в исходных кодах. Если нам лень собирать приложение самостоятельно, идем на сайт www.rpmseek.com и в параметрах поиска указываем, что RPM мы хотим для Fedora Core и Red Hat. В результате получим ссылку на diald-0.99.l2.i386.rpm. Скачиваем и производим установку командой: rpm -i diald-0.99.1-2.i386.rpm

Настройка связи с провайдером Настроим подсистему дозвона и соединения с провайдером. Для удобства разобьем работу на два этапа: 1. Настройка РРР-соединения. 2. Установка и конфигурирование демона дозвона по требованию (diald). Для организации связи между провайдером и клиентом необходимо получить данные от провайдера, условно представленные в табл. 3.1. Таблица 3.1. Необходимые данные для настройки модемного соединения Необходимые данные

Значения в примере

Имя пользователя (login)

myname

Пароль пользователя (password)

test

IP-адрес пользователя (если есть)

192.168.110.100

IP-адрес DNS-сервера

192.168.10.1

Процесс установления связи между вами и провайдером состоит из следующих этапов: • соединения с компьютером провайдера с помощью модема; П регистрации пользователя в удаленной системе; О установки РРР-соединения. Для решения этих задач в Linux используется небольшой набор сценариев, каждый из которых выполняет какую-то небольшую функцию. При этом никто не мешает на их базе определить именно те действия, которые необходимы вам при установлении или обрыве соединения. Размещение сценариев зависит от настройки и предпочтений используемого дистрибутива. В Fedora Core (Red Hat) используются два варианта — каталог /etc/ppp и /etc/sysconfig/network-scripts. Наименования сценариев могут быть


68

Глава 3

произвольными и очень часто зависят от предпочтений сборщика дистрибутива или системного администратора. Для нашего случая будем считать, что у нас есть следующие файлы: • /etc/ppp/chap-secrets — этот файл используется для аутентификации пользователя провайдером по протоколу CHAP. Обычно содержит имя и пароль пользователя для входа к провайдеру. В нашем случае это будет выглядеть следующим образом: myname * t e s t

• /etc/ppp/pap-secrets — этот файл используется для аутентификации пользователя провайдером по протоколу РАР. Обычно содержит имя и пароль пользователя для входа к провайдеру. В нашем случае это будет выглядеть следующим образом: myname * t e s t

П /etc/ppp/ip-up — данный сценарий используется для соединения с провайдером. Зачастую этот файл содержит только следующую строку: /usr/sbin/pppd

Здесь можно настроить установление модемом соединения с провайдером или вызвать необходимый сценарий или программу; • /etc/ppp/ip-down — этот файл используется для разрыва соединения с провайдером; • /etc/ppp/options — это самый сложный и ответственный файл. Он определяет параметры нашего модема, скорость передачи по последовательному интерфейсу данных, настройки программы pppd и некоторые другие параметры. Обычно файл /etc/ppp/options оставляют неизменным, а для конфигурирования параметров соединения создают копию файла с именем /etc/ppp/options.ttySX, где ttySX — имя последовательного порта, к которому подключен наш модем. Рассмотрим содержимое /etc/ppp/options.ttySO (модем подключен к С0М1). # Устройство /dev/ttySO # Скорость 115200 mru 1500 # наш интерфейс : удаленный интерфейс 192.168.110.100:192.168.110.101 # маска подсети netmask 255.255.255.0 bsdcomp 0 chap-interval 15


Настройка разделяемого коммутируемого модемного соединения...

69

debug crtscts defaultroute

Первые две строки определяют последовательный порт, к которому подключен наш модем, и скорость, на которой будет происходить обмен между модемом и последовательным портом. Далее обратите внимание на строку со следующим содержимым: 192.168.но. 100:192.168.110.101. Эта строка определяет IP-адреса нашего последовательного интерфейса и провайдера. Такую строку необходимо добавить, если провайдер выдал нам постоянный IP-адрес, также в этом случае необходимо задать маску подсети. Поскольку наш компьютер является маршрутизатором для локальной сети, необходимо настроить маршрутизацию. Для этого воспользуйтесь программой route и идущей с ней документацией. В том случае (а мы предположили, что точка подключения к провайдеру у нас одна) если у вас одно подключение к провайдеру, то можно в конец файла вписать команду defaultroute, что позволит вам добавить маршрут в системную таблицу маршрутизации, используя удаленную сторону как шлюз.

Команды pppd Далее мы рассмотрим основные команды программы pppd (табл. 3.2). Таблица 3.2. Основные команды программы pppd Команда

Описание

Asyncmap 0

Async-карта символов — 32-bit hex; каждый бит — символ, который надо представить в виде escapeпоследовательности, чтобы pppd мог его принять

Auth

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

bsdcomp о

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

c h a p - i n t e r v a l интервал

Определяет, что pppd будет заново вызывать удаленную сторону каждые интервал секунд

c h a p - r e s t a r t интервал

Устанавливает интервал рестарта CHAP (пауза возобновления передач challenges) в интервал секунд

chap-max-challenge значение

Устанавливает максимальное число передач CHAP challenge

connect <программа>

Определяет программу для установки соединения


70

Глава 3

Таблица 3.2 (продолжение) Команда

Описание

Crtscts

Предписывает использовать аппаратное управление потоком данных для управления потоком данных на последовательном порту

Debug

Предписывает увеличить уровень отладки. Если эта опция есть, pppd будет записывать в журнал все прибывшие и отправленные пакеты в понятной для человека форме. Пакеты регистрируются в лог-файлах через syslog. Эта информация может быть перенаправлена в файл соответствующей установкой /etc/syslog.conf

disconnect <программа>

Предписывает запустить данную программу после того, как pppd завершил связь

domain имя_домена

Добавляет имя домена к имени машины

ipcp-max-configure значение

Устанавливает максимальное число передач IPCP (Internet Protocol Control Protocol, протокол управления протоколом IP) configure-request

ipcp-max-terminate значение

Устанавливает максимальное число передач IPCP terminate-request

ipcp-max-failure значение

Устанавливает максимальное число IPCP configure-NAK, возвращенных перед началом отправки вместо configure-Rejects

ipcp-restart интервал Local

Устанавливает интервал перезапуска IPCP в интервал секунд

Lock

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

Login

Предписывает использовать базу данных паролей для идентификации удаленной стороны

Modem

Предписывает использовать линии управления модемом

mru число

Устанавливает значение MRU (Maximum Receive Unit, максимально принимаемый пакет) в число. При договоренности pppd запросит удаленную сторону отправлять пакеты не более чем по число байт. Минимальное значение MRU — 128. Значение MRU по умолчанию — 1500. Для медленных соединений рекомендуется 296 (40 байт для заголовка TCP/IP плюс 256 байт данных)

mtu

Устанавливает значение MTU (Maximum Transmit Unitмаксимально передаваемый пакет) в число. Пока другая сторона не попросит меньшее значение при договоре о MRU, pppd будет требовать у сетевого кода ядра отправлять пакеты данных не более чем по число байт через сетевой интерфейс РРР

число

Предписывает не использовать линии управления модемом


Настройка разделяемого коммутируемого модемного соединения...

71

Таблица 3.2 (продолжение) Команда

Описание

name имя_машины

Устанавливает имя машины (для аутентификации)

Noauth

Не требует удаленную сторону назвать себя перед тем, как начнется обмен пакетами

noipdefalut

Запрещает поведение по умолчанию, когда не указан локальный IP-адрес, которое определяет локальный IPадрес по имени хоста. С этой опцией удаленная сторона должна обеспечить локальный IP-адрес в течение IPCPпереговоров (если она не определена явно в командной строке или в файле options)

pap-restart интервал

Устанавливает интервал возобновления передачи РАР в интервал секунд

pap-max-authreq значение

Устанавливает максимальное число передач РАР authenticate-request (запросов на аутентификацию по протоколу РАР)

passive

Разрешить опцию "passive" в LCP. С этой опцией pppd будет пытаться инициировать соединение, а если ответ от другой стороны не принят, то pppd будет пассивно ожидать правильный LCP-пакет от другой стороны вместо выхода

silent

С этой опцией pppd не будет передавать LCP-пакеты для инициации соединения, пока не придет правильный LCPпакет от другой стороны

user имя

Устанавливает имя пользователя для аутентификации этой машины на другой стороне, используя РАР. Нельзя использовать вместе с name

xonxoff

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

+chap

Двусторонняя СНАР-аутентификация

+pap

Двусторонняя РАР-аутентификация

-all

Не разрешает договариваться о любых опциях LCP и IPCP

-am

Запрещает договариваться о asyncmap

-chap

Предписывает отказаться от chap-аутентификации

-d

Устанавливает уровень отладки. Если эта опция есть, pppd будет записывать в журнал все прибывшие и отправленные пакеты в понятной для человека форме. Пакеты регистрируются в журнале через syslog. Эта информация может быть перенаправлена в файл соответствующей установкой /etc/syslog.conf


72

Глава 3 Таблица 3.2 (окончание)

Команда

Описание

-detach

Предписывает не переходить в фоновый режим

-ip

Предписывает не договариваться об IP-адресе

-mru

Запрещает договариваться о MRU

-рар

Предписывает отказаться от РАР-аутентификации

-рс

Запрещает сжатие полей протокола

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

Настройка diald Чтобы лучше понять то, что мы будем делать дальше, немного о принципе работы программы diald. Программа создает соединение на псевдотерминале и устанавливает маршрутизацию на получившийся интерфейс. После этого она начинает отслеживать пакеты, проходящие по виртуальному каналу. Если кто-то пытается выйти в Интернет, diald перехватывает данные, анализирует их и на основе правил, определяемых администратором, присваивает им определенные тайм-ауты. Далее пакеты отправляются по назначению, а тайм-ауты заносятся в так называемый набор соединения. Как только в наборе появляется первый тайм-аут, diald начинает дозваниваться до провайдера и пытается установить соединение, в случае успеха демон переустанавливает маршрутизацию на реальный канал. Таким образом, связь с внешним миром оказывается установленной. Набор соединения постоянно обновляется — истекшие тайм-ауты удаляются, новые поступают. И так продолжается пока, по какой-либо причине, передача данных не прекратится. Тайм-аутов в наборе становится все меньше и меньше, и когда последний из них оканчивается, diald разрывает связь. Теперь перейдем непосредственно к конфигурированию. Этот процесс состоит из трех частей: • создание сценария соединения — файл /etc/diald/connect; П настройка основной конфигурации — файл /etc/diald.conf; • настройка правил тайм-аутов — файл /etc/diald/standard.filter.

Создание сценария соединения: /etc/diald/connect Для организации сеанса связи необходимо выполнить несколько действий: дозвониться по телефону до поставщика услуг, пройти процедуру авторизации и запустить РРР-соединение. Поскольку у разных провайдеров этот


Настройка разделяемого коммутируемого модемного соединения...

73_

процесс может коренным образом отличаться, то не имеет смысла встраивать эту процедуру в программу. Вместо этого используется внешний сценарий, описывающий процедуру соединения. Для этого достаточно подправить тот сценарий, который входит в стандартную поставку diald. Ниже приведен вариант /etc/diald/connect. #!/bin/sh NIT="ATZ"

# Строка инициализации модема

PHONE="2223322"

# Телефон провайдера

ACCOUNT="myname" PASSWORD="test"

# имя учетной записи # пароль

# Определяем функцию для посылки # сообщений в системный журнал # и в FIFO-канал diald function message () { [ $FIFO ] && echo "message $*" >$FIFO logger -p Iocal2.info -t connect "$*" } # Начинаем процедуру связи # Инициализируем модем message "*** Initializing Modem ***" chat "" $INIT OK "" if [ $? != 0 ] then message "!!! Failed to initialize modem !!!" exit 1 fi # Пытаемся дозвониться message "*** Dialing system

*•*»

chat \ ABORT "NO CARRIER" \ ABORT BUSY \ ABORT "NO DIALTONE" \ ABORT ERROR \ "" ATDT$PHONE \ CONNECT "" case $? in 0) message "*** Connected ***";;


74

Глава 3 1) message "!!! Chat Error ! ! ! "; exit 1; ; 2) message "!!! Chat Script Error ! ! !"; exit 1; ; 3) message "!!! Chat Timeout ! ! !"; exit 1;; 4) message "!!! No Carrier ! ! ! "; exit 1; ; 5) message "!!! Busy ! ! !"; exit 1; ; 6) message "!!! No DialTone !!!"; exit 1;; 7) message "!!! Modem Error !!!"; exit 1;; *) esac

# Проходим авторизацию message "*** Send login and password ***" chat \ login: $ACCOUNT \ password: $PASSWORD

TIMEOUT 5 ""

if [ $? != 0 ] then message "!!! Failed to send !!!" exit 1 fi # Все прошло удачно! message "*** Protocol started *** "

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

Настройка основной конфигурации: /etc/diald.conf /etc/diald.conf — основной конфигурационный файл программы diald, в котором задаются параметры устанавливаемого соединения и определяется поведение программы. Набор команд конфигурации у diald достаточно обширен, поэтому в приведенном примере будут использованы только необходимые, а подробную информацию по конфигурационным командам можно посмотреть в документации на программу diald. Содержимое файла diald.conf: # Протокол для связи с провайдером mode ppp # Вести журнал сеансов связи diald.log accounting-log

/var/log/diald.log

# Для управления демоном из внешних программ # организовать канал FIFO — diald.ctl. fifo /etc/diald/diald.ctl # Для дозвона использовать файл /etc/diald/connect connect

/etc/diald/connect


Настройка разделяемого коммутируемого модемного соединения...

75_

# Далее несколько команд, описывающих применяемый модем # Поскольку мы уже определили параметры в /etc/ppp/options, # то нижеприведенные команды необходимо закомментировать во избежание # конфликтов в файле /etc/ppp/options # device /dev/modem # speed 115200 # modem # lock # crtscts # Назначаем локальный и удаленный адреса нашего # соединения. Если при связи с провайдером IP-адрес # для вас выделяется динамически, то здесь можно # поставить любые свободные адреса из диапазона, # оговоренного при настройке нашей ТСР/1Р-сети. # При запуске РРР diald сам выставит корректные значения local 192.168.110.100 remote 192.168.110.101 # Провайдер дает нам динамический IP dynamic # Установить маршрут по умолчанию # на виртуальное соединение de faultroute # Максимальное количество неудачных попыток дозвона dial-fail-limit 10 # Задержка между попытками дозвона redial-timeout 5 # время ожидания завершения сценария connect connect-timeout 120 # Файл с правилами для тайм-аутов include /etc/diald/standard.filter

Настройка правил тайм-аутов: /etc/diald/standard.filter Следующее, что вы должны сделать — произвести настройку правил таймаутов. Это самый сложный момент настройки diald, так как требует знания внутренней структуры IP-пакетов. Однако разработчики diald позаботились о пользователях, и стандартный файл standard.filter имеет вполне приемлемые для большинства случаев настройки. Оставив в нем все, как есть, мы получим набор правил, рассчитанный на трехминутную паузу между окончанием активности в Интернете и разрывом связи с провайдером.


76

Глава 3

Комплексное тестирование После проделанных манипуляций настало время проверить — правильно ли настроены наши программы. Для этого на компьютере желательно временно отключить все настройки брандмауэра (если вы, конечно, установили его). Затем необходимо запустить программу diald и попытаться выйти в "большой мир". Можно использовать браузер lynx (и зайти, например, на сайт www.bhv.ru), можно — программу ping. Если все было настроено корректно, то после ввода предыдущей команды модем должен начать дозваниваться до провайдера. Через некоторое время связь будет установлена. Однако практически всегда lynx выдает сообщение о том, что не может соединиться с удаленным сервером! В данном случае — это нормальное явление. Дело в том, что при РРР-соединении с динамическими IP-адресами в силу определенных особенностей первый пакет обычно бывает утерян и не доходит до адресата. В результате мы ждем ответа от сервера, а он об этом и не подозревает. Достаточно повторить введенную ранее команду, чтобы все заработало. Далее нам необходимо убедиться, что модем аккуратно разорвет соединение по прошествии трех минут. Дождавшись конца загрузки web-страницы, засечем время. Примерно через три минуты diald должен разорвать соединение. Если у вас все прошло именно таким образом, значит, система работает как надо. В противном случае проанализируйте последние строки системного журнала (/var/log/messages). Указанными действиями мы проверили корректную работу только с нашего сервера. Для того чтобы проверить, что все работает правильно, попробуем повторить описанную процедуру и на других компьютерах сети. Реакция diald должна быть аналогичной. Если что-то пошло не так, проверьте корректность настройки протокола TCP/IP на машине, в частности — настройки сетевого шлюза, которые должны указывать на наш сервер.

Настройка маршрутизатора На самом маршрутизаторе (это наш сервер, если кто-то еще не понял) мы должны в таблицу маршрутизации прописать, что все, что приходит из нашей локальной сети и не вписывается в адреса локальной сети необходимо отсылать на наше внешнее устройство. Ключевое слово для всего этого хозяйства NAT (Network Address Translate, преобразование сетевых адресов) и masquerading (маскарадинг). Что же нам нужно сделать? Сначала необходимо убедиться, что в ядре включена поддержка маршрутизации IP-пакетов. Проверить это можно следующей командой: cat /proc/sys/net/ipv4/ip_forward


Настройка разделяемого коммутируемого модемного соединения...

77

если вы получили 0, то маршрутизация выключена. Для включения нужно выполнить команду: echo I >/proc/sys/net/ipv4/ip_forward

Включается маскарадинг в iptables очень просто: iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT

И, наконец: iptables -t nat -A POSTROUTING -o pppO -s 192.168.0.0/24 -j MASQUERADE

Эти команды разрешают компьютерам локальной сети выходить в Интернет. Однако, если вы помните, во время инсталляции, при настройке брандмауэра, мы запретили практически все. Теперь пришел черед разрешать. Для того чтобы внутренние компьютеры могли ходить на web-серверы (80 порт), нам необходимо выполнить следующую команду: IPTABLES -A INPUT —protocol tcp —dport 80 -j ACCEPT IPTABLES -A INPUT —protocol ssh —dport 22 -j ACCEPT

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

Кэшируюший DNS-сервер DNS — это доменная система имен. DNS преобразует символическое имя в IP-адрес и наоборот. Для чего это нужно? Человеку легче запомнить нечто осмысленное, например www.checkitnow.ru, чем 213.162.145.242, а для компьютера проще передать 4 байта адреса, чем 50—60 байт имени. DNS-сервер представляет собой базу данных, в которой хранится соответствие символического имени IP-адресу. В сети существуют десятки тысяч DNS-серверов, которые обмениваются между собой информацией. DNS — это иерархическая система. Вершина записывается как "." (точка) и произносится как root (корень). В корне существует некоторое количество доменов верхнего уровня (Top Level Domains, TLDs), наиболее известными из которых являются org, com, edu, gov, mil, net, ru, ua и т. п. При поиске машины запрос обрабатывается рекурсивно, начиная с корня. Чтобы найти адрес машины moshkin.bins.ru, DNS-сервер проверяет свою


78

Глава 3

базу. Если в базе не оказалось нужной нам записи, то отправляется запрос на корневой сервер, который выдает список DNS-серверов, обслуживающих домен га. Далее отправляется запрос (адрес выбирается по определенному алгоритму или берется первый в полученном списке), чтобы узнать, какие DNS-серверы обслуживают зону bins.ru. Затем узнается IP-адрес хоста moshkin.bins.ru. А чтобы в следующий раз не повторять этот поиск, полученную пару "имя-1Р-адрес" наш DNS-сервер сохраняет в своей базе данных. При обратной задаче, по IP-адресу узнать символическое имя, — опять используется DNS-сервер. Для этих целей существует псевдодомен in-addr.arpa и в нем точно так же прописываются адреса, только порядок следования цифр обратный. Например, для адреса 213.162.145.242 запрос получится как к 242.145.162.213.in-addr.arpa, а схема поиска ответа остается такая же. По своим функциональным обязанностям различают два вида DNSсерверов: • кэширующий DNS-cepeep, который используется для локального хранения запрошенных пользователем пар "имя-1Р-адрес", что при интенсивном общении со многими web-серверами позволяет экономить время на запросах. Кэширующий DNS-сервер не отвечает на внешние запросы; • обычный DNS-cepeep — это полнофункциональный сервер, позволяющий получать, передавать и синхронизировать данные с другими DNS-серверами.

Настройка сетевых параметров Поскольку DNS-сервер очень сильно завязан на всю сетевую инфраструктуру, его работоспособность зависит от правильной конфигурации сети. В современных дистрибутивах, если вы выбрали соответствующий тип установки, конфигурирование производитс�� автоматически. Однако разработчик дистрибутива рассчитывает на абстрактную среднестатистическую систему, которой, как показывает практика, не существует. Поэтому следует убедиться, что с сетевыми настройками у вас все в порядке, вследствие чего рассмотрим основные файлы, отвечающие за конфигурацию сети.

Файл host.conf Этот файл предназначен для того, чтобы система могла определить, каким образом она будет получать информацию об именах и IP-адресах. Следующая запись в файле host.conf означает, что при поиске хостов сначала произойдет обращение к /etc/hosts, а только потом к DNS-серверу: order hosts,bind

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


Настройка разделяемого коммутируемого модемного соединения...

79

Файл /etc/hosts В этом файле должны находиться пары "1Р-адрес-имя": 127.0.0.1

localhost localhost.localdomain

192.168.0.1

user

192.168.0.2

user2

Причем обязательно должна присутствовать следующая строка: 127.0.0.1

localhost localhost.localdomain

Этот файл позволяет делать преобразование "имя-1Р-адрес" без обращений к DNS-серверу, что обычно используется в небольших локальных сетях.

Файл /etc/resolv.conf В этом файле должны находиться строки, подобные приведенным ниже: search

lazy.ru

nameserver 213.166.195.22

В строке, которая начинается со слова search, указывается, какое доменное имя будет принято по умолчанию. Так, если вы напишете useri, то система сразу попытается обратиться к компьютеру userl.lazy.ru. После search можно указывать несколько имен. В следующей строчке указываются адреса DNSсерверов (обычно провайдера), к которым будет обращаться ваша машина.

Установка DNS-сервера Нам необходимо проверить наличие следующих пакетов: bind и bind-utils. Как это делается, вы уже знаете — с помощью команды rpm -qi имя пакета. Если эти пакеты не найдены, то ищем их сперва на дисках с дистрибутивом (для Fedora Core 3 они находятся на первом диске), и устанавливаем командой rpm - i имя пакета.

Настройка дотирующего DNS-сервера Кэширующий DNS-сервер предназначен для нахождения пары "имя-1Радрес" в своей базе или на других серверах и сохранения пары у себя в базе. При этом он сконфигурирован таким образом, что только принимает данные извне сети, но не отдает информацию наружу. Такого типа серверы используются для уменьшения времени ожидания ответа и рекомендуются при медленном соединении или в том случае, когда внешний DNS-сервер перегружен. Рассмотрим конфигурационные файлы.


80

Глава 3

Файл /etc/named.conf Это основной конфигурационный файл DNS-сервера, в нашем случае он должен содержать следующие строки: options { directory "/var/named";

zone "." { type hint; file "root.hints" ;

zone "0.0.127.in-addr.arpa" { type master; file "127.0.0"; };

Строка d i r e c t o r y указывает bind, в каком каталоге искать файлы. Все файлы, используемые впоследствии, будут иметь путь относительно этого каталога. Строка zone "O.o.i27.in-addr.arpa" показывает, что bind также отвечает за обратную зону для подсети 127.*.*.*, является в ней мастером, и файл описания зоны — 127.0.0. Секция zone "." самая важная. Она описывает, в каком файле лежат адреса корневых DNS-серверов, которые отвечают за зоны первого уровня. Файл, названный /var/named/root.hints, должен находиться в указанном каталоге и содержать приблизительно следующую информацию: 6D IN NS

CROOT-SERVERS.NET.

6D IN NS

J.ROOT-SERVERS.NET.

6D IN NS

K.ROOT-SERVERS.NET.

6D IN NS

L.ROOT-SERVERS.NET.

6D IN NS

M.ROOT-SERVERS.NET.

6D IN NS

A.ROOT-SERVERS.NET.

6D IN NS

H.ROOT-SERVERS.NET.

6D IN NS

B.ROOT-SERVERS.NET.

6D IN NS

C.ROOT-SERVERS.NET.

6D IN NS

D.ROOT-SERVERS.NET.

6D IN NS

E.ROOT-SERVERS.NET.

6D IN NS

I.ROOT-SERVERS.NET.


Настройка разделяемого коммутируемого модемного соединения... 6D IN NS

F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET.

5w6dl6h IN A

192.112.36.4

J.ROOT-SERVERS.NET.

5w6dl6h IN A

198.41.0.10

K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET.

5w6dl6h 5w6dl6h 5w6dl6h 5w6dl6h

193.0.14.129 198.32.64.12 202.12.27.33 198.41.0.4

H.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET.

5w6dl6h IN A 5w6dl6h IN A

128.63.2.53 128.9.0.107

C.ROOT-SERVERS.NET.

5w6dl6h IN A

192.33.4.12

D.ROOT-SERVERS.NET.

5w6dl6h IN A

128.8.10.90

E.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET.

5w6dl6h IN A 5w6dl6h IN A 5w6dl6h IN A

192.203.230.10 192.36.148.17 192.5.5.241

IN IN IN IN

A A A A

81_

Этот файл описывает имена корневых серверов имен по всему миру. Их список периодически изменяется. Поэтому данный файл необходимо время от времени корректировать. Для получения файла root.hints существует по меньшей мере два пути: либо забрать его по FTP с сервера internic, либо выполнить команду: dig @rs.internic.net . ns >root.hints

Файл /etc/127.0.0 127.0.0 — это файл, который отвечает за преобразование IP-адресов в символические имена. Файл 127.0.0 должен выглядеть следующим образом: @

IN

SOA

ns.lazy.ru. hostmaster.lazy.ru. ( 1 8Н

Serial Refresh

Retry

1W ID)

IN 1

NS PTR

Expire Minimum TTL ns.lazy.ru. localhost

Эта запись обозначает следующее: П @ указывает, что описываем сами себя; • описываемая зона поддерживается сервером с именем ns.iazy.ru; • отвечает за нее администратор, доступный по адресу hostmaster@iazy.ru (первая точка заменяет @);


82_

Глава 3

О у зоны серийный номер равен 1 (обычно для него используют дату последней правки зоны — на него опираются другие серверы, которые получают информацию с нашего сервера); • другие серверы будут обновлять информацию о нашем сервере с периодичностью в 8 часов; • при неудачном обновлении следующая попытка будет произведена через 2 часа; О зона будет считаться содержащей недостоверную информацию, если не обновится через 1 неделю; П но не менее чем через 1 день; О строка IN NS ns.lazy.ru. показывает, что авторитетным сервером для этой зоны является ns.lazy.ru., и именно ему надо рассылать обновления зоны ns. lazy. ru; • строка i PTR locaihost. показывает, что хост с адресом 1 в зоне 127.0.0. Имеет ИМЯ l o c a i h o s t .

Запуск named После правки конфигурационных файлов можно запускать сервер. Наберите /etc/init.d/named s t a r t без опций и нажмите клавишу <Enter>. Затем запускаем программу nslookup: $ nslookup Default Server: locaihost Address: 127.0.0.1

Если вы увидели нечто похожее на мониторе — система работает. Каждый раз, когда вы изменяете файл named.conf, необходимо перезапустить named, используя команду /etc/init.d/named r e s t a r t . Теперь проверим, как функционирует наш кэширующий сервер, для этого введем: > userl.ya.ru Server: 213.166.195.22 Address: 213.166.195.22 Name: userl.ya.ru Address: 213.166.195.55

При этом программа nslookup попросила наш DNS-сервер посмотреть информацию о данном хосте. У себя сервер этой информации не нашел, а нашел у DNS-сервера провайдера, который имеет IP-адрес 213.166.195.22.


Настройка разделяемого коммутируемого модемного соединения...

83

Если вы повторно попросите узнать адрес компьютера userl.ya.ru, то получите такой ответ: > userl.ya.ru Server: 1осаlhos t Address: 127.0.0.1 Non-authoritative answer: Name: Address:

userl.ya.ru 213.166.195.55

В ЭТОТ раз ВЫ ПОЛУЧИЛИ сообщение N o n - a u t h o r i t a t i v e

answer. Это значит,

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


Глава 4

Установка Apache и Webmin В этой главе описывается установка и использование двух пакетов — webсервера Apache и системы удаленного администрирования с web-интерфейсом Webmin. Их использование даст вам возможность быстро, не особо вникая в тонкости, конфигурировать сервер, находясь за любым компьютером в нашей сети, а в перспективе — в любой точке земного шара, где есть Интернет.

Web-сервер Apache В качестве web-сервера в UNIX сообществе в основном используется Apache, который распространяется по лицензии GNU. По статистическим данным более половины всех web-серверов в Интернет созданы на базе Apache. У него очень много достоинств — он кроссплатформенный, мощный и легкий в настройке. В качестве альтернативы для Linux-платформы можно использовать TUX, который тесно интегрирован с ядром Linux, что позволило резко увеличить количество обрабатываемых запросов за единицу времени. Однако у этого сервера есть несколько минусов, в том числе: • работает только под Linux; • неотлаженный код; • мало дополнительных возможностей, по сравнению с Apache.

Конфигурация Установка web-сервера для дистрибутивов, использующих RPM-пакеты, стандартна — необходимо найти нужный пакет и произвести установку сервера командой: rpm - i <имя пакета>


86

Глава 4

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

^

Примечание

^j

После настройки необходимо, чтобы сервер перечитал конфигурационные файлы, это происходит либо при запуске, либо при получении сигнала -HUP или -USR1. Если Apache находится в работе, то при изменении конфигурации его рекомендуется перезапустить командой k i l l - U S R I , поскольку при таком перезапуске сервера текущие соединения завершаются обычным образом, а новые клиенты будут работать уже с новыми конфигурационными файлами.

Конфигурация сервера задается в файлах httpd.conf, srm.conf, access.conf и .htaccess. Файл httpd.conf предназначен для общей настройки, srm.conf содержит описание доступных ресурсов, a access.conf— права доступа к ресурсам. Однако в современных версиях сервера любая директива конфигурации может лежать в любом из этих файлов. Сейчас de facto все директивы конфигурации содержатся в файле httpd.conf. Некоторые модули могут иметь свои отдельные файлы конфигурации (например, modcharset требует файлы, хранящие таблицы перекодировки).

Файл access.conf В access.conf содержатся директивы, описывающие права доступа к каталогам и файлам web-сервера. Обычно создается каталог /\у\у\у/<имя_сервера>/, потому что при такой организации проще ориентироваться в структуре файлов. Файл access.conf содержит секции Directory, Location и Files, которые ограничены одноименными директивами. В их параметрах могут использоваться символы "?" и "*", а также регулярные выражения, предваряемые тильдой "~". В секции Directory помещаются инструкции, относящиеся к определенному каталогу на диске, в секции Location — относящиеся к виртуальному пути, в секции F i l e s — относящиеся к файлу или группе файлов. Например: <Directory /www/room.ru> # директивы, относящиеся ко всем документам, хранящимся в # каталоге /www/roora.ru и вложенных в него </Directory> <Location /cgi-bin> # директивы, относящиеся ко всем документам, доступным по


Установка Apache и Webmin

87

# адресу http://<MMH_cepBepa>/cgi-bin/ <путь_к_файлу> </Location> <Files /www/room.ru/form.htm> # директивы, относящиеся к файлу form.htm из каталога # /www/room.ru </Files>

Различие между секциями Directory и Location состоит в том, что первая относится к каталогам на диске, вторая — к виртуальному пути (URL, Uniform Resource Locator), который браузер запрашивает у web-сервера. И в той, и в другой могут присутствовать директивы order, allow и deny, которые позволяют ограничить доступ к каталогу или URL с различных машин. При отсутствии специальных требований к безопасности можно указать options All в секции <Directory /www>, иначе нужно описать параметры каждого каталога отдельно. Приведем пример файла access.conf: ## access.conf — Apache HTTP server configuration file <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /www> Options All AllowOverride All order allow, deny allow from all </Directory>

Файл srm.conf Файл srm.conf содержит директивы, связанные с общими настройками структуры каталогов сервера. Обычно они не изменяются.

Файл httpd.conf Конфигурационный файл httpd.conf является основным и содержит настройки, связанные с работой web-сервера, виртуальных серверов, а также


88

Глава 4

всех его программных модулей. Кроме того, именно в нем настраивается перекодирование русских букв при передаче от сервера к клиенту и обратно. Далее я приведу урезанный конфигурационный файл с краткими пояснениями. Файл условно разбит на 3 секции. Первая секция начинается следующим комментарием: ### Section I: Global Environment # # The directives in this section affect the overall operation of Apache, # such as the number of concurrent requests it can handle or where it # can find its configuration files. ServerRoot "/etc/httpd"

Эта директива показывает, где находятся конфигурационные файлы сервера. Timeout 120

Время тайм-аута в секундах. Обычно этого значения вполне достаточно для нормального функционирования сервера. Listen 80

Показывает, что сервер слушает 80 порт. При желании, можно задать еще IP-адрес, например, 192.168.0.1:80. А можно задать несколько портов или адресов, которые слушает сервер. LoadModule LoadModule LoadModule LoadModule LoadModule

auth__digest_module modules/mod_auth_digest.so ldap_module modules/mod_ldap.so auth_ldap_module modules/mod_auth_ldap.so include_module modules/mod_include.so log_config_module modules/mod_log_config.so

Здесь описываются загружаемые модули. Модулей много и, возможно, не все они нужны вам. Секция номер 2. Основные конфигурационные параметры сервера. ### Section 2: 'Main' server configuration # # The directives in this section set up the values used by the 'main'


Установка Apache и Webmin # server, which responds to any requests that aren't handled by a # <VirtualHost> definition.

These values also provide defaults for

# any <VirtualHost> containers you may define later in the file. # # All of these directives may appear inside <VirtualHost> containers, # in which case these default settings will be overridden for the # virtual host being defined. User apache Group apache

Директивы user и Group задают пользователя, от имени которого запускается web-сервер. Без особой нужды менять их нет необходимости. ServerAdmin rootSlocalhost

Эта директива определяет адрес администратора web-сервера, на который пользователи могут отсылать электронные письма. Этот адрес в большинстве случаев будет отображаться на страницах с сообщениями об ошибках. DocumentRoot "/var/www/html"

Параметр определяет каталог, где находятся HTML-документы, отображаемые web-сервером. AccessFileName .htaccess

Параметр определяет имя файла, в котором можно дополнительно описать каталоги, к которым имеют/не имеют доступ пользователи web-сервера. ErrorLog logs/error_log

Задает файл, где будут сохраняться все сообщения об ошибках сервера. ### Section 3: Virtual Hosts # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most # configurations # use only name-based virtual hosts so the server doesn't need to worry # about


90

Глава 4

# IP addresses. This is indicated by the asterisks in the directives #below. #

Секция З предназначена для конфигурации виртуальных хостов. Эта секция нам не нужна, поскольку у нас только один web-адрес. Как видите, на данном этапе менять, практически, ничего не надо. В дальнейшем, нам, конечно, придется кое-что изменить в настройках.

Webmin Здесь мы рассмотрим систему администрирования с web-интерфейсом, которая очень понравится начинающему администратору. Достоинством этого решения являются графический интерфейс, собранные в одном месте настройки всего, что есть в системе, модульность (что позволяет убрать ненужное и добавить необходимое), достаточно простое управление системой и, наконец, доступ к системе с любого компьютера, подключенного к локальной сети или Интернет. Минусами этого решения являются: графический интерфейс, собранные в одном месте настройки всего, что есть в системе, доступ к системе с любого компьютера, подключенного к локальной сети или Интернет. Противоречие? На самом деле нет и вот почему. Графический интерфейс — это красиво, здорово и удобно. Но, поскольку Webmin рассчитан на удаленное администрирование, то, например, ночью из дома на модемном соединении достаточно неприятно тянуть 20—30 Кбайт картинок для каждой страницы. Но не это главное — проблема графического интерфейса в подмене понятий и снижении порога знаний. Казалось бы хорошо, но не для всех случаев. Простейший пример — web-сервер вышел из строя (соответственно Webmin не работает), и чтобы что-то поправить в настройках, нужно, во-первых, знать, что и где посмотреть, чтобы определиться, в чем проблема. А во-вторых, знать, что и где подкрутить, чтобы все заработало как нужно. К сожалению, постоянная работа с графическим интерфейсом таких знаний вам не даст. Доступ к системе из Интернета. Казалось бы, здорово, можно сидя дома, в интернет-клубе или в аэропорту оперативно посмотреть, что делается на сервере, поправить что-то или настроить. Но для того, чтобы сервер не взломали, нужно приложить огромные усилия. И ведь нет гарантии, что в интернет-клубе нет сканера клавиатуры, благодаря которому пароль администратора окажется у неизвестного через 20 минут. По-видимому, исходя из минусов системы, разработчики дистрибутива не включили пакет Webmin в дистрибутив Fedora Core, поэтому мы идем


Установка Apache и Webmin

91

на www.webmin.com и скачиваем пакет прямо в виде RPM. После этого в командной строке выполняем следующую команду: rpm -i wefcmin-1.190-1.noarch.rpm предупреждение: wetmin-1.190-1.noarch.rpm: подпись DSA V3: NOKEY, key ID Ilf63c51 Operating system is Redhat Linux Fedora 3 Webmin install complete. You can now login to https: /Vlocalhost.localdomain:10000/ as root with your root password.

Пакет успешно установился и подсказал нам, что для того, чтобы получить доступ к Webmin на локальном компьютере, необходимо в браузере зайти на страницу по адресу localhost: 10000 По умолчанию, после установки, к Webmin можно подключиться с любого компьютера, что мы и сделаем (рис. 4.1). Мы должны ввести имя и пароль пользователя, которому разрешен доступ к Webmin. После инсталляции это пользователь root. В дальнейшем, при конфигурации пакета, можно поменять пользователя или разрешить доступ сразу нескольким пользователям. \ J чн тшр •

FJ. gdl $m

•-,

i-.i.......

. . „ , и»»

. . ..'

'

> ™ » . .

:

';;:.:,.:...

••

.;;

Ч-- , -i

LI *—

Рис. 4 . 1 . Страница ввода имени и пароля пользователя

HLM

9t


92

Глава 4

Страница Webmin После ввода пароля мы попадаем на страницу конфигурации Webmin (рис. 4.2). Как вы видите, система изначально англоязычная. Ничего страшного, заходим в Change Language and Theme и выбираем нужный нам язык (рис. 4.3). Здесь же можно поменять оформление всей системы. Далее следует страница конфигурации Webmin (рис. 4.4). Пойдем по порядку. Журнал действий Webmin. Позволяет записывать действия, осуществляемые пользователями, указывать, для каких пользователей вести запись действий, для каких модулей, в какое время производить запись (рис. 4.5). Настройка Usermin. Usermin — это пакет от тех же разработчиков, предназначенный для работы с учетными записями. Поскольку мы не устанавливали Usermin, то нам собственно нечего делать в этом модуле.

File

gift,, ^iffw: go

-..'ji - •:••,• " ^

gookme«*.

Tool*

Lfeip

:>.•:• ^J*r • V hitp lof aJhoar 1000ft ОRwiHatNowofc : .^SuBpotl <VJStttp r^P'educfc;; (Training

Рис. 4.2. Страница конфигурации Webmin


Установка Apache и Webmin

WehraHiUI Uuif4«tt Г Global lanjuagelKntllih)

93

** РЬгким) choice - IRusiwi CP1HURU JUJ)

f GI*JUallh«n»«CMSt:.l.iiiinTlwiiiej С Pcdunal the** ,. j « d Wcbmn

Рис. 4.3. Страница конфигурации языка интерфейса Webmin

Рис. 4.4. Страница конфигурации Webmin на русском языке


94

Глава 4 Jtbw

go

go<*m**>

Tool»

7 ; \ . •;С

И^Р "

- (^? i,j>/ r j ' " : X» Nip •'•'«»• alhMMQQOOwibnit«leg/ t«

. . Р м и л N « . o i k . .Svppon

Б\л

|"l 1С»

«

Рис. 4.5. Страница конфигурации журнала действий

Настройка Webmin Как видите, возможностей по конфигурированию прилично (рис. 4.6). Я не буду подробно описывать каждую возможность, остановлюсь только на основных моментах. Управление доступом по IP. Здесь мы можем (и должны) ограничить доступ к Webmin определенным набором IP-адресов, с которых могут подключаться пользователи (рис. 4.7). Сразу после установки нет ограничений на доступ по IP-адресу. На рисунке видно, что я ограничил доступ нашей локальной сетью (192.168.0.0) и локальной машиной (127.0.0.1) Внешний вид. Здесь мы настраиваем внешний вид Webmin (рис. 4.8). Можно поменять цвет ссылок, рамок и тому подобного. Список категорий. Здесь мы можем переименовать или удалить категории Webmin, задать свою категорию, которую можно наполнить своими модулями (рис. 4.9). File Locking. Здесь можно задать запрет для конкурентного изменения несколькими процессами файлов и каталогов. Обычно это необходимо только для некоторых, специфических файлов.


Установка Apache и Webmin

95

oi (hut о» а л If N a M, cu nvnl!> Mailed at bout and Y « ii Wtbtll» Msrvcr JHIVK». Thi> map be acruMiy if JTMI haw reetnUv ш r t u t o i Perl.

Рис. 4.6. Страница Настройка Webmin

>-

6*

v.~

«a

8«« Ml 'О*Оч«0 HlKll *. «»

Mih

is

амия*.

il

© © G»О

v

;. ;•••;;'....'..'.. З В !.'

UlM

О О

n. qucryn » сср»ер>- Wrbinin с ипредсясякыа шфегив I I ' Кроне CiiGcrкнж< xjqxutia Рнккаауашмниьп м е м ktiHiKvicpui (канриыер fiKi.hai-^mi/ н nuvcTn [P tHW|4*teii H U M З.»кя« W 2 . U • W * i ! t f f t i W i 4 m Hant.iw.jn.Mi рипнмл)c i c i psipen«rh лсктуи к Miunty « ммр> -гаям» с rot nqpftt*. •лалелкншн ыиирыл аи « к р к re. мшбеяни ecmi ш к.шииртср aot гушем H I Interact В г^млимиии- учас ли&и) пилучмиокЙ каш ii^tun

in1 |0m

.

'"

. . .

....

Рис. 4.7. Страница Управление доступом по IP

.

.

.

.

,


Глава 4

96

. .... ,,. . i

Рис. 4.8. Страница Внешний вид

Pile

bat

Vi»*

Ш* Вср^нан чжти i<MV<}rt

itaiHfiнстрчсииы» каюирнП. а

РИС. 4.9. Страница Список категорий


Установка Apache и Webmin Пщ

pv

v'.m

•,.

£-..> ••,«**

.

'

'

,

:

>(di

'

!

'

97

Hale

'.

:

тир»» ылушец Wctanin H K I w r w n (Р-пцпо*. m Mрнфмо»<г6нтыыстриси на i Tti.ihi.i с «того И) HIM. Кроме Ю Ц вы h nupi TCP. нипрмй 5),lei iiptK.ijuiHKith Wi-tuni». Приметяйнс: KUUM4Uпослеипшнен шцрееннпнпиргашш MM.

И IWpOHb Itfl» I

1

I

J!

1 9

Рис. 4.10. Страница Порт и адрес

мииули и «i мшмн ы«у г (Sun, ушчонм. Сели уцшитси w«oynh. нжзмднй копии, то икн таки Оущп ущкни. Б и т иидачи. Оия у жгн1.и.и1*11>.erowpHK мм Пркавк1псрсуст1шо1ип>«п>.

Рис. 4.11. Страница Модули Webmin 4 3ак. 1500


98

Глава 4

Порт и адрес. Эта страница — еще один способ взять под контроль доступ к Webmin (рис. 4.10). Если система имеет несколько сетевых интерфейсов, можно указать, по какому сетевому интерфейсу и какому порту будет осуществляться доступ. Модули Webmin. Тут можно установить дополнительные модули Webmin, которые мы можем иметь в виде файлов, скачать из Интернета по НТТРили FTP-протоколам (рис. 4.11). Так же можно сделать копию существующего модуля, для того чтобы изменить некоторые настройки (например, у нас несколько DSL-модемов). И, конечно же, удалить ненужные модули и их копии. Обновление Webmin. Как понятно из названия, здесь можно настроить автоматическое обновление Webmin (рис. 4.12). Или обновить вручную, с сохранением всех настроек. Можно проверить и установить модули, которые были изменены с момента последнего обновления. Темы Webmin. Здесь можно поменять оформление Webmin, как из списка тем, присутствующих в системе, так и новых, которые есть у вас в виде файла или которые можно загрузить из Интернета. Шифрование SSL. Здесь можно настроить SSL (Secure Sockets Layer, слой безопасных соединений), правда, только в том случае, если используемый браузер поддерживает эту возможность и настроен для работы с SSL. Журнал. Здесь настраивается журнал событий Webmin — ведутся записи по действиям пользователей, отслеживается работа с модулями (рис. 4.13). Операционная система и переменные окружения. На этой странице Webmin

можно указать, какой дистрибутив используется (рис. 4.14). Это позволяет правильно отслеживать пути к исполняемым файлам и переменным окружения. Аутентификация. Эта страница — еще один рубеж защиты. Здесь мы определяем задержку между вводом пароля, количество попыток ввода пароля, время бездействия, по истечении которого произойдет автоматическое отключение и многое другое (рис. 4.15). Проверка ссылок. Здесь можно включить проверку — не выставлен ли адрес сервера с запущенным Webmin где-нибудь в Интернете. Авторизация по сертификатам. Здесь можно настроить авторизацию по сертификатам SSL. Для этого необходимо настроить на web-сервере поддержку SSL. Прокси-сервер. Если у вас нет прямого выхода в Интернет, здесь можно указать прокси-серверы, через которые осуществляется доступ. Это необходимо в том случае, если вы используете скачивание файлов Webmin из Интернета. Язык. Здесь определяем язык вывода информации и кодовую страницу.


Установка Apache и Webmin fr* t-

99

-.».

>•

Рис. 4.12. Страница Обновление Webmin

: ; : : . ; : • ; ;

... •

•ЙУ

фирмогтс хурямлкикк ф^ГгК!» C'L R Вы мо*стс умэять кшсне fP-uupeca н

i иолупя Журнал Wcinum

ПРММ

1 ~ W-<« pa» »n-1i IBM.h» «•«#•<•• i 4 « > '•<•

!

..

- ^-,

wM-m

f.

mtiguxltai

fin

, • a . ,******•

Рис. 4.13. Страница Журнал


Глава 4

100

• й*

V

*hnp

'«-*'

Рис. 4.14. Страница Операционная система и переменные окружения

Рис. 4.15. Страница Аутентификация


Установка Apache и Webmin

E*

'.••

• * •

ш

. -

-

•-

- ,.^., - 0$ :;..;: ^. J« htip.'.

*>*.*. -

*

ItaMN

^щщц

H.

a

101

X» •«

шин

Рис. 4.16. Страница Категории модулей

Категории модулей. В этом окне отображаются все модули, установленные в Webmin и к какой категории эти модули относятся (рис. 4.16). Здесь можно переместить модули из одной категории в другую. Анонимный доступ. Этим не рекомендуется пользоваться. Здесь можно определить, какие модули, от имени как можно запускать БЕЗ авторизации. Необходимо крайне осторожно пользоваться этой возможностью. Пользователи Webmin. Здесь можно определить, какие пользователи могут получить доступ к Webmin. Серверы Webmin. Используется в том случае если у вас несколько систем под управлением Webmin.

Страница Система На этой странице сгруппированы модули, отвечающие за систему в целом. Внешний вид этой страницы представлен на рис. 4.17.


Рис. 4.17. Страница Система

Модулей очень много, но почти все необходимы в работе администратора. Рассмотрим их. Backup Configurations Files. Этот модуль позволяет сохранить или восстановить конфигурационные файлы модулей Webmin. Как локально, так и по сети. Дисковые квоты. Этот модуль позволяет управлять дисковыми квотами пользователей. Поскольку мы не предполагаем использования квот, то этот модуль нам не нужен Пароли. В этом модуле мы, во-первых, видим всех пользователей системы, а во-вторых, можем изменить их пароли. Расписание заданий. Это web-интерфейс к команде at. Здесь мы можем задать пользователя, от имени которого выполняется команда, задать саму команду и время, когда ее нужно выполнить (рис. 4.18). Системный журнал. Этот модуль позволяет нам управлять ведением системных журналов (рис. 4.19). Разрешить или запретить ведение журналов, указать, какие сообщения туда записывать, место размещения журналов и тому подобные вещи.


Установка Apache и Webmin

103

Рис. 4.18. Страница Расписание заданий

л.

Рис. 4.19. Страница Системный журнал


104

Глава 4

LDAP Users and Groups. Этот модуль предназначен для работы с системой LDAP (Light Weight Directory Access Protocol, облегченный протокол службы каталогов). Загрузка и завершение работы системы. Здесь определяется, какие сценарии выполняются при старте и завершении работы системы (рис. 4.20). С помощью этого модуля можно создать новый сценарий, запустить либо остановить выбранные сценарии, переключить уровень выполнения системы, перегрузить ее, либо вообще завершить ее работу. Пользователи и группы. Этот модуль предназначен для управления пользователями (рис. 4.21) и группами (рис. 4.22) компьютера. Здесь можно добавить, изменить информацию или удалить пользователя или группу. Расписание заданий Сгоп. Этот модуль предназначен для управления системой Стоп — выполнение заданий по определенному расписанию (рис. 4.23). Страницы руководства. Этот модуль позволяет производить поиск в различных системах документации, находящихся на этом компьютере (рис. 4.24). Незаменимая вещь, если вы подзабыли параметры команды или тонкости настройки системы. Log File Rotation. Система управления ротацией файлов журналов. Можно определить, с какой периодичностью архивируют файлы журналов, когда удаляются старые журналы и т. п. Менеджер ПО. Этот модуль отвечает за установку и удаление программных пакетов (рис. 4.25). С его помощью можно производить поиск установленных пакетов по имени, установить новое приложение из файла, либо скачав из Интернета, можно определить, к какому пакету принадлежит файл с именем, введенным в соответствующее поле формы. А можно просмотреть дерево пакетов (рис. 4.26) и посмотреть описание выбранного вами пакета (рис. 4.27). Процесс инициализации (init). С помощью этого модуля можно покопаться в init-файле системы (рис. 4.28). Вам вряд ли понадобится туда залазить, но знать о такой возможности необходимо. Резервное копирование. Если вы установили в своей системе специальные пакеты резервного копирования, с помощью этого модуля можно будет ими управлять. Файловые системы. Этот модуль позволяет подключать и отключать тома, настраивать их для автоматического подключения, а также показывает уже подключенные файловые системы (рис. 4.29). Аутентификация РАМ. Этот модуль позволяет работать с модулями аутентификации РАМ (Pluggable Authentication Modules). Монитор служб MON. Если в системе установлен специальный монитор служб, то именно этот модуль позволит вам его настроить.


Установка Apache и Webmin

105

«I,

V.1

-i; .,'

Еы_

if.

ива, •fWY

Г

л»

а.

л.

ш>

"

aaj •

•'1;:'

Т

л. fff я.

•ш •

»>

« > •

••.

«м

н.

йша

т,

д. д.

*

' -

'

.

.

.

.

.

-

.

• • • • • •

• • • • • • • • - "

Рис. 4.20. Страница Загрузка и завершение работы системы

Б**

5

я

i

••••••вмншяшм 1• 1 гм ....1«

• • • ;

ял

к

ms

I1I1P-1 : .'..........ВНИИ -ч.

.:

я

ы'~ ш

а1 »И» «и

М51КГ.

ЮЛ

S с 5:лш '»

ta.

;

да

шд ко ••

ммГ

—. • ' ^ If

' : 'IJ

~

:

••••:•'• •;.

С №

и

t IPl^ti. 1 '

4*

»•*«)'

:'• ••^•^'••^••'•V^'Y::::

/

Itau

..> .Л. I ,.«

И

а »

fO:

МИ

: : " /Г . ; :

л-'.»»»--;»

>

у

:

: :

v,"..,» .V,.M*.-!>„«•:.' -^K:v".; :r

.» .

ввязвя SvoiSS'b'-Ssi

•МП

И

;:

••\.: : Q- :.i:^i;

«•р

";.

и

•1

: L

Й ^ О Т . '

».-,••:

:

«.

; .

IUS

19

.*.,.„

•о. <*.

кмм и>

^ .

I:'.' ..:

•ввввв

-

.

-

"

-•

»

,

,

ttuuin »,»»»»•'

т«";;у:.:.; ;; •

. .

: •

• • •

'..

k . i w W » * * . > : . ; * . ? ••••• ';

Рис. 4.21. Пользователи системы

v«vS- : : ; Г';• : "•' о


106

Глава 4

S i

Рис. 4.22. Группы пользователей системы

Рис. 4.23. Страница Расписание заданий Сгоп

••


107

Установка Apache и Webmin

Рис. 4.24. Страницы руководства

к

- Suwui

**ч*

9rau<»

>Ii

•Ч».»*.-

имнйп*«ст.Н1*М

Г Hi мгп,ж«.но«.иМ Г

СЛрш.«Ы!рЧШ.|[ •BJH^wiwit^/j

Определить прина дленюсп. файла Уьшкге юимшу turn iiy-n. к файду. «споры* ш и л » * и * т »

Рис. 4.25. Управление программным обеспечением


Глава 4

108

ИР

'-"* * *

*^№ у 1 * •

••••

Р'ЧЧЬ IflidV IW^On

,,,,.iV... . ,,, ... . \Zi:- ™. .

<J^«dwu^>Tm«we

•МВШВЕЯКШ

- -

• • •

• • - . .

.

"

•К Атиюпели ЙИ Appltwiwii A ctmnun J line C'lVfJVI) i-Knnfmg pivfrun.

а ,™:.У7 W d.m,fO.4b3M

(Ч14ГШ1» for bMikvig up niui л-snnms и Ш и П Лкчуиеви.

Щ ПЬ-тГкгJ.B.I-I

FUe ЯлИсг is *too)lor v«w|nK and сгмМп* м Н Я М

Ш кДЬ 0.11.14-3

C'UUVD burnlne «fviiCiiHontttrKDE

Ш lha U4y|7

An aichivini nod nvnptvuinn utility Гот LHsrc Гостом «trhivet.

IS twx 3.<H

PO.SiX I'il* Syitom A t r h i « j

Ш

miiHw МШ priiSriuii< l i g i n M renxiM up* ilcvueo.

тиО.4ЫМ

A GNU № uchi.№«pigtail. Ш unfici.il-4

A ulilh) *» ипрл-tuia /ip tiki.

m ,*i.in

A fltEcnKprc'iion and рискадич; util.i) I'untpMlbk wilh ГК/.1Г1.

Ш Uaubuet SS finjinotring

Nn

S i loleriui Stf Mutbmcttu бЙ I'nulucltvik) Ш

PuhLihlng

| г,„.

Рис. 4.26. Дерево установленных пакетов

Рис. 4.27. Краткое описание выбранного пакета


Установка Apache и Webmin

109

• ь

НЧК4Ш

а о и" и а в и"

.. _., .-.,

••-<*и7"\:/Л'• -.;- v5i"™imai . ">»mm i * ( ^ ^ "

8

«1

ь

«г •И

..,- :: : ': ' .••''•'; :"V: :; ."i: : : : ..•'

••-'• l'k-t

.

v,i.*.'i • ' "';..'.7 ''Х'-З^ШШ'''"^:"'":' .

.

••'

В

l;i'..U.J '"..'.:''

ч

;

ш;-

;

.

.

-

^

%

-

.

-

*

-

;

n

я я-

, . ^ .

. ; ; • ; . ;

.

.

'

'

"

'

'

! л ч ; Т "•:~'"-11- ta<»«..'i>iv

t

it >

:

- •. •

гкн,л.«„.»''"'У:":.

'• >• .-

? : ;

".'

•::••••:••:••;•;/'.:•••:••

>ц.;»м..„'.'|^и5®5Й:'1"Т;3;У-1-} .».

.

.

-

.

.

.

,

.

,

.

.

.

.

.

.

.

.

.

.

.

.

.

.

|Ш*«тае1.п»т>К1Н^у1фИрв:1ет1.»Л1ПШИ11И»,в™аИлм!:«1.»г.11; ч . п с к к wro с ж ш ш т « « I K M H I ветушт > лскпно. Помште о i юл^апзн, счииОки ь иастрсжкс нл J T »крсвя;»>» систем) я HC|KI&UII}CIKKOBJWC t i

Рис. 4.28. Настройка процесса инициализации

Рис. 4.29. Управление файловыми системами

1


110

Глава 4

Рис. 4.30. Список запущенных процессов системы

Рис. 4.31. Управление процессом системы


Установка Apache и Webmin

111

Процессы. Здесь можно посмотреть запущенные процессы в системе, узнать информацию по использованию памяти системы, загрузке процессора (рис. 4.30). Если мы выберем какой-то процесс, то мы увидим всю его подноготную — размер, приоритет, имя владельца, время выполнения. Сможем управлять процессом, поднимать и опускать приоритет, посылать специальные сигналы либо вообще завершить процесс (рис. 4.31). Система безопасности. Этот модуль предназначен для работы со следующими системами безопасности — portsentry, hostsentry или logcheck.

Службы Этот раздел посвящен управлению разнообразными сетевыми службами, используемыми в системе (рис. 4.32). Как и в других разделах, здесь устанавливаются все модули пакета, даже если такой службы нет в системе. Frox FTP Proxy. Модуль управления службой переадресации FTP-запросов.

Рис. 4.32. Управление службами системы


112

Глава 4

Webalizer Logflle Analisys. Модуль управления службой анализов журналов Apache (рис. 4.33). Если она у вас установлена, то вы можете здесь настраивать ее параметры. Настройка Postfix. Модуль настройки почтовой службы. Сборщик почты Fetchmail. Специальный модуль, позволяющий пользователям автоматически забирать свою почту с нескольких внешних почтовых ящиков и перенаправлять ее в один локальный почтовый ящик. Сервер OpenSLP. Open Service Location Protocol — система, информирующая клиентов об имеющихся службах. Сервер баз данных MySQL. Этот модуль предназначен для управления сервером БД MySQL и работе с существующими базами данных (рис. 4.34). Read User Mail. С помощью этого модуля можно получить доступ ко всем почтовым ящикам пользователей компьютера, на котором установлен Webmin (рис. 4.35). Веб-сервер Apache. Модуль для управления web-сервером Apache. Здесь присутствуют настройки на все случаи жизни — какие адреса слушать, по каким портам работать, создание виртуальных серверов, установка корневых каталогов, ограничений и т. п. Настройки QMail. Модуль для настройки почтовой системы QMail. Сервер CVS. Модуль для настройки системы контроля версий (CVS, Concurrent Version System). Обычно используются разработчиками программного обеспечения. Сервер ProFTP. Модуль управления FTP-сервером. Сервер баз данных PostgreSQL. Модуль для управления мощным сервером БД PostgreSQL. SpamAssassin Mail Filter. Модуль для настройки службы для борьбы со спамом. Настроек достаточно много, а внешний вид страницы изображен на рис. 4.36. Конфигурация Sendmail. Модуль конфигурирования МТА (Mail Transfer Agent, почтовый агент) службы Sendmail (рис. 4.37). Эта служба по праву считается одной из самых сложных в настройке, и разработчики Webmin постарались облегчить жизнь системному администратору. Почтовый фильтр Procmail. Модуль для работы с Procmail. Сервер DHCP. Модуль для работы с DHCP-сервером. Настройкой этого сервера мы займемся чуть позже. Сервер SSH. Этот модуль позволяет произвести настройку SSH-сервера (рис. 4.38). Сервер сообщений Jabber. Модуль для настройки сервера мгновенных сообщений Jabber. Интересный аналог ICQ, позволяющий организовать в своей локальной сети систему обмена мгновенными сообщениями.


Установка Apache и Webmin gift

$н#

go - goakmnk)

113

•llllillll ^

Tuib •

4s* • "

;

ШН*{«

:

„H«dH»lN*wo* ..:Support

в

•i11•1 Ди&инл. мст^Я ФиДя жугмам дяж а

: 4

...

"MM""''

1

4-

lid

П

1

'JJI

|

"I

клал и фойэи* *>рявля! и»трой«1 WdMllur.

Рис. 4.33. Анализатор журналов Webalizer

t* E« »«, о»

РИС. 4.34. Управление сервером MySQL и базами данных

i

Ш 1


Глава 4

114

Рис. 4.35. Почтовые ящики пользователей

Рис. 4.36. Настройка SpamAssassin


Установка Apache и Webmin

РИС. 4.37. Настройка Sendmail

Рис. 4.38. Настройка SSH-сервера

115


Глава 4

116

с

Рис. 4.39. Настройка прокси-сервера Squid

Squid Analysis Report Generator. Модуль управления SARG. Анализатор журналов для прокси-сервера Squid. Результаты выводятся в виде графиков и цифровых данных, которые можно посмотреть через web-интерфейс. Менеджер списков рассылки Majordomo. Majordomo — система рассылок

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

прокси-сервером

(рис. 4.39).

Сервер WU-FTP. Модуль управления еще одним FTP-сервером. Файл-сервер Samba. С помощью этого модуля можно настроить Samba, который позволяет организовать доступ к дисковым ресурсам и принтерам сервера для компьютеров, работающих под управлением операционной системы Windows.


Установка Apache и Webmin

117

Сеть Этот раздел посвящен управлению сетью, сетевыми устройствами, защитой и ограничениями сетевых соединений (рис. 4.40). Как и в других разделах, здесь устанавливаются все модули пакета, даже если такой службы нет в системе. ADSL Client. Модуль, предназначенный соединений (если таковые вообще есть).

для

конфигурации

ADSL-

Kerberos5. Конфигурирование сервера сетевой аутентификации. Shorewall Firewall. Модуль для управления брандмауэром Shorewall. Межсетевой экран (firewall). Модуль для управления брандмауэром, использующим возможности ядра операционной системы Linux и пакета iptables (рис. 4.41). Позволяет добавлять, изменять и удалять правила фильтрации, временно приостанавливать действия выбранных правил и т. п. (рис. 4.42). Bandwidth Monitoring. Модуль для проверки сетевых соединений. РРР Dialup Client. Этот модуль позволяет настроить модемное соединение (рис. 4.43) и произвести тонкую подстройку для нужного соединения (рис. 4.44).

Рис. 4.40. Страница Сеть


Глава 4

118

РИС. 4.41. Страница настройки брандмауэра (верхняя часть)

L,°" Ы (OUTPUT1 ж *ирсдклте* ни вднв пршшш.

Цс1ИЧК« М - Г 1HM11~1-!N?UT Stip;i вУ invert is Haitian

„...

J

I*

Сеч* Ф I.-M,-

. . ,«

• • - : . ; .

:

.

.:-..-••

•:

'

! * « • • ; •

;

г . .«л»» u i u i -».- -.„-.». (a

'

"

IT iT i.T XT XT If

:

it ь ww«««ii new ,>-™.>4,BI HJMIUIU, Ш ж ; :

S«i&.-l all Invert »

:••••:

. •

i f

ttaliffl

i

айяйК-J Шкмтж на -ТУ кнопку i^nnr.T*' < « i i j i n e m i м дгЛс-шие пкииприпедеимиП «.цфч1)Т<"(ин He*veien<i[(t чкрнил. Вес

: .

(.'уамишушнис в шннмй момент гфяыи» буд)т «<^«нисиы и шмеиекы нияимн. Ha*«me m 4iy Bmrnty примле! hч;Г.р<к>- рышсирнкжкпий синфигурицнп к вхщмий вданный«смет. ;

R»W Fit»»* j

- j » J "*• Да <~ Н и OiipijKJiMT Оуает лн нсяскпжД -жран шлжшл njin ajupj-jju-ctrrtUM turn ист. Cllt k Ihio bunim bi с)ыг *U uitlinc fitewxU rule. «Ы .el up new (i>lc. Г<к a h o t inir*I Иц

Рис. 4.42. Страница настройки брандмауэра (нижняя часть)


Установка Apache и Webmin

hiwiix

С Ш «m biimm № Метр) а PPP connect»» m i n t ' « «t«ted dialer ClwifC ill» npinn Mi—uul whether OK «WT«*I ГРР RMMMtai i> f»ned л Ми* nmc ur Clicking thui butbm willutuiie Iht inoJcni aris:fK(t U> Vi>!( iviKm t i l>( (c-debslcd MnJ Ihe c<iniigurolK'n updnled

Рис. 4.43. Страница выбора модемного соединения

Рис. 4.44. Страница настройки модемного соединения

119


Глава 4

120

|..... •<.>:«

>v

;1

:

: 1

.•:.•••;::'гГ :. . ' :':.;

а вы n«i

ICC

fftf'iVfrfl ;•.•• •

НИ'!*.)

;t:r

!• ' I * * '

:•.:

гл-я : :

, .

•••

. . . • ;

: • •

1

pgjWj* • Н.кингог]' wmniv, чтчбн HwrHKiM>i4r!HOM»B'ev<:.i>it6HPCMHHTi.-p«i»UK-tpofl(

1

,ЙЙ*И?!*..'*!****Й:;]

Нижотж ил гг; кнопку Ирмшдет к t^KiJiKf twnnw SKIHLIP авнутиснноиу арчаску х

РИС. 4.45. Страница настройки служб Интернета

Рис. 4.46. Страница Настройка сети


Установка Apache и Webmin

121

Рис. 4.47. Страница Сетевые интерфейсы н. в» .»« s. н ш "««<

«

им. да.

имам

»«.^

;•«

Mm

i

Рис. 4.48. Страница Маршрутизация и шлюзы


122

.

Глава 4

Сервер РРР. Модуль, предназначенный для настройки dial-in-сервера — сервера входящих модемных соединений. Extended Internet Services. Модуль позволяет разрешить доступ извне для некоторых служб, работающих на сервере (рис. 4.45). idmapd daemon. Модуль для настройки почтового сервера. РРТР VPN Client. Модуль для настройки VPN-соединения (Virtual Private Network, виртуальная частная сеть) по стандарту Microsoft. Каталоги NFS. Модуль для управления сетевыми томами NFS. Сеть. Это особый подраздел. Здесь можно настроить сетевые соединения, маршрутизацию, DNS и вписать необходимые адреса в host-файл сервера (рис. 4.46). Сетевые интерфейсы. В этом модуле мы видим установленные в системе сетевые интерфейсы, их параметры, активны ли они в данный момент (рис. 4.47). Маршрутизация и шлюзы. Этот модуль позволяет настроить маршрутизацию на сервере (рис. 4.48). Клиент DNS. С помощью этого модуля настраиваются записи об используемых системой DNS-серверах. Адреса узлов. Модуль, позволяющий редактировать host-файл на сервере. IPsec VPN Configuration. Конфигурирование VPN-соединений по протоколу IPsec. РРТР VPN Server. Модуль для настройки VPN-сервера, работающего по протоколу РРТР. Клиент и сервер NIS. Модуль управления NIS-серверами. Туннели SSL. Модуль для настройки SSL-туннелей.

Оборудование Раздел отвечает в большей степени за работу с жесткими дисками в том или ином аспекте, но здесь же находится система управления временем, настройка сервера голосовой почты и работа с записывающими CD/DVDустройствами (рис. 4.49). Linux RAID. Модуль, отвечающий за создание и управление RAID-системой (Redundant Array of Independent Disks, матрица независимых накопительных дисков с избыточностью). Запись на компакт-диски. В этом модуле можно настроить записывающий CD/DVD-привод и при необходимости записать компакт-диск.


Установка Apache и Webmin

Рис. 4.49. Страница Оборудование

Рис. 4.50. Страница Системное время

123


Глава 4

124

Sh«w *twUu eT rictrei { г с щ о ^ т и IDE A (WOC WDSaOOJB-aFUAO) .*]

• I

••.,!

4

Рис. 4.51. Страница информации о состоянии жесткого диска

Рис. 4.52. Страница настройки GRUB


Установка Apache и Webmin

125

.

.

.

;-

-

:

.

:

:

:

Рис. 4.53. Страница настройки пункта меню GRUB

Fi*

fjdfi .$№• GQ guokmarf»

loot»

Htfo

© О G1 О С

ОС

РИС. 4.54. Страница Администратор разделов


126

Глава 4

Системное время. Этот модуль позволяет настроить системные дату и время, временную зону, а также организовать синхронизацию времени через Интернет (рис. 4.50). SMART Drive Status. Этот модуль позволяет просмотреть SMARTинформацию (Self Monitoring Analysis and Reporting Technology, технология самоконтроля анализа и отчета) жесткого диска, а также произвести тестирование оного (рис. 4.51). Принтеры. Модуль предназначен для установки и настройки принтеров, подключенных к этому компьютеру. Управление логическими томами. Модуль управления точками монтирования файловой системы. Загрузчик Linux (GRUB). Позволяет произвести установку и настройку загрузчика GRUB (GRand Unified Bootloader, великий универсальный загрузчик) (рис. 4.52). Можно добавлять, удалять и изменять пункты меню загрузчика (рис. 4.53). Разделы на локальных дисках. Модуль позволяет получить информацию о разделах жесткого диска и при необходимости совершать операции с разделами (рис. 4.54). Загрузчик Linux (LILO). Модуль позволяет произвести установку и настройку загрузчика LILO (Linux Loader, загрузчик Linux). Сервер голосовой почты. Модуль настройки сервера голосовой почты.

Кластер Этот раздел, изображенный на рис. 4.55, отвечает за работу кластера серверов, основанных на Linux.

Прочее Последний раздел, в котором собрано все то, что не вошло в остальные разделы (рис. 4.56). Как видите, система Webmin позволяет удаленно сотворить с сервером практически все, что угодно. Поэтому не рекомендуется разрешать к ней доступ из Интернета или, по крайней мере, принять серьезные меры по ограничению доступа к столь мощному инструменту посторонних личностей. И тем не менее я настаиваю на том, чтобы вы умели и могли конфигурировать сервер и его службы в текстовом режиме. Графика — это приятный бонус, которого может и не быть, а текстовая консоль всегда есть и доступна даже на самых низкоскоростных соединениях.


Установка Apache и Webmin • (•!-»

Dm

127

«•»••»• !-• а*

^

Рис. 4.55. Страница Кластер

••••••

-•<

Й

Ъ 1

Ш<ъйяш

^

two*.

-

,-*«.

€> О

о

о

к.

Рис. 4.56. Страница Прочее

- • -


Глава 5

Настройка общего доступа к дисковому пространству сервера - Samba В этой главе мы рассмотрим установку и настройку общего доступа к дисковому пространству сервера, настройку сервера в качестве арбитра одноранговой сети, организацию доступа по паролю, установку антивируса clamav и его настройку на автоматическую проверку файлов в общих папках. Наша задача — настроить для офиса систему файлообмена. Ее можно решить, по крайней мере, двумя способами, но поскольку наши клиенты — это компьютеры с операционной системой Windows, то в первую очередь решение будет максимально прозрачное и привычное для них. Так же мы должны продумать защиту Windows от вирусов. Для того чтобы разрешить доступ Windows-клиентам к дисковому пространству Linux-сервера, а при желании и к принтерам, подключенным к нему, необходимо установить пакет Samba.

Установка Samba Установка Samba проблем не вызывает — достаточно при инсталляции Linux выбрать соответствующий пакет. В нашем случае, так как сервер устанавливался по минимуму, установим его самостоятельно. Как обычно, есть дилемма — или устанавливаем из дистрибутива, или ищем свежую версию. В дистрибутиве пакет Samba находится на первом диске и называется samba-3.0.8-0.prel.3.i386.rpm. Однако сетевая файловая система вещь достаточно критичная к ошибкам, поэтому я бы все-таки рекомендовал поискать в Интернете более свежую версию. К примеру, вот тут — http://download.fedora.redhat.eom/pub/fedora/linux/core/updates/3/i386, или на сайте ALTLinux. Теперь устанавливаем: rpm -i 5 3ак. 1500

samba-3.0.10-l.fc3.i386.rpm


Глава 5

130

Файл

Правка

Цид

Терминал

Вкладки Справка

Рис. 5 . 1 . Настройка запуска сервера Samba при старте операционной системы

Все элементарно. Далее мы должны каким-то образом указать системе, что сервер должен запускаться при старте системы. Проще всего это сделать с помощью программы ntsysv, внешний вид которой изображен на рис. 5.1. Демон Samba называется smb, нам достаточно установить галочку и нажать на ОК. Запуск службы осуществляется командой: service smb start Запускаются сервисы SMB: Запускаются сервисы NMB:

[ OK [ OK

] ]

Как вы уже догадались, останавливается точно так же, только вместо s t a r t пишем stop. Однако до тех пор, пока мы не настроили сервер и не определили пользователей — нам не имеет смысла его запускать.

Файл конфигурации smb.conf Самое трудное, с чем можно столкнуться при настройке Samba, — это создание (или редактирование) файла конфигурации. Все файлы конфигурации находятся в каталоге /etc/samba. Вот список файлов, которые обычно содержатся в этом каталоге: • lmhosts — содержит список хостов и соответствующих им адресов;


Настройка общего доступа к дисковому пространству сервера - Samba

131_

• smbpasswd — содержит пароли пользователей Samba (в зашифрованном виде); • smbusers — файл, предназначенный для хранения списка пользователей, которым разрешен доступ к ресурсам Samba; • smb.conf — главный конфигурационный файл сервера. Примеры конфигурационных файлов, поставляемых с пакетом, находятся в каталоге examples. В большинстве случаев их можно использовать в качестве базы. В листинге 5.1 приведен пример конфигурационного файла, который используется на одном из серверов.

# This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example # Any line which starts with a ; (semi-colon) or a # (hash) # is a comment and is ignored. In this example we will use a # # for commentary and a ; for parts of the config file that you # may wish to enable # NOTE: Whenever you modify this file you should run the command "testparm" # to check that you have not many any basic syntactic errors. # #======================= Global Settings ============================== [global] # workgroup = NT-Domain-Name or Workgroup-Name workgroup = Kontora # server string is the equivalent of the NT Description field server string = Kontora Samba Server # This option is important for security. It allows you to restrict # connections to machines which are on your local network. The # following example restricts access to two С class networks and # the "loopback" interface. For more examples of the syntax see # the smb.conf man page hosts allow = 192.168.0.


132

Глава 5

# if you want to automatically load your printer list rather # than setting them up individually then you'll need this #

printcap name = /etc/printcap

#

load printers = yes

# It should not be necessary to spell out the print system type unless # yours is non-standard. Currently supported print systems include: # bsd, sysv, pip, lprng, aix, hpux, qnx printing = lprng # Uncomment this if you want a guest account, you must add this to /etc/passwd # otherwise the user "nobody" is used ;

guest account = pcguest

# this tells Samba to use a separate log file for each machine # that connects log file = /var/log/samba/%m.log # Put a capping on the size of the log files (in Kb). max log size = 0 # Security mode. Most people will want user level security. See # security_level.txt for details. security = user # Use password server option only with security = server or # security = domain ;

password server = <NT-Server-Name>

# Password Level allows matching of _n_ characters of the password for # all combinations of upper and lower case. ;

password level = 8

;

username level = 8

# You may wish to use password encryption. Please read # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation. # Do not enable this option unless you have read those documents encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd


Настройка общего доступа к дисковому пространству сервера - Samba # The following are needed to allow password changing from Windows to # update the Linux system password also. # NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above. # NOTE2: You do NOT need these to allow workstations to change only # #

the encrypted SMB passwords. They allow the Unix password to be kept in sync with the SMB password.

;

unix password sync = Yes

;

passwd program = /usr/bin/passwd %u

# Unix users can map to different SMB User names ;

username map = /etc/samba/smbusers

# Using the following line enables you to customise your configuration # on a per machine basis. The %m gets replaced with the netbios name # of the machine that is connecting ;

include = /etc/samba/smb.conf.%m

# Most people will find that this option gives better performance. # See speed.txt and the manual pages for details socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # Configure Samba to use multiple interfaces # If you have multiple network interfaces then you must list them # here. See the man page for details, interfaces = 192.168.1.0/24 # Configure remote browse list synchronization here #

request announcement to, or browse list sync from:

#

a specific host or from / to a whole subnet (see below) remote browse sync = 192.168.3.25 192.168.5.255

# Cause this host to announce itself to local subnets here remote announce = 192.168.1.255 192.168.2.44 # Browser Control Options: # set local master to no if you don't want Samba to become a master # browser on your network. Otherwise the normal election rules apply ;

local master = no

# OS Level determines the precedence of this server in master browser

133


134

Глава 5

# elections. The default value should be reasonable ;

os level = 33

# Domain Master specifies Samba to be the Domain Master Browser. This # allows Samba to collate browse lists between subnets. Don't use this # if you already have a Windows NT domain controller doing this job ; domain master = yes # Preferred Master causes Samba to force a local browser election on #startup and gives it a slightly higher chance of winning the election ;

preferred master = yes

# Enable this if you want Samba to be a domain logon server for # Windows95 workstations. ; domain logons = yes # if you enable domain logons then you may want a per-machine or # per user logon script # run a specific logon batch file per workstation (machine) ;

logon script = %m.bat

# run a specific logon batch file per username ;

logon script = %U.bat

# All NetBIOS names must be resolved to IP Addresses # 'Name Resolve Order' allows the named resolution mechanism to be # specified the default order is "host lmhosts wins beast", name resolve order = wins lmhosts beast # Windows Internet Name Serving Support Section: # WINS Support — Tells the NMBD component of Samba to enable it's WINS Server wins support = yes # WINS Server — Tells the NMBD components of Samba to be a WINS Client # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both ; wins server = w.x.y.z # WINS Proxy — Tells Samba to answer name resolution queries on # behalf of a non WINS capable client, for this to work there must be


Настройка общего доступа к дисковому пространству сервера - Samba # at least one ;

135

WINS Server on the network. The default is NO.

wins proxy = yes

# DNS Proxy — tells Samba whether or not to try to resolve NetBIOS names # via DNS nslookups. The built-in default for versions 1.9.17 is yes, # this has been changed in version 1.9.18 to no. dns proxy = no # Case Preservation can be handy - system default is _jio_ # NOTE: These can be set on a per share basis ;

preserve case = no

;

short preserve case = no

# Default case is normally upper case for all DOS files default case = lower # Be very careful with case sensitivity — it can break things! case sensitive = no client code page = 866 character set = koi8-r printer driver file=/home/samba/hpljl200/printers.def #============================ share Definitions ========================= [homes ] comment = Home Directories browseable = no writable = yes valid users = yura katya lena alst [coinm] comment = Common place path = /home/samba/comm valid users = root yura katya lena alst public = no writable = yes printable = no create mask = 0775 directory mask= 0775 force group = office [hp] comment = HP LaserJet 1200 Series PCL6


136

Глава 5

path = /var/spool/samba printer = lp public = no printable = yes printer driver=HP LaserJet 1200 Series PCL6 printer driver

location=\\%h\printer$

[printer$] path=/home/samba/hplj1200 public=yes brows eable=yes # This one is useful for people to share files [tmp] comment = Temporary file space path = /tmp read only = no public = yes

Как видно из примера, конфигурационный файл разбит на разделы. Каждый раздел начинается с заголовка, такого как [global], [homes] и т. д. Структурой конфигурационный файл сильно напоминает INI-файлы операционной системы Windows. Символы # и • , используются в качестве признаков комментария.

Секция [global] Секция [global] назначает переменные, которые Samba будет использовать для определения доступа ко всем ресурсам. Рассмотрим переменные секции [global].

О workgroup = Kontora. Переменная workgroup содержит имя Windows NTдомена или имя рабочей группы, к которой будет принадлежать сервер Samba. П netbios name = server. Переменная netbios name задает имя сервера для отклика по протоколу NetBIOS. He делайте его таким же, как и имя рабочей группы. О server s t r i n g = Kontora Samba Server. Переменная server string COдержит описание сервера (комментарий). П hosts allow = 192.168.1. Переменная hosts allow содержит список IP-адресов компьютеров и сетей, разделенных пробелом, которые имеют право подключаться к ресурсам вашего сервера.


Настройка общего доступа к дисковому пространству сервера - Samba

137

П printing ш lpmg. Переменная printing определяет тип системы печати; Поддерживаются: bsd, sysv, pip, lprng, aix, hpux, qnx.

П guest account = pcguest. Переменная используется, если вы хотите разрешить гостевой вход на сервер. Соответствующего пользователя также придется завести в Linux-системе (или отобразить на реального пользователя типа nobody через файл /etc/samba/smbusers). Однако, по соображениям безопасности, не рекомендуется разрешать гостевой вход. • log f i l e = /var/iog/samba/%m.iog. Переменная log f i l e указывает серверу создавать файлы журналов отдельно для каждого пользователя, заодно указывает каталог, где они будут создаваться. П max log size = о. Переменная max log size определяет максимальный размер файла журнала (0 — без ограничений). П security = user. Переменная security используется для задания уровня безопасности системы; обычно применяется уровень user, также используют уровни share, server И domain. • password server = <NT-Server-Name>. Переменная password server ИСПОЛЬЗуеТСЯ ТОЛЬКО COBMeCTHO С security = server ИЛИ security = domain; задает имя сервера паролей. П password level И username level. Переменные password level И username level позволяют задать количество символов пароля и имени пользователя. • encrypt passwords = yes. Переменная encrypt passwords позволяет использовать пересылку паролей пользователей в зашифрованном виде; если задать encrypt passwords = no, то пароли пользователей будут пересылаться в незашифрованном виде, что очень плохо с точки зрения безопасности. • smb passwd f i l e = /etc/samba/smbpasswd. Переменная smb passwd f i l e задает путь и имя файла, содержащего пароли пользователей; поскольку принципы хранения пароля в Linux не позволяют его расшифровать, приходится создавать отдельный файл паролей для пользователей Samba. • local master = yes. Переменная local master позволяет Samba стать мастер-браузером для сети, в котором он находится. • preferred master = yes. Переменная preferred master позволяет серверу сразу же при запуске устроить перевыборы мастера с наибольшим шансом для себя. (

Замечание

)

Протокол NetBIOS, в принципе, предназначен для одноранговой сети, т. е. такой сети, где все компьютеры равноправны. Тем не менее в NetBIOS преду-


138

Глава 5 смотрен специальный компьютер, называемый мастер (master), который ведет список компьютеров, подключенных к сети, их разделяемые ресурсы и вновь подключаемые компьютеры. Именно от мастера вновь подключающиеся компьютеры получают список компьютеров в сети и их доступные ресурсы.

• dns proxy = yes. Разрешает серверу сопоставлять NetBIOS-имена с IPадресом с помощью DNS. П username map = /etc/samba/smbusers. Переменная username map ПОЗВОляет задать файл пользователей, в котором ставится соответствие имя Linux-пользователя имени пользователя Samba; обычно в качестве имени пользователя Samba используется имя Linux-пользователя. О

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192. Данная

переменная используется для тонкой настройки сетевых параметров, позволяющих несколько улучшить производительность сервера. • interfaces = 192.168.1.0/24. Переменная interfaces указывает серверу, с какой сетевой картой (сетью) он имеет дело; используется в том случае, если на сервере установлено несколько сетевых карт из разных локальных сетей. П name resolve order = wins lmhosts beast. Переменная name resolve order определяет порядок получения имен. • wins support = yes. Переменная wins support указывает, что сервер Samba выступает в роли WINS-сервера. П wins server = w.x.y.z. Переменная wins server определяет IP-адрес WINS-сервера; если установлено wins support = yes, то использование переменной wins server запрещено. • default case = lower. Переменная default имен файлов, создаваемых на ресурсах Samba.

case определяет регистр

• case s e n s i t i v e = по. Переменная case s e n s i t i v e определяет чувствительность к регистру символов. П c l i e n t code page = 866. Переменная c l i e n t code page задает кодовую страницу клиента; для DOS-клиента — 866. • character set = koi8-r. Переменная character set задает набор символов, используемых сервером. • p r i n t e r driver file=/home/samba/hpljl200/printers.def. p r i n t e r driver f i l e определяет имя драйвера принтера.

Переменная

П time server = true. Эта переменная предписывает серверу показывать Windows-клиентам, что он выступает для них в роли сервера точного времени.


Настройка общего доступа к дисковому пространству сервера - Samba

139

Секция [homes] Секция [homes] позволяет удаленным пользователям получить доступ к своим домашним каталогам на Linux-машине. Для этого пользователь должен быть зарегистрирован в Linux-системе. Рассмотрим переменные секции [homes]. П comment = Home Directories. Эта переменная просто комментирует содержимое данной секции. П browseable = по. Переменная browseable запрещает просматривать каталог посторонним пользователям. • writable = yes. Переменная writable разрешает записывать в домашний каталог. • valid users = yura vasya a l s t . Переменная valid users задает СПИСОК пользователей, для которых разрешен доступ к своим домашним каталогам; в принципе, параметр не обязательный.

Секция [comm] Секция [comm] отвечает за каталог, доступный всем пользователям Samba. Это своего рода аналог FTP, куда могут записывать и откуда могут читать пользователи. Разберем подробнее данную секцию. • comment = common place. Эта переменная просто комментирует содержимое данной секции. • path = /home/samba/comm. Переменная path определяет каталог, который используется для совместного доступа. П valid users = root yura katya alst. Переменная valid users СОДер-

жит список пользователей, которым разрешен доступ к общему ресурсу. О public = no. Запрещает остальным пользователям получать доступ к данному ресурсу. • writable = yes. Разрешает запись в общий ресурс. • p r i n t a b l e = no. Указывает, что разделяемый ресурс не является печатающим устройством. П create mask = 0775. Маска для создания файлов на разделяемом ресурсе. • directory mask = 0775. Маска для создания каталогов на разделяемом ресурсе. • force group = office. Переменная force group определяет, что файлу, создаваемому или копируемому на общий ресурс, принудительно задается принадлежность к группе office, для того чтобы любой пользователь, который входит в данную группу, мог изменить или удалить файл.


140

Глава 5

Секция [imp] Секция [tmp] предназначена для создания разделяемого ресурса, в который могли бы записывать все пользователи. Как видно из приведенного далее описания, она отличается от секции [comm] отсутствием списка пользователей и значением переменной public. comment = Temporary file space path = /tmp read only = no public = yes

Пароли пользователей Сервер Samba подразумевает использование нескольких типов безопасности. В частности, переменная encrypt password определяет, какой механизм авторизации будет использован. Если переменной encrypt password присвоено значение по, то авторизация пользователей производится исходя из учетных записей Linux, хранящихся в файлах /etc/passwd и /etc/shadow. При таком типе авторизации пользователя пароли передаются по сети в незашифрованном виде, что несколько упрощает настройку, но резко снижает безопасность системы. В дополнение к этому, такой тип авторизации требует изменений в системном реестре в Windows 95, Windows 98, Windows NT. Далее приведены изменения, которые необходимо внести в системный реестр: • Windows 95 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "EnablePlainTextPassword"=dword:00000001

• Windows 98 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services WxD\VNETSUP] "EnablePlainTextPassword"=dword:00000001

• Windows NT tHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters] "EnablePlainTextPassword"=dword:00000001

• Windows 2000 [HKEY_LOCAL_MACHINE\SYSTEMXCurrentControlSet\Services\LanmanWorkStatio n\Parameters] "EnablePlainTextPassword"=Data: 0x01

В том случае, если переменной encrypt password присвоено значение yes, авторизация пользователя происходит с использованием файла /etc/samba/smbpasswd, и передача паролей происходит в зашифрованном виде.


Настройка общего доступа к дисковому пространству сервера - Samba

Почему для использования шифрованных паролей необходимо создавать отдельную базу паролей пользователей Samba? Все дело в методе хранения пароля. Windows-системы хранят зашифрованный пароль, и при аутентификации пользователя производят сверку паролей. Linux не хранит пароль как таковой. В файле shadow хранится так называемый хэш (hash) пароля, а в последних версиях Linux — контрольная сумма пароля, рассчитанная по алгоритму MD5. И при аутентификации пользователя сравниваются хэши паролей. Особенность хэша — он необратим, т. е. зная хэш невозможно по нему восстановить пароль. Поэтому приходится отдельно для Samba заводить базу паролей пользователей. Для администратора системы это представляет некоторое неудобство — еще один повод забыть прописать пользователя, а с другой стороны — за все надо платить.

Добавление пользователей Samba Для добавления пользователей в файл /etc/samba/smbpasswd необходимо наличие самого файла /etc/samba/smbpasswd. Должна также существовать учетная запись пользователя в Linux-системе. Если эти условия соблюдены, следует: 1. Воспользоваться программой smbpasswd для создания учетной записи: smbpasswd -a user_name

2. Активировать учетную запись: smbpasswd -e user_name

Эту операцию придется произвести с каждым пользователем. Существуют сценарии, позволяющие перебросить пользователей из файла passwd в файл smbpasswd. Но они только перебрасывают пользователей, а пароли для них все равно придется заводить вручную. Еще один недостаток этих сценариев — после них придется удалять пользователей типа nobody, root, news и т. п. Для подключения ресурсов, предоставляемых сервером Samba, используются команды smbciient и smbmount. Обо всех возможностях этих команд можно узнать из соответствующих man-страниц.

Принтеры Все принтеры, которые определены в файле /etc/printcap, становятся доступными после того, как вы добавите следующую секцию в конфигурационный файл smb.conf: [printers] path = /var/spool/lpd writeable = no guest ok = no printable = yes

141


142

Глава 5

Использование ресурсов Samba Хотя сервер Samba позиционируется как средство доступа Windowsклиентов к ресурсам Linux-систем, тем не менее, в пакете есть средства для того, чтобы Linux-компьютеры могли также просматривать и подключать соответствующие ресурсы. И что особенно приятно, доступ к ним можно получить и в том случае, когда сервером является машина с Windows. Программа-клиент для Linux включена в дистрибутив Samba и называется smbclient. Она обеспечивает FTP-подобный интерфейс командной строки. Также существует пакет samba-client, который позволяет подключать ресурсы С ПОМОЩЬЮ стандартной команды mount/umount ИЛИ smbmount/smbumount. Для mount/umount нужно указывать параметр - t smbf s. Для того чтобы увидеть доступные ресурсы, выполните команду: /usr/bin/smbclient -L host

где host — это имя машины, ресурсы которой вас интересуют. Данная команда вернет список имен доступных сервисов. Пример команды smbclient: smbclient -L ziga Server time is Sat Aug 17 15:58:27 2005 Timezone is UTC+2.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIGA] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename

Type

Comment

ADMIN$

Disk

Remote Admin

public

Disk

Public

C$

Disk

Default share

HP

Printer

HP6L

This machine has a browse list: Server

Comment

HOP ZIGA

Samba 3.0.Ip8


Настройка общего доступа к дисковому пространству сервера - Samba

143

Для использования сервиса выполните следующую команду: /usr/bin/smbclient service <password>

где service — имя компьютера и ресурса. Например, если вы пытаетесь обратиться к каталогу, который доступен под именем public на машине, названной ziga, то имя ресурса представляет собой \\ziga\public. Поскольку в языке С (а точнее в языке shell) обратный слэш является спецсимволом, то практически необходимо ввести такую строку: /usr/bin/smbclient WWzigaWpublic <mypasswd> где <mypasswd> — ваш пароль. В результате вы должны получить приглашение smbclient: smb: \>

Для получения справки необходимо ввести h и нажать клавишу <Enter>: smb: \> h

Is

cd

get

dir mget

led put

mput

pwd rename

more

mask

del

rm

md

rmdir

prompt

translate

lowercase

rd print

mkdir recurse

printmode

queue

cancel newer setmode

stat archive help

quit tar

q blocksize !

exit tarmode

smb: \>

Как видите, практически все команды дублируют команды FTP-клиента. Утилита smbclient многое позволяет, однако она тяжела в использовании. Если от Windows-сети нужен только доступ к дисковым ресурсам, рекомендуется воспользоваться пакетом Smbfs. В пакет samba-client входят утилиты smbmount и smbumount, которые работают подобно mount и umount. Также есть графическая утилита gnomba — подобная утилите Сеть в Windows.

Утилиты Как и у других подобных проектов, для пакета Samba существует достаточно много сторонних утилит, позволяющих упростить конфигурирование и доступ к ресурсам. Вот список утилит и программ, в той или иной мере относящихся к пакету Samba: П smbstatus — утилита для мониторинга Samba; • SWAT — инструмент для конфигурирования Samba через web-интерфейс; • smbpasswd — управление паролями Samba;


Глава 5

144

П testparm — проверка конфигурационного файла; • testprns — проверка конфигурации принтера; • smbtar — утилита резервного копирования; • smbclient — клиент командной строки; • Ksamba — KDE-программа, предназначенная для конфигурации; О Smbedit — \Ут32-приложение для правки конфигурационного файла Samba; О Webmin — универсальная программа конфигурации через web-интерфейс, в том числе и Samba; • GSMB — графический интерфейс для утилиты smbpasswd; • SambaSentinel — графический интерфейс для утилиты smbstatus.

Webmin Как уже упоминалось в предыдущей главе — Webmin имеет модуль управления сервером Samba. Внешний вид модуля изображен на рис. 5.2.

Создание итого файлового весука

Соалпмис нового ресурс» печя

О м ш . «rmurn fCTrpc. ITCT.I»

СЧишиа» »и»*

стд»

Птчхшти! «

НАЖМИТЕ Н4 tiy книиху дл* псршапускн % | А(ч>таюших сержри* Samha. Эта актшяшруст «се шмомнил гекущп насцижк. ЭТА ;ini6wc ^чюллнеши с к-*«рм:рии, штиму если пы не шткгс нрямешпь и.шежниа лряып сейцш, иояпжлнтс 1 мялуту, и S

Рис. 5.2. Модуль управления сервером Samba


Настройка общего доступа к дисковому пространству сервера - Samba

145

Как мы видим из рисунка, мы можем остановить сервер и перегрузить его. Мы подобную операцию уже делали ранее, с помощью консоли. Все возможности я не буду описывать, остановлюсь только на основных. Как видно на рисунке — в верхней части находится таблица ресурсов, доступных для пользователей Samba. Чтобы добавить новый ресурс, нажимаем на соответствующую ссылку и в новом окне (рис. 5.3) заполняем поля. я» в* JRedHel, Ife.

Рис. 5.З. Добавление разделяемого ресурса на сервере Samba

Следующий важный для нас модуль — Сеть Windows (рис. 5.4). Как видно из рисунка, здесь мы определяем имя рабочей группы, имя и описание сервера, безопасность, службы и т. п. Аутентификация — этот модуль также очень важен для нас. Здесь мы определяем, шифруются пароли или нет, можно назначить свою программу аутентификации, разрешить отображение имен пользователей Linux на Windows-имена (рис. 5.5). Следующий момент — облегчение жизни администратора. Допустим, у вас в системе уже есть некоторое количество пользователей, и после установки Samba необходимо каждого пользователя прописать в базе пользователей.


146

Глава 5

6 Q O C

О О

Рис. 5.4. Настройка сетевых параметров сервера Samba t* у- *> в — .

I», a»

Рис. 5.5. Аутентификация сервера Samba


Настройка общего доступа к дисковому пространству сервера - Samba

147 •

'••

e ооо с

' ,

••

•.

:

:

;

«

;

'

О О

Длниа» форм* пч)яолл«тВ*14СНнч>1Ч)Н1нр жап, ещккк rvuimwnrw* Unix н Sanh«, Бели Я 11ИЩ fipplU». T» ПНОС •юлъинагвдеА нснояыуени orwnMtwd спи '<нмкыгыо«и№.мАипаршмй. The !м1Ы uwa not i> funvtit van cunUim uicrnИЛК4. UIDl, ^TOIIp l i t wi)>r«Aud*Ouii

|,Nl|D

1 Ш пилкам 1сл«а>4яв

Р" Довмикипс кнммн аотъаилынЛ S*rah. из списм iKMtMowrKMI Unix

« m "Ирин* к I* Ifai пароля <* I kittnuawrii. аашмй iiepwn. f

! Den»

Рис. 5.6. Настройки переноса Linux-пользователей в базу данных пользователей Samba

Ы

L

^

Г I |1 ' П И !•! 1ППП I I «!• II I ЦИ11 1Щ-11Ц I l l l l ^ l l l

linillllMl

I Hill 1

Рис. 5.7. Перенос Linux-пользователей в базу данных пользователей Samba


148 и.

i ..i

Глава 5 v,..,

(S

t,,,

|

к

ш ,

IM,

н«„

'

••• •..',

l-f »«км'шмш,м««|>,|

Рис. 5.8. Изменение пароля пользователя Samba

Это достаточно трудоемко, но есть модуль, позволяющий это сделать быстро (рис. 5.6). При этом система покажет, какие пользо��атели были пропущены, а какие перенесены (рис. 5.7). Так же можно отредактировать учетную запись пользователя Samba, к примеру, изменить пароль (рис. 5.8). Еще можно сделать так, что, в дальнейшем, в пользователи Samba автоматически попадали все вновь создаваемые Linux-пользователи. Таковы базовые возможности по настройке сервера Samba. Для начала вам этого хватит, а в дальнейшем — изучайте документацию.

Антивирусные программы, clamav Антивирусов для Linux уже достаточно много. В частности, два ведущих российских производителя антивирусных программ выпускают DrWEB и Kaspersky AV для Linux. Однако это платные антивирусы, а одна из основных задач, стоящих перед нами, — потратить как можно меньше денег.


Настройка общего доступа к дисковому пространству сервера - Samba

149

Признанным лидером среди Open Source антивирусов является clamav (Clam AntiVirus). Официальная страница — www.clamav.net. Самое интересное, что существует версия и для Windows. Что же мы имеем? • Лицензия GNU General Public License. П Переносимый POSIX-совместимый код, в частности, реализации под Windows и Linux. • Проверка файлов "на лету" (под Linux и FreeBSD), встроенная поддержка mbox, maildir и raw-форматов почтовых сообщений. П Поддержка проверки архивов (встроенная поддержка форматов RAR (2.0), ZIP, GZIP и BZIP2). О Утилита обновления баз вирусов с поддержкой цифровой подписи. Как видим — достаточно "вкусный" набор для бесплатного антивируса, проверка файлов и почты — то, что нужно для нас. На странице загрузок есть несколько версий сборок под различные дистрибутивы, в том числе и для Fedora Core (http://crash.fce.vutbr.ez/crash-hat/3/clamav/). Скачиваем пакет, устанавливаем и переходим к настройке и тестированию антивируса, clamav не имеет графического интерфейса, однако для наших целей это не важно. Установка производится как обычно — с помощью утилиты rpm. После установки пакета необходимо почитать документацию по его настройке. На самом деле сделать нужно следующее: во-первых, проверить наличие конфигурационных файлов /etc/clamd.conf и /etc/freshclam.conf. Первый отвечает за антивирусную программу, второй — за обновление антивирусных баз из Интернета. По умолчанию все нормально настроено, и изменять эти файлы нет необходимости. Во-вторых, необходимо прописать сам антивирус и модуль его обновления в таблицу инициализации, чтобы они запускались при старте системы. Делается это двумя командами: /sbin/chkeonfig —level 2345 clamd on /sbin/chkeonfig —level 2345 freshclam on

Следующий момент — запускаем демон обновления базы, а он при наличии интернет-соединения самостоятельно обновит базы антивирусной программы: service freshclam start

И последнее, запускаем сам антивирус: service clamd start Starting Clam AV daemon:

[ OK ]

Все! Теперь переходим к проверке функционирования. Для этого в комплекте с антивирусом идет несколько файлов, содержащих вирусы. Проверка осуществляется так: /usr/bin/clamdscan -r /usr/share/doc/clamav-О.83


150

Глава 5

Программа clamdscan позволяет проверить указанный каталог рекурсивно. Для того чтобы файлы системы проверялись "на лету", необходимо дополнительно установить модуль Clamuko или Samba Scan. Первый можно найти на сайте www.dazuko.org, а второй на www.openantivirus.org/projects.phptsamba-vscan. И еще, clamav проверяет так же и заархивированные файлы, но архивы RAR — только второй версии. По лицензионным соображениям поддержка версии 3 архива не включена. Если вам очень нужно, то советую обратиться к статье "Clamav и проверка RAR архивов версии 3" на http://mcmcc.bat.ru/ clam_rar3.html Copyright (С) 2004 МсМСС. Правда, придется самостоятельно собирать из исходных текстов пакет, но это не так сложно, как кажется. На этом все, переходим к следующей главе.


Глава 6

Настройка общего доступа к дисковому пространству сервера - FTP-сервер FTP предназначен для передачи файлов в сети Интернет. Он несколько устарел, частично функции передачи файлов взял на себя HTTP, но, несмотря на это, будет использоваться еще долгое время. FTP, в отличие от большинства других протоколов, для пересылки файла использует два TCP-соединения. Одно соединение для передачи файла, а второе — для управления процессом передачи. Порт 20 предназначен для пересылки данных, а порт 21 для управляющего соединения. FTP может использовать как TCP-, так и UDP-соединение.

Программное обеспечение Для работы по протоколу FTP необходимо две программы — сервер и клиент. Клиентских программ очень много: от простейших, работающих в командной строке, до имеющих весьма развитый графический интерфейс. Любой современный браузер способен выступать в роли FTP-клиента. Поэтому на клиентских программах останавливаться не будем, а перейдем сразу к программному обеспечению FTP-сервера.

Пакет vsftp В последние дистрибутивы, в качестве стандартного FTP-сервера, входит vsftpd (Very Secure FTP Daemon), позволяющий обслуживать как анонимные запросы, так и запросы от пользователей, зарегистрированных на сервере и имеющих полноценный доступ к его ресурсам. Пакет называется vsftpd-2.0.1-5.i386.rpm и находится на третьем диске дистрибутива. Устанавливается он как обычно, при помощи утилиты rpm. При установке пакета автоматически создается каталог, который будет корневым при анонимном


152

Глава 6

подключении, — /var/ftp с необходимыми правами доступа. Владельцем этого каталога является пользователь root. Для конфигурирования используются один основной файл и несколько дополнительных.

Файл etc/vsftpd/vsftpd.conf Это основной конфигурационный файл, его пример приведен ниже. # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options . # Please read the vsftpd.conf.5 manual page to get a full idea of # vsftpd's capabilities. # # Allow anonymous FTP? (Beware - allowed by default if you comment this # out). anonymous_enable=YES # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this, to # 022, if your users expect that (022 is used by most other ftpd's) local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This # only has an effect if the above global write enable is activated. Also, # you will obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they


Настройка общего доступа к дисковому пространству сервера - FTP-сервер # go into a certain directory. dirmessage_enable=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from__port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned # by a different user. Note! Using "root" for uploaded files is not # recommended! # chown_uploads=YES # chown_us ername=whoever # # You may override where the log file goes if you like. The default is # shown below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which # the ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. # Not recommended for security (the code is non-trivial). Not enabling # it, however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact # ignore the request. Turn on the below options to have the server

153


154

Глава 6

# actually do ASCII mangling on files when in ASCII mode. # Beware that turning on ascii_download_enable enables malicious remote # parties to consume your I/O resources, by issuing the command "SIZE # /big/file" in ASCII mode. # These ASCII options are split into upload and download because you may # wish to enable ASCII uploads (to prevent uploaded scripts etc. from # breaking),without the DoS risk of SIZE and ASCII downloads. ASCII # mangling should be on the client anyway.. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. # Apparently useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may specify an explicit list of local users to enroot() to their # home directory. If chroot_local_user is YES, then this list becomes a # list of users to NOT chroot(). #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin Is. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" # assume the presence of the "-R" option, so there is a strong case for # enabling it. #ls_recurse_enable=YES pam_service_name=vsftpd userlist_enable=YES #enable for standalone mode listen=YES tcp_wrappers =YES


Настройка общего доступа к дисковому пространству сервера - FTP-сервер

155_

Разберем конфигурационные параметры. П anonymous_enabie=YES. Разрешает или запрещает доступ к серверу без авторизации. Для нашего сервера желательно устанавливать в NO. В такой конфигурации клиенты получат доступ к любым каталогам файловой системы, для которых такой доступ разрешен, исходя из прав соответствующих локальных пользователей. Это могут быть как домашние каталоги, так и системные каталоги. Если в настройках vsftpd разрешена запись (см. ниже), клиенты получат и все права на запись, которыми располагают эти пользователи. • iocai_enabie=YES. FTP-сервер.

Разрешает локальным пользователям использовать

• write_enabie=YES. Разрешает или запрещает пользователям записывать файлы по FTP. Так же можно ограничивать доступ посредством прав на файлы и каталоги. •

anon_upload_enable=YES И anon_mkdir_write_enable=YES. Если ЭКТИВИ-

ровать эти два параметра, анонимные пользователи смогут записывать файлы и создавать новые каталоги. Поскольку нам этого не нужно, то оставляем, как есть. • xferiog_enabie=YES. Разрешает вести службе журнал: кто и какие файлы скачивал или загружал на сервер. • connect_from_port_20=YES. Определяет порт, по которому работает FTPсервер. • banned_email_file=/etc/vsftpd.banned_email. ложен файл, содержащий текст приветствия.

Определяет, Где распо-

О chroot_list_enable=YES И chroot_list_file=/etc/vsftpd.chroot_list.

Позволяет ограничить возможность пользователей, зарегистрированных локально, перемещаться по дереву каталогов. При этом процесс, работающий с клиентом, будет выполняться в изолирова��ной среде, и пользователь будет иметь доступ лишь к своему домашнему каталогу и его подкаталогам. • pam_service_name=vsftpd. Указывает, какой модуль аутентификации используется при авторизации пользователя. • userlist_enable=YES. Разрешает использование списка пользователей.

Файл etc/vsftpd.ftpusers Этот файл содержит список пользователей, которым ЗАПРЕЩЕНО пользоваться FTP-сервером. Обычно это следующие системные пользователи: root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody.


156

Глава 6

Файл etc/vsftpd.user_list Если переменная в конфигурационном файле имеет значение useriist_deny=NO, в этом файле содержатся список пользователей, которым разрешен доступ к FTP-серверу. Если же userlist_deny=YES (именно такое значение по умолчанию), то файл содержит список пользователей, которым запрещено пользоваться FTP-сервером.

Пакет wu-ftp Программный пакет wu-ftp (Washington University at Saint Louis FTP daemon) написан в Вашингтонском университете. Ранее поставлялся вместе с дистрибутивом, сейчас от него отказались. Тем не менее многие продолжают использовать этот пакет и в Webmin есть его поддержка. Для настройки пакета используют несколько конфигурационных файлов.

Файл ftpaccess Этот конфигурационный файл используется для определения прав доступа. Здесь определяется, какие и сколько пользователей могут получить доступ к серверу, а также важные элементы настройки безопасности. Рассмотрим некоторые конфигурационные параметры, используемые в этом файле. Управление правами доступа: • autogroup <имя_группы> <класс> . . . — в том случае, если анонимный пользователь является членом указанного класса, то сервер использует заданную группу, что позволяет анонимным пользователям из разных классов получать доступ к различным наборам каталогов; •

deny

<шаблон_адресов>

<файл_с_текстом_сообщения> — запретить ДОС-

туп клиентов с указанного адреса с выдачей текста сообщения; • guestgroup <имя_группы> . . . — если реальный пользователь является членом указанной группы, то с ним поступают так же, как с анонимным. Вместо имени можно использовать номер группы, перед которым надо поставить знак процента, или интервал номеров, или звездочку для всех групп; •

guestuser <имя_пользователя> ... —

аналогично guestgroup, НО ИС-

пользуется имя реального пользователя; •

realgroup <имя_группы> ... — guestuser;

инвертирует действие guestgroup И

realuser <имя_пользователя> ... — инвертирует действие guestgroup И guestuser;

• defumask umask [ <класс> ] — задание umask — параметра применяемого при создании файлов;


Настройка общего доступа к дисковому пространству сервера - FTP-сервер

157

• timeout accept <секунд> — сколько ожидать входного соединения для передачи данных (PASV); О timeout connect <секунд> — сколько ожидать установления выходного соединения для передачи данных (PORT); • timeout data <секунд> — максимальный период неактивности пользователя при передаче данных; • timeout idle <секунд> — сколько ожидать следующей команды; • timeout maxidie <секунд> — поскольку клиент имеет возможность установить i d l e самостоятельно, параметр maxidie позволяет установить верхний предел для клиента; О timeout RFC931 <секунд> — максимальное время ожидания ответа для протокола ident; •

limit-time { * | anonymous | guest } <минут> — ограничение Време-

ни сессии. Реальные пользователи не ограничиваются никогда; • l o g i n f a i l s <число> — после указанного числа неудачных попыток зайти на сервер, сделать запись в журнале и разорвать соединение. Выдача сообщений клиенту: О

greeting { full

brief

terse

text <строка> } — определяет,

какой текст будет выдаваться в строке приветствия: • full — имя хоста и версия сервера; • brief — имя хоста; • t e r s e — ничего, кроме факта готовности к обслуживанию; • text — произвольная строка текста; • banner <имя_файла> — определяет текст сообщения, выдаваемого клиенту до ввода имени и пароля; • hostname <имя_хоста> — определяет имя хоста по умолчанию (имя локального хоста); О email <адрес> — адрес электронной почты администратора; О message <имя_файла> { LOGIN | СШ)=<имя_каталога> { <класс> } } —

содержимое файла выдается клиенту при входе или смене каталога; •

readme

<имя_файла> { LOGIN [ CWD=<имя_каталога>

{ <класс>

} } —

при входе или смене каталога сервер информирует клиента о наличии указанного файла и дате создания последней модификации. Журнализация: О log commands список_типов — записывать в журнал все команды клиента, где список_типов — список через запятую слов r e a l , guest и anonymous;


158

Глава 6

О log transfers список_типов список_направлений — записывать В Журнал пересылки файлов, где списоктипов — список через запятую слов real, guest И anonymous; список_направлений — СПИСОК через запятую СЛОВ incoming И outbound; П log security список_типов — записывать в журнал нарушения правил безопасности, где список_типов — список через запятую слов r e a l , guest И anonymous; • log syslog — перенаправлять сообщения о пересылках в syslog вместо файла xferlog; О log sysiog+xferlog — направлять сообщения о пересылках в syslog и файл xferlog. Виртуальные серверы: • daemonaddress <1Р-адрео — использовать для соединения только указанный адрес; • v i r t u a l <1Р-адрес> { root | banner | logfile } <имя_файла> — ОПределить соответственно корень файловой системы, файл, содержащий баннер приветствия, и журнал для указанного виртуального сервера; • v i r t u a l <1Р-адрес> { hostname | email } <строка> — определить ИМЯ хоста (отображаемое в приветствии) и адрес администратора для указанного виртуального сервера; • v i r t u a l <1Р-адрео private — закрыть анонимный доступ по указанному адресу; • v i r t u a l <1Р-адрес> incmail <етаИ-адрес> — КОГО извещать В случае анонимной загрузки файлов; • v i r t u a l <1Р-адрес> mailfrom <етаИ-адрес> — КЭКОЙ обратный адрес подставлять при рассылке сообщений об анонимной загрузке файлов; П defaultserver { deny | allow } доступ разрешен всем;

<имя_пользователя> — ПО умолчанию

• defaultserver private — закрыть анонимный доступ; • defaultserver incmail <ета±1-адрес> — КОГО извещать В случае анонимной загрузки файлов; • defaultserver mailfrom <етаИ-адрес>— какой обратный адрес ПОДставлять при рассылке сообщений об анонимной загрузке файлов. Права доступа: • { chmod delete | overwrite rename umask } { yes no } <список_типов> — разрешить/запретить пользователям выполнять соответствующее действие. По умолчанию — все разрешено. <Список_типов>— СПИСОК СЛОВ через запятую: anonymous, ИЛИ

guest,

real


Настройка общего доступа к дисковому пространству сервера - FTP-сервер П passwd-check { none | t r i v i a l

159

| rfc822 } ( { enforce | warn } ) —

уровень проверки правильности вводимых анонимными пользователями в качестве пароля адресов e-mail и реакция сервера в случае ошибки: • попе — никакой проверки; • t r i v i a l — строка должна содержать @; • rf с822 — полная проверка согласно стандарту RFC 822; • warn — если обнаружена ошибка, то выдавать предупреждение; • enforce — если обнаружена ошибка, то не впускать пользователя; • deny-emaii <emaii-адрео — считать данный адрес неправильным; П path-filter <список-типов> <имя_файла_сообщения> <шаблон_допустимых_имен> <шаблон_недопустимых> . . . — КОГДа ПОЛЬЗОВЭ-

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

upload [ absolute relative ] [ с1авз=<имя-класса> ] . . . [ — ] <корень шаблон_каталога> { yes | no } owner group mode [ dirs

nodirs ] [ dir_mode ] — определяет каталоги, в которые разрешено/запрещено записывать файлы пользователям из указанного класса. Все создаваемые файлы будут иметь соответствующие права доступа и принадлежность; • throughput — позволяет задать скорость передачи определенных файлов на определенные хосты; • anonymous-root <корень> [ <класо ] . . . — определяет корневой каталог (chroot) для анонимных пользователей указанного класса и их домашний каталог; • guest-root <корень> [ <ингервал-и!<3> ] . . . <корень> — определяет аргумент chroot для гостевых пользователей и их домашний каталог. Можно задавать отдельные uid или интервалы через дефис; • deny-uid <интервал> . . . — запрещает доступ к серверу определенным пользователям и может использоваться вместо файла ftpusers; • deny-gid <интервал> . . . — запрещает доступ к серверу определенным группам пользователей и может использоваться вместо файла ftpusers; П aiiow-uid <интервал> . . . — разрешает доступ к серверу определенным пользователям и может использоваться вместо файла ftpusers; • aiiow-gid <интервал> . . . — разрешает доступ к серверу определенным группам пользователей и может использоваться вместо файла ftpusers; • r e s t r i c t e d - u i d <интервал> . . . — разрешить реальному или гостевому пользователю доступ вне его домашнего каталога;


160

Глава 6

• r e s t r i c t e d - g i d <интервал> . . . — разрешить группе пользователей доступ вне его домашнего каталога; • unrestricted-uid <интервал> . . . — запретить реальному или гостевому пользователю доступ вне его домашнего каталога; • unrestricted-gid <интервал> . . . — запретить группе пользователей доступ вне его домашнего каталога; • site-exec-max-lines <число> [ <класс> ] . . . — ограничивает ЧИСЛО строк, посылаемых командой SITE EXEC; П dns refuse_mismatch <файл_с_сообщением> [ override ] — выдавать сообщение, если прямой и обратный адреса клиента не совпадают. Если не указано override, то прекращать сеанс; О dns refuse_no_reverse <файл__с_сообщением> [ override ] — выдавать сообщение, если клиент не имеет обратного адреса. Если не указано override, то прекращать сеанс.

Файл ftpservers Этот файл определяет набор файлов конфигурации для каждого виртуального сервера. Каждая строка в данном конфигурационном файле описывает виртуальный сервер и состоит из двух полей: • имя и IP-адрес виртуального сервера; • имя каталога, содержащего конфигурационные файлы. Имена файлов фиксированы: ftpaccess, ftpusers, ftpgroups, ftphosts, ftpconversions. Если какой-либо конфигурационный файл отсутствует, то вместо него используется конфигурационный файл основного сервера.

Файл ftpconversions В этом файле каждая строка описывает возможное преобразование файлов "на лету" и состоит из 8 полей, разделенных двоеточиями: • удаляемый префикс; • удаляемый суффикс; • добавляемый префикс; • добавляемый суффикс; • используемая для преобразования внешняя программа и ее параметры; • типы преобразуемого файла: • T_REG — обычный файл; • T_ASCII — текстовый; • T_DIR — каталог или сочетание перечисленных типов; • опции: O_COMPRESS, O_UNCOMPRESS, O_TAR или их сочетание; • комментарий к строке преобразования.


Настройка общего доступа к дисковому пространству сервера - FTP-сервер

161

Файл ftpgroups Этот файл используется для поддержки функционирования нестандартных команд типа SITE GROUP И SITE GPASS. В файле ftpgroups находятся строки, состоящие из трех полей, разделенных двоеточием: П задаваемое клиентом имя группы; • зашифрованный пароль группы; • реальное имя группы.

Файл ftphosts Этот файл предназначен для ограничения доступа к FTP-серверу с определенных IP-адресов. Используется всего две команды: О a l l o w <имя_пользователя>

<шаблон_1Р-адреса>

. . . — разрешить доступ;

П d e n y <имя_пользователя>

<шаблон_1Р-адреса>

...

— з а п р е т и т ь доступ.

Файл ftpusers Этот файл предназначен для запрета доступа к FTP-серверу некоторым реальным пользователям. Обычно используется для повышения безопасности системы, чтобы исключить доступ пользователей типа root, news и т. п.

Безопасность Во время конфигурации очень желательно продумать систему безопасности, зачастую, при неправильной настройке, FTP-сервер становится тем слабым местом, через которое осуществляется прорыв безопасности вашей операционной системы. Чрезвычайно важно, чтобы анонимные и гостевые пользователи не имели доступа к реальному командному процессору. Тогда, даже если они по какимлибо причинам смогут покинуть окружение FTP, то не смогут выполнить никаких посторонних задач. Для обеспечения этого требования убедитесь, что в файле /etc/passw у пользователей guest и anonymous в поле, где находится командная оболочка пользователя, находится что-то типа /dev/null. Файл ftpusers должен содержать список следующих псевдопользователей, которым будет отказано в подключении к FTP-серверу: root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody. Обычно FTP-сервер разрешает загрузку файлов на сервер (upload) всем пользователям. Однако необходимо запретить пользователям загружать свои файлы в некоторые каталоги (а иногда и во все). Для этого в файле ftpaccess необходимо прописать опцию upload с ключом по и указать каталог, на который налагается запрет. Иногда желательно запретить пользователям получение с FTP-сервера некоторых каталогов и файлов. Для этого в файле ftpaccess добавляем строку noretrieve с каталогом, куда необходимо запретить доступ пользователям. 6 3ак. 1500


Глава 7

Настройка сетевого принтера Из самого словосочетания "сетевые принтеры" понятно, что это принтеры, которые каким-то образом подключены к локальной сети, и компьютеры, подключенные к ней же, могут распечатывать на них документы. Принтеры бывают разные: матричные, струйные, лазерные, сублимационные и т. д. Они могут использовать разные интерфейсы для подключения: последовательный, параллельный, USB, Ethernet, SCSI, FireWire и др. Производители принтеров продолжают увеличивать набор проблем, то протокол свой придумают, то с целью удешевления создадут win-принтер. И во всем этом приходится разбираться. Поэтому, прежде чем покупать/подключать принтер к Linux-серверу, необходимо посмотреть в Интернете, поддерживается ли он в Linux. Принтер может стать сетевым, по меньшей мере, тремя путями: 1. В принтер встроена Ethernet-карта и специальное программное обеспечение для работы в сети. 2. Принтер подключен к специальному устройству — принт-серверу, который представляет собой специализированный компьютер, с одной стороны подключенный в локальную сеть, а с другой стороны к нему подключаются принтеры. 3. Принтер подключен к компьютеру, на котором установлено и настроено программное обеспечение, позволяющее компьютерам из сети производить печать на этом принтере. Далее мы рассмотрим настройку и использование сетевого принтера для последнего случая. Ethernet-принтер рассматривать не будем, поскольку он не подходит по условиям задачи — его стоимость составляет более 1000 долларов. А вариант с принт-сервером отклоняем, потому что для подключения к нему нет необходимости производить настройку на сервере.


164

Глава 7

Способы вывода на принтер Как и для большинства задач, существует несколько способов добиться вывода данных на принтер. Самый простой путь — прямой вывод информации, без всякой предварительной обработки, на порт принтера. Для этого на компьютере, к которому подключен принтер, достаточно выполнить всего лишь следующую команду: cat mytext.txt > /dev/lp

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

Система печати CUPS CUPS (Common UNIX Printing System, общая система печати для UNIX) интересна своими богатыми возможностями. В ней реализован протокол печати, сходный с протоколом HTTP, заменяющий морально устаревший LPD (Line Printer Daemon, демон линейной печати). Данная система поддерживает форматы Adobe PostScript, PDF, HP-GL/2, TIFF, JPEG, PNG, PBM, PGM, PPM, GIF, SGI, RGB, Sun Raster, Kodak Photo CDTM. Интересным моментом для администратора является следующие особенности системы: • правила управления доступом; • наличие системы квот; • авторизация пользователя; • ведение журналов.

Программный пакет LPD LPD — пожалуй, старейший программный пакет для печати в мире UNIX. Идеология стандартна — существуют программы-утилиты для управления процессом печати и программа-демон, обеспечивающая печать на нескольких принтерах. Благодаря такому построению программного пакета вы


Настройка сетевого принтера

165

имеете возможность одновременно работать с несколькими принтерами и настроить сетевую печать. В пакет входят следующие программы: • lpd — демон системы печати; П lpr — пользовательская утилита печати, lpr выдает новое задание печати в очередь печати lpd. Синтаксис команды lpr очень прост: lpr

[ <опции>

]

[ <имя__файла>

...

]

Если <имя_файла> не задано, lpr ожидает ввод данных со стандартного устройства ввода. Это позволяет пользователям перенаправлять вывод команд в очередь печати; • lpq — утилита для просмотра очереди печати. Команда lpq, запущенная без аргументов, возвращает содержимое очереди печати принтера по умолчанию; П 1рс — утилита контроля lpd. С ее помощью можно производить любые манипуляции с очередью печати: добавлять и удалять задания, останавливать печать, переупорядочивать задания в очереди печати и т. д. 1рс чаще всего используется в системах, где несколько принтеров установлено на один компьютер. Команда lpc используется в интерактивном режиме, однако никто вам не мешает запускать на выполнение эту команду с опциями, некоторые из которых приведены далее: • disable печати;

<option> — запрещает добавление любых новых заданий

• down <option> — запрещает все задания на принтере; • enable <option> — разрешает ввод новых заданий в очередь печати; •

q u i t ИЛИ e x i t — ПОКИНУТЬ ipCJ

• r e s t a r t <option> — перезагрузить lpd для данного принтера; • status <option> — статус печати принтера; • up <option> — разрешить все и запустить новый демон lpd; П Iprm — утилита для удаления задания из очереди печати. Команда lprm удаляет из очереди все задания печати, владельцем которых является пользователь, выполнивший эту команду. Для того чтобы отменить одиночное задание печати, надо сначала получить номер задания с помощью команды lpq, а затем сообщить полученный номер команде lprm. Функционирует система следующим образом. При запуске операционной системы стартует демон lpd. Используя файл /etc/printcap, он узнает, какие принтеры он будет обслуживать. При запуске lpr (пользователь что-то выводит на печать) взаимодействует с lpd через именованный сокет /dev/printer и передает LPD-файл для печати и некоторую информацию о том, кто печатает и как печатать файл. Затем lpd печатает файл на соответствующем принтере в порядке очереди.


166

Глава 7

Настройка LPD Начнем с простого: настроим струйный принтер DeskJet 400 фирмы HewlettPackard. Будем считать, что пакет LPD уже установлен в вашей операционной системе, поскольку он входит во множество дистрибутивов, как стандартная система печати. Для добавления очереди печати вы должны добавить запись в файл /etc/printcap и создать новый буферный каталог в каталоге /var/spool/lpd. Запись в файле /etc/printcap выглядит следующим образом: # ЛОКАЛЬНЫЙ d e s k j e t 4 0 0 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :псс#0:\ :lp=/dev/lpO:\ :sh:

Приведенная ранее запись определяет принтер с псевдонимами lp, dj или deskjet, очередь печати размещается в каталоге /var/spool/lpd/dj. Отсутствует ограничение максимального размера задания. Печать производится на устройство /dev/lpO и не сопровождается выводом титульной страницей задания с именем человека, распечатывающего документ, которая добавляется перед распечаткой файла. Как видите — все очень просто. Но существует извечная несовместимость текстовых файлов UNIX и Windows: для UNIX в конце текстовой строки достаточно символа перевода строки, для Windows — необходимо наличие символов возврата каретки и перевода строки. Большинство современных принтеров рассчитаны для использования совместно с Windows, и поэтому для нормальной печати текста им также необходимо в конце текстовой строки наличие символов возврата каретки и перевода строки. Если не учесть эту особенность, при распечатке текста на принтере получится приблизительно следующее: Строка номер один Строка номер два Строка номер три Строка номер четыре

Это называется лестничным эффектом, и с ним необходимо бороться. Существует много способов, самый простой — написать небольшой фильтр, через который перед печатью будет пропускаться наш текстовый файл, а результат — уходить на печать. Поправим нашу запись в файле /etc/printcap следующим образом: # ЛОКАЛЬНЫЙ deskjet400 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\


Настройка сетевого принтера

167

:шх#О:\ :lp=/dev/lpO:\ :if=/var/spool/lpd/dj/filter:\ :sh:

В документации к printcap описаны атрибуты принтера if — входной фильтр и of — выходной фильтр. Как видите, мы определили входной фильтр, расположенный в каталоге /var/spool/lpd/dj/ и носящий имя f i l t e r . Этот файл представляет собой две строчки, написанные на языке Perl: #!/usr/bin/perl while(<STDIN>){chop $_; print "$_\r\n";}; print "\f";

В результате мы получаем принтер, на котором можно корректно распечатать текстовые файлы, используя встроенные шрифты принтера. Для современного мира это не актуально — практически всегда используется графическая печать. Обычно печатают документы PostScript или графические файлы. На первый взгляд — нетривиальная задача, но на самом деле все достаточно просто. Вспомните еще раз идеологию UNIX — сколь угодно сложные задачи решать применением последовательности небольших утилит. Для решения этой проблемы опять применяется свойство файла printcap — наличие входных и выходных фильтров. Если мы будем использовать фильтр, который может воспринимать произвольные типы файлов как ввод, обрабатывать их в зависимости от формата файла и производить вывод на принтер, мы решим нашу задачу. Такой фильтр называется магическим фильтром (magic-filter). Существует большое количество магических фильтров, причем наверняка несколько такого типа фильтров находится в вашем дистрибутиве операционной системы. Далее приведены некоторые магические фильтры печати: П Apsfilter — фильтр печати для LPD; • lprMagic — фильтр печати с неплохими возможностями. Автоматически определяет тип входного документа, есть поддержка печати через Samba.

Учет ресурсов Обычно в больших фирмах принято хранить информацию о том, кто, когда и сколько печатал. Стандартный пакет LPD предоставляет мало возможностей для учета. С его помощью вы можете указать для этого имя файла, используя атрибут af= в printcap, но, по большому счету, это не решение проблемы. Пожалуй, лучший вариант — использовать фильтр, который может писать данные в файл учета ресурсов, а вы будете обрабатывать этот файл позже каким-нибудь сценарием обработки статистики.


168

Глава 7

Настройка сетевого принтера Одним из важных свойств пакета LPD является то, что он позволяет осуществлять печать по сети на принтер, физически подключенный к другому компьютеру, принт-серверу или просто сетевому принтеру. Для того чтобы разрешить удаленным компьютерам печатать на ваш принтер, используя протокол LPD, вы должны перечислить эти компьютеры в файле /etc/hosts.lpd. Помимо этого, вы можете разрешить только определенным пользователям с других компьютеров печатать на ваш принтер. Для того чтобы печатать на другом компьютере, вы должны в файле /etc/printcap сделать следующую запись: # Удаленный deskjet400 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=machine.out.there.com:\ :rp=printername:\ :lp=/dev/null:\ :sh:

Как видно из приведенного ранее текста, на нашем компьютере существует каталог очереди печати, обслуживаемой lpd. Это позволяет сохранить и распечатать задания позднее в том случае, если удаленная машина занята или отключена. Также мы определяем имя компьютера, который предоставляет нам свой принтер (machine.out.there.com), имя принтера на удаленном компьютере (printername) и показываем, что сетевой принтер не подключен ни к какому ресурсу на нашем компьютере (lp=/dev/nuli).

Samba Поскольку мы считаем, что основной потребитель услуг сервера это Windows-клиенты, то нам нужно сделать доступным наш принтер для них. Для этого нам необходимо отредактировать в файле smb.conf секцию [printers]: [printers] path = /var/spool/lpd/dj writeable = no guest ok = no printable = yes

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


Глава 8

Организация почтового сервера Задача, которая будет рассмотрена в этой главе, простая — максимально удобно организовать прием и отправление электронной почты сотрудников, с учетом того, что у нас нет своего доменного имени, и мы пока пользуемся модемным соединением. Что же мы хотим получить? Поскольку у нас нет своего домена, мы не можем создать у себя полноценный почтовый сервис. Наши сотрудники получат бесплатные почтовые ящики, например, на www.maO.ru или www.gmail.com. И будут они, к примеру, petrov@mail.ru, sidorov@mail.ru, boss@gmail.com, admin@list.ru. Казалось бы, ничего страшного, администратор резво пробежится по компьютерам, и все настроит. Но, к примеру, захотел отдел продаж еще один почтовый ящик, а для отдела кадров нужно три, причем в разных доменах. И каждый решает, как ему удобно проверять почту: один — утречком, другой — каждые 10 минут. В результате у администратора проблемы — вносить в почтовые клиенты множество учетных записей, и модем постоянно то соединяется, то разъединяется. Одним словом — анархия. Но умные люди придумали, как с этим бороться. Оказывается, очень просто — на нашем сервере мы заводим учетные записи: для начальства, бухгалтерии, кадров и т. п. Почтовые клиенты наших пользователей настраиваем так, чтобы сервер, через который отправляют почту и принимают, был нашим внутренним сервером (192.168.0.1). А на нем ставятся следующие службы: 1. Программа, которая забирает почту со всех внешних почтовых ящиков и раскладывает ее в соответствующие внутренние. 2. Службу РОРЗ (Post Office Protocol, почтовый интернет-протокол) или ШАР (Internet Mail Access Protocol, протокол интерактивного доступа к электронной почте) для того, чтобы внутренние клиенты могли без проблем забрать свою почту. 3. Настраиваем SMTP-агент (Simple Mail Transfer Protocol, простой протокол электронной почты), чтобы он организовал очередь исходящих сообщений и отправлял их только тогда, когда есть соединение с Интернетом.


170

Глава 8

Вроде бы цели поставлены, понятны и достижимы. А начнем мы, как и принято, с небольшой теоретической части. Основой почтовой службы является система адресов. В Интернете принята система адресов, которая базируется на доменном имени машины, подключенной к сети. Например, для пользователя ivan машины с именем ogpu.odessa.ua почтовый адрес будет выглядеть так: ivan@ogpu.odessa.ua. Почтовый адрес состоит из двух частей: идентификатора пользователя, который записывается перед знаком коммерческого at (@), и доменного адреса компьютера. Существует еще один вариант задания почтового адреса — адрес UUCP (UNIX to UNIX Copy Program, протокол, используемый для обмена между согласованными UNIX-системами), который записывается в виде: odessa.ua!ogpu!ivan. Правда протокол UUCP сейчас почти не используется. Для работы электронной почты разработан специальный протокол SMTP — простой почтовый протокол, который является протоколом прикладного уровня и использует транспортный протокол TCP.

SMTP SMTP был разработан для обмена почтовыми сообщениями в сети Интернет. Он не зависит от транспортной среды и может использоваться для доставки почты в сетях с протоколами, отличными от TCP/IP. Взаимодействие в рамках SMTP строится по принципу двусторонней связи, которая устанавливается между отправителем и получателем почтового сообщения. При этом отправитель инициирует соединение и посылает запросы на обслуживание, а получатель на эти запросы отвечает. Как и множество других протоколов, команды и ответы протокола SMTP передаются в ASCII-кодах (American Standard Code for Information Interchange, американский стандартный код обмена информации) и представляют собой небольшой набор английских слов. Протокол, помимо отправки почты, поддерживает переадресацию, прямую посылку сообщения на терминал, обработку ошибок и некоторые другие возможности.

РОРЗ Протокол обмена почтовой информацией, РОРЗ, предназначен для получения почты из почтовых ящиков пользователей на их рабочие места при помощи программ-клиентов. Таким образом, по SMTP пользователи отправляют корреспонденцию, а по РОРЗ — получают письма из своих почтовых ящиков. Этот протокол так же основан на установлении двусторонней связи, команды и ответы протокола передаются в ASCII-кодах и представляют собой небольшой набор английских слов.


Организация почтового сервера

171

Протокол IMAP Еще одним протоколом разбора почты является протокол ШАР — почтовый протокол интерактивного доступа, который по своим возможностям похож на РОРЗ, но разрабатывался как более надежная альтернатива последнему. Он обладает более широкими возможностями по управлению процессом обмена сообщениями с сервером. Главным отличием его от РОРЗ является возможность поиска нужного сообщения и разбор заголовков сообщения непосредственно на почтовом сервере.

Программное обеспечение Как и многое другое, взаимодействие между участниками обмена почтового сообщения основано на технологии клиент-сервер. Можно выделить три независимых этапа: • взаимодействие по SMTP между почтовым клиентом и почтовым транспортным агентом; • взаимодействие между транспортными агентами в процессе доставки почты; • получение сообщения из почтового ящика пользователя почтовым клиентом по протоколам РОРЗ или ШАР. Итак, начнем с конца — установки и настройки РОРЗ-сервера.

РОРЗ Как ни странно, РОРЗ и ШАР идут в Fedora Core в одном пакете, который называется cyrus-imapd-2.2.6-2.FC3.6.i386.rpm. Установка его тривиальна. Настройка, в нашем случае, вообще не требуется.

fetchmail Есть такая утилита, называется fetchmail, — она предназначена для того, чтобы с помощью всех известных почтовых протоколов забирать почту с почтовых серверов, и потом отдать ее локальному МТА-агенту. То есть fetchmail забирает почту с удаленного сервера, потом подключается к 25 порту на localhost и отдает программе sendmail почту, которая уже обычными путями попадает в локальные почтовые ящики пользователей. Варианта настройки fetchmail, по меньшей мере, два — либо для каждого локального пользователя создается свой конфигурационный файл, либо централизованная настройка. Рассмотрим оба варианта.


172

Глава 8

Первый вариант достаточно прост. В домашнем каталоге пользователя от его имени создается файл .fetchmailrc с правами 600 (rw ) , то есть, чтобы читать и редактировать этот файл мог только пользователь, в каталоге которого он создается. Внутри файла пишем, к примеру, следующее: poll pop3.gmail.com proto P0P3 user boss pass superboss to vab

Что здесь мы видим? С помощью poll pop3.gmaii.com определяем, с какого сервера мы собираемся получать почту, proto РОРЗ — задаем, по какому протоколу будет осуществляться скачивание почты, user boss pass superboss — задаем имя и пароль доступа к удаленному почтовому ящику. Как видите, имя и пароль идут открытым текстом, вот почему при создании файла необходимо ставить права доступа только для владельца файла, to vab — здесь мы показываем, что все, что мы забрали на www.gmail.com, должно помещаться в почтовый ящик локального пользователя vab. Если имя на внешней почте совпадает с именем локального пользователя, то t o vab можно опустить. Если вы хотите забирать почту еще с какого-то другого почтового сервера, просто добавляем еще одну запись в наш конфигурационный файл. Но такое решение подходит в том случае, если у вас мало пользователей или вы имеете доступ на локальную машину с Linux. Более интересный вариант для администратора — централизованная настройка получения почты. Для этого делаем следующее — в домашнем каталоге пользователя root создайте файл .fetchmailrc, в котором мы просто делаем записи для наших локальных пользователей. Например, вот так: poll pop3.gmail.com proto РОРЗ user boss pass superboss to vab poll pop.mail.ru proto P0P3 user ivanov pass passwd77

to ivan

poll pop.mail.ru proto P0P3 user 'iv2005' pass mailrupass' to ivan

Программа sendmail Основным средством рассылки почты является программа sendmail, которая является одной из старейших и сложных в конфигурации. Она позволяет организовать почтовую службу локальной сети и обмениваться почтой с другими серверами почтовых служб через специальные шлюзы, sendmail может быть настроена для работы с различными почтовыми протоколами. Обычно это протоколы UUCP и SMTP, sendmail может интерпретировать два типа почтовых адресов: • почтовые адреса SMTP; • почтовые адреса UUCP. Программу можно настроить для поддержки: • списка адресов-синонимов; • списка адресов рассылки пользователя;


Организация почтового сервера

173

П автоматической рассылки почты через шлюзы; • очередей сообщений для повторной рассылки почты в случае отказов при рассылке; • работы в качестве SMTP-сервера; П доступа к адресам машин через сервер доменных имен BIND; • доступа к внешним серверам имен и многого другого.

Принцип работы программы sendmail sendmail идеологически копирует обычную почтовую службу — почта отправляется с заданной периодичностью, перед этим сообщения собираются в очереди и только затем отсылаются. Как уже упоминалось ранее, каждое сообщение состоит из трех частей: конверта, заголовка и тела сообщения: • конверт состоит из адреса отправителя, адреса получателя и специфической информации, которая используется программами подготовки, рассылки и получения почты. Конверт остается невидимым для отправителя и получателя почтового сообщения; • заголовок состоит из стандартных текстовых строк, которые содержат адреса, информацию о рассылке и данные. Данные из заголовка могут использоваться для оформления конверта сообщения; d тело сообщения следует после первой пустой строки вслед за заголовком сообщения. Все, что следует после этой строки, передается по почте без изменений. После постановки почтовых сообщений в очередь начинается ее рассылка. При этом выполняются следующие действия: • адреса отправителя и получателя преобразуются в формат сети получателя почты; • если необходимо, то в заголовок сообщения добавляются отсутствующие данные; • почта передается одной из программ рассылки почты.

Настройка программы sendmail Настройка программы sendmail происходит с помощью конфигурационного файла /etc/mail/sendmail.cf. Этот файл состоит из нескольких частей: П описания компьютера (local information) — в данной секции описываются имя компьютера и т. п.; • описания макроопределений sendmail, отвечающих за работу в локальной сети; П групп имен, которые используются программой для рассылки почты;


174

Глава 8

П номера версии файла конфигурации; П опций команды sendmaii — определяют режимы работы программы; • списка доверенных пользователей; • описания формата заголовка почтового сообщения — в данной секции определяются поля и их формат, которые отображаются в заголовке; • правил преобразования адресов; • описания программ рассылки; О общего набора правил преобразования адресов; П машинно-зависимой части общего набора правил преобразования адресов. Обычно после инсталляции sendmaii изменения, которые вносятся в файл конфигурации, касаются только имени хоста, домена и шлюзов. В современных дистрибутивах иногда не приходится делать даже этого. Подробно о конфигурировании sendmaii здесь рассказано не будет — разобраться в конфигурационном файле, который имеет около 100 Кбайт текста, весьма не просто. Для детального ознакомления с конфигурацией sendmaii рекомендуется почитать книгу "UNIX — руководство системного администратора", а также документацию, идущую в комплекте с программой. Для конфигурирования sendmaii можно напрямую вносить изменения в конфигурационный файл sendmail.cf или править небольшой файл sendmail.mc и специальным транслятором переводить его в формат sendmail.cf, что более удобно. Есть два варианта отправления писем: первый — письма накапливаются в очереди почтовой программы и отправляются в тот момент, когда есть подключение к Интернету. И второй вариант — доставка писем моментально, т. е. почтовая программа проверяет, есть ли соединение с Интернетом, и если его нет, то указывает модему соединиться, а затем отправляет письмо. Для первого варианта необходимо внести в файл sendmail.mc следующие изменения: define('confCON_EXPENSIVE', 'True') define(SMTP_MAILER_FLAGS, e) MAILER(local)dnl MAILER(smtp)dnl

И сгенерировать файл sendmail.cf следующей командой: m4 sendmail.mc > sendmail.cf

Для второго варианта в sendmail.mc: FEATURE(nocanonify)dnl

нам необходимо

добавить

следующую

строку


Организация почтового сервера

175

Однако с нашими телефонными линиями нам необходимо учитывать время, потраченное модемом на дозвон и соединение. Это позволит sendmail повторить попытку доставки почты в том случае, если получен отказ (модем еще не соединился), через время, указанное нами. Для этого в файл sendmail.mc необходимо добавить следующую строку: define('confDIAL_DELAY','60s')

Она задает интервал между попытками в 1 минуту. После этого выполняем Команду m4 sendmail.mc

> s e n d m a i l . cf, С ПОМОЩЬЮ КОТОрОЙ получаем

новый конфигурационный файл. Вот и вся цепочка. Теперь остается только настроить клиентские программы и пользоваться электронной почтой.


Глава 9

DHCP Как вы знаете, без IP-адреса компьютер не может быть включен в сеть с протоколом TCP/IP. В малой сети назначить IP-адреса каждому компьютеру и прописать их в соответствующих местах не представляет особого труда. Однако со временем это надоедает, хочется простоты — принес новый компьютер, включил в сеть, а он сам все что нужно и получил. Для решения проблем с автоматическим назначением IP-адресов, выдачи некоторых параметров и предназначен протокол DHCP.

Архитектура и формат сообщений DHCP — классический клиент-серверный протокол динамического конфигурирования хостов, предназначенный для управления сетевыми параметрами компьютеров. Клиентами выступают компьютеры сети, пытающиеся получить IP-адрес, адрес сетевого шлюза, сетевое имя и другие параметры, о которых вы узнаете чуть позже. DHCP-сервер выдает в ответ на запрос клиентов назначаемые им сетевые параметры, контролирует использование IP-адресов, поддерживает пул свободных адресов и ведет собственную базу клиентов. В роли транспортного протокола для обмена DHCP-сообщениями выступает протокол UDP. При отправке сообщения с клиента на сервер используется 67 порт DHCP-сервера, при передаче в обратном направлении — 68. Эти номера портов, как и схожая структура сообщений, обеспечивают обратную совместимость протоколов DHCP с ВООТР (Bootstrap Protocol, сетевой протокол, определяющий процедуры взаимодействия с узлами, не имеющими жестких дисков).

Режимы выдачи IP-адресов Казалось бы, раз протокол предназначен для динамической выдачи адресов, то и режим один — динамический. Однако чтобы не лишать администратора


178

Глава 9

гибкости при назначении IP-адресов, предусмотрено три режима: статический, динамический и ручной. Рассмотрим их отличия: • статический — DHCP-сервер конфигурируется таким образом, что компьютерам назначаются неизменные со временем IP-адреса; • динамический — компьютеры получают IP-адреса, которые могут меняться с течением времени; • ручной — DHCP-сервер уведомляет клиента об адресе, присвоенном ему администратором сети вручную. Как видите, первый и последний случаи достаточно тривиальны, и особо на них останавливаться не будем. Нас интересует второй случай — динамическое распределение адресов. Выдача IP-адреса в аренду производится по инициативе (запросу) клиента, при этом гарантируется, что до истечения срока аренды этот IP-адрес не будет выдан в аренду другому клиенту. DHCP-сервер обычно настраивается таким образом, что при повторных обращениях клиента в течение определенного срока (зависит от администратора, обычно неделя-две) он старается выдать клиенту IP-адрес, использовавшийся им ранее. Клиент может (при соответствующей настройке) запросить продление сроков аренды IP-адреса, либо досрочно от него отказаться.

Параметры конфигурации DHCP клиента В качестве параметров конфигурации DHCP-сервер может выдать клиенту, помимо IP-адреса и сетевого имени, достаточно большой объем данных. Далее мы перечислим основные данные, которые может получить клиент. • Маска подсети. • MTU (максимальный размер передаваемого пакета). • TTL (время жизни пакета). • Адреса cookie-серверов. • Адреса DNS-серверов. • • О • • • • • •

Адреса finger-серверов. Адреса IRC-серверов. Адреса log-серверов. Адреса LPR-серверов. Адреса WINS-серверов. Адреса NIS-серверов. Адреса NNTP-серверов. Адреса NTP-серверов. Адреса почтовых серверов.


DHCP

179_

• Адреса TFTP-серверов. П Адреса web-серверов. А также большое количество второстепенных параметров, полное описание которых можно найти в документации на DHCP-сервер.

DHCP-сервер Начнем описание программного обеспечения с серверной части, как наиболее трудоемкой в настройке и более ответственной. Программное обеспечение DHCP-сервера входит, практически, в любой современный дистрибутив. Если же вы не обнаружили его на дисках, можно загрузить его с сайта Internet Software Consortium (разработчика DHCP) — www.isc.org. Установка пакета не должна вызвать никаких сложностей. После нее нужно убедиться, что демон dhcpd будет автоматически стартовать при загрузке операционной системы. За конфигурацию dhcpd отвечают два файла: /etc/dhcpd.conf и /var/lib/dhcp/dhcpd.leases.

Файл dhcpd.conf В этом файле содержатся все настройки DHCP-сервера. Сначала опишем эти настройки, а после рассмотрим типичные конфигурационные файлы. Итак, файл dhcpd.conf содержит конфигурационную информацию для демона dhcpd. Он представляет собой текстовый ASCII-файл. Комментарием является строка, начинающаяся с символа "#". Конфигурационные переменные состоят из двух частей: параметров и значений, заканчивающихся точкой с запятой. Глобальные параметры, действие которых распространяется на все группы, размещаются вначале данных, до описания групп. Вначале файла можно определить параметры, действие которых будет распространяться на все группы данных: • ddns-update-style none — разрешает либо запрещает использование динамического обновления DNS; П option domain-name "t es t .o rg " — этот параметр задает имя домена, в котором функционирует DHCP-сервер. В дальнейшем можно не указывать в переменной host полное имя хоста; О option domain-name-servers имена DNS-серверов — параметр определяет список DNS-серверов, используемых DHCP-сервером при разрешении символических имен; • option netbios-name-servers список IP-адресов — ЭТОТ параметр, если клиент использует протокол NetBIOS, определяет список WINS-серверов; П option netbios-node-type цифровое значение — параметр определяет порядок использования параметра netbios-name-servers: • 1 — использование широковещательных запросов вместо WINS-сервера;


180

Глава 9

• 2 — использовать только WINS-сервер; • з — сначала использовать широковещательные запросы, затем WINSсервер; • 4 — сначала использовать WINS-сервер, затем широковещательные запросы; • option nis-domain "test.org" — если присутствует поддержка NIS, можно задать домен подсети; • max-iease-time секунды— параметр определяет максимальное время аренды IP-адреса клиентом в секундах. Если за это время клиент не запросил о подтверждении аренды адреса, клиент считается отсутствующим в сети, и его IP-адрес считается свободным для аренды; • default-lease-time секунды— параметр определяет время по умолчанию аренды IP-адреса клиентом в секундах. Если за это время клиент не запросил о подтверждении аренды адреса, клиент считается отсутствующим в сети; • min-iease-time секунды— параметр определяет минимальное время аренды IP-адреса клиентом в секундах. Если за это время клиент не запросил о подтверждении аренды адреса, клиент считается отсутствующим в сети. Следующие три параметра позволяют задать способ взаимодействия с клиентами, которые не определены в списке хостов DHCP-сервера (отсутствуют МАС-адреса): П allow unknown-clients — разрешает выдачу IP-адреса для неизвестного клиента; • deny unknown-clients — отклоняет выдачу IP-адреса для неизвестного клиента; • ignore unknown-clients — игнорирует запросы неизвестного клиента на получение IP-адреса. Следующие параметры позволяют определить стратегию сервера по взаимодействию с клиентами, посылающими запрос по bootp-протоколу: • allow bootp — разрешить получение IP-адреса по ВООТР; • deny bootp — отклонять запросы по ВООТР; • ignore bootp — игнорировать запросы по ВООТР. Логически связанные параметры могут находиться между фигурными скобками {}, перед ними ставят конфигурационную переменную, к которой применяются эти параметры (листинг 9.1). В качестве таких переменных могут выступать: • subnet; П group; •

host.


DHCP

181

subnet 204.254.239.64 netmask 255.255.255.224 { параметры подсети ... range 204.254.239.74 204.254.239.94; group { параметры группы . . . host vasya.test.org { параметры хоста . . . }

host petya.test.org { параметры хоста ..

Здесь: D subnet ip-адрес netmask маска сети — этот параметр определяет адрес подсети и маску, для которой DHCP-сервер будет выдавать динамические IPадреса. В конфигурационном файле может быть несколько записей subnet: • range IP-адрес начала диапазона IP-адрес конца диапазона — параметр задает диапазон IP-адресов, из которых сервер может выдавать адреса для данной подсети. Параметр range необязательный, при его отсутствии диапазон динамически выдаваемых IP-адресов определяется исходя из подсети и ее маски; • option domain-name "test.org" — этот параметр задает имя домена, в котором функционирует DHCP-сервер. В дальнейшем можно не указывать в переменной host полное имя хоста; • option nis-domain " t e s t . o r g " — если присутствует поддержка NIS, можно задать домен подсети; • option routers ip-адрес — параметр содержит список IP-адресов маршрутизаторов; • option subnet-mask маска подсети — параметр позволяет задать маску подсети; • option domain-name-servers имена DNS-серверов — параметр определяет список DNS-серверов, используемых DHCP-сервером при разрешении символических имен; •

range dynamic-bootp IP-адрес начала диапазона

IP-адрес конца

диапазона — этот параметр задает диапазон адресов для клиентов, которые производят загрузку по протоколу ВООТР;


182

Глава 9

• option broadcast-address

ip-адрес — параметр определяет адрес

для посылки широковещательных сообщений. • group — параметр, с помощью которого для некоторого набора хостов можно задавать некоторые общие параметры. Эти параметры уже упоминались в описании глобальных параметров и в описании подсети; • host имя хоста — этот параметр позволяет задать для хоста имя хоста и некоторые параметры, специфичные именно для него: • hardware ethernet xx:xx:xx:xx:xx:xx— параметр определяет ТИП сетевого интерфейса и его МАС-адрес, который записывается в виде хх-. хх-. хх: хх: хх-. хх (для Ethernet-карты), где хх — восьмибитное число в шестнадцатеричном представлении; • fixed-address ip-адрес — параметр позволяет зафиксировать IPадрес за определенным хостом; • filename "filename" — параметр задает имя файла, который загружает клиент после получения IP-адреса. Используется д��я загрузки бездисковых клиентов. Помимо этого существует еще десятка два конфигурационных параметров, однако они достаточно специфичны и в большинстве случаев не используются.

Файл dhcpd.leases Файл dhcpd.leases представляет собой базу данных, в которой хранятся записи о клиентах и арендованных ими IP-адресах. Запись представляет собой несколько строк следующего вида: lease 192.168.0.27 { starts 5 2005/03/20 09:14:54; ends 5 2005/03/27 09:14:54; hardware ethernet 00:60:67:75:40:37; uid 01:00:60:67:75:40:37; client-hostname "Test"; }

где: • lease 192.168.0.27 — показывает, какой IP-адрес взят в аренду; • s t a r t s 5 2005/03/20 09:14:54 — начало срока аренды (в данном случае 20 марта 2005 года в 9 часов 14 минут и 54 секунды); • ends 5 2005/03/27 09:14:54— предполагаемый конец аренды (если клиент не запросит продления аренды). Легко заметить — время аренды равно 7 суток;


DHCP D hardware

183_ ethernet

0 0 : 6 0 : 6 7 : 7 5 : 4 0 : 3 7 — д а н н ы й параметр показывает,

что сетевой интерфейс, которому назначен IP-адрес, это Ethernet-карта с МАС-адресом 00:60:67:75:40:37; • uid 01:00:60:67:75:40:37— необязательный параметр. Идентификатор клиента, основывается на протоколе ARP и для Ethernet-карты представляет собой МАС-адрес, впереди которого добавлена 1; • client-hostname "Test" — сетевое имя клиента. Помимо этого есть еще десяток параметров, с которыми вы можете ознакомиться в справке к программе dhcpd.

Пример файла dhcpd.conf Теперь, когда мы имеем представление о структуре файла dhcpd.conf, рассмотрим конфигурационный файл (листинг 9.2), в котором описывается простая локальная сеть со следующими характеристиками: • адрес сети 192.168.0.0; • маска сети 255.255.255.0; П домен test.org; • один DHCP-сервер с адресом 192.168.0.1; • один DNS-сервер с адресом 192.168.0.1; • один шлюз с адресом 192.168.0.1; П 11 клиентов, получающих адреса, причем один из них всегда постоянен. : Листинг 9.2. Содержимое файла dhcpd.conf #global options ddns-update-style none; option domain-name "test.org"; option domain-name-servers 192.168.0.1; # 7 X 24 hours - lease time default-lease-time 604800; max-lease-time 604800; # my subnet subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.5 192.168.0.20; option routers 192.168.0.1; } host vasya { hardware ethernet 00:70:58:bc:10:03; fixed-address 192.168.0.17;


184

Глава 9

Что же мы видим в листинге 9.2? Первая строка — комментарий, показывает, что дальше идет описание глобальных параметров. В следующей строке мы запрещаем использовать динамический DNS. Затем мы определяем имя домена и адрес DNS-сервера. После этого определяем время аренды IPадреса клиентами в семь суток. Потом определяется наша подсеть, в описании которой мы задаем диапазон динамических IP-адресов и адрес маршрутизатора. Наконец, последняя секция — определяем хост со статическим IPадресом с именем vasya.

DHCP-клиент DHCP-клиент уже встроен в операционную систему Windows. Настройка его элементарна — при конфигурировании сетевого интерфейса выбираем настройки IP. И выставляем две метки, как показано на рис. 9.1. Мы просто ставим две метки — Получить IP-адрес автоматически и Получить адрес DNS-сервера автоматически. Этого достаточно, чтобы наш клиент получил автоматически все настройки при старте операционной системы от нашего DHCP-сервера. Свойства; Протокол Интернета {TCP/IP} | Общие [Альтернативная конфигурацияI Параметры IP могут назначаться автоматически, если сеть поддерживает эту возможность. В противном случае параметры IP можно получить у сетевого администратора. ©ПолучетьIP-aapec автоматически .- •© Использовать следующий IP-адрес:

ОсновнойЩЛЮ9:

••.'•

:•!••'•: •• .'.':

. V •;•

1 • Полечить шр?с DNS-сервера автоматичен> и О Использовать следующие адреса ONS-серверов:

i .ополнительно... ОК

Отмена

Рис. 9.1. Настройка Windows для получения настроек по DHCP


Глава 10

Сетевые настройки сервера, маршрутизация и DNS В этой главе мы займемся созданием точки доступа в Интернет для локальной сети. Обычно для этого используется выделенная линия, по концам которой установлены модемы, подключаемые к какому-то интерфейсу. Раньше это были обычные модемы и подключались к последовательному порту. В последнее время для организации подключения по выделенной линии используются технологии xDSL (Digital Subscriber Line, цифровая абонентская линия), при которых специальные модемы подключаются по последовательному порту (старые и медленные модемы), а более скоростные либо через USB или Ethernet-соединению напрямую к сетевой карте. Для определенности будем считать, что у нас есть модем, подключенный к сетевому интерфейсу. Для нашего соединения провайдер должен нам выдать IP-адрес нашего сетевого интерфейса, адрес шлюза, к которому мы будем подключаться, адрес DNS-сервера. Еще мы должны потратить немножко денег и купить у провайдера внешний IP-адрес, купить домен для вашей фирмы (к примеру, firma.ru) и докупить еще одну сетевую карту. Для чего нужен внешний IPадрес? Поскольку я предполагаю, что ваша фирма захочет иметь свой собственный домен, почтовый сервер и web-страницу, то вам неминуемо придется либо договариваться с провайдером и платить деньги за эти услуги (у кого как — обычно идет разговор от 10 долларов в месяц), либо настроить все самостоятельно на своем сервере. Второй вариант, в большинстве случаев, предпочтительней, поскольку это наиболее гибко настраиваемое решение при минимальных дополнительных денежных затратах. Стоимость домена на год обычно составляет 17—20 долларов, и приобрести его можно как самостоятельно, так и при содействии вашего провайдера. В последнем варианте провайдер обычно бесплатно предоставляет вторичный DNS-сервер для вашего домена. Для чего, это вы узнаете позже, в разделе настройки DNS-сервера.


186

Глава tO

Организация связи по выделенному каналу В отличие от настройки связи по коммутируемому соединению, организация соединения по выделенному каналу намного более простая задача. Для нашего варианта соединения нам необходимо установить дополнительную сетевую карту, к которой будет подключаться DSL-модем. Для этих целей подойдет любая сетевая карточка ценой от 6 долларов. Неплохо зарекомендовали себя сетевые карточки на чипе Realtek. И что самое приятное, дистрибутив при включении компьютера сразу после установки сетевой карты обнаруживает ее и предлагает сконфигурировать. Вот тут необходимо иметь под рукой параметры соединения, выданные провайдером, как-то: IP-адрес нашей сетевой карты, к примеру, 195.66.200.100; IP-адрес шлюза провайдера, через который мы ходим в мир, к примеру, 195.66.200.103; маску подсети, это зависит от провайдера и может быть что-то типа 255.255.255.250; адрес DNS-сервера провайдера. Введя эти данные при конфигурировании системы, можно подключить DSL-модем и по индикаторам убедиться, что физическая связь с противоположным модемом в наличии и модем нормально соединен с нашей сетевой картой. Далее проверяем прохождение пакетов. На сервере пропингуем противоположный адрес нашего моста— ping 195.66.200.юз. Если все нормально, вы получите ответы с той стороны. Если нет, то вы где-то ошиблись — либо в адресе интерфейса, либо в сетевой маске. Следующим этапом должна быть настройка шлюза для нашей локальной сети. Это не так сложно как кажется, поскольку большую часть работы мы проделали при настройке модемного соединения. В дальнейшем мы должны поменять наши настройки маршрутизации — все, что не относится к нашей локальной сети должно уходить на адрес провайдера. Изменить настройки можно с помощью программы route. Также мы должны повторить операцию по настройке маскарадинга, но с учетом новых реалий. iptables - t n a t -A ЮЭПШПИЗ -s 192.168.0.0/24 -о 195.66.200.100 -j MASQUERADE

Эта строчка позволяет нашей локальной сети выходить в Интернет. Далее проверяем, как функционирует выход из локальной сети в свет: ping www.bhv.ru

Если все было настроено корректно, то вы увидите отклик от сайта www.bhv.ru. Если у вас все прошло именно таким образом, значит, система работает как надо. В противном случае проанализируйте последние строки системного журнала (/var/log/messages), также проверьте корректность настройки протокола TCP/IP на этой машине, в частности настройки сетевого шлюза, которые должны указывать на наш маршрутизатор. Как видите, вмешательство в сетевые настройки минимальные, но это только первый этап. Следующая часть работы — это настройка DNS-сервера.


Сетевые настройки сервера, маршрутизация и DNS

187

DNS По стандартам для поддержки домена необходимо наличие двух DNSсерверов: первичного и вторичного. Это необходимо для надежности функционирования DNS-служб — если один сервер по каким-то причинам недоступен, то второй берет на себя обслуживание запросов по домену. А вот стратегии организации DNS для вашего домена firma.ru могут быть различными. Самый простой для администратора, но не самый дешевый, — прописать свой домен на DNS-серверах провайдера. При этом следует учитывать, что некоторые провайдеры прописывают домены клиентов в оба своих сервера, а некоторые — только в первичный, либо только во вторичный. Другой вариант — один DNS-сервер настроить у себя, а второй — у кого-то еще. В частности, на Украине есть бесплатный первичный (http://primaryns.kiev.ua) и два вторичных сервера (http://secondary.net.ua и http://ns2.trifle.net). Мы рассмотрим конфигурирование первичного DNSсервера на собственном примере.

Настройка первичного DNS-сервера Настройка первичного DNS-сервера несколько сложнее, чем кэширующего, но, в основном, файлы и записи те же самые. Рассмотрим настройку первичного DNS-сервера для домена firma.ru.

Файл /etc/named.conf Для нашего сервера данный файл должен содержать следующие строки: options { directory "/var/named";

/ / a caching only nameserver config // controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; zone " . " IN { type h i n t ; f i l e "named, ca";

zone "localhost" IN {


188

Глава 10 type master; file "localhost.zone"; allow-update { none; };

zone "0.0.127.in-addr.arpa" IN { type master; file "named.local",allow-update { none; };

include "/etc/rndc.key"; //it*********************************

// Our domains

*

zone "firm.ru" IN { type master; file "firm.ru"; allow-transfer { 195.66.200.0/24; } ; }; /y**********************************

// Office LAN

*

//A*********************************

zone "firma" IN { type master; file "firma"; allow-transfer { none; }; allow-guery { 192.168.0.0/24; } ; }; zone "0.168.192.in-addr.arpa" IN { type master; file "firma"; allow-transfer { none; }; allow-query { 192.168.0.0/24; };

Секция zone "firma.ru" определяет, что наш DNS-сервер предназначен для зоны firma.ru и является в ней мастером (другие серверы лишь синхронизи-


Сетевые настройки сервера, маршрутизация и DNS

189

руют по нему свои записи по зоне firma.ru), при изменении записей в зоне не извещает другие серверы и использует для описания зоны файл firma.ru. Секция zone "firma" определяет, что наш DNS-сервер предназначен для зоны firma, и является в ней мастером, при изменении записей в зоне не извещает другие серверы и использует для описания зоны файл firma (наша локальная сеть), и не разрешает получать другим DNS-серверам информацию об этой зоне. Секция zone "0.168.192.in-addr.arpa" определяет, что наш DNS-сервер поддерживает реверсную зону o.i68.i92.in-addr.arpa, является в ней мастером, при изменении записей в зоне не извещает другие серверы и использует для описания зоны файл 192.168.0.

Файл /etc/named/f irma.ru В файле зоны firma.ru поместим следующие данные: $TTL

86400

@

IN

SOA

n s . f i r m a . r u . hostmaster.firma.ru. (

2005020501 28800 7200 604800 86400 ) IN IN

NS NS

ns. tirma.ua. ns. te.net.ua.

IN

NS

nsl .tenet.Odessa.ua.

IN

MX

10

firma.firma.ru.

IN

MX

20

relay3.te.net.ua.

IN

A

195 .66.200.100

ns

IN

A

195 .66.200.100

www

IN

CNAME

ns

firma

IN

CNAME

ns

localhost ns

A A

127. 0.0, 1 192. 168. 0.1

Этот файл зоны содержит 4 записи ресурсов (Resource Records, RR): • SOA RR — запись SOA (Start Of Authority, начало полномочий) находится в преамбуле каждого из файлов зон, она должна быть первой записью в файле. Описывает зону, откуда ее берут (ns.firma.ru), кто отвечает за содержимое зоны (hostmaster@firma.ru), какая версия файла зоны текущая ( s e r i a l : l); • NS RR — это RR для сервера имен (Name Server, NS);


190

Глава 10

П мх RR — запись MX (Mail eXchanger, почтовый сервер) сообщает почтовой системе, куда посылать почту, адресованную любому адресату в домене firma.ru, в нашем случае — серверам firma.firma.ru. или relay3.te.net.ua. Число перед каждым именем системы — это приоритет записи MX RR. Запись ресурса с наименьшим номером (10) — это хост, куда почта должна посылаться в первую очередь. Если происходит ошибка, то почта может быть послана на машину с большим номером и т. д. Таким образом, можно указать несколько почтовых серверов, что поможет вам в случае форс-мажорных обстоятельств не потерять ваши почтовые сообщения; • A E R - A (Address, адрес) — IP-адрес: localhost

A

127.0.0.1

ns

A

192.168.0.1

mail

A

192.168.0.40

Эти строки описывают соответствие имен mail и ns в зоне firma.ru их IP-адресам.

Файл /var/named/f irma Файл зоны для нашей локальной сети будет иметь следующий вид: $TTL @

86400 IN

SOA

ns.firma. hostmaster.firma. (

2005021402 28800 7200 604800 86400 )

IN IN

NS TXT A

ns

IN

A

192.168.0.1

server

IN

CNAME

ns

IN

ns.firma. "firma local domain" 192.168.0.1

Файл /var/naed/f irma. rev Для нормального функционирования DNS-сервера требуется обратная (реверсная) зона, которая дает возможность DNS преобразовывать IP-адреса в имена хостов. Эти имена используются серверами различного рода (FTP, IRC и т. п.). Поэтому обратная зона требуется для полного доступа к различным службам в Интернете.


Сетевые настройки сервера, маршрутизация и DNS

191

Файл реверсной зоны для локальной сети имеет следующий вид: $TTL 86400 @

IN

SOA ns.firma. hostmaster.firma. ( 2003122401 36000 3600 720000 86400 )

IN

NS

ns. f irma.

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

Настройка вторичного DNS-сервера Открою вам страшную тайну — сервер может быть одновременно первичным и вторичным DNS-сервером для разных зон. Предположим, что нас попросили стать вторичным DNS-сервером для домена, к примеру, CDfree.ru. Рассмотрим, что же нам необходимо для этого сделать.

Файл /etc/named.conf В этом файле для домена CDfree.ru появится такая запись: //л*********************************

// Secondary * //********************************** zone "cdfree.ru" IN { type slave; masters { 195.108.80.22; }; file "cdfree.ru";

Что мы здесь имеем: тип DNS-сервера определяется строкой type slave,(подчиненный, вторичный). Строка masters { 195.108.80.22,- },- указывает, какой DNS-сервер является первичным и откуда наш сервер будет брать информацию. И последняя строка f i l e "cdfree.ru",- определяет, как называется конфигурационный файл зоны.

Файл /etc/named/CDf ree.ru $ORIGIN . $TTL 86400 ; 1 day cdfree.ru IN SOA ns.cdfree.ru. hostmaster.cdfree.ru. ( 2004220403 ; serial 28800 ; refresh (8 hours)


Глава 10

192 14400 3600000 86400 ) NS A MX

$ORIGIN cdfree.ru. ns www

A A

; r e t r y (4 hours) ; expire (5 weeks 6 days 16 hours) ,- minimum (1 day) cgo.te.ru. 195.108.80 .22 10 cgo.te. r u . 195.108.80 . 2 2 195.108.80 . 2 2

Этот файл синхронизируется с содержимым соответствующего файла первичного DNS-сервера.

Некоторые тонкости Того, что мы рассмотрели, вполне достаточно для настройки небольшого DNS-сервера, тем не менее разберем еще несколько полезных вещей, которые необходимо знать.

Записи ресурсов службы DNS Давайте рассмотрим несколько расширенный файл описания зоны: gw , A 192.168.0.2 HINFO "i486" "RH 6.2" TXT "The router" ns

A MX

HINFO

www User

CNAME A MX

HINFO TXT

192.168.0.1 10 mail "Pentium3" "RH 9" ns 192.168.0.3 10 mail "p3" "Windows2000" "Developer computer home t e l 223344"

Помимо знакомых вам строчек появились строки, содержащие HINFO, CNAME и тхт. • HINFO — информация о компьютере (Host INFOrmation) состоит из двух частей: первая часть — это информация об оборудовании машины, а вторая — описывает программное обеспечение и операционную систему


Сетевые настройки сервера, маршрутизация и DNS

193

данной машины. Помимо этой информации не рекомендуется вносить ничего другого. Пример: HINFO

"Pentium3" "RH 9"

Из данной строки видно, что наш DNS-сервер собран на базе процессора Pentium III и на нем установлена операционная система Linux Red Hat 9; • CNAME — каноническое имя (Canonical NAME) — это способ присвоить каждой машине несколько имен. При использовании CNAME необходимо следовать правилу, что записи мх, CNAME ИЛИ SOA никогда не должны ссылаться на имя, указанное как запись CNAME; • тхт — произвольная текстовая информация. Обычно используется в качестве расширенного комментария для описания хоста. Пример: TXT

"Developer computer home tel 223344"

Из содержимого строчки понятно, что это компьютер разработчика, а его домашний телефон — 223344. Так же существует еще один тип записи — RP (Responsible Party, группа ответственных). В принципе эта же информация может храниться и в записях тхт, однако применение записи RP ускоряет поиск данных об ответственных лицах. Список основных записей ресурсов службы DNS приведен в табл. 10.1. Таблица 10.1. Основные записи ресурсов (RR) службы DNS Обозначение записи

Содержание записи

Номер RFC или автор проекта

А

IP-адрес хоста

RFC 1035

АААА

Адрес IPv6

Проект, автор Thomson

CNAME

Каноническое имя домена

RFC 1035

GPOS

Географическое положение

RFC 1712

HINFO

Информация о хосте (процессор и ОС)

RFC 1035

ISDN

Адрес ISDN

RFC 1183

KEY

Ключ шифрования

Проект, автор Eastlake

LOC

Расположение

Проект, автор Vixie

MX

Имя хоста или домена для переадресации почты

RFC 1035

NSAP

SAP-адрес (адрес А в формате NSAP)

RFC 1706

NSAP-PTR

Аналог записи PTR для адреса NSAP

RFC 1706

7 3ак 1500


194

Глава 10

Таблица 10.1 (окончание) Обозначение записи

Содержание записи

Номер RFC или автор проекта

NULL

Пустая запись ресурса

RFC 1035

NXT

Следующий домен

Проект, автор Eastlake

PTR

Указатель на имя домена

RFC 1035

RP

Ответственные лица

RFC 1183

SIG

Цифровая подпись

Проект, автор Eastlake

SRV

Выбор сервера

Проект, автор Vixie

TXT

Произвольный текст

RFC 1035

WKS

Описание подключенных сервисов

RFC 1035

Х25

Адрес Х.25

RFC 1183

Реверсная зона Не забывайте об обратной (реверсной) зоне! Очень неприятно, когда по этой причине вы не сможете воспользоваться FTP-сервером или получите сообщения о нарушениях системы защиты.

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

Иерархические поддомены Если в вашей организации используется более одной подсети, то вам придется задать несколько доменов in-addr.arpa. Создание поддоменов, подчиненных первичному домену, целесообразно также при наличии в вашей организации нескольких отделов или подразделений. Это облегчит мониторинг сети, а также упростит организацию доступа в сеть и установку защитных фильтров. Конечно, если ваша сеть состоит всего из нескольких машин, смысла в создании иерархии доменов просто нет.

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


Сетевые настройки сервера, маршрутизация и DNS

195_

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

Инструменты Для тех, кто не хочет подробно изучать настройку DNS с помощью конфигурационных файлов, существуют доступные инструменты, позволяющие вносить изменения, особо не задумываясь. Произведите поиск, и вы наверняка найдете десяток-другой программ для удаленного администрирования DNS-сервера, в том числе и имеющих графическую "дружественную" оболочку. В частности, исходный код на языке HTML для создания инструментария по управлению службой DNS можно найти в Интернете по адресу http://webdns.lcs.mit.edu/cgi-bin/webdns/. Существует также универсальная программа для администрирования множеством сервисов через Интернет — Webmin.


Глава 11

Почта Несколькими главами ранее мы уже рассматр��вали процесс конфигурации почтовой службы для нашей локальной сети. Однако с получением своего собственного доменного имени нам придется вспомнить, что же мы делали, и немного изменить настройки. Пугаться не нужно, мы только должны показать нашему МТА-агенту, что у него появился свой собственный домен. Для этого нам придется опять покопаться в конфигурационных файлах sendmail. Опять же, для простоты, я просто приведу несколько укороченный файл, в котором оставлю только критически важные для настройки нашего сервера части. define('PROCMAIL_MAILER_PATH','/usr/bin/procmail')dnl

Определяет путь к программе procmail. define('ALIAS_FILE', '/etc/aliases')dnl

Определяет путь к файлу псевдонимов. FEATURE(redirect)dnl FEATURE(always_add_domain)dnl

Разрешает пересылку почты и добавление имени домена. FEATURE('blacklist_recipients')dnl FEATURE('dnsbl', 'dnsbl.nj abl.org')dnl FEATURE('dnsbl','drbl.online.com.ua')dnl FEATURE('dnsbl', 'bl.spamcop.net', '"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}')dnl

Вот этот кусок конфигурационного файла позволяет работать с черными списками, которые ведутся на серверах dnsbl.njabl.org, drbl.online.com.ua,


198

Глава 11

bl.spamcop.net. Как уже упоминалось ранее — вещь спорная и достаточно неоднозначная, не далее как неделю назад крупный одесский провайдер попал в такой список. В результате, по отзывам пользователей, почта, ориентированная на США, Англию и частично на Россию, не ходила. Сам провайдер эту проблему устранял около суток. А произошло это по банальной причине — кто-то из пользователей в Интернете получил "подарок", при помощи которого с его компьютера рассылался спам. Служба, определяющая "неблагонадежные" адреса, не особо раздумывая, внесла весь диапазон адресов провайдера в черный список. Так что, если хотите, оставляйте, но я все-таки склоняюсь к тому, чтобы не использовать черные списки. dnl FEATURE('accept_unresolvable_domains')dnl

А вот эта запись запрещает прием почты с адресов, для которых не смогли получить их символическое имя. INFUT_MAIL_FILTER('clamav-milter', 'S=local:/var/clamav/clmilter.socket, F=,T=S:4m;R:4m;E:10m')

Эта запись должна быть вам знакома — она предназначена для того, чтобы антивирусная программа clamav проверяла поступающую почту. В целом же конфигурационный файл будет иметь приблизительно такой вид: dnl This is the sendmail macro config file. If you make changes to this file, dnl you need the sendmail-cf rpm installed and then have to generate a dnl new /etc/sendmail.cf by running the following command: dnl dnl

m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

dnl include('/usr/share/sendmail-cf/m4/cf .m4') VERSIONIDf'linux setup for FedoraCore3 Linux')dnl OSTYPE('linux') dnl Uhcomment and edit the following line if your mail needs to be sent out dnl through an external mail server: dnl define)'SMART_HOST','smtp.your.provider') define('confDEF_USER_ID',''8:12'')dnl undefine('UUCP_RELAY')dnl undefinef'BITNET_RELAY')dnl define('confAUTO_REBUILD')dnl define('confTO_CONNECT', 'lm')dnl define('confTRY_NULL_MX_LIST',true)dnl define('confDONT_PROBE_INTERFACES',true)dnl define('PROCMAIL_MAILER_PATH','/usr/bin/procmail')dnl


Почта

199_

define('ALIAS_FILE',

'/etc/aliases')dnl

dnl define('STATUS_FILE!,

'/etc/mail/statistics')dnl

define('UUCP_JlAILER_I4AX',

'2000000')dnl

define('confUSERDB_SPEC', '/etc/mail/userdb.db1)dnl define('confPRIVACY_FLAGS', 'authwarnings,novrfy,noexpn,restrictqrun')dnl define('confAUTH_OPTIONS', 'A')dnl define('_FFR_MILTER', true) dnl TRUST_AUTH_KECH('DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define('confAUTH_MECHANISMS', 'DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define('confTO_QUEUEWARN', '4h')dnl dnl define('confTO_QUEUERETURN', '5d')dnl dnl define('confQUEUEJLA', '12')dnl dnl define('confREFUSE_LA', '18')dnl dnl FEATURE(delay_checks)dnl FEATURE('no_default_msa','dnl')dnl FEATURE('smrsh','/usr/sbin/smrsh')dnl FEATURE('mailertable','hash -o /etc/mail/mailertable.db')dnl FEATURE('virtusertable','hash -o /etc/mail/virtusertable.db')dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_f ile)dnl FEATURE <use_ct_file)dnl dnl The '-t' option will retry delivery if e.g. the user runs over his quota. FEATURE(local_procmail,'','procmail -t -Y -a $h -d $u')dnl FEATURE('access_db','hash -o /etc/mail/access.db')dnl FEATURE('blacklist_recipients')dnl FEATURE('dnsbl','dnsbl.njabl.org')dnl FEATURE('dnsbl','drbl.online.com.ua')dnl FEATURE('dnsbl', 'bl.spamcop.net', '"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}')dnl EXPOSED_USER('root')dnl dnl This changes sendmail to only listen on the loopback device 127.0.0.1 dnl and not on any other network devices. Comment this out if you want dnl to accept email over the network. dnl DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA') dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires dnl

a kernel patch

dnl DAEMON_OPTIONS('port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')


200

Глава 11

dnl We strongly recommend to comment this one out if you want to protect dnl yourself from spam. However, the laptop and users on computers that do dnl not have 24x7 DNS do need this. dnl FEATURE('accept_unresolvable_domains')dnl dnl FEATURE('relay_based_on_MX')dnl INPUT_MAIL_FILTER('clamav-milter', F=,T=S:4m;R:4m;E:10m')

'S=local:/var/clamav/clmilter.socket,

MAILER(smtp)dnl MAILER(procmail)dnl Cwlocalhost.localdomain

Что еще интересного? Вот есть такой файл — local-host-names. Если заглянем в него, то увидим следующее: # local-host-names - include all aliases for your machine here. firma.ru primer.ru alst.od.ua alst.odessa.ua

To есть для внешнего мира наш МТА-агент (sendmail) выступает в качестве почтового сервера для вышеприведенных доменов, о чем необходимо сделать записи в соответствующих DNS-зонах. Но и это еще не все. Есть еще один интересный файл — virtusertable. При помощи этого файла можно перенаправлять письма с адресов и целых доменов на другие адреса. Вот пример реального файла: Эргimer.ru

bos s

©alst.odessa.ua

alst@farlep.net

Salst.od.ua

alst@farlep.net

Что же тут мы видим? Все письма, которые идут на домен primer.ru, перенаправляются в локальный почтовый ящик (находящийся на нашем сервере) пользователя boss. А вот письма для домена alst.odessa.ua — на внешний почтовый ящик alst@farlep.net. Более подробно о настройке sendmail можно почитать в документации либо в книгах, которые уже изданы на русском языке. Что же касаемо настройки РОРЗ- или IMAP-сервера, то никакой дополнительной настройки при переходе с модемного соединения на выделенную линию не требуется.


Глава 12

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

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

Файл etc/vsftpd/vsftpd.conf Это основной конфигурационный файл, пример которого приведен ниже. # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities.


202

Глава 12

# # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you # will obviously need to create a directory writable by the FTP user. anon_upl oad_enabl e=NO # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. anon_mkdir_write_enable=NO # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # Activate logging of uploads/downloads, xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). # connect_from_port_20=YES # If you want, you can arrange for uploaded anonymous files to be owned # by a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is


FTP

203

# shown below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that turning on ascii_download_enable enables malicious remote parties # to consume your I/O resources, by issuing the command "SIZE /big/file" in # ASCII mode. # These ASCII options are split into upload and download because you may wish # to enable ASCII uploads (to prevent uploaded scripts etc. from breaking), # without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be # on the client anyway.. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. #

# You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting c e r t a i n DoS a t t a c k s .


204

Глава 12

#deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may specify an explicit list of local users to chroot() to their # home directory. If chroot_local_user is YES, then this list becomes a # list of users to NOT chroot(). #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin Is. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling # it. #1s_recurs e_enable=YES pam_s ervice_name=vs f tpd userlist_enable=YES tenable for standalone mode listen=YES tcp_wrappers =YES

Разберем основные параметры: • anonymous_enabie=NO — разрешает или запрещает доступ к серверу без авторизации. Поскольку у нас стоит задача разрешить доступ только для ограниченного круга лиц, мы должны для нашего сервера установить в NO. В такой конфигурации клиенты FTP-сервера получат доступ к любым каталогам файловой системы, исходя из прав соответствующих локальных пользователей. Это могут быть как домашние каталоги пользователей, так и системные каталоги; • iocai_enabie=YES — разрешает локальным пользователям использовать FTP-сервер. Тут без изменений, ведь мы не хотим оставить без доступа наших ВНУТРЕННИХ пользователей; • write_enable=YES — разрешает или запрещает пользователям записывать файлы на FTP-сервер. Так же можно ограничивать доступ посредством установки прав на файлы и каталоги; • anon_upload_enable=NO И anon_mkdir_write_enable=NO — ЭТИ два параметра разрешают либо запрещают анонимным пользователям сохранять


FTP

205_

файлы и создавать новые каталоги. Поскольку пока нам этого не нужно, задаем NO; О xferlog_enabie=YEs — разрешает службе вести журнал: кто и какие файлы скачивал или выгружал на сервер; • connect_from_port_20=YES — определяет порт, по которому работает FTP-сервер; О #banned_email_file=/etc/vsftpd.banned_emails — определяет, где расположен файл, содержащий текст приветствия; •

#chroot_list_enable=YES И

#chroot_list_file=/etc/vsftpd.chroot_list —

позволят ограничить возможность пользователей, зарегистрированных локально, перемещаться по дереву каталогов. При этом процесс, работающий с клиентом, будет выполняться в изолированной среде, и пользователь будет иметь доступ лишь к своему домашнему каталогу и его подкаталогам; • pam_service_name=vsftpd — указывает, какой модуль аутентификации используется при авторизации пользователя; • userlist_enable=YES — разрешает использование списка пользователей. Вот это именно то, что позволит нам ограничить доступ.

Файл etc/vsftpd.ftpusers Этот файл содержит список пользователей, которым ЗАПРЕЩЕНО пользоваться FTP-сервером. Обычно это следующие системные пользователи: root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody.

Файл etc/vsftpd.userjist Если переменная в конфигурационном файле имеет значение useriist_deny=NO, то в этом файле содержится список пользователей, которым разрешен доступ к FTP-серверу. Если же useriist_deny=YES (именно такое значение по умолчанию), то файл содержит список пользователей, которым запрещено пользоваться FTP-сервером. Для того чтобы мы смогли получить доступ к нашему серверу извне, необходимо для нашего брандмауэра задать правило, разрешающее прохождение FTP-пакетов. Это делается просто — добавляем следующие правила для iptables: iptables -A INPUT -p tcp -m multiport —sports 20,21 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport -s OUTIP —dports 20,21 -j ACCEPT service iptables save

Где OUTIP — наш внешний IP-адрес. Что касается анонимного доступа извне и разрешения записи для анонимных пользователей, все очень


206

Глава 12

просто — соответствующие переменные в файле vsftpd.conf устанавливаем в нужное значение: anonymous_enable=YES anon_upload_enable=YES

Однако для обеспечения безопасности необходимо тщательно следить за тем, чтобы анонимные пользователи не могли свободно разгуливать по дереву каталогов сервера. Проще всего, пожалуй, это сделать на уровне прав доступа пользователя или группы. В идеале, для внешних пользователей нужно вообще выделить отдельный дисковый раздел, "песочницу", из которой невозможно выбраться. Дальнейшие действия — управление правами доступа, разграничение каталогов для разных пользователей, возможность некоторым пользователям выгружать файлы для общего доступа и т. п. — целиком творческая часть работы администратора. В частности, никто не мешает завести несколько FTP-демонов на разных адресах для разных групп пользователей. Или поднять FTP-сервер внутри локальной сети и извне устроить на него туннель. Экспериментируйте, пробуйте и не забывайте — у каждой проблемы есть, по крайней мере, два решения.


Глава 13 Web-сервер Apache Мы уже успешно установили для наших внутренних нужд Apache, но с появлением собственного доменного имени подразумевается и наличие своей web-страницы. Само собой, можно отдать изготовление, поддержку и хостинг web-сайта куда-то на сторону, к примеру, дизайн-студии провайдера. Если к web-сайту осуществляется сотни запросов в минуту, страница динамически извлекается из базы данных, то в этом случае порождается большой трафик, что автоматом требует широкой полосы пропускания. Именно в такой ситуации бывает экономически оправданно собрать или арендовать отдельный сервер и поместить его вместе с web-сайтом на площадке провайдера. Стоить это будет порядка 100 долларов США в месяц. Почему провайдеры берут такие, казалось бы, "сумасшедшие" деньги за размещение сервера? А все очень просто — в договоре оговаривается, что только форс-мажорные обстоятельства могут помешать предоставить серверу нормальный доступ в Интернет, что подразумевает: П наличие нескольких независимых внешних каналов. Если какой-то выйдет из строя, то по другим каналам ваш сервер будет доступен (у нас же, если вы помните, только одна выделенная линия); • наличие полноценной системы бесперебойного питания, используются специальные системы, способные выдавать киловатты в течение суток, дизель-генераторы, два отдельных луча ввода электропитания (у нас при хорошем раскладе — источник бесперебойного питания, способный продержаться час); • наличие грамотно спроектированной системы вентиляции и охлаждения. Те, кто застал еще старые вычислительные центры, наверное, помнят — работники, даже в жару, ходили в свитерах, поскольку температура в машинном зале была +18; • и помимо всего этого — круглосуточный мониторинг сервера, с незначительными проблемами персонал справится сам, при критических — оповестит вас.


208

Глава 13

Если можно без всего этого обойтись, либо вероятность неприятностей (обрыв кабеля, отсутствие света и т. п.) мала, то решение организовать на нашем сервере web-сайт напрашивается само. Подразумевается, что количество одновременных запросов не более 10—30 в минуту, web-страницы небольшие и генерируемый поток не превышает 2/3 пропускной способности нашей выделенной линии. Плюс сайт может пережить "отсутствие" в Интернете какое-то время.

Конфигурация Apache Итак, возможны два варианта: первый — на нашем сервере только один web-сайт и второй — их несколько.

Единственный web-сайт Первый вариант простой — я просто приведу часть конфигурационного файла и расскажу, что к чему.

Файл httpd.conf Полный текст конфигурационного файла нам не нужен, поэтому все не нужное для наших целей я заменю точками.

# # Based upon the NCSA server configuration files originally by Rob # McCool. # # This is the main Apache server configuration file.

It contains the

# configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs-2.0/> for detailed information # about the directives. # # Do NOT simply read the instructions in here without understanding # what they do.

They're here only as hints or reminders.

If you are

# unsure consult the online docs. You have been warned. # # The configuration directives are grouped into three basic sections: # # #

1. Directives that control the operation of the Apache server process as a

whole (the 'global environment').

2. Directives that define the parameters of the 'main' or 'default'

# server, # host.

which responds to requests that aren't handled by a virtual


Web-сервер Apache # #

209

These directives also provide default values for the settings of all virtual hosts.

#

3. Settings for virtual hosts, which allow Web requests to be sent to

#

different IP addresses or hostnames and have them handled by the

#

same Apache server process.

# # Configuration and logfile names: If the filenames you specify for many # of the server's control files begin with "/" (or "drive:/" for Win32), # the server will use that explicit path.

If the filenames do *not*

# begin with "/", the value of ServerRoot is prepended -- so # "logs/foo.log" with ServerRoot set to "/etc/httpd" will be interpreted # by the server as "/etc/httpd/logs/foo.log". # ### Section 1: Global Environment ServerRoot "/etc/httpd" Timeout 120 Listen 80 ### Section 2: 'Main' server configuration # # The directives in this section set up the values used by the 'main' # server, which responds to any requests that aren't handled by a # <VirtualHost> definition.

These values also provide defaults for

# any <VirtualHost> containers you may define later in the file. # # All of these directives may appear inside <VirtualHost> containers, # in which case these default settings will be overridden for the # virtual host being defined. # # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as.


210

Глава 13

#

. On SCO (ODT 3) use "User nouser" and "Group nogroup".

#

. On HPUX you may not be able to use shared memory as nobody, and the

# # # # #

suggested workaround is to create a user www and use that user. NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) when the value of (unsigned)Group is above 60000; don't use Group #-1 on these systems!

User apache Group apache # # ServerAdmin: Your address, where problems with the server should be # e-mailed. This address appears on some server-generated pages, such # as error documents, e.g. admin@your-domain.com # ServerAdmin admin@firm.ru # # ServerName gives the name and port that the server uses to identify itself. # This can often be determined automatically, but we recommend you specify # it explicitly to prevent problems during startup. # # If this is not set to valid DNS name for your host, server-generated # redirections will not work. See also the UseCanonicalName directive. # # If your host doesn't have a registered ENS name, enter its IP address here. # You will have to access it by its address anyway, and this will make # redirections work in a sensible way. # ServerName www.firm.ru:80 DocumentRoot "/var/www/html" AccessFileName .htaccess ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


Web-сервер Apache

211

### Section 3: Virtual Hosts # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most # configurations # use only name-based virtual hosts so the server doesn't need to worry # about # IP addresses. This is indicated by the asterisks in the directives # below. # # Please see the documentation at # <URL:http://httpd.apache.org/docs-2.0/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration.

Вот этого кусочка нам будет достаточно для стандартной настройки сервера. Рассмотрим значения параметров. П serverRoot "/etc/httpd" — указывает на конфигурационный каталог, который использует Apache. • Timeout 120 — время ожидания реакции от клиента, после которого соединение закрывается. • Listen 80 — список портов, которые слушает сервер, можно задать несколько. • user apache — определяет пользователя, от имени которого работает сервер. П Group apache — определяет группу. О serverAdmin admin@firm.ru — адрес электронной почты администратора. • serverName firm.ru: 80 — задает имя и порт для web-сайта. П DocumentRoot W a r /www/html" — указывает корневую директорию для документов web-сайта. • AccessFiieName .htaccess — определяет файл, при наличии которого считываются ограничения на доступ к web-сайту. 11

• scriptAiias /cgi-bin/ " /var/www/cgi-bin/ — путь к каталогу сценариев. Если вам захочется заняться тонкой настройкой сервера, то советую обратиться к документации, расположенной на web-сайте www.apache.org.


212

Глава 13

Несколько web-сайтов (виртуальные web-серверы) Итак, что такое виртуальные web-сервера и для чего они нужны? Если идти классическим путем, то в том случае, когда вы захотите помимо web-сайта www.firma.ru завести себе еще www.e-shop.firma.ru, вам придется купить еще ��дин IP-адрес, выделить отдельный сервер, либо завести на уже существующем сервере еще одну копию Apache. Эти действия приведут, вопервых, к увеличению накладных расходов, во-вторых, к дополнительной трате ресурсов. Для удешевления была придумана и реализована схема виртуальных web-серверов. Как это работает? В сети есть один web-сервер, сконфигурированный так, чтобы он прослушивал один IP-адрес и в зависимости от того, к какому web-сайту происходит запрос, выдавал бы соответствующие страницы. Это дает и экономию в ресурсах, деньгах и простоту настройки. Однако обратной стороной медали является то, что при взломе сервера будет нанесен больший вред, поскольку злоумышленник получает доступ к десяткам или даже сотням web-сайтов. Виртуальные серверы могут иметь один и тот же IP-адрес и разные доменные имена, а могут иметь и разные IP-адреса. Для описания адресов и доменных имен виртуальных серверов служат директивы ServerName, ServerAlias, NamevirtualHost и virtuaiHost. Они необходимы, только если вам нужно установить более одного виртуального сервера. Директива ServerName, находящаяся вне секций virtuaiHost, определяет имя основного сервера, корневой каталог которого задан директивой DocumentRoot в файле srm.conf. Виртуальные серверы наследуют настройки основного; при необходимости специальной настройки соответствующие директивы помещаются в секции virtuaiHost, относящейся к данному серверу. Ниже приведен фрагмент конфигурационного файла для виртуальных серверов с различными IP-адресами: ServerName www.root.ru <VirtualHost 192.168.0.1> DocumentRoot /www/root.ru ServerName www.root.ru ErrorLog /var/log/error_log.root.ru CustomLog /var/log/access_log.root.ru combined </VirtualHost> <VirtualHost 192.168.11.6>


Web-сервер Apache

213

DocumentRoot /www/r.ru ServerName www.r.ru ErrorLog /var/log/error_log.r.ru CustomLog /var/log/access_log.r.ru combined </VirtualHost>

Далее приведен фрагмент конфигурационного файла для виртуальных серверов с одинаковыми IP-адресами: ServerName www.root.ru NameVirtualHost 192.168.0.2 <VirtualHost 192.168.0.2> DocumentRoot /www/root.ru ServerName www.root.ru ErrorLog /var/log/error_log.root.ru CustomLog /var/log/access_log.root.ru combined </VirtualHost> <VirtualHost 190.168.0.2> DocumentRoot /www/r.ru ServerName www.r.ru ServerAlias *.r.ru ErrorLog /var/log/error_log.r.ru CustomLog /var/log/access_log.r.ru combined </VirtualHost>

Настройка DNS В связи с вводом в эксплуатацию web-сайта необходимо кое-что изменить в настройках нашей DNS-зоны. Хорошим тоном считается возможность получать доступ как по адресу www.firma.ru, так и просто firma.ru. В связи с этим необходимо добавить следующую запись: www

IN

А

наш внешний IP-адрес

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


Глава 14

Прокси-сервер Если вы настроите свой браузер для работы через прокси-сервер, то при запросе некоторого документа из Интернета, если кто-то уже обращался с подобным запросом, вы получите документ незамедлительно, с максимальной скоростью, на которую способно ваше сетевое подключение, потому что вы получите копию документа, взятую из кэша прокси-сервера. Если же в кэше данного документа нет, то запрос будет переадресован web-серверу, на котором хранится оригинал, при этом его копия будет записана в кэш. Чем больше пользователей пользуются прокси-сервером, тем более существенной становится его помощь. Согласно статистике, количество обращений пользователей к одним и тем же документам в Интернет приближается к 60%. Многие прокси-серверы обладают еще одним интересным свойством — они могут обмениваться информацией между собой, что существенно ускоряет доступ к данным, хранящимся на удаленных или сильно загруженных серверах. Прокси-сервер предоставляет следующие возможности: • централизованный выход в Интернет через один сервер в сети; • локальное хранение часто просматриваемых документов для увеличения скорости загрузки страниц; • возможность регулировать пропускную способность канала в зависимости от его нагрузки; • авторизованный доступ в Интернет; • возможность обмена данными кэша. Что касается динамически формируемой информации, то не все проксисерверы обрабатывают ее корректно, однако большинство из них имеют большое количество настроек и обладают множеством интеллектуальных алгоритмов, позволяющих работать с любыми данными. Наиболее распространенным прокси-сервером, доступным под лицензией GNU, является Squid.


216

Глава 14

Squid Squid — это высокопроизводительный кэширующий прокси-сервер, поддерживающий протоколы FTP, gopher и HTTP. Squid сохраняет часто запрашиваемые данные в оперативной памяти компьютера, что позволяет увеличить производительность, кэширует DNS-запросы (это свойство интересно для тех, кто не имеет своего DNS-сервера). Помимо вышеперечисленных возможностей, поддерживает SSL, расширенный контроль доступа и полную регистрацию запросов. Одной из ключевых возможностей пакета Squid является использование протокола ICP (Internet Cache Protocol, протокол интернет-кэширования), что позволяет создать иерархию серверов Squid для дополнительной экономии пропускной способности канала. Поддерживаемые функции: П кэширование HTTP, FTP;

• SSL; CJ иерархия кэшей; • ICP, HTCP (HyperText Cache Protocol), CARP (Cache Array Routing Protocol), WCCP (Web Cache Control Protocol), Cache digests1; О прозрачность; • гибкий контроль доступа; • HTTP-серверное ускорение; • SNMP; • кэширование DNS-запросов; • возможность ограничения трафика. Установка Squid не вызывает проблем. После конфигурирования необходимо будет его запустить с помощью команды service. Также не забывайте прописать старт службы при включении операционной системы при помощи утилиты ntsysv.

Конфигурирование пакета Squid Основной конфигурационный файл пакета Squid — /etc/Squid.conf. Размер этого файла достаточно велик, поскольку он содержит множество параметров, начиная с номера порта для ICP-запросов и заканчивая правилами доступа к информации. Далее приведены параметры конфигурации Squid, разбитые на типы. Однако приведенный список не является полным и исчерпывающим, поскольку он содержит только наиболее интересные (с нашей точки зрения) параметры конфигурации. Протоколы управления кэшем прокси-сервера.


Прокси-сервер

217

Сетевые параметры Сетевые параметры имеют несколько настроек. • http_port 3128 — порт для запросов клиентов. • icp_port 3130 — порт для ICP-запросов. В том случае, если не предполагается использовать иерархию прокси-серверов, необходимо указать нулевой порт. • htcp_port 4827 — порт для общения с соседями через ТСР-протокол. • mcast_groups 239.128.16.128 224.о. 1.20 — адреса групп, используемые для получения ICP. • passive_ftp on | off — режим пассивного FTP. Необходимо включить в том случае, если Squid находится за брандмауэром.

Размер кэша Раздел предназначен для определения параметров кэша — размера, использования, времени хранения информации и т. п. • cache_mem 8 мв — объем оперативной памяти, используемой для хранения обрабатываемых объектов; • cache_swap_high 95 — при достижении данного уровня заполнения кэша (в процентах) начинается ускоренный процесс очистки кэша от устаревших объектов; • cache_swap_low 90 — процесс удаления старых объектов заканчивается, если достигнут заданный уровень (в процентах); Я maximum_object_size объекта;

4096 кв — максимальный размер кэшируемого

• minimum_object_size о кв — минимальный размер кэшируемого объекта; файлы меньшего размера не сохраняются; • ipcache_size 1024 — размер кэша для IP-адресов; • ipcache_high 95 — верхний уровень заполнения IP-кэша для алгоритма удаления старых объектов; • ipcache_iow 90 — нижний уровень заполнения IP-кэша для алгоритма удаления старых объектов.

Имена и размеры файлов В этом разделе определяются имена и размеры используемых файлов: •

cache_dir

тип Directory-Name Mbytes

Level-1 Level2 — определяет

имя, размер и количество подкаталогов на первом и втором уровне кэша на диске — каждый кэшируемый объект кладется в отдельный файл, файлы хранятся в двухуровневой иерархии каталогов;


218

Глава 14

О cache_access_log /usr/local/squid/logs/access.log — место Хранения журнала обращений к кэшу; П cache_log /usr /local /squid/ logs /cache, log — место хранения журнала запусков процессов; • Cache_store_log /usr/local/squid/logs/store.log — место хранения журнала записи объектов в дисковый кэш; П emuiate_httpd_iog on | off — производить ли эмуляцию формата журнала HTTPD; • mime_table /usr/local/squid/etc/mime.conf — таблица ТИПОВ MIME; • log_mime_hdrs off — в журнал access записываются полученные HTTPзаголовки; • useragent_iog имя-файла — в этот файл будут записываться строки User-agent из HTTP-заголовков; • debug_opt4ons раздел, уровень — уровень отладки; ALL — для всех разделов; по умолчанию ALL, I ; • iog_fqdn off — позволяет определять и записывать в журнал полные доменные имена источника запроса.

Параметры внешних программ Как и большинство серьезных программ, Squid позволяет воспользоваться внешними программами для выполнения некоторых действий. К примеру, сбор статистики или обработка трафика. П ftp_user email-адрес — будет подставляться вместо пароля при анонимном доступе к FTP-серверам; по умолчанию — squid®, вызывает проблемы с серверами, которые проверяют синтаксис адреса; О cache_dns_program /usr/local/squid/bin/dnsserver — местоположение программы, кэширующей DNS-запросы; • dns_children 5 — число процессов, которые делают DNS lookup (получение по IP-адресу доменного имени и наоборот); П dns_nameservers список-1Р-адресов — ИСПОЛЬЗуется вместо списка DNS-серверов, определенного в /etc/resolv.conf; • redirect_program none — позволяет подключить программу преобразования URL при каждом запросе; • redirect_chiidren 5 — параметр определяет, сколько процессов преобразования URL запускать параллельно; • redirect_rewrites_host_header O n — разрешает или запрещает изменение поля Host: в заголовке запроса; по умолч��нию Squid переписывает поле Host: в заголовках преобразованных запросов;


Прокси-сервер

219

П redirector_access a c i — какие запросы направлять через редиректор; по умолчанию — все; О authenticate_program none — позволяет производить аутентификацию клиентов, делающих запросы; программа должна в цикле читать строку "имя пароль" выдавать ок или ERR; должен быть определен параметр ACL proxy_auth;

• authenticate_chiidren 5 — параметр определяет, сколько параллельных процессов будут заниматься аутентификацией; О a u t n e n t i c a t e _ t t i 3600 — параметр определяет, сколько секунд кэшировать результаты работ программы аутентификации; D authenticate_ip_ttl число — необходимо установить 0, чтобы с нескольких адресов не смогли воспользоваться одним именем.

Время ожидания В этом разделе задаются различные временные параметры Squid: О connect_timeout 120 seconds — время ожидания соединения с сервером; • siteseiect_timeout 4 seconds — максимальное время на выбор URL; • read_timeout 15 minutes — сколько времени разрешается ждать следующего байта от сервера; О request_timeout зо seconds — сколько разрешается ждать запроса после установления соединения; О ciient_lifetime I day — сколько времени разрешать клиенту быть присоединенным к Squid; соединение обрывается, даже если происходит передача данных; О haif_ciosed_ciients on — разрешать наполовину закрытые соединения — например чтение есть, а запись уже закрыта; • shutdown_lifetime зо seconds — сколько времени продолжать обслуживание после получения сигнала SIGTERM ИЛИ SIGHUP.

ACL — Access Control List Этот раздел определяет правила доступа пользователей к группам файлов и хостов. С помощью ACL (Access Control List, список контроля доступа) можно очень гибко настроить доступ к различным web-сайтам. Определение списка доступа производится с помощью следующей команды: a c l <имя> <тип> <строка>

где <имя> — имя правила, <тип> — тип объекта, <строка> — регулярное выражение (шаблон для сравнения), по умолчанию чувствительное к регистру букв. Параметр тип может принимать следующие значения: П IP-адреса клиентов — src ip-address/netmask;


220

Глава 14

П диапазон IP-адресов — src addri-addr2/netmask; • получение IP-адреса по URL — srcdomain foo.com; П если в URL использовался IP, то делается попытка определить имя домена, если не удалась, то подставляется слово none — dstdomaien foo.com; • получение IP-адреса клиента по URL с использованием регулярных выражений — srcdom_regex [-i] строка; О если в URL использовался IP-адрес, то делается попытка определить имя домена, используя регулярные выражения — dstdom_regex t-i] строка; П регулярное выражение для всего URL — uri_regex [-i]

строка;

П регулярное выражение для path-части URL — uripath_regex t-i] строка; • определяются безопасные порты — port порт; • сопоставляется заголовок User-Agent — browser t-i] regexp; П ограничивает число соединений с одного и того же IP-адреса — maxconn число.

Права доступа Права доступа определяются следующими строками: • http_access allow | deny [! ]aclname — Кому разрешать ДОСТУП ПО HTTP; П icp_access allow| deny [! ]aclname — кому разрешать доступ ПО ICP; • miss_access allow|deny [!]aclname— кому разрешить Получать ответ MISS; • cache_peer_access cache-host allow|deny [!]aclname— ОфЭНИЧИТЬ запросы к данному соседу; •

proxy_auth_realm Squid proxy-caching web server — строка текста, KOTO-

рая будет выдана на экран клиента при запросе имени/пароля доступа к кэшу.

Параметры администрирования Параметры администрирования определяются следующими строками: О cache_mgr email — почтовый адрес, на который будет послано письмо, если у Squid возникнут проблемы; • cache_effective_user nobody — если запускается Squid от имени root, то заменить UID на указанный; • cache_effective_group nogroup — если запускается Squid от группы root, то заменить GID на указанный; О visible_hostname имя-хоста — это имя будет упоминаться в сообщениях об ошибках;


Прокси-сервер

221

О unique_hostname уникальное-имя — если нескольким кэшам дали ОДНО и то же visible_hostname, необходимо определить каждому из них уникальное имя; П hostname_aliases имя... — список синонимов для имени хоста.

Параметры для работы в режиме ускорителя web-сервера Параметры для работы в режиме ускорителя web-сервера определяются следующими строками: • httpd_accei_host hostname — если нужна поддержка виртуальных хостов, в частности для transparent proxy (прозрачное кэширование), то вместо имени указать virtual; • httpd_accei_port port — порт для web-сервера; • httpd_accei_with_proxy on | off — кэширование для ускоряемого сервера; П httpd_accel_uses_host_header on | off — ДЛЯ работы В прозрачном режиме требуется включить, иначе виртуальные серверы не будут правильно кэшироваться.

Пример конфигурации Squid Как вы уже заметили, опций для конфигурации Squid очень много. Для быстрой настройки прокси-сервера можно воспользоваться приведенными ниже параметрами. Конечно, они не являются идеальными, наверняка тонкая настройка поможет вам оптимизировать сервер как с точки зрения увеличения производительности, так и с точки зрения безопасности. Возьмем стандартный файл Squid.conf и отредактируем только нижеприведенные строки: • http_port 3128 — номер порта, на котором Squid будет слушать команды от клиентов. Помимо этого порта принято использовать порты 8080 и 8088; • hierarchy_stoplist cgi-bin, chat — СЛОВЭ В URL, при обнаружении КОторых прокси-сервер будет напрямую перенаправлять запрос серверу; • cache_mem 16 мв — сколько оперативной памяти Squid может забрать под свои нужды. Чем больше выделить памяти, тем быстрее будут обрабатываться запросы; • maximvuTL.object_size 16384 кв — максимальный размер объектов, которые будут сохранены в кэше. Размер специфичен для ваших задач и объема жесткого диска; • cache_dir /usr/local/Squid/cache 2048 16 256 — указывает, где СОХранять кэшируемые файлы. Под кэш выделяется два гигабайта и создается 16 и 256 каталогов 1-го и 2-го уровня;


222

Глава 14

О ftp_user anonymousSv.ru — задает, под каким паролем регистрироваться на анонимных FTP-серверах; • negative_tti I minutes — время жизни страничек с ошибкой; • positive_dns_tti 6 hours — время жизни удачного преобразования DNSимен в IP-адреса; • negative_dns_ttl 5 minutes — время ЖИЗНИ СООТВеТСТВвННО удачНОГО и неудачного преобразования DNS-имен в IP-адреса. Дальнейшие наши действия касаются разграничения прав пользователей. Первым делом необходимо определить ACL. Сначала закомментируем все строчки в файле Squid.conf, начинающиеся на acl. Затем пишем свои правила. К примеру: • acl users proxy_auth vasya petya nina — ЭТОЙ строчкой МЫ задаем правило, по которому разрешаем пускать вышеперечисленных пользователей с использованием авторизующей программы через Squid; П acl BANNER url_regex banner reklama linkexch banpics us\.yimg\.com [\./]ad[s]?[\./] — это правило определяет адреса, содержащие рекламу. Интересно для тех, кто хочет отказаться от получения разнообразных баннеров. Позволяет экономить сетевой трафик; • http_access deny .'users — эта строка запрещает доступ всем пользователям, кроме тех, которые перечислены в группе users; П http_access deny BANNER — запрещаем доступ к адресам, удовлетворяющим правилу BANNER (убираем рекламу); • proxy_auth_realm Vasy proxy-caching web server — СТрОКЭ, которая ВЫВОДИТСЯ на экране авторизации; • cache_mgr vasya@v.ru — если у клиента возникает проблема — выводится HTML-страница с сообщением и адресом электронной почты администратора, в нашем случае vasya@v.ru; О cacne_effective_user nobody — имя пользователя, с чьими правами запускается прокси-сервер; • cache_effective_group nogroup — ИМЯ Группы, С ЧЬИМИ правами запускается прокси-сервер; D ciient_db on — параметр разрешает собирать статистику по клиентам. Поскольку стандартной настройки в такой сфере, как использование канала, места на винчестере, оперативной памяти просто не может быть, более тонкие настройки и офаничения вы должны обдумать и настроить сами.

Transparent proxy Transparent proxy — это таким образом настроенный прокси-сервер, что его использование прозрачно для пользователей. То есть пользователям не при-


Прокси-сервер

223

дется что-либо настраивать в браузерах. Для этого необходимо сделать следующее: • добиться, чтобы все запросы пользователей попали на компьютер, где работает прокси-сервер; • добиться, чтобы эти запросы попадали собственно к прокси-серверу; • добиться, чтобы ваш прокси-сервер их правильно обработал. Выполнить первый пункт можно разными способами. Самый простой путь — поставить прокси-сервер и маршрутизатор на один компьютер, через который проходит весь трафик. Также необходимо таким образом настроить маршрутизатор и брандмауэр, чтобы транзитные пакеты, предназначенные для порта 80, попадали на вход прокси-сервера. Для правильной обработки полученных запросов в Squid.conf нужно добавить следующие строчки: httpd_accel www.your.domain 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Ключи запуска Squid Помимо конфигурационного файла, поведением программы Squid можно управлять с помощью ключей командной строки. Далее приведены некоторые из них с пояснениями: • -а — указывает порт для входящих запросов; П -d — выводит отладочную информацию на устройство stderr (обычно — текущая консоль); • -f имя_файла_конфигурации — позволяет использовать альтернативный конфигурационный файл (удобно для отладки сервера); О -h — выводит краткую справку по программе Squid; П -к — этот ключ позволяет посылать Squid следующие управляющие сигналы: • reconfigure — посылка сигнала HUP. Используется для прочтения измененного конфигурационного файла; • r o t a t e — позволяет произвести ротацию журналов (сигнал USRI); • shutdown — прервать выполнение программы с корректным завершением (сигнал TERM); • interrupt — немедленно завершить работу программы (сигнал INT); • k i l l — "убить" приложение (KILL); • debug — начать/закончить полную трассировку (сигнал USR2); • check — проверка (сигнал ZERO);


224

Глава 14

П -u — задает порт для входных 1СР-запросов; О -v — выводит версию программы; • -z — создает дисковый кэш при первом запуске (Важно!); • -D — предписывает не производить DNS-тест при запуске; • - F — восстанавливает после сбоя не в фоновом режиме (ускорение восстановления); • -N — предписывает не становиться фоновым процессом; П -v — включает поддержку виртуальных хостов для режима акселерации; О -х — включает отладку при разборе конфигурационного файла; • -Y — включает быстрое восстановление после сбоев. Первый раз Squid нужно запускать с ключом -z: Squid -z

При этом программа создаст дерево кэшей. Этой же командой следует воспользоваться с том случае, если вам необходимо очистить кэш. Для закрытия текущих файлов журналов и создания новых (чистых) файлов используется команда: Squid — k rotate

Файлы журналов Squid Файл access.log Файл access.log используется для хранения информации обо всех. Запись добавляется, когда клиент закрывает соединение. Для прокси-сервера с большим трафиком файл может за день увеличиться на десятки мегабайт. К примеру, при трафике в 10 тыс. запросов в сутки объем журнала увеличивается примерно на 2 Мбайт. Единицей информации о соединении является строка. Строка состоит из десяти полей. Ниже приведено описание полей с пояснениями: • timestamp — время в UNIX-формате (время с 1 января 1970 года в миллисекундах); П elapsed — затраченное время в миллисекундах; • c l i e n t IP address — IP-адрес клиента, пославшего запрос; • type /НТТР — результат запроса, где type: • TCP_HIT — верная копия объекта нашлась в кэше; • TCP_MISS — запрашиваемый объект не был в кэше; • TCP_EXPIRED — объект есть в кэше, но он устарел;


Прокси-сервер

225

• TCP_CLIENT_REFRESH — клиент запросил принудительное обновление объекта; • TCP_REFRESH_HIT — объект в кэше был старым, был сделан запрос к источнику и источник ответил "объект не изменился"; • TCP_REFRESH_MISS — объект в кэше был старым, был сделан запрос к источнику и тот вернул обновленное содержание; • TCP_IMS_HIT — клиент выдал запрос, объект оказался в кэше и свежим; • TCP_IMS_MISS — клиент выдал запрос для просроченного объекта; • TCP_REF_FAIL_HIT — объект в кэше устарел, но запросить новую копию не удалось; • TCP_SWAPFAIL — объект должен находиться в кэше, но его не смогли извлечь; • TCP_DENIED — отказ; • size — количество байтов, переданных клиенту; • method — метод передачи информации; GET, HEAD, POST ДЛЯ TCPзапросов или ICP_QUERY для UDP-запросов; • URL — адрес запрашиваемого объекта; О ident " -" — объект недоступен; • hierarchy data/Hostname — результат запросов к братским/родительским кэшам: • PARENT_HIT — UDP-запрос к родительскому кэшу (parent) вернулся с подтверждением; • PARENT_UDP_HIT_OBJECT — объект оказался в родительском кэше parent и поместился в UDP-ответе; • DIRECT — объект был запрошен с оригинального сервера; • тип содержимого (МШЕ-тип/подтип).

Файл store.log Файл store.log используется для хранения информации обо всех кэшируемых объектах. Единицей информации о соединении является строка. Строка состоит из одиннадцати полей. Ниже приведены поля с пояснениями: • Time — время в UNIX-формате (время с 1 января 1970 года в миллисекундах); • action — действие: • RELEASE — удален из кэша; • SWAPOUT — сохранен на диск; • SWAPIN — был на диске, загружен в память; 8 3ак. 1500


226

Глава 14

П НТТР reply code — код ответа web-сервера; П НТТР Date — дата создания объекта; • НТТР Last-Modified — время последней модификации объекта; • НТТР Expires — срок жизни объекта; • НТТР content-туре — тип объекта; • НТТР content-Length — размер объекта; • реально полученное число байтов. В том случае, если не совпадает с предыдущим полем, объект не сохраняется; • НТТР metod — метод передачи информации (GET, HEAD, POST); П Access key — ключ доступа (обычно URL).

Файл useragent.log Предназначен для хранения информации о том, какими браузерами пользуются клиенты. Малоинтересен в практическом плане, разве что для получения статистики.

Нестандартные применения Функциональность программы Squid не ограничивается только функцией прокси-сервера. У нее есть достаточно много других интересных применений. В этом разделе мы рассмотрим только некоторые из них.

Борьба с баннерами Наверняка вам встречались web-сайты, на которых нужной информации было от силы на килобайт, а рекламных баннеров (зачастую анимированных) — 5—6. Хорошо когда канал большой и бесплатный. Когда же пользуешься обычным коммутируемым соединением, да еще платишь за соединение из своего кармана, каждый килобайт начинаешь считать. В этом случае можно настроить локальный сервер Squid таким образом, чтобы не происходила закачка ненужных баннеров. Этого можно добиться несколькими способами. На месте баннеров показываются разорванные картинки или перекрещенные прямоугольники (неполученные файлы). Определяем web-сайты баннерных сетей и создаем для них регулярные выражения. Создаем в каталоге /usr/local/Squid/etc следующие файлы: П banners_path_regex — содержит по одному регулярному выражению на строку; • banners_regex — содержит по одному регулярному выражению на строку;


Прокси-сервер

227

О banners_exclusion — это строки, трактуемые в предыдущих файлах как баннеры, но изменять которые не рекомендуется. В Squid.conf добавляем следующие правила: acl banners_path_regex urlpath_regex "/usr/local/Squid/etc/banners_path_regex" acl banners_regex url_regex

"/usr/local/Squid/etc/banners_regex"

acl banners_exclusion url_regex

"/usr/local/Squid/etc/banners_exclusion"

http_access deny banners_path_regex http_access deny banners_regex

!banners_exclusion

!banners_exclusion

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

Разделение внешнего канала Часто бывает так, что у вас есть внешний канал, скажем, 128 Кбит, и есть несколько групп пользователей с определенным приоритетом. И требуется, чтобы группа 1 имела одну фиксированную ширину наружного канала (скажем, 64 Кбит), а группа 2 и 3 — ширину наружного канала по 32 Кбит. Для решения этой непростой задачи мы также можем воспользоваться Squid. Немного терминологии: • пул — набор групп "емкостей" определенного класса; • группа "емкостей" — часть пула, привязанная к хосту, сети или общая для всех; • "емкость" ограниченного объема — та, в которую с определенной скоростью вливается внешний трафик, и из которой он раздается клиенту. Определены три класса пулов: О одна "емкость" на всех из этого класса; П одна общая "емкость" и 255 отдельных для каждого хоста из сети класса С; П 255 "емкостей" для каждой сетки класса В и отдельная "емкость" для каждого хоста. Пример конфигурации Squid для трех классов пулов: delay_pools 3

# 3 роо1ы

delay_class 1 1 # 1 pool 1 класса delay_class 2 1 # 2 pool 1 класса delay_class 3 3 # 3 pool 3 класса delay_access 1 allow staff delay_access 1 deny a l l delay_access 2 allow students


228

Глава 14

delay_access 2 deny all delay_access 3 allow college delay_access 3 deny all delay_parameters 1 640000/640000 delay_parameters 2 64000/64000 delay_parameters 3 64000/64000 32000/64000 6400/32000

Строка, определяющая максимальную ширину виртуального канала, имеет следующий вид: delay_parameters pool total_rest/total_max net_rest/net_max ind_rest/ind_max

где: • pool — номер пула, для которого определяются каналы; • t o t a l — ширина канала на всех; • net — ширина канала на подсеть; • ind — ширина канала на отдельный адрес; О r e s t — скорость заполнения (байт/с); • max — объем "емкости" (байт).

Обработка статистики В стандартную поставку пакета Squid входят сценарии, написанные на Perl, позволяющие создавать отчеты о работе программы Squid: • access-extract.pl — получает на стандартный ввод журнал access.log и выдает на стандартный вывод промежуточный результат; • access-summary.pl — получает на вход результат работы access-extract.pl и делает из него красивый отчет.'

Программа Squid Cache and Web Utilities (SARG) Это программа, обрабатывающая журналы Squid и составляющая на их базе отчеты, которые хранятся в стандартном HTML-формате, поэтому их можно просматривать через браузер, копировать и распечатывать, также их можно генерировать в определенный каталог или отправлять по почте. Предоставляется следующая информация: • количество работавших пользователей; П время их работы; • трафик по каждому пользователю;


Прокси-сервер

229

• использование кэша каждым пользователем; • список web-серверов, посещенных пользователем; П итоговые цифры по трафику и времени. Существуют также дополнительные отчеты: Top sites и Useragents. Данные генерируются за период, интервал которого берется из журнала Squid. Если ротация журналов Squid не производится, то SARG создает отчеты нарастающим итогом.

Программа MRTG Еще одна программа, позволяющая получать при соответствующей настройке отчеты о работе Squid. Вывод осуществляется в виде web-страниц.


Глава 15

NNTP. Сервер новостей Одной из популярных служб доступных в Интернете является Usenet (новости, телеконференции, эхо-конференции в FIDO). Это похоже на смесь электронной почты и web-форума — те же темы и сообщения, как в webфоруме, только пользователь получает и отправляет сообщения, как электронную почту. В Usenet минимальной единицей информации является статья. Статья помещается в конференцию, которая имеет свою тему. Конференций множество — несколько десятков тысяч и они имеют иерархическую структуру. Имя образуется из имени родительской иерархии, к которому через точку добавляется имя конференции. К примеру, fido7.ru.Hnux, где fido7 — корень иерархии, показывающий, что группа новостей импортирована из эхоконференций FIDO, ru — русскоязычная, linux — посвящена Linux. Для приема и передачи статей используются News-серверы (Usenet-серверы). Эти серверы производят синхронизацию (обмен статьями) между собой. Для передачи и приема статей используется протокол NNTP.

Протокол NNTP Протокол NNTP описывается в документе RFC 977, а стандарт обмена сообщениями в Usenet в документе RFC 1036. NNTP предназначен для рассылки, подписки, поиска и доставки новостей на основе TCP по технологии клиент-сервер, использует стандартные сообщения, описанные в RFC 850. Единицей хранения на сервере является статья. Рассмотрим стандартный сценарий обмена информацией по NNTP. Пусть есть два или более хоста (один из них выступает в роли клиента, остальные — серверы). Процедура обмена начинается с запроса на получение списка новых групп новостей, для чего выдается команда NEWGROUPS. Затем клиент делает запрос командой NEWNEWS О наличии новых статей из групп, представляющих интерес. Сервер высылает список статей, клиент обрабатывает


232

Глава 15

список и запрашивает о получении статей, отсутствующих у клиента. И, наконец, клиент может сообщить серверу, какие новые статьи он получил в последнее время. NNTP использует протокол TCP и порт 119. На команды, посылаемые клиентом, предусмотрены текстовые и статусные отклики. Всякая сессия начинается с процедуры установления соединения между клиентом и сервером по инициативе клиента. Данные могут посылаться только после цифрового статусного отклика. Они представляют собой последовательности строк, каждая из которых завершается парой символов CR+LF. В конце текста всегда посылается строка, содержащая один символ "." (точка), за которым следует CR+LF. Если исходный текст содержит точку в начале строки, то она перед посылкой дублируется. Статусный отклик представляет собой реакцию сервера на команду, полученную от клиента. Строки статусного отклика начинаются с трехзначного десятичного кода, в котором закодировано определенное состояние системы. Трехзначный код является позиционным. Слева направо — первая цифра определяет состояние команды: успешно, в процессе выполнения, ошибка. Вторая цифра характеризует категорию команды. Третья цифра — уточняющее сообщение. Некоторые коды являются предшественниками последующего текстового отклика. Статусные отклики могут иметь параметры (числа или имена). Число и тип параметров фиксировано для каждого конкретного отклика. Параметры отделяются от кода отклика и друг от друга одиночным пробелом. Все цифровые параметры имеют десятичное представление и могут начинаться с нулей. Все строковые параметры начинаются после пробела и завершаются пробелом или символами CR+LF. Любой текст, который не является параметром отклика, должен отделяться от последнего параметра, если таковой имеется, пробелом и завершаться пробелом.

Основные команды протокола NNTP В этом разделе мы рассмотрим основные команды протокола NNTP. Команды можно записывать в любом регистре, длина команды не должна превышать 512 байт. ARTICLE. Существует две формы команды ARTICLE, каждая из которых использует различные методы спецификации извлекаемой статьи. Когда за командой ARTICLE следует идентификатор сообщения в угловых скобках ("<" и ">"), используется первая форма команды; если же в команде указывается цифровой параметр или нет параметра совсем, реализуется вторая форма. ARTICLE <message-id>

Команда отображает заголовок, пустую строку и текст заданной статьи. Идентификатор сообщения (message-id) представляет собой идентификатор, содержащийся в заголовке статьи. Предполагается, что клиент получил


NNTP. Сервер новостей

233

идентификатор сообщения из списка, полученного командой NEWNEWS. Команда не изменяет указателя текущей статьи. ARTICLE [nnn]

Отображает заголовок, пустую строку и текст текущей или указанной в цифровом параметре статьи. Опционный параметр nnn представляет собой числовой идентификатор статьи в текущей группе новостей. Он выбирается из диапазона, который был выдан при выборе группы. Если этого параметра нет, предполагается текущая статья. Эта команда устанавливает указатель текущей статьи, если номер статьи указан корректно. В ответ сервер выдает номер текущей статьи, строку-идентификатор сообщения и текст статьи. Присылаемая строка идентификатора сообщения представляет собой заключенную в угловые скобки последовательность символов, которая извлечена из заголовка статьи. BODY. Команда BODY идентична команде ARTICLE за исключением того, что она возвращает только основной текст статьи. HEAD. Команда HEAD идентична команде ARTICLE за исключением того, что она возвращает только строки заголовка статьи. STAT. Команда STAT похожа на команду ARTICLE за исключением того, что в ответ не присылается никакого текста. Команда STAT служит для установки указателя статьи без пересылки какого-либо текста. Возвращаемый отклик содержит идентификатор сообщения. GROUP ggg. Команда предназначена для выбора группы сообщений. Обязательный параметр ggg — имя группы новостей, которая должна быть выбрана. Отклик на успешный выбор группы возвращает номера первой и последней статьи в группе и оценку общего числа статей в группе. После выбора группы внутренний указатель статьи устанавливается на первую в ней запись. Если выбрана несуществующая группа, остается в силе выбор предыдущей группы. HELP. Эта команда дает краткое описание команд, которые может воспринять сервер. Отклик на команду имеет текстовую форму и завершается строкой с одиночной точкой в начале. IHAVE <message-id>. Команда IHAVE информирует сервер о том, что клиент владеет статьей с идентификационным кодом <message-id>. Если сервер хочет скопировать статью, он пришлет отклик, предлагающий клиенту прислать ее. Если запрошена передача статьи, клиент должен выслать полный текст статьи, включая заголовок. Сервер в этом случае пришлет отклик, уведомляющий об успехе или неудаче этой операции. LAST. По команде LAST указатель на статью устанавливается на предшествующую запись в текущей группе. Если указатель уже установлен на первую


234

Глава 15

статью, отправляется сообщение об ошибке, а указатель остается неизменным. LIST. Присылает список доступных групп новостей. Каждой группе новостей соответствует строка в следующем формате: <group> <last> <first> <p>

где <group> — название группы новостей, <iast> — номер последней известной статьи в данной группе, <first> — номер первой статьи в группе, <р> — может быть либо у, либо п, указывая на наличие или отсутствие разрешения на рассылку. Поля <f i r s t > и <iast> являются числовыми. Если код поля <iast> превосходит код поля <f irst>, в файле данной группы новостей нет ни одной статьи. NEWGROUPS date time [GMT] [<distributions>]. Список групп новостей, созданных начиная с даты <date> и времени <time>, будет представлен в том же формате, что и в случае команды LIST. Дата посылается в виде 6 цифр в формате ГГММДД, где ГГ — последние две цифры года, ММ — номер месяца (с нулем в начале, если необходимо), ДД — номер дня в заданном месяце. Дополнение для года берется из предположения о ближайшем тысячелетии, так 86 предполагает 1986, 30 — 2030, 99 — 1999, а 00 — 2000 годы. Время должно характеризоваться 6 цифрами в формате ЧЧММСС, где ЧЧ — часы с начала суток в 24-часовом исчислении, ММ — минуты 00—59, а СС — секунды 00—59. Временная зона определяется сервером, в противном случае появляется символьная комбинация GMT (время указано по Гринвичу). Заключенный в угловые скобки опциональный параметр d i s t r i b u t i o n s представляет собой список групп рассылки. Если параметр задан, рассылаемая часть новых групп новостей будет сравниваться с данным списком, и только при совпадении включается в список. NEWNEWS newsgroups date time [GMT] [distribution >]. Команда формирует список идентификаторов статей для заданной группы новостей, с датой после указанной. Для каждого идентификатора сообщения в списке выделяется одна строка. Список завершается строкой с одиночным символом точки, за которым следует CR+LF. Дата и время задаются в том же формате, что и для команды NEWGROUPS. Для расширения зоны поиска в имени группы новостей можно использовать символ "*" (звездочка). Программа может подставить вместо звездочки любую комбинацию символов. Если вместо имени группы подставлен символ звездочка, поиск будет проведен по всем группам новостей. Имя группы должно быть взято из списка доступных групп. Допускается задание нескольких групп (имена разделяются запятыми). После последнего имени группы не должно быть запятой.


NNTP. Сервер новостей

235

NEXT. Команда устанавливает указатель текущей статьи на следующую запись в текущей группе новостей. Если в группе нет больше статей, посылается сообщение об ошибке, а указатель текущей статьи остается неизмененным. В качестве отклика на команду возвращается номер текущей статьи и идентификатор сообщения. Никаких текстовых сообщений не посылается. POST. Команда POST позволяет отправить сообщение в текущую новостную группу. QUIT. Сервер подтверждает получение команды QUIT И затем закрывает канал связи с клиентом. Эта команда предоставляет клиенту корректную возможность сообщить NNTP-серверу, что все операции завершены и сессия закончена. SLAVE. Команда SLAVE сообщает серверу, что он связывается не с пользователем, а с обслуживающим сервером (slave). Эта команда позволяет разделить случаи соединения сервера с отдельным пользователем и промежуточными обслуживающими серверами.

Сервер новостей Серверов новостей несколько, как способных поддерживать очень большие базы сообщений и большое количество одновременно подключенных пользователей, так и небольших, предназначенных для маленькой локальной сети и пары десятков подключений. Для первой группы характерна трудоемкость в настройке и отладке сервера, для второй группы — простота. К первой группе можно отнести CNews и INN. Ко второй leafnode, Suck. Поскольку мы не собираемся становиться мегапровайдерами, от рассмотрения первой группы мы откажемся. Для тех, кому это интересно, я рекомендую обратиться к моим предыдущим книгам. Нам же необходимо простое и быстрое решение для небольшой локальной сети.

leafnode Домашняя страница этого проекта — http://leafnode.sourceforge.net/. Поскольку нам интересен наиболее свежий вариант, скачиваем его с сайта ALTLinux. Установка, как обычно, не занимает много времени. Чем же интересен этот сервер для нас? Во-первых, в отличие от других серверов, он очень прост в настройке, и занимает мало места. Кстати, существует так же вариант и для Windows NT. Во-вторых, он скачивает только те группы, на которые подписаны его пользователи, что позволяет экономить на трафике. И в-третьих, сервер это делает только тогда, когда есть подключение к Интернету, т. е. не пытается самостоятельно дозвониться к провайдеру и скачать информацию.


236

Глава 15

После установки нам необходимо настроить сервер. Сначала мы должны проверить, прописана ли строка запуска leafnode в файле xinitd. Строка должна быть примерно такого вида: service nntp { disable = no flags = REUSE socket_type = stream wait = no user = news server = /usr/local/sbin/leafnode only_from = 127.0.0.1 log_on_failure += USERID }

Если вдруг такой строки не оказалось в конфигурационном файле — правим его. После этого нам необходимо перезапустить xinitd для вступления в силу изменений. Делается это командой: /etc/rc.d/init.d/xinetd restart

Далее мы должны убедиться, что наш сервер успешно стартовал. Для этого выполним следующую команду: netstat --inet -pan | grep 119

Если все в порядке, то вы увидите строку: tcp 0 0.0.0.0:119 0.0.0.0:*

LISTEN 2 1 1 5 / x i n e t d

Если нет, то следует проверить правильность указания пути к leafnode, проблема, скорее всего, в этом. Далее, мы должны как-то указать нашему сервису, где же он должен брать информацию. Для этого используется конфигурационный файл /etc/leafnode/config. Большую часть его нам нет смысла трогать — разработчики все сделали за нас. Нам нужно указать, с какого сервера мы желаем получать новости, а также указать, сколько суток они будут храниться у нас. Первое делается следующей строкой: server = news.mail.ru

Если вы желаете получать информацию с нескольких серверов, просто дописываем еще одну строчку: server = ddt.demos.su

Для указания, сколько должно храниться сообщение в базе, используется параметр expire. Помимо этого, существуют еще параметры, предназначенные для тонкой настройки сервера, но с этим вы будете разбираться самостоятельно. После того, как определили с помощью файла настройки, с каких серверов вы будете скачивать информацию, необходимо получить от этих серверов список групп новостей. Это можно сделать с помощью команды fetchnews -£. Считывание списка групп новостей может занять довольно много времени — порядка 10—15 минут. Список полученных групп новостей мы можем обнаружить в файле /var/spool/news/leaf.node/groupinfo. После этого мы на нашей клиентской машине создаем в клиенте новостей новую учетную запись новостей, где в качестве адреса сервера прописан наш сервер — 192.168.0.1. При подключении к этому серверу вы должны увидеть список доступных групп новостей на этом сервере. Подписываемся на нужные нам группы, к примеру, fido7.ru.linux.


NNTP. Сервер новостей

237

После того как мы подписались на эту новостную группу, в каталоге /var/spool/news/interesting.groups появится пустой файл с именем выбранной новостной группы, в нашем случае — fido7.ru.linux. Теперь мы должны каким-то образом загрузить статьи на наш сервер. При наличии подключения к Интернету это можно сделать, выполнив команду: fetchnews

-vw

После этого наши локальные пользователи, подключившись к нашему новостному серверу, увидят в группе fido7.ru.linux новостные статьи, время создания которых не более 10 суток. Если вас не устраивает такой порядок вещей, с помощью параметра тахаде в конфигурационном файле leafnode можно указать свой срок давности, например месяц. Однако мы пока рассмотрели только получение сообщений. Нам еще необходимо как-то очищать базу сервера от сообщений, хранящихся на сервере. Для этого используется утилита texpire. Эта утилита удаляет те новости, чей возраст превышает значение переменной expire в конфигурационном файле /etc/leafnode/config. Это можно делать и руками, однако RPM-пакет при инсталляции прописывает выполнение этой утилиты в таблицу сгоп.

INN Если же вы решитесь настроить INN, то я порекомендую вам свою книгу "Сетевое администрирование Linux". Здесь же я затрону одну тему, которую не описал в своей предыдущей книге. Если вы договорились с провайдером о том, что он разрешит вам взаимодействовать с его NNTP-сервером на уровне обмена данных между серверами — великолепно! Но обычно провайдер не предоставляет такой возможности. Что же делать? Есть программа, которая позволяет подключаться к NNTP-серверу провайдера, как обычный клиент забирает с него необходимую информацию и раскладывает ее в соответствующие файлы сервера INN. Называется эта программа Suck и ее домашняя страница — http://home.comcast.net/~bobyetman/index.html. Помимо того, что она забирает новостные статьи, она позволяет отправлять на сервер провайдера статьи. Также существует еще одна разновидность программы — SuckMT, сайт которой http://oss.basjes.nl/SuckMT/. Чем же она лучше оригинальной утилиты? Она поддерживает многопоточность, что позволяет забирать от провайдера несколько статей сразу.


Глава 16

NTP. Синхронизация времени через сеть, настройка временной зоны Для грамотно настроенной сети предприятия характерен учет всех мелочей, особенно когда эти мелочи таковыми не являются. В частности, системные дата и время компьютера. При разнообразных "разборах полетов" приводят различные журналы действий пользователя, и при неправильной настройке системного времени грош цена таким данным. Можно, конечно, настройку времени производить вручную, однако через пару-тройку недель вам это наскучит. Особенно неприятно, когда компьютеров несколько десятков, и время у всех должно быть синхронизировано. Для синхронизации системного времени создателями Интернета была предусмотрена специальная служба — NTP.

Сетевой протокол времени Протокол NTP предназначен для синхронизации системных часов с эталонным источником времени (радио, атомные часы и тому подобные устройства). Для локальной сети служба NTP способна обеспечить точность до миллисекунды, а для распределенной сети (в частности, Интернета) достижима точность синхронизации порядка нескольких десятков миллисекунд. Последний стандарт этого протокола предусматривает криптографическую защиту передаваемых данных, одновременное подключение к нескольким серверам точного времени для достижения более точной синхронизации времени и повышения отказоустойчивости системы и многое другое. Структура сети серверов точного времени многоуровневая. Главные серверы точного времени, напрямую подключенные к источнику эталонного времени, образуют первый уровень, серверы точного времени, присоединенные непосредственно к главным серверам, образуют второй уровень и т. д. В качестве сетевого протокола используется UDP, порт 123. Для увеличения надежности и точности получаемых данных применяется фильтрация,


240

Глава 16

селекция и комбинация пакетов на принципах максимальной вероятности, а также несколько резервных серверов и путей передачи. Для передачи и хранения времени используется беззнаковое 64-битное число с фиксированной точкой, которое хранит число секунд в формате UTC. Старшие 32 бита — число секунд, младшие 32 бита — дробная часть секунд. Достижимая точность — 232 пикосекунды. О означает неопределенное время.

Классы обслуживания Служба точного времени имеет несколько классов обслуживания клиентов: • multicast — предназначен для использования в быстрой локальной сети с множеством клиентов, где отсутствует необходимость в высокой точности. Принцип действия — один или более NTP-серверов рассылают широковещательное сообщение, клиенты определяют время, предполагая, что задержка составляет несколько миллисекунд. Сервер не принимает ответных NTP-сообщений; • procedure-call — предназначен для получения высокоточного времени. NTP-клиент посылает запрос на сервер точного времени, который обрабатывает запрос и немедленно посылает ответ. Сервер не синхронизируется с клиентом; П symmetric — предназначен для использования серверами точного времени. Представляет собой динамически реконфигурируемую иерархию серверов точного времени. Каждый сервер точного времени синхронизирует своих соседей и синхронизируется своими соседями в соответствии с правилами выбора соседей. Активный режим используется серверами точного времени низшего уровня с заранее определенными адресами соседей, пассивный режим используется серверами точного времени, близкими к первому уровню и взаимодействующими с соседями с заранее неизвестными адресами.

Обеспечение достоверности данных Алгоритм функционирования сервера точного времени подразумевает несколько способов для обеспечения достоверности данных. • Если в течение восьми последовательных интервалов опроса от соседнего сервера точного времени не было сообщений, то этот сервер считается недостижимым. • Осуществляется проверка времени: • если время передачи совпадает со временем предыдущего сообщения — дублированный пакет;


NTP. Синхронизация времени через сеть, настройка временной зоны

241

• если время отправки сообщения не совпадает со временем, содержащимся в пакете, сервер считает, что он получил фальшивый пакет. • Используется алгоритм защиты от очень старых сообщений. О Аутентификатор состоит из ключа и шифрованной контрольной суммы, которая создается с использованием алгоритма шифрования DES (Data Encryption Standard).

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

Сервер xntpd Для UNIX-платформы, в том числе и Linux, существует сервер точного времени, носящий название xntpd. Этот сервер полностью реализует стандарт RFC 1305 и имеет расширенные возможности, которые планируется включить в следующую версию стандарта. Входит в стандартную поставку большинства дистрибутивов Linux. Установка тривиальна. Файл конфигурации — /etc/ntp.conf.

Конфигурация сервера Поскольку варианты конфигурирования сервера зависят от класса обслуживания, сервер имеет достаточно много настроек, которые в основном содержатся в конфигурационном файле /etc/ntp.conf.

Класс symmetric Этот класс предназначен для конфигурирования сервера точного времени В режиме symmetric. peer <address> [key <key>] [version <version>] [prefer] [minpoll <minpoll>] [maxpoll <maxpoll>]

Здесь: D <address> — адрес симметричного сервера; О <key> — 32-битный ключ для поля аутентификации (по умолчанию отсутствует); О prefer — предпочитать данный сервер при прочих равных условиях;


242

Глава 16

П <minpoii> — минимальный интервал запросов (секунды, 2 в степени <minpoii> в диапазоне от 4 (16 с) до 14 (16384 с), по умолчанию 6 (64 с)); О <maxpoli> — максимальный интервал запросов (секунды, 2 в степени <maxpoii>, по умолчанию 10—1024 с).

Класс procedure-call Этот класс предназначен для конфигурирования сервера точного времени В режиме procedure-call. server address <mode>]

[key <key>]

[version

<version>]

[prefer]

[mode

D address — адрес сервера; О <кеу> — 32-битный ключ для поля аутентификации (по умолчанию отсутствует); О <mode> — режим.

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

broadcast <address>

[key <key>] [version <version>]

[ttl <ttl>]

• <address> — адрес симметричного сервера; • <key> — 32-битный ключ для поля аутентификации (по умолчанию отсутствует); • <version> — версия протокола; • <tti> — время жизни пакета. •

broadcastclient

[<address>] <address> — адрес клиента, получающего

информацию; • broadcastdelay <секунд> — позволяет самостоятельно указать задержку в распространении пакета.

Общие параметры Опишем общие параметры настройки сервера xntpd: О d r i f t f i l e <driftfile> — определяет файл, в котором хранится и извлекается при запуске сдвиг частоты местных часов; О enable/disable

auth/monitor/pll/pps/stats

— ВКЛЮЧИТЬ/ВЫКЛЮЧИТЬ

режим работы: • auth — с неупомянутыми соседями общаться только в режиме аутентификации;


NTP. Синхронизация времени через сеть, настройка временной зоны

243

• monitor — разрешить мониторинг запросов; • p i i — разрешать настраивать частоту местных часов по NTP; • s t a t s — разрешить сбор статистики; • s t a t i s t i c s loopstats — при каждой модификации локальных часов записывает строчку в файл loopstats, формат которого имеет вид: • номер модифицированного юлианского дня; • секунды с полуночи (UTC); • смещение в секундах; • смещение частоты в миллионных долях; • временная константа алгоритма дисциплинирования часов; • s t a t i s t i c s p e e r s t a t s — каждое общение с соседом записывается в журнал, хранящийся в файле peerstats, формат которого имеет вид: • номер модифицированного юлианского дня; • секунды с полуночи (UTC); • IP-адрес соседа; • статус соседа, шестнадцатеричное число; • смешение в секундах; • задержка в секундах; • дисперсия в секундах; • s t a t i s t i c s ciockstats — каждое сообщение от драйвера локальных часов записывается в журнал, хранящийся в файле ciockstats; • s t a t s d i r <имя-каталога-со-статистикой> — задает ИМЯ каталога, В КОтором будут находиться файлы со статистикой сервера; •

filegen

[file

<filename>]

[type

<typename>]

[flag

<flagval>]

[link | noiink] [enable | disable] — определяет алгоритм генерации имен файлов, которые состоят из: • префикса — постоянная часть имени файла, задается либо при компиляции, либо специальными командами конфигурации; • имени файла — добавляется к префиксу без косой черты, две точки запрещены, может быть изменена ключом file; • суффикса — генерируется в зависимости от <typename>: О попе — обычный файл; О pid — при каждом запуске xntpd создается новый файл (к префиксу и имени файла добавляются точка и номер процесса);


244

Глава 16

О day — каждый день создается новый файл (к префиксу и имени файла добавляется .yyyymmdd); О week — каждую неделю создается новый файл (к префиксу и имени файла добавляется .yyyywww); О month — каждый месяц создается новый файл (к префиксу и имени файла добавляется .yyyymm); О year — каждый год создается новый файл (к префиксу и имени файла добавляется .уууу); О age — новый файл создается каждые 24 часа (к префиксу и имени файла добавляются .а и 8-значное количество секунд на момент создания файла от момента запуска xntpd); О link/nolink — по умолчанию создается жесткая ссылка от файла без суффикса к текущему элементу набора (это позволяет обратиться к текущему файлу из набора используя постоянное имя); О enable/disable — разрешает/запрещает запись в соответствующий набор файлов; •

restrict

numeric-address

[ mask <numeric-mask>

]

[flag]

...

—за-

дает ограничение доступа: пакеты сортируются по адресам и маскам, берется исходный адрес и последовательно сравнивается, от последнего удачного сравнения берется флаг доступа: • нет флагов — дать доступ; • ignore — игнорировать все пакеты; • noquery — игнорировать пакеты NTP 6 и 7 (запрос и модификация состояния); • nomodify — игнорировать пакеты NTP 6 и 7 (модификация состояния); • notrap — отказать в обеспечении mode 6 trap-сервиса (удаленная журнал изация событий); • lowpriotrap — обслуживать ловушки, но прекращать обслуживание, если более приоритетный клиент потребует этого; • noserve — обслуживать только запросы mode 6 и 7; • пореег — обслуживать хост, но не синхронизироваться с ним; • notrust — не рассматривать как источник синхронизации; • limited — обслуживать только ограниченное количество клиентов из данной сети; • ntpport/non-ntpport — модификатор алгоритма сравнения адресов (сравнение успешно, если исходный порт равен/не равен 123), алгоритм сортировки ставит эту строку в конец списка;


NTP. Синхронизация времени через сеть, настройка временной зоны

245

• c l i e n t i i m i t limit — для флага limited определяет максимальное количество обслуживаемых клиентов (по умолчанию 3); • clientperiod <секунд> — сколько секунд считать клиента активным и учитывать при определении количества обслуживаемых клиентов; •

trap

host-address

[port

<port-number>]

[interface

<inter£ace-

address>] — задать хост и порт, которые будут вести журнал; • setvar <variabie> — установка дополнительных переменных; • logfile <имя-файма> — использовать файл <имя-файла> для ведения журнала вместо syslog; П logconf ig <keyword> — управление количеством сообщений, сбрасываемых в журнал. Ключевое слово может быть предварено символами равно (установка маски), минус (удаление класса сообщений), плюс (добавление); ключевое слово образуется слиянием класса сообщений (clock, peer, sys, sync) И класса событий (info, event, s t a t i s t i c s , status); в качестве суффикса или префикса может использоваться слово a l l .

Обеспечение безопасности сервера Если сервер точного времени используется только локальной сетью, желательно закрыть 123 порт для доступа извне, чтобы избежать возможной атаки типа DOS (Denial Of Service, отказ в обслуживании), поскольку это грозит неправильным функционированием сервера. Помимо этого необходимо использовать шифрование трафика.

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

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


246

Глава 16

UNIX/Linux Для этих операционных систем можно на компьютере установить сервер xntpd и настроить его для получения точного времени. У этого решения есть как достоинства, так и недостатки. Положительным моментом является то, что мы можем максимально точно синхронизировать время и построить отказоустойчивую конфигурацию. Отрицательный момент — достаточно сложное конфигурирование сервера и относительно большой объем занимаемой оперативной памяти компьютера. Более простой вариант — воспользоваться утилитой ntpdate. Она небольшая по размерам и простая в конфигурировании. С ее помощью можно получить достаточно точное время — расхождение порядка 100 миллисекунд. Для синхронизации времени достаточно выполнить следующую команду: ntpdate -В <ntp> <ntp2> <ntp3>

где <ntp>, <ntp2>, <ntp3> — адреса серверов точного времени. Достаточно добавить эту строчку в таблицу заданий crontab и вы всегда будете иметь на компьютере точное время.

Apple Для компьютеров фирмы Apple есть клиент NTP, называющийся macntp.

Windows Для операционной системы Windows существует несколько десятков клиентов службы точного времени. В частности, программа AboutTime, которую можно получить по адресу www.listsoft.ru/programs/536/. Или программа AnalogX Atomic TimeSync, получить которую можно по адресу www.analogx.com/contents/download/network/ats.htm. А можно воспользоваться программой Dimension 4 — www.thinkman.com/~thinkman. В Windows XP встроен свой клиент, который самостоятельно синхронизируется с внешним сервером, определенным производителем операционной системы. Для настройки необходимо зайти в Панель управления, выбрать иконку Дата и время и щелкнуть на вкладке Время Интернета (рис. 16.1). Здесь мы должны установить флажок Выполнять синхронизацию с сервером времени в Интернете, а чуть ниже — вписать адрес нужного нам NTPсервера (если, конечно, вас не устраивает сервер имени Microsoft).


NTP. Синхронизация времени через сеть, настройка временной зоны Свойства: Дата и время t Датамвремя j| Часовой пояс:| Время Интернета i @ Выполнять синхронизацию с сервером времени в Интернете Сервер: j time.windows.com

вить сейчас 1

Время было успешно синхронизовано с time.windows.com на 04.04.2005 В 10:14. ,

1

Следующее выполнение синхронизации: 11.04.2005 B 10:14 Синхронизация возможна только когда компьютер подключен к Интернету. Дополнительные сведения о синхронизации времени можно получить в центре справки и поддержки,

ок

Отмена

Рис. 1 6 . 1 . Настройка синхронизации времени в Windows XP

247


Глава 17

Сервер Samba — контроллер домена Несколько ранее мы уже производили настройку Samba для работы в одноранговой (равноправной) сети. Наряду с положительными моментами (легкость настройки, независимость от сервера) тут есть и отрицательные — для нормальной работы необходимо на каждом компьютере прописывать пользователей и производить администрирование — права доступа, пароли, ограничения. В общем, для трех компьютеров это терпимо, для двадцати уже нет. Захотелось шефу для любимой бухгалтерши открыть доступ к документам всех сотрудников — бегай по всем компьютерам, назначай права. А если после отпуска шеф забыл пароль, попробуй, уговори его пройтись по всем компьютерам и ввести 40 раз пароль — узнаешь, где премия зимует. Для данной проблемы придумали множество решений. Одно из них от Microsoft —Active Directory1 — достаточно обширное и гибкое. К сожалению, сервер Samba пока не поддерживает данную технологию. Частично это можно поправить, используя LDAP, но все равно полной совместимости с Windows Server 2000/2003 не получится. Поэтому просто рассмотрим случай, когда Samba выступает в качестве первичного контроллера домена, что позволит нам централизованно управлять списком пользователей сети.

Конфигурирование Samba в качестве первичного контроллера домена Ранее мы рассмотрели основные моменты конфигурирования сервера в качестве простого сервера, предоставляющего в пользование свои ресурсы. В этом разделе мы будем конфигурировать Samba таким образом, чтобы 1

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


250

Глава 17

сервер выступал в качестве первичного контроллера домена сети Windows. Настройку можно разделить на два больших шага: 1. Настройка Samba PDC (Primary Domain Controller, первичный контроллер домена). 2. Создание доверенных бюджетов машин и подключение клиентов к домену. Есть несколько моментов, на которые следует обратить ваше внимание: • необходимо включить шифрование паролей; • сервер должен поддерживать вход в домен (domain logons) и ресурс [netlogon]; • для того чтобы клиенты корректно определяли сервер как контроллер домена, он .должен быть главным обозревателем сети (domain master browser). В листинге 17.1 приведена часть файла конфигурации smb.conf, в которой прописаны параметры, позволяющие серверу Samba стать контроллером домена.

[global] ; основные настройки сервера netbios name = domain_pdc workgroup = test ; сервер должен выступать в роли domain и local master browser os level = 64 preferred master = yes domain master = yes local master = yes ; название сервера-контроллера домена password server = domain_pdc ; разрешить работу с доверенными доменами allow trusted domains = yes ; поддержка правил доступа и ограничений в стиле NT nt acl support = yes ; настройки безопасности security = user ; для PDC требуется шифрование паролей


Сервер Samba — контроллер домена

251

encrypt passwords = yes ; поддержка domain logons domain logons = yes ; место, где помещать профили пользователей logon path = \\%N\profiles\%u ; местонахождение домашних каталогов пользователей ; и где они должны быть смонтированы logon drive = Н: logon home = \\homeserver\%u ; указываем общий скрипт подключения для всех пользователей ; это относительный путь к [netlogon] ресурсу logon script = logon.cmd ; необходимый ресурс для контроллера домена [netlogon] path = /usr/local/samba/lib/netlogon writeable = no write list = ntadmin ; ресурс для размещения профилей пользователей [profiles] path = /export/smb/ntprofile writeable = yes create mask = 0600 directory mask = 0700

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

Windows 9x Конечно, тяжело сейчас найти компьютер с установленным Windows 98, но, тем не менее, какая-то часть старой техники еще функционирует, и не ис-


252

Глава 17

ключено, что вам "повезло". Поэтому рассмотрим конфигурирование клиентской машины. 1. Откройте Панель Управления/Сеть. Выберите способ входа в сеть Клиент для сетей Microsoft. 2. Откройте Панель Управления/Сеть/Клиент для сетей Microsoft. Нажмите Свойства, выберите Входить в домен Windows NT. Именем домена будет имя, заданное в параметре workgroup, при настройке Samba. В нашем случае Test. 3. Откройте Панель Управления/Сеть/Доступ к ресурсам. Установите доступ на уровне пользователей. Перезагрузите компьютер, появится окно входа в сеть, содержащее поля: Имя, Пароль, Домен. Введите данные и попытайтесь зарегистрироваться. Если вход произошел корректно, и вы ранее не пользовались компьютером, то появится окно Создать для Вас учетную запись?, нажмите кнопку Да. Причем компьютер запросит повторить пароль. Откажитесь от этого, просто нажав клавишу <Enter>.

Windows 2000/XP В целом, настройка сетевых параметров аналогична, необходимо указать, что компьютер входит в домен test, и при входе ввести имя учетной записи и пароль.

Управление учетными записями Управлять учетными записями нашего сервера можно с консоли администратора Windows, с помощью утилиты для удаленного управления контроллером домена, поставляемой Microsoft, через SSH-соединение, или используя Webmin.


Глава 18

Контроль и аудит В этой главе мы научимся экономно обращаться с выделенным нам трафиком и полосой пропускания, а также отслеживать нагрузку, потребляемые ресурсы и сайты, к которым обращались наши пользователи. Я не знаю как у вас, но в нашем городе безлимитные тарифы на подключение к Интернету составляют наименьшую часть. Обычно в абонентскую плату, в зависимости от условий подключения, ширины канала и т. д., входит 1—3 Гбайт оплаченного трафика. Все что свыше, оплачивается по тарифу. Причем большинство провайдеров считают по "большему плечу" — это либо входящий, либо исходящий трафик, в зависимости от объема потребления. Ну да не суть важно. У большинства среднестатистических потребителей выделенной линии входящий трафик по крайней мере раза в два больше, чем исходящий. Как следствие, наша задача каким-то образом либо жестко ограничить трафик квотами, либо уменьшить входящий трафик за счет уменьшения поступающего "мусора", к примеру, запрет на некоторые категории сайтов, отказ от загрузки баннеров и т. п. Действовать можно с разных направлений и используя разные программные комплексы. В целом же можно выделить два направления — жесткое квотирование трафика для пользователей и система различных ограничений и доступ по паролю, ограничение полосы пропускания для пользователей, ограничение по сайтам и т. п. Рассмотрим сначала второй вариант.

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


254

Глава 18

Еще один вариант transparent proxy — это таким образом настроенный прокси-сервер, что его использование полностью прозрачно для пользователей. Это имеет как хорошую сторону — пользователям не придется дополнительно настраивать соединение, так и плохую — не все ресурсы будут отображаться корректно. Для организации transparent proxy необходимо, чтобы транзитные пакеты, предназначенные для 80 порта, попадали на его вход.

Борьба с баннерами Следующий этап экономии — удаление баннеров с просматриваемых страниц. Средний баннер занимает 15—30 Кбайт, так что при просмотре 100 страниц в день экономия на баннерах составит порядка 36—72 Мбайт в рабочий месяц. Вроде бы и не густо, но в целом комплексе мер это дает существенную экономию. Борьбу с баннерами можно производить разными методами: П настроить отдельный прокси-сервер, с ограничением баннеров; • совместить ограничение баннеров с transparent proxy; • организовать прокси-сервер на локальной системе для ограничения баннеров. Подробную информацию см. в разд. "Борьба с баннерами" гл. 14.

Разделение внешнего канала Часто бывает так, что у вас есть внешний канал, скажем, 128 Кбит, и несколько групп пользователей с определенным приоритетом. Что это нам даст? Особо злостных потребителей, если они действуют не в служебных целях, можно временно или постоянно перевести в "узкий" канал. Либо в этот канал определить тех, кому не нужен трафик в больших объемах, к примеру, отдел кадров, а высвободившуюся полосу пропускания отдать тем, кто плотно работает с Интернетом. Подробную информацию о соответствующих настройках Squid см. в разд. "Конфигурирование пакета Squid" гл. 14. Помимо Squid, для этого можно воспользоваться специализированными программами, предназначенными для разделения канала. Существует несколько программ такого типа с различной функциональностью. Например, есть такие, которые позволяют ограничивать не по пропускной способности, а по количеству полученных данных. Принцип их действия оригинален и прост. Допустим, у вас выделенный канал, причем в арендную плату входит 1 Гбайт входящего трафика. В программе выставляется ограничение 1 Гбайт в месяц. Далее происходит следующее. В начале информация качается с максимальной скоростью, но при приближении к заветной цифре пропускная способность канала уменьшается и уменьшается, не позволяя вам выйти за рамки ограничения. В результате, в последние дни месяца, скорость канала может упасть до десятков байт в секунду.


Контроль и аудит

255

В качестве стабильной и хорошо конфигурируемой программы такого типа можно порекомендовать пакет CBQ. Ограничивать трафик можно и с помощью утилиты tc, входящей в пакет iproute2.

Организация доступа к web-ресурсам по паролю Как уже упоминалось ранее, Squid очень гибок, благодаря наличию ACLправил. Это нам, в частности, дает возможность ограничить доступ пользователей к ресурсам по паролю. Что для этого нужно? Список пользователей, их пароли и специальные правила в конфигурационном файле Squid, благодаря которым и будет происходить авторизация. В простейшем случае это организуется следующим образом: authenticate_program

/usr/local/squid/bin/ncsa_auth

acl users proxy_auth REQUIRED http_access allow users http_access deny all

В первой строке определяем программу, с помощью которой будет производиться авторизация пользователей. В данном примере — стандартная программа, входящая в комплект Squid. Как создавать файл пользователей и работать с ней, вы узнаете, почитав справку. Можно пользоваться различными системами авторизации, к примеру, LDAP, Kerberos, Active Directory. В следующей строке указывается, что нам необходимо производить авторизацию пользователей и любой авшоризированный пользователь попадет в ACL с именем users (имя произвольное). Далее разрешается доступ для пользователей, прошедших авторизацию, и запрещается доступ для неавторизованных пользователей. Вот еще один вариант: acl boss proxy_auth REQUIRED acl users proxy_auth lisa vasya petr ivan acl work_time time 09:00-18:30 http_access allow boss http_access allow users work_time http_access deny all

Как мы видим, здесь добавилось правило work_time, .которое применяется к списку авторизованных пользователей группы users. Благодаря этому правилу доступ для пользователей lisa, vasya, petr и ivan возможен только с 09:00 до 18:30. Если же мы хотим ограничить еще и рабочими днями недели, ТО ПраВИЛО Примет СЛедуЮЩИЙ ВИД: a c l work_time t i m e MTWHF 9:00-18:30.


256

Глава 18

Запрет наскачивание определенных файлов Иногда нам необходимо каким-то образом запретить получение файлов, к примеру, видеофильмов и МРЗ-файлов. Нет ничего проще, нужно только знать регулярные выражения и написать небольшое правило для Squid. В общем виде это выглядит так: acl badobjects url_regex регулярное-выражение http_access deny badobjects Где badobjects — это произвольное имя ACL; http_access — собственно запрещает получение объектов, успешно прошедших через badobjects. А вот пример, который запрещает получение по FTP файлов с расширениями mp3, zip, rar, avi, mpeg, mpe, mpg, mov: acl badobjects url_regex -i ftp .mp3 .zip .rar .avi .mpeg .mpe .mpg .mov http_access deny badobjects либо: acl badobjects urlpath_regex -i \..mp3$ \.zip$ \.rar$ \.avi$ \.mpeg$ \.mpe$ \.mpg$ \.mov$ ЭТО ПОЗВОЛИТ нам фильтровать данные, не обращая внимания на протокол, по которому осуществляется доступ к файлам.

Запрет на посещение определенных web-сайтов Точно таким же образом, при помощи правил, можно ограничить пользователей в праве посещать отдельные web-сайты. К примеру, хотим запретить пользователю vasya доступ на www.anekdot.ru и www.fflmz.ru: Acl razvlekuha dstdomain .anekdot.ru .filmz.ru http_access deny vasya razvlekuha

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

Программа NeTAMS Пакет можно найти по адресу www.netams.com. Скачать его в виде RPM-файла можно по адресу www.altlinux.ru/index.php?module=sisyphus&package=netams. Что же он умеет? На этот вопрос лучше всего ответит цитата с официально-


Контроль и аудит

257

го web-сайта: NeTAMS (Network Traffic Accounting and Monitoring Software) — многофункциональная программа по учету и управлению IP-трафиком для маршрутизаторов Cisco или компьютеров под управлением UNIX (Linux/ FreeBSD/Solaris). Поддерживаются различные методы сбора статистики (tee/divert/ip_queue/libpcap/netflow v5), хранения в базе данных (BerkleyDB/ MySQL/PostgresSQL/Oracle), агрегирования, отображения, оповещения и пр. Возможно проводить блокировку на базе квот, авторизации, исчерпании баланса (биллинг); управлять полосой пропускания, создавать гибкие политики учета и фильтрации. На web-сайте присутствует достаточно подробная документация, при помощи которой можно настроить этот пакет. Там же есть форум, где можно задать вопросы авторам программы. Поскольку пакет достаточно сложный и предназначен все же для профессионального использования, настройка и установка его нетривиальны. В частности, для корректного функционирования пакета используются следующие пакеты: MySQL-client, MySQL-server, Apache, Apache-common, binutils, cpp, gcc, gcc-c++, glibc-devel, HbMySQL, HbMySQL-devel, libbfd, libmm, libpcap, libpcap-devel, libstdc++-devel, make, iptables-devel, kernel-headers-common, kernel-headers. Присутствует возможность администрирования через web-интерфейс.

Мониторинг загрузки каналов Для анализа загрузки интернет-канала необходимо использовать дополнительный пакет, поскольку разбираться самим в журналах системы — задача неблагодарная. Чтобы обеспечить требуемую наглядность, такой пакет должен выдавать информацию в графической форме, причем, желательно, с помощью web-интерфейса. Все эти условия реализованы в программах MRTG (Multi Router Traffic Grapher) и RRDtool (Round Robin Database).

Программа MRTG MRTG создает HTML-страницу с отображением загрузки канала за сутки, неделю, месяц и год. Для этого используется написанный на Perl сценарий, который опрашивает маршрутизатор, а программа, написанная на С, обрабатывает получившийся результат и создает встроенные в HTML-страницу изображения в формате GIF/PNG. Помимо собранной информации, пакет MRTG может обрабатывать информацию и из других источников (cpuinfo, df, squid и т. п.) и строить графики. Большим преимуществом данной программы является постоянный размер журналов, в которых более старая информация хранится с меньшими подробностями. Внешний вид получаемых графиков приведен на рис. 18.1. 9 Зак 1500


258

Глава 18

MRTG Index Page

fc 2 9 °' e r

Ь МО.ОИ 3 140.0 В

6

8

10 l i

14 16 .18 20 22

6

8

10 П

14 16 18 20 22

0

2

bnk-loioM-lw-ra

'"I.

Х.1.Л1.., ,'

...13.11 г * "

Рис. 1 8 . 1 . Результат работы программы MRTG

Конфигурирование MRTG Для конфигурирования программы MRTG используется файл mrtg.cfg, параметры которого будут рассматриваться ниже. Как обычно, будут приведены только ключевые параметры, с полным списком можно ознакомиться в документации, прилагаемой к этому программному пакету. Правила записи параметров в конфигурационном файле: • ключевое слово — в начале строки; • двоеточие — разделитель, идущий сразу за ключевым словом; • строка продолжения начинается с пробела; • строки комментария начинаются с символа "#". Итак, файл mrtg.cfg может содержать следующие команды: П include: имя_файла — подключаемый файл;


Контроль и аудит

259

П workDir: имя_каталога — задает размещение журнала, рабочих файлов и генерируемых страниц, имеет приоритет Над HtmlDir, ImageDir И LogDir; • HtmlDir: имя_каталога — задает размещение генерируемых страниц; • ImageDir: имя_каталога — задает размещение генерируемых изображений; обязательно находится под HtmlDir — страницы генерируются в этом предположении; • LogDir: имя_каталога — задает размещение журнала; • Refresh: число — частота перерисовки графиков в браузере; • RunAsDaemon: no | yes — запуск MRTG в режиме демона; П i n t e r v a l : число — предполагаемый интервал запуска MRTG; • iconDir: имя_каталога — каталог, где хранятся иконки; • Forks: число — определяет, сколько параллельных процессов опроса запус��ать; • writeExpire:

no | yes — создавать файлы .meta для Apache;

П NoMib2 : по | yes — не запрашивать sysUptime, sysName; • Language: язык_отчетов — определяет язык отчетов, есть поддержка русского языка; • LogFormat: rrdtool — формат журналов для RRDtool — динамическое создание отчетов; • LibAdd: RRDtool;

адрес-библиотеки-rrdtool

• PathAdd: адрес-rrdtool

RRDs.pm —

адрес

библиотеки

— адрес RRDtool.

Для каждого контролируемого устройства, которое обозначается как target (цель), буквы преобразуются в строчные и создается отдельная секция. При работе MRTG каждая цель порождает файлы журнала (target.log и target.old), картинки с графиками (target-day.gif, target-week.gif, target-month.gif, targetyear.gif) и HTML-страницу (target.html). CD Target[target]: nopT:community%MapmpyTH3aTop [ -.port [: timeout [: retries! :backoff[: 2] ] ] ] ]

где: • порт — номер интерфейса на маршрутизаторе; • communi ty — пароль на чтение; • маршрутизатор — имя или IP-адрес; • port — по умолчанию стандартный порт SNMP; • timeout — время ожидания; • r e t r i e s — количество попыток;


260

Глава 18

• backoff — во сколько раз увеличивать timeout при каждом повторе; • 2 — означает использование 64-битных счетчиков. П Target[target]: внешняя-программа-с-параметрами-в-обратных-кавычках Программа должна возвращать на стандартный вывод 4 строки: • значение счетчика входных байтов; • значение счетчика выходных байтов; • текстовую строку, содержащую информацию о времени работы объекта после включения; • строку, указывающую имя объекта. П RouterUptime[target]: соттип1Ьу%маршрутизатор— откуда брать ИНформацию об имени маршрутизатора и его времени работы для составных target; • MaxBytes[target]: число — значения переменных, которые больше этого числа, игнорируются; • T i t l e [ t a r g e t ] : текст — заголовок для HTML-страницы; П Радетор[target]: страницы;

текст— текст, выдаваемый в верхней части HTML-

О PageFoot[target] : текст— текст, выдаваемый в нижней части HTMLстраницы; • AddHead[target] : текст — HTML-текст, вставляемый после TITLE внутри HEAD;

• MaxAbs[target]: число— если используется сжатие, то возвращаемое значение может превосходить MaxByte; • unsealed [target] : [d] [w] [m] [у] — отключить масштабирование по вертикали для соответствующего графика (d — день, w— неделя, m — месяц, у — год); • withPeak[target] : [w] [m] [у] — показывать в недельном, месячном и годовом графиках не только средние, но и пиковые значения (w — неделя, л! — месяц, у — год); • Supress[target] : [d] [w] [m] [у] — отключить генерацию части графиков (d — день, w — неделя, m — месяц, у — год); • Directory [ t a r g e t ] : имя-каталога— размещать в данном каталоге все файлы, относящиеся к указанному target; • x s i z e t t a r g e t ] : число — число пикселов в графике по горизонтали; • YSize[target] : число — число пикселов в графике по вертикали; • YTics [target] : число — число вертикальных делений;


Контроль и аудит

261

• step [target] : число — определяет шаг отображения в секундах; П options [target] : список — список опций через запятую: • growright — время движется вправо; • b i t s — все числа умножать на 8 (измерять в битах); • perminute — все числа умножать на 60 (измерять в единицах за минуту); • perhour — все числа умножаются на 3600 (измерять в единицах за час); • transparent — генерировать прозрачный фон картинки; • gauge — интерпретировать полученные значения как абсолютные значения. Полезно для отображения таких параметров, как загрузка процессора, дискового пространства; • unknaszero — трактовать неверные значения как 0, а не как повторение предыдущего значения. • k i l o [ t a r g e t ] : число— что понимается под kilo. По умолчанию — 1000, можно установить 1024; •

kMG [target] : список — какими буквами обозначать kilo, mega И Т. П. П о

умолчанию "К, М, G, Т, Р"; •

Colours[target]:

Colouri#RRGGBB,Colouri#RRGGBB,Colouri#RRGGBB,

colouri#RRGGBB — определение цветовой схемы, где colour — текстовое имя цвета, помещаемое в легенду графика i = 1, 2, 3, 4 — номера цвета; RRGGBB — шестнадцатеричные значения, определяющие RGB-цвет; • Background [ t a r g e t ] : #RRGGBB — задает цвет фона; П YLegend[target] : текст — по умолчанию "Bits per second"; • ShortLegend[target] : текст — ПО умолчанию "b/s". Помимо MRTG, существует еще один пакет аналогичного назначения — RRDtool.

Программа RRDtool Этот программный пакет обеспечивает хранение и отображение данных мониторинга — загрузку каналов, температуру и любую другую зависящую от времени последовательность данных. Задумывалась как повторная, но более правильная реализация MRTG. Объем хранимых данных не увеличивается со временем — ячейки хранения используются циклически. В отличие от MRTG, программа не упаковывает старые данные самостоятельно, сбор информации и генерация HTML-кода также производятся с помощью внешних средств. Параметры передаются в командной строке или через утилиту stdin.


262

Глава 18

Подсчет трафика Иногда необходимо подсчитать трафик по клиентам, особенно когда организуется подключение домовой локальной сети или несколько небольших фирм совместно покупают выделенную линию для подключения к провайдеру. К сожалению, стопроцентного совпадения подсчитанного трафика с данными провайдера добиться вряд ли удастся, поскольку приведенные ниже способы подсчета трафика дают разные результаты. Правда, погрешность подсчета обычно не превышает 5%. Есть несколько вариантов подсчета трафика: • по данным, взятым из SNMP; • по данным, взятым из Cisco; • по данным, взятым из /proc/tty/driver/serial; • по данным, взятым из radacct (radius-accounting/ OutOctets); • по iptables; • с помощью nacctd. Существует пакет, предназначенный для подсчета IP-трафика через протокол SNMP. Он так и называется — универсальный счетчик IP-трафика через SNMP. Как уже отмечалось ранее, для этого можно использовать пакет NeTAMS. Помимо этих двух пакетов, есть большое количество программ, в частности, IpTraf, useripacct, netacct, ipacct.


Глава 19

Настройка входящего модемного соединения Мы уже умеем настраивать систему таким образом, чтобы она выступала в роли шлюза для локальной сети. Но нам часто необходимо получить доступ к локальной сети организации, например, из дома или из дома выйти в Интернет через корпоративную сеть. Для этого нужно установить программу, которая умеет поднимать трубку по входящему звонку и совершать некоторые дополнительные действия. Одной из таких программ является mgetty, умеющая, помимо всего прочего, посылать и принимать факсы, а также с помощью голосового модема принимать и отправлять голосовую почту (voice mail).

Настройка mgetty Обычно mgetty, как и ррр, входит в стандартную поставку дистрибутива. Единственное, что необходимо проверить, был ли пакет mgetty скомпилирован с опцией -DAUTO_PPP, и если нет, то пакет необходимо перекомпилировать (в дистрибутиве Fedora Core mgetty скомпилирован с нужной нам опцией). После установки mgetty нам следует отредактировать конфигурационные файлы. В файле /etc/mgetty+sendfax/login.config мы должны написать следующее: /AutoPPP/ — а_ррр /usr/sbin/pppd auth refuse-chap require-pap login - - /bin/login @

Эта строка указывает mgetty: • после установления входного соединения необходимо вызвать программу pppd; П для пользователя требуется авторизация; • аутентификацию по протоколу CHAP отклонять и требовать авторизации по протоколу РАР.


264

Глава 19

После установления соединения mgetty анализирует данные, приходящие с модема, и в случае, когда приходит запрос на авторизацию по протоколу РАР, программа сразу же запускает pppd, который и проводит аутентификацию. Далее нам необходимо отредактировать файл приблизительно следующим образом:

/etc/mgetty+sendfax/mgetty.config

port ttySO speed 115200 data-only у debug 3 init-chat "" ATZ OK answer-chat "" ATA CONNECT \c \r

Как видите, модем подключен к первому последовательному порту (СОМ1 в терминологии DOS/Windows), скорость обмена 115 200 Кбит/с, строка инициализации ATZ. Далее нужно добавить вызов mgetty в файл inittab. Для этого достаточно дописать всего лишь одну строку: S4:2345:respawn:/sbin/mgetty /dev/ttySl

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

Настройка pppd С настройкой pppd вы уже ознакомились ранее. Поэтому, чтобы не повторяться, просто приведем соответствующие конфигурационные файлы с небольшими комментариями. Файл options.ttySO должен содержать следующие данные: # Устройство lock login auth modem crtscts -chap +pap #.наш интерфейс : удаленный интерфейс 192.168.0.200:192.168.0.201 # маска подсети


Настройка входящего модемного соединения

265

netmask 255.255.255.0 # адрес сервера DNS для клиента Windows ms-dns 192.168.0.1

Файл /etc/ppp/pap-secrets должен содержать следующие данные: userl

сервер.домен ""

user2

сервер.домен "" *

*

где: • userl — имя пользователя, причем он должен существовать в системе с установленным модемом; • user2 — сервер, на котором будет проводиться аутентификация, в нашем случае вместо сервер.домен необходимо поставить имя сервера, принимающего входящее соединение; • "" — отсутствие пароля указывает на то, что пароли необходимо брать из файла /etc/shadow; • * — абонент может производить аутентификацию с любого IP-адреса. Вот и все — вы стали провайдером, причем сильно облегчили жизнь пользователям Windows, поскольку IP-адрес и адрес DNS-сервера вы выдаете автоматически, кроме того, отпадает потребность в использовании сценария для соединения.

Настройка Callback-сервера Вы настроили свой Dial-in-сервер, попользовались им какое-то время и захотели облегчить кошелек фирмы и сохранить свой в неприкосновенности. Например, в вашем городе повременная оплата и часами работать в Интернете из дома дорого, а руководство вашей организации не возражает против того, чтобы вы работали за ее счет. Дело за малым — организовать ваш сервер таким образом, чтобы не вы ему звонили, а он вам. В западной литературе такой сервер называется Callback-сервером (сервер обратного звонка). Функционирует он следующим образом. Сначала клиент дозванивается через модем к Callback-серверу. Модем на сервере настроен на прием входящих звонков. После установки соединения сервер предлагает клиенту пройти аутентификацию. Клиент подключается к нему как особый Callbackпользователь. После этого модем на сервере обрывает связь, и сам звонит клиенту по номеру, который закреплен за компьютером клиента (либо определился с помощью АОН). Модем на клиентском компьютере готов принять обратный звонок, и после установления соединения происходит повторная авторизация. По окончании аутентификации устанавливается РРРсоединение. Далее клиент работает обычным образом.


266

Глава 19

Конфигурация Callback-сервера После того как настройка Dial-in-сервера завершена, необходимо выполнить следующие действия: 1. Создать нового пользователя back. 2. Создать пустой файл с именем callback.conf в /etc/mgetty/. 3. В файл /etc/mgetty/login.config добавить следующую строку: back

/usr/sbin/callback -S 1234567

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

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

Конфигурирование Linux-клиента Для конфигурирования Linux-клиента необходимо выполнить следующее: • Создать файл /etc/ppp/options, в котором должны быть такие строки: lock defaultroute noipdefault modem 115200 crtscts debug passive

• Создать файл ppp-callback в /etc/ppp/peers/, в котором должны быть такие строки: ttySO 33600 crtscts connect '/usr/sbin/chat -v -f /etc/ppp/chat-callback1 noauth

О Создать файл /etc/ppp/chat-callback, в котором должны быть такие строки: ABORT ABORT ABORT ABORT

BUSY VOICE "NO DIALTONE" "NO ANSWER"


Настройка входящего модемного соединения

267

" " ATZ OK ATDP1234567

# Телефонный номер сервера

CONNECT \d\d ogin: \q\dback TIMEOUT 90 RING AT&C0S0=l ogin: \q\dvasya assword: \q\dpasswordfortest

В файл chat-callback необходимо вписать телефон Callback-сервера, имя и пароль пользователя. П Создать файл /usr/bin/pppcall, в котором должны быть такие строки: #!/bin/bash /usr/sbin/pppd -detach call ppp-callback &

И сделать его исполняемым. Теперь для того чтобы позвонить на ваш сервер, достаточно запустить сценарий pppcall.

Конфигурирование клиента MS Windows Для Windows конфигурация производится по-другому. Выберите команду меню Пуск/Программы/Стандартные/Удаленный доступ к сети/Новое соединение. Укажите данные, необходимые для дозвона к серверу. Помимо этого, в настройках модема на вкладке Подключения нажмите кнопку Дополнительно и в строке инициализации модема укажите следующее: &c0s0=l

Теперь пробуем дозвониться до нашего сервера. После дозвона в открывшемся окне терминала вы увидите приглашения для аутентификации. Зарегистрируйтесь в системе как back. После этого модем со стороны сервера оборвет связь, подождет несколько секунд и перезвонит вам. После установки соединения вам предложат пройти повторно авторизацию. Введите имя учетной записи и пароль и нажмите кнопку Продолжить в окне терминала.


Глава 20

Доступ к удаленным компьютерам Любая UNIX-подобная операционная система может предоставлять удаленный доступ, начиная от простейшего консольного режима и заканчивая работой системы X Window, от простого редактирования текста до полного администрирования удаленной системы. В мире UNIX в порядке вещей, когда администратор сервера месяцами не имеет физического контакта с сервером и тем не менее он ежедневно удаленно производит мониторинг, обновление программного обеспечения и администрирование сервера. Для этих целей используются несколько программных пакетов и протоколов: Telnet, SSH и некоторые другие.

Telnet Под Telnet понимают трехкомпонентную систему, состоящую из: • Telnet-клиента; • Telnet-сервера; • Telnet-протокола.

Telnet-протокол Telnet-протокол является протоколом приложения, использует транспортный протокол TCP и описан в стандарте RFC 854. Авторы стандарта говорят, что назначение Telnet — дать общее описание, насколько это только возможно, двунаправленного, восьмибитного взаимодействия, главной целью которого является обеспечение стандартного метода взаимодействия терминального устройства и терминал-ориентированного процесса. При этом данный протокол может быть использован и для организации взаимодействий "терминал-терминал" (связь) и "процесс-процесс" (распределенные вычисления).


270

Глава 20

Telnet-протокол для обеспечения функциональности основан на следующих базовых концепциях: • сетевой виртуальный терминал (Network Virtual Terminal, NVT); • согласование параметров взаимодействия; О симметрия связи "терминал-процесс". Рассмотрим эти концепции подробнее. Сетевой виртуальный терминал позволяет абстрагироваться от реалий. Это стандартное описание наиболее широко используемых возможностей физических терминальных устройств. Сетевой виртуальный терминал позволяет описать и преобразовать в стандартную форму способы отображения и ввода информации. Telnet-клиент и Telnet-сервер преобразовывают характеристики физических устройств в спецификацию сетевого виртуального терминала, что позволяет унифицировать характеристики физических устройств и обеспечить принцип совместимости устройств с разными возможностями. Характеристики диалога диктуются устройством с меньшими возможностями. В Telnet-протоколе сетевой виртуальный терминал определен как "двунаправленное символьное устройство, состоящее из принтера и клавиатуры". Принтер предназначен для отображения приходящей по сети информации, а клавиатура — для ввода данных, передаваемых по сети. По умолчанию предполагается, что для обмена информацией используется 7-битный код ASCII, каждый символ которого закодирован в 8-битное поле. Согласование параметров взаимодействия позволяет унифицировать возможности представления информации на терминальных устройствах. Благодаря этой концепции, можно использовать большинство возможностей современных терминалов. Обычно для этого существует специальная таблица соответствия, которая позволяет нестандартные команды терминала заменить стандартными наборами команд. Как правило, процесс согласования форм представления информации происходит в начальный момент организации Telnet-соединения. Каждый из процессов старается установить максимальные параметры сеанса. В UNIX-системах параметры терминалов содержатся в базе данных описания терминалов termcap. При инициировании Telnetсоединения обычно именно эти параметры используются в процессе согласования формы представления данных. При этом из одной системы в другую передается значение переменной окружения TERM. В процессе договора останутся только те функции, которые поддерживаются на обоих концах соединения. Симметрия взаимодействия позволяет клиенту и серверу в течение одной сессии меняться ролями.

Программа-клиент telnet Программа telnet — стандартный Telnet-клиент, входящий во все операционные системы UNIX-семейства и в практически все операционные систе-


Доступ к удаленным компьютерам

271

мы Windows. Для подключения к удаленной системе обычно используется команда вида: t e l n e t <имя_хоста>

Основные команды программы telnet приведены в табл. 20.1. Таблица 20.1. Команды программы telnet Команда

Описание

Open <host> [ <port>]

Начать Telnet-сессию с машиной <host> по порту <port>. Адрес машины можно задавать как в форме IP-адреса, так и в форме доменного адреса

close

Завершить Telnet-сессию и вернуться в командный режим

Quit

Завершить работу программы telnet

z

"Заморозить" Telnet-сессию и перейти в режим интерпретатора команд локальной системы. Из этого режима можно выйти по команде E x i t

Mode <type>

Если значение <type> равно l i n e , то используется буферизованный обмен данными, если c h a r a c t e r — обмен не буферизованный

? [<command>] h e l p [<command>]

Список команд или описание конкретной команды

Send <argument>

Данная команда используется для ввода команд и сигналов протокола Telnet, которые указываются в качестве аргумента

Программа-сервер telnetd telnetd — это сервер, обслуживающий Telnet-протокол. Для этого, обычно, используется ТСР-порт 23, но программу можно сконфигурировать на использование другого порта. При установке взаимодействия с удаленным клиентом telnetd обменивается командами настройки: включение режима эха, обмен двоичной информацией, тип терминала, скорость обмена, переменные окружения.

Применение Telnet и безопасность Telnet-протокол долгие годы был единственной универсальной возможностью удаленно работать с различными консольными профаммами. По своей простоте, нетребовательности к ресурсам и полосе пропускания он до сих пор не имеет себе равных. Помимо этого, клиентская программа telnet позволяет устанавливать соединения и с другими сервисами (например, с почтовым сервером SMTP или РОРЗ), что дает возможность производить


272

Глава 20

различные манипуляции (например, просмотреть без почтового клиента содержимое своего почтового ящика или отправить письмо). Однако при всех его достоинствах Telnet-протокол имеет один огромный недостаток — данные пересылаются в открытом виде. Из-за этого любому злоумышленнику не составляет труда перехватить имя и пароль пользователя, а также другую информацию. В качестве ��льтернативы Telnet используются SSH или OpenSSH. На сегодняшний день практически во всех дистрибутивах демон Telnet вынесен в устаревшие службы и настойчиво не рекомендуется к использованию. Однако Telnet-клиент имеет смысл держать под руками для всяких непредвиденных случаев — отладка почтового сервиса, FTP и т. п. Тем более что многие интеллектуальные устройства, к примеру, фирмы Cisco, первоначальную конфигурацию производят именно посредством Telnet.

Протоколы SSH и OpenSSH SSH обеспечивает возможность удаленного выполнения команд и копирования файлов с аутентификацией клиента и сервера, а также с шифрованием передаваемых данных, в том числе имени и пароля пользователя. Дополнительно обеспечивается шифрование данных X Window и перенаправление любых TCP-соединений. Существует несколько программных реализаций, в частности, коммерческий — SSH и бесплатный пакет с открытым исходным кодом — OpenSSH.

Принцип работы SSH SSH представляет собой протокол транспортного уровня, аутентификации и соединения, а также программные средства безопасного доступа к компьютерам по небезопасным каналам связи (Telnet, Xll, RSH, FTP). Аутентификация производится с использованием асимметричного шифрования с открытым ключом (SSH1 — RSA, SSH2 — RSA/DSA). Обмен данными — симметричное шифрование. Целостность переданных данных проверяется с помощью специальных контрольных сумм. Работает поверх TCP и использует порт 22. В качестве ключа берется случайная строка, которую генерирует клиент, шифрует с помощью открытого ключа сервера и передает серверу. Протокол аутентификации работает поверх протокола транспортного уровня и обеспечивает аутентификацию клиента для сервера. Шифрование трафика начинается после аутентификации сервера, но до аутентификации клиента, таким образом, пароли в открытом виде не передаются. Возможно соединение произвольных TCP-портов по защищенным каналам. Предусматривается возможность сжатия. Существует две версии протокола: SSH1 и SSH2. По своей реализации это совершенно разные протоколы. Протокол SSH2 был разработан с учетом


Доступ к удаленным компьютерам

273

найденных в первом варианте уязвимостей. Однако не стоит уповать на абсолютную надежность и защищенность SSH2. Недавно в OpenSSH была найдена уязвимость, которую, правда, быстро исправили. Поэтому желательно отслеживать сообщения о найденных уязвимостях в пакетах, используемых на сервере и обновлять их по мере выхода новых версий.

OpenSSH Это некоммерческая реализация протокола SSH с открытым кодом. Программный пакет способен работать с протоколами SSH1 и SSH2. Имеется также поддержка r-команд. Для большинства дистрибутивов пакет OpenSSH включен в стандартную инсталляцию.

Конфигурирование OpenSSH Конфигурирование OpenSSH очень сильно зависит от концепции обеспечения безопасности и необходимости поддержки протокола старого типа. Поскольку использование протокола SSH1 из-за найденных уязвимостей не рекомендуется — при конфигурировании необходимо запретить его использование. Также рекомендуется запретить использование r-команд и всего, что с ними связано. При конфигурировании OpenSSH необходимо произвести настройку сервера и клиента. Конфигурационный файл сервера называется sshd_config, а клиента — ssh_config. Файл sshd_config. Файл sshd_config задает параметры SSH-серверу и может содержать внушительный список различных параметров. Далее приведены его основные конфигурационные параметры: О AllowGroups <список-имен-групп-через-пробел> — ВХОД разрешен ТОЛЬКО пользователям, чья группа входит в этот список; • AiiowTcpForwarding yes/no — разрешает или запрещает маршрутизацию ТСР-пакетов; • AllowUsers <список-имен-через-пробел> — ВХОД разрешен только перечисленным пользователям; • AuthorizedKeysFile

<имя-файла-с-публичным-ключом> — задает ИМЯ

файла, содержащего публичный ключ; П Banner <сообщение-перед-аутентификацией> — текст сообщения, ВЫВОДИМОГО сервером перед аутентификацией клиента; • ciphers — список алгоритмов симметричного шифрования для SSH2: aesl28-cbc, 3des-cbc, blowfish-cbc, castl28-cbc, arcfour;

• clientAliveinterval <секунд> — определяет интервал в секундах, через который сервер будет производить проверку, произошло или нет отключение клиента;


274

Глава 20

О ciientAliveCountMax <число> — данный параметр определяет число неудачных проверок существования связи с пользователем до разрыва сессии; П DenyGroups

<список-имен-групп-через-пробел>

определяет СПИСОК

групп пользователей, которым запрещено устанавливать соединение с сервером; • Denyusers <список-имен-через-пробел> — определяет список пользователей, которым запрещено устанавливать соединение с сервером; П GatewayPorts no/yes — данный параметр определяет, разрешать или нет удаленным хостам доступ к перенаправленным портам; • HostbasedAuthentication no/yes — разрешить или запретить аутентификацию, используя имя хоста (только для SSH2); О HostKey <имя-файла-содержащего-приватный-ключ> — С ПОМОЩЬЮ данно-

го параметра можно указать серверу, где расположен файл, содержащий секретный ключ шифрования; • ignoreRhosts yes/no — этот параметр позволяет определить, использовать или нет файлы .rhosts и .shosts для аутентификации. Для увеличения безопасности системы рекомендуется запретить использование этих файлов; П ignoreUserKnownHosts no/yes — параметр позволяет запретить использование файла ~/.ssh/known_hosts во время аутентификации rhosts+RSA; • KeepAiive yes /no — параметр позволяет использовать механизм регулярных сообщений для проверки разрыва связи; • KerberosAuthentication yes/no — параметр позволяет запретить использование Kerberos при аутентификации; • KerberosOrLocaiPasswd yes /no — в том случае, если аутентификация через Kerberos не прошла, данный параметр позволяет использовать /etc/passwd для аутентификации; • KeyRegenerationinterval ключа сервера;

3600 — параметр задает интервал регенерации

• ListenAddress о . о . о . о — параметр определяет, к каким адресам прислушиваться; при использовании необходимо также определить параметр Port;

• LoginGraceTime <секунм> — данный параметр определяет, через сколько секунд произойдет разрыв соединения, если при аутентификации пользователь за это время не введет пароль; • LogLevei INFO — параметр определяет, какой уровень использовать при создании сообщений в журнал системы. Можно использовать следующие УРОВНИ: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG;


Доступ к удаленным компьютерам •

MACs <алгоритмы-проверки-целостности-данных>

275 — ЭТОТ параметр опре-

деляет, какой алгоритм будет использоваться для проверки целостности данных: hmac-md5, hmac-shal, hmac-ripemdl60, hmac-shal-96, hmac-md5-96; • Maxstartups io — данный параметр задает максимально возможное количество соединений, ожидающих аутентификации; О passwordAuthentication yes/no — параметр разрешает аутентификацию по паролю; • permitEmptyPasswords no/yes — параметр разрешает использование пустых паролей; П PermitRootLogin yes/no/without-password/forced-commands-only— параметр разрешает пользователю root подключаться к серверу; • pidFile <имя-файла> — параметр задает имя файла, в котором будет храниться PID (Process Identification, идентификатор процесса) сервера; • port 22 — параметр определяет, какой порт слушает сервер; • printMotd yes /no — параметр разрешает использование /etc/motd при входе пользователя в систему для выдачи сообщения; • protocol 2 — параметр определяет, с какой версией протокола работает сервер; П PubkeyAutnentication yes/no — параметр разрешает использовать публичный ключ при аутентификации; П ReverseMappingcheck no/yes — параметр разрешает после определения адреса по имени хоста производить проверку того, что обратная зона для этого адреса указывает на тот же самый хост; • RhostsAutnentication no/yes — параметр разрешает аутентификацию только на основании файлов .rhosts или /etc/hosts.equiv; • RhostsRSAAuthentication no/yes — параметр разрешает аутентификацию на основе .rhosts- и RSA-аутентификации; П RSAAuthentication yes/no — данный параметр используется только для протокола SSH1; • serverKeyBits 768 — данный параметр определяет длину ключа; П strictModes yes /no — параметр разрешает проверять права доступа к файлам с частными паролями при запуске; • sysiogFaciiity AUTH — параметр задает тип сообщений, передаваемых на syslog: DAEMON, USER, AUTH, LOCALO, LOCALI, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7;

П useLogin no/yes — параметр разрешает использовать login для интерактивных сессий; • xiiDispiayOffset io — параметр определяет первый доступный номер дисплея при передаче XII.


276

Глава 20

Файлы на сервере, используемые при входе SSH. При входе SSH на сервере используются следующие файлы: • /etc/nologin — при наличии этого файла запрещается вход пользователей, кроме root. Содержимое файла выдается в качестве сообщения о причине отказа в доступе; • /etc/hosts.allow — используется для разрешения доступа; • /etc/hosts.deny — используется для запрещения доступа; П ~/.rhosts — файл содержит пары "хост — пользователь", разделенные пробелом. Для указанного пользователя с указанного хоста разрешается заходить без ВВОДа пароля при ИСПОЛЬЗОВанИИ RhostsAuthentication и RhostsRSAAuthentication. Так же используется семейством г-команд; • ~/.shosts — аналогично файлу .rhosts, но не используется семейством г-команд; • /etc/hosts.equiv — список хостов, с которых пользователи могут заходить, не указывая паролей, под теми же самыми именами. За именем хоста можно указывать имя конкретного пользователя. Так же используется семейством г-команд; • /etc/shosts.equiv — аналогично файлу hosts.equiv, но не используется семейством г-команд; • ~/.ssh/environment — содержит пары вида "имя — значение", которые помещаются в окружение при входе. Файлы ключей сервера. В качестве ключей сервера используются следующие файлы: • /usr/local/etc/ssh_host_key — приватный ключ хоста; П /usr/local/etc/ssh_host_rsa_key — приватный ключ хоста, алгоритм шифрования RSA; • /usr/local/etc/ssh_host_dsa_key — приватный ключ хоста, алгоритм шифрования DSA; • /usr/local/etc/ssh_host_key.pub — публичный ключ хоста; • /usr/local/etc/ssh_host_rsa_key.pub — публичный ключ хоста, алгоритм шифрования RSA; • /usr/local/etc/ssh_host_dsa_key.pub — публичный ключ хоста, алгоритм шифрования DSA. Файл ssh_config. Данный файл предназначен для конфигурации SSHклиента и разделен на секции директивами Host. Секция применяется при работе с хостом, удовлетворяющим шаблону секции: • Host <шаблоны> — следующие опции применимы к хостам, подходящим под один из шаблонов; имя хоста берется из командной строки, в шаблонах используются символы "*" и "?";


Доступ к удаленным компьютерам

277

• BatchMode no | yes — параметр разрешает не запрашивать пароль/парольную фразу; П checkHostip yes |no — позволяет дополнительно проверять адрес сервера в known_hosts; П cipher 3des |blowf ish — определяет алгоритм шифрования данных; •

Ciphers

aesl28-cbc, 3des-cbc, blowfish-cbc, castl28-cbc, arcfour,

aesi92-cbc, aes256-cbc — определяют алгоритм шифрования данных; • clearAllForwardings no|yes — данный параметр позволяет сбросить все перенаправления портов; П compression no |yes — параметр разрешает производить сжатие передаваемых данных; • compressionLevel <уровень-сжатия> — параметр определяет сжатия данных для протокола SSH1; • ConnectionAttempts <число-попыток-соединения> — число попыток установления соединения;

параметр

уровень задает

• EscapeChar <символ> | <лсимвол>| попе— параметр позволяет определить символ для использования вместо тильды; П FaiiBackToRsh no | y e s — параметр разрешает использовать RSH в том случае, если сервер не имеет SSH-сервера; • ForwardAgent no | yes — параметр определяет, передавать ли запрос к агенту аутентификации на удаленный хост; П GatewayPorts n o | y e s — параметр разрешает удаленным хостам соединяться на перенаправленные локальные порты; • GiobaiKnownHostsFile <имя-файла> — параметр разрешает использовать указанный файл вместо /usr/local/etc/ssh_known_hosts; • HostKeyAigorithms ssh-rsa,ssh-dss — параметр определяет используемые алгоритмы шифрования (SSH2); • i d e n t i t y F i l e <имя-файла> — параметр определяет файл, в котором хранится приватный ключ; П KeepAiive yes | no — параметр позволяет заметить разрыв связи или аварийное завершение на удаленном конце; О KerberosAuthentication y e s | n o — Kerberos-аутентификацию;

параметр разрешает

использовать

• LogLevel INFO — параметр определяет, какой уровень использовать при создании сообщений в журнал системы. Можно использовать следующие УРОВНИ: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG;


278

Глава 20

П MACS hmac-md5, hmac-shal, hmac-ripemdl60, hmac-shal-96, hmac-md5-96—

параметр определяет используемые алгоритмы для создания контрольной суммы; • NumberofPasswordPrompts з — параметр определяет количество попыток ввода пароля пользователя; • PasswordAuthentication yes/no — параметр разрешает аутентификацию по паролю; П Port 22 — параметр определяет, к какому порту будет подключаться клиент; П PreferredAuthentications

interactive — (SSH2);

параметр

publickey,

определяет

password,

приоритеты

keyboard-

аутентификации

О Protocol <список-версий-протокола> — параметр задает список версий протокола в порядке предпочтительности; • ProxyCommand — применение этого параметра позволяет использовать дополнительную команду для соединения с сервером; • PubkeyAuthentication y e s | n o — параметр разрешает использовать при аутентификации публичный ключ (SSH2); • RhostsAuthentication y e s | n o — параметр разрешает использовать при аутентификации файл .rhosts (SSH1); П strictHostKeyChecking ask|no |yes — параметр разрешает не добавлять незнакомые или изменившиеся хосты в know_hosts; • usePriviiegedPort yes | no — параметр разрешает использовать привилегированные порты для установления соединения; • user <имя-пользователя> — параметр задает имя пользователя, которому разрешено работать с SSH; П userKnownHostsFile <файл-кпоып_1ювьз> — параметр определяет местоположение файла known_hosts; • useRsh n o | y e s — параметр разрешает использовать RSH в том случае, если SSH на хосте отсутствует. Файлы ключей клиента. В качестве ключей клиента используются следующие файлы: • ~/.ssh/identity — приватный RSAl-ключ пользователя; • ~/.ssh/id_dsa — приватный DSA2-KniO4 пользователя; О ~/.ssh/id_rsa — приватный RSA2-miio4 пользователя; • ~/.ssh/identity.pub — публичный RSAl-ключ пользователя; • ~/.ssh/id_dsa.pub — публичный DSA2-IGIIO4 пользователя; • ~/.ssh/id_rsa.pub — публичный RSA2-iciiO4 пользователя.


Доступ к удаленным компьютерам

279

Ключи запуска SSH-сервера Помимо конфигурационного файла, некоторые особенности функционирования SSH-сервера можно задать, используя ключи запуска. Далее приведены основные ключи запуска: • -D — не отсоединяться от терминала при запуске; • -ь <бит> — задает число бит ключа сервера (SSH1), по умолчанию 768; • -d — переводит сервер в отладочный режим, использование нескольких ключей увеличивает количество отладочной информации; П -е — разрешает выводить сообщения на stderr вместо syslog (т. е. не журналировать сообщения, а сразу выводить на стандартное устройство для вывода ошибок — обычно это текстовый терминал); О -f <имя-конфигурационного-файла> — определяет положение конфигурационного файла, удобно использовать при отладке; • -д <время-ожидания> — определяет время ожидания между вводом имени и пароля пользователя; О -h <файл-ключей-хоста> — определяет местоположение файла ключей; • -к <интервал> — задает интервал регенерации ключа сервера; П -р <порт> — определяет порт, который будет слушать сервер; П -q — запрещает выдачу информации на syslog (т. е. запрещает журналирование событий); О - t — позволяет произвести проверку на отсутствие ошибок в конфигурационном файле и ключах; • -и <число> — вместо имен хостов, превышающих <число>, в журнале utmp будет записываться IP-адрес: -ио вызывает безусловную запись IPадресов; О -4 — использование протокола IPv4; • -б — использование протокола IPv6.

Ключи запуска SSH-клиента Как и для сервера, для изменения некоторых параметров клиента можно воспользоваться ключами запуска: • -а — запретить перенаправление агента аутентификации; П -А — разрешить перенаправление агента аутентификации; П -ь <адрес> — позволяет для хоста с несколькими интерфейсами использовать конкретный адрес; • -с biowfish|3des — задает используемый алгоритм шифрования (SSH1);


280

Глава 20

П -с <список-алгоритмов-шифрования-через-запятую>

— алгоритм В НЭЧа-

ле списка имеет наибольший приоритет; по умолчанию: aesi2 8-cbc, 3des-cbc, blowfish-cbc, castl28-cbc, arcfour, aesl92-cbc, aes256-cbc

(SSH2); П -D <локальный-порт> — эмуляция SOCKS4-cepBepa по защищенному каналу; • -e <символ> I <лсммаол> | none — определяет Escape-символ вместо тильды; none обеспечивает прозрачную передачу данных; П -f — перейти в фоновый режим после запроса пароля или парольной фразы; • - F <имя-конфигурационного-файла> — разрешает использовать указанный файл в качестве конфигурационного; • -д — разрешать удаленному хосту подсоединяться к локальным перенаправленным портам; • - i <имя-файла> — определяет файл, в котором хранится приватный ключ; • -к — запретить перенаправление Kerberos; • -1 <имя-пользователя> — определяет, от имени какого пользователя устанавливается соединение; П -т <список-алгоритмов-обеспечения-целостности-соединения> — определяет алгоритмы подсчета контрольной суммы; • -п — направить /dev/null на stdin и перейти в фоновый режим; • -р <порт> — соединиться с указанным хостом на удаленном хосте; П -р — использовать непривилегированный порт для исходящего соединения, чтобы обойти ограничения сетевого экрана; П -R <локальный-порт>:<хост>:<удаленный-порт>—

если ПРОИСХОДИТ СО-

единение на удаленный порт, то оно перенаправляется по защищенному каналу на локальный порт; CI -s — запуск подсистемы на сервере — например, sftp; имя подсистемы задается последним параметром; • - t — требовать выделения псевдо-tty; • -т — не выделять псевдо-tty; • -х — запретить перенаправление XII; П -х — разрешить перенаправление XII; • -1 — использовать только SSH1 -протокол; • -2 — использовать только SSH2-npoTomn; • -4 — использовать IPv4; • -6 — использовать IPv6.


Доступ к удаленным компьютерам

281

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

Программа ssh-keygen Программа ssh-keygen предназначена для генерации, преобразования и управления ключами. По умолчанию генерирует RSA-ключ. При генерации запрашивается парольная фраза. Число бит по умолчанию — 1024. Имя файла для хранения публичного ключа образуется из имени файла для частного ключа добавлением суффикса .pub. Ключ хоста должен иметь пустую парольную фразу. Возможные строки запуска: О генерирует ключ по указанному пользователем алгоритму: ssh-keygen [-t r s a l | d s a | r s a ] [-b <бит>] [-N <ларольная-фраза>] [-C <комментарий>] [-f <имя-файла-записи>] [-q]

• изменяет комментарий: ssh-keygen -с [-Р <парольная-фраза>] [-С <комментарий>] [-f <файл-с-ключами>]

О читает приватный или публичный ключ в формате OpenSSH и преобразует его в формат SecSh для экспорта в другие реализации SSH: ssh-keygen -e [-f

<файл-с-ключами>]

• читает приватный или публичный ключ в формате SSH2 или SecSh и преобразует его в формат OpenSSH: ssh-keygen - i [-f

<файл-с-ключами>]

• позволяет изменить парольную фразу: ssh-keygen -p [-P <старая-парольная-фраза>] [-N <новая-парольнаяфраза>] [-f <файл-с-ключами>]

П читает приватный OpenSSH DSA ключ и выдает OpenSSH DSA публичный ключ: ssh-keygen -у [-f

<файл-с-ключами>]

Программа ssh-agent Программа ssh-agent позволяет производить RSA/DSA-аутентификацию. Она запускается в начале сессии и устанавливает переменные окружения, с помощью которых остальные программы могут использовать ее для автоматической аутентификации SSH. Параметром является имя команды и ее аргументы, выполнение ssh-agent останавливается при завершении команды.


282

Глава 20

Если имя команды не указано, то ssh-agent запускается в фоновом режиме, а на stdout выдаются команды экспортирования необходимых переменных окружения. Опции командной строки ssh-agent: • -с — позволяет выдавать на stdout команды в стиле csh1; • -s — позволяет выдавать на stdout команды в стиле sh; • -к — завершает работу агента по переменной SSH_AGENT_PID.

Программа ssh-add Эта программа используется для добавления приватных ключей. Она запрашивает парольную фразу, расшифровывает приватный ключ и посылает его ssh-agent. Если терминал недоступен, но определена переменная DISPLAY, TO для ввода парольной фразы используется программа, определенная переменной SSH_ASKPASS. Таким образом, парольная фраза запрашивается только один раз за сеанс, а не при каждом вызове ssh/scp/sftp. Опции командной строки ssh-add: О имя файла — имя файла с приватным ключом, по умолчанию используется ~/.ssh/identity; • -L — выдает публичные ключи, хранящиеся в ssh-add; • -а — удаляет приватный ключ; • -D — удаляет все ключи.

Программа sftp Программа sftp является клиентом для SFTP-сервера (Secure File Transfer Protocol, защищенный протокол передачи файлов), который должен быть описан в опции Subsystem в конфигурационном файле sshd. Программа sftp позволяет пересылать файлы в режиме, подобном FTPпротоколу, однако она осуществляет все операции поверх SSH. К сожалению, данный вариант FTP пока не получил широкого распространения. Опции командной строки: •

[<пользователь>%\<имя-хоста>{:<каталог>/] — задает аналогично FTP имя пользователя, хост, к которому производится подключение, и каталог подключения;

• -ь <имя-файла> — позволяет читать команды из файла вместо стандартного устройства ввода; • -с — разрешает использовать сжатие пересылаемых файлов; Командная оболочка UNIX.


Доступ к удаленным компьютерам

283

• -F <имя-конфигурационного-файла-звЬ> — указывает, какой конфигурационный файл использовать; • -о <опция> — передается SSH. Интерактивные команды, используемые sftp, аналогичны FTP-командам: • bye — разорвать соединение; • cd <путь> — сменить каталог; • led <путь> — сменить каталог; • chgrp gid <имя-файла> — изменить групповой идентификатор файла на указанный в команде; • chmod mode <имя-файла> — изменить атрибуты файла; • chown uid <имя-файла> — изменить владельца файла; • exit — выйти; О get

[-P] <имя-удаленного-файла>

[<имя-локального-файла>]

— КОМЭН-

да для получения файла, ключ - Р позволяет сохранить права и время создания и модификации получаемого файла; П help — позволяет получить справку по командам; • U s [<опции-1в> [<имя-файла>] ]—получить список файлов; О lpwd — пароль; • mkdir <имя> — создать каталог; О put

[-P]

<имя-локального-файла>

[<иия-удаленного-файла>]

— ВЫГру-

зить на сервер файл, ключ - Р позволяет сохранить права, время создания и модификации передаваемого файла; О pwd — пароль; • quit — выйти; П rename <старое-имя> <новое-имя> — переименовать файл; О rmdir <имя> — удалить каталог; О rm <имя-файла> — удалить файл; О symlink <старое-имя> <новое-имя> — создать символическую ССЫЛКу.

Программа scp Программа scp является аналогом программы гер и осуществляет копирование файлов между хостами, причем оба могут быть удаленными. Способы аутентификации аналогичны SSH. Вызывает SSH для организации канала передачи данных. Имя файла записывается в виде: [[<лользоваталь>@]<хост>:]<файл>


284

Глава 20

Опции командной строки: • -с <алгоритм-шифрования> — передается SSH; • - i <имя~файла> — файл с приватным ключом, передается в SSH; • -о <опция> — передается SSH; О -р — сохраняет время модификации, использования и права доступа к файлу; П -г — позволяет рекурсивно копировать весь каталог; • -в — пакетный режим — не запрашивать пароль или парольную фразу; • -с — разрешает производить сжатие при передаче файла; • - F <конфигурационный-файл> — определяет альтернативный конфигурационный файл; П -р <порт> — задает порт сервера; • -s <программа> — разрешает использовать указанную программу вместо SSH; • -4 — использовать IPv4; • -6 — использовать IPv6.

Программа ssh-keyscan Программа ssh-keyscan позволяет собрать публичные ключи хостов, имена хостов задаются в качестве параметров или в файле. Опрос производится параллельно. Опции командной строки: • -t <тип-ключа> — задает тип шифрования ключа (RSA1, RSA, DSA); • -т <секунд> — определяет тайм-аут; • -f <имя - файла >— определяет файл, в котором каждая строка содержит имя или адрес хоста; • -4 — использовать IPv4; П -б — использовать IPv6; • -р <удаленный-порт> — определяет порт.

Windows SSH-клиент Поскольку мы занимаемся сопряжением Windows и Linux, то почти наверняка управлять сервером вам придется из Windows. К сожалению, в стандартной поставке этой операционной системы нет SSH-клиента и нам необходимо искать альтернативу, желательно бесплатную. И она, конечно же, есть — это великолепная программа, называемая PuTTY. Скачать программу, раз-


Доступ к удаленным компьютерам

285

мер ее порядка 380 Кбайт, можно по адресу www.chiark.greenend.org.uk/ ~sgtatham/putty/download.html. На этой странице помимо Telnet и SSH клиента PuTTY можно получить следующие программы: • PuTTY (Telnet- и SSH-клиент); • PSCP (SCP-клиент); • PSFTP ( SFTP-клиент); • PuTTYtel (только Telnet-клиент); • Plink (клиент командной строки); П Pageant ( SSH-агент аутентификации для PuTTY, PSCP и Plink); • PuTTYgen (утилита генерации RSA- и DSA-ключей). Последняя версия на момент написания книги была 0.57. После того как вы успешно скачали файл, мы его просто запускаем. Внешний вид программы можно увидеть на рис. 20.1. *•: PuTTY Confieuiation Category: | ш- Session ;

Logging

E r Terminal i

i Keyboard

|

\ Bell

; 3

Features Window Appearance

;

Behaviour Translation

Basic options for your PuTTY session • Specify your connection by host name or IP address :

! 1 0 S t й а ™ е .(°' I P a d * e s s )

£° rt

_

Protocol:

Oflaw

Olelnet

® SSH

• Load, save or delete a stored session Savgd Sessions

.

Selection j

;

Colours

Й Connection

Default Settings Lesozavodsk

Proxy Telnet Rlogin

8 SSH j Auth i™ Tunnels U Bugs

About

Close window on exit: О Always О Never

© Only on clean exit

flpen Л

Cancel

Рис. 2 0 . 1 . Программа PuTTY

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


Глава 20

286

происходит подключение. Чуть ниже мы выбираем протокол, с помощью которого будет происходить общение. Это может быть просто поток символов, Telnet, R-login и SSH. К примеру, мы зададим 192.168.0.1, 22 порт и протокол SSH. С левой частью сложнее. Она отвечает за разнообразные настройки и разбита на соответствующие группы. В секции Session определяется поведение PuTTY во время сессии, в частности, что протоколировать и куда именно, в какой файл. В секции Terminal настраивается, как и какой терминал эмулирует наша программа, какой тип и раскладка клавиатуры используется и т. д. В секции Window находятся настройки внешнего вида окна PuTTY, кодовой таблицы символов и т. п. В секции Connection — сетевые настройки программы. И в секции SSH — параметры и особенности использования SSH-протокола. Центральная часть. Здесь мы можем как-то назвать наше сконфигурированное соединение и сохранить его в списке доступных. Как видно, на рисунке у меня есть соединение Lesozavodsk. Достаточно мне его выбрать и нажать кнопку Open, как откроется окно терминала, где я введу имя и пароль и получу доступ к консоли удаленного сервера (который стоит, кстати, на пароходе, у причала, за 10 километров от меня) по протоколу SSH (рис. 20.2). Как видите — все просто. Теперь мы можем управлять нашим удаленным сервером так, как если бы находились прямо возле него.

Рис. 20.2. Консоль удаленного сервера


Доступ к удаленным компьютерам

287

VNC Еще одна возможность удаленного доступа к компьютерам — это программа VNC (Virtual Network Computing). К теме нашей книги она, казалось бы, не относится, поскольку работает только с графическими средами, но, тем не менее, я считаю, что вы должны знать о такой возможности, поскольку этот пакет может работать под множеством операционных систем. Домашняя страница программы — www.realvnc.com или www.uk.research.att.com/vnc.

Пакет состоит из двух частей — клиента и сервера. Сервер устанавливается на компьютерах, к которому вы хотите подключаться, клиент — на том компьютере, за которым вы будете работать. Доступ к серверу ограничен паролем. Благодаря этому пакету вы получаете на клиентской машине полное отображение экрана компьютера, к которому вы подключились и можете управлять мышью и клавиатурой на удаленной машине, т. е. полностью работать на удаленном компьютере.


Глава 21

Утилиты администрирования сети и обеспечения безопасности Пожалуй, одна из самых сложных и трудоемких задач системного администратора — администр