Linux Admin — Обзор CentOS
CentOS, уникальный среди дистрибутивов бизнес-класса, остается верным природе с открытым исходным кодом, на которой был основан Linux. Первое ядро Linux было разработано студентом колледжа Хельсинкского университета (Линус Торвальдс) и объединено с утилитами GNU, основанными и продвигаемыми Ричардом Столлманом. CentOS имеет проверенную лицензию с открытым исходным кодом, которая может обеспечить современный деловой мир.
CentOS быстро стала одной из самых продуктивных серверных платформ в мире. Любой администратор Linux при поиске работы обязательно встретит слова: «CentOS Linux Experience Preferred». CentOS, от стартапов до технических титанов Fortune 10 , позиционирует себя среди высших эшелонов серверных операционных систем во всем мире.
Что отличает CentOS от других дистрибутивов Linux, так это отличная комбинация:
-
Лицензирование с открытым исходным кодом
-
Выделенная пользовательская база профессионалов Linux
-
Хорошая аппаратная поддержка
-
Отличная стабильность и надежность
-
Фокус на безопасности и обновлениях
-
Строгое соблюдение стандартов упаковки программного обеспечения, необходимых в корпоративной среде
Лицензирование с открытым исходным кодом
Выделенная пользовательская база профессионалов Linux
Хорошая аппаратная поддержка
Отличная стабильность и надежность
Фокус на безопасности и обновлениях
Строгое соблюдение стандартов упаковки программного обеспечения, необходимых в корпоративной среде
Перед началом уроков мы предполагаем, что читатели имеют базовые знания об основах Linux и администрирования, такие как —
-
Что такое пользователь root?
-
Сила пользователя root
-
Основная концепция групп безопасности и пользователей
-
Опыт использования эмулятора терминала Linux
-
Основные сетевые концепции
-
Фундаментальное понимание интерпретируемых языков программирования (Perl, Python, Ruby)
-
Сетевые протоколы, такие как HTTP, LDAP, FTP, IMAP, SMTP
-
Ядра, составляющие операционную систему компьютера: файловая система, драйверы и ядро
Что такое пользователь root?
Сила пользователя root
Основная концепция групп безопасности и пользователей
Опыт использования эмулятора терминала Linux
Основные сетевые концепции
Фундаментальное понимание интерпретируемых языков программирования (Perl, Python, Ruby)
Сетевые протоколы, такие как HTTP, LDAP, FTP, IMAP, SMTP
Ядра, составляющие операционную систему компьютера: файловая система, драйверы и ядро
Основные команды CentOS Linux
Прежде чем изучать инструменты CentOS Linux Administrator, важно отметить философию командной строки администрирования Linux.
Linux был разработан на основе философии Unix «маленьких, точных инструментов, соединенных вместе для упрощения более крупных задач». Linux в своем корне не имеет больших одноцелевых приложений для одного конкретного использования. Вместо этого, есть сотни базовых утилит, которые в сочетании предлагают большую мощность для эффективного решения больших задач.
Примеры философии Linux
Например, если администратор хочет получить список всех текущих пользователей в системе, следующие цепочки команд можно использовать для получения списка всех пользователей системы. При выполнении команды пользователи в системе перечислены в алфавитном порядке.
[root@centosLocal centos]# cut /etc/passwrd -d":" -f1 | sort abrt adm avahi bin centos chrony colord daemon dbus
Этот список легко экспортировать в текстовый файл с помощью следующей команды.
[root@localhost /]# cut /etc/passwd -d ":" -f1 > system_users.txt [root@localhost /]# cat ./system_users.txt | sort | wc –l 40 [root@localhost /]#
Также возможно сравнить список пользователей с экспортом позже.
[root@centosLocal centos]# cut /etc/passwd -d ":" -f1 > system_users002.txt && cat system_users002.txt | sort | wc -l 41 [root@centosLocal centos]# diff ./system_users.txt ./system_users002.txt evilBackdoor [root@centosLocal centos]#
При таком подходе небольших инструментов, связанных для выполнения больших задач, проще создать сценарий, выполняющий эти команды, чем автоматически отправлять результаты по электронной почте через регулярные промежутки времени.
Основные команды, которыми должен обладать каждый администратор Linux, —
В мире Linux администраторы используют команды фильтрации каждый день для анализа журналов, фильтрации вывода команд и выполнения действий с помощью интерактивных сценариев оболочки. Как уже упоминалось, сила этих команд заключается в их способности изменять друг друга с помощью процесса, называемого конвейером .
Следующая команда показывает, сколько слов начинаются с буквы a из основного пользовательского словаря CentOS.
[root@centosLocal ~]# egrep '^a.*$' /usr/share/dict/words | wc -l 25192 [root@centosLocal ~]#
Linux Admin — Управление файлами / папками
Чтобы представить разрешения, применимые как к каталогам, так и к файлам в CentOS Linux, давайте посмотрим на следующий вывод команды.
[centos@centosLocal etc]$ ls -ld /etc/yum* drwxr-xr-x. 6 root root 100 Dec 5 06:59 /etc/yum -rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d
Примечание. Вы увидите три основных типа объектов:
-
«-« — тире для простого файла
-
«д» — для справочника
-
«л» — для символической ссылки
«-« — тире для простого файла
«д» — для справочника
«л» — для символической ссылки
Мы сосредоточимся на трех блоках вывода для каждого каталога и файла —
- drwxr-xr-x: root: root
- -rw-r — r—: root: root
- drwxr-xr-x: root: root
Теперь давайте разберемся, чтобы лучше понять эти строки —
d | Означает, что тип объекта — это каталог |
RWX | Указывает разрешения каталога, примененные к владельцу |
гх | Указывает разрешения каталога, примененные к группе |
гх | Указывает права доступа к каталогу, применяемые к миру |
корень | Первый экземпляр указывает на владельца каталога |
корень | Второй экземпляр указывает группу, к которой применяются разрешения группы |
Важно понимать разницу между владельцем , группой и миром . Непонимание этого может иметь серьезные последствия для серверов, на которых размещаются службы в Интернете.
Прежде чем привести пример из реальной жизни, давайте сначала разберемся с разрешениями, которые применяются к каталогам и файлам .
Пожалуйста, взгляните на следующую таблицу, затем продолжите с инструкцией.
восьмеричный | символичный | Химическая завивка | каталог |
---|---|---|---|
1 | Икс | казнить | Войдите в каталог и получите доступ к файлам |
2 | вес | Написать | Удалить или изменить файлы в каталоге |
4 | р | Читать | Список файлов в каталоге |
Примечание. Когда файлы должны быть доступны для чтения в каталоге, обычно применяются разрешения на чтение и выполнение . В противном случае пользователи будут испытывать трудности при работе с файлами. Если оставить запись отключенной, файлы не смогут быть переименованы, удалены, скопированы или изменены разрешения.
Применение разрешений к каталогам и файлам
При применении разрешений необходимо понимать две концепции:
- Символические разрешения
- Восьмеричные разрешения
По сути, это одинаковые, но разные способы обращения к файлам и их назначения. Для краткого руководства, пожалуйста, изучите и обратитесь к следующей таблице —
Читать | Написать | казнить | |
---|---|---|---|
восьмеричный | 4 | 2 | 1 |
символичный | р | вес | Икс |
При назначении разрешений с использованием восьмеричного метода используйте 3-байтовое число, например: 760. Число 760 переводится в: Owner: rwx; Группа: rw; Другое (или мир) нет разрешений.
Другой сценарий: 733 будет переводить на: Владелец: rwx; Группа: WX; Другое: WX.
Есть один недостаток разрешений при использовании метода Octal. Существующие наборы разрешений не могут быть изменены. Можно только переназначить весь набор разрешений объекта.
Теперь вы можете задаться вопросом, что плохого в том, чтобы всегда переназначать разрешения? Представьте себе большую структуру каталогов, например / var / www / на рабочем веб-сервере. Мы хотим рекурсивно убрать бит w или write во всех каталогах для Other. Таким образом, заставляя его активно добавлять только тогда, когда это необходимо для мер безопасности. Если мы переназначим весь набор разрешений, мы уберем все другие пользовательские разрешения, назначенные каждому подкаталогу.
Следовательно, это вызовет проблемы как у администратора, так и у пользователя системы. В какой-то момент человеку (или лицам) потребуется переназначить все пользовательские разрешения, которые были стерты, путем повторного назначения всего набора разрешений для каждого каталога и объекта.
В этом случае мы хотели бы использовать символический метод для изменения разрешений —
chmod -R o-w /var/www/
Приведенная выше команда не будет «перезаписывать разрешения», а будет изменять текущие наборы разрешений. Так что привыкните использовать лучшие практики
- Восьмеричное только для назначения разрешений
- Символично для изменения наборов разрешений
Важно, чтобы администратор CentOS обладал как октальными, так и символическими разрешениями, поскольку они важны для целостности данных и всей операционной системы. Если разрешения неверны, конечным результатом будут как конфиденциальные данные, так и вся операционная система будет взломана.
После этого давайте рассмотрим несколько команд для изменения разрешений и владельца / членов объекта —
- CHMOD
- Чаун
- команда chgrp
- Umask
chmod: изменение битов прав доступа к файлу
команда | действие |
---|---|
-с | Как подробный, но будет только сообщать о внесенных изменениях |
-v | Подробно, выводит диагностику для каждого сделанного запроса |
-Р | Рекурсивно применяет операцию к файлам и каталогам |
chmod позволит нам изменять права доступа к каталогам и файлам, используя восьмеричные или символические наборы разрешений. Мы будем использовать это для изменения нашего назначения и загрузки каталогов.
chown: изменение владельца файла и группы
команда | действие |
---|---|
-с | Как подробный, но будет только сообщать о внесенных изменениях |
-v | Подробно, выводит диагностику для каждого сделанного запроса |
-Р | Рекурсивно применяет операцию к файлам и каталогам |
chown может изменять как владельца пользователя, так и группу объектов. Однако, если нет необходимости изменять оба одновременно, обычно используется chgrp для групп.
chgrp: изменить групповое владение файлом или каталогом
команда | действие |
---|---|
-с | Вроде многословно, но сообщу только об изменениях |
-v | Подробно, выводит диагностику для каждого сделанного запроса |
-Р | Рекурсивно применяет операции над файлами и каталогами |
chgrp изменит владельца группы на указанного.
Практика реального мира
Давайте изменим все назначения подкаталогов в / var / www / Students /, поэтому группа-владелец — это группа студентов . Затем назначьте корень студентов в группу профессоров. Позже сделайте доктора Терри Томаса владельцем каталога учеников , поскольку ему поручено руководить всей академией информатики в школе.
Как мы видим, при создании каталог остается довольно сырым.
[root@centosLocal ~]# ls -ld /var/www/students/ drwxr-xr-x. 4 root root 40 Jan 9 22:03 /var/www/students/ [root@centosLocal ~]# ls -l /var/www/students/ total 0 drwxr-xr-x. 2 root root 6 Jan 9 22:03 assignments drwxr-xr-x. 2 root root 6 Jan 9 22:03 uploads [root@centosLocal ~]#
Как администраторы, мы никогда не хотим никому передавать свои учетные данные root . Но в то же время нам необходимо предоставить пользователям возможность выполнять свою работу. Итак, давайте позволим доктору Терри Томасу лучше контролировать структуру файлов и ограничивать возможности учащихся.
[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/ [root@centosLocal ~]# ls -ld /var/www/students/ drwxr-xr-x. 4 drterryt professors 40 Jan 9 22:03 /var/www/students/ [root@centosLocal ~]# ls -ls /var/www/students/ total 0 0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 assignments 0 drwxr-xr-x. 2 drterryt professors 6 Jan 9 22:03 uploads [root@centosLocal ~]#
Теперь у каждого каталога и подкаталога есть владелец drterryt, а группа-владелец — профессора . Поскольку каталог заданий предназначен для того, чтобы ученики могли выполнять назначенную работу, давайте уберем возможность перечислять и изменять файлы из группы учеников .
[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod 736 /var/www/students/assignments/ [root@centosLocal assignments]# ls -ld /var/www/students/assignments/ drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/ [root@centosLocal assignments]#
Студенты могут копировать задания в каталог заданий . Но они не могут перечислять содержимое каталога, копировать текущие файлы или изменять файлы в каталоге назначений . Таким образом, это просто позволяет студентам представить выполненные задания. Файловая система CentOS предоставит отметку даты, когда назначения были включены.
Как владелец каталога назначений —
[drterryt@centosLocal assignments]$ whoami drterryt [drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment drwx-wxrw-. 2 drterryt students 44 Jan 9 23:14 /var/www/students/assignments/ [drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ total 4 -rw-r--r--. 1 adama students 0 Jan 9 23:14 myassign.txt -rw-r--r--. 1 tammyr students 16 Jan 9 23:18 terryt.txt [drterryt@centosLocal assignments]$
Мы видим, что владелец каталога может перечислять файлы, а также изменять и удалять файлы.
Команда umask: предоставляет режимы по умолчанию для прав доступа к файлам и каталогам при их создании
umask — важная команда, которая предоставляет режимы по умолчанию для прав доступа к файлам и каталогам по мере их создания.
Разрешения Umask используют унарную отрицательную логику.
разрешение | операция |
---|---|
0 | Читать, писать, выполнять |
1 | Прочитайте и напишите |
2 | Читать и выполнить |
3 | Только для чтения |
4 | Читать и выполнить |
5 | Только писать |
6 | Только выполнить |
7 | Нет разрешений |
[adama@centosLocal umask_tests]$ ls -l ./ -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt [adama@centosLocal umask_tests]$ whoami adama [adama@centosLocal umask_tests]$ umask 0022 [adama@centosLocal umask_tests]$
Теперь давайте изменим umask для нашего текущего пользователя и создадим новый файл и каталог.
[adama@centosLocal umask_tests]$ umask 077 [adama@centosLocal umask_tests]$ touch mynewfile.txt [adama@centosLocal umask_tests]$ mkdir myNewDir [adama@centosLocal umask_tests]$ ls -l total 0 -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt drwx------. 2 adama students 6 Jan 10 00:35 myNewDir -rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt
Как мы видим, вновь созданные файлы являются более строгими, чем раньше.
Umask для пользователей должен быть изменен в —
- / И т.д. / профиль
- ~ / Bashrc
[root@centosLocal centos]# su adama [adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$
Как правило, umask по умолчанию в CentOS будет в порядке. Когда у нас возникают проблемы со значением по умолчанию 0022 , обычно когда разные отделы, принадлежащие к разным группам, должны сотрудничать в проектах.
Именно здесь появляется роль системного администратора, чтобы сбалансировать операции и дизайн операционной системы CentOS.
Linux Admin — Управление пользователями
При обсуждении управления пользователями у нас есть три важных условия для понимания —
- пользователей
- группы
- права доступа
Мы уже обсудили подробные разрешения применительно к файлам и папкам. В этой главе давайте поговорим о пользователях и группах.
Пользователи CentOS
В CentOS есть два типа учетных записей —
-
Системные учетные записи — используется для демона или другого программного обеспечения.
-
Интерактивные учетные записи — обычно назначаются пользователю для доступа к системным ресурсам.
Системные учетные записи — используется для демона или другого программного обеспечения.
Интерактивные учетные записи — обычно назначаются пользователю для доступа к системным ресурсам.
Основное различие между двумя типами пользователей —
-
Системные учетные записи используются демонами для доступа к файлам и каталогам. Обычно они запрещены при интерактивном входе в систему через оболочку или физическую консольную учетную запись.
-
Интерактивные учетные записи используются конечными пользователями для доступа к вычислительным ресурсам с помощью входа в оболочку или с физической консоли.
Системные учетные записи используются демонами для доступа к файлам и каталогам. Обычно они запрещены при интерактивном входе в систему через оболочку или физическую консольную учетную запись.
Интерактивные учетные записи используются конечными пользователями для доступа к вычислительным ресурсам с помощью входа в оболочку или с физической консоли.
С этим базовым пониманием пользователей, давайте теперь создадим нового пользователя для Боба Джонса в бухгалтерии. Новый пользователь добавляется с помощью команды adduser .
Ниже приведены некоторые общие переключатели adduser.
переключатель | действие |
---|---|
-с | Добавляет комментарий к учетной записи пользователя |
-m | Создает домашний каталог пользователя в расположении по умолчанию, если его не существует |
-г | Группа по умолчанию для назначения пользователя |
-n | Не создает личную группу для пользователя, обычно группу с именем пользователя |
-М | Не создает домашний каталог |
-s | Оболочка по умолчанию, отличная от / bin / bash |
-u | Определяет UID (иначе назначается системой) |
-Г | Дополнительные группы для назначения пользователя |
При создании нового пользователя используйте ключи -c, -m, -g, -n следующим образом:
[root@localhost Downloads]# useradd -c "Bob Jones Accounting Dept Manager" -m -g accounting -n bjones
Теперь давайте посмотрим, был ли создан наш новый пользователь —
[root@localhost Downloads]# id bjones (bjones) gid = 1001(accounting) groups = 1001(accounting) [root@localhost Downloads]# grep bjones /etc/passwd bjones:x:1001:1001:Bob Jones Accounting Dept Manager:/home/bjones:/bin/bash [root@localhost Downloads]#
Теперь нам нужно включить новую учетную запись с помощью команды passwd —
[root@localhost Downloads]# passwd bjones Changing password for user bjones. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@localhost Downloads]#
Учетная запись пользователя не включена, что позволяет пользователю войти в систему.
Отключение учетных записей пользователей
Есть несколько способов отключить учетные записи в системе. Они варьируются от редактирования файла / etc / passwd вручную. Или даже с помощью команды passwd с ключом -l . Оба эти метода имеют один большой недостаток: если у пользователя есть доступ ssh и он использует ключ RSA для аутентификации, он все равно может войти в систему, используя этот метод.
Теперь давайте воспользуемся командой chage , изменив срок действия пароля на предыдущую. Кроме того, может быть полезно сделать отметку в учетной записи о том, почему мы ее отключили.
[root@localhost Downloads]# chage -E 2005-10-01 bjones [root@localhost Downloads]# usermod -c "Disabled Account while Bob out of the country for five months" bjones [root@localhost Downloads]# grep bjones /etc/passwd bjones:x:1001:1001:Disabled Account while Bob out of the country for four months:/home/bjones:/bin/bash [root@localhost Downloads]#
Управление группами
Управление группами в Linux позволяет администратору объединять пользователей в контейнеры, применяя наборы разрешений, применимые ко всем членам группы. Например, всем пользователям в бухгалтерии может потребоваться доступ к одним и тем же файлам. Таким образом, мы составляем учетную группу, добавляя учет пользователей.
По большей части все, что требует специальных разрешений, должно быть сделано в группе. Такой подход обычно экономит время по сравнению с применением специальных разрешений только для одного пользователя. Например, Салли отвечает за отчеты и только Салли нуждается в доступе к определенным файлам для отчетов. Однако, что, если Салли однажды заболеет, а Боб сделает отчеты? Или потребность в отчетности растет? Когда группа создана, администратор должен сделать это только один раз. Добавление пользователей применяется при необходимости изменения или расширения.
Ниже приведены некоторые общие команды, используемые для управления группами.
- команда chgrp
- GroupAdd
- группы
- usermod
chgrp — изменяет владение группой для файла или каталога.
Давайте создадим каталог для людей в группе учета для хранения файлов и создания каталогов для файлов.
[root@localhost Downloads]# mkdir /home/accounting [root@localhost Downloads]# ls -ld /home/accounting drwxr-xr-x. 2 root root 6 Jan 13 10:18 /home/accounting [root@localhost Downloads]#
Далее давайте передадим групповое владение учетной группе.
[root@localhost Downloads]# chgrp -v accounting /home/accounting/ changed group of ‘/home/accounting/’ from root to accounting [root@localhost Downloads]# ls -ld /home/accounting/ drwxr-xr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/ [root@localhost Downloads]#
Теперь все в группе учета имеют права на чтение и выполнение для / home / accounting . Им также понадобятся разрешения на запись.
[root@localhost Downloads]# chmod g+w /home/accounting/ [root@localhost Downloads]# ls -ld /home/accounting/ drwxrwxr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/ [root@localhost Downloads]#
Поскольку учетная группа может иметь дело с конфиденциальными документами, нам необходимо применить некоторые ограничительные разрешения для других или других стран .
[root@localhost Downloads]# chmod o-rx /home/accounting/ [root@localhost Downloads]# ls -ld /home/accounting/ drwxrwx---. 2 root accounting 6 Jan 13 10:18 /home/accounting/ [root@localhost Downloads]#
groupadd — используется для создания новой группы.
переключатель | действие |
---|---|
-г | Определяет GID для группы |
-К | Переопределяет спецификации для GID в /etc/login.defs |
-о | Позволяет переопределить неуникальное запрещение идентификатора группы |
-п | Групповой пароль, позволяющий пользователям активировать себя |
Давайте создадим новую группу под названием секрет. Мы добавим пароль в группу, что позволит пользователям добавлять себя с известным паролем.
[root@localhost]# groupadd secret [root@localhost]# gpasswd secret Changing the password for group secret New Password: Re-enter new password: [root@localhost]# exit exit [centos@localhost ~]$ newgrp secret Password: [centos@localhost ~]$ groups secret wheel rdc [centos@localhost ~]$
На практике пароли для групп используются не часто. Вторичные группы адекватны, и обмен паролями между другими пользователями не является хорошей практикой безопасности.
Команда groups используется, чтобы показать, к какой группе принадлежит пользователь. Мы будем использовать это после внесения некоторых изменений в нашего текущего пользователя.
usermod используется для обновления атрибутов аккаунта.
Ниже приведены общие переключатели usermod .
переключатель | действие |
---|---|
-a | Добавляет, добавляет пользователя в дополнительные группы, только с опцией -G |
-с | Комментарий, обновите значение комментария пользователя |
-d | Домашний каталог, обновляет домашний каталог пользователя |
-Г | Группы, добавляет или удаляет вторичные группы пользователей |
-г | Группа, основная группа пользователя по умолчанию |
[root@localhost]# groups centos centos : accounting secret [root@localhost]# [root@localhost]# usermod -a -G wheel centos [root@localhost]# groups centos centos : accounting wheel secret [root@localhost]#
Linux Admin — Управление квотами
Дисковые квоты CentOS могут быть включены как; оповещение системного администратора и отказ в дальнейшем доступе к дисковому хранилищу для пользователя до превышения емкости диска. Когда диск заполнен, в зависимости от того, что находится на диске, вся система может остановиться, пока не восстановится.
Включение управления квотами в CentOS Linux в основном состоит из 4 шагов:
-
Шаг 1 — Включите управление квотами для групп и пользователей в / etc / fstab.
-
Шаг 2 — Перемонтируйте файловую систему.
-
Шаг 3 — Создайте базу данных квот и сгенерируйте таблицу использования диска.
-
Шаг 4 — Назначьте политику квот.
Шаг 1 — Включите управление квотами для групп и пользователей в / etc / fstab.
Шаг 2 — Перемонтируйте файловую систему.
Шаг 3 — Создайте базу данных квот и сгенерируйте таблицу использования диска.
Шаг 4 — Назначьте политику квот.
Включить управление квотами в / etc / fstab
Во-первых, мы хотим сделать резервную копию нашей / etc / fstab filen —
[root@centosLocal centos]# cp -r /etc/fstab ./
Теперь у нас есть копия нашего известного рабочего / etc / fstab в текущем рабочем каталоге.
# # /etc/fstab # Created by anaconda on Sat Dec 17 02:44:51 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/cl-root / xfs defaults 0 0 UUID = 4b9a40bc-9480-4 /boot xfs defaults 0 0 /dev/mapper/cl-home /home xfs defaults,usrquota,grpquota 0 0 /dev/mapper/cl-swap swap swap defaults 0 0
Мы внесли следующие изменения в раздел параметров / etc / fstab для тома или метки, к которой должны применяться квоты для пользователей и групп.
- usrquota
- grpquota
Как видите, мы используем файловую систему xfs . При использовании xfs необходимо выполнять дополнительные шаги вручную. / home находится на том же диске, что и /. Дальнейшее исследование показывает / установлено для noquota , которая является опцией монтирования на уровне ядра. Мы должны заново настроить параметры загрузки ядра.
root@localhost rdc]# mount | grep ' / ' /dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) [root@localhost rdc]#
Переконфигурирование параметров загрузки ядра для файловых систем XFS
Этот шаг необходим только при двух условиях:
- Когда диск / раздел, на котором мы включаем квоты, использует файловую систему xfs
- Когда ядро передает параметр noquota в / etc / fstab во время загрузки
Шаг 1 — Сделайте резервную копию / etc / default / grub.
cp /etc/default/grub ~/
Шаг 2 — Изменить / etc / default / grub .
Вот файл по умолчанию.
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true"
Мы хотим изменить следующую строку —
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
в
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv =cl/swap rhgb quiet rootflags=usrquota,grpquota"
Примечание. Важно, чтобы мы скопировали эти изменения дословно. После того, как мы переконфигурируем grub.cfg, наша система не сможет загрузиться, если в конфигурации были допущены какие-либо ошибки. Пожалуйста, попробуйте эту часть руководства по непроизводственной системе.
Шаг 3 — Сделайте резервную копию вашего рабочего grub.cfg
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
Сделайте новый grub.cfg
[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img done [root@localhost rdc]#
перезагружать
[root@localhost rdc]#reboot
Если все изменения были точными, у нас не было бы возможности добавить квоты в файловую систему xfs .
[rdc@localhost ~]$ mount | grep ' / ' /dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota) [rdc@localhost ~]$
Мы передали параметры usrquota и grpquota через grub.
Теперь, снова отредактируйте / etc / fstab, чтобы включить / since / home на тот же физический диск.
/dev/mapper/cl-root/xfs defaults,usrquota,grpquota 0 0
Теперь давайте включим базы данных квот.
[root@localhost rdc]# quotacheck -acfvugM
Убедитесь, что квоты включены.
[root@localhost rdc]# quotaon -ap group quota on / (/dev/mapper/cl-root) is on user quota on / (/dev/mapper/cl-root) is on group quota on /home (/dev/mapper/cl-home) is on user quota on /home (/dev/mapper/cl-home) is on [root@localhost rdc]#
Перемонтировать файловую систему
Если раздел или диск отделены от активно загружаемого раздела, мы можем перемонтировать их без перезагрузки. Если квота была настроена на диске / разделе, загруженном в корневой каталог /, нам может потребоваться перезагрузить операционную систему. Для принудительного перемонтирования и применения изменений необходимость перемонтирования файловой системы может варьироваться.
[rdc@localhost ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/cl-root 22447404 4081860 18365544 19% / devtmpfs 903448 0 903448 0% /dev tmpfs 919308 100 919208 1% /dev/shm tmpfs 919308 9180 910128 1% /run tmpfs 919308 0 919308 0% /sys/fs/cgroup /dev/sda2 1268736 176612 1092124 14% /boot /dev/mapper/cl-var 4872192 158024 4714168 4% /var /dev/mapper/cl-home 18475008 37284 18437724 1% /home tmpfs 183864 8 183856 1% /run/user/1000 [rdc@localhost ~]$
Как мы видим, тома LVM используются. Так что просто перезагрузиться. Это перемонтирует / home и загрузит изменения конфигурации / etc / fstab в активную конфигурацию.
Создать файлы базы данных квот
CentOS теперь может работать с дисковыми квотами в / home. Чтобы включить полную поддержку квот, мы должны запустить команду quotacheck .
quotacheck создаст два файла —
- aquota.user
- aquota.group
Они используются для хранения информации о квоте для дисков / разделов с квотой.
Ниже приведены общие переключатели квотчек.
переключатель | действие |
---|---|
-u | Проверяет пользовательские квоты |
-г | Проверки групповых квот |
-с | Квоты должны быть включены для каждой файловой системы с включенными квотами |
-v | Отображает подробный вывод |
Добавить ограничения квоты на пользователя
Для этого мы будем использовать команду edquota, за которой следует имя пользователя —
[root@localhost rdc]# edquota centos Disk quotas for user centos (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/mapper/cl-root 12 0 0 13 0 0 /dev/mapper/cl-home 4084 0 0 140 0 0
Давайте посмотрим на каждый столбец.
-
Файловая система — это квоты файловой системы для пользователя, применяемые к
-
blocks — Сколько блоков пользователь использует в каждой файловой системе.
-
soft — установить блоки для мягкого ограничения. Мягкий лимит позволяет пользователю переносить квоты на данный период времени
-
hard — установить блоки для жесткого ограничения. Жесткий лимит — общая допустимая квота
-
inodes — сколько inode использует пользователь
-
soft — мягкий предел inode
-
hard — жесткий предел inode
Файловая система — это квоты файловой системы для пользователя, применяемые к
blocks — Сколько блоков пользователь использует в каждой файловой системе.
soft — установить блоки для мягкого ограничения. Мягкий лимит позволяет пользователю переносить квоты на данный период времени
hard — установить блоки для жесткого ограничения. Жесткий лимит — общая допустимая квота
inodes — сколько inode использует пользователь
soft — мягкий предел inode
hard — жесткий предел inode
Чтобы проверить нашу текущую квоту как пользователь —
[centos@localhost ~]$ quota Disk quotas for user centos (uid 1000): Filesystem blocks quota limit grace files quota limit grace /dev/mapper/cl-home 6052604 56123456 61234568 475 0 0 [centos@localhost ~]$
Ниже приведена ошибка, выдаваемая пользователю, когда предел жесткой квоты превышен.
[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/ cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE- 1611.iso.part’: Disk quota exceeded [centos@localhost Downloads]$
Как мы видим, мы находимся в пределах дисковой квоты этого пользователя. Давайте установим мягкое предупреждение о пределе. Таким образом, пользователь получит предварительное уведомление до истечения срока действия квоты. Исходя из своего опыта, вы получите жалобы конечных пользователей, когда они приступят к работе, и вам потребуется 45 минут для очистки файлов, чтобы фактически приступить к работе.
Как администратор, мы можем проверить использование квоты с помощью команды repquota .
[root@localhost Downloads]# repquota /home Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------------------------- root -- 0 0 0 3 0 0 centos -+ 6189824 56123456 61234568 541 520 540 6days [root@localhost Downloads]#
Как мы видим, пользовательские centos превысили свою квоту жесткого блока и больше не могут использовать больше дискового пространства в / home .
+ обозначает жесткую квоту, превышенную в файловой системе.
При планировании квот необходимо немного подсчитать. Администратор должен знать: сколько пользователей в системе? Сколько свободного места нужно выделить среди пользователей / групп? Сколько байтов составляет блок в файловой системе?
Определите квоты в единицах блоков, относящихся к свободному пространству на диске. Рекомендуется оставить «безопасный» буфер свободного пространства в файловой системе, который останется в худшем случае: все квоты одновременно превышаются. Это особенно относится к разделу, который используется системой для записи логов.
Запуск и остановка системных сервисов
systemd — это новый способ запуска сервисов в Linux. systemd имеет превосходный sysvinit . systemd ускоряет загрузку Linux и теперь является стандартным способом управления службами Linux. Несмотря на стабильность, systemd все еще развивается.
systemd как система инициализации, используется для управления как службами, так и демонами, которым необходимо изменить состояние после загрузки ядра Linux. При изменении состояния применяется запуск, остановка, перезагрузка и настройка состояния сервиса.
Сначала давайте проверим версию systemd, которая в данный момент работает на нашем сервере.
[centos@localhost ~]$ systemctl --version systemd 219 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN [centos@localhost ~]$
Начиная с версии 7 CentOS, полностью обновленной на момент написания этой статьи systemd версия 219 является текущей стабильной версией.
Мы также можем проанализировать время последней загрузки сервера с помощью systemd-analysis
[centos@localhost ~]$ systemd-analyze Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s [centos@localhost ~]$
Когда время загрузки системы медленнее, мы можем использовать команду systemd-analysis blame .
[centos@localhost ~]$ systemd-analyze blame 40.882s kdump.service 5.775s NetworkManager-wait-online.service 4.701s plymouth-quit-wait.service 3.586s postfix.service 3.121s systemd-udev-settle.service 2.649s tuned.service 1.848s libvirtd.service 1.437s network.service 875ms packagekit.service 855ms gdm.service 514ms firewalld.service 438ms rsyslog.service 436ms udisks2.service 398ms sshd.service 360ms boot.mount 336ms polkit.service 321ms accounts-daemon.service
При работе с systemd важно понимать концепцию модулей . Единицы — это ресурсы, которые systemd знает, как интерпретировать. Единицы подразделяются на 12 типов следующим образом:
- .оказание услуг
- .разъем
- .device
- .mount
- .automount
- .своп
- .TARGET
- .дорожка
- .timer
- .snapshot
- .ломтик
- .объем
По большей части мы будем работать с .service в качестве целевых объектов. Рекомендуется провести дальнейшие исследования по другим типам. Как только единицы .service будут применяться для запуска и остановки системных сервисов.
Каждая единица определяется в файле, расположенном в —
-
/ lib / systemd / system — файлы базовых модулей
-
/ etc / systemd / system — измененные файлы модулей запускаются во время выполнения
/ lib / systemd / system — файлы базовых модулей
/ etc / systemd / system — измененные файлы модулей запускаются во время выполнения
Управление сервисами с помощью systemctl
Для работы с systemd нам нужно очень хорошо ознакомиться с командой systemctl . Ниже приведены наиболее распространенные ключи командной строки для systemctl .
переключатель | действие |
---|---|
-t | Разделенные запятыми значения типов единиц, таких как service или socket |
-a | Показывает все загруженные единицы |
—государство | Показывает все юниты в определенном состоянии: загрузка, суб, активная, неактивная и т. Д. |
-ЧАС | Выполняет операцию удаленно. Укажите имя хоста или хост и пользователя через @. |
Основное использование systemctl
systemctl [operation] example: systemctl --state [servicename.service]
Для быстрого ознакомления со всеми сервисами, работающими на нашей коробке.
[root@localhost rdc]# systemctl -t service UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.service loaded active running ABRT Xorg log watcher abrtd.service loaded active running ABRT Automated Bug Reporting Tool accounts-daemon.service loaded active running Accounts Service alsa-state.service loaded active running Manage Sound Card State (restore and store) atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack blk-availability.service loaded active exited Availability of block devices bluetooth.service loaded active running Bluetooth service chronyd.service loaded active running NTP client/server
Остановка службы
Давайте сначала остановим службу bluetooth.
[root@localhost]# systemctl stop bluetooth [root@localhost]# systemctl --all -t service | grep bluetooth bluetooth.service loaded inactive dead Bluetooth service [root@localhost]#
Как мы видим, служба bluetooth теперь неактивна.
Чтобы снова запустить службу Bluetooth.
[root@localhost]# systemctl start bluetooth [root@localhost]# systemctl --all -t service | grep bluetooth bluetooth.service loaded active running Bluetooth service [root@localhost]#
Примечание. Мы не указали bluetooth.service, поскольку подразумевается .service . Рекомендуется думать о типе устройства, добавляющем сервис, с которым мы имеем дело. Итак, с этого момента мы будем использовать расширение .service, чтобы уточнить, что мы работаем над операциями подразделения обслуживания.
Основные действия, которые могут быть выполнены с сервисом:
Начните | Запускает сервис |
Стоп | Останавливает службу |
перезагружать | Перезагрузка активной конфигурации службы без остановки (например, kill -HUP в system v init) |
Запустить снова | Запускает, затем останавливает службу |
включить | Запускает сервис во время загрузки |
запрещать | Останавливает автоматический запуск службы во время выполнения |
Вышеуказанные действия в основном используются в следующих сценариях —
Начните | Чтобы вызвать сервис, который был переведен в остановленное состояние. |
Стоп | Временно отключить службу (например, когда необходимо остановить службу для доступа к файлам, заблокированным службой, как при обновлении службы) |
перезагружать | Когда файл конфигурации был отредактирован, и мы хотим применить новые изменения, не останавливая службу. |
Запустить снова | В том же сценарии, что и перезагрузка, но служба не поддерживает перезагрузку . |
включить | Когда мы хотим, чтобы отключенный сервис запускался во время загрузки. |
запрещать | Используется в основном, когда необходимо остановить службу, но она запускается при загрузке. |
Чтобы проверить статус услуги —
[root@localhost]# systemctl status network.service network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago Docs: man:systemd-sysv-generator(8) Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS) localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... localhost.localdomain network[923]: Bringing up loopback interface: [ OK ] localhost.localdomain systemd[1]: Started LSB: Bring up/down networking. [root@localhost]#
Покажите нам текущее состояние сетевого сервиса. Если мы хотим увидеть все сервисы, связанные с сетью, мы можем использовать —
[root@localhost]# systemctl --all -t service | grep -i network network.service loaded active exited LSB: Bring up/ NetworkManager-wait-online.service loaded active exited Network Manager NetworkManager.service loaded active running Network Manager ntpd.service loaded inactive dead Network Time rhel-import-state.service loaded active exited Import network [root@localhost]#
Для тех, кто знаком с методом управления службами sysinit , важно перейти на systemd . systemd — это новый способ запуска и остановки сервисов демонов в Linux.
Linux Admin — Ресурс Mgmt с systemctl
systemctl — это утилита, используемая для управления systemd. systemctl предоставляет администраторам CentOS возможность выполнять множество операций над systemd, включая:
- Настроить системные модули
- Получить статус systemd untis
- Запуск и остановка сервисов
- Включение / отключение системных служб для среды выполнения и т. Д.
Синтаксис команды для systemctl довольно прост , но может сочетаться с переключателями и опциями. Мы представим наиболее важные функции systemctl, необходимые для администрирования CentOS Linux.
Basic systemctl syntax: systemctl [OPTIONS] COMMAND [NAME]
Ниже приведены общие команды, используемые с systemctl —
- Начните
- стоп
- запустить снова
- перезагружать
- статус
- это-активные
- Список-единицы
- включить
- запрещать
- кошка
- шоу
Мы уже обсуждали запуск , остановку , перезагрузку , перезапуск , включение и отключение с помощью systemctl. Итак, давайте рассмотрим остальные часто используемые команды.
статус
В самом простом виде команда status может использоваться для просмотра состояния системы в целом:
[root@localhost rdc]# systemctl status ● localhost.localdomain State: running Jobs: 0 queued Failed: 0 units Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago CGroup: / ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 ├─user.slice │ └─user-1002.slice │ └─session-1.scope │ ├─2869 gdm-session-worker [pam/gdm-password] │ ├─2881 /usr/bin/gnome-keyring-daemon --daemonize --login │ ├─2888 gnome-session --session gnome-classic │ ├─2895 dbus-launch --sh-syntax --exit-with-session
Вышеуказанный вывод был сжат. В реальном состоянии systemctl выведет около 100 строк статусов процесса обработки.
Допустим, мы хотим проверить состояние нашего сервиса брандмауэра —
[root@localhost rdc]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago Docs: man:firewalld(1) Main PID: 825 (firewalld) CGroup: /system.slice/firewalld.service └─825 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Как вы видите, наш сервис брандмауэра в настоящее время активен и работает более 4 часов.
Список-единицы
Команда list-units позволяет нам перечислить все единицы определенного типа. Давайте проверим наличие сокетов, управляемых systemd —
[root@localhost]# systemctl list-units --type=socket UNIT LOAD ACTIVE SUB DESCRIPTION avahi-daemon.socket loaded active running Avahi mDNS/DNS-SD Stack Activation Socket cups.socket loaded active running CUPS Printing Service Sockets dbus.socket loaded active running D-Bus System Message Bus Socket dm-event.socket loaded active listening Device-mapper event daemon FIFOs iscsid.socket loaded active listening Open-iSCSI iscsid Socket iscsiuio.socket loaded active listening Open-iSCSI iscsiuio Socket lvm2-lvmetad.socket loaded active running LVM2 metadata daemon socket lvm2-lvmpolld.socket loaded active listening LVM2 poll daemon socket rpcbind.socket loaded active listening RPCbind Server Activation Socket systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe systemd-journald.socket loaded active running Journal Socket systemd-shutdownd.socket loaded active listening Delayed Shutdown Socket systemd-udevd-control.socket loaded active running udev Control Socket systemd-udevd-kernel.socket loaded active running udev Kernel Socket virtlockd.socket loaded active listening Virtual machine lock manager socket virtlogd.socket loaded active listening Virtual machine log manager socket
Теперь давайте проверим текущие запущенные сервисы —
[root@localhost rdc]# systemctl list-units --type=service UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.service loaded active running ABRT Xorg log watcher abrtd.service loaded active running ABRT Automated Bug Reporting Tool accounts-daemon.service loaded active running Accounts Service alsa-state.service loaded active running Manage Sound Card State (restore and store) atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service
это-активные
Команда is-active является примером команд systemctl, предназначенных для возврата информации о состоянии устройства.
[root@localhost rdc]# systemctl is-active ksm.service active
кошка
кошка — одна из редко используемых команд. Вместо использования cat в оболочке и ввода пути к файлу модуля просто используйте systemctl cat .
[root@localhost]# systemctl cat firewalld # /usr/lib/systemd/system/firewalld.service [Unit] Description=firewalld - dynamic firewall daemon Before=network.target Before=libvirtd.service Before = NetworkManager.service After=dbus.service After=polkit.service Conflicts=iptables.service ip6tables.service ebtables.service ipset.service Documentation=man:firewalld(1) [Service] EnvironmentFile = -/etc/sysconfig/firewalld ExecStart = /usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS ExecReload = /bin/kill -HUP $MAINPID # supress to log debug and error output also to /var/log/messages StandardOutput = null StandardError = null Type = dbus BusName = org.fedoraproject.FirewallD1 [Install] WantedBy = basic.target Alias = dbus-org.fedoraproject.FirewallD1.service [root@localhost]#
Теперь, когда мы более подробно изучили как systemd, так и systemctl , давайте использовать их для управления ресурсами в cgroups или контрольных группах .
Linux Admin — ресурсный Mgmt с crgoups
cgroups или контрольные группы — это функция ядра Linux, которая позволяет администратору распределять или ограничивать системные ресурсы для служб, а также группировать.
Чтобы вывести список активных групп управления, мы можем использовать следующую команду ps —
[root@localhost]# ps xawf -eo pid,user,cgroup,args 8362 root - \_ [kworker/1:2] 1 root - /usr/lib/systemd/systemd --switched- root --system -- deserialize 21 507 root 7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-journald 527 root 7:cpuacct,cpu:/system.slice /usr/sbin/lvmetad -f 540 root 7:cpuacct,cpu:/system.slice /usr/lib/systemd/systemd-udevd 715 root 7:cpuacct,cpu:/system.slice /sbin/auditd -n 731 root 7:cpuacct,cpu:/system.slice \_ /sbin/audispd 734 root 7:cpuacct,cpu:/system.slice \_ /usr/sbin/sedispatch 737 polkitd 7:cpuacct,cpu:/system.slice /usr/lib/polkit-1/polkitd --no-debug 738 rtkit 6:memory:/system.slice/rtki /usr/libexec/rtkit-daemon 740 dbus 7:cpuacct,cpu:/system.slice /bin/dbus-daemon --system -- address=systemd: --nofork --nopidfile --systemd-activation
Управление ресурсами, начиная с CentOS 6.X, было переопределено в реализации systemd init . Размышляя об управлении ресурсами для сервисов, главное, на чем нужно сосредоточиться — это cgroups . cgroups продвинулись с systemd и в функциональности и в простоте.
Целью cgroups в управлении ресурсами является то, что ни один сервис не может отключить систему в целом. Или ни один сервисный процесс (возможно, плохо написанный скрипт PHP) не нанесет вред функциональности сервера, потребляя слишком много ресурсов.
cgroups позволяют управлять ресурсами для следующих ресурсов:
-
CPU — ограничивает задачи с интенсивным использованием процессора, которые не являются критичными по сравнению с другими, менее интенсивными задачами
-
Память — ограничивает объем памяти, который может использовать служба
-
Диски — Ограничение дискового ввода-вывода
CPU — ограничивает задачи с интенсивным использованием процессора, которые не являются критичными по сравнению с другими, менее интенсивными задачами
Память — ограничивает объем памяти, который может использовать служба
Диски — Ограничение дискового ввода-вывода
** Время процессора: **
Задачи, требующие меньшего приоритета ЦП, могут иметь настраиваемые фрагменты ЦП.
Давайте посмотрим на следующие два сервиса, например.
Вежливое обслуживание ЦП 1
[root@localhost]# systemctl cat polite.service # /etc/systemd/system/polite.service [Unit] Description = Polite service limits CPU Slice and Memory After=remote-fs.target nss-lookup.target [Service] MemoryLimit = 1M ExecStart = /usr/bin/sha1sum /dev/zero ExecStop = /bin/kill -WINCH ${MAINPID} WantedBy=multi-user.target # /etc/systemd/system/polite.service.d/50-CPUShares.conf [Service] CPUShares = 1024 [root@localhost]#
Злой CPU Service 2
[root@localhost]# systemctl cat evil.service # /etc/systemd/system/evil.service [Unit] Description = I Eat You CPU After=remote-fs.target nss-lookup.target [Service] ExecStart = /usr/bin/md5sum /dev/zero ExecStop = /bin/kill -WINCH ${MAINPID} WantedBy=multi-user.target # /etc/systemd/system/evil.service.d/50-CPUShares.conf [Service] CPUShares = 1024 [root@localhost]#
Давайте установим Polite Service, используя меньший приоритет CPU —
systemctl set-property polite.service CPUShares = 20 /system.slice/polite.service 1 70.5 124.0K - - /system.slice/evil.service 1 99.5 304.0K - -
Как мы видим, в течение обычного периода простоя системы оба мошеннических процесса все еще используют циклы ЦП. Тем не менее, тот, который настроен на меньшее количество временных интервалов, использует меньше процессорного времени. Имея это в виду, мы можем видеть, как использование меньшего временного интервала позволило бы основным задачам улучшить доступ к системным ресурсам.
Чтобы установить службы для каждого ресурса, метод set-property определяет следующие параметры:
systemctl set-property name parameter=value
Процессорные слайсы | CPUShares |
Предел памяти | MemoryLimit |
Предел мягкой памяти | MemorySoftLimit |
Вес блока ввода-вывода | BlockIOWeight |
Предел блокировки устройства (указан в / volume / path)) | BlockIODeviceWeight |
Читать IO | BlockIOReadBandwidth |
Запись на диск IO | BlockIOReadBandwidth |
Чаще всего сервисы будут ограничены использованием процессора , ограничениями памяти и операциями чтения / записи .
После изменения каждого необходимо перезагрузить systemd и перезапустить сервис —
systemctl set-property foo.service CPUShares = 250 systemctl daemon-reload systemctl restart foo.service
Настройте CGroups в CentOS Linux
Чтобы создавать собственные cgroups в CentOS Linux, нам нужно сначала установить службы и настроить их.
Шаг 1 — Установите libcgroup (если еще не установлен).
[root@localhost]# yum install libcgroup Package libcgroup-0.41-11.el7.x86_64 already installed and latest version Nothing to do [root@localhost]#
Как мы видим, по умолчанию в CentOS 7 установлена libcgroup с установщиком everything . Использование минимального установщика потребует от нас установки утилит libcgroup вместе с любыми зависимостями.
Шаг 2 — Запустите и включите службу cgconfig.
[root@localhost]# systemctl enable cgconfig Created symlink from /etc/systemd/system/sysinit.target.wants/cgconfig.service to /usr/lib/systemd/system/cgconfig.service. [root@localhost]# systemctl start cgconfig [root@localhost]# systemctl status cgconfig ● cgconfig.service - Control Group configuration service Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled) Active: active (exited) since Mon 2017-01-23 02:51:42 EST; 1min 21s ago Main PID: 4692 (code=exited, status = 0/SUCCESS) Memory: 0B CGroup: /system.slice/cgconfig.service Jan 23 02:51:42 localhost.localdomain systemd[1]: Starting Control Group configuration service... Jan 23 02:51:42 localhost.localdomain systemd[1]: Started Control Group configuration service. [root@localhost]#
Linux Admin — Управление процессами
Ниже приведены общие команды, используемые с Process Management — bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Работа с процессами
Краткое примечание: процесс PID в Linux
В Linux каждому запущенному процессу присваивается PID или идентификационный номер процесса. Этот PID показывает, как CentOS идентифицирует конкретный процесс. Как мы уже говорили, systemd — это первый запущенный процесс с PID 1 в CentOS.
Pgrep используется для получения PID Linux для данного имени процесса.
[root@CentOS]# pgrep systemd 1 [root@CentOS]#
Как видно, команда pgrep возвращает текущий PID systemd.
Базовый процесс CentOS и управление заданиями в CentOS
При работе с процессами в Linux важно знать, как основные процессы приоритетного и фонового процессов выполняются в командной строке.
-
fg — выводит процесс на передний план
-
bg — переместить процесс на задний план
-
jobs — Список текущих процессов, прикрепленных к оболочке
-
Ctrl + Z — комбинация клавиш Control + Z, чтобы спать текущий процесс
-
& — Запускает процесс в фоновом режиме
fg — выводит процесс на передний план
bg — переместить процесс на задний план
jobs — Список текущих процессов, прикрепленных к оболочке
Ctrl + Z — комбинация клавиш Control + Z, чтобы спать текущий процесс
& — Запускает процесс в фоновом режиме
Давайте начнем использовать команду сна сна . сон будет просто делать, как его называют, спать в течение определенного периода времени: сон .
[root@CentOS ~]$ jobs [root@CentOS ~]$ sleep 10 & [1] 12454 [root@CentOS ~]$ sleep 20 & [2] 12479 [root@CentOS ~]$ jobs [1]- Running sleep 10 & [2]+ Running sleep 20 & [cnetos@CentOS ~]$
Теперь давайте перенесем первую работу на передний план —
[root@CentOS ~]$ fg 1 sleep 10
Если вы будете следовать, вы заметите, что задний план застрял в вашей оболочке. Теперь переведите процесс в спящий режим, а затем снова включите его в фоновом режиме.
- Хит контроль + Z
- Введите: bg 1, отправив первое задание в фоновый режим и запустив его.
[root@CentOS ~]$ fg 1 sleep 20 ^Z [1]+ Stopped sleep 20 [root@CentOS ~]$ bg 1 [1]+ sleep 20 & [root@CentOS ~]$
поЬир
При работе из оболочки или терминала стоит отметить, что по умолчанию все процессы и задания, прикрепленные к оболочке, завершаются, когда оболочка закрывается или пользователь выходит из системы. При использовании nohup процесс будет продолжаться, если пользователь выйдет из системы или закроет оболочку, к которой присоединен процесс.
[root@CentOS]# nohup ping www.google.com & [1] 27299 nohup: ignoring input and appending output to ‘nohup.out’ [root@CentOS]# pgrep ping 27299 [root@CentOS]# kill -KILL `pgrep ping` [1]+ Killed nohup ping www.google.com [root@CentOS rdc]# cat nohup.out PING www.google.com (216.58.193.68) 56(84) bytes of data. 64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128 time = 51.6 ms 64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128 time = 54.2 ms 64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128 time = 52.7 ms
PS команда
Команда ps обычно используется администраторами для изучения моментальных снимков определенного процесса. PS обычно используется с grep, чтобы отфильтровать определенный процесс для анализа.
[root@CentOS ~]$ ps axw | grep python 762 ? Ssl 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 1296 ? Ssl 0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 15550 pts/0 S+ 0:00 grep --color=auto python
В приведенной выше команде мы видим все процессы, использующие интерпретатор python . В результаты также вошла наша команда grep, ищущая строку python .
Ниже приведены наиболее распространенные ключи командной строки, используемые с ps .
переключатель | действие |
---|---|
Исключает ограничения только процессов отчетности для текущего пользователя | |
Икс | Показывает процессы, не привязанные к tty или оболочке |
вес | Форматы широкого вывода вывода на вывод |
е | Показывает среду после команды |
-e | Выбирает все процессы |
-о | Пользовательский форматированный вывод |
-u | Показывает все процессы определенного пользователя |
-С | Показывает все процессы по имени или идентификатору процесса |
—Сортировать | Сортирует процессы по определению |
Чтобы увидеть все процессы, используемые пользователем nobody —
[root@CentOS ~]$ ps -u nobody PID TTY TIME CMD 1853 ? 00:00:00 dnsmasq [root@CentOS ~]$
Чтобы увидеть всю информацию о процессе firewalld —
[root@CentOS ~]$ ps -wl -C firewalld F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld [root@CentOS ~]$
Давайте посмотрим, какие процессы потребляют больше всего памяти —
[root@CentOS ~]$ ps aux --sort=-pmem | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon [root@CentOS ~]$
Просмотреть все процессы по пользовательскому centos и формату, отображая пользовательский вывод —
[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm PID USER COMMAND 5802 centos gnome-keyring-d 5812 cnetos gnome-session 5819 cnetos dbus-launch 5820 cnetos dbus-daemon 5888 cnetos gvfsd 5893 cnetos gvfsd-fuse 5980 cnetos ssh-agent 5996 cnetos at-spi-bus-laun
Команда pstree
pstree похож на ps, но используется не часто. Он отображает процессы более аккуратным образом дерева.
[centos@CentOS ~]$ pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───2*[{at-spi2-registr}] ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─avahi-daemon───avahi-daemon ├─caribou───2*[{caribou}] ├─cgrulesengd ├─chronyd ├─colord───2*[{colord}] ├─crond ├─cupsd
Общий вывод pstree может превышать 100 строк. Обычно ps будет давать больше полезной информации.
верхняя команда
top — одна из наиболее часто используемых команд при устранении проблем с производительностью в Linux. Это полезно для статистики в реальном времени и мониторинга процессов в Linux. Ниже приведен вывод команды top по умолчанию при вызове из командной строки.
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.3 us, 2.0 sy, 0.0 ni, 95.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1879668 total, 177020 free, 607544 used, 1095104 buff/cache KiB Swap: 3145724 total, 3145428 free, 296 used. 1034648 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5404 root 20 0 197832 48024 6744 S 1.3 2.6 1:13.22 Xorg 8013 centos 20 0 555316 23104 13140 S 1.0 1.2 0:14.89 gnome-terminal- 6339 centos 20 0 332336 6016 3248 S 0.3 0.3 0:23.71 prlcc 6351 centos 20 0 21044 1532 1292 S 0.3 0.1 0:02.66 prlshprof
Общие горячие клавиши, используемые при запуске top ( горячие клавиши доступны при нажатии клавиши, когда top работает в вашей оболочке).
команда | действие |
---|---|
б | Включает / отключает выделение жирным шрифтом в верхнем меню |
Z | Циклы цветовой схемы |
L | Циклы загрузки среднего курса |
м | Циклы памяти среднего заголовка |
T | Заголовок информации о задании |
час | Меню справки |
Shift + F | Настраивает сортировку и отображение полей |
Ниже приведены общие параметры командной строки для top .
команда | действие |
---|---|
-о | Сортировка по столбцу (может начинаться с — или + для сортировки по возрастанию или по убыванию) |
-u | Показывает только процессы от указанного пользователя |
-d | Обновляет время задержки вершины |
-О | Возвращает список столбцов, к вершине которых можно применить сортировку |
Экран параметров сортировки сверху, представлен с помощью Shift + F. Этот экран позволяет настроить верхнее отображение и параметры сортировки.
Fields Management for window 1:Def, whose current sort field is %MEM Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end! * PID = Process Id TGID = Thread Group Id * USER = Effective User Name ENVIRON = Environment vars * PR = Priority vMj = Major Faults delta * NI = Nice Value vMn = Minor Faults delta * VIRT = Virtual Image (KiB) USED = Res+Swap Size (KiB) * RES = Resident Size (KiB) nsIPC = IPC namespace Inode * SHR = Shared Memory (KiB) nsMNT = MNT namespace Inode * S = Process Status nsNET = NET namespace Inode * %CPU = CPU Usage nsPID = PID namespace Inode * %MEM = Memory Usage (RES) nsUSER = USER namespace Inode * TIME+ = CPU Time, hundredths nsUTS = UTS namespace Inode * COMMAND = Command Name/Line PPID = Parent Process pid UID = Effective User Id
top , показывая процессы для пользователя rdc и отсортированные по использованию памяти —
PID USER %MEM PR NI VIRT RES SHR S %CPU TIME+ COMMAND 6130 rdc 6.2 20 0 1349592 117160 33232 S 0.0 1:09.34 gnome-shell 6449 rdc 3.4 20 0 1375872 64428 21400 S 0.0 0:00.43 evolution-calen 6296 rdc 1.7 20 0 1081944 32140 22596 S 0.0 0:00.40 evolution-alarm 6350 rdc 1.6 20 0 560728 29844 4256 S 0.0 0:10.16 prlsga 6281 rdc 1.5 20 0 1027176 28808 17680 S 0.0 0:00.78 nautilus 6158 rdc 1.5 20 0 1026956 28004 19072 S 0.0 0:00.20 gnome-shell-cal
Отображение допустимых полей сверху (сжато) —
[centos@CentOS ~]$ top -O PID PPID UID USER RUID RUSER SUID SUSER GID GROUP PGRP TTY TPGID
убить команду
Команда kill используется для уничтожения процесса из командной оболочки через его PID. При уничтожении процесса нам нужно указать сигнал для отправки. Сигнал сообщает ядру, как мы хотим завершить процесс. Наиболее часто используемые сигналы —
-
Под SIGTERM подразумевается, что ядро дает процессу знать, что оно должно вскоре остановиться, поскольку это безопасно. SIGTERM дает процессу возможность элегантного выхода и выполнения операций безопасного выхода.
-
SIGHUP большинство демонов перезапускается при отправке SIGHUP . Это часто используется в процессах, когда были внесены изменения в файл конфигурации.
-
SIGKILL, поскольку SIGTERM — это то же самое, что запросить завершение процесса. Ядру нужна опция для завершения процесса, который не будет соответствовать запросам. Когда процесс зависает, опция SIGKILL используется для явного завершения процесса.
Под SIGTERM подразумевается, что ядро дает процессу знать, что оно должно вскоре остановиться, поскольку это безопасно. SIGTERM дает процессу возможность элегантного выхода и выполнения операций безопасного выхода.
SIGHUP большинство демонов перезапускается при отправке SIGHUP . Это часто используется в процессах, когда были внесены изменения в файл конфигурации.
SIGKILL, поскольку SIGTERM — это то же самое, что запросить завершение процесса. Ядру нужна опция для завершения процесса, который не будет соответствовать запросам. Когда процесс зависает, опция SIGKILL используется для явного завершения процесса.
Для вывода списка всех сигналов, которые можно отправить с помощью kill, можно использовать опцию -l —
[root@CentOS]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX [root@CentOS rdc]#
Использование SIGHUP для перезагрузки системы.
[root@CentOS]# pgrep systemd 1 464 500 643 15071 [root@CentOS]# kill -HUP 1 [root@CentOS]# pgrep systemd 1 464 500 643 15196 15197 15198 [root@CentOS]#
pkill позволит администратору отправлять сигнал уничтожения по имени процесса.
[root@CentOS]# pgrep ping 19450 [root@CentOS]# pkill -9 ping [root@CentOS]# pgrep ping [root@CentOS]#
killall убьет все процессы. Будьте осторожны, используя killall в качестве пользователя root, так как он уничтожит все процессы для всех пользователей.
[root@CentOS]# killall chrome
свободная команда
free — довольно простая команда, часто используемая для быстрой проверки памяти системы. Он отображает общий объем используемой физической и подкачки памяти.
[root@CentOS]# free total used free shared buff/cache available Mem: 1879668 526284 699796 10304 653588 1141412 Swap: 3145724 0 3145724 [root@CentOS]#
хорошая команда
Nice позволит администратору установить приоритет планирования процесса с точки зрения использования процессора. Лучше всего то, как ядро будет планировать срезы процессорного времени для процесса или задания. По умолчанию предполагается, что процессу предоставляется равный доступ к ресурсам процессора.
Во-первых, давайте используем top, чтобы проверить правильность запущенных процессов.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28 root 39 19 0 0 0 S 0.0 0.0 0:00.17 khugepaged 690 root 39 19 16808 1396 1164 S 0.0 0.1 0:00.01 alsactl] 9598 rdc 39 19 980596 21904 10284 S 0.0 1.2 0:00.27 tracker-extract 9599 rdc 39 19 469876 9608 6980 S 0.0 0.5 0:00.04 tracker-miner-a 9609 rdc 39 19 636528 13172 8044 S 0.0 0.7 0:00.12 tracker-miner-f 9611 rdc 39 19 469620 8984 6496 S 0.0 0.5 0:00.02 tracker-miner-u 27 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 637 rtkit 21 1 164648 1276 1068 S 0.0 0.1 0:00.11 rtkit-daemon 1 root 20 0 128096 6712 3964 S 0.3 0.4 0:03.57 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.50 ksoftirqd/0 7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:02.07 rcu_sched
Мы хотим сосредоточиться на колонке NICE, изображенной NI . Диапазон добротности может быть в диапазоне от -20 до плюс 19. -20 представляет самый высокий данный приоритет.
nohup nice --20 ping www.google.com &
Renice
renice позволяет нам изменить текущий приоритет процесса, который уже запущен.
renice 17 -p 30727
Приведенная выше команда понизит приоритет нашей команды процесса ping .
Linux Admin — Настройка брандмауэра
firewalld — это интерфейсный контроллер по умолчанию для iptables в CentOS. Интерфейс Firewalld имеет два основных преимущества по сравнению с необработанными iptables —
-
Использует простые в настройке и реализации зоны, абстрагирующие цепочки и правила.
-
Наборы правил являются динамическими, то есть соединения с состоянием не прерываются при изменении и / или изменении настроек.
Использует простые в настройке и реализации зоны, абстрагирующие цепочки и правила.
Наборы правил являются динамическими, то есть соединения с состоянием не прерываются при изменении и / или изменении настроек.
Помните, firewalld — это оболочка для iptables, а не замена. Хотя пользовательские команды iptables можно использовать с firewalld , рекомендуется использовать firewalld, чтобы не нарушать функциональность брандмауэра.
Во-первых, давайте удостоверимся, что firewalld запущен и включен.
[root@CentOS rdc]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago Docs: man:firewalld(1) Main PID: 712 (firewalld) Memory: 34.7M CGroup: /system.slice/firewalld.service └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Мы можем видеть, что firewalld активен (для запуска при загрузке) и работает в данный момент. Если неактивен или не запущен, мы можем использовать —
systemctl start firewalld && systemctl enable firewalld
Теперь, когда мы настроили наш сервис firewalld, давайте убедимся, что он работает.
[root@CentOS]# firewall-cmd --state running [root@CentOS]#
Как видим, сервис firewalld полностью функционален.
Firewalld работает над концепцией зон . Зона применяется к сетевым интерфейсам через Network Manager. Мы обсудим это при настройке сети . Но сейчас, по умолчанию, изменение зоны по умолчанию изменит любые сетевые адаптеры, оставленные в состоянии по умолчанию «Зона по умолчанию».
Давайте кратко рассмотрим каждую зону, выходящую из коробки с firewalld .
Sr.No. | Зона и описание |
---|---|
1 |
падение Низкий уровень доверия. Все входящие соединения и пакеты сбрасываются и только исходящие соединения возможны через statefullness |
2 |
блок На входящие соединения приходит сообщение icmp, информирующее инициатора о том, что запрос запрещен |
3 |
общественности Все сети ограничены. Тем не менее, выбранные входящие соединения могут быть явно разрешены |
4 |
внешний Настраивает firewalld для NAT. Внутренняя сеть остается частной, но достижимой |
5 |
ДМЗ Разрешены только определенные входящие соединения. Используется для систем в изоляции DMZ |
6 |
Работа По умолчанию доверяют большему количеству компьютеров в сети, если система находится в защищенной рабочей среде. |
7 |
затачивать По умолчанию больше услуг не фильтруется. Предполагая, что система находится в домашней сети, где будут использоваться такие службы, как NFS, SAMBA и SSDP |
8 |
доверенный Все машины в сети являются доверенными. Большинство входящих соединений разрешено беспрепятственно. Это не предназначено для интерфейсов, открытых для Интернета |
падение
Низкий уровень доверия. Все входящие соединения и пакеты сбрасываются и только исходящие соединения возможны через statefullness
блок
На входящие соединения приходит сообщение icmp, информирующее инициатора о том, что запрос запрещен
общественности
Все сети ограничены. Тем не менее, выбранные входящие соединения могут быть явно разрешены
внешний
Настраивает firewalld для NAT. Внутренняя сеть остается частной, но достижимой
ДМЗ
Разрешены только определенные входящие соединения. Используется для систем в изоляции DMZ
Работа
По умолчанию доверяют большему количеству компьютеров в сети, если система находится в защищенной рабочей среде.
затачивать
По умолчанию больше услуг не фильтруется. Предполагая, что система находится в домашней сети, где будут использоваться такие службы, как NFS, SAMBA и SSDP
доверенный
Все машины в сети являются доверенными. Большинство входящих соединений разрешено беспрепятственно. Это не предназначено для интерфейсов, открытых для Интернета
Наиболее распространенными зонами для использования являются: общедоступная, дропа, работа и дом.
Вот некоторые сценарии, в которых будет использоваться каждая общая зона:
-
public — это самая распространенная зона, используемая администратором. Это позволит вам применять пользовательские настройки и соблюдать спецификации RFC для операций в локальной сети.
-
drop — хороший пример использования drop на конференции по безопасности, в общедоступном WiFi или на интерфейсе, подключенном напрямую к Интернету. drop предполагает, что все нежелательные запросы являются вредоносными, включая ICMP-зонды. Таким образом, любой запрос за пределами штата не получит ответ. Недостатком является то, что он может нарушить функциональность приложений в определенных ситуациях, требующих строгого соответствия RFC.
-
работа — Вы находитесь в полубезопасной корпоративной локальной сети. Где весь трафик можно считать умеренно безопасным. Это означает, что это не WiFi, и у нас, возможно, есть IDS, IPS и физическая безопасность или 802.1x. Мы также должны быть знакомы с людьми, использующими локальную сеть.
-
home — Вы находитесь в домашней сети. Вы несете личную ответственность за каждую систему и пользователя в локальной сети. Вы знаете каждую машину в локальной сети, и ни одна из них не была взломана. Часто появляются новые услуги для обмена мультимедийными данными среди доверенных лиц, и вам не нужно тратить дополнительное время ради безопасности.
public — это самая распространенная зона, используемая администратором. Это позволит вам применять пользовательские настройки и соблюдать спецификации RFC для операций в локальной сети.
drop — хороший пример использования drop на конференции по безопасности, в общедоступном WiFi или на интерфейсе, подключенном напрямую к Интернету. drop предполагает, что все нежелательные запросы являются вредоносными, включая ICMP-зонды. Таким образом, любой запрос за пределами штата не получит ответ. Недостатком является то, что он может нарушить функциональность приложений в определенных ситуациях, требующих строгого соответствия RFC.
работа — Вы находитесь в полубезопасной корпоративной локальной сети. Где весь трафик можно считать умеренно безопасным. Это означает, что это не WiFi, и у нас, возможно, есть IDS, IPS и физическая безопасность или 802.1x. Мы также должны быть знакомы с людьми, использующими локальную сеть.
home — Вы находитесь в домашней сети. Вы несете личную ответственность за каждую систему и пользователя в локальной сети. Вы знаете каждую машину в локальной сети, и ни одна из них не была взломана. Часто появляются новые услуги для обмена мультимедийными данными среди доверенных лиц, и вам не нужно тратить дополнительное время ради безопасности.
Зоны и сетевые интерфейсы работают на уровне один ко многим. К одному сетевому интерфейсу одновременно может быть применена только одна зона. В то время как зона может быть применена ко многим интерфейсам одновременно.
Давайте посмотрим, какие зоны доступны и какие зоны применяются в данный момент.
[root@CentOS]# firewall-cmd --get-zones work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone public [root@CentOS]#
Готовы добавить некоторые пользовательские правила в firewalld?
Во-первых, давайте посмотрим, как выглядит наша коробка для сканера портов снаружи.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1 Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST Nmap scan report for centos.shared (10.211.55.1) Host is up (0.00046s latency). Not shown: 1023 filtered ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds bash-3.2#
Давайте разрешим входящие запросы на порт 80.
Сначала проверьте, какая зона применяется по умолчанию.
[root@CentOs]# firewall-cmd --get-default-zone public [root@CentOS]#
Затем установите правило, разрешающее порт 80 для текущей зоны по умолчанию.
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp success [root@CentOS]#
Теперь давайте отметим наш флажок после разрешения подключения к порту 80.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1 Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST Nmap scan report for centos.shared (10.211.55.1) Host is up (0.00053s latency). Not shown: 1022 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp closed http Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds bash-3.2#
Это теперь позволяет незапрошенный трафик до 80.
Давайте добавим зону по умолчанию для удаления и посмотрим, что происходит со сканированием портов.
[root@CentOS]# firewall-cmd --set-default-zone=drop success [root@CentOS]# firewall-cmd --get-default-zone drop [root@CentOs]#
Теперь давайте просканируем хост с сетевым интерфейсом в более безопасной зоне.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1 Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST Nmap scan report for centos.shared (10.211.55.1) Host is up (0.00094s latency). All 1024 scanned ports on centos.shared (10.211.55.1) are filtered Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds bash-3.2#
Теперь все отфильтровано снаружи.
Как показано ниже, хост не будет даже отвечать на запросы проверки связи ICMP, когда находится в состоянии сброса .
bash-3.2# ping 10.211.55.1 PING 10.211.55.1 (10.211.55.1): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2
Давайте снова установим зону по умолчанию на public .
[root@CentOs]# firewall-cmd --set-default-zone=public success [root@CentOS]# firewall-cmd --get-default-zone public [root@CentOS]#
Теперь давайте проверим наш текущий набор правил фильтрации публично .
[root@CentOS]# firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s5 sources: services: dhcpv6-client ssh ports: 80/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: [root@CentOS rdc]#
Как настроено, наше правило фильтра для порта 80 находится только в контексте текущей конфигурации. Это означает, что после перезагрузки системы или перезапуска службы firewalld наше правило будет отменено.
Скоро мы настроим демон httpd , поэтому давайте сделаем наши изменения постоянными —
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent success [root@CentOS]# systemctl restart firewalld [root@CentOS]#
Теперь наше правило порта 80 в общедоступной зоне сохраняется при перезагрузках и перезапусках службы.
Ниже приведены общие команды firewalld, применяемые с firewall-cmd .
команда | действие |
---|---|
firewall-cmd —get-zone | Перечисляет все зоны, которые могут быть применены к интерфейсу |
firewall-cmd — статус | Возвращает текущий статус службы firewalld |
firewall-cmd —get-default-zone | Получает текущую зону по умолчанию |
firewall-cmd —set-default-zone = <зона> | Устанавливает зону по умолчанию в текущий контекст |
firewall-cmd —get-active-zone | Получает текущие зоны в контексте применительно к интерфейсу |
firewall-cmd —zone = <зона> —list-all | Перечисляет конфигурацию предоставленной зоны |
firewall-cmd —zone = <зона> —addport = <порт / транспортный протокол> | Применяет правило порта к фильтру зоны |
—permanent | Делает изменения в зоне постоянными. Флаг используется inline с командами модификации |
Это основные понятия администрирования и настройки firewalld .
Настройка служб межсетевого экрана на основе хоста в CentOS может быть сложной задачей в более сложных сетевых сценариях. Расширенное использование и настройка firewalld и iptables в CentOS может занять весь учебник. Тем не менее, мы представили основы, которых должно быть достаточно для выполнения большинства повседневных задач.
Настройте PHP в CentOS Linux
PHP является одним из самых распространенных веб-языков, используемых сегодня. Установка стека LAMP в CentOS — это то, что каждый системный администратор должен выполнить, скорее всего раньше, чем позже.
Традиционный стек LAMP состоит из (L) inux (A) pache (M) ySQL (P) HP.
Существует три основных компонента стека LAMP на CentOS —
- Веб сервер
- Платформа веб-разработки / Язык
- Сервер базы данных
Примечание . Термин LAMP Stack также может включать следующие технологии: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.
В этом руководстве мы будем использовать традиционный LAMP-стек CentOS GNU Linux: веб-сервер Apache, сервер баз данных MySQL и PHP.
На самом деле мы будем использовать MariaDB. Конфигурационные файлы, базы данных и таблицы MySQL прозрачны для MariaDB. MariaDB теперь включен в стандартный репозиторий CentOS вместо MySQL. Это связано с ограничениями лицензирования и совместимости с открытым исходным кодом, поскольку Oracle взяла на себя разработку MySQL.
Первое, что нам нужно сделать, это установить Apache.
[root@CentOS]# yum install httpd Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 extras/7/x86_64/primary_d | 121 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirror.sigmanet.com * extras: linux.mirrors.es.net * updates: mirror.eboundhost.com Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed --> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64 --> Running transaction check ---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed --> Finished Dependency Resolution Installed: httpd.x86_64 0:2.4.6-45.el7.centos Dependency Installed: httpd-tools.x86_64 0:2.4.6-45.el7.centos mailcap.noarch 0:2.1.41-2.el7 Complete! [root@CentOS]#
Давайте настроим сервис httpd .
[root@CentOS]# systemctl start httpd && systemctl enable httpd
Теперь давайте удостоверимся, что веб-сервер доступен через firewalld.
bash-3.2# nmap -sS -p 1-1024 -T 5 -sV 10.211.55.1 Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST Nmap scan report for centos.shared (10.211.55.1) Host is up (0.00054s latency). Not shown: 1022 filtered ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS)) Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#
Как видно из теста службы nmap, веб-сервер Apache прослушивает и отвечает на запросы на хосте CentOS.
Установите MySQL Database Server
[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb- devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64
Мы устанавливаем следующие пакеты репозитория для MariaDB —
MariaDB-server.x86_64
Основной пакет демона сервера MariaDB.
MariaDB-devel.x86_64
Файлы должны компилироваться из исходного кода с совместимостью MySQL / MariaDB.
mariadb.x86_64
Клиентские утилиты MariaDB для администрирования Сервера MariaDB из командной строки.
MariaDB-libs.x86_64
Общие библиотеки для MariaDB, которые могут понадобиться для других приложений, скомпилированных с поддержкой MySQL / MariaDB.
Теперь давайте запустим и включим сервис MariaDB.
[root@CentOS]# systemctl start mariadb [root@CentOS]# systemctl enable mariadb
Примечание. В отличие от Apache, мы не будем разрешать подключения к MariaDB через наш межсетевой экран на основе хоста (firewalld). При использовании сервера базы данных рекомендуется использовать только локальные сокеты, если только удаленный доступ к сокету не требуется.
Давайте удостоверимся, что сервер MariaDB принимает соединения.
[root@CentOS#] netstat -lnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN [root@CentOS rdc]#
Как мы видим, MariaDB прослушивает порт 3306 tcp. Мы оставим наш брандмауэр на основе хоста (firewalld), блокирующий входящие соединения к порту 3306.
Установите и настройте PHP
[root@CentOS#] yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64 && php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64
Я бы порекомендовал установить следующие пакеты php для общей совместимости —
- PHP-common.x86_64
- PHP-mysql.x86_64
- PHP-mysqlnd.x86_64
- PHP-pdo.x86_64
- PHP-soap.x86_64
- PHP-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php- mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64
Это наш простой php-файл, расположенный в руте Apache / var / www / html /
[root@CentOS]# cat /var/www/html/index.php <html> <head> <title>PHP Test Page</title> </head> <body> PHP Install <?php echo "We are now running PHP on GNU Centos Linux!<br />" ?> </body> </html> [root@CentOS]#
Давайте изменим группу-владельца нашей страницы на системного пользователя, под которым работает наш демон http.
[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php ---
При запросе вручную через ncat.
bash-3.2# ncat 10.211.55.1 80 GET / index.php HTTP/1.1 200 OK Date: Sat, 28 Jan 2017 12:06:02 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Content-Length: 137 Connection: close Content-Type: text/html; charset=UTF-8 <html> <head> <title>PHP Test Page</title> </head> <body> PHP Install We are now running PHP on GNU Centos Linux!<br /> </body> </html> bash-3.2#
PHP и LAMP — очень популярные технологии веб-программирования. Установка и настройка LAMP обязательно войдет в список ваших потребностей в качестве администратора CentOS. Простые в использовании пакеты CentOS потребовали много усилий от компиляции Apache, MySQL и PHP из исходного кода.
Установите Python с CentOS Linux
Python — это широко используемый интерпретируемый язык, который привнес профессионализм в мир кодирования скриптовых приложений в Linux (и других операционных системах). Где Perl когда-то был промышленным стандартом, Python превзошел Perl во многих отношениях.
Некоторые сильные стороны Python против Perl —
-
Быстрое продвижение в изысканности
-
Библиотеки, которые являются стандартными для языка
-
Читаемость кода продумана в определении языка
-
Множество профессиональных фреймворков для всего, от поддержки GUI до веб-разработки
Быстрое продвижение в изысканности
Библиотеки, которые являются стандартными для языка
Читаемость кода продумана в определении языка
Множество профессиональных фреймворков для всего, от поддержки GUI до веб-разработки
Python может делать все, что может делать Perl, и во многих случаях лучше. Хотя Perl все еще занимает свое место в наборе инструментов администратора Linux, изучение Python является отличным выбором в качестве набора навыков.
Самые большие недостатки Python иногда связаны с его сильными сторонами. В истории Python был изначально разработан для обучения программированию. Иногда его основные принципы «легко читаемого» и «правильного поведения» могут вызывать ненужные сложности при написании простого кода. Кроме того, его стандартные библиотеки вызвали проблемы при переходе с версий 2.X на 3.X.
Скрипты Python фактически используются в ядре CentOS для функций, жизненно важных для функциональности операционной системы. По этой причине важно изолировать нашу среду разработки Python от основной среды Python CentOS.
Для начала, в настоящее время есть две версии Python: Python 2.X и Python 3.X.
Оба этапа все еще находятся в активном производстве, хотя версия 2.X быстро приближается к амортизации (и уже несколько лет). Причиной двух активных версий Python было исправление недостатков версии 2.X. Это потребовало переделки некоторых основных функций версии 3.X, чтобы не поддерживать некоторые сценарии версии 2.X.
По сути, лучший способ преодолеть этот переход: разработайте для 3.X и следите за последней версией 2.X для устаревших сценариев. В настоящее время CentOS 7.X использует полу-текущую версию 2.X.
На момент написания статьи самыми последними версиями Python являются: 3.4.6 и 2.7.13 .
Не позволяйте этому запутать или сделать какие-либо выводы Python. Настроить среду Python довольно просто. С помощью фреймворков и библиотек Python эту задачу действительно легко выполнить.
Перед настройкой среды Python нам нужна нормальная среда. Для начала давайте удостоверимся, что наша установка CentOS полностью обновлена, и установим некоторые утилиты для сборки.
Шаг 1 — Обновите CentOS.
[root@CentOS]# yum -y update
Шаг 2 — Установите утилиты сборки.
[root@CentOS]# yum -y groupinstall "development tools"
Шаг 3 — Установите несколько необходимых пакетов.
[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel
Теперь нам нужно установить текущие Python 2.X и 3.X из исходного кода.
- Скачать сжатые архивы
- Извлечь файлы
- Компилировать исходный код
Давайте начнем с создания каталога сборки для каждой установки Python в / usr / src /
[root@CentOS]# mkdir -p /usr/src/pythonSource
Теперь давайте загрузим исходные архивы для каждого —
[root@CentOS]# wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz [root@CentOS]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Теперь нам нужно извлечь каждый из архива.
Шаг 1 — Установите xz-libs и распакуйте архивы.
[root@CentOS]# yum install xz-libs [root@CentOS python3]# xz -d ./*.xz [root@CentOS python3]# ls Python-2.7.13.tar Python-3.6.0.tar [root@CentOS python3]#
Шаг 2 — Разархивируйте каждого установщика из его архива.
[root@CentOS]# tar -xvf ./Python-2.7.13.tar [root@CentOS]# tar -xvf ./Python-3.6.0.tar
Шаг 3 — Введите каждый каталог и запустите скрипт настройки.
[root@CentOS]# ./configure --prefix=/usr/local root@CentOS]# make altinstall
Примечание. Обязательно используйте altinstall, а не устанавливайте. Это позволит отделить CentOS и разрабатываемые версии Python. В противном случае вы можете нарушить функциональность CentOS.
Теперь вы увидите, как начинается процесс компиляции. Возьмите чашку кофе и сделайте 15-минутный перерыв до завершения. Поскольку мы установили все необходимые зависимости для Python, процесс компиляции должен завершиться без ошибок.
Давайте удостоверимся, что у нас установлена последняя версия 2.X Python.
[root@CentOS Python-2.7.13]# /usr/local/bin/python2.7 -V Python 2.7.13 [root@CentOS Python-2.7.13]#
Примечание. Вы захотите добавить префикс линии shebang, указывающий на нашу среду разработки для Python 2.X.
[root@CentOS Python-2.7.13]# cat ver.py #!/usr/local/bin/python2.7 import sys print(sys.version)
[root@CentOS Python-2.7.13]# ./ver.py 2.7.13 (default, Jan 29 2017, 02:24:08) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
Точно так же у нас есть отдельные установки Python для версий 2.X и 3.X. Отсюда мы можем использовать каждую из них и такие утилиты, как pip и virtualenv, чтобы еще больше облегчить бремя управления средами Python и установкой пакетов.
Настройте Ruby в CentOS Linux
Ruby — отличный язык как для веб-разработки, так и для администрирования Linux. Ruby предоставляет множество преимуществ, которые можно найти на всех предыдущих языках: PHP, Python и Perl.
Чтобы установить Ruby, лучше всего загрузиться через rbenv, который позволяет администраторам легко устанавливать и управлять средами Ruby.
Другой метод установки Ruby — это стандартные пакеты CentOS для Ruby. Желательно использовать метод rbenv со всеми его преимуществами. Пакеты CentOS будут проще для пользователей, не разбирающихся в Ruby.
Во-первых, давайте получим некоторые необходимые зависимости для установщика rbenv.
- ГИТ-ядро
- Zlib
- Zlib-разви
- GCC-C ++
- пластырь
- Readline
- Readline-разви
- libyaml-разви
- libffi-разви
- OpenSSL-разви
- делать
- bzzip2
- Autoconf
- Automake
- Libtool
- бизон
- локон
- SQLite-разви
Большинство из этих пакетов могут быть уже установлены в зависимости от выбранных опций и ролей при установке CentOS. Хорошо устанавливать все, в чем мы не уверены, поскольку это может привести к уменьшению головной боли при установке пакетов, требующих зависимостей.
[root@CentOS]# yum -y install git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel
Метод 1: rbenv для динамических сред разработки Ruby
Теперь как пользователь, который будет использовать Ruby —
[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git [rdc@CentOS ~]$ https://github.com/rbenv/ruby-build.git
ruby-build предоставит функции установки для rbenv —
Примечание. Перед запуском install.sh нам нужно переключиться на пользователя root или администратора.
[rdc@CentOS ruby-build]$ cd ~/ruby-build [rdc@CentOS ruby-build]# ./install.sh
Давайте установим нашу оболочку для rbenv и убедимся, что мы установили правильные параметры.
[rdc@CentOS ~]$ source ~/rbenv/rbenv.d/exec/gem-rehash.bash [rdc@CentOS ruby-build]$ ~/rbenv/bin/rbenv rbenv 1.1.0-2-g4f8925a Usage: rbenv <command> [<args>]
Некоторые полезные команды rbenv:
команды | действие |
---|---|
местный | Устанавливает или показывает версию Ruby для локального приложения |
Глобальный | Устанавливает или показывает глобальную версию Ruby |
ракушка | Устанавливает или показывает специфичную для оболочки версию Ruby |
устанавливать | Устанавливает версию Ruby с использованием ruby-build |
деинсталляция | Удаляет определенную версию Ruby |
перепев | Перерабатывает rbenv shims (запускайте его после установки исполняемых файлов) |
версия | Показывает текущую версию Ruby и ее происхождение |
версии | Перечисляет все версии Ruby, доступные для rbenv |
который | Отображает полный путь к исполняемому файлу |
откуда | Перечисляет все версии Ruby, которые содержат данный исполняемый файл |
Давайте теперь установим Ruby —
[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1
После завершения компиляции —
[rdc@CentOS ~]$ ./ruby -v ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux] [rdc@CentOS ~]$
Теперь у нас есть рабочая среда Ruby с обновленной и рабочей версией ветки Ruby 2.X.
Способ 2: установить Ruby из пакетов CentOS
Это самый простой метод. Однако это может быть ограничено версией и гемами, упакованными из CentOS. Для серьезной разработки настоятельно рекомендуется использовать метод rbenv для установки Ruby.
Установите Ruby, необходимые пакеты для разработки и некоторые распространенные гемы.
[root@CentOS rdc]# yum install -y ruby.x86_64 ruby-devel.x86_64 ruby- libs.x86_64 ruby-gem-json.x86_64 rubygem-rake.noarch
К сожалению, у нас осталась несколько устаревшая версия Ruby.
[root@CentOS rdc]# ruby -v ruby 2.0.0p648 (2015-12-16) [x86_64-linux] [root@CentOS rdc]#
Linux Admin — Настройка Perl для CentOS Linux
Perl существует уже давно. Первоначально он был разработан как язык отчетности, используемый для анализа текстовых файлов. С ростом популярности Perl добавил поддержку модулей или CPAN, сокеты, многопоточность и другие функции, необходимые в мощном языке сценариев.
Самым большим преимуществом Perl над PHP, Python или Ruby является то, что он работает с минимальными усилиями. Эта философия Perl не всегда означает, что все делается правильно. Однако для задач администрирования в Linux Perl считается наиболее подходящим выбором для языка сценариев.
Некоторые преимущества Perl над Python или Ruby:
-
Мощная обработка текста
-
Perl делает написание скриптов быстрым и грязным (обычно скрипт на Perl будет на несколько десятков строк короче, чем эквивалент в Python или Ruby)
-
Perl может делать что угодно (почти)
Мощная обработка текста
Perl делает написание скриптов быстрым и грязным (обычно скрипт на Perl будет на несколько десятков строк короче, чем эквивалент в Python или Ruby)
Perl может делать что угодно (почти)
Некоторые недостатки Perl —
-
Синтаксис может сбивать с толку
-
Стиль кодирования в Perl может быть уникальным и затруднить сотрудничество
-
Perl не является объектно-ориентированным
-
Как правило, при использовании Perl не уделяется много внимания стандартизации и передовому опыту.
Синтаксис может сбивать с толку
Стиль кодирования в Perl может быть уникальным и затруднить сотрудничество
Perl не является объектно-ориентированным
Как правило, при использовании Perl не уделяется много внимания стандартизации и передовому опыту.
При принятии решения, использовать ли Perl, Python или PHP; следует задать следующие вопросы —
- Будет ли это приложение когда-либо нуждаться в управлении версиями?
- Будут ли другие люди когда-либо изменять код?
- Нужно ли другим людям использовать это приложение?
- Будет ли это приложение когда-либо использоваться на другой машине или архитектуре процессора?
Если ответы на все вышеизложенные вопросы «нет», Perl является хорошим выбором и может ускорить процесс с точки зрения конечных результатов.
С учетом этого давайте настроим наш сервер CentOS для использования самой последней версии Perl.
Перед установкой Perl нам нужно понять поддержку Perl. Официально Perl поддерживается только в двух последних стабильных версиях. Итак, мы хотим быть уверены, что наша среда разработки изолирована от версии CentOS.
Причина изоляции такова: если кто-то выпустит инструмент на Perl для сообщества CentOS, более чем вероятно, что он будет изменен для работы на Perl, поставляемом с CentOS. Однако мы также хотим, чтобы последняя версия была установлена в целях разработки. Как и Python, CentOS выпускает Perl, ориентированный на надежность, а не ультрасовременность.
Давайте проверим нашу текущую версию Perl на CentOS 7.
[root@CentOS]# perl -v This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
В настоящее время мы используем Perl 5.16.3. Самая последняя версия на момент написания этой статьи: perl-5.24.0
Мы определенно хотим обновить нашу версию, чтобы иметь возможность использовать современные модули Perl в нашем коде. К счастью, есть отличный инструмент для поддержки сред Perl и для сохранения нашей версии Perl для CentOS изолированной. Это называется perlbrew .
Давайте установим Perl Brew.
[root@CentOS]# curl -L https://install.perlbrew.pl | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 170 100 170 0 0 396 0 --:--:-- --:--:-- --:--:-- 397 100 1247 100 1247 0 0 1929 0 --:--:-- --:--:-- --:--:-- 1929
Теперь, когда у нас установлен Perl Brew, давайте создадим среду для последней версии Perl.
Во-первых, нам понадобится установленная на данный момент версия Perl для начальной загрузки установки perlbrew. Итак, давайте получим некоторые необходимые модули Perl из репозитория CentOS.
Примечание. По возможности мы всегда хотим использовать модули CentOS Perl по сравнению с CPAN с нашей установкой CentOS Perl.
Шаг 1 — Установите модуль CentOS Perl Make :: Maker.
[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch
Шаг 2 — Установите последнюю версию Perl.
[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc [root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1
Варианты, которые мы выбрали для нашей установки Perl:
-
n — нет тестов
-
j4 — выполнить 4 потока параллельно для процедур установки (мы используем четырехъядерный процессор)
-
threads — включить поддержку многопоточности для Perl
n — нет тестов
j4 — выполнить 4 потока параллельно для процедур установки (мы используем четырехъядерный процессор)
threads — включить поддержку многопоточности для Perl
После того, как наша установка была успешно выполнена, давайте переключимся на нашу новейшую среду Perl.
[root@CentOS]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1 A sub-shell is launched with perl-5.24.1 as the activated perl. Run 'exit' to finish it. [root@CentOS]# perl -v This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linuxthread-multi (with 1 registered patch, see perl -V for more detail) Copyright 1987-2017, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. [root@CentOS]#
Простая версия Perl для печати сценариев Perl, запущенная в контексте нашей среды Perlbrew —
[root@CentOS]# cat ./ver.pl #!/usr/bin/perl print $^V . "\n";
[root@CentOS]# perl ./ver.pl v5.24.1 [root@CentOS]#
После установки perl мы можем загрузить модули cpan с помощью cpanm perl brew —
[root@CentOS]# perl-brew install-cpanm
Теперь давайте используем установщик cpanm для создания модуля LWP с нашей текущей версией Perl 5.24.1 в perl brew.
Шаг 1 — Переключитесь на контекст нашей текущей версии Perl.
[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1
Под-оболочка запускается с perl-5.24.1 в качестве активированного perl. Запустите «выход», чтобы закончить.
[root@CentOS ~]#
Шаг 2 — Установите Perl-модуль LWP User Agent.
[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent
Шаг 3 — Теперь давайте протестируем нашу среду Perl с новым модулем CPAN.
[root@CentOS ~]# cat ./get_header.pl #!/usr/bin/perl use LWP; my $browser = LWP::UserAgent->new(); my $response = $browser->get("http://www.slcc.edu/"); unless(!$response->is_success) { print $response->header("Server"); } [root@CentOS ~]# perl ./get_header.pl Microsoft-IIS/8.5 [root@CentOS ~]#
Вот оно! Perl Brew делает изоляцию среды Perl проще простого и может рассматриваться как лучшая практика, когда дела обстоят с Perl.
Установите и настройте Open LDAP
LDAP, известный как облегченный протокол доступа к каталогам, — это протокол, используемый для доступа к контейнерам услуг X.500 внутри предприятия, известным из каталога. Те, кто знаком с администрированием Windows Server, могут считать LDAP очень похожим по своей природе на Active Directory. Это даже широко используемая концепция объединения рабочих станций Windows в предприятие OpenLDAP CentOS. С другой стороны, рабочая станция CentOS Linux может совместно использовать ресурсы и участвовать с основными функциями в домене Windows.
Развертывание LDAP в CentOS в качестве агента сервера каталогов, агента системы каталогов или DSA (все эти сокращения одинаковы) аналогично более ранним установкам Novell Netware с использованием структуры дерева каталогов с NDS.
Краткая история LDAP
LDAP был в основном создан как эффективный способ доступа к каталогам X.500 с помощью корпоративных ресурсов. И X.500, и LDAP имеют одинаковые характеристики и настолько похожи, что клиенты LDAP могут обращаться к каталогам X.500 с некоторыми помощниками. Хотя LDAP также имеет свой собственный сервер каталогов под названием slapd . Основное различие между LDAP и DAP состоит в том, что облегченная версия предназначена для работы через TCP.
В то время как DAP использует полную модель OSI. С появлением Интернета, TCP / IP и Ethernet в современных сетях редко можно встретить имплантацию служб каталогов, использующую как DAP, так и собственные корпоративные каталоги X.500, выходящие за рамки конкретных моделей устаревших вычислений.
Основные компоненты, используемые с openldap для CentOS Linux:
OpenLDAP | Библиотеки поддержки LDAP |
---|---|
OpenLDAP-сервер | Сервер LDAP |
OpenLDAP-клиенты | Клиентские возможности LDAP |
OpenLDAP-разви | Библиотеки разработки для OpenLDAP |
Компай-OpenLDAP | Общие библиотеки OpenLDAP |
Slapd | Сервер каталогов демон OpenLDAP |
Slurpd | Используется для репликации LDAP через домен предприятия |
Примечание. При наименовании предприятия рекомендуется использовать домен верхнего уровня .local . Использование .net или .com может вызвать трудности при разделении сетевой инфраструктуры и инфраструктуры внутреннего домена. Представьте себе дополнительную работу для компании, использующей acme.com для внутренних и внутренних операций. Следовательно, может быть целесообразно иметь интернет-ресурсы, называемые acme.com или acme.net . Затем локальные сетевые корпоративные ресурсы отображаются как acme.local . Это повлечет за собой настройку записей DNS, но заплатит за простоту, красноречие и безопасность.
Установите Open LDAP на CentOS
Установите openldap, openldap-серверы, openldap-клиенты и миграционные инструменты из YUM .
[root@localhost]# yum -y install openldap openldap-servers openldap-clients migration tools Loaded plugins: fastestmirror, langpacks updates | 3.4 kB 00:00:00 updates/7/x86_64/primary_db | 2.2 MB 00:00:05 Determining fastest mirrors (1/2): extras/7/x86_64/primary_db | 121 kB 00:00:01 (2/2): base/7/x86_64/primary_db | 5.6 MB 00:00:16 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed --> Finished Dependency Resolution base/7/x86_64/group_gz | 155 kB 00:00:00 Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Installing: openldap-clients x86_64 2.4.40-13.el7 base 188 k openldap-servers x86_64 2.4.40-13.el7 base 2.1 M Transaction Summary =============================================================================== =============================================================================== Install 2 Packages Total download size: 2.3 M Installed size: 5.3 M Downloading packages: Installed: openldap-clients.x86_64 0:2.4.40-13.el7 openldap-servers.x86_64 0:2.4.40-13.el7 Complete! [root@localhost]#
Теперь давайте запустим и включим сервис slapd —
[root@centos]# systemctl start slapd [root@centos]# systemctl enable slapd
Теперь давайте убедимся, что у нас есть структура openldap в / etc / openldap .
root@localhost]# ls /etc/openldap/ certs check_password.conf ldap.conf schema slapd.d [root@localhost]#
Затем убедитесь, что наш сервис slapd запущен.
root@centos]# netstat -antup | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1641/slapd tcp6 0 0 :::389 :::* LISTEN 1641/slapd [root@centos]#
Далее, давайте настроим нашу установку Open LDAP .
Убедитесь, что наш системный пользователь ldap создан.
[root@localhost]# id ldap uid=55(ldap) gid=55(ldap) groups=55(ldap) [root@localhost]#
Создайте наши учетные данные LDAP.
[root@localhost]# slappasswd New password: Re-enter new password: {SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10 [root@localhost]#
Нам нужно сохранить вывод из slappasswd.
Настроить Open LDAP
Шаг 1 — Настройте LDAP для домена и добавьте администратора.
Во-первых, мы хотим настроить нашу среду openLDAP. Ниже приведен шаблон для использования с командой ldapmodify .
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=vmnet,dc=local dn: olcDatabase = {2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=ldapadm,dc=vmnet,dc=local dn: olcDatabase = {2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: <output from slap
Внесите изменения в /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif с помощью команды ldapmodify.
[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif SASL/EXTERNAL authentication started SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase = {2}hdb,cn=config" modifying entry "olcDatabase = {2}hdb,cn=config" modifying entry "olcDatabase = {2}hdb,cn=config" [root@localhost cn=config]#
Давайте проверим измененную конфигурацию LDAP.
root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif [root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 a163f14c dn: olcDatabase = {2}hdb objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub structuralObjectClass: olcHdbConfig entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139 creatorsName: cn=config createTimestamp: 20170212022422Z olcSuffix: dc=vmnet,dc=local olcRootDN: cn=ldapadm,dc=vmnet,dc=local olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = entryCSN: 20170215204423.726622Z#000000#000#000000 modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth modifyTimestamp: 20170215204423Z [root@centos]#
Как вы можете видеть, наши модификации LDAP предприятия были успешными.
Далее мы хотим создать самозаверяющий ssl-сертификат для OpenLDAP. Это защитит связь между корпоративным сервером и клиентами.
Шаг 2 — Создайте самоподписанный сертификат для OpenLDAP.
Мы будем использовать openssl для создания ssl-сертификата с собственной подписью. Перейдите к следующей главе « Создание сертификата SSL LDAP с помощью openssl», чтобы получить инструкции по обеспечению безопасности связи с OpenLDAP. Затем, когда SSL-сертификаты будут настроены, мы завершим нашу корпоративную конфигурацию OpenLDAP.
Шаг 3 — Настройте OpenLDAP для использования безопасной связи с сертификатом.
Создайте файл certs.ldif в vim со следующей информацией —
dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem
Затем снова используйте команду ldapmodify для объединения изменений в конфигурацию OpenLDAP.
[root@centos rdc]# ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif SASL/EXTERNAL authentication started SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" [root@centos]#
Наконец, давайте проверим нашу конфигурацию OpenLADP.
[root@centos]# slaptest -u config file testing succeeded [root@centos]#
Шаг 4 — Настройте базу данных slapd.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && chown ldap:ldap /var/lib/ldap/*
Обновляет схему OpenLDAP.
Добавьте косинус и nis схемы LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
Наконец, создайте схему предприятия и добавьте ее в текущую конфигурацию OpenLDAP.
Следующее для домена под названием vmnet. локальный с администратором LDAP под названием ldapadm .
dn: dc=vmnet,dc=local dc: vmnet objectClass: top objectClass: domain dn: cn=ldapadm ,dc=vmnet,dc=local objectClass: organizationalRole cn: ldapadm description: LDAP Manager dn: ou = People,dc=vmnet,dc=local objectClass: organizationalUnit ou: People dn: ou = Group,dc=vmnet,dc=local objectClass: organizationalUnit ou: Group
Наконец, импортируйте это в текущую схему OpenLDAP.
[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif Enter LDAP Password: adding new entry "dc=vmnet,dc=local" adding new entry "cn=ldapadm ,dc=vmnet,dc=local" adding new entry "ou=People,dc=vmnet,dc=local" adding new entry "ou=Group,dc=vmnet,dc=local" [root@centos]#
Шаг 5 — Настройка пользователей OpenLDAP Enterprise.
Откройте vim или ваш любимый текстовый редактор и скопируйте следующий формат. Это настройка для пользователя с именем «entacct» в домене LDAP «vmnet.local».
dn: uid=entacct,ou=People,dc=vmnet,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: entacct uid: entacct uidNumber: 9999 gidNumber: 100 homeDirectory: /home/enyacct loginShell: /bin/bash gecos: Enterprise User Account 001 userPassword: {crypt}x shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
Теперь импортируйте вышеуказанные файлы, как сохраненные, в схему OpenLdap.
[root @ centos] # ldapadd -x -W -D "cn = ldapadm, dc = vmnet, dc = local" -f entuser.ldif Введите пароль LDAP: добавление новой записи "uid = entacct, ou = People, dc = vmnet, dc = local" [Корень @ CentOS] #
Прежде чем пользователи смогут получить доступ к LDAP Enterprise, нам нужно назначить пароль следующим образом:
ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct ,ou=People,dc=vmnet,dc=local"
-s указывает пароль для пользователя
-x — имя пользователя, к которому применяется обновленный пароль
-D — это * отличительное имя для аутентификации по схеме LDAP.
Наконец, прежде чем войти в учетную запись Enterprise, давайте проверим нашу запись OpenLDAP .
[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local # extended LDIF # # LDAPv3 # base <dc=vmnet,dc=local> with scope subtree # filter: cn=entacct # requesting: ALL # # entacct, People, vmnet.local dn: uid=entacct,ou=People,dc=vmnet,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: entacct uid: entacct uidNumber: 9999 gidNumber: 100 homeDirectory: /home/enyacct loginShell: /bin/bash gecos: Enterprise User Account 001 userPassword:: e2NyeXB0fXg= shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
Преобразование таких вещей, как / etc / passwd и / etc / groups в аутентификацию OpenLDAP, требует использования инструментов миграции. Они включены в пакет migtools. Затем устанавливается в / usr / share /igrationtools .
[root@centos openldap-servers]# ls -l /usr/share/migrationtools/ total 128 -rwxr-xr-x. 1 root root 2652 Jun 9 2014 migrate_aliases.pl -rwxr-xr-x. 1 root root 2950 Jun 9 2014 migrate_all_netinfo_offline.sh -rwxr-xr-x. 1 root root 2946 Jun 9 2014 migrate_all_netinfo_online.sh -rwxr-xr-x. 1 root root 3011 Jun 9 2014 migrate_all_nis_offline.sh -rwxr-xr-x. 1 root root 3006 Jun 9 2014 migrate_all_nis_online.sh -rwxr-xr-x. 1 root root 3164 Jun 9 2014 migrate_all_nisplus_offline.sh -rwxr-xr-x. 1 root root 3146 Jun 9 2014 migrate_all_nisplus_online.sh -rwxr-xr-x. 1 root root 5267 Jun 9 2014 migrate_all_offline.sh -rwxr-xr-x. 1 root root 7468 Jun 9 2014 migrate_all_online.sh -rwxr-xr-x. 1 root root 3278 Jun 9 2014 migrate_automount.pl -rwxr-xr-x. 1 root root 2608 Jun 9 2014 migrate_base.pl
Шаг 6 — Наконец, нам нужно разрешить доступ к сервису slapd, чтобы он мог обслуживать запросы.
firewall-cmd --permanent --add-service=ldap firewall-cmd --reload
Настройте клиентский доступ LDAP
Настройка клиентского доступа LDAP требует наличия следующих пакетов на клиенте: клиенты openldap, open-ldap и nss_ldap.
Настройка аутентификации LDAP для клиентских систем немного проще.
Шаг 1 — Установите зависимые пакеты —
# yum install -y openldap-clients nss-pam-ldapd
Шаг 2 — Настройте аутентификацию LDAP с помощью authconfig .
authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 -- ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update
Шаг 3 — Перезапустите службу nslcd.
systemctl restart nslcd
Linux Admin — Создание SSL-сертификатов
Фон TLS и SSL
TLS — это новый стандарт безопасности на уровне сокетов, использующий SSL. TLS предлагает лучшие стандарты шифрования с другими функциями защиты и оболочки протокола, улучшающими SSL. Часто термины TLS и SSL используются взаимозаменяемо. Однако, как профессиональный администратор CentOS, важно отметить различия и историю, разделяющую каждого из них.
SSL идет до версии 3.0. SSL был разработан и продвигается как отраслевой стандарт под Netscape. После покупки Netscape AOL (популярным в 90-х провайдером, также известным как America Online) интернет-провайдер так и не стал продвигать изменения, необходимые для улучшения безопасности SSL.
В версии 3.1 технология SSL перешла на стандарты открытых систем и была заменена на TLS . Поскольку авторские права на SSL все еще принадлежали AOL, был придуман новый термин: TLS — безопасность транспортного уровня . Поэтому важно признать, что TLS на самом деле отличается от SSL . Особенно, поскольку старые технологии SSL имеют известные проблемы безопасности, а некоторые сегодня считаются устаревшими.
Примечание. В этом руководстве будет использоваться термин TLS, когда речь идет о технологиях 3.1 и выше. Тогда SSL при комментировании специфичен для технологий SSL 3.0 и ниже.
SSL против версии TLS
В следующей таблице показано, как версии TLS и SSL будут связаны друг с другом. Я слышал, как несколько человек говорят на языке SSL версии 3.2. Тем не менее, они, вероятно, получили терминологию от чтения блога. Как профессиональный администратор, мы всегда хотим использовать стандартную терминологию. Следовательно, во время разговора SSL должен быть ссылкой на прошлые технологии. Простые вещи могут сделать соискателя CentOS похожим на опытного CS Major.
TLS | SSL |
---|---|
— | 3.0 |
1,0 | 3,1 |
1,1 | 3,2 |
1.2 | 3,3 |
TLS выполняет две основные функции, важные для пользователей Интернета сегодня: во-первых, он проверяет, кто является стороной, известный как аутентификация . Во-вторых, он предлагает сквозное шифрование на транспортном уровне для протоколов верхнего уровня, в которых отсутствует эта встроенная функция (ftp, http, протоколы электронной почты и т. Д.).
Во-первых, проверяется, кто является стороной и важен для безопасности как сквозное шифрование. Если потребитель имеет зашифрованное соединение с веб-сайтом, который не имеет права принимать платежи, финансовые данные все еще находятся под угрозой. Это то, что у каждого фишингового сайта не будет: правильно подписанный сертификат TLS, подтверждающий, что операторы веб-сайтов утверждают, что они являются доверенными центрами сертификации .
Есть только два способа обойтись без наличия надлежащим образом подписанного сертификата: обманом заставить пользователя разрешить доверие веб-браузера к самоподписанному сертификату или надеяться, что пользователь не разбирается в технологиях и не будет знать о важности доверенного сертификата. Орган (или ЦС).
В этом руководстве мы будем использовать так называемый самозаверяющий сертификат. Это означает, что без явного присвоения этому сертификату статуса доверенного в каждом веб-браузере, посещающем веб-сайт, будет отображаться ошибка, препятствующая пользователям посещать сайт. Затем пользователь выполнит несколько действий, прежде чем получить доступ к сайту с самозаверяющим сертификатом. Помните, ради безопасности это хорошая вещь.
Установите и настройте openssl
openssl является стандартом для реализации TLS с открытым исходным кодом. openssl используется в таких системах, как Linux, дистрибутивы BSD, OS X и даже поддерживает Windows.
openssl важен, поскольку он обеспечивает безопасность транспортного уровня и предоставляет подробное программирование аутентификации и сквозного шифрования для разработчика. Вот почему openssl используется практически с каждым приложением с открытым исходным кодом, использующим TLS. Он также установлен по умолчанию в каждой современной версии Linux.
По умолчанию openssl должен быть установлен на CentOS начиная с версии не ниже 5. Просто чтобы убедиться, давайте попробуем установить openssl через YUM. Просто запустите install, поскольку YUM достаточно умен, чтобы сообщить нам, если пакет уже установлен. Если мы используем более старую версию CentOS по соображениям совместимости, установка yum -y обеспечит обновление openssl относительно недавней уязвимости с сердечным кровотечением.
При запуске установщика было обнаружено, что на самом деле было обновление для openssl .
[root@centos]# yum -y install openssl Resolving Dependencies --> Running transaction check ---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated ---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update --> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for package: 1:openssl-1.0.1e-60.el7_3.1.x86_64 --> Running transaction check ---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated ---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update --> Finished Dependency Resolution Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Updating: openssl x86_64 1:1.0.1e-60.el7_3.1 updates 713 k Updating for dependencies:
Создать самоподписанный сертификат для OpenLDAP
Это метод создания самоподписанного для нашей предыдущей установки OpenLDAP .
Создать самозаверяющий сертификат OpenLDAP.
openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout /etc/openldap/certs/myldaplocal.pem -days 365 [root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem -keyout /etc/openldap/certs/vmnet.pem -days 365 Generating a 2048 bit RSA private key .............................................+++ ................................................+++ writing new private key to '/etc/openldap/certs/vmnet.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:Califonia Locality Name (eg, city) [Default City]:LA Organization Name (eg, company) [Default Company Ltd]:vmnet Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:centos Email Address []:[email protected] [root@centos]#
Теперь наши сертификаты OpenLDAP должны быть помещены в / etc / openldap / certs /
[root@centos]# ls /etc/openldap/certs/*.pem /etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem [root@centos]#
Как видите, у нас есть и сертификат, и ключ, установленные в каталогах / etc / openldap / certs / . Наконец, нам нужно изменить разрешения для каждого, так как они в настоящее время принадлежат пользователю root.
[root@centos]# chown -R ldap:ldap /etc/openldap/certs/*.pem [root@centos]# ls -ld /etc/openldap/certs/*.pem -rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem -rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem [root@centos]#
Создайте самоподписанный сертификат для веб-сервера Apache
В этом уроке мы будем предполагать, что Apache уже установлен. Мы установили Apache в другом учебнике (настройка CentOS Firewall) и перейдем к расширенной установке Apache для будущего учебника. Итак, если вы еще не установили Apache, пожалуйста, следуйте инструкциям.
После установки Apache HTTPd можно выполнить следующие шаги:
Шаг 1 — Установите mod_ssl для сервера Apache httpd.
Сначала нам нужно настроить Apache с помощью mod_ssl. Используя менеджер пакетов YUM, это довольно просто —
[root@centos]# yum -y install mod_ssl
Затем перезагрузите ваш демон Apache, чтобы убедиться, что Apache использует новую конфигурацию.
[root@centos]# systemctl reload httpd
На этом этапе Apache настроен для поддержки соединений TLS на локальном хосте.
Шаг 2 — Создайте самоподписанный сертификат ssl.
Во-первых, давайте настроим наш личный каталог ключей TLS.
[root@centos]# mkdir /etc/ssl/private [root@centos]# chmod 700 /etc/ssl/private/
Примечание. Убедитесь, что только корень имеет доступ для чтения / записи к этому каталогу. С мировым доступом для чтения / записи ваш закрытый ключ может быть использован для расшифровки прослушанного трафика.
Генерация сертификата и файлов ключей.
[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt Generating a 2048 bit RSA private key ..........+++ ....+++ ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:xx Locality Name (eg, city) [Default City]:xxxx Organization Name (eg, company) [Default Company Ltd]:VMNET Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:centos.vmnet.local Email Address []: [root@centos]#
Примечание. Вы можете использовать публичный IP-адрес сервера, если у вас нет зарегистрированного доменного имени.
Давайте посмотрим на наш сертификат —
[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 17620849408802622302 (0xf489d52d94550b5e) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local Validity Not Before: Feb 24 07:07:55 2017 GMT Not After : Feb 24 07:07:55 2018 GMT Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56: f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a: 57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38: 47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0: 66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5: 31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71: 9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e: 79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89: e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa: ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c: ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59: e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42: 7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f: 5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d: c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81: 6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5: 12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:
Вот объяснение каждой опции, которую мы использовали с командой openssl —
команда | действие |
---|---|
req -X509 | Для управления ключами используйте стандарт PKI управления CSR X.509. |
-nodes | Не защищайте наш сертификат парольной фразой. Apache должен иметь возможность использовать сертификат без прерывания парольной фразы. |
-дней 2555 | Говорит срок действия сертификата до 7 лет или 2555 дней. Период времени можно отрегулировать по мере необходимости. |
-newkey rsa: 2048 | Предназначен для генерации ключа и сертификата с использованием RSA длиной 2048 бит. |
Далее мы хотим создать группу Диффи-Хелимана для ведения переговоров о PFS с клиентами.
[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Это займет от 5 до 15 минут.
Perfect Forward Secrecy — используется для защиты данных сеанса в случае взлома закрытого ключа. Это создаст ключ, используемый между клиентом и сервером, который является уникальным для каждого сеанса.
Теперь добавьте конфигурацию Perfect Forward Secrecy в наш сертификат.
[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt
Настройте Apache для использования файлов ключей и сертификатов
Мы будем вносить изменения в /etc/httpd/conf.d/ssl.conf —
Мы внесем следующие изменения в ssl.conf . Однако, прежде чем мы это сделаем, мы должны создать резервную копию исходного файла. При внесении изменений на рабочий сервер в расширенном текстовом редакторе, таком как vi или emcas , рекомендуется всегда делать резервные копии файлов конфигурации перед внесением изменений.
[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/
Теперь давайте продолжим редактирование после копирования известной рабочей копии ssl.conf в корень нашей домашней папки.
- разместить
- Отредактируйте оба DocumentRoot и ServerName следующим образом.
\\# General setup for the virtual host, inherited from global configuration DocumentRoot "/var/www/html" ServerName centos.vmnet.local:443
DocumentRoot — это путь к каталогу Apache по умолчанию. В этой папке должна быть страница по умолчанию, на которой будет отображаться HTTP-запрос с запросом страницы по умолчанию вашего веб-сервера или сайта.
Имя_сервера — это имя сервера, которое может быть IP-адресом или именем хоста сервера. Для TLS рекомендуется создать сертификат с именем хоста. Из нашего учебного руководства по OpenLdap мы создали имя хоста centos в локальном домене предприятия: vmnet.local
Теперь мы хотим прокомментировать следующие строки.
SSLProtocol
# SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: ~~~~> #SSLProtocol all -SSLv2 # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Затем сообщите Apache, где найти наш сертификат и пару секретных / открытых ключей.
Укажите путь к нашему самозаверяющему файлу сертификата
# Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. A new # certificate can be generated using the genkey(1) command. ~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt specify path to our private key file # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) ~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key
Наконец, нам нужно разрешить входящие подключения к https через порт 443.
Установите веб-сервер Apache CentOS 7
В этой главе мы немного узнаем об истории появления Apache HTTP Server, а затем установим самую последнюю стабильную версию на CentOS Linux 7.
Краткая история о Apache WebServer
Apache — это веб-сервер, который существует уже давно. На самом деле, почти так же долго, как существование самого http!
Apache начинал как довольно небольшой проект в Национальном центре суперкомпьютерных приложений, также известный как NCSA. В середине 90-х «httpd», как его называли, был, безусловно, самой популярной платформой веб-серверов в Интернете, занимая около 90% и более доли рынка.
На этот раз это был простой проект. Квалифицированный ИТ-персонал, известный как веб-мастер, отвечал за: поддержку платформ веб-серверов и программного обеспечения веб-серверов, а также разработку как интерфейсных, так и фоновых сайтов. В основе httpd была его способность использовать пользовательские модули, известные как плагины или расширения. Веб-мастер также был достаточно опытным, чтобы писать патчи для программного обеспечения главного сервера.
Где-то в конце середины 90-х годов старший разработчик и руководитель проекта httpd покинул NCSA, чтобы заняться другими делами. Это оставило самого популярного веб-демона в состоянии стагнации.
Поскольку использование httpd было настолько широко распространено, группа опытных вебмастеров httpd призвала к саммиту, посвященному будущему httpd. Было решено координировать и применять лучшие расширения и исправления в текущем стабильном выпуске. Затем родился нынешний дедушка http-серверов, который получил название Apache HTTP Server.
Малоизвестный исторический факт — Апач не был назван в честь индейского племени воинов. На самом деле он был придуман и назван с изюминкой: он был сделан из множества исправлений (или исправлений) от многих талантливых ученых-компьютерщиков: заплаток или Apache .
Установите текущую стабильную версию на CentOS Linux 7
Шаг 1 — Установите httpd через yum.
yum -y install httpd
На этом этапе Apache HTTP Server будет установлен через yum.
Шаг 2 — Отредактируйте файл httpd.conf, соответствующий вашим потребностям httpd.
При установке Apache по умолчанию файл конфигурации для Apache называется httpd.conf и находится в / etc / httpd / . Итак, давайте откроем его в vim .
Первые несколько строк httpd.conf открылись в vim —
# # This is the main Apache HTTP server configuration file. It contains the # configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. # In particular, see # <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> # for a discussion of each configuration directive.
Мы внесем следующие изменения, чтобы наша установка CentOS обслуживала запросы http от порта http 80.
Прослушивание хоста и порта
# Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 12.34.56.78:80 Listen 80
Отсюда мы меняем Apache для прослушивания определенного порта или IP-адреса. Например, если мы хотим запустить службы httpd на альтернативном порту, таком как 8080. Или если у нас есть наш веб-сервер, настроенный с несколькими интерфейсами с отдельными IP-адресами.
Слушать
Не позволяет Apache подключаться к каждому слушающему демону на каждый IP-адрес. Это полезно, чтобы прекратить указывать только трафик IPv6 или IPv4. Или даже привязка ко всем сетевым интерфейсам на многосетевом хосте.
# # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # Listen 10.0.0.25:80 #Listen 80
DocumentRoot
«Корень документа» — это каталог по умолчанию, в котором Apache будет искать индексный файл для обслуживания запросов при посещении вашего сервера: http://www.yoursite.com/ будет получать и обслуживать индексный файл из корня вашего документа.
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/var/www/html"
Шаг 3 — Запустите и включите службу httpd.
[root@centos rdc]# systemctl start httpd && systemctl reload httpd [root@centos rdc]#
Шаг 4 — Настройте брандмауэр, чтобы разрешить доступ к запросам порта 80.
[root@centos]# firewall-cmd --add-service=http --permanent
Linux Admin — Настройка MySQL на CentOS 7
Как уже говорилось, при настройке CentOS для использования с Maria DB, в репозитории CentOS 7 yum нет собственного пакета MySQL. Чтобы учесть это, нам нужно будет добавить размещенный репозиторий MySQL.
MariaDB против MySQL на CentOS Linux
Стоит отметить, что MySQL потребует другой набор базовых зависимостей от MariaDB. Также использование MySQL нарушит концепцию и философию CentOS: производственные пакеты, разработанные для максимальной надежности.
Поэтому при принятии решения, использовать ли Maria или MySQL, следует взвесить два варианта: будет ли моя текущая схема БД работать с Maria? Какое преимущество дает мне установка MySQL перед Марией?
Компоненты Maria на 100% прозрачны для структуры MySQL, с некоторой дополнительной эффективностью и улучшенным лицензированием. Если нет веских причин, рекомендуется настроить CentOS для использования MariaDB.
Основные причины отдать предпочтение Марии на CentOS —
-
Большинство людей будут использовать MariaDB. При возникновении проблем вы получите больше помощи с Марией.
-
CentOS предназначен для бега с Марией. Следовательно, Мария предложит лучшую стабильность.
-
Мария официально поддерживается CentOS.
Большинство людей будут использовать MariaDB. При возникновении проблем вы получите больше помощи с Марией.
CentOS предназначен для бега с Марией. Следовательно, Мария предложит лучшую стабильность.
Мария официально поддерживается CentOS.
Загрузите и добавьте репозиторий MySQL
Мы хотим скачать и установить репозиторий MySQL из —
http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
Шаг 1 — Загрузите репозиторий.
Хранилище поставляется удобно упакованным в пакет rpm для легкой установки. Его можно скачать с помощью wget —
[root@centos]# wget http://repo.mysql.com/mysql-community-release-el75.noarch.rpm --2017-02-26 03:18:36-- http://repo.mysql.com/mysql-community-release-el75.noarch.rpm Resolving repo.mysql.com (repo.mysql.com)... 104.86.98.130
Шаг 2 — Установите MySQL из YUM.
Теперь мы можем использовать менеджер пакетов yum для установки MySQL —
[root@centos]# yum -y install mysql-server
Шаг 3 — Запустите и включите MySQL Daemon Service.
[root@centos]# systemctl start mysql [root@centos]# systemctl enable mysql
Шаг 4 — Убедитесь, что наш сервис MySQL запущен и работает.
[root@centos]# netstat -antup | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 6572/mysqld [root@centos]#
Примечание. Мы не пропустим правила брандмауэра. Обычно MySQL настроен на использование доменных сокетов Unix . Это гарантирует, что только веб-сервер стека LAMP, локально, может получить доступ к базе данных MySQL, полностью определяя вектор атаки в программном обеспечении базы данных.
Установите Postfix MTA и IMAP / POP3
Чтобы отправить электронное письмо с нашего сервера CentOS 7, нам потребуется настройка для настройки современного агента пересылки почты (MTA). Mail Transfer Agent — это демон, отвечающий за отправку исходящей почты для пользователей системы или корпоративных интернет-доменов через SMTP.
Стоит отметить, что в этом руководстве рассказывается только о настройке демона для локального использования. Мы не будем вдаваться в подробности о расширенной конфигурации для настройки MTA для бизнес-операций. Это сочетание многих навыков, включая, но не ограничиваясь: DNS, получение статического маршрутизируемого IP-адреса, который не занесен в черный список, и настройка дополнительных параметров безопасности и обслуживания. Короче говоря, это руководство предназначено для ознакомления вас с базовой конфигурацией. Не используйте это руководство для настройки MTA хоста, выходящего в Интернет.
Благодаря совместному вниманию как к безопасности, так и к простоте администрирования, мы выбрали Postfix в качестве MTA для этого урока. MTA по умолчанию, установленный в более старых версиях CentOS, — это Sendmail . Sendmail отличный MTA. Однако, по скромному мнению автора, Postfix попадает в приятное место при рассмотрении следующих заметок для MTA. В самой последней версии CentOS Postfix заменил Sendmail в качестве MTA по умолчанию.
Postfix — это широко используемый и хорошо документированный MTA. Он активно поддерживается и развивается. Это требует минимальной настройки (это просто электронная почта) и эффективно с системными ресурсами (опять же, это просто электронная почта).
Шаг 1 — Установите Postfix из YUM Package Manager.
[root@centos]# yum -y install postfix
Шаг 2 — Настройте файл конфигурации Postfix.
Файл конфигурации Postfix находится в /etc/postfix/main.cf
В простой конфигурации Postfix для конкретного хоста должны быть настроены следующие параметры: имя хоста, домен, источник, inet_interfaces и пункт назначения.
Настройте имя хоста — имя хоста — это полное доменное имя хоста Postfix. В главе OpenLDAP мы назвали поле CentOS: centos в домене vmnet.local . Давайте придерживаться этого в этой главе.
# The myhostname parameter specifies the internet hostname of this # mail system. The default is to use the fully-qualified domain name # from gethostname(). $myhostname is used as a default value for many # other configuration parameters. # myhostname = centos.vmnet.local
Настройте домен. Как указано выше, домен, который мы будем использовать в этом руководстве, называется vmnet.local.
# The mydomain parameter specifies the local internet domain name. # The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration # parameters. # mydomain = vmnet.local
Настройка источника — для настройки одного сервера и домена нам просто нужно раскомментировать следующие разделы и оставить переменные Postfix по умолчанию.
# SENDING MAIL # # The myorigin parameter specifies the domain that locally-posted # mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up # a domain-wide alias database that aliases each user to # [email protected]. # # For the sake of consistency between sender and recipient addresses, # myorigin also specifies the default domain name that is appended # to recipient addresses that have no @domain part. # myorigin = $myhostname myorigin = $mydomain
Настройте сетевые интерфейсы — мы оставим Postfix прослушивать наш единый сетевой интерфейс и все протоколы и IP-адреса, связанные с этим интерфейсом. Это можно сделать, просто оставив настройки по умолчанию для Postfix.
# The inet_interfaces parameter specifies the network interface # addresses that this mail system receives mail on. By default, # the software claims all active interfaces on the machine. The # parameter also controls delivery of mail to user@[ip.address]. # # See also the proxy_interfaces parameter, for network addresses that # are forwarded to us via a proxy or network address translator. # # Note: you need to stop/start Postfix when this parameter changes. # #inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost # Enable IPv4, and IPv6 if supported inet_protocols = all
Шаг 3 — Настройте поддержку SASL для Postfix.
Без поддержки аутентификации SASL Postfix будет разрешать отправку электронной почты только локальным пользователям. Или это даст ошибку ретрансляции отказа, когда пользователи отправляют электронную почту из локального домена.
Примечание. SASL или Simple Application Security Layer Framework — это платформа, разработанная для аутентификации, поддерживающая различные методы среди различных протоколов уровня приложений. Вместо того чтобы оставлять механизмы аутентификации на уровне протокола прикладного уровня, разработчики (и потребители) SASL используют существующие протоколы аутентификации для протоколов более высокого уровня, которые могут не иметь встроенной удобной или более безопасной аутентификации (если говорить о доступе к защищенным сервисам).
Установите пакет «cyrus-sasl *»
[root@centos]# yum -y install cyrus-sasl Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: repos.forethought.net * extras: repos.dfw.quadranet.com * updates: mirrors.tummy.com Package cyrus-sasl-2.1.26-20.el7_2.x86_64 already installed and latest version Nothing to do
Настройте /etc/postfix/main.cf для аутентификации SASL
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
Мои параметры SASL в main.conf
##Configure SASL Options Entries: smtpd_sasl_auth_enable = yes smptd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtp_sasl_type = dovecot smtp_sasl_path = private/auth/etc
Шаг 4 — Настройте FirewallD для разрешения входящих SMTP-сервисов.
[root@centos]# firewall-cmd --permanent --add-service=smtp success [root@centos]# firewall-cmd --reload success [root@centos]#
Теперь давайте проверим, чтобы наш хост CentOS разрешал и отвечал на запросы через порт 25 (SMTP).
Nmap scan report for 172.16.223.132 Host is up (0.00035s latency). Not shown: 993 filtered ports PORT STATE SERVICE 20/tcp closed ftp-data 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 389/tcp open ldap 443/tcp open https MAC Address: 00:0C:29:BE:DF:5F (VMware)
Как видите, SMTP прослушивает, а демон отвечает на запросы из нашей внутренней локальной сети.
Установите Dovecot IMAP и POP3 сервер
Dovecot — это защищенный сервер IMAP и POP3, предназначенный для обработки входящих сообщений от небольших до крупных организаций. Благодаря его активному использованию с CentOS, мы будем использовать Dovecot в качестве примера установки и настройки сервера входящей почты для CentOS и MTA SASL Provider.
Как отмечалось ранее, мы не будем настраивать записи MX для DNS или создавать безопасные правила, позволяющие нашим службам обрабатывать почту для домена. Следовательно, установка этих служб на хосте, выходящем в Интернет, может освободить место для дыр в безопасности без записей SPF.
Шаг 1 — Установите Dovecot.
[root@centos]# yum -y install dovecot
Шаг 2 — Настройте голубятню.
Основной файл конфигурации для dovecot находится по адресу: /etc/dovecot.conf . Сначала мы создадим резервную копию основного файла конфигурации. Рекомендуется всегда делать резервные копии файлов конфигурации перед внесением изменений. Таким образом, разрывы строк идентификатора (например) уничтожаются текстовым редактором, и годы изменений теряются. Возврат легко, как копирование текущей резервной копии в производство.
Включить протоколы и службу демона для dovecot
# Protocols we want to be serving. protocols = imap imaps pop3 pop3s
Теперь нам нужно включить демон dovecot для прослушивания при запуске —
[root@localhost]# systemctl start dovecot [root@localhost]# systemctl enable dovecot
Давайте удостоверимся, что Dovecot прослушивает локально на указанных портах: imap, pop3, imap secure и pop3 secure.
[root@localhost]# netstat -antup | grep dovecot tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 4368/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 4368/dovecot tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 4368/dovecot tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 4368/dovecot tcp6 0 0 :::110 :::* LISTEN 4368/dovecot tcp6 0 0 :::143 :::* LISTEN 4368/dovecot tcp6 0 0 :::993 :::* LISTEN 4368/dovecot tcp6 0 0 :::995 :::* LISTEN 4368/dovecot [root@localhost]#
Как видно, dovecot прослушивает указанные порты для IPv4 и IPv4.
POP3 | 110 |
POP3s | 995 |
IMAP | 143 |
IMAPs | +993 |
Теперь нам нужно сделать некоторые правила брандмауэра.
[root@localhost]# firewall-cmd --permanent --add-port=110/tcp success [root@localhost]# firewall-cmd --permanent --add-port=143/tcp success [root@localhost]# firewall-cmd --permanent --add-port=995/tcp success [root@localhost]# firewall-cmd --permanent --add-port=993/tcp success [root@localhost]# firewall-cmd --reload success [root@localhost]#
Наш сервер входящей почты принимает запросы на POP3 , POP3 , IMAP и IMAP к хостам в локальной сети.
Port Scanning host: 192.168.1.143 Open TCP Port: 21 ftp Open TCP Port: 22 ssh Open TCP Port: 25 smtp Open TCP Port: 80 http Open TCP Port: 110 pop3 Open TCP Port: 143 imap Open TCP Port: 443 https Open TCP Port: 993 imaps Open TCP Port: 995 pop3s
Linux Admin — установить анонимный FTP
Прежде чем углубиться в установку FTP на CentOS, нам нужно немного узнать о его использовании и безопасности. FTP — это действительно эффективный и хорошо проработанный протокол для передачи файлов между компьютерными системами. FTP используется и совершенствуется уже несколько десятилетий. Для эффективной передачи файлов по сети с задержкой или для высокой скорости FTP является отличным выбором. Больше, чем SAMBA или SMB.
Тем не менее, FTP имеет некоторые проблемы с безопасностью. На самом деле, некоторые серьезные проблемы с безопасностью. FTP использует очень слабый метод аутентификации в виде простого текста. Именно по этой причине аутентифицированные сеансы должны полагаться на sFTP или FTPS, где TLS используется для сквозного шифрования сеансов входа и передачи.
С учетом вышеуказанных предостережений простой старый FTP по-прежнему находит применение в бизнес-среде. Основное использование — анонимные хранилища файлов FTP. Это ситуация, когда не требуется аутентификация для загрузки или загрузки файлов. Некоторые примеры использования анонимного FTP:
-
Крупные софтверные компании по-прежнему используют анонимные FTP-репозитории, позволяющие пользователям Интернета загружать условно-бесплатные программы и исправления.
-
Разрешение пользователям Интернета загружать и скачивать публичные документы.
-
Некоторые приложения автоматически отправляют зашифрованные, заархивированные журналы или файлы конфигурации в хранилище по FTP.
Крупные софтверные компании по-прежнему используют анонимные FTP-репозитории, позволяющие пользователям Интернета загружать условно-бесплатные программы и исправления.
Разрешение пользователям Интернета загружать и скачивать публичные документы.
Некоторые приложения автоматически отправляют зашифрованные, заархивированные журналы или файлы конфигурации в хранилище по FTP.
Следовательно, будучи администратором CentOS, возможность устанавливать и настраивать FTP по-прежнему остается искусством.
Мы будем использовать демон FTP с именем vsFTP или Very Secure FTP Daemon. vsFTP был использован в разработке некоторое время. Он имеет репутацию безопасного, простого в установке и настройке и надежного.
Шаг 1 — Установите vsFTPd с помощью диспетчера пакетов YUM.
[root@centos]# yum -y install vsftpd.x86_64
Шаг 2 — Настройте vsFTP для запуска при загрузке с systemctl.
[root@centos]# systemctl start vsftpd [root@centos]# systemctl enable vsftpd Created symlink from /etc/systemd/system/multi- user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
Шаг 3 — Настройте FirewallD, чтобы разрешить FTP управление и сеансы передачи.
[root@centos]# firewall-cmd --add-service=ftp --permanent success [root@centos]#
Убедитесь, что наш FTP-демон работает.
[root@centos]# netstat -antup | grep vsftp tcp6 0 0 :::21 :::* LISTEN 13906/vsftpd [root@centos]#
Шаг 4 — Настройте vsFTPD для анонимного доступа.
Создать корневой каталог FTP
[root@centos]# mkdir /ftp
Смена владельца и группы FTP-root на ftp
[root@centos]# chown ftp:ftp /ftp Set minimal permissions for FTP root: [root@centos]# chmod -R 666 /ftp/ [root@centos]# ls -ld /ftp/ drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01 /ftp/ [root@centos]#
В этом случае мы предоставили пользователям доступ на чтение / запись ко всему корневому дереву FTP.
Настройте /etc/vsftpd/vsftpd.conf «
[root@centos]# vim /etc/vsftpd/vsftpd.conf # Example config file /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.
Мы хотим изменить следующие директивы в файле vsftp.conf .
-
Включить анонимную загрузку, раскомментировав anon_mkdir_write_enable = YES
-
chown загруженные файлы принадлежат пользователю системы ftp
chown_uploads = ДА
chown_username = ftp
-
Измените системного пользователя, используемого vsftp, на пользователя ftp: nopriv_user = ftp
-
Установите пользовательский баннер для чтения пользователем перед входом в систему.
ftpd_banner = Добро пожаловать на наш анонимный FTP репо. Все соединения контролируются и регистрируются.
-
Давайте установим только соединения IPv4 —
слушай = ДА
listen_ipv6 = НЕТ
Включить анонимную загрузку, раскомментировав anon_mkdir_write_enable = YES
chown загруженные файлы принадлежат пользователю системы ftp
chown_uploads = ДА
chown_username = ftp
Измените системного пользователя, используемого vsftp, на пользователя ftp: nopriv_user = ftp
Установите пользовательский баннер для чтения пользователем перед входом в систему.
ftpd_banner = Добро пожаловать на наш анонимный FTP репо. Все соединения контролируются и регистрируются.
Давайте установим только соединения IPv4 —
слушай = ДА
listen_ipv6 = НЕТ
Теперь нам нужно перезапустить или подключить службу vsftp, чтобы применить наши изменения.
[root@centos]# systemctl restart vsftpd
Давайте подключимся к нашему FTP-хосту и убедимся, что наш FTP-демон отвечает.
[root@centos rdc]# ftp 10.0.4.34 Connected to localhost (10.0.4.34). 220 Welcome to our Anonymous FTP Repo. All connections are monitored and logged. Name (localhost:root): anonymous 331 Please specify the password. Password: '230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
Linux Admin — Удаленное управление
Говоря об удаленном управлении в CentOS в качестве администратора, мы рассмотрим два метода:
- Консольное управление
- Управление GUI
Удаленное управление консолью
Удаленное управление консолью означает выполнение задач администрирования из командной строки через службу, такую как ssh. Чтобы эффективно использовать CentOS Linux, как администратор, вам нужно хорошо разбираться в командной строке. Linux в своей основе был разработан для использования с консоли. Даже сегодня некоторые системные администраторы предпочитают мощь команды и экономят деньги на оборудовании, выполняя обычные Linux-боксы без физического терминала и без установленного графического интерфейса.
Удаленное управление GUI
Удаленное управление графическим интерфейсом обычно выполняется двумя способами: либо удаленным сеансом X-Session, либо протоколом уровня приложения GUI, таким как VNC. У каждого есть свои сильные и слабые стороны. Однако по большей части VNC является лучшим выбором для администрирования. Это позволяет графическое управление из других операционных систем, таких как Windows или OS X, которые изначально не поддерживают протокол X Windows.
Использование удаленных сеансов X является родным для оконных менеджеров X-Window и DesktopManager, работающих на X. Однако вся архитектура сеансов X в основном используется в Linux. Не каждый системный администратор будет иметь под рукой портативный компьютер Linux для установки удаленного сеанса X. Поэтому чаще всего используется адаптированная версия VNC Server.
Самыми большими недостатками VNC являются: VNC изначально не поддерживает многопользовательскую среду, такую как удаленные X-сеансы. Следовательно, для доступа GUI к конечным пользователям удаленные XSessions будут лучшим выбором. Однако в основном мы занимаемся удаленным администрированием сервера CentOS.
Мы обсудим настройку VNC для нескольких администраторов против нескольких сотен конечных пользователей с удаленными X-сессиями.
Создание основы для безопасности с помощью SSH для удаленного консольного доступа
Теперь ssh или Secure Shell являются стандартом для удаленного администрирования любого сервера Linux. SSH в отличие от telnet использует TLS для аутентификации и сквозного шифрования сообщений. При правильной настройке администратор может быть уверен, что и его пароль, и сервер доверены удаленно.
Перед настройкой SSH, давайте немного поговорим о базовой безопасности и наименьшем общем доступе. Когда SSH работает на порте по умолчанию 22; скорее, чем позже, вы начнете подвергаться атакам методом перебора словаря по общим именам пользователей и паролям. Это только идет с территорией. Независимо от того, сколько хостов вы добавляете в свои запрещенные файлы, они будут ежедневно приходить с разных IP-адресов.
С помощью нескольких общих правил вы можете просто предпринять некоторые активные шаги и позволить злодеям тратить свое время. Ниже приведены несколько правил безопасности, которым необходимо следовать при использовании SSH для удаленного администрирования на рабочем сервере.
-
Никогда не используйте общее имя пользователя или пароль. Имена пользователей в системе не должны быть системными по умолчанию или связаны с адресом электронной почты компании, например: [email protected]
-
Корневой доступ или административный доступ не должны быть разрешены через SSH. Используйте уникальное имя пользователя и su для root или учетной записи администратора после аутентификации через SSH.
-
Политика паролей обязательна: сложные пароли пользователей SSH, такие как: «Это и есть, и GUD & P @ ssW0rd & 24 & me». Меняйте пароли каждые несколько месяцев, чтобы исключить вероятность атак с использованием грубой силы.
-
Отключите заброшенные или неиспользованные учетные записи в течение длительного периода времени. Если у менеджера по найму есть голосовая почта с указанием, что он не будет давать интервью в течение месяца; например, это может привести к технически подкованным людям, у которых много времени.
-
Смотрите ваши логи ежедневно. Как системный администратор, посвящайте журналам системы и безопасности каждое утро не менее 30-40 минут. Если вас спросят, дайте всем знать, что у вас нет времени не проявлять инициативу. Эта практика поможет изолировать предупреждающие знаки до того, как проблема окажется перед конечными пользователями и прибылью компании.
Никогда не используйте общее имя пользователя или пароль. Имена пользователей в системе не должны быть системными по умолчанию или связаны с адресом электронной почты компании, например: [email protected]
Корневой доступ или административный доступ не должны быть разрешены через SSH. Используйте уникальное имя пользователя и su для root или учетной записи администратора после аутентификации через SSH.
Политика паролей обязательна: сложные пароли пользователей SSH, такие как: «Это и есть, и GUD & P @ ssW0rd & 24 & me». Меняйте пароли каждые несколько месяцев, чтобы исключить вероятность атак с использованием грубой силы.
Отключите заброшенные или неиспользованные учетные записи в течение длительного периода времени. Если у менеджера по найму есть голосовая почта с указанием, что он не будет давать интервью в течение месяца; например, это может привести к технически подкованным людям, у которых много времени.
Смотрите ваши логи ежедневно. Как системный администратор, посвящайте журналам системы и безопасности каждое утро не менее 30-40 минут. Если вас спросят, дайте всем знать, что у вас нет времени не проявлять инициативу. Эта практика поможет изолировать предупреждающие знаки до того, как проблема окажется перед конечными пользователями и прибылью компании.
Примечание о безопасности Linux. Любой, кто интересуется администрированием Linux, должен активно следить за текущими новостями и технологиями Cyber-Security. В то время как мы в основном слышим о взломе других операционных систем, небезопасный Linux-пакет является востребованным сокровищем для киберпреступников. Обладая мощью Linux на высокоскоростном интернет-соединении, опытный киберпреступник может использовать Linux для усиления атак на другие операционные системы.
Установите и настройте SSH для удаленного доступа
Шаг 1 — Установите SSH Server и все зависимые пакеты.
[root@localhost]# yum -y install openssh-server 'Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: repos.centos.net * extras: repos.dfw.centos.com * updates: centos.centos.com Resolving Dependencies --> Running transaction check ---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed --> Finished Dependency Resolution Dependencies Resolved
Шаг 2. Сделайте безопасное регулярное использование для доступа к оболочке.
[root@localhost ~]# useradd choozer [root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G wheel -a choozer
Примечание. Мы добавили нового пользователя в группу wheel, что позволило ему войти в root после аутентификации доступа SSH. Мы также использовали имя пользователя, которого нет в общих списках слов. Таким образом, наша учетная запись не будет заблокирована при атаке по SSH.
Файл с настройками конфигурации для сервера sshd — это / etc / ssh / sshd_config .
Части, которые мы хотим редактировать изначально:
LoginGraceTime 60m PermitRootLogin no
Шаг 3 — Перезагрузите SSH-демон sshd .
[root@localhost]# systemctl reload sshd
Рекомендуется установить льготный период выхода из системы на 60 минут. Некоторые сложные задачи администрирования могут превышать значение по умолчанию, равное 2 минутам. Нет ничего более расстраивающего, чем тайм-аут сеанса SSH при настройке или исследовании изменений.
Шаг 4 — Давайте попробуем войти в систему, используя учетные данные root.
bash-3.2# ssh centos.vmnet.local [email protected]'s password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Шаг 5 — Мы больше не можем входить удаленно через ssh с правами root . Итак, давайте войдем в нашу непривилегированную учетную запись пользователя и su в корневой учетной записи.
bash-3.2# ssh [email protected] [email protected]'s password: [choozer@localhost ~]$ su root Password: [root@localhost choozer]#
Шаг 6 — Наконец, давайте удостоверимся, что служба SSHD загружается при загрузке, а firewalld разрешает внешние соединения SSH.
[root@localhost]# systemctl enable sshd [root@localhost]# firewall-cmd --permanent --add-service=ssh success [root@localhost]# firewall-cmd --reload success [root@localhost]#
Теперь SSH настроен и готов к удаленному администрированию. В зависимости от границы вашего предприятия может потребоваться настроить устройство границы фильтрации пакетов, чтобы разрешить удаленное администрирование SSH за пределами корпоративной локальной сети.
Настройте VNC для удаленного администрирования CentOS
Есть несколько способов включить удаленное администрирование CentOS через VNC в CentOS 6-7. Самый простой, но самый ограниченный способ — это просто использовать пакет, называемый vino . Vino — это приложение для подключения к виртуальной сети для Linux, разработанное на платформе Gnome Desktop. Следовательно, предполагается, что установка была завершена с помощью Gnome Desktop. Если Gnome Desktop не был установлен, сделайте это, прежде чем продолжить. По умолчанию Vino будет установлен с графическим интерфейсом Gnome.
Чтобы настроить совместное использование экрана с Vino в Gnome, мы хотим перейти в системные настройки CentOS для совместного использования экрана.
Applications->System Tools->Settings->Sharing
Примечания к настройке VNC Desktop Sharing —
-
Отключить Новые подключения должны запрашивать доступ — эта опция потребует физического доступа для подтверждения каждого подключения. Эта опция предотвратит удаленное администрирование, если кто-то не находится на физическом рабочем столе.
-
Включить Требуется пароль — это отдельно от пароля пользователя. Он будет контролировать доступ к виртуальному рабочему столу и по-прежнему требовать пароль пользователя для доступа к заблокированному рабочему столу (это полезно для безопасности).
-
Переадресация портов UP & P: если доступно, оставьте отключенным — Переадресация портов UP & P будет отправлять запросы Universal Plug and Play для устройства уровня 3, чтобы автоматически разрешать VNC-соединения с хостом. Мы не хотим этого.
Отключить Новые подключения должны запрашивать доступ — эта опция потребует физического доступа для подтверждения каждого подключения. Эта опция предотвратит удаленное администрирование, если кто-то не находится на физическом рабочем столе.
Включить Требуется пароль — это отдельно от пароля пользователя. Он будет контролировать доступ к виртуальному рабочему столу и по-прежнему требовать пароль пользователя для доступа к заблокированному рабочему столу (это полезно для безопасности).
Переадресация портов UP & P: если доступно, оставьте отключенным — Переадресация портов UP & P будет отправлять запросы Universal Plug and Play для устройства уровня 3, чтобы автоматически разрешать VNC-соединения с хостом. Мы не хотим этого.
Убедитесь, что Vino прослушивает порт VNC 5900.
[root@localhost]# netstat -antup | grep vino tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 4873/vino-server tcp6 0 0 :::5900 :::* LISTEN 4873/vino-server [root@localhost]#
Давайте теперь настроим наш брандмауэр, чтобы разрешить входящие соединения VNC.
[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp success [root@localhost]# firewall-cmd --reload success [root@localhost rdc]#
Наконец, как вы можете видеть, мы можем подключить наш CentOS Box и администрировать его с помощью клиента VNC в Windows или OS X.
Столь же важно соблюдать те же правила для VNC, что и для SSH. Как и SSH, VNC постоянно сканируется по всем диапазонам IP и проверяется на наличие слабых паролей. Стоит также отметить, что сохранение входа в систему CentOS по умолчанию с тайм-аутом консоли помогает в обеспечении безопасности удаленного VNC. Поскольку злоумышленнику понадобятся VNC и пароль пользователя, убедитесь, что ваш пароль для общего доступа к экрану отличается и его так же сложно угадать, как и пароль пользователя.
После ввода пароля общего доступа к экрану VNC мы также должны ввести пароль пользователя для доступа к заблокированному рабочему столу.
Примечание по безопасности — по умолчанию VNC не является зашифрованным протоколом. Следовательно, соединение VNC должно быть туннелировано через SSH для шифрования.
Настройте SSH-туннель через VNC
Настройка туннеля SSH обеспечит уровень шифрования SSH для туннелирования через VNC-соединение. Еще одна замечательная особенность — он использует сжатие SSH, чтобы добавить еще один уровень сжатия в обновления экрана графического интерфейса VNC. Более безопасный и быстрый способ всегда полезен при администрировании серверов CentOS!
Итак, от вашего клиента, который будет инициировать соединение VNC, давайте настроим удаленный туннель SSH. В этой демонстрации мы используем OS X. Сначала нам нужно sudo -s для root .
bash-3.2# sudo -s password:
Введите пароль пользователя, и теперь у нас должна быть корневая оболочка с приглашением # —
bash-3.2#
Теперь давайте создадим наш SSH-туннель .
ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
Давайте разберем эту команду —
-
ssh — запускает локальную утилиту ssh
-
-f — ssh должен запускаться в фоновом режиме после полного выполнения задачи
-
[email protected] — удаленный пользователь ssh на сервере CentOS, на котором размещены службы VNC
-
-L 2200: 192.168.1.143: 5900 — Создать наш туннель [Локальный порт]: [удаленный хост]: [удаленный порт службы VNC]
-
-N говорит SSH, что мы не хотим выполнять команду в удаленной системе
ssh — запускает локальную утилиту ssh
-f — ssh должен запускаться в фоновом режиме после полного выполнения задачи
[email protected] — удаленный пользователь ssh на сервере CentOS, на котором размещены службы VNC
-L 2200: 192.168.1.143: 5900 — Создать наш туннель [Локальный порт]: [удаленный хост]: [удаленный порт службы VNC]
-N говорит SSH, что мы не хотим выполнять команду в удаленной системе
bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N [email protected]'s password:
После успешного ввода пароля удаленного пользователя ssh создается наш ssh-туннель . Теперь о крутой части! Для подключения мы указываем наш VNC-клиент на локальный хост на порту нашего туннеля, в данном случае на порт 2200. Ниже приведена конфигурация на VNC-клиенте для ноутбука Mac —
И, наконец, наше удаленное VNC Desktop Connection!
Крутая вещь в SSH-туннелировании заключается в том, что его можно использовать практически для любого протокола. Туннели SSH обычно используются для обхода фильтрации выходных и входных портов провайдером, а также для трюков прикладного уровня IDS / IPS, избегая при этом мониторинга других сеансовых уровней.
-
Ваш Интернет-провайдер может фильтровать порт 5900 для некоммерческих учетных записей, но разрешить SSH на порту 22 (или можно запустить SSH на любом порту, если порт 22 отфильтрован).
-
IPS и IDS уровня приложения смотрят на полезную нагрузку. Например, общее переполнение буфера или SQL-инъекция. Сквозное шифрование SSH будет шифровать данные прикладного уровня.
Ваш Интернет-провайдер может фильтровать порт 5900 для некоммерческих учетных записей, но разрешить SSH на порту 22 (или можно запустить SSH на любом порту, если порт 22 отфильтрован).
IPS и IDS уровня приложения смотрят на полезную нагрузку. Например, общее переполнение буфера или SQL-инъекция. Сквозное шифрование SSH будет шифровать данные прикладного уровня.
SSH Tunneling — отличный инструмент в наборе инструментов администратора Linux для достижения цели. Однако, как администратор, мы хотим изучить возможность блокировки доступа менее привилегированных пользователей, имеющих доступ к SSH-туннелированию.
Примечание по безопасности администрирования. Ограничение туннелирования SSH требует от администратора обдумывания. Оценка того, зачем пользователям нужен SSH Tunneling; какие пользователи нуждаются в туннелировании; наряду с практической вероятностью риска и наихудшим воздействием.
Это сложная тема, выходящая за рамки учебника начального уровня. Исследование по этой теме рекомендуется для тех, кто хочет достичь высших эшелонов администрирования CentOS Linux.
Используйте SSH Tunnel для удаленного X-Windows
Дизайн X-Windows в Linux действительно аккуратный по сравнению с Windows. Если мы хотим управлять удаленным Linux-модулем из другого Linux-модуля, мы можем воспользоваться механизмами, встроенными в X.
X-Windows (часто называемая просто «X») предоставляет механизм для отображения окон приложений, происходящих из одного блока Linux, в часть отображения X на другом блоке Linux. Таким образом, через SSH мы можем запросить пересылку приложения X-Windows на дисплей другого Linux-бокса по всему миру!
Чтобы запустить приложение X удаленно через ssh-туннель, нам просто нужно запустить одну команду —
[root@localhost]# ssh -X [email protected]
Синтаксис — ssh -X [пользователь] @ [хост], и на хосте должен быть запущен ssh с действительным пользователем.
Ниже приведен скриншот GIMP, работающего на рабочей станции Ubuntu через удаленный туннель XWindows ssh.
Довольно просто запускать приложения удаленно с другого сервера Linux или рабочей станции. Также можно запустить весь сеанс X и получить всю рабочую среду удаленно несколькими способами.
-
XDMCP
-
Безголовые программные пакеты, такие как NX
-
Конфигурирование альтернативных дисплеев и рабочих столов в X и менеджерах рабочего стола, таких как Gnome или KDE
XDMCP
Безголовые программные пакеты, такие как NX
Конфигурирование альтернативных дисплеев и рабочих столов в X и менеджерах рабочего стола, таких как Gnome или KDE
Этот метод чаще всего используется для безголовых серверов без физического отображения и действительно выходит за рамки начального уровня промежуточного уровня. Тем не менее, полезно знать о доступных вариантах.
Linux Admin — Мониторинг трафика в CentOS
Существует несколько сторонних инструментов, которые могут добавить расширенные возможности для мониторинга трафика CentOS. В этом руководстве мы сосредоточимся на тех, которые упакованы в основные репозитории CentOS и репозиторий Fedora EPEL.
Всегда будут ситуации, когда у Администратора (по той или иной причине) остаются только инструменты в основных репозиториях CentOS. Большинство обсуждаемых утилит предназначены для использования администратором с оболочкой физического доступа. При мониторинге трафика с помощью доступного веб-интерфейса лучше всего использовать сторонние утилиты, такие как ntop-ng или Nagios (вместо воссоздания таких возможностей с нуля).
Для дальнейшего изучения обоих настраиваемых решений для веб-интерфейса, ниже приведены несколько ссылок для начала исследований.
Мониторинг трафика для сценариев LAN / WAN
Nagios
Nagios существует уже долгое время, поэтому он испытан и опробован. В какой-то момент все это было бесплатно и с открытым исходным кодом, но с тех пор оно перешло в решение Enterprise с платными моделями лицензирования, чтобы удовлетворить потребность в совершенствовании Enterprise. Следовательно, прежде чем планировать какие-либо развертывания с помощью Nagios, убедитесь, что лицензионные версии с открытым исходным кодом будут соответствовать вашим потребностям или планируйте расходы с учетом корпоративного бюджета.
Большинство программного обеспечения для мониторинга трафика Nagios с открытым исходным кодом можно найти по адресу: https://www.nagios.org
Для краткой истории Nagious, вот официальная страница истории Nagios: https://www.nagios.org/about/history/
ntopng
Еще один замечательный инструмент, позволяющий контролировать пропускную способность и трафик через веб-интерфейс, называется ntopng . ntopng похож на утилиту Unix ntop и может собирать данные для всей локальной или глобальной сети. Предоставление веб-интерфейса для администрирования, настройки и создания диаграмм упрощает использование для всех ИТ-отделов.
Как и Nagious, ntopng предлагает как открытые, так и платные корпоративные версии. Для получения дополнительной информации о ntopng , пожалуйста, посетите веб-сайт: http://www.ntop.org/
Установите Fedora EPEL Repository ─ Дополнительные пакеты для Enterprise Linux
Чтобы получить доступ к некоторым необходимым инструментам для мониторинга трафика, нам необходимо настроить нашу систему CentOS для использования репозитория EPEL.
Репозиторий EPEL официально не поддерживается и не поддерживается CentOS. Тем не менее, группа добровольцев Fedora Core поддерживает его для работы с пакетами, обычно используемыми профессионалами Enterprise Linux, не входящими ни в CentOS, ни в Fedora Core, ни в Red Hat Linux Enterprise.
Осторожно —
Помните, что репозиторий EPEL не является официальным для CentOS и может нарушать совместимость и функциональность на производственных серверах с общими зависимостями. Учитывая это, рекомендуется всегда тестировать на непроизводственном сервере, на котором выполняются те же сервисы, что и на производстве, перед развертыванием на критической системе.
Действительно, самое большое преимущество использования репозитория EHEL перед любым другим сторонним репозиторием с CentOS заключается в том, что мы можем быть уверены, что двоичные файлы не испорчены. Рекомендуется не использовать репозитории из ненадежного источника.
Учитывая все вышесказанное, официальный репозиторий EPEL настолько распространен в CentOS, что его легко установить через YUM.
[root@CentOS rdc]# yum -y install epel-release Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: repo1.dal.innoscale.net * extras: repo1.dal.innoscale.net * updates: mirror.hmc.edu Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-9 will be installed --> Finished Dependency Resolution Dependencies Resolved --{ condensed output }--
После установки репозитория EPEL мы захотим обновить его.
[root@CentOS rdc]# yum repolist Loaded plugins: fastestmirror, langpacks epel/x86_64/metalink | 11 kB 00:00:00 epel | 4.3 kB 00:00:00 (1/3): epel/x86_64/group_gz | 170 kB 00:00:00 (2/3): epel/x86_64/updateinfo | 753 kB 00:00:01 (3/3): epel/x86_64/primary_db --{ condensed output }--
На этом этапе наш EPEL-репозиторий должен быть настроен и готов к использованию. Начнем с установки nload для мониторинга пропускной способности интерфейса.
Инструменты, на которых мы сосредоточимся в этом уроке:
- nload
- NTOP
- ifstst
- iftop
- vnstat
- чистые свиньи
- Wireshark
- TCP Dump
- Трассировка
Все они являются стандартными для мониторинга трафика в Linux Enterprises. Использование каждого диапазона от простого до продвинутого, поэтому мы лишь кратко обсудим такие инструменты, как Wireshark и TCP Dump.
Установите и используйте nload
С нашими репозиториями EPEL, установленными и настроенными в CentOS, мы теперь сможем установить и использовать nload . Эта утилита предназначена для составления графика пропускной способности каждого интерфейса в режиме реального времени.
Как и большинство других базовых установок, nload устанавливается через менеджер пакетов YUM.
[root@CentOS rdc]# yum -y install nload Resolving Dependencies --> Running transaction check ---> Package nload.x86_64 0:0.7.4-4.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Installing: nload x86_64 0.7.4-4.el7 epel 70 k Transaction Summary =============================================================================== =============================================================================== Install 1 Package Total download size: 70 k Installed size: 176 k Downloading packages: --{ condensed output }--
Теперь у нас установлен nload , и использовать его довольно просто.
[root@CentOS rdc]# nload enp0s5
nload будет контролировать указанный интерфейс. В этом случае enp0s5 интерфейс Ethernet в режиме реального времени от терминала для загрузки сетевого трафика и использования полной полосы пропускания.
Как видно, nload будет отображать как входящие, так и исходящие данные из указанного интерфейса, наряду с предоставлением физического представления потока данных с помощью хеш-меток «#».
Изображенный скриншот представляет собой простую веб-страницу, загружаемую некоторым фоновым трафиком демона.
Общие параметры командной строки для nload —
команда | действие |
---|---|
-a | Временной период |
-t | Интервал обновления времени в миллисекундах, по умолчанию 500 |
-u | Устанавливает отображение измерения трафика h |
-U | Устанавливает единицы измерения общего входящего / исходящего трафика те же параметры, что и -u |
Стандартный синтаксис для nload —
nload [options] <interface>
Если интерфейс не указан, nload автоматически захватит первый интерфейс Ethernet. Давайте попробуем измерить общий объем данных в мегабайтах и текущие скорости передачи данных в мегабитах.
[root@CentOS rdc]# nload -U M -u m
Данные, поступающие в / из текущего интерфейса, измеряются в мегабитах в секунду, и каждая строка «Ttl», представляющая общее количество данных, вводимых / выводимых, отображается в мегабайтах.
nload полезен для администратора, чтобы увидеть, сколько данных прошло через интерфейс и сколько данных в настоящее время поступает / выходит из указанного интерфейса.
Чтобы увидеть другие интерфейсы без закрытия nload, просто используйте клавиши со стрелками влево / вправо. Это будет циклически перебирать все доступные интерфейсы в системе.
Можно контролировать несколько интерфейсов одновременно с помощью ключа -m —
[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5
загрузка мониторинга двух интерфейсов одновременно (lo и enp0s5) —
Linux Admin — Управление журналами
systemd изменил способ ведения системного журнала в CentOS Linux. Вместо того, чтобы каждый демон в системе размещал журналы в отдельных местах, а не использовал такие инструменты, как tail или grep, в качестве основного способа сортировки и фильтрации записей журнала, journald предоставил единую точку администрирования для анализа системных журналов.
Основными компонентами ведения журнала systemd являются: journal, jounralctl и journald.conf
journald — это основной демон ведения журнала, который настраивается путем редактирования journald.conf, а journalctl используется для анализа событий, зарегистрированных в journald .
События, регистрируемые journald, включают в себя: события ядра, пользовательские процессы и сервисы демонов.
Установите правильный системный часовой пояс
Перед использованием journalctl мы должны убедиться, что наше системное время установлено на правильное время. Для этого мы хотим использовать timedatectl .
Давайте проверим текущее системное время.
[root@centos rdc]# timedatectl status Local time: Mon 2017-03-20 00:14:49 MDT Universal time: Mon 2017-03-20 06:14:49 UTC RTC time: Mon 2017-03-20 06:14:49 Time zone: America/Denver (MDT, -0600) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2017-03-12 01:59:59 MST Sun 2017-03-12 03:00:00 MDT Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2017-11-05 01:59:59 MDT Sun 2017-11-05 01:00:00 MST [root@centos rdc]#
В настоящее время система соответствует местному часовому поясу. Если вашей системы нет, давайте установим правильный часовой пояс. После изменения настроек CentOS автоматически рассчитает смещение часового пояса относительно текущего часового пояса, сразу же настроив системные часы.
Давайте перечислим все часовые пояса с timedatectl —
[root@centos rdc]# timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau
Это оспариваемый вывод timedatectl list-timezones . Чтобы найти определенный местный часовой пояс, можно использовать команду grep —
[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" America/New_York [root@centos rdc]#
Метка, используемая CentOS, обычно представляет страну / регион с подчеркиванием вместо пробела (New_York против «New York»).
Теперь давайте установим наш часовой пояс —
[root@centos rdc]# timedatectl set-timezone "America/New_York" [root@centos rdc]# date Mon Mar 20 02:28:44 EDT 2017 [root@centos rdc]#
Ваши системные часы должны автоматически настроить время.
Используйте journalctl для анализа логов
Общие параметры командной строки при использовании journalctl —
переключатель | действие |
---|---|
-k | Выводит только сообщения ядра |
-u | Списки по конкретным единицам (httpd, sshd и т. Д.) |
-b | Загружает смещение метки |
-о | Регистрирует выходной формат |
-п | Фильтры по типу журнала (имя или номер) |
-F | Имя поля или значение поля |
—универсальное глобальное время | Время в смещении UTC |
—поскольку | Фильтровать по таймфрейму |
Изучите журналы загрузки
Сначала мы рассмотрим и настроим журналы загрузки в CentOS Linux. Первое, что вы заметите, это то, что CentOS по умолчанию не хранит журнал загрузки, который сохраняется при перезагрузках.
Чтобы проверить журналы загрузки для каждого экземпляра перезагрузки, мы можем выполнить следующую команду:
[root@centos rdc]# journalctl --list-boots -4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT -3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT -2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT -1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT [root@centos rdc]#
После перезагрузки системы мы можем увидеть еще одну запись.
[root@centos rdc]# journalctl --list-boots -5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT -4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT -3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT -2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT -1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT [root@centos rdc]#
Теперь давайте рассмотрим последний экземпляр журнала загрузки —
root@centos rdc]# journalctl -b -5 -- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. -- Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M (max allowed 108.4M Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 ([email protected]. Mar 19 22:01:57 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
Выше сжатый вывод из нашей последней загрузки. Мы также можем сослаться на журнал загрузки по часам, дням, неделям, месяцам и даже годам. Однако по умолчанию CentOS не хранит постоянные журналы загрузки. Чтобы обеспечить постоянное хранение загрузочных журналов, нам нужно внести несколько изменений в конфигурацию:
- Сделать центральные точки хранения для загрузочных журналов
- Дайте соответствующие разрешения новой папке журнала
- Настройте journald.conf для постоянного ведения журнала
Настройка местоположения загрузки для постоянных журналов загрузки
Исходное место journald будет хотеть хранить постоянные журналы загрузки — / var / log / journal . Так как это не существует по умолчанию, давайте создадим это —
[root@centos rdc]# mkdir /var/log/journal
Теперь давайте дадим каталогу соответствующие права доступа к journald daemon —
systemd-tmpfiles --create --prefix /var/log/journal
Наконец, давайте скажем journald, что он должен хранить постоянные журналы загрузки. В vim или вашем любимом текстовом редакторе откройте /etc/systemd/jounrald.conf « .
# See journald.conf(5) for details. [Journal]=Storage=peristent
Строка, с которой мы имеем дело, это Storage = . Сначала удалите комментарий # , затем измените на Storage = persistent, как показано выше. Сохраните и перезагрузите систему CentOS и позаботьтесь о том, чтобы при запуске списка загрузок journalctl было несколько записей.
Примечание . Постоянно изменяющийся идентификатор компьютера, такой как у поставщика VPS, может привести к сбою journald при сохранении постоянных загрузочных журналов. Есть много обходных путей для такого сценария. Лучше ознакомиться с текущими исправлениями, опубликованными на форумах CentOS Admin, чем следовать надежным советам тех, кто нашел правдоподобные обходные пути VPS.
Чтобы изучить конкретный журнал загрузки, нам просто нужно получить каждое смещение с помощью journald —list-boots смещение с ключом -b . Таким образом, чтобы проверить второй журнал загрузки, мы будем использовать —
journalctl -b -2
Значение по умолчанию для -b без указанного смещения журнала загрузки всегда будет текущим журналом загрузки после последней перезагрузки.
Анализировать журналы по типу журнала
События из journald нумеруются и подразделяются на 7 отдельных типов —
0 - emerg :: System is unusable 1 - alert :: Action must be taken immediatly 2 - crit :: Action is advised to be taken immediatly 3 - err :: Error effecting functionality of application 4 - warning :: Usually means a common issue that can affect security or usilbity 5 - info :: logged informtation for common operations 6 - debug :: usually disabled by default to troubleshoot functionality
Следовательно, если мы хотим увидеть все предупреждения, через journalctl можно выполнить следующую команду:
[root@centos rdc]# journalctl -p 4 -- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. -- Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024 (v02 PTLTD ) Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C (v01 INTEL 440BX 06040000 VMW 01 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4 (v04 INTEL 440BX 06040000 PTL 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A (v01 PTLTD Custom 06040000 MSFT 03 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742 (v01 PTLTD ? APIC 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C (v01 PTLTD $PCITBL$ 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8 (v02 VMWARE MEMPLUG 06040000 VMW 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038 (v01 VMWARE VMW HPET 06040000 VMW 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028 (v01 VMWARE VMW WAET 06040000 VMW 00 Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: Mar 19 22:01:57 localhost.localdomain kernel: DMA [mem 0x000010000x00ffffff] Mar 19 22:01:57 localhost.localdomain kernel: DMA32 [mem 0x010000000xffffffff] Mar 19 22:01:57 localhost.localdomain kernel: Normal empty Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x000010000x0009dfff] Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x001000000x95edffff] Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x95f000000x95ffffff] Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order, mobility grouping on. Total pages: 60 Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
Выше показаны все предупреждения за последние 4 дня в системе.
Новый способ просмотра и просмотра журналов с помощью systemd требует небольшой практики и исследований, чтобы ознакомиться с ними. Однако, учитывая разные форматы вывода и особое внимание к тому, чтобы сделать все упакованные журналы демонов универсальными, его стоит принять. journald предлагает большую гибкость и эффективность по сравнению с традиционными методами анализа журналов.
Linux Admin — Резервное копирование и восстановление
Прежде чем исследовать методы развертывания стандартного плана резервного копирования, специфичные для CentOS, давайте сначала обсудим типичные аспекты политики резервного копирования стандартного уровня. Первое, к чему мы хотим привыкнуть, это правило резервного копирования 3-2-1 .
3-2-1 Стратегия резервного копирования
Во всей отрасли вы часто слышите термин «резервная модель 3-2-1». Это очень хороший подход для реализации плана резервного копирования. 3-2-1 определяется следующим образом: 3 копии данных; например, у нас может быть рабочая копия; копия, помещенная на сервер CentOS, предназначенный для резервирования с использованием rsync; и повернутые резервные копии USB сделаны из данных на сервере резервного копирования. 2 разных резервных носителя. На самом деле в этом случае у нас будет три разных носителя для резервного копирования: рабочая копия на SSD ноутбука или рабочей станции, данные сервера CentOS на массиве RADI6 и внешнее резервное копирование на USB-накопители. 1 копия данных вне офиса; мы вращаем USB-накопители вне площадки каждый вечер. Другим современным подходом может быть поставщик облачного резервного копирования.
Восстановление системы
План восстановления на «голое железо» — это просто план, разработанный администратором CentOS, для обеспечения работы жизненно важных систем со всеми нетронутыми данными. Предполагая 100% системный сбой и потерю всего предыдущего системного оборудования, администратор должен иметь план для достижения времени безотказной работы с минимальными затратами времени на обработку пользовательских данных. Монолитное ядро, используемое в Linux, на самом деле значительно упрощает восстановление с использованием системных образов с использованием системных образов. Где Windows использует архитектуру микроядра.
Полное восстановление данных и восстановление с нуля обычно выполняется с помощью комбинации методов, включая рабочие, настроенные рабочие образы дисков ключевых операционных серверов, избыточные резервные копии пользовательских данных, соблюдая правило 3-2-1. Даже некоторые конфиденциальные файлы, которые могут храниться в безопасном, пожаробезопасном сейфе с ограниченным доступом к персоналу доверенной компании.
План многофазного восстановления и восстановления данных с использованием собственных инструментов CentOS может состоять из:
-
dd создавать и восстанавливать производственные образы дисков настроенных серверов
-
rsync для создания инкрементных резервных копий всех пользовательских данных
-
tar & gzip для хранения зашифрованных резервных копий файлов с паролями и заметками от администраторов. Обычно это можно записать на USB-накопитель, зашифровать и заблокировать в сейфе, к которому имеет доступ старший менеджер. Кроме того, это гарантирует, что кто-то другой будет знать жизненно важные учетные данные безопасности, если текущий администратор выиграет в лотерее и исчезнет на солнечном острове.
dd создавать и восстанавливать производственные образы дисков настроенных серверов
rsync для создания инкрементных резервных копий всех пользовательских данных
tar & gzip для хранения зашифрованных резервных копий файлов с паролями и заметками от администраторов. Обычно это можно записать на USB-накопитель, зашифровать и заблокировать в сейфе, к которому имеет доступ старший менеджер. Кроме того, это гарантирует, что кто-то другой будет знать жизненно важные учетные данные безопасности, если текущий администратор выиграет в лотерее и исчезнет на солнечном острове.
Если система выходит из строя из-за аппаратного сбоя или сбоя, следующие этапы восстановления операций будут следующими:
-
Создайте рабочий сервер с настроенным голым железным образом
-
Восстановление данных на рабочий сервер из резервных копий
-
Иметь физический доступ к учетным данным, необходимым для выполнения первых двух операций
Создайте рабочий сервер с настроенным голым железным образом
Восстановление данных на рабочий сервер из резервных копий
Иметь физический доступ к учетным данным, необходимым для выполнения первых двух операций
Используйте rsync для резервного копирования на уровне файлов
rsync — отличная утилита для синхронизации каталогов файлов локально или на другом сервере. Системный администратор годами использовал rsync , поэтому он очень хорошо подходит для резервного копирования данных. По мнению автора, одной из лучших функций синхронизации является возможность сценариев из командной строки.
В этом уроке мы обсудим rsync различными способами —
- Исследуйте и поговорите о некоторых распространенных вариантах
- Создать локальные резервные копии
- Создавайте удаленные резервные копии по SSH
- Восстановить локальные резервные копии
rsync назван по назначению: удаленная синхронизация и является мощной и гибкой в использовании.
Ниже приведено базовое удаленное резервное копирование rsync через ssh:
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ [email protected]:home/rdc/ Documents/RemoteStuff/ [email protected]'s password: sending incremental file list 6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25) 2017-02-14 16_26_47-002 - Veeam_Architecture001.png 33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25) A Guide to the WordPress REST API | Toptal.pdf 892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25) Rick Cardon Technologies, LLC..webloc 77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25) backbox-4.5.1-i386.iso 43,188,224 1% 4.26MB/s 0:08:29 sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec total size is 2,327,091,863 speedup is 1.00 MiNi:~ rdc$
Следующая синхронизация отправила почти 2,3 ГБ данных по нашей локальной сети. Прелесть rsync в том, что он работает постепенно на уровне блоков для каждого файла отдельно. Это означает, что если мы изменим только два символа в текстовом файле размером 1 МБ, только один или два блока будут переданы через сеть при следующей синхронизации!
Кроме того, инкрементная функция может быть отключена в пользу большей пропускной способности сети, используемой для меньшей загрузки ЦП. Это может оказаться целесообразным, если постоянно копировать несколько файлов базы данных по 10 МБ каждые 10 минут на выделенной резервной локальной сети емкостью 1 ГБ. Причина заключается в следующем: они всегда будут меняться и будут передаваться постепенно каждые 10 минут и могут облагаться нагрузкой на удаленный ЦП. Поскольку общая нагрузка передачи не будет превышать 5 минут, мы можем просто синхронизировать файлы базы данных в полном объеме.
Ниже приведены наиболее распространенные ключи с rsync —
rsync syntax: rsync [options] [local path] [[remote host:remote path] or [target path
переключатель | действие |
---|---|
-a | Режим архива и предполагает -r, -p, -t, -g, -l |
-d | Синхронизировать только дерево каталогов, без файлов |
-р | Рекурсивно в каталог |
-l | Копировать символические ссылки как символические ссылки |
-п | Сохранить разрешения |
-г | Сохранить группу |
-v | Подробный вывод |
-z | Сжатие по сети |
-ИКС | Сохранить расширенные атрибуты |
-А | Сохранить ACL |
-t | Сохранить временные метки |
-W | Передача всего файла, а не инкрементальных блоков |
-u | Не перезаписывайте файлы на цели |
—прогресс | Показать прогресс передачи |
—удалять | Удалить старые файлы на цели |
—max-size = XXX | Максимальный размер файла для синхронизации |
Когда использовать rsync
Мое личное предпочтение для rsync — при резервном копировании файлов с исходного хоста на целевой хост. Например, все домашние каталоги для восстановления данных или даже вне их и в облаке для аварийного восстановления.
Локальное резервное копирование с rsync
Мы уже видели, как передавать файлы с одного хоста на другой. Тот же метод можно использовать для локальной синхронизации каталогов и файлов.
Давайте сделаем ручное добавочное резервное копирование / etc / в каталоге нашего корневого пользователя.
Во-первых, нам нужно создать каталог с ~ / root для синхронизированной резервной копии —
[root@localhost rdc]# mkdir /root/etc_baks
Затем убедитесь, что на диске достаточно свободного места.
[root@localhost rdc]# du -h --summarize /etc/ 49M /etc/ [root@localhost rdc]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/cl-root 43G 15G 28G 35% /
Мы хороши для синхронизации всего нашего каталога / etc / —
rsync -aAvr /etc/ /root/etc_baks/
Наш синхронизированный каталог / etc / —
[root@localhost etc_baks]# ls -l ./ total 1436 drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt -rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime -rw-r--r--. 1 root root 1518 Jun 7 2013 aliases -rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives -rw-------. 1 root root 541 Mar 31 2016 anacrontab -rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf -rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2 --{ condensed output }--
Теперь давайте сделаем инкрементную rsync —
[root@localhost etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/ sending incremental file list test_incremental.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282) sent 204620 bytes received 2321 bytes 413882.00 bytes/sec total size is 80245040 speedup is 387.77 [root@localhost etc_baks]#
Только наш файл test_incremental.txt был скопирован.
Удаленное дифференциальное резервное копирование с rsync
Давайте сделаем наше первоначальное полное резервное копирование rsync на сервер с развернутым планом резервного копирования. В этом примере фактически выполняется резервное копирование папки на рабочей станции Mac OS X на сервер CentOS. Другим важным аспектом rsync является то, что его можно использовать на любой платформе, на которую был перенесен rsync.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/ [email protected]:Documents/RemoteStuff [email protected]'s password: sending incremental file list ./ A Guide to the WordPress REST API | Toptal.pdf Rick Cardon Tech LLC.webloc VeeamDiagram.png backbox-4.5.1-i386.iso dhcp_admin_script_update.py DDWRT/ DDWRT/.DS_Store DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin DDWRT/ddwrt_mod_notes.docx DDWRT/factory-to-ddwrt.bin open_ldap_config_notes/ open_ldap_config_notes/ldap_directory_a.png open_ldap_config_notes/open_ldap_notes.txt perl_scripts/ perl_scripts/mysnmp.pl php_scripts/ php_scripts/chunked.php php_scripts/gettingURL.php sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec total size is 2,326,636,892 speedup is 1.00 MiNi:~ rdc$
Теперь мы создали резервную копию папки с рабочей станции на сервере с томом RAID6 с повернутым носителем аварийного восстановления, который хранится вне сайта. Использование rsync дало нам стандартное резервное копирование 3-2-1 только с одним сервером, имеющим дорогой избыточный дисковый массив и повернутые дифференциальные резервные копии.
Теперь давайте сделаем еще одну резервную копию этой же папки с помощью rsync после того, как был добавлен новый файл с именем test_file.txt .
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/ [email protected]:Documents/RemoteStuff [email protected]'s password: sending incremental file list ./ test_file.txt sent 814 bytes received 61 bytes 134.62 bytes/sec total size is 2,326,636,910 speedup is 2,659,013.61 MiNi:~ rdc$
Как видите, только новый файл был доставлен на сервер через rsync . Дифференциальное сравнение было сделано для каждого файла отдельно.
Несколько вещей, на которые следует обратить внимание: это только копирует новый файл: test_file.txt, так как это был единственный файл с изменениями. Rsync использует SSH. Нам не нужно было использовать нашу учетную запись root ни на одной машине.
Простой, мощный и эффективный rsync отлично подходит для резервного копирования целых папок и структур каталогов. Однако rsync сам по себе не автоматизирует процесс. Вот где нам нужно покопаться в нашем наборе инструментов и найти лучший, маленький и простой инструмент для работы.
Для автоматизации резервного копирования rsync с помощью cronjobs важно, чтобы пользователи SSH были настроены с использованием ключей SSH для аутентификации. Это в сочетании с cronjobs позволяет выполнять rsync автоматически через определенные промежутки времени.
Используйте DD для блочных изображений восстановления голого металла
DD — это утилита для Linux, которая существует с самого начала появления ядра Linux и GNU Utilities.
Дд в простейшем смысле копирует изображение выбранной области диска. Затем предоставляет возможность копировать выбранные блоки физического диска. Поэтому, если у вас нет резервных копий, когда dd записывает на диск, все блоки заменяются. Потеря предыдущих данных превышает возможности восстановления даже для дорогостоящего восстановления данных профессионального уровня.
Весь процесс создания загрузочного образа системы с помощью dd выглядит следующим образом:
- Загрузка с сервера CentOS с загрузочного дистрибутива Linux
- Найдите обозначение загрузочного диска для образа
- Определите место, где будет храниться образ восстановления
- Найдите размер блока, используемого на вашем диске
- Запустите операцию изображения dd
В этом уроке ради времени и простоты мы будем создавать ISO-образ основной загрузочной записи с виртуальной машины CentOS. Затем мы будем хранить это изображение вне сайта. В случае, если наша MBR повреждена и требует восстановления, тот же процесс может быть применен ко всему загрузочному диску или разделу. Тем не менее, время и дисковое пространство, необходимое для этого урока, немного запредельные.
Администраторам CentOS рекомендуется научиться восстанавливать полностью загрузочный диск / раздел в тестовой среде и выполнять восстановление «с нуля». Это избавит от большого давления, когда в конечном итоге нужно будет завершить практику в реальной ситуации, когда менеджеры и несколько десятков конечных пользователей будут считать время простоя. В таком случае 10 минут на то, чтобы разобраться, могут показаться вечностью и потеть.
Примечание. При использовании dd не путайте исходный и целевой тома. Вы можете уничтожить данные и загрузочные серверы, скопировав свою резервную копию на загрузочный диск. Или, возможно, хуже уничтожить данные навсегда, копируя данные на очень низком уровне с помощью DD.
Ниже приведены общие параметры командной строки и параметры для dd —
переключатель | действие |
---|---|
если = | В файле или источнике для копирования |
из = | Выходной файл или копия входного файла |
бс | Установите размер блока ввода и вывода |
набл | Установить размер выходного файла |
фунты | Установить размер входного файла |
подсчитывать | Установите количество блоков для копирования |
конв | Дополнительные опции, которые нужно добавить для обработки изображений |
Нет ошибок | Не прекращайте обработку ошибки |
синхронизировать | Колодки неподходящих входных блоков в случае ошибки или смещения |
Примечание о размере блока. Размер блока по умолчанию для dd составляет 512 байт. Это был стандартный размер блока жестких дисков меньшей плотности. Современные жесткие диски с более высокой плотностью увеличились до 4096 байт (4 КБ), что позволяет использовать диски размером от 1 ТБ и более. Таким образом, мы хотим проверить размер дискового блока перед использованием dd с более новыми жесткими дисками большей емкости.
В этом руководстве вместо работы на рабочем сервере с dd мы будем использовать установку CentOS, работающую в VMWare. Мы также настроим VMWare для загрузки загрузочного ISO-образа Linux вместо того, чтобы работать с загрузочной флешкой USB.
Сначала нам нужно скачать образ CentOS под названием: CentOS Gnome ISO . Это почти 3 ГБ, поэтому рекомендуется всегда сохранять копию для создания загрузочных USB-накопителей и загрузки на виртуальные серверные установки для устранения неполадок и получения изображений с нуля.
Другие загрузочные дистрибутивы Linux будут работать так же хорошо. Linux Mint можно использовать для загрузочных ISO-образов, поскольку он имеет отличную поддержку оборудования и отшлифованные инструменты для графического интерфейса пользователя для обслуживания.
Загрузочный образ CentOS GNOME Live можно загрузить по адресу : http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
Давайте настроим установку VMWare Workstation для загрузки с нашего загрузочного образа Linux. Шаги предназначены для VMWare в OS X. Однако они одинаковы для VMWare Workstation в Linux, Windows и даже Virtual Box.
Примечание. Использование решения для виртуального рабочего стола, такого как Virtual Box или VMWare Workstation, является отличным способом настройки лабораторных сценариев для изучения задач администрирования CentOS. Он обеспечивает возможность установки нескольких установок CentOS, практически без аппаратной конфигурации, позволяя человеку сосредоточиться на администрировании, и даже сохранить состояние сервера перед внесением изменений.
Сначала давайте настроим виртуальный CD-ROM и прикрепим наш ISO-образ для загрузки вместо установки виртуального сервера CentOS —
Теперь установите загрузочный диск —
Теперь при загрузке наша виртуальная машина будет загружаться из загрузочного ISO-образа CentOS и разрешать доступ к файлам на сервере Virtual CentOS, который был предварительно настроен.
Давайте проверим наши диски, чтобы увидеть, куда мы хотим скопировать MBR (сжатый вывод выглядит следующим образом).
MiNt ~ # fdisk -l Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Мы нашли оба наших физических диска: sda и sdb . Каждый имеет размер блока 512 байт. Итак, теперь мы запустим команду dd, чтобы скопировать первые 512 байт для нашей MBR на SDA1.
Лучший способ сделать это —
[root@mint rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c > /mnt/sdb/images/mbr.iso.gz 1+0 records in 1+0 records out 512 bytes copied, 0.000171388 s, 3.0 MB/s [root@mint rdc]# ls /mnt/sdb/ mbr-iso.gz [root@mint rdc]#
Вот так, у нас есть полный образ нашей основной загрузочной записи. Если у нас будет достаточно места для образа загрузочного диска, мы также можем легко создать полный загрузочный образ системы —
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c > /mnt/sdb/boot-server-centos-image.iso.gz
Conv = sync используется, когда байты должны быть выровнены для физического носителя. В этом случае dd может получить ошибку, если точные выравнивания 4K не читаются (скажем … файл, который составляет всего 3K, но должен занимать минимум один блок 4K на диске. Или, просто чтение ошибки и файл не может быть прочитан дд.) Таким образом, dd с conv = sync, noerror будет заполнять 3K тривиальными, но полезными данными на физическом носителе с выравниванием блоков 4K. Пока не отображается ошибка, которая может завершить большую операцию.
При работе с данными с дисков мы всегда хотим включить: conv = sync, параметр noerror .
Это просто потому, что диски не являются потоками, такими как данные TCP. Они состоят из блоков, выровненных до определенного размера. Например, если у нас есть 512-байтовые блоки, для файла размером всего 300 байт все еще нужны полные 512 байт дискового пространства (возможно, 2 блока для информации inode, такой как разрешения и другая информация файловой системы).
Используйте gzip и tar для безопасного хранения
gzip и tar — две утилиты, к которым должен привыкнуть администратор CentOS. Они используются для гораздо большего, чем просто распаковка архивов.
Использование Gnu Tar в CentOS Linux
Tar — это утилита архивирования, похожая на winrar в Windows. Его название Tape Archive, сокращенно tar, подводит итог утилиты. tar возьмет файлы и поместит их в архив для логического удобства. Следовательно, вместо десятков файлов, хранящихся в / etc. мы могли бы просто «скопировать» их в архив для удобства резервного копирования и хранения.
В течение многих лет tar является стандартом для хранения архивных файлов в Unix и Linux. Следовательно, использование tar вместе с gzip или bzip считается наилучшей практикой для архивов в каждой системе.
Ниже приведен список общих параметров командной строки и параметров, используемых с tar —
переключатель | действие |
---|---|
-с | Создает новый архив .tar |
-С | Выдержки в другой каталог |
-j | Использует сжатие bzip2 |
-z | Использует сжатие GZIP |
-v | Подробный прогресс архивирования шоу |
-t | Содержит список архивов |
-f | Имя файла архива |
-Икс | Извлекает архив tar |
Ниже приведен основной синтаксис для создания архива tar .
tar -cvf [tar archive name]
Замечание о механизмах сжатия с помощью tar. Рекомендуется придерживаться одной из двух распространенных схем сжатия при использовании tar: gzip и bzip2. GZIP-файлы потребляют меньше ресурсов процессора, но обычно имеют больший размер. В то время как bzip2 сжимается дольше, они используют больше ресурсов процессора; но приведет к меньшему конечному размеру файла.
При использовании сжатия файлов мы всегда хотим использовать стандартные расширения файлов, чтобы все, включая нас самих, знали (в отличие от предположения методом проб и ошибок), какая схема сжатия необходима для извлечения архивов.
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
GZIP | .tar.gz |
GZIP | .tgz |
При необходимости извлечения архивов из коробки Windows или для использования в Windows рекомендуется использовать .tar.tbz или .tar.gz, так как большинство трехсимвольных расширений будут путать Windows и только администраторов Windows (однако это иногда желаемый результат)
Давайте создадим сжатый архив tar из наших удаленных резервных копий, скопированных с рабочей станции Mac —
[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php ./RemoteStuff/php_scripts/gettingURL.php ./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf ./RemoteStuff/Rick Cardon Tech LLC.webloc ./RemoteStuff/VeeamDiagram.png ./RemoteStuff/backbox-4.5.1-i386.iso ./RemoteStuff/dhcp_admin_script_update.py ./RemoteStuff/test_file.txt [rdc@mint Documents]$ ls -ld RemoteStuff.tgz -rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
Примечание. Вместо того, чтобы добавлять все файлы непосредственно в архив, мы заархивировали всю папку RemoteStuff . Это самый простой способ. Просто потому, что при извлечении весь каталог RemoteStuff извлекается со всеми файлами в текущем рабочем каталоге как ./currentWorkingDirectory/RemoteStuff/
Теперь давайте распакуем архив в каталог / root / home.
[root@centos ~]# tar -zxvf RemoteStuff.tgz ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php ./RemoteStuff/php_scripts/gettingURL.php ./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf ./RemoteStuff/Rick Cardon Tech LLC.webloc ./RemoteStuff/VeeamDiagram.png ./RemoteStuff/backbox-4.5.1-i386.iso ./RemoteStuff/dhcp_admin_script_update.py ./RemoteStuff/test_file.txt [root@mint ~]# ping www.google.com
Как видно выше, все файлы были просто извлечены в каталог, содержащийся в нашем текущем рабочем каталоге.
[root@centos ~]# ls -l total 2262872 -rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks -rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff -rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz -rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [root@centos ~]#
Используйте gzip для сжатия резервных копий файлов
Как отмечалось ранее, мы можем использовать bzip2 или gzip из tar с ключами командной строки -j или -z . Мы также можем использовать gzip для сжатия отдельных файлов. Однако использование одних только bzip или gzip не дает столько возможностей, сколько в сочетании с tar .
При использовании gzip действие по умолчанию — удалить исходные файлы, заменив каждый сжатой версией с добавлением расширения .gz.
Некоторые общие параметры командной строки для gzip:
переключатель | действие |
---|---|
-с | Сохраняет файлы после помещения в архив |
-l | Получить статистику для сжатого архива |
-р | Рекурсивно сжимает файлы в каталогах |
-1 до 9 | Определяет уровень сжатия по шкале от 1 до 9 |
gzip более или менее работает на файловой основе, а не на архивной основе, как некоторые утилиты Windows O / S zip. Основной причиной этого является то, что tar уже предоставляет расширенные возможности архивирования. GZIP предназначен для обеспечения только механизма сжатия.
Следовательно, когда вы думаете о gzip , подумайте об одном файле. Когда вы думаете о нескольких файлах, подумайте об архивах tar . Давайте теперь рассмотрим это с нашим предыдущим архивом tar .
Примечание. Опытные специалисты по Linux часто будут ссылаться на архивный архив как на тарбол.
Давайте сделаем еще один архив tar из нашей резервной копии rsync .
[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/ [root@centos Documents]# ls RemoteStuff.tar RemoteStuff/
В демонстрационных целях давайте распакуем только что созданный tar-архив и скажем gzip сохранить старый файл. По умолчанию без опции -c gzip заменит весь архив tar на файл .gz .
[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz [root@centos Documents]# ls RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz We now have our original directory, our tarred directory and finally our gziped tarball.
Попробуем проверить ключ -l с помощью gzip .
[root@centos Documents]# gzip -l RemoteStuff.tar.gz compressed uncompressed ratio uncompressed_name 2317140467 2326661120 0.4% RemoteStuff.tar [root@centos Documents]#
Чтобы продемонстрировать, чем gzip отличается от Windows Zip Utilities, давайте запустим gzip для папки с текстовыми файлами.
[root@centos Documents]# ls text_files/ file1.txt file2.txt file3.txt file4.txt file5.txt [root@centos Documents]#
Теперь давайте используем опцию -r для рекурсивного сжатия всех текстовых файлов в каталоге.
[root@centos Documents]# gzip -9 -r text_files/ [root@centos Documents]# ls ./text_files/ file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz [root@centos Documents]#
Увидеть? Не то, что некоторые могли ожидать. Все исходные текстовые файлы были удалены, и каждый был сжат по отдельности. Из-за этого поведения лучше всего думать о gzip в одиночку, когда нужно работать в отдельных файлах.
Работая с тарболами , давайте распакуем наш rsynced тарбол в новый каталог.
[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php
Как показано выше, мы распаковали и распаковали наш tar-архив в каталог / tmp.
[root@centos Documents]# ls /tmp hsperfdata_root RemoteStuff
Шифровать архивы TarBall
Шифрование архивных архивов для хранения защищенных документов, к которым, возможно, потребуется доступ другим сотрудникам организации, в случае аварийного восстановления может оказаться сложной задачей. Есть в основном три способа сделать это: либо использовать GnuPG, либо использовать openssl, либо использовать утилиту третьей части.
GnuPG в первую очередь предназначен для асимметричного шифрования и имеет в виду связь идентичности, а не парольную фразу. Правда, его можно использовать с симметричным шифрованием, но это не главное преимущество GnuPG. Таким образом, я бы отказался от GnuPG за хранение архивов с физической защитой, когда доступ может понадобиться большему количеству людей, чем первоначальному человеку (например, корпоративному менеджеру, который хочет защититься от администратора, использующего все ключи от королевства в качестве рычага).
Openssl, как и GnuPG, может делать то, что мы хотим, и поставляется с CentOS. Но опять же, он не предназначен специально для того, чтобы делать то, что мы хотим, и шифрование подвергалось сомнению в сообществе безопасности.
Нашим выбором является утилита под названием 7zip . 7zip — это утилита сжатия, подобная gzip, но с гораздо большим количеством функций. Как и Gnu Gzip, 7zip и его стандарты находятся в сообществе открытого кода. Нам просто нужно установить 7zip из нашего репозитория EHEL (следующая глава подробно расскажет об установке расширенных корпоративных репозиториев).
Установите 7zip на Centos
7zip — это простая установка после загрузки и конфигурирования наших репозиториев EHEL в CentOS.
[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64 Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 epel/x86_64/metalink | 13 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): epel/x86_64/updateinfo | 756 kB 00:00:04 (2/2): epel/x86_64/primary_db | 4.6 MB 00:00:18 Loading mirror speeds from cached hostfile --> Running transaction check ---> Package p7zip.x86_64 0:16.02-2.el7 will be installed ---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved
Все просто, 7zip установлен и готов к использованию с 256-битным шифрованием AES для наших архивных архивов.
Теперь давайте используем 7z для шифрования нашего архива gzip паролем. Синтаксис для этого довольно прост —
7z a -p <output filename><input filename>
Где : добавить в архив и -p: зашифровать и запросить фразу-пароль
[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI) Scanning the drive: 1 file, 2317140467 bytes (2210 MiB) Creating archive: RemoteStuff.tgz.7z Items to compress: 1 Enter password (will not be echoed): Verify password (will not be echoed) : Files read from disk: 1 Archive size: 2280453410 bytes (2175 MiB) Everything is Ok [root@centos Documents]# ls RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD text_files [root@centos Documents]#
Теперь у нас есть архив .7z, который шифрует сжатый архив с 256-битным AES.
Примечание. 7zip использует 256-битное шифрование AES с хешем пароля и счетчика SHA-256, повторяемое до 512 Кбайт для получения ключа. Это должно быть достаточно безопасно, если используется сложный ключ.
Процесс шифрования и повторного сжатия архива может занять некоторое время с большими архивами.
7zip — это расширенное предложение с большим количеством функций, чем gzip или bzip2. Тем не менее, это не так стандартно с CentOS или среди мира Linux. Таким образом, другие утилиты должны использоваться как можно чаще.
Linux Admin — Обновления системы
Система CentOS 7 может быть обновлена тремя способами:
- Вручную
- Автоматически
- Обновление вручную для серьезных проблем безопасности и настройка автоматических обновлений
В производственной среде рекомендуется обновлять вручную для производственных серверов. Или, по крайней мере, установить план обновлений, чтобы администратор мог обеспечить услуги, жизненно важные для бизнес-операций.
Вероятно, простое обновление для системы безопасности может вызвать рекурсивные проблемы с обычным приложением, которое требует обновления и перенастройки администратором. Итак, будьте осторожны с планированием автоматических обновлений в производственном процессе, прежде чем проводить тестирование на серверах разработки и настольных ПК.
Обновление CentOS 7 вручную
Чтобы обновить CentOS 7, мы хотим ознакомиться с командой yum . yum используется для работы с репозиториями пакетов в CentOS 7. yum — это инструмент, который обычно используется для:
- Обновите систему CentOS 7 Linux
- Поиск пакетов
- Установить пакеты
- Определите и установите необходимые зависимости для пакетов
Чтобы использовать yum для обновлений, ваш сервер CentOS должен быть подключен к Интернету. Большинство конфигураций устанавливают базовую систему, а затем используют yum для запроса основного репозитория CentOS о дополнительных функциях в пакетах и применения системных обновлений.
Мы уже использовали yum для установки нескольких пакетов. При использовании yum вы всегда должны будете делать это как пользователь root. Или пользователь с root-доступом. Итак, давайте найдем и установим простой в использовании текстовый редактор под названием nano .
[root@centos rdc]# yum search nano Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.rackspace.com * epel: mirror.chpc.utah.edu * extras: repos.forethought.net * updates: repos.forethought.net ====================================================================== N/S matched: nano ====================================================================== nano.x86_64 : A small text editor nodejs-nano.noarch : Minimalistic couchdb driver for Node.js perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision Name and summary matches only, use "search all" for everything. [root@centos rdc]#
Теперь давайте установим текстовый редактор nano .
[root@centos rdc]# yum install nano Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.keystealth.org * epel: pubmirror1.math.uh.edu * extras: centos.den.host-engine.com * updates: repos.forethought.net Resolving Dependencies --> Running transaction check ---> Package nano.x86_64 0:2.3.1-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: nano x86_64 2.3.1-10.el7 base 440 k Transaction Summary Install 1 Package Total download size: 440 k Installed size: 1.6 M Is this ok [y/d/N]: y Downloading packages: nano-2.3.1-10.el7.x86_64.rpm | 440 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : nano-2.3.1-10.el7.x86_64 1/1 Verifying : nano-2.3.1-10.el7.x86_64 1/1 Installed: nano.x86_64 0:2.3.1-10.el7 Complete! [root@centos rdc]#
Мы установили нано текстовый редактор. Этот метод, IMO, намного проще, чем поиск утилит на веб-сайтах и запуск установщиков вручную. Кроме того, репозитории используют цифровые подписи для проверки пакетов, гарантирующих, что они поступают из надежного источника с yum. Администратор должен проверить подлинность, доверяя новым репозиториям. Вот почему считается хорошей практикой утомлять сторонние репозитории.
Yum также может быть использован для удаления пакета.
[root@centos rdc]# yum remove nano Loaded plugins: fastestmirror, langpacks Resolving Dependencies --> Running transaction check ---> Package nano.x86_64 0:2.3.1-10.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved
Теперь давайте проверим наличие обновлений.
[root@centos rdc]# yum list updates Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.keystealth.org * epel: pubmirror1.math.uh.edu * extras: centos.den.host-engine.com * updates: repos.forethought.net Updated Packages NetworkManager.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-adsl.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-glib.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-libnm.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-team.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-tui.x86_64 1:1.4.0-17.el7_3 updates NetworkManager-wifi.x86_64 1:1.4.0-17.el7_3 updates audit.x86_64 2.6.5-3.el7_3.1 updates audit-libs.x86_64 2.6.5-3.el7_3.1 updates audit-libs-python.x86_64
Как показано, у нас есть несколько десятков обновлений, ожидающих установки. На самом деле, существует около 100 обновлений, поскольку мы еще не настроили автоматические обновления. Итак, давайте установим все ожидающие обновления.
[root@centos rdc]# yum update Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.usc.edu * epel: pubmirror1.math.uh.edu * extras: repos.forethought.net * updates: repos.forethought.net Resolving Dependencies --> Running transaction check ---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated ---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update selinux-policy noarch 3.13.1102.el7_3.15 updates 414 k selinux-policy-targeted noarch 3.13.1102.el7_3.15 updates 6.4 M systemd x86_64 21930.el7_3.7 updates 5.2 M systemd-libs x86_64 21930.el7_3.7 updates 369 k systemd-python x86_64 21930.el7_3.7 updates 109 k systemd-sysv x86_64 21930.el7_3.7 updates 63 k tcsh x86_64 6.18.01-13.el7_3.1 updates 338 k tzdata noarch 2017a1.el7 updates 443 k tzdata-java noarch 2017a1.el7 updates 182 k wpa_supplicant x86_64 1:2.021.el7_3 updates 788 k Transaction Summary =============================================================================== Install 2 Packages Upgrade 68 Packages Total size: 196 M Total download size: 83 M Is this ok [y/d/N]:
После нажатия клавиши «y» начнется обновление CentOS 7. Общий процесс, через который проходит yum при обновлении:
- Проверяет текущие пакеты
- Смотрит в хранилище обновленные пакеты
- Вычисляет зависимости, необходимые для обновленных пакетов
- Обновления загрузок
- Устанавливает обновления
Теперь давайте удостоверимся, что наша система обновлена -
[root@centos rdc]# yum list updates Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * updates: mirror.compevo.com [root@centos rdc]#
Как видите, в списке нет обновлений.
Настройка автоматического обновления для YUM
В корпоративной среде, как упоминалось ранее, автоматические обновления могут быть или не быть предпочтительным методом установки. Давайте рассмотрим шаги по настройке автоматических обновлений с помощью yum.
Сначала мы устанавливаем пакет с именем yum-cron .
[root@centos rdc]# yum -y install yum-cron Install 1 Package Total download size: 61 k Installed size: 51 k Downloading packages: yum-cron-3.4.3-150.el7.centos.noarch.rpm | 61 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : yum-cron-3.4.3-150.el7.centos.noarch 1/1 Verifying : yum-cron-3.4.3-150.el7.centos.noarch 1/1 Installed: yum-cron.noarch 0:3.4.3-150.el7.centos Complete! [root@centos rdc]#
По умолчанию yum-cron загружает только обновления и не устанавливает их. Независимо от того, устанавливать ли обновления автоматически — администратор. Самое большое предупреждение: некоторые обновления потребуют перезагрузки системы. Кроме того, некоторые обновления могут потребовать изменения конфигурации, прежде чем сервисы снова будут работать.
Обновление зависимостей может создать рекурсивную проблему в следующей ситуации:
-
Yum рекомендует обновление для определенной библиотеки
-
Библиотека поддерживает только Apache Server 2.4, но у нас есть сервер 2.3
-
Наш коммерческий сайт использует определенную версию PHP
-
Новая версия Apache, установленная для библиотеки, требует обновления PHP
-
Наши производственные веб-приложения еще не были протестированы с более новой версией PHP
Yum рекомендует обновление для определенной библиотеки
Библиотека поддерживает только Apache Server 2.4, но у нас есть сервер 2.3
Наш коммерческий сайт использует определенную версию PHP
Новая версия Apache, установленная для библиотеки, требует обновления PHP
Наши производственные веб-приложения еще не были протестированы с более новой версией PHP
Yum может выполнить автоматическое обновление Apache и PHP без предварительного уведомления, если не настроено.
Если все 5 сценариев разыгрываются, это может привести к чему угодно — от сильной головной боли по утрам до возможного компрометации безопасности, обличающей пользовательские данные. Хотя вышеупомянутый пример — своего рода идеальный шторм, мы никогда не хотим, чтобы такой сценарий развивался.
Администратор должен получить доступ к возможным сценариям возможной потери дохода в течение времени, необходимого для восстановления услуг из-за возможного простоя из-за перезагрузок и переконфигурирования обновлений. Эта практика может быть недостаточно консервативной, скажем, для сайта электронной коммерции с многомиллионным оборотом в день, где работают миллионы клиентов.
Теперь давайте настроим yum-cron для автоматической установки обновлений системы.
[root@centos rdc]# vim /etc/yum/yum-cron.conf # Whether updates should be applied when they are available. Note # that download_updates must also be yes for the update to be applied. apply_updates = yes
Мы хотим изменить apply_updates = no на apply_updates = yes . Теперь давайте настроим интервал обновления для yum-cron .
Опять же, использование автоматических обновлений и установка обновлений по требованию может быть обоюдоострым мечом и должно рассматриваться администратором для каждой уникальной ситуации.
Linux Admin — Сценарии оболочки
Введение в Bash Shell
Как и разновидности GNU Linux, оболочки имеют множество разновидностей и различаются по совместимости. Оболочка по умолчанию в CentOS называется Bash или Bourne Again Shell. Оболочка Bash — это современная модифицированная версия Bourne Shell, разработанная Стивеном Борном. Bash был прямой заменой оригинальной оболочки Thompson Shell в операционной системе Unix, разработанной в Bell Labs Кеном Томпсоном и Деннисом Ричи (Стивен Борн также работал в Bell Labs)
У каждого есть любимая оболочка, и у каждого есть свои сильные стороны и трудности. Но по большей части Bash станет оболочкой по умолчанию во всех дистрибутивах Linux и является наиболее доступной. С опытом, каждый захочет изучить и использовать оболочку, которая лучше всего подходит для них. Однако, в то же время, все также захотят освоить оболочку Bash.
Другие оболочки Linux включают в себя: Tcsh, Csh, Ksh, Zsh и Fish.
Развитие навыков использования любой оболочки Linux на экспертном уровне чрезвычайно важно для администратора CentOS. Как мы упоминали ранее, в отличие от Windows, Linux по своей сути является операционной системой командной строки. Оболочка — это просто пользовательский интерфейс, который позволяет администратору (или пользователю) выдавать команды операционной системе. Если бы системный администратор Linux был пилотом авиакомпании, использование оболочки было бы аналогично снятию самолета с автопилота и захвату ручного управления для более маневренного полета.
Оболочка Linux, как и Bash, в компьютерных науках известна как интерпретатор командной строки . В Microsoft Windows также есть два интерпретатора командной строки, называемые DOS (не путать с оригинальной операционной системой DOS) и PowerShell.
Большинство современных оболочек, таких как Bash, предоставляют конструкции, позволяющие более сложным сценариям оболочки автоматизировать как общие, так и сложные задачи.
Конструкции включают в себя —
- Управление потоком скриптов (ifthen и else)
- Операции логического сравнения (больше, меньше, чем равенство)
- Loops
- переменные
- Параметры, определяющие работу (аналогично переключателям с командами)
Использование сценариев оболочки по сравнению с языком сценариев
Часто задумываясь о выполнении задачи, администраторы задаются вопросом: использовать ли сценарий оболочки или язык сценариев, такой как Perl, Ruby или Python?
Здесь нет установленных правил. Есть только типичные различия между оболочками и языками сценариев.
Ракушка
Shell позволяет использовать команды Linux, такие как sed , grep , tee , cat и все другие утилиты на основе командной строки в операционной системе Linux. Фактически, почти любая утилита Linux командной строки может быть написана в вашей оболочке.
Отличным примером использования оболочки будет быстрый скрипт для проверки списка хостов на предмет разрешения DNS.
Наш простой Bash Script для проверки DNS-имен —
#!/bin/bash for name in $(cat $1); do host $name.$2 | grep "has address" done exit
небольшой список слов для проверки разрешения DNS на
dns www test dev mail rdp remote
Вывод по домену google.com —
[rdc@centos ~]$ ./dns-check.sh dns-names.txt google.com -doing dns dns.google.com has address 172.217.6.46 -doing www www.google.com has address 172.217.6.36 -doing test -doing dev -doing mail googlemail.l.google.com has address 172.217.6.37 -doing rdp -doing remote [rdc@centos ~]$
Используя простые команды Linux в нашей оболочке, мы смогли создать простой 5-строчный скрипт для аудита имен DNS из списка слов. Это заняло бы значительное время в Perl, Python или Ruby даже при использовании красиво реализованной библиотеки DNS.
Язык сценариев
Язык сценариев даст больше контроля за пределами оболочки. Приведенный выше скрипт Bash использовал оболочку для команды хоста Linux. Что, если мы хотим сделать больше и сделать наше собственное приложение, например хост, взаимодействующим вне оболочки? Здесь мы будем использовать язык сценариев.
Кроме того, с хорошо поддерживаемым языком сценариев мы знаем, что наши действия будут работать в разных системах по большей части. Например, Python 3.5 будет работать на любой другой системе, на которой работает Python 3.5 с такими же установленными библиотеками. Не так, если мы хотим запустить наш BASH-скрипт на Linux и HP-UX.
Иногда границы между языком сценариев и мощной оболочкой могут быть размыты. Можно автоматизировать задачи администрирования CentOS Linux с помощью Python, Perl или Ruby. Это действительно обычное дело. Кроме того, богатые разработчики сценариев оболочки сделали простой, но в остальном функциональный демон веб-сервера в Bash.
Имея опыт работы с языками сценариев и автоматизации задач в оболочках, администратор CentOS сможет быстро определить, с чего начать при необходимости решения проблемы. Довольно часто начинать проект с помощью сценария оболочки. Затем переход к скриптовому (или скомпилированному) языку становится более сложным.
Кроме того, можно использовать как язык сценариев, так и сценарий оболочки для различных частей проекта. Примером может служить Perl-скрипт для очистки сайта. Затем используйте сценарий оболочки для анализа и форматирования с помощью sed , awk и egrep . Наконец, используйте PHP-скрипт для вставки отформатированных данных в базу данных MySQL с помощью веб-интерфейса.
Имея некоторую теорию, лежащую в основе оболочек, давайте начнем с основных строительных блоков для автоматизации задач из оболочки Bash в CentOS.
Ввод-вывод и перенаправление
Обработка stdout для другой команды —
[rdc@centos ~]$ cat ~/output.txt | wc -l 6039 [rdc@centos ~]$
Выше мы передали cat’sstoud в wc для обработки с символом pipe . Затем wc обработал вывод команды cat , распечатав количество строк файла output.txt на терминале. Думайте о символе канала как о «канале», передающем выходные данные одной команды для обработки следующей командой.
Ниже приведены ключевые понятия, которые следует помнить при работе с перенаправлением команд.
Число | Файловый дескриптор | символ |
---|---|---|
0 | стандартный ввод | < |
1 | стандартный вывод | > |
2 | стандартная ошибка | |
добавить стандартный вывод | >> | |
назначить перенаправление | & | |
трубный ввод в стандартный ввод | | |
Мы представили это в первой главе, не говоря много о перенаправлении или назначении перенаправления. При открытии терминала в Linux ваша оболочка рассматривается как цель по умолчанию для —
- стандартный ввод <0
- стандартный вывод> 1
- стандартная ошибка 2
Давайте посмотрим, как это работает —
[rdc@centos ~]$ lsof -ap $BASHPID -d 0,1,2 COMMAND PID USER **FD** TYPE DEVICE SIZE/OFF NODE NAME bash 13684 rdc **0u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **1u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **2u** CHR 136,0 0t0 3 /dev/pts/0 [rdc@centos ~]$
/ dev / pts / 0 — это наш псевдо-терминал. CentOS Linux смотрит на это и думает о нашем приложении с открытым терминалом как о реальном терминале с клавиатурой и дисплеем, подключенным через последовательный интерфейс. Однако, как гипервизор абстрагирует аппаратное обеспечение от операционной системы / dev / pts абстрагирует наш терминал от приложений.
Из приведенной выше команды lsof мы видим под столбцом FD, что все три дескриптора файла установлены на нашем виртуальном терминале (0,1,2). Теперь мы можем отправлять команды, смотреть вывод команды, а также любые ошибки, связанные с командой.
Ниже приведены примеры для STDIN и STDOUT —
STDOUT
[root@centosLocal centos]# echo "I am coming from Standard output or STDOUT." > output.txt && cat output.txt I am coming from Standard output or STDOUT. [root@centosLocal centos]#
Также можно отправлять как stdout, так и stderr в отдельные файлы —
bash-3.2# find / -name passwd 1> good.txt 2> err.txt bash-3.2# cat good.txt /etc/pam.d/passwd /etc/passwd bash-3.2# cat err.txt find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory bash-3.2#
При поиске по всей файловой системе были обнаружены две ошибки. Каждый из них был отправлен в отдельный файл для последующего просмотра, а возвращенные результаты были помещены в отдельный текстовый файл.
Отправка stderr в текстовый файл может быть полезна при выполнении операций, которые выводят много данных в терминал, например при компиляции приложений. Это позволит просмотреть ошибки, которые могут быть потеряны из истории прокрутки терминала.
Одно примечание при передаче STDOUT в текстовый файл — это различия между >> и > . Двойное «>>» будет добавлено к файлу, в то время как форма единственного числа закроет файл и запишет новое содержимое (поэтому все предыдущие данные будут потеряны).
STDIN
[root@centosLocal centos]# cat < stdin.txt Hello, I am being read form Standard input, STDIN. [root@centosLocal centos]#
В приведенной выше команде текстовый файл stdin.txt был перенаправлен на команду cat, которая передала его содержимое в STDOUT .
Символ трубы «|»
Символ канала будет принимать выходные данные первой команды, передавая их в качестве входных данных следующей команде, что позволяет вторичной команде выполнять операции с выходными данными.
Теперь давайте «передадим» стандартный вывод cat другой команде —
[root@centosLocal centos]# cat output.txt | wc -l 2 [root@centosLocal centos]#
Выше wc выполняет расчеты по выводу cat, который был передан из канала. Команда pipe особенно полезна при фильтрации вывода из grep или egrep —
[root@centosLocal centos]# egrep "^[0-9]{4}$" /usr/dicts/nums | wc -l 9000 [root@centosLocal centos]#
В приведенной выше команде мы передавали каждое четырехзначное число в wc из текстового файла, содержащего все числа из 65535, прошедшего через фильтр egrep .
Перенаправление вывода с помощью &
Вывод может быть перенаправлен с помощью символа & . Если мы хотим направить вывод как STDOUT, так и STDERR в один и тот же файл, это можно сделать следующим образом:
[root@centosLocal centos]# find / -name passwd > out.txt 2>&1 [root@centosLocal centos]# cat out.txt find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory /etc/passwd [root@centosLocal centos]#
Перенаправление с использованием символа & работает следующим образом: сначала вывод перенаправляется в out.txt . Во-вторых, STDERR или файловый дескриптор 2 переназначается в то же место, что и STDOUT, в данном случае out.txt .
Перенаправление чрезвычайно полезно и полезно при решении проблем, возникающих при работе с большими текстовыми файлами, компиляции исходного кода, перенаправлении вывода в сценариях оболочки и выполнении сложных команд Linux.
Перенаправление может быть сложным для новых администраторов CentOS. Практика, исследования и случайные вопросы к форуму Linux (например, Stack Overflow Linux) помогут решить сложные проблемы.
Bash Shell Constructs
Теперь, когда у нас есть хорошее представление о том, как работает оболочка Bash , давайте изучим некоторые основные конструкции, обычно используемые для написания сценариев. В этом разделе мы рассмотрим —
- переменные
- Loops
- Conditionals
- Петлевой контроль
- Чтение и запись в файлы
- Основные математические операции
BASH Советы по устранению неполадок
BASH может быть немного сложнее по сравнению со специальным языком сценариев. Некоторые из самых больших зависаний в скриптах BASH связаны с неправильным экранированием или не экранированием скриптовых операций, передаваемых в оболочку. Если вы несколько раз просматривали сценарий и он не работает должным образом, не расстраивайтесь. Это характерно даже для тех, кто ежедневно использует BASH для создания сложных сценариев.
Быстрый поиск Google или регистрация на экспертном форуме Linux, чтобы задать вопрос, приведет к быстрому решению. Очень вероятно, что кто-то сталкивался с точной проблемой, и она уже была решена.
Сценарии BASH — это отличный метод быстрого создания мощных сценариев для всего: от автоматизации задач администрирования до создания полезных инструментов. Чтобы стать разработчиком BASH-сценария на уровне экспертов, нужно время и практика. Следовательно, используйте BASH-скрипты всякий раз, когда это возможно, это отличный инструмент для вашей панели инструментов администрирования CentOS.
Linux Admin — Управление пакетами
Управление пакетами в CentOS может осуществляться двумя способами: из терминала и из графического интерфейса пользователя.
Чаще всего терминал использует большинство администраторов CentOS. Обновление и установка пакетов для CentOS ничем не отличается. Помня об этом, мы сначала изучим управление пакетами в терминале, а затем коснемся графического инструмента управления пакетами, предоставляемого CentOS.
YUM Package Manager
YUM — это инструмент для управления пакетами в CentOS. Мы кратко затронули эту тему в предыдущих главах. В этой главе мы будем работать с чистой установкой CentOS. Сначала мы полностью обновим нашу установку, а затем установим приложение.
YUM значительно продвинул установку и управление программным обеспечением в Linux. YUM «автоматически» проверяет наличие устаревших зависимостей, в дополнение к устаревшим пакетам. Это действительно сняло нагрузку с администратора CentOS по сравнению со старыми днями компиляции каждого приложения из исходного кода.
ням чек-обновление
Проверяет пакеты, которые могут обновлять кандидатов. В этом руководстве мы будем предполагать, что это производственная система, которая будет работать в Интернете без производственных приложений, которые должны быть протестированы DevOps перед обновлением пакетов. Теперь давайте установим обновленных кандидатов в систему.
[root@localhost rdc]# yum check-update Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu NetworkManager.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-adsl.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-glib.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-libnm.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-team.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-tui.x86_64 1:1.4.0-19.el7_3 updates NetworkManager-wifi.x86_64 1:1.4.0-19.el7_3 updates audit.x86_64 2.6.5-3.el7_3.1 updates vim-common.x86_64 2:7.4.160-1.el7_3.1 updates vim-enhanced.x86_64 2:7.4.160-1.el7_3.1 updates vim-filesystem.x86_64 2:7.4.160-1.el7_3.1 updates vim-minimal.x86_64 2:7.4.160-1.el7_3.1 updates wpa_supplicant.x86_64 1:2.0-21.el7_3 updates xfsprogs.x86_64 4.5.0-9.el7_3 updates [root@localhost rdc]#
ням обновление
Это установит все обновленные кандидаты, что сделает вашу установку CentOS актуальной. При новой установке это может занять немного времени в зависимости от вашей установки и скорости вашего интернет-соединения.
[root@localhost rdc]# yum update vim-minimal x86_64 2:7.4.160-1.el7_3.1 updates 436 k wpa_supplicant x86_64 1:2.0-21.el7_3 updates 788 k xfsprogs x86_64 4.5.0-9.el7_3 updates 895 k Transaction Summary ====================================================================================== Install 2 Packages Upgrade 156 Packages Total download size: 371 M Is this ok [y/d/N]:
Установить программное обеспечение через YUM
Помимо обновления системы CentOS, менеджер пакетов YUM — это наш инструмент для установки программного обеспечения. Все, начиная от инструментов мониторинга сети, видеоплееров и заканчивая текстовыми редакторами, можно установить из центрального хранилища с помощью YUM .
Перед установкой некоторых программных утилит давайте рассмотрим несколько команд YUM . Для повседневной работы 90% использования YUM в CentOS-администрировании будет осуществляться с помощью примерно 7 команд. Мы рассмотрим каждый из них в надежде ознакомиться с работой YUM на профессиональном уровне для ежедневного использования. Однако, как и большинство утилит Linux, YUM предлагает множество расширенных функций, которые всегда полезно изучить на странице руководства. Использование man yum всегда будет первым шагом к выполнению незнакомых операций с любой утилитой Linux.
Самые распространенные команды YUM
Ниже приведены наиболее часто используемые команды YUM.
команда | действие |
---|---|
список установлен | Списки пакетов, установленных через YUM |
перечислить все | Перечисляет все доступные на данный момент пакеты |
список групп | Списки сгруппированных пакетов |
Информация | Предоставляет подробную информацию о пакете |
поиск | Ищет описания пакетов и имена |
устанавливать | Устанавливает пакет |
localinstall | Устанавливает локальный пакет rpm |
Удалить | Удаляет и устанавливает пакет |
очистить все | Очищает / var / cache / yum для освобождения места на диске |
мужик ням | Как и все команды Linux, файл справки |
Установите программное обеспечение с помощью YUM
Теперь мы установим текстовый веб-браузер под названием Lynx . Перед установкой мы должны сначала получить имя пакета, содержащего веб-браузер Lynx. Мы даже не на 100% уверены, что наш репозиторий CentOS по умолчанию предоставляет пакет для веб-браузера Lynx, поэтому давайте поищем и посмотрим —
[root@localhost rdc]# yum search web browser Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu ================================================================= N/S matched: web, browser ================================================================== icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation elinks.x86_64 : A text-mode Web browser firefox.i686 : Mozilla Firefox Web browser firefox.x86_64 : Mozilla Firefox Web browser lynx.x86_64 : A text-based Web browser Full name and summary matches only, use "search all" for everything. [root@localhost rdc]#
Мы видим, CentOS предлагает веб-браузер Lynx в хранилище. Давайте посмотрим еще немного информации о пакете.
[root@localhost rdc]# lynx.x86_64 bash: lynx.x86_64: command not found... [root@localhost rdc]# yum info lynx.x86_64 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu Available Packages Name : lynx Arch : x86_64 Version : 2.8.8 Release : 0.3.dev15.el7 Size : 1.4 M Repo : base/7/x86_64 Summary : A text-based Web browser URL : http://lynx.isc.org/ License : GPLv2 Description : Lynx is a text-based Web browser. Lynx does not display any images, : but it does support frames, tables, and most other HTML tags. One : advantage Lynx has over graphical browsers is speed; Lynx starts and : exits quickly and swiftly displays web pages. [root@localhost rdc]#
Ницца! Версия 2.8 достаточно актуальна, поэтому давайте установим Lynx.
[root@localhost rdc]# yum install lynx Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu Resolving Dependencies --> Running transaction check ---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Installing: lynx x86_64 2.8.80.3.dev15.el7 base 1.4 M Transaction Summary =============================================================================== =============================================================================== Install 1 Package Total download size: 1.4 M Installed size: 5.4 M Is this ok [y/d/N]: y Downloading packages: No Presto metadata available for base lynx-2.8.8-0.3.dev15.el7.x86_64.rpm | 1.4 MB 00:00:10 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : lynx-2.8.8-0.3.dev15.el7.x86_64 1/1 Verifying : lynx-2.8.8-0.3.dev15.el7.x86_64 1/1 Installed: lynx.x86_64 0:2.8.8-0.3.dev15.el7 Complete! [root@localhost rdc]#
Далее, давайте удостоверимся, что Lynx действительно правильно установил.
[root@localhost rdc]# yum list installed | grep -i lynx lynx.x86_64 2.8.8-0.3.dev15.el7 @base [root@localhost rdc]#
Большой! Давайте использовать Lynx и посмотрим, как выглядит сеть без «лайков» и красивых картинок.
[root@localhost rdc]# lynx www.tutorialpoint.in
Отлично, теперь у нас есть веб-браузер для нашего производственного сервера, который можно без особых проблем использовать для удаленных эксплойтов, запускаемых через Интернет. Это хорошая вещь для производственных серверов.
Мы почти закончили, однако сначала нам нужно настроить этот сервер для разработчиков на тестирование приложений. Итак, давайте удостоверимся, что у них есть все инструменты, необходимые для их работы. Мы могли бы установить все по отдельности, но CentOS и YUM сделали это намного быстрее. Давайте установим пакет группы разработки .
[root@localhost rdc]# yum groups list Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu Available Groups: Compatibility Libraries Console Internet Tools Development Tools Graphical Administration Tools Legacy UNIX Compatibility Scientific Support Security Tools Smart Card Support System Administration Tools System Management Done [root@localhost rdc]#
Это небольшой список групп пакетов, предоставляемых CentOS. Посмотрим, что входит в «Группу развития».
[root@localhost rdc]# yum group info "Development Tools" Loaded plugins: fastestmirror, langpacks There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirror.scalabledns.com * extras: mirror.scalabledns.com * updates: mirror.clarkson.edu Group: Development Tools Group-Id: development Description: A basic development environment. Mandatory Packages: autoconf automake binutils bison
Первый экран вывода, как показано выше. Весь этот список довольно полный. Тем не менее, эта группа, как правило, необходимо будет установить целиком с течением времени. Давайте установим всю группу разработки.
[root@localhost rdc]# yum groupinstall "Development Tools"
Это будет большая установка. По завершении на вашем сервере будет большинство библиотек для разработки и компиляторов для Perl, Python, C и C ++.
Графическое управление пакетами в CentOS
Gnome Desktop предоставляет графический инструмент управления пакетами, который называется Software . Это довольно просто в использовании и просто. Программное обеспечение, инструмент управления пакетами Gnome для CentOS, можно найти, выбрав: Приложения → Системные инструменты → Программное обеспечение.
Инструмент управления пакетами программного обеспечения разделен на группы, позволяющие администратору выбирать пакеты для установки. Хотя этот инструмент отлично подходит для простоты использования и простоты для конечных пользователей, YUM гораздо более мощный и, вероятно, будет использоваться администраторами чаще.
Ниже приведен снимок экрана средства управления программными пакетами, не предназначенного для системных администраторов.
Linux Admin — Управление томами
Управление логическими томами (LVM) — это метод, используемый Linux для управления томами хранения на разных физических жестких дисках. Это не следует путать с RAID. Тем не менее, это можно представить в аналогичной концепции, как RAID 0 или J-Bod. В LVM можно иметь (например) три физических диска по 1 ТБ каждый, а затем логический том размером около 3 ТБ, например / dev / sdb. Или даже два логических тома по 1,5 ТБ, 5 томов по 500 ГБ или любая комбинация. Один единственный диск может даже использоваться для моментальных снимков логических томов.
Примечание. Использование логических томов фактически увеличивает дисковый ввод-вывод при правильной настройке. Это работает аналогично RAID 0 для чередования данных на разных дисках.
Когда вы узнаете об управлении томами с помощью LVM, будет проще, если мы знаем, что представляет собой каждый компонент в LVM. Пожалуйста, изучите следующую таблицу, чтобы получить четкое представление о каждом компоненте. Если вам нужно, используйте Google для изучения. Понимание каждой части логического тома важно для управления ими.
PV | Физический том | SDA |
PP | Физический раздел | sda1, sda2 |
В.Г. | Том Группа | Объединенные физические ресурсы |
LV | Логический том | Рассматривается как хранилище для операционной системы |
Физический том будет выглядеть как / dev / sda, / dev / sdb; физический диск, обнаруженный Linux.
Физическим разделом будет раздел диска, разделенный дисковой утилитой, такой как fdisk. Имейте в виду, физический раздел не рекомендуется в большинстве распространенных настроек LVM. Пример: диск / dev / sda разделен на два физических раздела: / dev / sda1 и / dev / sda1
Если у нас есть два физических диска по 1 ТБ каждый, мы можем создать из них группу томов объемом почти 2 ТБ.
Из группы томов мы можем создать три логических тома каждый любого размера, не превышающего общий размер группы томов.
Традиционные инструменты администрирования дисков Linux
Прежде чем знакомиться с новейшими и лучшими инструментами для управления LVM в CentOS 7, мы должны сначала изучить более традиционные инструменты, которые использовались для управления дисками Linux. Эти инструменты пригодятся и по-прежнему будут использоваться с современными инструментами LVM, такими как System Storage Manager: lsblk, parted и mkfs.xfs.
Теперь, если мы добавили еще один или два диска в нашу систему, нам нужно перечислить диски, обнаруженные Linux. Я всегда советую перечислять диски каждый раз перед выполнением операций, которые считаются разрушительными. lsblk — отличный инструмент для получения информации о диске. Посмотрим, какие диски обнаружит CentOS.
[root@localhost rdc]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─cl-root 253:0 0 17G 0 lvm / └─cl-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 6G 0 disk sdc 8:32 0 4G 0 disk sr0 11:0 1 1024M 0 rom
Как видите, в этой системе три диска: sda, sdb и sdc.
Диск sda содержит нашу рабочую установку CentOS, поэтому мы не хотим играть с sda. И sdb, и sdc были добавлены в систему для этого урока. Давайте сделаем эти диски пригодными для использования в CentOS.
Создать метку диска
[root@localhost rdc]# parted /dev/sdb mklabel GPT Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? Yes [root@localhost rdc]#
Теперь у нас есть один диск с надписью. Просто запустите команду parted таким же образом на sdc .
Создать разделы на диске
Мы создадим только один раздел на каждом диске. Для создания разделов снова используется команда parted.
[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%
Предупреждение. Вы запросили раздел размером от 0,00 до 6442 МБ (секторы 0..12582911).
Ближайшее местоположение, которым мы можем управлять, — от 17,4 до 1048 КБ (секторы 34,2047).
Это все еще приемлемо для вас?
Да нет? НЕТ
[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%
Информация — вам может потребоваться обновить / etc / fstab.
[root@localhost rdc]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part / boot └─sda2 8:2 0 19G 0 part ├─cl-root 253:0 0 17G 0 lvm / └─cl-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 6G 0 disk └─sdb1 8:17 0 6G 0 part sdc 8:32 0 4G 0 disk └─sdc1 8:33 0 4G 0 part sr0 11:0 1 1024M 0 rom [root@localhost rdc]#
Как вы можете видеть из вывода lsblk, теперь у нас есть два раздела, каждый на sdb и sdc.
Сделать файловую систему
Наконец, перед монтированием и использованием любого тома нам нужно добавить файловую систему. Мы будем использовать файловую систему XFS.
root@localhost rdc]# mkfs.xfs -f /dev/sdb1 meta-data = /dev/sdb1 isize = 512 agcount = 4, agsize = 393088 blks = sectsz = 512 attr = 2, projid32bit = 1 = crc = 1 finobt = 0, sparse = 0 data = bsize = 4096 blocks = 1572352, imaxpct = 25 = sunit = 0 swidth = 0 blks naming = version 2 bsize = 4096 ascii-ci = 0 ftype = 1 log = internal log bsize = 4096 blocks = 2560, version = 2 = sectsz = 512 sunit = 0 blks, lazy-count = 1 realtime = none extsz = 4096 blocks = 0, rtextents = 0 [root@localhost rdc]# mkfs.xfs -f /dev/sdc1 meta-data = /dev/sdc1 isize = 512 agcount = 4, agsize = 262016 blks = sectsz = 512 attr = 2, projid32bit = 1 = crc = 1 finobt = 0, sparse = 0 data = bsize = 4096 blocks = 1048064, imaxpct = 25 = sunit = 0 swidth = 0 blks naming = version 2 bsize = 4096 ascii-ci = 0 ftype = 1 log = internal log bsize = 4096 blocks = 2560, version = 2 = sectsz = 512 sunit = 0 blks, lazy-count = 1 realtime = none extsz = 4096 blocks = 0, rtextents = 0 [root@localhost rdc]#
Давайте проверим, чтобы убедиться, что у каждого есть используемая файловая система.
[root@localhost rdc]# lsblk -o NAME,FSTYPE NAME FSTYPE sda ├─sda1 xfs └─sda2 LVM2_member ├─cl-root xfs └─cl-swap swap sdb └─sdb1 xfs sdc └─sdc1 xfs sr0 [root@localhost rdc]#
Каждый теперь использует файловую систему XFS. Давайте смонтируем их, проверим монтирование и скопируем в каждый файл.
[root@localhost rdc]# mount -o defaults /dev/sdb1 /mnt/sdb [root@localhost rdc]# mount -o defaults /dev/sdc1 /mnt/sdc [root@localhost ~]# touch /mnt/sdb/myFile /mnt/sdc/myFile [root@localhost ~]# ls /mnt/sdb /mnt/sdc /mnt/sdb: myFile /mnt/sdc: myFile
На данный момент у нас есть два используемых диска. Тем не менее, они будут использоваться только тогда, когда мы монтируем их вручную. Чтобы смонтировать каждый при загрузке, мы должны отредактировать файл fstab . Также должны быть установлены разрешения для групп, которым необходим доступ к новым дискам.
Создание групп томов и логических томов
Одним из величайших дополнений к CentOS 7 стало включение утилиты System Storage Manager или ssm . System Storage Manager значительно упрощает процесс управления пулами LVM и томами хранения в Linux.
Мы пройдем процесс создания простого пула томов и логических томов в CentOS. Первым шагом является установка System Storage Manager.
[root@localhost rdc]# yum install system-storage-manager
Давайте посмотрим на наши диски с помощью команды ssm list .
Как видно выше, в системе установлено всего три диска.
-
/ sdba1 — Хостинг нашей установки CentOS
-
/ sdb1 — монтируется в / mnt / sdb
-
/ sdc1 — монтируется в / mnt / sdc
/ sdba1 — Хостинг нашей установки CentOS
/ sdb1 — монтируется в / mnt / sdb
/ sdc1 — монтируется в / mnt / sdc
Мы хотим создать группу томов, используя два диска (sdb и sdc). Затем сделайте три логических тома по 3 ГБ доступными для системы.
Давайте создадим нашу группу томов.
[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1
По умолчанию ssm создаст один логический том, расширяющий все 10 ГБ пула. Мы не хотим этого, поэтому давайте удалим это.
[root@localhost rdc]# ssm remove /dev/NEW_POOL/lvol001 Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y Logical volume "lvol001" successfully removed [root@localhost rdc]#
Наконец, давайте создадим три логических тома.
[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL [root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL [root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL
Теперь давайте проверим наши новые тома.
Теперь у нас есть три отдельных логических тома, разделенных на два физических раздела диска.
Логические тома — это мощная функция, встроенная в CentOS Linux. Мы коснулись поверхности управления ими. Освоение пулов и логических томов сопровождается практикой и расширенным обучением в Tutorials Point. На данный момент вы изучили основы управления LVM в CentOS и обладаете способностью создавать базовые чередующиеся логические тома на одном хосте.