Linux-сервер своими руками | Страница 1 | Онлайн-библиотека


Выбрать главу

Колисниченко Д. Н.

Linux-сервер своими руками

Под редакцией Финкова М.В.

Автор благодарит Марка Финкова, редактора и самого внимательного читателя этой книги, за его советы относительно содержания книги (например, описать программу MRTG в книге посоветовал именно Марк), а также исправление множества всевозможных опечаток в тексте и листингах. Особая благодарность Федору Сорексу, редактору раздела Unix-систем портала СофтТерра и руководителю проекта Linux RSP за предложение в 2000 году написать мою первую статью. Главная благодарность Линусу Торвальдсу за создание замечательной операционной системы и всем тем, кто участвуетв процессе создания и сопровождения данной системы, а также всем моим родным за проявленное ими терпение во время работы над книгой.

1

Введение в Linux

1.1. Вступительное слово

Цель данной книги состоит в том, чтобы развеять миф о «неподъемности» UNIX или Linux-систем, заложить прочный фундамент для построения вашего Интернет-сервера. Излагая материал, я старался объяснять все как можно более понятным языком. Все примеры, приведенные в книге, являются на 100% рабочими. Поэтому эта книга окажется полезной тем, кому нужно в сжатые сроки освоить Linux или настроить Linux-сервер. Я следовал одному простому правилу: не излагать те факты, которые заведомо окажутся невостребованными. Я наоборот, я старался приводить как можно больше примеров из реальной жизни, а в гл. 17 я полностью описал настройку шлюза и сервера для входящих звонков, а также довольно интересную вещь — настройку «обратного звонка». Вам может показаться, что сведения в этой главе повторяются, но с ее помощью читатель сможет настроить шлюз и сервер для входящих звонков «с нуля», не читая предыдущих глав, при условии, что он обладает хоть какими-нибудь навыками работы в ОС Linux.

Данная книга предназначена как для начинающих, так и для опытных системных администраторов. В книге рассматриваются все этапы настройки Linux-сервера, особое внимание уделено вопросам безопасности. Читатель также найдет подробное описание настройки сетевых служб, включая DNS, HTTP, FTP, IpChains, SQUID. В книге собраны самые актуальные, на мой взгляд, темы.

1.2. О Linux

История операционной системы Linux началась, естественно, с создания операционной системы Unix. В конце 60-х годов завершился проект Multics, над которым работали сотрудники компаний General Electrics, AT&T Bell Laboratories и Массачусетского института. Результатом этого проекта стала одноименная операционная система. Операционная система Multics была многозадачной, имела высокоэффективную на то время файловую систему, а также предоставляла пользователям относительно удобный интерфейс.

В 1969 году Кен Томпсон разработал операционную систему Unix, в основе которой были принципы, которых придерживались разработчики операционной системы Multics. Новая операционная система, в отличие от Multics, могла работать на мини-ЭВМ. При этом с самого начала новая система была многозадачной и многопользовательской.

Вскоре операционная система Unix стала настолько популярной, что Кен Томпсон и Деннис Ритчи решили переписать код системы на языке С. До этого операционная система была написана на ассемблере. Это обеспечило огромною мобильность операционной системы — ОС Unix могла быть перенесена практически на любую платформу без перепрограммирования. Нужно было только модифицировать небольшую часть ядра, написанную на ассемблере.

Через определенное время операционная система Unix стала стандартным программным продуктом, который распространялся многими компаниями, включая IBM и Novell.

В 1972 году началась массовая продажа лицензий на эту операционную систему различным пользователям. С этого момента ОС Unix неофициально стала коммерческим программным продуктом.

Калифорнийский университет в Беркли также приобрел лицензию на ОС Unix. Специалисты этого университета внесли много изменений, которые вскоре стали стандартными. В 1975 году Калифорнийский университет выпустил свою версию Unix — Berkeley Software Distribution (BSD). Эта операционная система стала основным конкурентом операционной системы, разработанной компанией AT&T.

Постепенно другие компании, последовав примеру Калифорнийского университета, начали выпускать свои версии Unix. Например, в 1980 году компания Microsoft выпустила ОС Xenix. Правда, данная операционная система не могла составить конкуренцию Unix, так как не поддерживала многопользовательский режим, а была предназначена для одного пользователя.

В 1982 году компания AT&T выпустила версию Unix System3.Это была первая официальная коммерческая версия ОС Unix. Следующей версией стала Unix System V. Помимо различных нововведений, эта версия отличалась серьезной технической поддержкой.

Разработчики BSD Unix также не сидели сложа руки и в 1983 году Калифорнийский университет выпустил версию Unix BSD 4.2. Эта операционная система содержала довольно мощные средства управления памятью, файлами, печатью, а также в ней был реализован протокол TCP/IP, который сейчас во всю применяется в сети Интернет. Многие фирмы-производители выбрали именно Unix BSD 4.2.

Широкое распространение различных версий Unix привело к необходимости создания стандарта на эту операционную систему. В середине 80-х годов выделились два основных стандарта — Unix System V и BSD Unix. Компания AT&T Labs передала права на разработку версии Unix System V компании Unix System Labs. Эта компания в 1991 году представила операционную систему System V 4, в которой были реализованы практически все возможности операционных систем System V 3, BSD 4.2, Xenix.

Четыре компании, в том числе IBM и Hewlett-Packard, создали фонд открытого программного обеспечения (Open Software Foundation, OSF). Целью этого фонда было создание собственной версии Unix. В результате появился еще один стандарт — OSF Unix.

В 1993 году компания AT&T продала свою часть прав на ОС Unix компании Novell. После этого были выпущены версии Unix компании Novell, которые были основаны на версии System V 4. Новая операционная система была названа UnixWare.

Параллельно с развитием операционных систем развивались графические интерфейсы. До начала 90-х годов выделились два основных графических интерфейса пользователя: Motiff и OpenLook. Впоследствии эти два интерфейса были определены в один, получивший название Common Desktop Environment (CDE).

Операционная система Unix с самого начала была требовательна к аппаратным ресурсам компьютера. Для нормальной работы нужна была довольно мощная рабочая станция. Некоторые версии были рассчитаны только на определенные платформы. Например, SunOS была предназначена только для рабочих станций Sun, AIX — для рабочих станций IBM, a AUX — для компьютеров Macintosh.

Прообразом Linux стала операционная система Minix, разработанная Эндрю Таннебаумом. ОС Minix являлась небольшой UNIX-системой, которая была предназначена даже не для реального использования, а для демонстрации возможностей системы Unix. Вдохновленный идеей создать собственную Minix, Линус Торвальдс начал работу над операционной системой Linux. Впервые ОС Linux обсуждалась в конференции USENET comp.os.minix.

5-го октября 1991 года Линус Торвальдс объявил о выходе первой «официальной» версии Linux 0.02. Тогда в этой операционной системе работали только интерпретатор bash (Bourne Again Shell) и gcc (GNU С compiler). Основное внимание уделялось созданию ядра. Никакие вопросы поддержки пользователей, тиражирования и документирования даже не обсуждались.

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

С самого начала ОС Linux разрабатывалась для персональных компьютеров на платформе Intel. Co временем некоторые компании начали разрабатывать версии Linux для своей платформы, например, Sun Microsystems. Многие компании, в том числе и отечественные, разработали свои версии Linux.

Прочитав много книг, посвященных Linux, я заметил, что практически во всех, особенно в книгах зарубежных авторов, есть раздел «Где достать Linux?». В этой книге такого раздела не будет благодаря самой ОС Linux.

1
Колисниченко Д. Н.: Linux-сервер своими руками: Под редакцией Финкова М.В. 1
1 : Введение в Linux 1
1.1. Вступительное слово 1
1.2. О Linux 1
1.3. Почему именно Linux? 2
1.4. Область применения Linux-серверов 2
1.5. Как устроена данная книга 3
1.6. Какие сервера бывают и для чего они нужны 4
1.6.1. Сервер локальной сети 4
1.6.2. Шлюз — сервер для доступа в Интернет 5
1.6.3. Сервер удаленного доступа 5
1.7. Что такое сервер? (или Курс Молодого Администратора) 5
1.7.1. Архитектура сети: одноранговая и клиент/сервер 5
1.7.2. Протокол и интерфейс 6
1.7.3. Протокол TCP/IP 8
1.7.4.Системадоменныхимен—DNS 10
1.7.5. Многоуровневая архитектура стека TCP/IP 10
1.7.6. Порты и демоны 11
1.7.7. Структура пакетов IP и TCP 11
1.8. Общие рекомендации 12
1.9. Обзор дистрибутивов Linux 12
1.10. Глоссарий 13
2: Установка системы 13
2.1. Установка Red Hat Linux 13
2.2. Установка Linux Mandrake 16
2.3. Установка Linux на компьютер с чипсетом Intel810 18
2.4. Установка нескольких операционных систем 18
2.4.1. Установка Windows 9x и Linux 18
2.4.2. Установка Windows 9x, Windows NT/2000 и Linux. 18
2.4.3. Использование loadlin 19
2.5. Постинсталляционная настройка 19
2.6. Установка программного обеспечения 19
2.6.1.Традиционный способ установки: установка из исходных текстов 19
2.6.2. Программа RPM 20
2.6.3. Программы gnorpm, kpackage, apt 21
2.6.4. Установка из пакетов, содержащих исходный код 22
2.7. Завершение работы операционной системы 22
3: Учетные записи пользователей 22
3.1. Вход в систему 22
3.1.1. Вход в систему под другим именем 22
3.2. Изменение пароля 22
3.3. Идентификаторы пользователя и группы 22
3.4. Создание группы 23
3.5. Удаление и модификация учетных записей 23
3.6. Квотирование 23
3.6.1. Определение ограничений 24
3.6.2. Запрет квоты для пользователя или группы 25
3.6.3. Использование программы linuxconf для определения квот 25
3.7. Сценарий создания пользователей 25
4: Файловая система Linux 25
4.1. Файлы и каталоги. Дерево каталогов 25
4.2. Команды для работы с файлами и каталогами 26
4.2.1. Команды для работы с файлами 26
4.2.2. Команды для работы с каталогами 26
4.3.Ссылки 26
4.4. Стандартные имена устройств в Linux 27
4.5. Стандартные каталоги 27
4.6. Создание файловой системы. Типы файловых систем 27
4.7. Использование программы fdisk 29
4.8. Программа Disk Drake 29
4.9. Монтирование дисков. Файл/etc/fstab 29
4.10. Создание раздела (файла) подкачки 31
4.11. Использование LILO 31
4.12. Права доступа 32
4.13. Обслуживание файловой системы 34
4.14. Подключение магнитооптического диска 34
4.15. Использование стримера 34
4.15.1. Подключение стримера с интерфейсом SCSI 35
4.15.2. Подключение стримера с интерфейсомFDC 35
4.15.3. Управление стримером 35
4.16. Стратегия резервного копирования 35
4.17. Использование программы cpio 36
4.18. Повышение производительности жесткого диска 36
4.19. Создание массивов RAID 37
4.20. Форматирование дискет в Linux 38
5: Процессы 38
5.1. Системные вызовы fork() и ехес() 38
5.1.1. Общая схема управления процессами 39
5.2. Перенаправление ввода/вывода 40
5.3. Команды управления процессами 40
5.4. Создание расписаний 41
5.5. Уровни выполнения.Программа init 41
5.6. Сценарии загрузки системы 42
5.7. Стандартные файлы протоколов (журналов) 43
5.8. Управление протоколированием 43
5.8.1. Демон Syslogd 43
5.8.2. Сигналы 43
5.8.3. Файл конфигурации 44
5.8.4. Сетевое протоколирование 44
5.8.5. Демон klogd 44
5.8.6. Параметры ядра 44
6: Русификация Linux 45
6.1. Русификация консоли 45
6.2. Русификация системы X Window 45
6.3. Русификация принтера 45
7: Настройка сети 45
7.1. Установка сетевой платы. Настройка параметров сети 45
7.2. Подключение модема 45
7.3. Подключение к Интернет 46
7.3.1. Терминальный способ 46
7.3.2. PAP- и СНАР-аутентификация 47
7.4. Настройка DSL-соединения 47
7.4.1. Настройка соединения DSL в Linux Mandrake 47
7.4.2. Настройка соединения DSL в другом дистрибутиве 48
7.5. Настройка выделенных линий 49
7.6. Перед настройкой сервера 50
8: Конфигурирование сервера 51
8.1. Суперсерверы inetd и xinetd 51
8.1.1. Настройка сервера inetd 51
8.1.2. Настройка tcpd 51
8.1.3. Протокол IPv6 52
8.1.4. Установкаx inetd 52
8.1.5. Настройка xinetd 52
8.1.6. Параметры запуска xinetd 53
8.1.7. Пример файла конфигурации /etc/xinetd 53
8.2. Удаленный доступ: ssh и telnet 53
8.3.Маршрутизация 56
8.4. Настройка DHCP (Dynamic Host Configuration Protocol) 56
8.5. Подсчет трафика. Программа MRTG 57
8.6. Сетевая файловая система (NFS) 59
8.6.1. Настройка сервера NFS 59
8.6.2. Настройка клиента NFS 59
8.7. Поисковый сервер ht:/Dig 60
8.8. Прокси-сервер Socks5 60
8.8.1.Установка и настройкасервера 60
8.8.2. Альтернативные серверы Socks5 61
8.8.3. Настройка клиента Socks5 (licq) 61
8.9. Система обнаружения и защиты от вторжения 61
8.9.1. Что такое LIDS? 61
8.9.2. Установка LIDS 62
8.9.3. Базовая настройка 62
8.9.4. Правила доступа 63
8.9.5. Администрирование LIDS 64
9: Протокол Server Message Block (SMB) 65
9.1. Установка Samba 65
9.2. Настройка файлового сервера 65
9.3. Доступ к SMB-ресурсам из Linux 65
9.4. Доступ к принтеру Linux для Windows-машин 66
9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux 66
9.6. Пример файла smb.conf 67
9.7. Конфигуратор SWAT 67
10: Служба имен — DNS 67
10.1. Настройка сервера DNS 68
10.2. Кэширующий сервер DNS 69
10.3. Настройка дополнительного сервера DNS 69
10.4. Команды управления сервером DNS 70
10.5. Использование nslookup 70
11: Настройка FTP 70
11.1. Сервер FTP wu-ftpd 70
11.1.1. Файл ftpaccess 71
11.1.2. Файл ftphosts 72
11.1.3. Файл ftpusers 72
11.1.4. Файл ftpgroups 72
11.1.5. Файл ftpconversions 72
11.1.6. Файл xferlog 72
11.2.СерверProFTP 73
11.2.1. Файл /etc/proftpd.conf 73
11.2.2. Ограничение доступа 74
11.2.3. Файл .ftpaccess 74
11.3. Организация анонимного FТР-сервера 74
11.4. Вспомогательные программы 74
11.5. Виртуальный узел FTP 74
12: Сервер Apache 75
12.1. Установка Apache 75
12.2. Файлы конфигураци исервера 75
12.2.1. Файл httpd.conf 75
12.2.2. Конфигурирование Apache с помощью netconf 78
12.3. Каталоги пользователей 78
12.4. Виртуальный HTTP-сервер 78
12.4.1. Виртуальные серверы с идентификацией по имени 78
12.4.2. Виртуальные серверы с идентификацией по IP-адресу 78
12.5. SSL и Apache 79
12.5.1. Установка SSL 79
12.5.2. Подключение SSL к Apache 79
12.5.3. Генерирование сертификатов 79
12.6. Пример файла httpd.conf 80
12.7. Перекодирование русскоязычных документов «на лету» 82
13: Почтовый сервер 83
13.1. Настройка sendmail 83
13.2. Аутентификация в sendmail 85
13.3. Настройка почтовых клиентов 86
13.4. Другие программы для работы с электронной почтой 86
13.5. Создание списка рассылки 87
14: Бастионы 88
14.1. Применение IPChains 88
14.2. Настройка IPChains 88
14.3. Различные примеры 89
14.3.1. Пакеты SYN 89
14.3.2. Фрагментация пакетов 89
14.3.3. Пинг смерти 89
14.3.4. IР-спуфинг 89
14.3.5. Фильтрация фрагментированных бомб 89
14.4. Практический пример 90
14.5. IPTables 91
15: Прокси-сервер SQUID 92
15.1. Что такое SQUID? 92
15.2. Установка SQUID 92
15.3. Настройка SQUID 92
15.4. Запуск SQUID 92
15.5. Формат файла squid.conf 92
15.5.1. Параметры сети 92
15.5.2. Параметры соседей 92
15.5.3. Управление кэшем 93
15.5.4. Протоколирование 93
15.5.5. Параметры внешних программ 93
15.5.6. Списки ACL 93
15.5.7. Параметры доступа 93
15.5.8. Параметры администрирования 93
15.6. Отказ от рекламы. Баннерный фильтр 93
15.7. Разделение канала 93
15.8. Программы для учета трафика 94
15.9. Настройка клиентов 94
16: Установка MySQL 94
16.1. Установка сервера 94
16.2. Клиентская часть 95
16.3. Связка Apache + PHP + MySQL 95
16.3.1. Первый способ: из пакетов RPM 95
16.3.2. Второй способ: из исходных текстов 96
17: Практические примеры.: Обратный звонок 96
17.1. Настройка шлюза 96
17.1.1. Настройка ядра 96
17.1.2. Настройка сети 96
17.1.3. Конфигурирование IpChains 96
17.1.4. Настройка DNS 96
17.1.5. Настройка Squid 97
17.2. Настройка Dial-In сервера 97
17.2.1. Установка программного обеспечения 97
17.2.2. Настройка mgetty 97
17.2.3. Настройка ррр 98
17.2.4. Включение IP Forwarding 98
17.2.5. Второй вариант настройки 98
17.2.6. Если что-то не работает… 98
17.2.7. Настройка Windows-клиентов 98
17.2.8. Дополнительная литература 98
17.3. Обратный звонок 98
17.3.1. Что такое callback? 98
17.3.2. Настройка сервера. Способ1 99
17.3.3. Настройка сервера.Способ 2 99
17.3.4. Настройка клиентов. Способ 1 100
17.3.5. Настройка клиентов. Способ 2 100
18: Компилирование ядра 100
18.1. Параметры ядра 100
18.1.1. Параметры корневой файловой системы 100
18.1.2. Управление RAMDISK 100
18.1.3. Управление памятью 101
18.1.4. Другие параметры ядра 101
18.2. Конфигурирование ядра 101
18.2.1. Processor type and features 101
18.2.2. Loadable module support 101
18.2.3.General setup 101
18.2.4. PnP support 102
18.2.5. Block devices 102
18.2.6. Networking options 102
18.2.7. SCSI support 103
18.2.8. Network device support 103
18.2.9.IrDA, USB support 103
18.2.10. Filesystems 103
18.2.11. Sound 103
18.3. Компилирование ядра 103
19: Полезные команды и программы.: Создание RPM-пакетов 103
19.1. Общие команды 103
19.2. Команды для работы с файлами 105
19.3. Команды для работы с Интернет 106
19.4. Обработка текста 109
19.5. Создание RPM-пакетов 113
19.6. Использование редактора vi 114
19.7. Интерпретатор команд bash 114
19.7.1. Каналы и списки 115
19.7.2. Перенаправление ввода/вывода 115
19.7.3. Подоболочки 115
19.7.4. Переменные и массивы 115
19.7.5. Подстановка команд и арифметических выражений 116
19.7.6. Управляющие структуры и циклы 116
19.7.7. Подстановка переменных 118
19.7.8. Функции 118
19.7.9. Обработка сигналов и протоколирование 118
20: Графический интерфейс пользователя.: Система X Window 118
20.1. Установка и запуск системы 119
20.2. Конфигурационный файл XF86Config 120
20.3. Настройка X Window 120
20.4. Конвертирование шрифтов Windows 121
20.5. Оконная среда KDE 121
20.6. Оконная среда GNOME 122
20.7. Настройка Х-терминала 123
21: Linux в игровом зале 124
21.1. Достоинства и недостатки 124
21.2. Выбор аппаратного обеспечения для игрового зала 125
21.3. Установка драйверов для видеокарт nVidia 125
21.4. Установка Windows-эмулятора wine 126
21.5. Запуск игр с помощью эмулятора wine 126
21.6. Средства мультимедиа 127
21.7. Администрирование зала 128
21.7.1. Доступ к Интернет 128
21.7.2. Управление пользователями 128
21.7.3. Ограничение доступа пользователя 129
22: Антивирусная защита 130
22.1. Антивирусные программы 130
22.1.1. Программа DrWeb для Linux 130
22.1.2. Программа AVP для Linux 130
22.2. Проверка входящей и исходящей почты 132
23: Прочие возможности 132
23.1. SATAN 132
23.2. Защита от спама 133
23.3. Ограничение системных ресурсов 134
24: Вместо заключения 134
Приложения 135
Приложение А.: Конфигурационные файлы Linux 135
Приложение Б.: Общие параметры программ для системы X Window 138
Приложение В.: Компактное и нормальное ядра 138
Приложение Г. Ссылки 143