Вы находитесь на странице: 1из 318

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

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


и 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
Подключение к Интернету 63
Внешние модемы 63
Модемы, подключаемые к последовательному порту 63
Модемы, подключаемые к USB 64
Внутренние модемы 64
Настройка модемного соединения 65
Связь с провайдером 66
Схема организации подключения локальной сети 66
Настройка связи с провайдером 67
Команды pppd 69
Настройка diald 72
Создание сценария соединения: /etc/diald/connect 72
Настройка основной конфигурации: /etc/diald.conf 74
Настройка правил тайм-аутов: /etc/diald/standard.filter 75
Комплексное тестирование 76
Оглавление

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

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


Web-сервер Apache ....85
Конфигурация 85
Файл access.conf 86
Файл srm.conf 87
Файл httpd.conf. 87
Webmin 90
Страница Webmin 92
Настройка Webmin 94
Страница Система 101
Службы 111
Сеть 117
Оборудование 122
Кластер 126
Прочее 126

Глава 5. Настройка общего доступа


к дисковому пространству сервера — Samba , 129
Установка Samba 129
Файл конфигурации smb.conf 130
Секция [global] 136
Секция [homes] 139
Секция [сотт] 139
Секция [tmp] 140
Пароли пользователей 140
Добавление пользователей Samba 141
Принтеры 141
Использование ресурсов Samba 142
Утилиты 143
Webmin 144
Антивирусные программы, clamav 148
Оглавление

Глава 6. Настройка общего доступа


к дисковому пространству сервера — FTP-сервер 151
Программное обеспечение 151
Пакет vsftp 151
Файл etc/vsftpd/vsftpd.conf 152
Файл etc/vsftpd.ftpusers 155
Файл etc/vsftpd.user_list 156
Пакет wu-flp , 156
Файл ftpaccess 156
Файл ftpservers 160
Файл ftpconversions 160
Файл ftpgroups 161
Файл ftphosts 161
Файл ftpusers 161
Безопасность 161

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


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

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


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

Глава 9. DHCP 177


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

Файл dhcpd.leases 182


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

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


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

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

Глава 12. FTP 201


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

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


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

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


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

Имена и размеры файлов 217


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

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


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

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


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

Клиентские программы для синхронизации времени 245


UNIX/Linux 246
Apple 246
Windows 246

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


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

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


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

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


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

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


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

Протоколы SSH и OpenSSH 272


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

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


и обеспечения безопасности 289
Расширенное управление доступом к файлам 289
Установка Linux ACLs 290
Установка и изменение прав доступа 291
Дополнительные возможности 292
Шифрование 293
Stunnel : 293
Организация шифрованного туннеля 294
Stunnel и приложения, поддерживающие SSL 294
Сертификаты 295
Утилиты сканирования и защиты сети 295
SATAN.... 295
Portsentry 296
Установка и настройка 296
Запуск 298
Сетевая статистика 298
NeTraMet 299
Протоколирование 299
Демон syslogd 299
Файл конфигурации 299
Сетевое протоколирование 301
Демон klogd 301
Защита системы после взлома 301
Rootkit 302
Обнаружение rootkit 303
Сканирование портов 303
Использование RPM 304
10 Оглавление

Сканер для rootkit 304


После обнаружения 304
LIDS 305
Установка 305
Конфигурирование LIDS 307
Возможности 308
Правила доступа 310
Portsentry 311
LogSentry 312
Tripwire 312
AIDE 312
RSBAC 312
Security-Enhanced Linux 313

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


RBL 316
SpamAssassin 316

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


Глава 1

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

В этой главе мы закладываем базу нашего строения — выбираем аппаратное


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

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

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

Наименование Описание Цена, $ США


Материнская ASUS P4P800-MX S-478 (i865GV/ICH5) mATX 73
плата 800 МГц, 3PCI, 4 DDR (PC3200) DC, SATA, 8USB,
6ch AC97, SVGA, LAN 10/100
Процессор CPU Intel Celeron 1800 (128 Кбайт, 400 МГц) 68
Socket-478 box, cooler
ОЗУ Модуль DDRAM 256 Мбайт 400 МГц <РС3200> 52
Samsung
Жесткий диск HDD 40GB Samsung SpinPoint PL40 SP0411N, 55
Ultra DMA 133, 60GB/platter, 2 Мбайт, 7200 rpm
CD-ROM CD-RW Drive 52x/32x/52x LITEON LTR-5238S 29
(int., IDE)
Дисковод 3,5" SONY 9
Корпус Case Midi-tower ATX 6058 CA Black 30
(4x5.25"+2x3.5"+5x3.5"(Hidden)) 300WT Pentium-4
475x182x425mm (LxWxH)
Монитор Монитор 17" LG ezT711B Flatron (16", 0.2mm, 130
max 1280x1024 66Hz) TCO99
Клавиатура Mitsumi Business KSX-4 (for Windows 98, 104 key) 7
рус/укр/лат PS/2
Мышь Мышь, Mitsumi Mouse Optical Scroll PS/2 (OEM) 9
black
ИБП APC Back-UPS CS 350VA (BK350EI) USB Control, 60
Soft, фильтр тел. линии
Итого 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 очень динамичен, новые версии программ появля-
ются почти ежедневно. С другой стороны, система считается чуть ли не
эталоном надежности и стабильности, и эту репутацию сборщик всеми си-
лами старается поддерживать.
Определение стратегии, выбор дистрибутива и аппаратного обеспечения 15_

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

функционирования системы. Тем не менее я не на столько кровожаден —


мы рассмотрим процесс конфигурирования некоторых аспектов через web-
интерфейс.
Задачи, стоящие перед нами, я взял из жизни. Это типичный цикл роста
небольшой фирмы, которая динамично развивается и обрастает компьюте-
рами и задачами, решаемыми на них. Сперва у фирмы появляется модемное
подключение к Интернету, которое необходимо "раздать" на все компьюте-
ры сети. Параллельно нужно организовать общее дисковое пространство,
доступное сотрудникам офиса, доступ к сетевому принтеру. В дальнейшем,
при развитии фирмы, у нас появляется выделенное постоянное подключе-
ние к Интернету и, как следствие, потребность в своем web-сайте, элек-
тронной почте, FTP-сервере (File Transfer Protocol, протокол передачи фай-
лов), удаленном администрировании. И при этом не следует забывать, что
основные потребители услуг, предоставляемых нашим сервером, — компью-
теры с операционной системой Windows.
Итак, наши задачи, которые стоят перед нами и которые мы методично и
последовательно будем решать.
1. Установка и первоначальная настройка сервера.
2. Настройка коммутируемого модемного соединения и организация шлю-
за для выхода в Интернет.
3. Установка web-сервера Apache и Webmin — программы для конфигури-
рования системы через web-интерфейс.
4. Настройка общего доступа к дисковому пространству сервера.
5. Настройка сетевого принтера.
6. Организация простейшего почтового сервера.
7. Установка и настройка DHCP-сервера (Dynamic Host Configuration Pro-
tocol, протокол динамической конфигурации хоста).
8. Переход на выделенную линию и перенастройка уже установленных
служб и добавление новых.
9. Настройка прокси-сервера.
10. Настройка NNTP-сервера (Network News Transfer Protocol, сетевой про-
токол передачи новостей) или сервер новостей.
11. Настройка NTP (Network Time Protocol, сетевой протокол времени) для
синхронизации времени через сеть и настройки временной зоны.
12. Настройка контроллера домена.
13. Контроль и аудит системы.
14. Настройка входящего модемного соединения.
15. Утилиты администрирования и обеспечения безопасности.
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 (/0 0 x 2 f 8 ( i r q а - 3 ) |<;
Is ,а •, ИШИП
Si;;»!iHfl
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 1-
P1IX4: 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.З. Тестирование носителя, с которого производится инсталляция


24 Глава 2

Рис. 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 — самостоятельно определяем устанавливаемые пакеты.
Что это нам дает? Создатели дистрибутива проанализировали, какие пакеты
чаще всего используются в представленных трех вариантах и сгруппировали
их таким образом, что, выбрав нужный тип системы, мы уже получаем
26 Глава 2

на 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. Предупреждение об удалении разделов диска


28 Глава 2

И что же мы видим? Внизу экрана присутствует список жестких дисков.


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

Fedora Core СО 2вИ4 Ked Hat, Inc.

Устройство Ha
•«MM UnlGrniiM
LU : swap
IV LogUolBB •MOM ext3 /
/dev/hda
Mat 1 • 13 1В1П ext3 /boot
hdaZ 65Z 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), в нашем случае я не рекомендую этого делать. Объясняю поче-
му — сервер обычно работает круглосуточно, в автоматическом режиме.
К примеру, пропал свет в выходные, источник бесперебойного питания
30 Глава 2

(ИБП) корректно выключил питание в тот момент, когда батареи разряди-


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

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

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


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

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


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

Мскеяхер здгрдоки Fedora l o r e noser загуухдть токхе другие


операционные систепы. Укажите загрузочные разделы и истки,
китиимс вы будите ИСПОЛЬЗОВАТЬ ним обраидоии к ним.

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

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


32 Глава 2

• ' 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
34 Глава 2

Следующий этап — определяем шлюз и 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. Назначение имени компьютеру


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

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

Ьрамдмяу'ф МОЖРТ помочь предотвратить


неавторизованньм доступ к MUTMIJ компьютеру
из анеимего мира. Вклипкть бпандмаузр?

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


36 Глава 2

Чтичнкнйе нлитриикм бранпплчпра I

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


некоторые сервисам влшсго кпмпомтпрл млпнк. К каким сервисам
• '•' ' ~:~. • .

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

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

На первый взгляд, изобилия не наблюдается. Мы из всего этого добра раз-


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

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


операционной системой (SELinux)

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


использоваться в этой системе;

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


38 Глава 2

Вы!с|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. Выбор устанавливаемых пакетов программ


40 Глава 2

Внимание
root — суперпользователь, аналогичный пользователю Администратор в Win-
dows. Он может ВСЕ! Поэтому очень рекомендую выбрать нормальный пароль,
длиной 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:23:51
8 .:..:.: •:•''•; m В:ВВ:83
18ШМ 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
•' I ' otoeo I •

jf: глнпг-кл £< A:tf'v. 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).
44 Глава 2

Fedora
Welcome to
Fedora Core
During this installation, you can f

Fedora
use your mouse or keyboard to n
navigate through the various I
screens.

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
Language Selection process?

Choose the language you would ! :•••• • •"•>-—••--


like to use during this installation. Bulgarian (Бъпгарски)
;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. Выбор языка, на котором будет происходить инсталляция


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

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

Настройка
: Italian (it2)
клавиатуры ;Japanese
Latin American

Выберите раскладку M Macedonian


Norwegian
клавиатуры (например,
: Polish
Russian), которая будет
Portuguese
использоваться в вашей
Ц • PunjatN flnscript)
системе. Romaraan

f.-.:"! Russian (cpl251)


: Russian (Microsoft}
: Russian (ml)
; : Russian (w2)
Russian (win)
: i Siavakian
:
I Slovenian
Spanish
: Swedish

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

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

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


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

потребностям. О Этот тмп установки включает графическое окружюн«, средства


разработкиГЮ исйстемнагоадмии^стрироватля.

Установка уничтожит всю


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

Для получения более Выборочная


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

установки обратитесь к
документации.

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

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


46 Глава 2

Fedora

Разбиение диска
Одним из самых больших •;
препятствий для новичков в В
Автоматическое разбитие будет выполнено иа основе
установке Linux является ;|
аыбранмого вами типа установки. Вы также можете
разметка диска. Процесс Е изменить "разбиение в соответствии с вашими нуждами.
пройдет более гладко при 1
проведении автоматического I Утилита ручного разбиения диска, Disk Druid, позволяет
настроить разделы s интерактианом окружении, Вы
разбиения диска.
монета установить типы файловых систем, точки
монтирования и многое другое.
Если вы выберите
% Автоыатическав разбиение
автоматическую разметку,
О Ручное разбиение программой Qjt$k Dfuitf
вам не нужно будет
использовать программы
разметки для назначения
точек монтирования,
создания разделов и
распределения места для

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

Fedora

Разбиение диска
Одним из самых бол
препятствий для нов!
Таблица разделов на устройстве sda нечитаема. Для • :о на основа
установке Linux явля *>
; создания новы* разделов устройство должно быть : % можете
разметка диска. Про; • • инициализирована. ВСЕ ДАННЫЕ на этом устройстве • "•;•• ш и нуждами.
пройдет более гладк| "• ''"':. б у д у т у т е р я н ы , ' •• : •• • :" •••••.••• • .• .. •••.•

проведении автомат! Щ, позволяет


Эта операция отмени г сдэпиниый ранее аыйор ;ении. Вы
разбиения диска.
и г н о р и р у е м ы х д и с к о в . •;""•.
:
" ; .:"•••• •[;•:'''• • :, точки

Если вы выберите Г Вы дейстаителвно хотите инициализировать этот, диск с


удалением ВСЕХ ДАННЫХ? ; 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 — суперпользователь, аналогичный пользователю Администратор в Win-


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

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


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

Fedora

Настройка
95 MBMMoctefc VMwarg,VMwar« Virtual Si
разметки диска
Выберите, куда вы хотите
установить Fedora Core.

Создать j: Изменить j! Удалить j; вменить | RAID • • LYM-.


Если вы не знаете, как
провести разметку диска или Тип
вам нужна помощь по
использованию
инструментария для
проведения разметки
вручную, обратитесь к
документации.

Если вы выбрали
автоматическое разбиение
диска яы.млжятв..шдАя. . j Скрыть устройства RAID/участников группы LVM т
ЩСкрыть справку • . • • :
.":'•• \Щ Назад jg& Далее |

Рис. 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. Создание дискового раздела


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

Fedora

Настройка
Drive ,*i*Wsda (4095 М 8) {Mtxwr VMwar», VM*«№ VITHMI S >
разметки диска • sda5 sda6
И 99Б MB №9 MB 400 MB 2036 MB

Выберите, куда вы хотите


установить Fedora Core.

Если вы не знаете, как


провести разметку диска или Размер
Формат
(Мвайт)
вам нужна помощь по
• /dev/sda
использованию
/dev/sdal /boot
инструментария для
/dev/sda2 /home
проведения разметки
,'dev/sda3 swap V 510
вручную, обратитесь к
"* /dev/sda4 Расширенный 2467
документации.
/dev/sda5 /tmp V 400
/dev/sda6 V 2057
Если вы выбрали
автоматическое разбиение :
рыть устройства RAID<V4flCTHHKoe группы LVM

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

Fedora
Загрузчик GRUB будет установлен на s вменить загрузчик
Настройка
Вы можете настроить загрузчик для загрузки других
начального отэрациоимсчх систем. Это пэтамит выбран?
операционную систему из списка при загрузке. Чтобы
загрузчика добавить другу о операционную с ис тему, которая на
быт г&кфулемд аетомии-ихаи нажмете кнопку
По умолчанию "Добавить". Чтобы выбрать ОС, загружаемую по
умолчанию, установите параметр 'По умолчанию" для
устанавливается загрузчик
' ЗТоЙОС... • • • •••:•:• •• :
операционной системы
GRUB. Если вы не хотите По умолчанию Ярлык . {Устройство
устанавливать GRUB, Fedora Core /ttev/sda6
Изменить
нажмите кнопку Сменить
загрузчик.

Пароле начального загрузчика защищает от передачи


Вы можете также выбрать,
пользователями опций ядру. Для усиления безопасности
какая ОС (если у вас их системы рекомендуется установить пароль.
несколько) должна
загружаться по умолчанию. . Q Остановите паропв загрузчика ИЗМ'ЗМШЙ ПЯВЬЙЬ
Поставьте отметку По
Q Настроить дополнительные параметры 'загрузчика

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


50 Глава 2

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

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

Все сетевые устройство,


имеющиеся в системе,
автоматически определены
Имя компьютера
программой установки и
показаны в списке Сетевые 7 : Установить имя компьютера;
устройства). ' О автоматически no DHCP

Ф вручную LinSetvet) ; (напр, "h


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

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

Fedora

Настройка сети
A4«.««poiai»
Устройство
при загрузке
Все сетевые устройства, :|
имеющиеся в системе,
автоматически определеГ
! программой установки и
показаны в списке Сетев! П Иопольэовать DHCP
устройства). g j Д К Т И В И З ИрОВВТЬ При ЗйГруЭКв

Чтобы настроить сетево^Ц


устройство, сначала Маска псквети: [255 ;.|255 1|255
отметьте его, затем н а ж р
Изменить. На экране
Правка интерфейса вы
j сможете выбрать ' щ
использовать IP адрес и
сетевую маску, полученные :
! по DHCP, или ввести их Щ

•,' нового:

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


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

Fedora
Брандмауэр может помочь предотвратить иеа&ториэованкый доступ к
вашему компьютеру из внешнего мира. Включить брандмауэр? .
Настройка
. •': О Ё в э брандмауэра
брандмауэра #; Цключить враидмауэр

Вы можете использовать брандмаувр для разрешения доступа


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

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

! Выберите подходящий для включить Включено

@[С1;рыть£прав)су| о]

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

Fedora
Выдерите основной яаыс для этой системы: English (USA) :. v

Поддержка
Выберите дополнительные языки, которые йудут
дополнительных использоваться е»тои системе:
LJ bngtish (Botswana)
языков I О English (Canada)
I 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. Выбор дополнительных языков


52 Глава 2

Fedora
Вы можете прокрутить
список географических Укажите, пожалуйста, ближайший к вам город
названий и выбрать нужную Щ
временную зону.

Вы можете также выбрать


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

•ыть справку

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

Fedora
Учетная запись root используется для

Пароль § администрирования системы. Введите пароль


пользователя пэд.
пользователя root I Парсшь пользователи root: ; •""*•

Подтвердите:
Используйте учетную запись Е
суперпользователя только
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 Выберите необязательные компоненты для установки:

[/] cadaver - Консольный клиент WebDAV:


хотите y O f H « |
ЕЙ dinks - Текстовый браузер интернет.
:
отметить rpynii О ере - Клиент irclt chat.
щелкните по ке ft) fetchmai) - Утилита приема и отправки почты.
рядом саеназ : G 1у"Х - Программа просмотра страниц WWW в текстовом режиме.

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


Если группа o | j Q ^ _ У о о в е р и ю н с т в о в а н н ы й ртр-кпиент.
можно нажать gg slm - A threaded Internet news reader.
Дополнитель!
Полный размер: 934-М
просмотра.как
пакеты устано; ' | Ш Оич-енить

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

ь ^правку

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


54 Глава 2

Fedora

Все готово к
установке

Предупреждение: После Нз*ми1е "Далее" дп» начала


установки Fedora Core.
нажатия кнопки Далее
Полный журнал установки
программа установки начнет |;
может быть найден в файле '/
записывать операционную roa.1nMall.log' после
систему на жесткий диск(и) и \\ !Твмы.
произвести отмену будет |:
!, содержащий
невозможно. Если вы решили Ы
выбранные вами параметры
не производить установку, установки, будет сохранен
то это последняя под именем "''root/anaconda-
возможность для
безопасного отказа от
установки.

Чтобы прервать установку,


нажмите КНОПКУ); '

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

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

Fedora

Все готово к
установке

Предупреждение: Пе f "Далее" для начала


Для установки выбранных ваий пакетов необходимы и ftitnii Co»e
нажатия кнопки Дал
следуюсциедиаси:
журнал установки
программа установки
fib найден а файле'/
записывать операци» Fedora Core'} CD #1
Fedora Core 5 CD « '|||
систему на жесткий i iyjKK систекы.
произвести отмену б; Перед продолжением уствиовки убедитесь, чтаимйются
kslarl, ссдержошии
невозможно. Если вь: в наличии все пеоечис ленные диски Если необходим
ле |аии параметры
не производить уста! перваагруакасистеяы, нажкитв кнопку -Перезагрузка",
|«, будет сохранен
то это последняя I
Перегрузите | | Пдадоядит»
возможность для i
безопасного отказа от'
установки.

Чтобы прервать установку,


МЯЖЫЧЛТР. кнопку Rp-spf ня :[£!

"Нового!

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


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

Fedora
г
Установка пакетов
Мы содрали всю информацию,
необходимую для установки

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

Уотанома 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 нового |V £- [
Рис. 2.57. Смена инсталляционных компакт-дисков
56 Глава 2

Fedora

Поздравляем, установка завершена

Уделите все носители {дискеты или CD-ROM), которые


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

::[«;: Назад , " ] ;

Рис. 2.58. Инсталляция в графическом режиме закончена

Получили окошко с сообщением, что полный протокол инсталляции опера-


ционной системы будет находиться в /root/Install.log (рис. 2.54). Нужная
вещь для "разбора полетов". Также создается специальный файл для утилиты
kickstart. Эта утилита предназначена для автоматической установки дистри-
бутива, что позволяет без ручного вмешательства, массово устанавливать
систему на однотипные рабочие места.
После этого нам сообщают, какие диски необходимы для инсталляции, и,
если вы вдруг испугались последствий, еще можно перегрузить компьютер,
отказавшись от установки (рис. 2.55).
Во время инсталляции на экран выводится информация о том, какой пакет
устанавливается в данный момент, его краткое описание и размер
(рис. 2.56). В случае необходимости самостоятельно выдвинется лоток CD-
ROM, и нам предложат вставить следующий диск и нажать ОК (рис. 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
П Приложения
• Редакторы
• Научные и инженерные
58 Глава 2

Fedora
Персональный компьютер
Тип установки Прекрасно подходки дни настольных йпорга.гианы*

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


окружения, ИДСЛЛЬИО псдаодвшгодпя д
Выберите тип установки,
| который наиболее полно
| соответствует вашим Цйбочвя станция
ЕЛ от тип установки вк i ючает графическое окружение, средства
| потребностям.
разработки ПО'и с кС1

Установка уничтожит всю


ранее сохраненную »i tifi ус1шм<и ««иве. tonne ус танок" *
информацию на выбранных I О файловый сервер, сервер пвчат и ил и веб -сервер. Tat же могут
: быть усталойтамЫ(СОЮлк«тв*квые сервисы. Вы мажете выбрать
разделах. самоегойтеиьно, устанавливат

Для получения более


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

установки обратитесь к
документации.

С* рыть inpae* у

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

Fedora
- Оконные менеджеры
Выбор групп О Системах Window (№41]
пакетов гШ\ Установите эту группу пакетов, чтобы получить
«*•* графический интерфейс пользователя (X)

Выбор группы пакетов D-Графически среда GNOME; [О/М]

(приложений), которые вы GNOME - это мощный графический интерфейс


хотите установить. Чтобы #g пользователя, который включает панель, рабочий
^ стол, системные пиктограммы и графический
отметить группу пакетов,
менеджер файлов.
щелкните по квадратику
G Графическая среда КОЕ [0/14]
рядом с ее названием.
KDE -это мощный графический интерфейс,
.у*;'»'? включающий в себя панель приложений, рабочий
Если группа отмечено, s f
*^ ' стол, системные значки и графический менеджер
можно нажать кнопку файлов.
Дополнительно для D XFCE [0/1S]
просмотра, какие именно ^10 A lightweight desktop environment tKat works well on low
пакеты установлены по ***** end machines.

умолчанию и добавить или


' " ' i
удалить дополнительные
Полный размер- 2,181M

|Скрыть

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


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

• Графические средства Интернета


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

Fedora
end machines.

Выбор
ПЗКбТОВ '• Группы пакетов йогу i эключать как: обязательные, так и необязательные
' компоненты. Обязательные компоненты всегда выбраны, если выбрана
1 группа пакетов. . • •".: ' ' • ".. :.' .•''•'•.'.' ••..•.:•.•
Выбор группы i Выберите необязательные компоненты для установки:
: ;
(приложений},! •! ' """ '" '"щ:
хотите у с т » Ц Обязательные пакеты

отметить груп( •; "', • ••••• • -• — • Ьщ


\ ~{Щое - Интерактивный текстовый редактор, достаточно простой в использован^
ШП\ nedit - Графический текстовый редактор с интерфейсом Motif !Ь;
рядомсевназ.^ ;i
| ;G vim-Xll - Версия редактора VIM для X Window System.
'] vim-enhanced - Дополненная версия редактора VIM.
Еспи группо oi
;.:.О XEmacs -Текстовый редактор XEmacs
можно нажать

Дополнителы
Полный размер;
просмотра, как
пакеты устано; \ Ш Отменить :

умолчанию и д| .;,. _.
удалить дополнительные
Полный размер: 2;260М
.ЛЯКЙТЫИ'Я -ЗТП.Й ГПУППЫ ,...:L*J

'^Чтонового

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

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

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

х о т и т е устаноЕ Н т с - Файловый менеджер и визуальная оболочка с дружественным интерфейс

о т м е т и т ь rpyni ' 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.
щелкните 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).
Единственный пакет, который я рекомендую установить, — это т с (от Mid-
night 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 ppp
rpm -qi 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.l-
2.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 (Inter-
значение net Protocol Control Protocol, протокол управления прото-
колом IP) configure-request
ipcp-max-terminate Устанавливает максимальное число передач IPCP
значение terminate-request
ipcp-max-failure Устанавливает максимальное число IPCP configure-NAK,
значение возвращенных перед началом отправки вместо
configure-Rejects
ipcp-restart Устанавливает интервал перезапуска IPCP в интервал
интервал секунд
Local Предписывает не использовать линии управления моде-
мом
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-адрес хоста mosh-
kin.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.
Настройка разделяемого коммутируемого модемного соединения... 81_

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. 5w6dl6h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6dl6h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6dl6h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6dl6h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6dl6h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6dl6h IN A 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. 5w6dl6h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6dl6h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6dl6h IN A 192.5.5.241
Этот файл описывает имена корневых серверов имен по всему миру. Их
список периодически изменяется. Поэтому данный файл необходимо время
от времени корректировать.
Для получения файла 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 Serial
8Н Refresh
2Н Retry
1W Expire
ID) Minimum TTL
IN NS ns.lazy.ru.
1 PTR 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: userl.ya.ru
Address: 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 auth__digest_module modules/mod_auth_digest.so


LoadModule ldap_module modules/mod_ldap.so
LoadModule auth_ldap_module modules/mod_auth_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule 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 чн тшр HLM 9t
• ' > ™ » . . • : ';;:.:,.:... ••

FJ. gdl $m •-, i-.i....... . . „ , и»» . . ..' .;;

Ч-- , -i LI *—

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


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 gookme«*. Tool* Lfeip

-..'ji - •:••,• " ^ :>.•:• ^J*r • V hitp lof aJhoar 1000ft

ОRwiHatNowofc : .^SuBpotl <VJStttp r^P'educfc;; (Training

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


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

WehraHiUI Uuif4«tt Г Global lanjuagelKntllih) ** РЬгким) 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/ |"l 1С»
t« . . Р м и л N « . o i k . .Svppon Б\л «

Рис. 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 *. «» v
;. ;•••;;'....'..'.. З В !.'
Mih is амия*. il UlM

© © G»О О О

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


96 Глава 4

. .... ,,. .
i

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

Pile bat Vi»*

Ш* Вср^нан чжти i<MV<}rt itaiHfiнстрчсииы» каюирнП. а

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


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

Пщ pv v'.m •,. £-..> ••,«** >(di 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послеипшнен шцрееннпнпиргашш
И IWpOHb Itfl» I MM.

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 99

fr* t- >•
-.».

Рис. 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. Страница Журнал


100 Глава 4

• й* V *hnp '«-*'

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

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


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

'.•• E* . - - •- H. •

• * •
- ,.^., - 0$ :;..;: ^. J« htip.'. a X» •«

шин
*>*.*. ItaMN

ш - * ^щщц

Рис. 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 •'1;:' л»
Г
а. л.
ш> "
л. Т
• •
aaj • fff я.
•ш
• • »>
« > •

••.

«м н.

йша

т, д.

д.

* ' - ' • • • • • • • • • • • • . . . . . - . • • • • • • • • • • • • • • - "

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

я
Б** 5

1• ••••••вмншяшм
1 гм •ввввв
....1« шд ко
I1I1P-1 ••

.'..........ВНИИ
• • • ;

ял : ммГ
к .*.,.„
:
ms -ч. I» •о.
I:'.' ^ . кмм <*.
и>
..: .:

ы'~ «.

ш ввязвя
я
IUS ; .
—. Й ^ О Т . '
: L
••\.: : Q- :.i:^i;
;:
SvoiSS'b'-Ssi
а1 «и «•р
19 ».-,••: ••••:•'• •;.

:
М51КГ. ' ^ If
• ~ ";.

»И» ' : 'IJ •МП

ЮЛ и С №

и
S '» t IPl^ti. 1 ' :'• ••^•^'••^••'•V^'Y::::

с »•*«)'
4* /

5:лш
•1 Itau ..> .Л. I ,.«
И

ta. а МИ fO: : : " /Г . ;

да » ttuuin
;
:
л-'.»»»--;» т«";;у:.:.; ;; •

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

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

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


106
Глава 4

S i ••

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

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


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

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

к - Suwui **ч* 9rau<» >Ii

•Ч».»*.-

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

Г Hi мгп,ж«.но«.иМ
Г СЛрш.«Ы!рЧШ.|[
•BJH^wiwit^/j

Определить прина дленюсп. файла


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

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


108 Глава 4

••••
ИР *^№ у 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
Ш тиО.4ЫМ miiHw МШ priiSriuii< l i g i n M renxiM up* ilcvueo.
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 * ( ^ ^ " :
..,- :: : ': ' .••''•'; :"V: :; ."i: : : : ..•'
8 - •. • v,i.*.'i •
' "';..'.7 ''Х'-З^ШШ'''"^:"'":'
«1 ь ••-'• l'k-t . . . ••'

«г В
ч l;i'..U.J '"..'.:'' n я я- , . ^ .

•И
; . - • - • - • ; . ; ; • ; . ;

ш;-
; . ^ % . - * • . . ' ' • " ' '

t ! л ч ; Т "•:~'"-11- ta<»«..'i>iv
it гкн,л.«„.»''"'У:":. ? : ;
".' •::••••:••:••;•;/'.:•••:••

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

|Ш*«тае1.п»т>К1Н^у1фИрв:1ет1.»Л1ПШИ11И»,в™аИлм!:«1.»г.11; ч . п с к к wro с ж ш ш т « « I K M H I ветушт > лскпно. Помште о

1
i юл^апзн, счииОки ь иастрсжкс нл J T »крсвя;»>» систем) я HC|KI&UII}CIKKOBJWC t i

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

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


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. С помощью этого модуля можно получить доступ ко всем
почтовым ящикам пользователей компьютера, на котором установлен Web-
min (рис. 4.35).
Веб-сервер Apache. Модуль для управления web-сервером Apache. Здесь при-
сутствуют настройки на все случаи жизни — какие адреса слушать, по ка-
ким портам работать, создание виртуальных серверов, установка корневых
каталогов, ограничений и т. п.
Настройки QMail. Модуль для настройки почтовой системы QMail.
Сервер CVS. Модуль для настройки системы контроля версий (CVS, Concur-
rent 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 113

gift $н# go - goakmnk) Tuib •


•llllillll ^
4s*
:
• " ; ШН*{« „H«dH»lN*wo* ..:Support

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

"I
"MM""'' ... Ш 1
i

1
4- lid П 1 'JJI | 1» клал и фойэи* *>рявля! и»трой«1 WdMllur.

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

t* E« »«, о»

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


114 Глава 4

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

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


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

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

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


116 Глава 4

Рис. 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. Страница Сеть


118 Глава 4

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

L,°"
Ы (OUTPUT1
ж *ирсдклте* ни вднв пршшш.

Цс1ИЧК« М - Г 1HM11~1-!N?UT
Stip;i вУ invert is Haitian

„... J

Сеч* Ф I* IT
I.-M,- . . ,« • • - : . ; . : . .:-..-•• •: ' ! * « • • ; • iT
;
' "
i.T
г . .«л»» u i u i -».- -.„-.». (a : XT
it XT
ь ww«««ii new ,>-™.>4,BI HJMIUIU, i f If
Ш ж ; : :••••: . • •

S«i&.-l all Invert » 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ч;Г.р<к>- рышсирнкжкпий синфигурицнп к вхщмий вданный«смет.

;
- j » J "*• Да <~ Н и OiipijKJiMT Оуает лн нсяскпжД -жран шлжшл njin ajupj-jju-ctrrtUM turn ист.

R»W Fit»»* j Cllt k Ihio bunim bi с)ыг *U uitlinc fitewxU rule. «Ы .el up new (i>lc. Г<к a h o t inir*I Иц

Рис. 4.42. Страница настройки брандмауэра (нижняя часть)


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

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. Страница настройки модемного соединения


120 Глава 4

|.....
;1 : : 1
•<.>:« >v .•:.•••;::'гГ :. . ' :':.;

а вы
fftf'iVfrfl ICC n«i
;•.••

• •

НИ'!*.)

;t:r :•.: гл-я : : , . ••• • • . . . • ; : • •

1
!• ' I * * '

pgjWj* • Н.кингог]' wmniv, чтчбн HwrHKiM>i4r!HOM»B'ev<:.i>it6HPCMHHTi.-p«i»UK-tpofl(


,ЙЙ*И?!*..'*!****Й:;] Нижотж ил гг; кнопку Ирмшдет к t^KiJiKf twnnw SKIHLIP авнутиснноиу арчаску х

1 РИС. 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 123

Рис. 4.49. Страница Оборудование

Рис. 4.50. Страница Системное время


124 Глава 4

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 127

• (•!-» «•»••»• !-• а*

Dm ^

Рис. 4.55. Страница Кластер

•••••• - • -

-•< • ^

-
Й two*. ,-*«.

Ъ €> О о о
1 Ш<ъйяш к.

Рис. 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 samba-3.0.10-l.fc3.i386.rpm

5 3ак. 1500
130 Глава 5

Файл Правка Цид Терминал Вкладки Справка

Рис. 5 . 1 . Настройка запуска сервера Samba при старте операционной системы

Все элементарно. Далее мы должны каким-то образом указать системе, что


сервер должен запускаться при старте системы. Проще всего это сделать
с помощью программы ntsysv, внешний вид которой изображен на рис. 5.1.
Демон Samba называется smb, нам достаточно установить галочку и нажать
на ОК. Запуск службы осуществляется командой:
service smb start
Запускаются сервисы SMB: [ OK ]
Запускаются сервисы NMB: [ 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 "test-
parm"
# 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 133

# 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


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 135
# at least one 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 = do-
main; задает имя сервера паролей.
П password level И username level. Переменные password level И user-
name 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 case определяет регистр
имен файлов, создаваемых на ресурсах Samba.
• 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 • 141

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


отдельную базу паролей пользователей 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
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 Samba 3.0.Ip8


ZIGA
Настройка общего доступа к дисковому пространству сервера - 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 dir led cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd prompt recurse
translate lowercase print printmode queue
cancel stat quit q exit
newer archive tar blocksize tarmode
setmode help !
smb: \>
Как видите, практически все команды дублируют команды FTP-клиента.
Утилита smbclient многое позволяет, однако она тяжела в использовании.
Если от Windows-сети нужен только доступ к дисковым ресурсам, рекомен-
дуется воспользоваться пакетом Smbfs.
В пакет samba-client входят утилиты smbmount и smbumount, которые рабо-
тают подобно mount и umount. Также есть графическая утилита gnomba —
подобная утилите Сеть в Windows.

Утилиты
Как и у других подобных проектов, для пакета Samba существует достаточно
много сторонних утилит, позволяющих упростить конфигурирование и дос-
туп к ресурсам. Вот список утилит и программ, в той или иной мере отно-
сящихся к пакету Samba:
П smbstatus — утилита для мониторинга Samba;
• SWAT — инструмент для конфигурирования Samba через web-интерфейс;
• smbpasswd — управление паролями Samba;
144 Глава 5

П 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 на Win-
dows-имена (рис. 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 Глава 5

и. i ..i v,.., t,,, | к


ш , IM, н«„ ' ••• •..',

(S 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 op-
tions .
# 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-сервер 153

# 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
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 <имя_группы> ... — инвертирует действие guestgroup И
guestuser;
• 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-сервер 159

П passwd-check { none | t r i v i a l | 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 фирмы Hewlett-
Packard. Будем считать, что пакет 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
в конце текстовой строки достаточно символа перевода строки, для Win-
dows — необходимо наличие символов возврата каретки и перевода строки.
Большинство современных принтеров рассчитаны для использования со-
вместно с 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 Inter-
change, американский стандартный код обмена информации) и представля-
ют собой небольшой набор английских слов. Протокол, помимо отправки
почты, поддерживает переадресацию, прямую посылку сообщения на тер-
минал, обработку ошибок и некоторые другие возможности.

РОРЗ
Протокол обмена почтовой информацией, РОРЗ, предназначен для получе-
ния почты из почтовых ящиков пользователей на их рабочие места при по-
мощи программ-клиентов. Таким образом, по 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 или править небольшой файл send-
mail.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 183_

D hardware 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 NS ns. tirma.ua.
IN NS 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 A 127. 0.0, 1
ns A 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 NS ns.firma.
IN TXT "firma local domain"
IN A 192.168.0.1
ns IN A 192.168.0.1
server IN CNAME ns

Файл /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)
192 Глава 10

14400 ; r e t r y (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ,- minimum (1 day)
)
NS cgo.te.ru.
A 195.108.80 .22
MX 10 cgo.te. r u .
$ORIGIN cdfree.ru.
ns A 195.108.80 . 2 2
www A 195.108.80 . 2 2
Этот файл синхронизируется с содержимым соответствующего файла пер-
вичного DNS-сервера.

Некоторые тонкости
Того, что мы рассмотрели, вполне достаточно для настройки небольшого
DNS-сервера, тем не менее разберем еще несколько полезных вещей, кото-
рые необходимо знать.

Записи ресурсов службы DNS


Давайте рассмотрим несколько расширенный файл описания зоны:
gw , A 192.168.0.2
HINFO "i486" "RH 6.2"
TXT "The router"

ns A 192.168.0.1
MX 10 mail
HINFO "Pentium3" "RH 9"
www CNAME ns
User A 192.168.0.3
MX 10 mail
HINFO "p3" "Windows2000"
TXT "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-адрес (адрес А в формате RFC 1706
NSAP)
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', 'S=local:/var/clamav/clmilter.socket,
F=,T=S:4m;R:4m;E:10m')
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, which responds to requests that aren't handled by a virtual
# host.
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, Server-
Alias, 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 !banners_exclusion
http_access deny banners_regex !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 [key <key>] [version <version>] [prefer] [mode
<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. Синхронизация времени через сеть, настройка временной зоны 247

Свойства: Дата и время

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


Глава 17

Сервер Samba —
контроллер домена
Несколько ранее мы уже производили настройку Samba для работы в одно-
ранговой (равноправной) сети. Наряду с положительными моментами (лег-
кость настройки, независимость от сервера) тут есть и отрицательные — для
нормальной работы необходимо на каждом компьютере прописывать поль-
зователей и производить администрирование — права доступа, пароли, ог-
раничения. В общем, для трех компьютеров это терпимо, для двадцати уже
нет. Захотелось шефу для любимой бухгалтерши открыть доступ к докумен-
там всех сотрудников — бегай по всем компьютерам, назначай права. А если
после отпуска шеф забыл пароль, попробуй, уговори его пройтись по всем
компьютерам и ввести 40 раз пароль — узнаешь, где премия зимует.
Для данной проблемы придумали множество решений. Одно из них от Mi-
crosoft —Active Directory1 — достаточно обширное и гибкое. К сожалению,
сервер Samba пока не поддерживает данную технологию. Частично это мож-
но поправить, используя LDAP, но все равно полной совместимости с Win-
dows 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 RRDs.pm — адрес библиотеки
RRDtool;
• PathAdd: адрес-rrdtool — адрес RRDtool.
Для каждого контролируемого устройства, которое обозначается как target
(цель), буквы преобразуются в строчные и создается отдельная секция. При
работе MRTG каждая цель порождает файлы журнала (target.log и target.old),
картинки с графиками (target-day.gif, target-week.gif, target-month.gif, target-
year.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 BUSY
ABORT VOICE
ABORT "NO DIALTONE"
ABORT "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> Начать Telnet-сессию с машиной <host> по порту <port>.
[ <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;
Доступ к удаленным компьютерам 275

• MACs <алгоритмы-проверки-целостности-данных> — ЭТОТ параметр опре-


деляет, какой алгоритм будет использоваться для проверки целостности
данных: 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 publickey, password, keyboard-
interactive — параметр определяет приоритеты аутентификации
(SSH2);
О 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 Basic options for your PuTTY session
; Logging
• Specify your connection by host name or IP address
E r Terminal
:
i i Keyboard ! 1 0 S t й а ™ е .(°' I P a d * e s s ) _ £° rt
| \ Bell
; Features Protocol:
3 Window Oflaw Olelnet ® SSH
Appearance
• Load, save or delete a stored session
; Behaviour
Translation Savgd Sessions .

Selection
;
j Colours Default Settings
Й Connection Lesozavodsk
Proxy
Telnet
Rlogin
8 SSH
j Auth
i™ Tunnels
Close window on exit:
U Bugs О Always О Never © Only on clean exit

About flpen Л Cancel

Рис. 2 0 . 1 . Программа PuTTY

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

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


которого будет происходить общение. Это может быть просто поток симво-
лов, 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

Утилиты администрирования сети


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

Расширенное управление
доступом к файлам
Стандартные средства организации прав доступа к файлам в UNIX-
подобных операционных системах зачастую не удовлетворяют требованиям
некоторых системных администраторов. Проблема заключается в том, что
определение прав доступа к файлам сводится к установке девяти битов,
с помощью которых можно задать права доступа для владельца файла, груп-
пы, к которой принадлежит владелец файла, а также для всех остальных.
Часто необходимо настроить доступ к файлу достаточно сложным обра-
зом — допустим, три человека из трех разных групп имеют право делать
с файлом все что угодно, десять человек из других групп могут открывать файл
на чтение, а еще десять — только выполнять. Для всех других пользователей

ЮЗак. 1500
290 Глава 21

доступ к этому файлу необходимо запретить. Устроить нечто подобное стан-


дартными средствами Linux весьма нетривиальная задача. В такой ситуации
для решения данной проблемы можно воспользоваться Linux ACLs — вер-
сией POSIX ACLs для Linux. Linux ACLs — это набор обновлений для ядра
операционной системы и программ для работы с файловой системой и
несколько утилит, дающих возможность устанавливать права доступа к фай-
лам не только для пользователя-владельца и группы-владельца файла, но
и для любого пользователя или группы.
Linux ACLs использует расширенные атрибуты (Extended Attributes) для хра-
нения данных о правах доступа к файлам пользователей и групп. Расширен-
ные атрибуты — это пара имя/значение, привязанная к определенному файлу.
Список расширенного контроля доступа существует для каждого узла
(inode) и состоит из шести компонентов. Первые три являются копией
стандартных прав доступа к файлу. Они содержатся в единственном экземп-
ляре в ACL, и есть у каждого файла в системе:
• ACL_USER_OBJ — режим доступа к файлу пользователя-владельца;
• ACL_GROUP_OBJ — режим доступа к файлу группы-владельца;
• ACL_OTHER — режим доступа к файлу остальных пользователей.
Следующие два компонента устанавливаются для каждого файла в отдельно-
сти и могут присутствовать в ACL в нескольких экземплярах:
• ACL_USER — содержит UID и режим доступа к файлу пользователя, ко-
торому установлены права, отличные от основных. На каждого пользовате-
ля со своими правами на данный файл хранится отдельная запись. Не мо-
жет существовать более одной записи на одного и того же пользователя;
• ACL_GROUP — то же самое, что и ACL_USER, но для группы пользова-
телей;
• ACL_MASK — маска действующих прав доступа для расширенного ре-
жима.
При установке дополнительных прав доступа присваивается значение и
элементу ACL_MASK.
Каталоги также могут иметь список контроля доступа по умолчанию. В от-
личие от основного ACL, он действует на создаваемые внутри данного ката-
лога файлы и каталоги. При создании файла внутри такого каталога файл
получает ACL, равный ACL по умолчанию этого каталога.

Установка Linux ACLs


Для использования Linux ACLs необходимо получить на сайте разработчи-
ков собственно пакет Linux ACLs и обновления для ядра операционной сис-
темы Linux и некоторых утилит. Само собой, после наложения обновлений
придется перекомпилировать ядро операционной системы и утилиты.
Утилиты администрирования сети и обеспечения безопасности 291

При подготовке к компиляции ядра операционной системы Linux необхо-


димо выполнить следующие действия:
1. В меню Code Maturity Level Options отметить пункт Prompt for develop-
ment and/or incomplete code/drivers.
2. В меню Filesystems отметить пункт Extended filesystem attributes
(EXPRIMENTAL).
3. Затем отметить два подпункта: Extended user attributes и Access Control lists.
4. В пункте Second extended fs support отметить подпункт Extended attributes
for ext2 (DANGEROUS).
После этого можно откомпилировать и установить ядро операционной сис-
темы, после следует переходить к обновлению стандартных и установке до-
полнительных утилит управления расширенным доступом к файлам. Для
установки необходимо скомпилировать пакет ACL, который также берется
на web-сайте разработчиков. Процесс компиляции и установки подробно
описан в документации, входящей в комплект пакета. Там же берем обнов-
ления к стандартным утилитам операционной системы и применяем их, как
написано в документации. После этого можно произвести перезагрузку опе-
рационной системы.

Установка и изменение прав доступа


Управление списками контроля доступа производится при помощи двух
утилит — getfacl и setfacl. С помощью getfacl можно просмотреть текущие
параметры доступа любого файла. Например, при вызове getfacl для домаш-
него каталога пользователя vasya мы получим следующее:
getfacl /home/vasya
file: home/vasya
owner: vasya
group: users
user::rwx
group::
other:
Как можно видеть, каталог /home/vasya принадлежит пользователю vasya,
группе users и значение прав доступа к каталогу — 0700. Каталог имеет
только основные параметры доступа, поскольку изначально дополнительные
права не устанавливаются.
Дополнительные права доступа к файлу устанавливаются и изменяются при
помощи утилиты setfacl. Для этого используется следующий формат вызова:
setfacl -опции АСЬ_структура, АСЬ_структура,...,АСЬ_структура имя_файла
имя файла ...
292 Глава 21

ACL-структура представляет собой одну из следующих конструкций:


О [d:] [и:] [пользователь] [: [ + | Л ] режимы_доступа] — определяет режим
доступа к файлу или каталогу пользователя. Если пользователь не указан,
определяет режим доступа пользователя-владельца;
• [d:] g: [группа] [: [+1 Л ]режимы_доступа] — ТО же, ЧТО И предыдущая
конструкция, но для группы;
О [ d : ] m [ : [ + | Л ] режимы_доступа] — определяет действующие права д о с -
тупа;
D [d:] о [:[+|Л] режимы_доступа] — определяет режим доступа для
остальных пользователей.
Для установки и изменения ACL используются следующие опции:
• -s — заменяет полностью ACL-файл на указанный в командной строке;
О -т — изменяет режимы доступа к файлу (каталогу);
• -х — убирает правила доступа из ACL.
К примеру, вот что мы получим, применив setfacl к каталогу vasya:
setfacl -s u::rwx,g:: ,o: ,u:usl:rwx,g:usrs2:rx,u:us2: /home/vasya
getfacl /home/dh

file: home/vasya
owner: vasya
group: users
user::rwx
user:usl:rwx
user:us2:
group::
group: usrs2 : r-x
mask:rwx
other:

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

Шифрование
Традиции — вещь очень неоднозначная. Иногда они помогают жить и ус-
пешно развиваться, иногда они просто странные или бесполезные, а ино-
гда — весьма вредны. То же самое можно сказать и о сетевых протоколах —
традициях компьютерного мира.
Большая часть существующих сетевых протоколов разрабатывалась по
компьютерным меркам в чуть ли не доисторическую эпоху, когда о сете-
вых взломах и сетевом шпионаже можно было прочитать только в научной
фантастике. Как результат — подавляющая часть данных в Интернет пере-
дается в открытом виде. И как обратная сторона медали — существует
множество утилит для прослушивания сетевого трафика. Многие из них
умеют сами анализировать перехватываемые данные. С помощью таких
утилит можно получить пароли пользователей для различных сетевых
служб, тексты электронных писем, файлы, сообщения, переданные по
ICQ, и т. д. и т. п. Защитить себя от такого прослушивания можно с по-
мощью шифрования.
Наиболее распространенным протоколом шифрования является SSL, разра-
ботанный Netscape Communications. Чаше всего он используется для шиф-
ровки HTTP (HTTPS), но также может применяться для создания защи-
щенных соединений с SMTP, POP3, IMAP и другими высокоуровневыми
сетевыми протоколами. Программа, осуществляющая поддержку протокола
SSL почти для любых серверных и клиентских приложений под Linux и
Windows, называется Stunnel. Основное ее применение состоит в создании
надежного шифрованного канала между двумя и более хостами в сетях, где
существует угроза прослушивания трафика.
Еще один вариант, уже ранее описанный, — использование SSH для приема
и передачи файлов в защищенном режиме. Это, конечно, не полноценный
туннель, но как один из вариантов вполне применим.
Еще одна альтернатива — использование VPN. Виртуальная частная сеть
позволяет организовать виртуальную сеть со своей IP-адресацией и шифро-
ванием всего трафика. Существует, по крайней мере, две реализации этого
протокола — РРТР и IPSec.

Stunnel
Для работы Stunnel необходим OpenSSL, который устанавливается при ин-
сталляции операционной системы Linux (по крайней мере, в дистрибутиве
Red Hat Linux). Пакет Stunnel также, обычно, входит в состав дистрибутива
в виде RPM-пакета. Рекомендуется получить с сайта разработчика послед-
нюю версию программного пакета.
294 . Глава 21

Организация шифрованного туннеля


Stunnel может работать в двух режимах — сервера и клиента. В первом слу-
чае все поступившие данные дешифруются и передаются либо в указанную
в параметрах запуска программу, либо на указанный порт заданного хоста.
Во втором — все данные шифруются и передаются в определенную про-
грамму или на определенный порт заданного хоста.
Давайте организуем защищенное Telnet-соединение (хотя это и не имеет
практической пользы, поскольку есть SSH) между двумя компьютерами А
и Б. На компьютере Б запускаем Stunnel в режиме сервера:
stunnel -d 999 -г 23
Опция -d указывает Stunnel работать в режиме отдельного демона, ждущего
соединения по порту 999. Все данные, полученные в шифрованном виде на
порт 999, в открытом виде передаются на порт 23 на локальной машине.
Затем на компьютере А запускаем Stunnel в режиме клиента:
stunnel -с -d 1055 -г В:999
Опция -с указывает на работу в режиме клиента, все данные, полученные
в открытом виде на порт 1055, передаются в шифрованном виде на порт 999
на хосте Б. После проделанных манипуляций можно устанавливать Telnet-
соединение с компьютером Б. Команда запуска telnet на компьютере А бу-
дет выглядеть следующим образом:
telnet localhost 1055
Несколько непривычно, зато данные полностью шифруются. Точно по та-
кому же принципу организуется шифрованный туннель и для других сете-
вых протоколов.

Stunnel и приложения, поддерживающие SSL


Достаточно часто возникает ситуация, когда одно из приложений поддержи-
вает протокол SSL, а приложение с другой стороны его не поддерживает.
В этом случае Stunnel можно запускать только с одной стороны — там, где
приложение не способно поддерживать протокол SSL. Но в этом случае
возникает вопрос, какие порты используются приложением, поддерживаю-
щим данный протокол? Для ответа рассмотрим официальный список SSL-
портов, который приведен ниже:
https 443/tcp # http protocol over TLS/SSL
smtps 465/tcp # smtp protocol over TLS/SSL (was ssmtp)
nntps 563/tcp # nntp protocol over TLS/SSL (was snntp)
imap4-ssl 585/tcp # IMAP4+SSL (use 993 instead)
sshell 614/tcp # SSLshell
ldaps 636/tcp # ldap protocol over TLS/SSL (was sldap)
ftps-data 989/tcp # ftp protocol, data, over TLS/SSL
Утилиты администрирования сети и обеспечения безопасности 295

ftps 990/tcp # ftp protocol, control, over TLS/SSL


telnets 992/tcp # telnet protocol over TLS/SSL
imaps 993/tcp # imap4 protocol over TLS/SSL
ires 994/tcp # ire protocol over TLS/SSL
pop3s 995/tcp # рорЗ protocol over TLS/SSL (was spop3)

Сертификаты
Программа Stunnel имеет возможность проверки подлинности сертификатов
тех хостов, к которым или с которых идет подключение. Для этого предна-
значена опция командной строки -v. После -v необходимо указать уровень
проверки сертификата. Он может иметь следующие значения:
• о — никакой проверки наличия и подлинности сертификата не произво-
дится;
• 1 — сертификат проверяется на подлинность, если присутствует. Если
сертификат не является подлинным — соединение не устанавливается;
П 2 - проверяется присутствие сертификата и его подлинность. Если сер-
тификат отсутствует или не является подлинным — соединение не уста-
навливается;
• з — проверяется присутствие сертификата и его наличие в списке прове-
ренных сертификатов. Если сертификат отсутствует или его нет в списке
проверенных сертификатов — соединение не устанавливается.
Сертификат создается при сборке пакета и помещается вместе с секретным
ключом, используемым при расшифровке входящего трафика, в файл
stunnel.pem.
Более полную информацию по этому программному обеспечению смотрите
в документации, идущей в комплекте с Stunnel.

Утилиты сканирования и защиты сети


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

SATAN
Одна из старейших утилит сканирования. Говорят, что автора этого пакета
уволили из фирмы, где он работал, из-за того, что он выложил SATAN на
свой web-сайт.
SATAN может работать на нескольких операционных системах. Считается ус-
таревшим, но тем не менее для проверки правильности основных сетевых на-
296 Глава 21

строек вполне пригоден. Работает от имени пользователя root, требует нали-


чия Perl.
После запуска SATAN становится web-сервером и запускает браузер Net-
scape, поскольку у него web-ориентированный интерфейс. Для начала ска-
нирования необходимо указать сканируемый хост или диапазон адресов и
"уровень нападения", который может быть слабым, нормальным и тяжелым.
После этого кнопкой Start the scan запускается сканирование. По оконча-
нии сканирования необходимо перейти в раздел Reporting & Data Analysis.
В этом разделе можно ознакомиться с найденными проблемами, которые
необходимо устранить.

Portsentry
Еще один программный продукт, предназначенный для обнаружения ска-
нирования сетевых портов. Основные возможности программы Portsentry:
• обнаруживает практически все известные виды сканирования компьютеров;
• в реальном времени блокирует компьютер, производящий сканирование,
посредством установленного на атакуемом компьютере брандмауэра,
команду запуска которого можно задать в файле конфигурации;
П записывает в журнал операционной системы посредством syslogd инфор-
мацию об атаке;
П может вызывать любую указанную в файле конфигурации программу,
в ответ на сканирование или подключение к защищенному сетевому порту.

Установка и настройка
Процесс установки подробно описан в документации на программу и не
вызывает трудностей, поэтому сразу перейдем к настройке программы.
Основной конфигурационный файл программы Portsentry называется
portsentry.conf. Содержимое файла portsentry.conf представляет собой не-
сколько строк, каждая из которых имеет вид:
ОПЦИЯ = "значение"

Ниже приведен список основных поддерживаемых опций:


• TCP_PORTS — в этой опции через запятую перечисляются TCP-порты, ко-
торые проверяются программой Portsentry. При обнаружении подключе-
ния к перечисленным портам Portsentry записывает информацию об этом
в системный журнал и выполняет команду, заданную пользователем,
а после этого блокирует хост посредством брандмауэра. TCP-порты, от-
крытые на защищаемом компьютере другими программами, в этот спи-
сок включаться не должны;
• UDP_PORTS — то же, что и TCP_PORTS, но для UDP-портов;
Утилиты администрирования сети и обеспечения безопасности 297

• ADVANCED_PORTS_TCP — значение этой опции определяет верхнюю грани-


цу множества TCP-портов, которые проверяются Portsentry при работе
в режиме Advanced Stealth Scan Detection Mode. Нижней границей явля-
ется 1, т. е. при значении ADVANCED_PORTS_TCP, равном 2048, проверяется
подключение к любому порту в промежутке от 1 до 2048;
П ADVANCED_PORTS_UDP — ТО Же, ЧТО И ADVANCED_PORTS_TCP, НО ДЛЯ UDP-
портов;
• ADVANCED_EXCLUDE_TCP — TCP-порты, которые исключаются из проме-
жутка проверяемых портов, заданного параметром ADVANCED_PORTS_TCP.
Здесь обязательно нужно перечислить TCP-порты, открытые работаю-
щими на защищаемом компьютере программами;
• ADVANCED_EXCLUDE_UDP — ТО Же, ЧТО И ADVANCED_EXCLUDE_TCP, НО ДЛЯ
UDP-портов;
• IGNORE_FILE — имя и путь к файлу с IP-адресами хостов, которые не
блокируются при подключении к портам, проверяемым программой
Portsentry;
• HISTORY_FILE — имя и путь к файлу с историей работы программы
Portsentry. В файл записывается время блокирования, имя и IP хоста,
атакованный порт, протокол;
• BLOCKED_FILE — строка, из которой формируется имя и путь к файлам,
куда записывается информация о блокированных хостах;
П BLOCKJTCP — эта опция в зависимости от значения задает ответную реак-
цию Portsentry на сканирование портов:
• о — не блокировать хост, не запускать заданную пользователем
команду;
• 1 — блокировать хост и запустить команду;
• 2 — только запустить заданную команду.
Команда задается при помощи опции KILL_RUN_CMD;
• BLOCK_UDP — то же, что и BLOCK_TCP, но для UDP;
• KILL_ROUTE — эта опция задает команду, которую надо выполнить для
блокирования атакующего хоста. Для указания IP-адреса используется
переменная $TARGET$. Переменная $PORT$ используется для указания
порта, к которому было подключение;
• KILL_HOSTS_DENY — эта опция задает строку, которая записывается
в /etc/hosts.deny для блокирования доступа к сервисам, запускаемым че-
рез inetd;
• KILL_RUN_CMD — с помощью этой опции можно задать команду, запус-
каемую до блокирования хоста;
298 Глава 21

П SCAN_TRIGGER — данная опция задает количество разрешенных подклю-


чений к проверяемым программой Portsentry портам одного и того же
хоста, прежде чем Portsentry начнет действовать. О определяет немедлен-
ную реакцию;
• PORT_BANNER — задает сообщение, которое будет выводиться при под-
ключении к проверяемому Portsentry порту.
В файле portsentry.ignore необходимо перечислить IP-адреса компьютеров,
которые не должны быть блокированы программой при подключении
к проверяемому порту.

Запуск
Portsentry можно запускать в трех различных режимах. Режимы задаются
в командной строке при вызове Portsentry. Одновременно можно задать
только один режим работы для одного протокола:
• Classic — при работе в этом режиме Portsentry открывает порты, указан-
ные в TCP_PORTS или UDP_PORTS, и ждет соединения. При попытке под-
ключиться к такому порту происходит блокировка удаленного хоста. Этот
режим работы задается опциями командной строки - t c p — для ТСР-
портов и -udp — для UDP-портов;
• Enhanced Stealth Scan Detection — этот режим используется для проверки
перечисленных в TCP_PORTS ИЛИ UDP_PORTS портов на предмет подключе-
ния или сканирования. Выявляет почти все виды Stealth-сканирования,
а не только сканирование подключением. В отличие от режима Classic,
не держит открытыми порты, поэтому получает достоверную информа-
цию о них. Задается опциями командной строки - s t e p — для ТСР-
портов и -sudp — для UDP-портов;
• Advanced Stealth Scan Detection — этот режим используется для проверки
всех портов в промежутке от 1 до ADVANCED_PORT_TCP ИЛИ
ADVANCED_PORT_UDP. Порты, открытые другими программами и перечис-
ленные В ADVANCED_EXLUDE_TCP ИЛИ ADVANCED_EXCLUDE_UDP, ИСКЛЮЧЭЮТСЯ
из проверки. Любой компьютер, попытавшийся подключиться к порту
в этом промежутке, тут же блокируется. Задается опциями командной
строки - a t c p — для TCP-портов и -audp — для UDP-портов.

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

NeTraMet
Этот программный пакет позволяет подсчитывать трафик по IP-адресам в
локальной сети раздельно по типам трафика: SMTP, ICMP, HTTP, FTP,
UDP, TCP и т. п. Также существует возможность подробного регистрирова-
ния трафика.
Программный пакет состоит из нескольких частей:
• NeTraMet — программы-сборщика трафика. Собирает и хранит в опера-
тивной памяти статистику с сетевых интерфейсов сервера;
• NeMaC — программы-менеджера сборщика NeTraMet. NeMaC собирает
статистику и записывает ее в журнал;
• srl — компилятора правил для NeMaC;
• fd_filter — программы обработки журналов NeMaC;
О fd_extract — программы обработки результатов fd_filter.

Протоколирование
Нет смысла тратить много времени на защиту компьютера от взлома и не
обращать внимания на систему протоколирования событий. Каким образом
вы сможете узнать о попытке и способе взлома, не используя инструментов
для ведения журналов? В этом разделе мы познакомимся с одним из них —
демоном syslogd.
Демон syslogd является частью пакета sysklogd, в который входят две про-
граммы: syslogd и klogd. Syslogd отвечает за протоколирование сообщений
системы, a klogd — ядра.

Демон syslogd
Демон syslogd запускается автоматически при старте системы и обеспечивает
протоколирование событий, которое используется большинством программ.
Демон syslogd пишет сообщения в файлы /var/log/*, в зависимости от на-
строек. Обычно записи в журнале, создаваемом syslogd, содержат следующие
поля: дата и время, имя компьютера, программа, сообщение.

Файл конфигурации
По умолчанию используется файл конфигурации /etc/syslog.conf. Вы можете
указать другой файл конфигурации с помощью опции -£. Типичный файл
конфигурации приведен ниже.
# Все сообщения ядра операционной системы выводить на консоль
#kern.* /dev/console
300 Глава 21

# Все сообщения уровня info или выше протоколировать в файл


# /var/log/messages
# Кроме почтовых сообщений и сообщений аутентификации
*.info;mail.none;аиthpriv.none;cron.none /var/log/messages

# Протоколирование аутентификации.
# Файл протокола /var/log/secure
authpriv.* /var/log/secure

# Bee log-сообщения почтовой системы сохранять в файле /var/log/maillog.


mail.* /var/log/maillog
# Все сообщения демона cron сохранять в файле /var/log/cron
cron.* /var/log/cron

# Everybody gets emergency messages


*.emerg *

# Сообщения системы новостей уровня crit и выше сохранять в файле


# /var/log/spooler
uucp,news.crit /var/log/spooler

# Все загрузочные сообщения хранить в файле /var/log/boot.log


1оса17.* /var/log/boot.log

Файл конфигурации состоит из двух полей: объект протоколирования и файл,


в который будут записываться сообщения, порождаемые этим объектом. Для
каждого объекта можно указать один из уровней протоколирования:
• debug — отладочная информация;
• info — просто информация;
• notice — уведомление;
• warn — предупреждение;
О err — ошибка;
• emerg — критический уровень.
Первые три уровня протоколирования относятся к информационным сооб-
щениям. Уровень warn — это предупреждения, a err — ошибки. Помимо
этого, существуют критические сообщения, которые выводятся прямо на
консоль. Для обозначения объектов и для обозначения уровней протоколи-
рования можно использовать символ "*", который обозначает все объекты
или все уровни.
Утилиты администрирования сети и обеспечения безопасности 301

Сетевое протоколирование
Для обеспечения повышенной защищенности сети все сообщения можно
хранить не на локальном компьютере, а передавать по сети на специальный
сервер, на котором будет находиться база журналов компьютеров, подклю-
ченных к сети.
Для передачи сообщений используется протокол UDP. Для нормального
функционирования необходимо в файле /etc/service снять комментарий со
строки syslog 514/udp. После этого необходимо внести изменения в файл
конфигурации /etc/syslog.conf — вместо файлов протоколов используйте пара-
метр ©hostname, где hostname — это имя компьютера, на который будут пе-
ренаправлены сообщения.
Имя узла желательно указать в файле /etc/hosts, поскольку демон syslogd
обычно стартует раньше, чем DNS-сервер.

Демон klogd
Демон klogd предназначен для перехвата и протоколирования сообщений
ядра Linux. По умолчанию демон klogd вызывается системным вызовом для
того, чтобы препятствовать отображению всех сообщений на консоль.
Это не распространяется на критические сообщения ядра (kernel panic).
Эти сообщения в любом случае будут отображены на консоли.

Защита системы после взлома


В этом же разделе мы остановимся на сетевой безопасности, а именно на
том моменте, когда взлом уже произошел. После обнаружения факта взлома
стандартным решением является отключение взломанного компьютера от
сети и полная переустановка операционной системы с последующей уста-
новкой всех обновлений программного обеспечения, используемого на ком-
пьютере. А что делать, если нет возможности вывести из работы взломан-
ный компьютер, а защитить его все равно необходимо? Именно этот случай
мы и рассмотрим в этом разделе.
Взломы операционной системы бывают разные. Самый простой вариант —
какой-то подросток начитался литературы или нашел в Интернете програм-
му для взлома, например, sendmail, применил свои псевдознания к вашей
системе, пошалил — удалил что-то с вашего компьютера или, наоборот, ос-
тавил послание — "ваш компьютер взломан суперхакером Васей" и ушел,
причем, зачастую, не уничтожив следы своего воздействия на компьютер.
На такой простой случай вам рассчитывать не стоит. Как правило, серьез-
ный взлом подготавливается долгое время, и о нем вы узнаете, например, от
администратора какого-нибудь сервера на другом конце земного шара, да
и то потому, что от вас на его сервер идет очень большой трафик или еще
302 Глава 21

по каким-либо косвенным признакам. Такой взлом преследует чисто праг-


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

Rootkit
Rootkit (набор инструментов администратора) — это набор утилит, которые
взломщик устанавливает на взломанном компьютере после получения пер-
воначального доступа. Rootkit обычно содержит сетевой sniffer (утилиту,
способную получать и обрабатывать весь сетевой трафик вашей локальной
сети, вне зависимости от того, какому компьютеру адресованы сетевые па-
кеты) для прослушивания сетевого трафика, программы для модификации
журналов, позволяющие скрыть присутствие взломщика на вашем компью-
тере, и специально модифицированные системные утилиты, замещающие
основные утилиты системы, например ps, netstat, ifconfig, killall, login.
Основное назначение rootkit — позволить взломщику возвращаться во взло-
манную систему и получать доступ к ней, не будучи при этом обнаруженным
системным администратором. Обычно для этого используется модифициро-
ванная версия telnetd или sshd. Модифицированный сервис будет использо-
вать сетевой порт, отличный от того, который этот демон по умолчанию про-
слушивает. Большинство версий rootkit снабжены модифицированными
системными программами, которые замещают существующие во взломанной
системе. Конкретный набор модифицируемых системных утилит весьма зави-
сит от версии rootkit и нужд и квалификации взломщика, но, как правило,
заменяются программы ps, w, who, netstat, Is, find, login и др., которые могут
быть использованы для контроля работы взломанной системы.
Для усложнения обнаружения подмены системных утилит большинство
rootkit, производя замену системных утилит на модифицированные версии,
устанавливают точно такие же даты их создания и размеры файлов, поэтому
простой список файлов с датой их создания, модификации и размером ни-
какой пользы в обнаружении подмены системных утилит не принесет. Ис-
ходя из этого, пожалуй, лучший способ обнаружения подмены системных
утилит — получить контрольную сумму файлов в системе и сохранить этот
список в надежном месте — на другом компьютере или на компакт-диске.
В принципе можно воспользоваться возможностями, предоставляемыми менед-
жером пакетов RPM — контрольной суммой пакета, рассчитанной по алгоритму
MD5. При этом используются контрольные суммы пакетов, хранящиеся в базе
данных установленных RPM. Как легко заметить, данный способ не подходит
для обнаружения опытных взломщиков. Причин к тому две.
П В вашей системе могут быть установлены программы не из RPM,
а скомпилированные из исходных кодов — совершенно очевидно, что
Утилиты администрирования сети и обеспечения безопасности 303

ваш менеджер пакетов абсолютно ничего не знает о программах,


устанавливаемых без помощи RPM.
• База данных RPM находится на взломанном компьютере, и взломщику
не составляет труда модифицировать ее нужным образом или вообще по-
вредить ее.
Для решения этой проблемы обычно используются специализированные
программные пакеты, например Tripwire или AIDE, о которых мы погово-
рим несколько позже.
Помимо вышеперечисленного, некоторые rootkit содержат сетевой анализа-
тор пакетов и утилиты для записи нажатий клавиатурных кнопок, что по-
зволяет взломщику с целью получения необходимой информации организо-
вать сбор паролей и анализ сетевого трафика.
Наибольшую угрозу для безопасности вашей системы представляют rootkit,
использующие загружаемые модули ядра (Loadable Kernel Module, LKM),
что позволяет не подменять системные утилиты, а нарушать их правильное
функционирование через ядро операционной системы.

Обнаружение rootkit
Мы нарисовали достаточно мрачную картину — получается, что после взло-
ма системы сделать для ее излечения ничего не возможно? К счастью, не
все так плохо.
Сначала необходимо определить сам факт взлома системы. Возможным по-
следствием взлома вашего компьютера и установки на нем rootkit может
стать изменение в поведении системных утилит. Например, некоторые ути-
литы отказываются запускаться от имени пользователя, которому было раз-
решено пользоваться этими утилитами. Или ваша любимая утилита top ста-
ла выглядеть несколько иначе. Другие очень настораживающие признаки —
изменение показателей сетевого трафика, а также резкое уменьшение сво-
бодного места на жестком диске.

Сканирование портов
После обнаружения взлома первое, что необходимо сделать после смены
паролей, — лишить взломщика возможности проникновения в систему че-
рез сетевые порты. Поскольку взломанный компьютер не вызывает доверия,
просканировать сетевые порты необходимо с другого компьютера. Проще
всего это сделать с помощью программы nmap. Для этого достаточно вы-
полнить следующую команду:
nmap -р 1-65535 192.168.0.1
304 Глава 21

Указываем диапазон сканируемых портов — от 1 до 65 535, а также адрес


сканируемого компьютера. После этого на консоль будет выдан список портов,
протокол, используемый для каждого порта, и сервис, который использует
этот порт. Обычно всякие "специальные" программы обращаются к портам
выше 1023, причем зачастую это порты с номером выше десяти тысяч.
Помимо nmap, можно воспользоваться программой lsof. Она позволяет по-
лучить список открытых на вашем компьютере сетевых портов. Для этого
достаточно выполнить команду
lsof -i

Использование RPM
Хотя чуть ранее мы утверждали, что использование RPM для обнаружения
rootkit — дело бесперспективное, это не совсем так. RPM можно применить
для быстрой проверки. Если он не найдет ничего подозрительного — вос-
пользуемся другими средствами, если найдет — и на том спасибо — будем
знать, что у нас не так в системе. RPM записывает и проверяет контроль-
ную сумму всех файлов в пакете, включая те файлы, которые должны изме-
няться с течением времени.

Сканер для rootkit


Пакет chkrootkit — набор утилит, используемых для выявления присутствия
в системе уже известных rootkit. Пакет состоит из следующих утилит:
• chkrootkit — используется для выявления сигнатур известных rootkit;
• ifpromisc — используется для обнаружения прослушивания сетевого тра-
фика взломанным компьютером;
П chklastlog, chkwtmp, checkwtmpx — утилиты для проверки файлов жур-
налов;
• chkproc — предназначена для обнаружения "посторонних" загружаемых
модулей ядра операционной системы.
Об особенностях применения chkrootkit можно узнать в документации,
идущей в комплекте с пакетом.

После обнаружения
Что делать после обнаружения rootkit? Единственно верный способ изба-
виться от последствий взлома — заново полностью переустановить операци-
онную систему и установить все обновления пакетов для вашего дистрибу-
тива. Однако не всегда есть возможность проделать такие действия сразу —
квартальный отчет, непрерывное производство, болезнь администратора, да
мало ли что еще.
Утилиты администрирования сети и обеспечения безопасности 305

В дистрибутивах на основе RPM-пакетов вы можете определить поврежден-


ные пакеты. После этого необходимо переустановить их, используя следую-
щую команду:
rpm -и —force rpm_package_name.rpm

После переустановки пакетов вы должны удалить файлы, установленные


в вашу систему взломщиком. Данные, полученные chkrootkit, помогут вам
определить местонахождение файлов. После удаления всех обнаруженных
"чужих" файлов запустите top и ps для выявления и уничтожения оставших-
ся нежелательных процессов. Помимо этого, необходимо проверить старто-
вые сценарии операционной системы и убедиться, что они не используются
для запуска посторонних программ.

LIDS
LIDS (Linux Intrusion Detection/Defense System) — система обнаружения
и защиты от вторжения. Представляет собой дополнение к ядру операцион-
ной системы Linux, добавляющее дополнительные возможности для увели-
чения безопасности операционной системы. LIDS позволяет запретить или
ограничить доступ к файлам, памяти, устройствам, сетевым интерфейсам,
запущенным приложениям и т. п. пользователю root, что дает возможность
надежно оградить даже взломанную операционную систему от дальнейшего
вмешательства.
В отличие от других средств защиты операционной системы Linux, эту систе-
му невозможно отключить, не зная пароля администратора LIDS, который
в зашифрованном виде хранится в специальном файле, видимом только дан-
ной системой. Точно так же защищены и конфигурационные файлы. Даже
узнав каким-то образом пароль администратора, отключить систему можно,
только находясь непосредственно за компьютером.
LIDS позволяет распределять права доступа к файлам на уровне программ,
а не на уровне пользователей, а также запретить перезапуск операционной
системы, загрузку/выгрузку модулей ядра и многое другое. Информация обо
всех действиях, имеющих отношение к защищаемым объектам, помимо
записи в журналах может немедленно отправляться по электронной почте.
Помимо всего прочего, в LIDS присутствует встроенный детектор сканиро-
вания сетевых портов.

Установка
После получения пакета необходимо разархивировать его и обновить исход-
ные тексты ядра операционной системы Linux. После этого следуйте инст-
рукции — там все понятно — компилируем, устанавливаем.
306 Глава 21

Далее, нам необходимо перекомпилировать ядро операционной системы


Linux с поддержкой LIDS. Для этого в пункте меню конфигурации ядра
Code maturity level options нужно включить опцию Prompt for development
and/or incomplete code/drivers. После этого в пункте меню General setup
необходимо включить опцию Sysctl support. Затем надо зайти в меню Linux
Intrusion Detection System. Это меню полностью относится к конфигуриро-
ванию LIDS. Первым идет включение поддержки в ядре:
[*] Linux Intrusion Detection System support (EXPERIMENTAL)

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


• Maximum protected objects to manage — этот пункт позволяет установить
максимальное количество защищаемых объектов;
• Maximum ACL subjects to manage — позволяет установить максимальное
количество субъектов правил доступа LIDS;
• Maximum ACL objects to manage — позволяет установить максимальное
количество объектов правил доступа LIDS;
• Maximum protected proceeds — позволяет установить максимальное коли-
чество защищаемых процессов;
• Hang up console when raising security alert — разрешает закрытие консоли,
с которой произошло нарушение безопасности;
О Security alert when execing unprotected programs before sealing LIDS — раз-
решает вывод сообщения о нарушении безопасности при запуске неза-
щищенных программ;
• Do not execute unprotected programs before sealing LIDS — включает запрет
на запуск незащищенных программ до установки способностей;
• Try not to flood logs — при включении этой опции LIDS не будет записы-
вать в log-файлы дублирующиеся сообщения об одном и том же наруше-
нии защиты;
• Authorized time between two identic logs (seconds) — устанавливается время
в секундах, в течение которых проверяется появление двух идентичных
сообщений, чтобы не записывать одинаковые сообщения в log-файлы;
• Allow switching LIDS protections — включает возможность отключения и
включения LIDS в процессе работы системы после ввода пароля. При
включении данной опции появляется возможность поменять любые па-
раметры работы без перезагрузки операционной системы;
• Numbers of attempts to submit password — определяет количество попы-
ток ввода пароля, по истечении которых отключение LIDS становится
невозможным на заданный далее промежуток времени;
• Time to wait after fail (seconds) — время в секундах, в течение которого
после ввода неправильного пароля указанное количество раз отключение
LIDS становится невозможным;
Утилиты администрирования сети и обеспечения безопасности 307

О Allow remote users to switch LIDS protections — дает возможность удален-


ным пользователям отключать LIDS. С целью увеличения безопасности
вашей операционной системы не включайте эту опцию;
• Allow any program to switch LIDS protections — позволяет любой програм-
ме отключать LIDS. He включайте эту опцию;
• Allow reloading config. File — разрешает переконфигурирование LIDS без
перезагрузки компьютера;
• Port Scanner Detector in kernel — позволяет в ядро операционной системы
добавить детектор сканирования портов;
• Send security alerts through network — разрешает отправку электронной
почты при нарушении безопасности на указанный электронный адрес
с информацией о нарушении. Письмо отправляется незамедлительно при
попытке совершения несанкционированных действий;
• Hide klids network threads — позволяет скрывать сетевые соединения
LIDS;
• Number of connection tries before giving up — задается количество попыток
соединения с SMTP-сервером;
• Sleep time after a failed connection — задает время в секундах между по-
пытками соединения с почтовым сервером;
П Message queue size — определяет максимальное количество почтовых со-
общений в очереди. При превышении данного количества самое старое
неотправленное сообщение удаляется из очереди;
• LIDS debug — используется для включения вывода отладочных сообще-
ний LIDS.
После конфигурирования можно компилировать и устанавливать ядро опе-
рационной системы.

Конфигурирование LIDS
После установки LIDS в каталоге /etc появляется каталог lids, содержащий
следующие конфигурационные файлы:
П lids.cap — предназначен для хранения текущих значений установок;
П lids.net — предназначен для настройки отправки электронных сообщений
системой LIDS;
• lids.pw — в этом файле записан в зашифрованном виде пароль админист-
ратора. Изменять этот файл можно только с помощью lidsadm;
• lids.conf — файл содержит текущие установки правил доступа. Изменять
этот файл можно только с помощью lidsadm.
308 Глава 21

Возможности
Возможности (capabilities) определяют способность программ совершать
какие-либо действия. LIDS позволяет использовать по отношению к про-
граммам большое количество возможностей. В частности, поддерживается
перезагрузка компьютера, изменение владельца файла, загрузка или выгруз-
ка модулей ядра и многое другое.
Текущие установки возможностей хранятся в файле lids.cap в формате:
[ + | - ] Номер:возможность

Здесь:
О + — включает возможность;
• отключает возможность.
Редактировать файл lids.cap можно с помощью любого текстового редактора.
Включение возможности влияет на все программы без исключения, а вы-
ключение влияет на все программы, кроме тех, которым напрямую указана
данная возможность с помощью правил доступа lidsadm.
Сразу после установки LIDS файл lids.cap содержит включенными следую-
щие возможности:
О CAP_CHOWN — разрешает программам изменять владельца и группу вла-
дельца файла;
П CAP_DAC_OVERRIDE — разрешает программам, запускаемым пользователем
root, не принимать во внимание режимы доступа к файлам. При отклю-
чении пользователь root теряет возможность изменять любые файлы, не-
взирая на права доступа;
• CAP_DAC_READ_SEARCH — то же самое, что и предыдущая возможность,
только по отношению к каталогам;
• CAP_FOWNER — разрешает операции с файлами, когда владелец файла
должен совпадать с пользователем, совершающим операцию;
• CAP_FSETID — разрешает установку SUID- или SGID-бита на файлах, не
принадлежащих пользователю root;
• CAP_KILL — разрешает процессам пользователя root "убивать" чужие про-
цессы;
• CAP_SETGID — разрешает программам пользователя root изменять группу,
под которой они работают;
• CAP_SETUID — управляет возможностью программ пользователя root из-
менять пользователя, под которым они работают;
• CAP_SETPCAP — разрешает программам менять возможности;
О CAP_LINUX_IMMUTABLE — разрешает снимать атрибуты S_IMMUTABLE И
S_APPEND с файлов;
Утилиты администрирования сети и обеспечения безопасности 309

О CAP_NET_BIND_SERVICE — разрешает программам использовать сетевой


порт, меньший чем 1024;
• CAP_NET_BROADCAST — разрешает рассылать широковещательные пакеты;
П CAP_NET_ADMIN — параметр управляет большим количеством различных
возможностей: конфигурирование сетевых интерфейсов, изменение пра-
вил брандмауэра, изменение таблиц маршрутизации и многих других,
связанных с сетевыми настройками Linux;
• CAP_NET_RAW — разрешает использовать сокеты;
П CAP_IPC_LOCK — разрешает процессам пользователя root блокировать сег-
менты разделяемой памяти;
П CAP_IPC_OWNER — управляет доступом программ пользователя root к ре-
сурсам межпроцессорного взаимодействия процессов, не принадлежащих
пользователю root;
П CAP_SYS_MODULE — разрешает загружать модули ядра;
П CAP_SYS_RAWIO— разрешает доступ на чтение/запись к таким устройст-
вам, как /dev/mem, /dev/kmem, /dev/port, /dev/hdXX, /dev/sdXX;
• CAP_SYS_CHROOT — разрешает устанавливать корневой каталог для теку-
щей командной оболочки;
• CAP_SYS_PTRACE — этот параметр разрешает программам использовать
вызов функции ptrace (), которая управляет выполнением процессов-
потомков процессу-родителю;
• CAP_SYS_PACCT — разрешает конфигурировать учет процессов;
• CAP_SYS_ADMIN — управляет множеством возможностей: управление уст-
ройством /dev/random, создание новых устройств, конфигурирование
дисковых квот, настройка работы klogd, установка имени домена, уста-
новка имени хоста, сброс кэша, монтирование и размонтирование дис-
ков, включение/отключение swap-раздела, установка параметров после-
довательных портов и многое другое;
• CAP_SYS_BOOT — разрешает перегружать систему;
П CAP_SYS_NICE — разрешает изменять приоритет процессов, не принадле-
жащих пользователю root;
П CAP_SYS_RESOURCE — разрешает изменять лимиты использования ресур-
сов системы: дисковые квоты, зарезервированное пространство на Ext2-
разделах, максимальное количество консолей и т. п.;
П CAP_SYS_TIME — разрешает изменять системное время;
•• CAP_SYS_TTY_CONFIG — разрешает изменять настройки tty-устройств;
• CAP_HIDDEN — разрешает программам делаться невидимыми в списке
процессов. Не влияет на все программы;
• CAP_INIT_KILL — разрешает "убивать" процессы-потомки процесса init.
310 Глава 21

Как видите, впечатляющий набор возможностей. Самое время разобраться,


что из этого нужно включить, а что выключить для вашей операционной
системы. Для инициализации параметров способностей в процессе загрузки
используется команда
lidsadm - I

Обычно ее ставят в конце /etc/rc.d/rc.local, что позволяет произвести отклю-


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

Правила доступа
Все управление LIDS осуществляется с помощью программы — lidsadm.
Lidsadm работает в двух режимах — настройки правил доступа и ввода
команд администрирования. Установки правил доступа находятся в файле
/etc/lids/lids.conf. Для просмотра текущих установок правил доступа необхо-
димо выполнить следующую команду:
lidsadm -L
LIST
Subject ACCESS TYPE Object

Any File READ /sbin


Any File READ /bin
Any File READ /boot
Any File READ /lib
Any File READ /usr
Any File DENY /etc/shadow
/bin/login READ /etc/shadow
/bin/su READ /etc/shadow
Any File APPEND /var/log
Any File WRITE /var/log/wtmp
/sbin/fsck.ext2 WRITE /etc/mtab
Any File WRITE /etc/mtab
Any File WRITE /etc
/usr/sbin/sendmail WRITE /var/log/sendmail.st
/bin/login WRITE /var/log/lastlog
/bin/cat READ /home/xhg
Any File DENY /home/httpd
/usr/sbin/httpd READ /home/httpd
Any File DENY /etc/httpd/conf
/usr/sbin/httpd READ /etc/httpd/conf
Утилиты администрирования сети и обеспечения безопасности 311

/usr/sbin/sendmail WRITE /var/log/sendmail.st


/usr/XHR6/bin/XF86_SVGA NO_INHERIT RAWIO
/usr/sbin/in.ftpd READ /etc/shadow
/usr/sbin/httpd NO_INHERIT HIDDEN
Правила доступа состоят из трех элементов: субъекта, объекта и цели. Объ-
ектом является любой файл или каталог, на который и должны действовать
правила доступа и зашита LIDS. Если в качестве объекта указывается ката-
лог, то все файлы в нем и вложенные каталоги с их файлами автоматически
становятся объектами. Субъектом является любая защищенная программа,
которой дают доступ к защищаемому объекту, поэтому прежде чем исполь-
зовать программу в качестве субъекта, ее саму надо защитить средствами
LIDS, применив к ней правила доступа как к объекту. Если субъект не ука-
зан, то субъектом является любая программа. Целью является тип доступа:
П READ — доступ на чтение;
П WRITE - запись;
• DENY — запрет на какой-либо доступ;
• APPEND — открытие только для записи в конец файла;
• IGNORE — игнорирование защиты.
Построение прав доступа подробно описано в документации на пакет LIDS,
поэтому мы на этом здесь не останавливаемся.
После настройки необходимо перезагрузить операционную систему. В том
случае, если с функционированием возникли проблемы, можно загрузить
Linux с выключенным LIDS, для чего при загрузке необходимо передать яд-
ру операционной системы параметр security=o. Например, для LILO это
будет выглядеть так:
LILO boot: linux security=O

Portsentry
Программа предназначена для обнаружения попыток сканирования портов
и организации адекватного (с точки зрения администратора) ответа. Основ-
ные возможности Portsentry:
П обнаруживает практически все известные виды сканирования UNIX-
машин;
• в реальном времени блокирует хост, с которого происходит сканирование
портов, посредством установленного на атакуемом компьютере бранд-
мауэра;
• записывает в LOG-файлы посредством syslogd информацию об атаке;
312 Глава 21

D в ответ на сканирование или подключение к защищенному порту вызы-


вает программу, указанную администратором при конфигурировании.
Пакет Portsentry прост в установке, конфигурировании и использовании.
Его можно получить как в исходных кодах, так и в виде RPM-пакета.

LogSentry
Программа LogSentry предназначена для автоматического мониторинга жур-
налов и уведомления системного администратора с помощью электронной
почты о подозрительных происшествиях в системе. Гибко настраивается.

Tripwire
Программный пакет Tripwire предназначен для обнаружения изменения
файлов, позволяя обнаруживать порчу данных и взломы. База данных кон-
трольных сумм файлов шифруется, что предотвращает ее подделку взлом-
щиками.
Непосредственно после установки операционной системы необходимо уста-
новить tripwire, которая, используя правила, определенные политикой безо-
пасности, создает базу данных, содержащую информацию обо всех файлах
в системе (список файлов может задаваться администратором) — размер, кон-
трольная сумма, дата модификации и т. п. После создания базы данных она
ежедневно сравнивается с текущим состоянием файловой системы, позволяя
обнаружить добавленные, измененные и удаленные файлы. Получаемые при
этом отчеты могут быть просмотрены с различной степенью детализации.
Пакет tripwire входит в состав практически всех современных дистрибутивов
Linux.

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

RSBAC
RSBAC — это надстройка над ядром Linux и комплект утилит управления,
позволяющие создать на базе Linux защищенную систему. Реализация меха-
Утилиты администрирования сети и обеспечения безопасности 313

низмов защиты выполнена на уровне ядра системы, системные вызовы, за-


трагивающие безопасность, дополняются специальным кодом, выполняю-
щим обращение к центральному компоненту RSBAC. Этот компонент при-
нимает решение о допустимости данного системного вызова на основе
многих параметров:
• типа запрашиваемого доступа (чтение, запись, исполнение);
О субъекта доступа;
П атрибутов субъекта доступа;
• объекта доступа;
• атрибутов объекта доступа.
Функционально RSBAC состоит из нескольких модулей, а центральный
компонент принимает комплексное решение, основываясь на результатах,
возвращаемых каждым из активных в данный момент модулей (какие модули
задействовать и в каком объеме, определяется на этапе настройки системы).
Вся информация, используемая RSBAC, хранится в дополнительном катало-
ге, который доступен только ядру системы.
RSBAC — мощная система защиты и разграничений прав доступа, но не-
сколько тяжеловата в настройке.

Security-Enhanced Linux
Security-Enhanced Linux (SELinux) имеет аналогичное с RSBAC назначение
и представляет собой дополнения к ядру, а также набор утилит. Разработка
продвигается Агентством Национальной Безопасности США (National Security
Agency, NSA). SELinux обеспечивает гибкую мандатную архитектуру управ-
ления доступом, использующую язык описания конфигураций политики
безопасности. По сравнению с RSBAC менее гибкая, зато имеет очень хо-
рошую предопределенную политику безопасности. Ее настройка достаточно
сложна и невозможна без изучения специального языка конфигурации.
Глава 22

Борьба
с нежелательной почтой
Надеюсь, что такое нежелательная почта или спам вам объяснять не нужно.
Каждому приходило достаточно большое количество писем с предложением
посетить какие-то семинары, за один день выучить английский, купить за-
вод в Подмосковье и т. п. Когда их штук десять в месяц — забавно, и уда-
лить их не составляет труда. Однако когда их порядка 10 в день, то это уже
проблема, причем проблема, которая ложится на плечи администратора.
В этой главе мы попытаемся найти решение, причем такое, чтобы "один раз
и на всю жизнь". Какие же можно предложить способы?
Самый простой — договориться с провайдером, чтобы вся почта, приходящая
на наш домен, проверялась и фильтровалась у него. Решение самое простое в
плане трудозатрат и самое дорогое с финансовой точки зрения, поскольку
провайдер, наверняка, потребует ежемесячной оплаты за эту услугу.
Вариант второй — в каждом почтовом клиенте существует возможность вес-
ти "черные списки", в частности в Outlook Express есть такая функция —
список блокируемых отправителей. Однако это тоже не решение, поскольку
вам придется для каждого письма и для каждого почтового клиента руками
определять — можно или нет принимать письмо от данного пользователя.
Помимо этого, есть еще одно соображение — в спаме поле письма FROM
почти на 100% поддельное, и осуществлять по нему сортировку почтовых
сообщений бесполезно.
Третий вариант — у каждого пользователя установить специальную про-
грамму, которая на основе анализа содержимого письма будет с очень высо-
кой вероятностью определять нежелательную почту. Но, опять это "но", что-
бы эта программа хорошо работала, ее нужно обучить, что, учитывая
количество пользователей, проделать достаточно трудно.
Поэтому наша цель — централизованная обработка писем на нашем почто-
вом сервере. Для защиты от спама есть, по меньшей мере, два варианта —
это использование RBL (Realtime Blackhole List, черный список реального
времени) и интеллектуальных программ вроде SpaniAssassin.
316 Глава 22

RBL
Черные списки были первым эффективным средством борьбы со спамом.
Первый такой сервис появился еще в 1997 году. Смысл этого сервиса заклю-
чается в том, что имеется централизованный список "плохих" IP-адресов,
с которых не рекомендуется принимать почту, и доступ к этому списку осу-
ществляется в реальном времени по протоколу DNS. Использующие RBL
почтовые серверы в момент приема очередного сообщения запрашивают ин-
формацию об IP-адресе отправителя и на основании ответа либо принимают,
либо отвергают письмо. Большинство серверных почтовых программ, в част-
ности sendmail и fetchmail, в настоящее время могут работать с RBL.
Вроде все просто и логично. Однако недостаток на самом деле здесь огро-
мен — сообщение принимается или отвергается только на основании IP-
адреса посылающей письмо стороны. В результате, если какой-то почтовый
сервер попал в RBL-список, то ВСЯ почта с этого сервера не принимается
всеми почтовыми службами, использующими данный RBL.
В настоящее время существует множество RBL, в основном отличающихся
политикой администрации. Как же можно оценить их качество? Оценивать
можно двояко. Во-первых, по количеству отфильтрованного спама. Этот
показатель любят приводить маркетологи и провайдеры решений. А во-
вторых, и это для пользователя более важный параметр, количество ложных
срабатываний, т. е. сколько хороших писем с точки зрения пользователя
было опознано службой как спам и не доставлено адресату. К сожалению,
о втором параметре пользователь адекватно не информируется, зачастую он
узнает об этой проблеме при общении по другим каналам с респондентом,
а контракт или срочная информация не дошли по адресу. Поэтому настой-
чиво рекомендую не применять этот метод фильтрации, а использовать про-
граммы типа Spamassassin.

SpamAssassin
Существует несколько независимых пакетов, предназначенных для анализа
поступающих писем на предмет спама. Одним из признанных в этой облас-
ти программ и является SpamAssassin (www.spamassassin.org). В чем же ее
достоинство? Программа имеет развитую систему контекстного лингвисти-
ческого анализа, систему обучения и самообучения. Помимо этого она может
работать совместно с другими программами анализа содержимого писем.
Каким образом SpamAssassin работает? При поступлении письма, к примеру,
1
в sendmail, МТА-агент по механизму Milter API передает нашей программе-

1
Milter API — интерфейс, предоставляющий внешним программным приложениям
доступ к почтовым сообщениям, обрабатываемым sendmail. Тем самым он позво-
ляет осуществлять дополнительную обработку и редактирование содержимого и ме-
таданных почтового сообщения.
Борьба с нежелательной почтой 317

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


письма на предмет спама и возвращает в МТА-агент свою оценку проверен-
ного письма и рекомендацию к дальнейшему действию.
Пакет SpamAssassin входит в стандартную поставку дистрибутива и установ-
ка его тривиальна. Далее необходимо сконфигурировать sendmail для работы
с поддержкой Milter API. Для этого в конфигурационный файл т 4 необхо-
димо добавить следующие строки:
APPENDDEF('conf_sendmail_ENVDEF', '-DMILTER')
APPENDDEF('confENVDEF','-DMAP_REGEX')

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


но и не делать. Сразу после установки программа способна отсеять нежела-
тельную почту с вероятностью 60—85% (по разным источникам.). Для
улучшения распознавания спама профамме необходимо передать на анализ
почтовые сообщения, нормальные с точки зрения пользователя и "ненор-
мальные". Количество — чем больше, тем лучше, начальная цифра сооб-
щений для анализа 200—300 штук. Удобнее всего просто складировать
письма в каком-то каталоге, а затем при помощи профаммы sa-learn обу-
чить SpamAssassin.
Дальше все зависит от вашей фантазии. При проверке письма SpamAssassin
добавит в заголовок письма информацию, в которой, помимо того, чем и
когда проверялось письмо, будет прописан весовой коэффициент. Обычно
коэффициент 5.0 и выше означает, что письмо — спам. Далее можно на-
строить sendmail при помощи регулярных выражений на удаление таких пи-
сем, на складирование их в специальной папке, или просто добавление
в тему слова Spam!.
Вот, пожалуй, и все. Дальнейшие ваши действия зависят от знаний и опыта,
которые вы получите, поработав с вашим сервером.

Вам также может понравиться