Учебники

Linux Admin — Краткое руководство

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 []:bob@bobber.net
[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
# user@that.users.mailhost.
#
# 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 для удаленного администрирования на рабочем сервере.

  • Никогда не используйте общее имя пользователя или пароль. Имена пользователей в системе не должны быть системными по умолчанию или связаны с адресом электронной почты компании, например: systemadmin@yourcompany.com

  • Корневой доступ или административный доступ не должны быть разрешены через SSH. Используйте уникальное имя пользователя и su для root или учетной записи администратора после аутентификации через SSH.

  • Политика паролей обязательна: сложные пароли пользователей SSH, такие как: «Это и есть, и GUD & P @ ssW0rd & 24 & me». Меняйте пароли каждые несколько месяцев, чтобы исключить вероятность атак с использованием грубой силы.

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

  • Смотрите ваши логи ежедневно. Как системный администратор, посвящайте журналам системы и безопасности каждое утро не менее 30-40 минут. Если вас спросят, дайте всем знать, что у вас нет времени не проявлять инициативу. Эта практика поможет изолировать предупреждающие знаки до того, как проблема окажется перед конечными пользователями и прибылью компании.

Никогда не используйте общее имя пользователя или пароль. Имена пользователей в системе не должны быть системными по умолчанию или связаны с адресом электронной почты компании, например: systemadmin@yourcompany.com

Корневой доступ или административный доступ не должны быть разрешены через 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 
root@centos.vmnet.local's password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Шаг 5 — Мы больше не можем входить удаленно через ssh с правами root . Итак, давайте войдем в нашу непривилегированную учетную запись пользователя и su в корневой учетной записи.

bash-3.2# ssh chooser@centos.vmnet.local
choozer@centos.vmnet.local'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

Столь же важно соблюдать те же правила для VNC, что и для SSH. Как и SSH, VNC постоянно сканируется по всем диапазонам IP и проверяется на наличие слабых паролей. Стоит также отметить, что сохранение входа в систему CentOS по умолчанию с тайм-аутом консоли помогает в обеспечении безопасности удаленного VNC. Поскольку злоумышленнику понадобятся 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 rdc@192.168.1.143 -L 2200:192.168.1.143:5900 -N

Давайте разберем эту команду —

  • ssh — запускает локальную утилиту ssh

  • -f — ssh должен запускаться в фоновом режиме после полного выполнения задачи

  • rdc@192.168.1.143 — удаленный пользователь ssh на сервере CentOS, на котором размещены службы VNC

  • -L 2200: 192.168.1.143: 5900 — Создать наш туннель [Локальный порт]: [удаленный хост]: [удаленный порт службы VNC]

  • -N говорит SSH, что мы не хотим выполнять команду в удаленной системе

ssh — запускает локальную утилиту ssh

-f — ssh должен запускаться в фоновом режиме после полного выполнения задачи

rdc@192.168.1.143 — удаленный пользователь ssh на сервере CentOS, на котором размещены службы VNC

-L 2200: 192.168.1.143: 5900 — Создать наш туннель [Локальный порт]: [удаленный хост]: [удаленный порт службы VNC]

-N говорит SSH, что мы не хотим выполнять команду в удаленной системе

bash-3.2# ssh -f rdc@192.168.1.143 -L 2200:192.168.1.143:5900 -N
rdc@192.168.1.143's password:

После успешного ввода пароля удаленного пользователя ssh создается наш ssh-туннель . Теперь о крутой части! Для подключения мы указываем наш VNC-клиент на локальный хост на порту нашего туннеля, в данном случае на порт 2200. Ниже приведена конфигурация на VNC-клиенте для ноутбука Mac —

SSH Tunnel

И, наконец, наше удаленное VNC Desktop Connection!

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 rdc@192.168.1.105

Синтаксис — ssh -X [пользователь] @ [хост], и на хосте должен быть запущен ssh с действительным пользователем.

Ниже приведен скриншот GIMP, работающего на рабочей станции Ubuntu через удаленный туннель XWindows ssh.

Используйте SSH Tunnel для удаленного X-Windows

Довольно просто запускать приложения удаленно с другого сервера 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 будет отображать как входящие, так и исходящие данные из указанного интерфейса, наряду с предоставлением физического представления потока данных с помощью хеш-меток «#».

Изображенный скриншот представляет собой простую веб-страницу, загружаемую некоторым фоновым трафиком демона.

Общие параметры командной строки для 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 
(builder@kbuilder.dev.
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/ 
rdc@192.168.1.143:home/rdc/ Documents/RemoteStuff/
rdc@192.168.1.143'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/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143'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/
rdc@192.168.1.143:Documents/RemoteStuff 
rdc@192.168.1.143'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

Теперь установите загрузочный диск —

Загрузочный диск

Теперь при загрузке наша виртуальная машина будет загружаться из загрузочного 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 , давайте изучим некоторые основные конструкции, обычно используемые для написания сценариев. В этом разделе мы рассмотрим —

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

Установите программное обеспечение с помощью YUM

Отлично, теперь у нас есть веб-браузер для нашего производственного сервера, который можно без особых проблем использовать для удаленных эксплойтов, запускаемых через Интернет. Это хорошая вещь для производственных серверов.

Мы почти закончили, однако сначала нам нужно настроить этот сервер для разработчиков на тестирование приложений. Итак, давайте удостоверимся, что у них есть все инструменты, необходимые для их работы. Мы могли бы установить все по отдельности, но 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 .

Команда 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 и обладаете способностью создавать базовые чередующиеся логические тома на одном хосте.