Linux в действии
Без практики ничему нельзя научиться, и Linux не исключение. Книга «Linux в действии» поможет приобрести навыки защиты файлов, папок и серверов, безопасной установки патчей и приложений, а также управления сетью. Дэвид Клинтон предлагает решения каждодневных задач, стоящих перед профессиональными разработчиками, администраторами и специалистами DevOps.
В книге описываются 12 реальных проектов, в том числе автоматизация системы резервного копирования и восстановления, настройка личного файлового облака в стиле Dropbox и создание собственного сервера MediaWiki. На интересных примерах вы изучите виртуализацию, аварийное восстановление, обеспечение безопасности, резервное копирование, внедрение DevOps и устранение неполадок системы. Каждая глава заканчивается обзором практических рекомендаций, глоссарием новых терминов и упражнениями.
В этой книге:
- Настройка безопасной среды Linux.
- Организация защищенных удаленных подключений.
- Создание средства восстановления системы.
- Исправление и обновление вашей системы.
Предварительный опыт администрирования Linux не требуется.
Об авторе:
Дэвид Клинтон - сертифицированный администратор Linux, опытный преподаватель. Автор множества видеокурсов, книг, включая бестселлер Learn Amazon Web Services in a Month of Lunches.
Все, что вам понадобится, чтобы начать администрировать Linux. Речь идет не о том, как использовать систему Linux, а о том, как позаботиться о ней.
Мацей Юрковский, Grupa Pracuj
Важное руководство по Linux с множеством реальных примеров.
Дарио Виктор Дуран, HiQ Стокгольм
Содержит описание множества функций Linux, которые сделают вашу жизнь намного проще.
Дженс Кристиан Б. Мэдсен, FT Relation
Предисловие...............................................................................................................17
Благодарности...........................................................................................................18
Об этой книге.............................................................................................................19
Кому следует прочитать эту книгу.................................................................................20
Структура издания: дорожная карта..............................................................................20
О коде...........................................................................................................................22
Дистрибутивы Linux.......................................................................................................22
Форум книги..................................................................................................................22
Другие интернет-ресурсы..............................................................................................23
От издательства............................................................................................................23
Об авторе....................................................................................................................24
Об иллюстрации на обложке...................................................................................25
Глава 1. Добро пожаловать в Linux..............................................................................26
1.1. Что отличает Linux от других операционных систем............................................27
1.2. Основные сведения.............................................................................................28
1.2.1. Файловая система Linux..........................................................................29
1.2.2. Начало работы: инструменты навигации в Linux.....................................31
1.2.3. Начало работы: инструменты управления файлами Linux.......................36
1.2.4. Управление с клавиатуры.......................................................................40
1.2.5. Псевдофайловые системы.......................................................................41
1.2.6. Покажите, кто в доме хозяин: sudo.........................................................42
1.3. Получение справки............................................................................................. 43
1.3.1. Man-файлы............................................................................................. 43
1.3.2. Команда info........................................................................................... 44
1.3.3. Всемирная паутина................................................................................. 45
Резюме.......................................................................................................................... 47
Ключевые понятия.............................................................................................. 47
Рекомендации по безопасности........................................................................... 47
Обзор команд...................................................................................................... 47
Самотестирование............................................................................................... 48
Глава 2. Виртуализация Linux: создание безопасной и простой рабочей среды............ 50
2.1. Что такое виртуализация.................................................................................... 51
2.2. Работа с VirtualBox.............................................................................................. 55
2.2.1. Работа с менеджерами пакетов Linux...................................................... 56
2.2.2. Определение виртуальной машины (ВМ)................................................ 63
2.2.3. Установка операционной системы........................................................... 67
2.2.4. Клонирование и совместное использование виртуальной машины
VirtualBox................................................................................................ 71
2.3. Работа с контейнерами Linux (LXC)...................................................................... 73
2.3.1. Начало работы с LXC.............................................................................. 73
2.3.2. Создание вашего первого контейнера..................................................... 74
Резюме.......................................................................................................................... 78
Ключевые понятия.............................................................................................. 78
Рекомендации по безопасности........................................................................... 79
Обзор команд...................................................................................................... 79
Самотестирование............................................................................................... 80
Глава 3. Удаленное подключение: безопасный доступ к машинам по сети................... 82
3.1. Важность шифрования........................................................................................ 82
3.2. Начало работы с OpenSSH................................................................................... 84
3.3. Вход на удаленный сервер по SSH....................................................................... 86
3.4. Беспарольный доступ по SSH.............................................................................. 88
3.4.1. Генерация новой пары ключей............................................................... 89
3.4.2. Копирование открытого ключа по сети................................................... 91
3.4.3. Работа с несколькими ключами шифрования.......................................... 92
3.5. Безопасное копирование файлов с помощью SCP................................................ 93
3.6. Использование удаленных графических программ через соединения SSH........... 94
3.7. Управление процессами в Linux........................................................................... 95
3.7.1. Просмотр процессов с помощью команды ps........................................... 96
3.7.2. Работа с systemd..................................................................................... 98
Резюме.......................................................................................................................... 99
Ключевые понятия............................................................................................ 100
Рекомендации по безопасности......................................................................... 100
Обзор команд.................................................................................................... 100
Самотестирование............................................................................................. 101
Глава 4. Управление архивами: создание резервных копий или копирование
целых файловых систем.............................................................................................. 103
4.1. Зачем архивировать.......................................................................................... 104
4.1.1. Сжатие................................................................................................. 105
4.1.2. Архивы: некоторые важные соображения............................................. 105
4.2. Что архивировать.............................................................................................. 107
4.3. Где создавать резервную копию........................................................................ 109
4.4. Архивирование файлов и файловых систем с помощью инструмента tar........... 110
4.4.1. Примеры простого архива и сжатия...................................................... 110
4.4.2. Потоковая архивация файловой системы.............................................. 112
4.4.3. Сбор файлов с помощью инструмента find............................................ 114
4.4.4. Сохранение разрешений и прав собственности... и извлечение
архивов................................................................................................ 115
4.5. Архивирование разделов с помощью инструмента dd........................................ 119
4.5.1. Работа с инструментом dd.................................................................... 120
4.5.2. Стирание дисков с помощью инструмента dd........................................ 121
4.6. Синхронизация архивов с помощью инструмента rsync..................................... 121
4.7. Вопросы планирования..................................................................................... 123
Резюме........................................................................................................................ 125
Ключевые понятия............................................................................................ 125
Рекомендации по безопасности......................................................................... 125
Обзор команд.................................................................................................... 126
Самотестирование............................................................................................. 126
Глава 5. Автоматизированное администрирование: настройка автоматического
резервного копирования.............................................................................................. 128
5.1. Сценарии с Bash................................................................................................ 129
5.1.1. Пример сценария резервного копирования системных файлов............. 129
5.1.2. Пример сценария для изменения имен файлов..................................... 134
5.2. Резервное копирование данных в системе AWS S3............................................ 136
5.2.1. Установка интерфейса командной строки AWS (CLI)............................. 136
5.2.2. Настройка аккаунта AWS...................................................................... 137
5.2.3. Создание корзины AWS......................................................................... 139
5.3. Планирование регулярного резервного копирования с помощью
инструмента cron.............................................................................................. 140
5.4. Планирование нерегулярного резервного копирования с помощью
инструмента anacron......................................................................................... 142
5.4.1. Запуск задания синхронизации S3........................................................ 143
5.5. Планирование регулярного резервного копирования с помощью
таймеров systemd.............................................................................................. 144
Резюме........................................................................................................................ 146
Ключевые понятия............................................................................................ 147
Рекомендации по безопасности......................................................................... 147
Обзор команд.................................................................................................... 147
Самотестирование............................................................................................. 148
Глава 6. Инструменты для критических ситуаций: создание устройства
для восстановления системы....................................................................................... 150
6.1. Работа в режиме восстановления...................................................................... 152
6.1.1. Системный загрузчик GRUB................................................................... 153
6.1.2. Использование режима восстановления в Ubuntu................................. 154
6.1.3. Использование режима восстановления в CentOS................................. 155
6.1.4. Поиск средств восстановления из командной строки............................ 155
6.2. Создание загрузочного диска восстановления................................................... 157
6.2.1. Образы аварийного восстановления системы........................................ 157
6.2.2. Запись образов на загрузочные USB-накопители.................................. 159
6.3. Запуск загрузочного диска для работы.............................................................. 162
6.3.1. Тестирование системной памяти........................................................... 162
6.3.2. Поврежденные разделы........................................................................ 165
6.3.3. Восстановление файлов из поврежденной файловой системы.............. 168
6.4. Восстановление пароля: монтирование файловой системы с помощью
инструмента chroot............................................................................................ 170
Резюме........................................................................................................................ 171
Ключевые понятия............................................................................................ 171
Рекомендации по безопасности......................................................................... 172
Обзор команд.................................................................................................... 172
Самотестирование............................................................................................. 172
Глава 7. Веб-серверы: создание сервера MediaWiki.................................................... 174
7.1. Создание сервера LAMP..................................................................................... 175
7.2. Настройка веб-сервера Apache вручную............................................................ 177
7.2.1. Установка веб-сервера Apache на Ubuntu.............................................. 177
7.2.2. Заполнение корневого каталога документов сайта............................... 178
7.3. Установка базы данных SQL.............................................................................. 179
7.3.1. Усиление защиты SQL........................................................................... 181
7.3.2. Администрирование SQL....................................................................... 182
7.4. Установка PHP................................................................................................... 185
7.4.1. Установка PHP в Ubuntu........................................................................ 185
7.4.2. Тестирование установки PHP................................................................ 185
7.5. Установка и настройка MediaWiki...................................................................... 186
7.5.1. Диагностика недостающих расширений................................................ 188
7.5.2. Подключение MediaWiki к базе данных................................................. 190
7.6. Установка веб-сервера Apache на CentOS.......................................................... 192
7.6.1. Общие сведения о сетевых портах........................................................ 193
7.6.2. Управление сетевым трафиком............................................................. 194
7.6.3. Установка MariaDB на CentOS............................................................... 195
7.6.4. Установка PHP на CentOS...................................................................... 195
Резюме........................................................................................................................ 197
Ключевые понятия............................................................................................ 198
Рекомендации по безопасности......................................................................... 198
Обзор команд.................................................................................................... 198
Самотестирование............................................................................................. 199
Глава 8. Совместное использование файлов в сети: создание сервера
для совместного использования файлов Nextcloud....................................................... 201
8.1. Корпоративный файлообменник и Nextcloud..................................................... 202
8.2. Установка Nextcloud с помощью моментальных снимков.................................... 203
8.3. Установка Nextcloud вручную............................................................................ 206
8.3.1. Предварительные требования к оборудованию..................................... 206
8.3.2. Построение сервера LAMP..................................................................... 207
8.3.3. Конфигурирование Apache.................................................................... 208
8.3.4. Скачивание и распаковка Nextcloud...................................................... 210
8.4. Администрирование Nextcloud........................................................................... 213
8.5. Использование AWS S3 в качестве основного хранилища Nextcloud.................. 216
Резюме........................................................................................................................ 219
Ключевые термины........................................................................................... 219
Рекомендации по безопасности......................................................................... 219
Обзор команд.................................................................................................... 220
Самотестирование............................................................................................. 220
Глава 9. Защита вашего веб-сервера.......................................................................... 222
9.1. Очевидные вещи............................................................................................... 223
9.2. Контролирование доступа к сети....................................................................... 225
9.2.1. Настройка брандмауэра........................................................................ 225
9.2.2. Использование нестандартных портов.................................................. 232
9.3. Шифрование данных при передаче................................................................... 234
9.3.1. Подготовка домена вашего сайта.......................................................... 236
9.3.2. Генерация сертификатов с использованием Let’s Encrypt...................... 237
9.4. Усиление процесса аутентификации.................................................................. 238
9.4.1. Контроль за объектами файловой системы с помощью SELinux............. 239
9.4.2. Установка и активация SELinux............................................................. 241
9.4.3. Применение политик SELinux................................................................ 243
9.4.4. Системные группы и принцип наименьших привилегий........................ 244
9.4.5. Изоляция процессов в контейнерах...................................................... 247
9.4.6. Сканирование на наличие опасных идентификаторов
пользователей...................................................................................... 247
9.5. Аудит системных ресурсов................................................................................ 248
9.5.1. Сканирование на наличие открытых портов......................................... 248
9.5.2. Сканирование на предмет активных служб........................................... 249
9.5.3. Поиск установленного программного обеспечения............................... 250
Резюме........................................................................................................................ 250
Ключевые термины........................................................................................... 251
Обзор команд.................................................................................................... 251
Самотестирование............................................................................................. 252
Глава 10. Защита сетевых соединений: создание VPN или DMZ.................................. 254
10.1. Создание туннеля OpenVPN............................................................................... 255
10.1.1. Конфигурирование сервера OpenVPN................................................... 256
10.1.2. Конфигурирование клиента OpenVPN................................................... 263
10.1.3. Тестирование вашего VPN.................................................................... 265
10.2. Построение сетей, защищенных от вторжений.................................................. 267
10.2.1. Демилитаризованные зоны (DMZ)......................................................... 267
10.2.2. Использование iptables......................................................................... 270
10.2.3. Создание DMZ с помощью iptables........................................................ 271
10.2.4. Создание DMZ с помощью Shorewall...................................................... 273
10.3. Построение виртуальной сети для тестирования инфраструктуры..................... 276
Резюме........................................................................................................................ 279
Ключевые термины........................................................................................... 279
Обзор команд.................................................................................................... 280
Самотестирование............................................................................................. 280
Глава 11. Мониторинг системы: работа с файлами журналов..................................... 282
11.1. Работа с системными журналами....................................................................... 283
11.1.1. Журналирование с помощью journald................................................... 285
11.1.2. Журналирование с помощью syslogd..................................................... 287
11.2. Управление файлами журналов........................................................................ 289
11.2.1. Способ journald..................................................................................... 289
11.2.2. Способ syslogd...................................................................................... 289
11.3. Обработка больших файлов.............................................................................. 291
11.3.1. Использование grep.............................................................................. 291
11.3.2. Использование awk............................................................................... 292
11.3.3. Использование sed............................................................................... 293
11.4. Мониторинг с обнаружением вторжений........................................................... 295
11.4.1. Настройка почтового сервера............................................................... 296
11.4.2. Установка Tripwire................................................................................. 296
11.4.3. Конфигурирование Tripwire................................................................... 299
11.4.4. Генерация тестового отчета Tripwire..................................................... 301
Резюме........................................................................................................................ 302
Ключевые понятия............................................................................................ 302
Рекомендации по безопасности......................................................................... 303
Обзор команд.................................................................................................... 303
Самотестирование............................................................................................. 304
Глава 12. Совместное использование данных в частной сети..................................... 306
12.1. Обмен файлами с помощью протокола сетевого доступа
к файловым системам (NFS).............................................................................. 307
12.1.1. Настройка NFS-сервера......................................................................... 308
12.1.2. Настройка клиента............................................................................... 310
12.1.3. Монтирование общего ресурса NFS во время загрузки.......................... 311
12.1.4. Безопасность NFS................................................................................. 313
12.2. Обмен файлами с пользователями Windows с помощью Samba......................... 315
12.2.1. Тестирование вашей конфигурации Samba........................................... 317
12.2.2. Доступ к серверу Samba из Windows..................................................... 318
12.3. Совместное использование файлов с помощью символических ссылок............. 319
Резюме........................................................................................................................ 321
Ключевые термины........................................................................................... 321
Рекомендации по безопасности......................................................................... 321
Обзор команд.................................................................................................... 321
Самотестирование............................................................................................. 322
Глава 13. Устранение проблем производительности системы..................................... 324
13.1. Проблемы с загрузкой процессора.................................................................... 325
13.1.1. Измерение загрузки процессора........................................................... 325
13.1.2. Управление загрузкой процессора........................................................ 326
13.1.3. Создание проблем (симуляция загрузки процессора)............................ 330
13.2. Проблемы с памятью......................................................................................... 330
13.2.1. Оценка состояния памяти..................................................................... 330
13.2.2. Оценка состояния свопа....................................................................... 331
13.3. Проблемы доступности запоминающего устройства.............................................332
13.3.1. Ограничения inode................................................................................ 333
13.3.2. Решение............................................................................................... 335
13.4. Проблемы с перегрузкой сети........................................................................... 335
13.4.1. Измерение полосы пропускания............................................................ 336
13.4.2. Решения............................................................................................... 337
13.4.3. Формирование сетевого трафика с помощью команды tc...................... 338
13.5. Инструменты мониторинга................................................................................ 339
13.5.1. Агрегирование данных мониторинга..................................................... 339
13.5.2. Визуализация ваших данных................................................................. 341
Резюме........................................................................................................................ 342
Ключевые термины........................................................................................... 343
Рекомендации по безопасности......................................................................... 343
Обзор команд.................................................................................................... 343
Самотестирование............................................................................................. 344
Глава 14. Устранение неполадок в сети..................................................................... 346
14.1. Понимание адресации TCP/IP............................................................................ 347
14.1.1. Что такое адресация NAT...................................................................... 348
14.1.2. Работа с адресацией NAT...................................................................... 348
14.2. Установление сетевого подключения................................................................ 351
14.3. Устранение неполадок исходящего соединения................................................. 352
14.3.1. Отслеживание статуса вашей сети........................................................ 353
14.3.2. Назначение IP-адресов......................................................................... 354
14.3.3. Конфигурирование службы DNS........................................................... 358
14.3.4. Обслуживание сети............................................................................... 360
14.4. Устранение неполадок при входящем соединении............................................. 361
14.4.1 Сканирование внутреннего соединения: netstat.................................... 361
14.4.2. Сканирование внешнего соединения: netcat......................................... 362
Резюме........................................................................................................................ 363
Ключевые понятия............................................................................................ 364
Рекомендации по безопасности......................................................................... 364
Обзор команд.................................................................................................... 364
Самотестирование............................................................................................. 365
Глава 15. Устранение неполадок с периферийными устройствами............................. 367
15.1. Идентификация подключенных устройств......................................................... 368
15.2. Управление периферийными устройствами с помощью модулей ядра Linux...... 370
15.2.1. Поиск модулей ядра.............................................................................. 371
15.2.2. Загрузка модулей ядра вручную........................................................... 373
15.3. Ручное управление параметрами ядра во время загрузки................................. 374
15.3.1. Передача параметров во время загрузки.............................................. 374
15.3.2. Передача параметров через файловую систему.................................... 376
15.4. Управление принтерами.................................................................................... 376
15.4.1. Основы lp............................................................................................. 377
15.4.2. Управление принтерами с помощью CUPS............................................. 377
Резюме........................................................................................................................ 379
Ключевые понятия............................................................................................ 380
Рекомендации по безопасности......................................................................... 380
Обзор команд.................................................................................................... 380
Самотестирование............................................................................................. 380
Глава 16. Инструменты DevOps: развертывание серверной среды
с использованием Ansible............................................................................................. 382
16.1. Чем полезна оркестровка развертывания.......................................................... 384
16.2. Ansible: установка и настройка.......................................................................... 386
16.2.1. Настройка беспарольного доступа к хостам.......................................... 386
16.2.2. Организация Ansible-хостов.................................................................. 387
16.2.3. Тестирование подключения.................................................................. 388
16.3. Аутентификация................................................................................................ 389
16.4. Сценарии Ansible playbook................................................................................. 391
16.4.1. Написание простого playbook................................................................ 391
16.4.2. Создание многоуровневых ролевых сценариев playbook....................... 393
16.4.3. Управление паролями в Ansible............................................................. 396
Резюме........................................................................................................................ 397
Ключевые понятия............................................................................................ 397
Рекомендации по безопасности......................................................................... 397
Обзор команд.................................................................................................... 398
Самотестирование............................................................................................. 398
Заключение.............................................................................................................. 400
Что вы узнали.............................................................................................................. 400
Виртуализация............................................................................................................. 400
Связь........................................................................................................................... 401
Шифрование............................................................................................................... 401
Сетевое взаимодействие.............................................................................................. 401
Управление образами.................................................................................................. 401
Системный мониторинг................................................................................................ 402
Что дальше.................................................................................................................. 402
Ресурсы....................................................................................................................... 403
Приложение. Обзор команд по главам...................................................................... 404
Глава 1. Добро пожаловать в Linux.............................................................................. 404
Глава 2. Виртуализация Linux: создание безопасной и простой рабочей среды............ 404
Глава 3. Удаленное подключение: безопасный доступ к машинам по сети................... 405
Глава 4. Управление архивами: создание резервных копий или копирование
целых файловых систем.............................................................................................. 405
Глава 5. Автоматизированное администрирование: настройка автоматического
резервного копирования.............................................................................................. 406
Глава 6. Инструменты для критических ситуаций: создание устройства
для восстановления системы....................................................................................... 406
Глава 7. Веб-серверы: создание сервера MediaWiki...................................................... 407
Глава 8. Совместное использование файлов в сети: создание сервера
для совместного использования файлов Nextcloud....................................................... 407
Глава 9. Защита вашего веб-сервера........................................................................... 408
Глава 10. Защита сетевых соединений: создание VPN или DMZ................................... 408
Глава 11. Мониторинг системы: работа с файлами журналов...................................... 409
Глава 12. Совместное использование данных в частной сети....................................... 409
Глава 13. Устранение проблем производительности системы...................................... 410
Глава 14. Устранение неполадок в сети....................................................................... 410
Глава 15. Устранение неполадок с периферийными устройствами............................... 411
Глава 16. Инструменты DevOps: развертывание серверной среды
с использованием Ansible............................................................................................. 411