Administrateur Linux - Guide rapide

Unique parmi les distributions Linux de classe affaires, CentOS reste fidèle à la nature open source sur laquelle Linux a été fondé. Le premier noyau Linux a été développé par un étudiant de l'université d'Helsinki (Linus Torvalds) et combiné avec les utilitaires GNU fondés et promus par Richard Stallman. CentOS dispose d'une licence open source éprouvée qui peut alimenter le monde des affaires d'aujourd'hui.

CentOS est rapidement devenu l'une des plates-formes de serveurs les plus prolifiques au monde. Tout administrateur Linux, lorsqu'il cherche un emploi, est tenu de rencontrer les mots: «CentOS Linux Experience Preferred». Des startups aux titans de la technologie Fortune 10 , CentOS s'est placé parmi les échelons supérieurs des systèmes d'exploitation serveur dans le monde.

Ce qui distingue CentOS des autres distributions Linux, c'est une excellente combinaison de -

  • Licence open source

  • Base d'utilisateurs dédiée de professionnels Linux

  • Bon support matériel

  • Stabilité et fiabilité à toute épreuve

  • Focus sur la sécurité et les mises à jour

  • Adhésion stricte aux normes d'emballage de logiciels nécessaires dans un environnement d'entreprise

Avant de commencer les leçons, nous supposons que les lecteurs ont une connaissance de base de Linux et des principes de base de l'administration tels que -

  • Qu'est-ce que l'utilisateur root?

  • La puissance de l'utilisateur root

  • Concept de base des groupes de sécurité et des utilisateurs

  • Expérience de l'utilisation d'un émulateur de terminal Linux

  • Concepts de mise en réseau fondamentaux

  • Compréhension fondamentale des langages de programmation interprétés (Perl, Python, Ruby)

  • Protocoles de mise en réseau tels que HTTP, LDAP, FTP, IMAP, SMTP

  • Cœurs qui composent un système d'exploitation informatique: système de fichiers, pilotes et kerne

Avant d'apprendre les outils d'un administrateur Linux CentOS, il est important de noter la philosophie derrière la ligne de commande d'administration Linux.

Linux a été conçu sur la base de la philosophie Unix de «petits outils précis enchaînés pour simplifier les tâches plus importantes». Linux, à sa racine, n'a pas de grandes applications à usage unique pour une utilisation spécifique la plupart du temps. Au lieu de cela, il existe des centaines d'utilitaires de base qui, lorsqu'ils sont combinés, offrent une grande puissance pour accomplir de grandes tâches avec efficacité.

Exemples de la philosophie Linux

Par exemple, si un administrateur souhaite une liste de tous les utilisateurs actuels d'un système, les commandes chaînées suivantes peuvent être utilisées pour obtenir une liste de tous les utilisateurs du système. Lors de l'exécution de la commande, les utilisateurs présents sur le système sont répertoriés par ordre alphabétique.

[root@centosLocal centos]# cut /etc/passwd -d":" -f1 | sort 
abrt 
adm 
avahi 
bin 
centos 
chrony 
colord 
daemon 
dbus

Il est facile d'exporter cette liste dans un fichier texte à l'aide de la commande suivante.

[root@localhost /]# cut /etc/passwd -d ":" -f1 > system_users.txt        
[root@localhost /]# cat ./system_users.txt | sort | wc –l 
40       
[root@localhost /]#

Il est également possible de comparer la liste des utilisateurs avec une exportation à une date ultérieure.

[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]#

Avec cette approche de petits outils enchaînés pour accomplir des tâches plus importantes, il est plus simple de créer un script exécutant ces commandes que d'envoyer automatiquement les résultats par e-mail à des intervalles de temps réguliers.

Les commandes de base que chaque administrateur Linux doit maîtriser sont:

  • vim
  • grep
  • plus ou moins
  • tail
  • head
  • wc
  • sort
  • uniq
  • tee
  • cat
  • cut
  • sed
  • tr
  • paste

Dans le monde Linux, les administrateurs utilisent filteringchaque jour pour analyser les journaux, filtrer la sortie des commandes et effectuer des actions avec des scripts shell interactifs. Comme mentionné, la puissance de ces commandes vient de leur capacité à se modifier mutuellement via un processus appelépiping.

La commande suivante montre combien de mots commencent par la lettre a du dictionnaire utilisateur principal CentOS.

[root@centosLocal ~]# egrep '^a.*$' /usr/share/dict/words | wc -l 
25192 
[root@centosLocal ~]#

Pour introduire les autorisations telles qu'elles s'appliquent aux répertoires et aux fichiers dans CentOS Linux, examinons la sortie de commande suivante.

[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

Note - Les trois principaux types d'objets que vous verrez sont

  • "-" - un tiret pour un fichier brut

  • "d" - pour un annuaire

  • "l" - pour un lien symbolique

Nous nous concentrerons sur les trois blocs de sortie pour chaque répertoire et fichier -

  • drwxr-xr-x: racine: racine
  • -rw-r - r--: racine: racine
  • drwxr-xr-x: racine: racine

Maintenant, décomposons cela, pour mieux comprendre ces lignes -

Signifie que le type d'objet est un répertoire
rwx Indique les autorisations de répertoire appliquées au propriétaire
rx Indique les autorisations de répertoire appliquées au groupe
rx Indique les autorisations de répertoire appliquées au monde
racine La première instance, indique le propriétaire de l'annuaire
racine La deuxième instance, indique le groupe auquel les autorisations de groupe sont appliquées

Il est important de comprendre la différence entre propriétaire , groupe et monde . Ne pas comprendre cela peut avoir de lourdes conséquences sur les serveurs qui hébergent des services sur Internet.

Avant de donner un exemple réel, comprenons d'abord les autorisations telles qu'elles s'appliquent aux répertoires et aux fichiers .

Veuillez consulter le tableau suivant, puis continuez avec les instructions.

Octal Symbolique Permanente. Annuaire
1 X Exécuter Entrez dans le répertoire et accédez aux fichiers
2 w Écrire Supprimer ou modifier les fichiers dans un répertoire
4 r Lis Lister les fichiers dans le répertoire

Note- Lorsque les fichiers doivent être accessibles pour la lecture dans un répertoire, il est courant d'appliquer des autorisations de lecture et d' exécution . Sinon, les utilisateurs auront des difficultés à travailler avec les fichiers. Si vous laissez l' écriture désactivée, les fichiers ne pourront pas être: renommés, supprimés, copiés ou modifiés.

Application des autorisations aux répertoires et aux fichiers

Lors de l'application des autorisations, il y a deux concepts à comprendre:

  • Autorisations symboliques
  • Autorisations octales

En substance, chacun est la même mais une manière différente de faire référence et d'attribuer des autorisations de fichier. Pour un guide rapide, veuillez étudier et vous référer au tableau suivant -

Lis Écrire Exécuter
Octal 4 2 1
Symbolic r w X

Lors de l'attribution d'autorisations à l'aide du octalméthode, utilisez un nombre de 3 octets tel que: 760. Le nombre 760 se traduit par: Propriétaire: rwx; Groupe: rw; Autre (ou monde) aucune autorisation.

Un autre scénario: 733 se traduirait par: Propriétaire: rwx; Groupe: wx; Autre: wx.

Il y a un inconvénient aux autorisations utilisant la méthode Octal. Les ensembles d'autorisations existants ne peuvent pas être modifiés. Il est uniquement possible de réaffecter l'ensemble des autorisations d'un objet.

Maintenant, vous vous demandez peut-être quel est le problème avec la réattribution permanente des autorisations? Imaginez une grande structure de répertoires, par exemple / var / www / sur un serveur Web de production. Nous voulons supprimer récursivement le bit w ou write sur tous les répertoires pour Other. Ainsi, le forçant à être ajouté de manière proactive uniquement lorsque cela est nécessaire pour des mesures de sécurité. Si nous réaffectons l'ensemble des autorisations, nous supprimons toutes les autres autorisations personnalisées affectées à chaque sous-répertoire.

Par conséquent, cela posera un problème à la fois à l'administrateur et à l'utilisateur du système. À un moment donné, une personne (ou des personnes) devra réaffecter toutes les autorisations personnalisées qui ont été supprimées en réattribuant l'ensemble des autorisations pour chaque répertoire et objet.

Dans ce cas, nous voudrions utiliser la méthode symbolique pour modifier les autorisations -

chmod -R o-w /var/www/

La commande ci-dessus ne "remplacerait pas les autorisations" mais modifierait les ensembles d'autorisations actuels. Alors habituez-vous à utiliser les meilleures pratiques

  • Octal uniquement pour attribuer des autorisations
  • Symbolique pour modifier les ensembles d'autorisations

Il est important qu'un administrateur CentOS maîtrise les autorisations octales et symboliques , car les autorisations sont importantes pour l'intégrité des données et l'ensemble du système d'exploitation. Si les autorisations sont incorrectes, le résultat final sera à la fois des données sensibles et l'ensemble du système d'exploitation sera compromis.

Avec cela couvert, examinons quelques commandes pour modifier les autorisations et le propriétaire / les membres de l'objet -

  • chmod
  • chown
  • chgrp
  • umask

chmod: Modifier les bits d'autorisation du mode fichier

Commander action
-c Comme verbeux, mais ne rapportera que les modifications apportées
-v Verbose, affiche les diagnostics pour chaque demande effectuée
-R Applique de manière récursive l'opération sur les fichiers et répertoires

chmod nous permettra de modifier les autorisations des répertoires et des fichiers en utilisant des ensembles d'autorisations octales ou symboliques . Nous allons l'utiliser pour modifier notre affectation et télécharger des répertoires.

chown: Changer le propriétaire du fichier et le groupe

Commander action
-c Comme verbeux, mais ne rapportera que les modifications apportées
-v Verbose, affiche les diagnostics pour chaque demande effectuée
-R Applique de manière récursive l'opération sur les fichiers et répertoires

chown peut modifier à la fois la propriété de l'utilisateur et du groupe d'objets. Cependant, à moins d'avoir besoin de modifier les deux en même temps, l'utilisation de chgrp est généralement utilisée pour les groupes.

chgrp: modifier la propriété du groupe d'un fichier ou d'un répertoire

Commander action
-c Comme verbeux, mais ne rapportera que les changements
-v Verbose, génère le diagnostic pour chaque demande effectuée
-R De manière récursive, applique les opérations sur les fichiers et les répertoires

chgrp changera le propriétaire du groupe en celui fourni.

Pratique du monde réel

Modifions toutes les affectations de sous-répertoires dans / var / www / étudiants / afin que le groupe propriétaire soit le groupe des étudiants . Attribuez ensuite la racine des étudiants au groupe des professeurs. Plus tard, faites du Dr Terry Thomas le propriétaire du répertoire des étudiants , puisqu'il est chargé de toutes les universités en informatique de l'école.

Comme nous pouvons le voir, une fois créé, le répertoire est laissé assez brut.

[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 ~]#

En tant qu'administrateurs, nous ne voulons jamais donner nos informations d'identification root à qui que ce soit. Mais en même temps, nous devons permettre aux utilisateurs de faire leur travail. Laissons donc le Dr Terry Thomas prendre plus de contrôle sur la structure des fichiers et limiter ce que les étudiants peuvent faire.

[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 ~]#

Désormais, chaque répertoire et sous-répertoire a un propriétaire de drterryt et le groupe propriétaire est composé de professeurs . Étant donné que le répertoire des devoirs permet aux étudiants de rendre le travail attribué, supprimons la possibilité de répertorier et de modifier les fichiers du groupe d' étudiants .

[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]#

Les étudiants peuvent copier les devoirs dans le répertoire des devoirs . Mais ils ne peuvent pas répertorier le contenu du répertoire, copier les fichiers actuels ou modifier les fichiers dans le répertoire des affectations . Ainsi, il permet simplement aux étudiants de soumettre des travaux terminés. Le système de fichiers CentOS fournira un horodatage de la remise des affectations.

En tant que propriétaire du répertoire des affectations -

[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]$

Nous pouvons voir que le propriétaire du répertoire peut lister les fichiers ainsi que modifier et supprimer des fichiers.

Commande umask: fournit les modes par défaut pour les autorisations de fichier et de répertoire au fur et à mesure de leur création

umask est une commande importante qui fournit les modes par défaut pour les autorisations de fichier et de répertoire au fur et à mesure de leur création.

Les autorisations umask utilisent une logique unaire et annulée.

Autorisation Opération
0 Lire, écrire, exécuter
1 Lire et écrire
2 Lire et exécuter
3 Lecture seulement
4 Lire et exécuter
5 Ecrire uniquement
6 Exécuter uniquement
sept pas de permissions
[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]$

Maintenant, changeons le umask de notre utilisateur actuel, et créons un nouveau fichier et un nouveau répertoire.

[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

Comme nous pouvons le voir, les fichiers nouvellement créés sont un peu plus restrictifs qu'avant.

umask pour les utilisateurs doit être modifié soit dans -

  • /etc/profile
  • ~/bashrc
[root@centosLocal centos]# su adama 
[adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$

En général, le umask par défaut dans CentOS sera correct. Lorsque nous rencontrons des problèmes avec une valeur par défaut de 0022 , c'est généralement lorsque différents départements appartenant à différents groupes doivent collaborer sur des projets.

C'est là qu'intervient le rôle d'un administrateur système, pour équilibrer les opérations et la conception du système d'exploitation CentOS.

Lorsque nous discutons de la gestion des utilisateurs , nous devons comprendre trois termes importants:

  • Users
  • Groups
  • Permissions

Nous avons déjà discuté des autorisations détaillées appliquées aux fichiers et aux dossiers. Dans ce chapitre, parlons des utilisateurs et des groupes.

Utilisateurs CentOS

Dans CentOS, il existe deux types de comptes -

  • System accounts - Utilisé pour un démon ou un autre logiciel.

  • Interactive accounts - Habituellement attribué à un utilisateur pour accéder aux ressources système.

La principale différence entre les deux types d'utilisateurs est -

  • System accountssont utilisés par les démons pour accéder aux fichiers et répertoires. Celles-ci seront généralement interdites lors de la connexion interactive via le shell ou la connexion à la console physique.

  • Interactive accounts sont utilisés par les utilisateurs finaux pour accéder aux ressources informatiques à partir d'une connexion shell ou d'une console physique.

Avec cette compréhension de base des utilisateurs, créons maintenant un nouvel utilisateur pour Bob Jones dans le service de comptabilité. Un nouvel utilisateur est ajouté avec leadduser commander.

Voici quelques adduser commutateurs communs -

Commutateur action
-c Ajoute un commentaire au compte utilisateur
-m Crée le répertoire personnel de l'utilisateur à l'emplacement par défaut, s'il n'existe pas
-g Groupe par défaut à affecter à l'utilisateur
-n Ne crée pas de groupe privé pour l'utilisateur, généralement un groupe avec un nom d'utilisateur
-M Ne crée pas de répertoire personnel
-s Shell par défaut autre que / bin / bash
-u Spécifie l'UID (sinon attribué par le système)
-G Groupes supplémentaires auxquels attribuer l'utilisateur

Lors de la création d'un nouvel utilisateur, utilisez les commutateurs -c, -m, -g, -n comme suit -

[root@localhost Downloads]# useradd -c "Bob Jones  Accounting Dept Manager" 
-m -g accounting -n bjones

Voyons maintenant si notre nouvel utilisateur a été créé -

[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]#

Nous devons maintenant activer le nouveau compte à l'aide de la commande 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]#

Le compte utilisateur n'est pas activé, ce qui permet à l'utilisateur de se connecter au système.

Désactivation des comptes d'utilisateurs

Il existe plusieurs méthodes pour désactiver les comptes sur un système. Celles-ci vont de l'édition manuelle du fichier / etc / passwd. Ou même en utilisant la commande passwd avec le-lcommutateur. Ces deux méthodes ont un gros inconvénient: si l'utilisateur a un accès ssh et utilise une clé RSA pour l'authentification, il peut toujours se connecter en utilisant cette méthode.

Maintenant , nous allons utiliser la chage commande, changer la date d'expiration du mot de passe à une date antérieure. En outre, il peut être bon de noter sur le compte pourquoi nous l'avons désactivé.

[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]#

Gérer les groupes

La gestion des groupes sous Linux permet à un administrateur de combiner les utilisateurs dans des conteneurs appliquant des ensembles d'autorisations applicables à tous les membres du groupe. Par exemple, tous les utilisateurs de la comptabilité peuvent avoir besoin d'accéder aux mêmes fichiers. Ainsi, nous créons un groupe de comptabilité, en ajoutant des utilisateurs de comptabilité.

Pour la plupart, tout ce qui nécessite des autorisations spéciales doit être effectué dans un groupe. Cette approche permet généralement de gagner du temps par rapport à l'application d'autorisations spéciales à un seul utilisateur. Exemple, Sally est en charge des rapports et seule Sally a besoin d'accéder à certains fichiers pour les rapports. Cependant, que se passe-t-il si Sally est malade un jour et que Bob fait des rapports? Ou le besoin de reporting augmente? Lorsqu'un groupe est créé, un administrateur n'a besoin de le faire qu'une seule fois. L'ajout d'utilisateurs est appliqué à mesure que les besoins changent ou se développent.

Voici quelques commandes courantes utilisées pour gérer les groupes -

  • chgrp
  • groupadd
  • groups
  • usermod

chgrp - Modifie la propriété du groupe pour un fichier ou un répertoire.

Créons un répertoire pour les personnes du groupe de comptabilité pour stocker les fichiers et créer des répertoires pour les fichiers.

[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]#

Ensuite, donnons la propriété du groupe au groupe comptable .

[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]#

Désormais, tous les membres du groupe de comptabilité ont des autorisations de lecture et d' exécution sur / home / comptabilité . Ils auront également besoin d'autorisations d'écriture.

[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]#

Étant donné que le groupe de comptabilité peut traiter des documents sensibles, nous devons appliquer des autorisations restrictives pour les autres ou le monde .

[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 - Utilisé pour créer un nouveau groupe.

Commutateur action
-g Spécifie un GID pour le groupe
-K Remplace les spécifications du GID dans /etc/login.defs
-o Permet de remplacer la non-autorisation d'identifiant de groupe non unique
-p Mot de passe de groupe, permettant aux utilisateurs de s'activer

Faisons un nouveau groupe appelé secret. Nous ajouterons un mot de passe au groupe, permettant aux utilisateurs de s'ajouter avec un mot de passe connu.

[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 ~]$

Dans la pratique, les mots de passe des groupes ne sont pas souvent utilisés. Les groupes secondaires sont adéquats et le partage de mots de passe entre d'autres utilisateurs n'est pas une bonne pratique de sécurité.

le groupsLa commande est utilisée pour montrer à quel groupe appartient un utilisateur. Nous l'utiliserons après avoir apporté quelques modifications à notre utilisateur actuel.

usermod est utilisé pour mettre à jour les attributs du compte.

Voici les commutateurs usermod courants .

Commutateur action
-une Ajoute, ajoute un utilisateur à des groupes supplémentaires, uniquement avec l'option -G
-c Commentaire, met à jour la valeur du commentaire utilisateur
-ré Répertoire personnel, met à jour le répertoire personnel de l'utilisateur
-G Regroupe, ajoute ou supprime les groupes d'utilisateurs secondaires
-g Groupe, groupe principal par défaut de l'utilisateur
[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]#

Les quotas de disque CentOS peuvent être activés à la fois; alerter l'administrateur système et refuser l'accès supplémentaire au stockage sur disque à un utilisateur avant que la capacité du disque ne soit dépassée. Lorsqu'un disque est plein, en fonction de ce qui se trouve sur le disque, un système entier peut s'arrêter brusquement jusqu'à ce qu'il soit récupéré.

L'activation de la gestion des quotas dans CentOS Linux est essentiellement un processus en 4 étapes -

  • Step 1 - Activez la gestion des quotas pour les groupes et les utilisateurs dans / etc / fstab.

  • Step 2 - Remontez le système de fichiers.

  • Step 3 - Créez une base de données de quotas et générez une table d'utilisation du disque.

  • Step 4 - Attribuez des politiques de quota.

Activer la gestion des quotas dans / etc / fstab

Tout d'abord, nous voulons sauvegarder notre fichier / etc / fstab -

[root@centosLocal centos]# cp -r /etc/fstab ./

Nous avons maintenant une copie de notre travail connu / etc / fstab dans le répertoire de travail actuel.

# 
# /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

Nous avons apporté les modifications suivantes dans la section des options de / etc / fstab pour le volume ou le libellé où les quotas doivent être appliqués pour les utilisateurs et les groupes.

  • usrquota
  • grpquota

Comme vous pouvez le voir, nous utilisons le xfssystème de fichiers. Lorsque vous utilisez xfs, des étapes manuelles supplémentaires sont nécessaires./homeest sur le même disque que /. Une enquête plus approfondie montre / est défini pour noquota , qui est une option de montage au niveau du noyau. Nous devons reconfigurer nos options de démarrage du noyau.

root@localhost rdc]# mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

Reconfiguration des options de démarrage du noyau pour les systèmes de fichiers XFS

Cette étape n'est nécessaire que sous deux conditions -

  • Lorsque le disque / partition sur lequel nous activons les quotas utilise le système de fichiers xfs
  • Lorsque le noyau transmet le paramètre noquota à / etc / fstab au démarrage

Step 1 - Faites une sauvegarde de / etc / default / grub.

cp /etc/default/grub ~/

Step 2- Modifiez / etc / default / grub .

Voici le fichier par défaut.

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"

Nous voulons modifier la ligne suivante -

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"

Note- Il est important de copier ces modifications textuellement. Après avoir reconfiguré grub.cfg, notre système ne démarrera pas si des erreurs ont été commises dans la configuration. Veuillez essayer cette partie du didacticiel sur un système hors production.

Step 3 - Sauvegardez votre grub.cfg de travail

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

Créer un nouveau 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]#

Redémarrer

[root@localhost rdc]#reboot

Si toutes les modifications étaient précises, nous ne devrions pas avoir la possibilité d'ajouter des quotas au système de fichiers xfs .

[rdc@localhost ~]$ mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
 
[rdc@localhost ~]$

Nous avons passé les paramètres usrquota et grpquota via grub.

Maintenant, modifiez à nouveau / etc / fstab pour inclure / since / home sur le même disque physique.

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

Maintenant, activons les bases de données de quotas.

[root@localhost rdc]# quotacheck -acfvugM

Assurez-vous que les quotas sont activés.

[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]#

Remonter le système de fichiers

Si la partition ou le disque est séparé de la partition démarrée activement, nous pouvons remonter sans redémarrer. Si le quota a été configuré sur un disque / partition démarré dans le répertoire racine /, il se peut que nous devions redémarrer le système d'exploitation. Forcer le remontage et appliquer les modifications, la nécessité de remonter le système de fichiers peut varier.

[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 ~]$

Comme nous pouvons le voir, les volumes LVM sont en cours d'utilisation. Il est donc simple de redémarrer. Cela remontera / home et chargera les modifications de configuration / etc / fstab dans la configuration active.

Créer des fichiers de base de données de quotas

CentOS est maintenant capable de travailler avec des quotas de disque sur / home. Pour activer la prise en charge complète des quotas, nous devons exécuter lequotacheck commander.

quotacheck créera deux fichiers -

  • aquota.user
  • aquota.group

Ils sont utilisés pour stocker les informations de quota pour les disques / partitions activés par quota.

Voici les commutateurs de quotacheck courants.

Commutateur action
-u Vérifie les quotas d'utilisateurs
-g Vérifie les quotas de groupe
-c Les quotas doivent être activés pour chaque système de fichiers avec des quotas activés
-v Affiche une sortie détaillée

Ajouter des limites de quota par utilisateur

Pour cela, nous utiliserons la commande edquota, suivie du nom d'utilisateur -

[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

Regardons chaque colonne.

  • Filesystem - Ce sont les quotas de système de fichiers pour l'utilisateur appliqués à

  • blocks - Combien de blocs l'utilisateur utilise actuellement sur chaque système de fichiers

  • soft- Définissez des blocs pour une limite souple. La limite souple permet à l'utilisateur de porter le quota pour une période donnée

  • hard- Définissez des blocs pour une limite stricte. La limite stricte est le quota total autorisé

  • inodes - Combien d'inodes l'utilisateur utilise actuellement

  • soft - Limite d'inode souple

  • hard - Limite inode dure

Pour vérifier notre quota actuel en tant qu'utilisateur -

[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 ~]$

Voici une erreur donnée à un utilisateur lorsque la limite de quota fixe a dépassé.

[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]$

Comme nous pouvons le voir, nous sommes étroitement dans le quota de disque de cet utilisateur. Définissons un avertissement de limite souple. De cette façon, l'utilisateur recevra un préavis avant l'expiration des limites de quota. Par expérience, vous recevrez des plaintes des utilisateurs finaux lorsqu'ils entreront au travail et devront passer 45 minutes à effacer les fichiers pour se rendre au travail.

En tant qu'administrateur, nous pouvons vérifier l'utilisation des quotas avec le repquota commander.

[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]#

Comme nous pouvons le voir, l'utilisateur centos a dépassé son quota de blocs durs et ne peut plus utiliser d'espace disque sur / home .

- + indique qu'un quota fixe a été dépassé sur le système de fichiers.

Lors de la planification des quotas, il est nécessaire de faire un peu de calcul. Ce qu'un administrateur doit savoir, c'est: Combien d'utilisateurs y a-t-il sur le système? Combien d'espace libre à allouer entre les utilisateurs / groupes? Combien d'octets composent un bloc sur le système de fichiers?

Définissez les quotas en termes de blocs en fonction de l'espace disque libre. Il est recommandé de laisser un tampon «sûr» d'espace libre sur le système de fichiers qui restera dans le pire des cas: tous les quotas sont simultanément dépassés. C'est particulièrement le cas sur une partition utilisée par le système pour écrire des journaux.

systemdest la nouvelle façon d'exécuter des services sous Linux. systemd a un sysvinit remplacé . systemd accélère les temps de démarrage de Linux et constitue désormais un moyen standard de gérer les services Linux. Bien que stable, systemd évolue toujours.

systemd en tant que système d'initialisation, est utilisé pour gérer à la fois les services et les démons qui ont besoin de changements d'état après le démarrage du noyau Linux. Par changement d'état, le démarrage, l'arrêt, le rechargement et l'ajustement de l'état du service sont appliqués.

Tout d'abord, vérifions la version de systemd actuellement en cours d'exécution sur notre serveur.

[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 ~]$

À partir de la version 7 de CentOS, entièrement mise à jour au moment de la rédaction de cet article, la version 219 de systemd est la version stable actuelle.

Nous pouvons également analyser l'heure du dernier démarrage du serveur avec systemd-analyser

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

Lorsque les temps de démarrage du système sont plus lents, nous pouvons utiliser la commande systemd-analyz 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

Lorsque vous travaillez avec systemd , il est important de comprendre le concept d' unités .Unitssont les ressources que systemd sait interpréter. Les unités sont classées en 12 types comme suit -

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

Pour la plupart, nous travaillerons avec .service comme cibles unitaires. Il est recommandé de poursuivre les recherches sur les autres types. Comme seules les unités .service s'appliqueront au démarrage et à l'arrêt des services systemd .

Chaque unité est définie dans un fichier situé soit dans -

  • /lib/systemd/system - fichiers d'unité de base

  • /etc/systemd/system - fichiers d'unité modifiés démarrés au moment de l'exécution

Gérer les services avec systemctl

Pour travailler avec systemd , nous devrons nous familiariser avec la commande systemctl . Voici les commutateurs de ligne de commande les plus courants pour systemctl .

Commutateur action
-t Valeur séparée par des virgules des types d'unité tels que service ou socket
-une Affiche toutes les unités chargées
--Etat Affiche toutes les unités dans un état défini, soit: charge, sous, active, inactive, etc.
-H Exécute l'opération à distance. Spécifiez le nom d'hôte ou l'hôte et l'utilisateur séparés par @.

Utilisation de base du systemctl

systemctl [operation]
example: systemctl --state [servicename.service]

Pour un aperçu rapide de tous les services fonctionnant sur notre box.

[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

Arrêt d'un service

Commençons par arrêter le service Bluetooth.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

Comme on peut le voir, le service bluetooth est désormais inactif.

Pour redémarrer le service Bluetooth.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Note- Nous n'avons pas spécifié bluetooth.service, car le .service est implicite. C'est une bonne pratique de penser au type d'unité qui ajoute le service que nous traitons. Donc, à partir de maintenant , nous utiliserons l' extension .service pour clarifier que nous travaillons sur les opérations des unités de service.

Les principales actions qui peuvent être effectuées sur un service sont:

Début Démarre le service
Arrêtez Arrête un service
Recharger Recharge la configuration active d'un service sans l'arrêter (comme kill -HUP dans system v init)
Redémarrer Démarre, puis arrête un service
Activer Démarre un service au moment du démarrage
Désactiver Empêche un service de démarrer automatiquement au moment de l'exécution

Les actions ci-dessus sont principalement utilisées dans les scénarios suivants -

Début Pour mettre en place un service qui a été mis à l'état arrêté.
Arrêtez Pour arrêter temporairement un service (par exemple lorsqu'un service doit être arrêté pour accéder aux fichiers verrouillés par le service, comme lors de la mise à niveau du service)
Recharger Lorsqu'un fichier de configuration a été édité et que nous voulons appliquer les nouvelles modifications sans arrêter le service.
Redémarrer Dans le même scénario que le rechargement, mais le service ne prend pas en charge le rechargement .
Activer Lorsque nous voulons qu'un service désactivé s'exécute au moment du démarrage.
Désactiver Utilisé principalement lorsqu'il est nécessaire d'arrêter un service, mais il démarre au démarrage.

Pour vérifier l'état d'un service -

[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]#

Montrez-nous l'état actuel du service réseau . Si nous voulons voir tous les services liés au réseautage, nous pouvons utiliser -

[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]#

Pour ceux qui connaissent le sysinitméthode de gestion des services, il est important de faire la transition vers systemd . systemd est la nouvelle façon de démarrer et d'arrêter les services démons sous Linux.

systemctlest l'utilitaire utilisé pour contrôler systemd. systemctl offre aux administrateurs CentOS la possibilité d'effectuer une multitude d'opérations sur systemd, y compris -

  • Configurer les unités systemd
  • Obtenir le statut des untis systemd
  • Démarrer et arrêter les services
  • Activer / désactiver les services systemd pour l'exécution, etc.

La syntaxe de commande pour systemctl est assez basique, mais peut s'embrouiller avec des commutateurs et des options. Nous présenterons les fonctions les plus essentielles de systemctl nécessaires à l'administration de CentOS Linux.

Basic systemctl syntax: 
systemctl [OPTIONS] COMMAND [NAME]

Voici les commandes courantes utilisées avec systemctl -

  • start
  • stop
  • restart
  • reload
  • status
  • is-active
  • list-units
  • enable
  • disable
  • cat
  • show

Nous avons déjà discuté de démarrer , arrêter , recharger , redémarrer , activer et désactiver avec systemctl. Passons donc en revue les commandes les plus couramment utilisées.

statut

Dans sa forme la plus simple, la commande status peut être utilisée pour voir l'état du système dans son ensemble -

[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

La sortie ci-dessus a été condensée. Dans le monde réel, le statut systemctl produira environ 100 lignes d'états de processus arborés.

Disons que nous voulons vérifier l'état de notre service de pare-feu -

[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

Comme vous le voyez, notre service de pare-feu est actuellement actif et existe depuis plus de 4 heures.

liste-unités

La commande list-units nous permet de lister toutes les unités d'un certain type. Vérifions les sockets gérées par 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

Maintenant, vérifions les services en cours d'exécution -

[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

c'est actif

La commande is-active est un exemple de commandes systemctl conçues pour renvoyer les informations d'état d'une unité.

[root@localhost rdc]# systemctl is-active ksm.service 
active

chat

cat est l'une des commandes rarement utilisées. Au lieu d'utiliser cat dans le shell et de taper le chemin vers un fichier d'unité, utilisez simplement 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]#

Maintenant que nous avons exploré les deux systemd et systemctl plus en détail, nous allons les utiliser pour gérer les ressources en cgroups ou groupes témoins .

cgroups ou groupes de contrôle sont une caractéristique du noyau Linux qui permet à un administrateur d'allouer ou plafonner les ressources du système pour les services et aussi le groupe.

Pour lister les groupes de contrôle actifs en cours d'exécution, nous pouvons utiliser la commande ps suivante -

[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

La gestion des ressources, à partir de CentOS 6.X, a été redéfinie avec l' implémentation de systemd init . En pensant à la gestion des ressources pour les services, la principale chose sur laquelle se concentrer sont les groupes de contrôle .cgroupsont avancé avec systemd en termes de fonctionnalité et de simplicité.

Le but des groupes de contrôle dans la gestion des ressources est qu'aucun service ne peut interrompre le système dans son ensemble. Ou aucun processus de service unique (peut-être un script PHP mal écrit) ne paralysera la fonctionnalité du serveur en consommant trop de ressources.

Les cgroups permettent le contrôle des ressources des unités pour les ressources suivantes -

  • CPU - Limitez les tâches intensives du processeur qui ne sont pas critiques comme d'autres tâches moins intensives

  • Memory - Limiter la quantité de mémoire qu'un service peut consommer

  • Disks - Limiter les E / S disque

** Temps CPU: **

Les tâches nécessitant moins de priorité de processeur peuvent avoir des tranches de processeur configurées de manière personnalisée.

Jetons un coup d'œil aux deux services suivants par exemple.

Service CPU poli 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]#

Service CPU maléfique 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]#

Définissons Polite Service en utilisant une priorité CPU moindre -

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        -        -

Comme nous pouvons le voir, sur une période de temps d'inactivité normal du système, les deux processus non fiables utilisent toujours des cycles de processeur. Cependant, celui configuré pour avoir moins de tranches de temps utilise moins de temps CPU. Dans cet esprit, nous pouvons voir comment l'utilisation d'une tranche de temps moindre permettrait aux tâches essentielles d'accéder plus facilement aux ressources du système.

Pour définir des services pour chaque ressource, la méthode set-property définit les paramètres suivants -

systemctl set-property name parameter=value

Tranches de processeur CPUShares
Limite de mémoire MemoryLimit
Limite de mémoire souple MemorySoftLimit
Bloquer le poids d'E / S BloquerIOWeight
Bloquer la limite de périphérique (spécifié dans / volume / chemin)) BlockIODeviceWeight
Lire IO BlockIOReadBandwidth
E / S d'écriture sur disque BlockIOReadBandwidth

Le plus souvent, les services seront limités par l'utilisation du processeur , les limites de la mémoire et les E / S en lecture / écriture .

Après avoir changé chacun, il est nécessaire de recharger systemd et de redémarrer le service -

systemctl set-property foo.service CPUShares = 250 
systemctl daemon-reload 
systemctl restart foo.service

Configurer CGroups dans CentOS Linux

Pour créer des groupes de contrôle personnalisés dans CentOS Linux, nous devons d'abord installer les services et les configurer.

Step 1 - Installez libcgroup (s'il n'est pas déjà installé).

[root@localhost]# yum install libcgroup 
Package libcgroup-0.41-11.el7.x86_64 already installed and latest version 
Nothing to do 
[root@localhost]#

Comme nous pouvons le voir, par défaut CentOS 7 a libcgroup installé avec l' installateur de tout . L'utilisation d'un programme d'installation minimal nous obligera à installer les utilitaires libcgroup avec toutes les dépendances.

Step 2 - Démarrez et activez le service 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]#

Voici les commandes courantes utilisées avec Process Management – ​​bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.

Travailler avec des processus

Quick Note: Process PID in Linux

Sous Linux, chaque processus en cours reçoit un PID ou un numéro d'identification de processus. Ce PID est la façon dont CentOS identifie un processus particulier. Comme nous l'avons vu, systemd est le premier processus démarré et doté d'un PID de 1 dans CentOS.

Pgrep est utilisé pour obtenir le PID Linux pour un nom de processus donné.

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

Comme on le voit, la commande pgrep renvoie le PID actuel de systemd.

Processus CentOS de base et gestion des travaux dans CentOS

Lorsque vous travaillez avec des processus sous Linux, il est important de savoir comment les processus de base de premier plan et d'arrière-plan sont exécutés sur la ligne de commande.

  • fg - Mettre le processus au premier plan

  • bg - Déplacer le processus en arrière-plan

  • jobs - Liste des processus actuels attachés au shell

  • ctrl+z - Combinaison de touches Ctrl + z pour mettre en veille le processus en cours

  • & - Démarre le processus en arrière-plan

Commençons par utiliser la commande shell sleep .sleepfera simplement comme il est nommé, dormir pendant une période de temps définie: dormir .

[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 ~]$

Maintenant, mettons le premier travail au premier plan -

[root@CentOS ~]$ fg 1 
sleep 10

Si vous suivez, vous remarquerez que le travail de premier plan est coincé dans votre shell. Maintenant, mettons le processus en veille, puis réactivons-le en arrière-plan.

  • Contrôle des coups + z
  • Tapez: bg 1, en envoyant le premier travail en arrière-plan et en le démarrant.
[root@CentOS ~]$ fg 1 sleep 20 ^Z [1]+ Stopped sleep 20 [root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

nohup

Lorsque vous travaillez à partir d'un shell ou d'un terminal, il convient de noter que par défaut, tous les processus et travaux attachés au shell se termineront lorsque le shell est fermé ou que l'utilisateur se déconnecte. Lors de l'utilisation de nohup, le processus continuera à s'exécuter si l'utilisateur se déconnecte ou ferme le shell auquel le processus est attaché.

[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

Commande ps

le psLa commande est couramment utilisée par les administrateurs pour rechercher des instantanés d'un processus spécifique. ps est couramment utilisé avec grep pour filtrer un processus spécifique à analyser.

[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

Dans la commande ci-dessus, nous voyons tous les processus utilisant l' interpréteur python . Notre commande grep, qui recherchait la chaîne python, était également incluse avec les résultats .

Voici les commutateurs de ligne de commande les plus courants utilisés avec ps .

Commutateur action
une Exclut les contraintes des processus de reporting uniquement pour l'utilisateur actuel
X Affiche les processus non attachés à un tty ou un shell
w Formate un large affichage de sortie de la sortie
e Affiche l'environnement après la commande
-e Sélectionne tous les processus
-o Sortie formatée définie par l'utilisateur
-u Affiche tous les processus par un utilisateur spécifique
-C Affiche tous les processus par nom ou identifiant de processus
--Trier Trie les processus par définition

Pour voir tous les processus utilisés par l' utilisateur nobody -

[root@CentOS ~]$ ps -u nobody PID TTY TIME CMD 1853 ? 00:00:00 dnsmasq [root@CentOS ~]$

Pour voir toutes les informations sur le processus 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 ~]$

Voyons quels processus consomment le plus de mémoire -

[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 ~]$

Voir tous les processus par centos utilisateur et format, en affichant la sortie personnalisée -

[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

Commande pstree

pstreeest similaire à ps mais n'est pas souvent utilisé. Il affiche les processus d'une manière plus ordonnée.

[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

La sortie totale de pstree peut dépasser 100 lignes. Habituellement, ps donnera des informations plus utiles.

commande top

topest l'une des commandes les plus souvent utilisées pour résoudre les problèmes de performances sous Linux. Il est utile pour les statistiques en temps réel et la surveillance des processus sous Linux. Voici la sortie par défaut de top lorsqu'il est mis en place depuis la ligne de commande.

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

Touches de raccourci courantes utilisées lors de l'exécution de top ( les touches de raccourci sont accessibles en appuyant sur la touche car top est en cours d'exécution dans votre shell).

Commander action
b Active / désactive la mise en évidence en gras dans le menu supérieur
z Cycle le jeu de couleurs
l Fait cycle le cap moyen de charge
m Fait défiler le cap moyen de la mémoire
t En-tête d'informations sur la tâche
h Menu d'aide
Maj + F Personnalise le tri et l'affichage des champs

Voici les commutateurs de ligne de commande courants pour top .

Commander action
-o Trie par colonne (peut être précédée de - ou + pour trier par ordre croissant ou décroissant)
-u Affiche uniquement les processus d'un utilisateur spécifié
-ré Met à jour le temps de retard de top
-O Renvoie une liste de colonnes dont le haut peut appliquer le tri

Options de tri écran en haut, présenté en utilisant Maj + F . Cet écran permet de personnaliser l' affichage supérieur et les options de tri.

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

haut , montrant les processus pour l'utilisateur rdc et triés par utilisation de la mémoire -

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

Affichage des principaux champs valides (condensés) -

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

Commande kill

le killLa commande est utilisée pour tuer un processus du shell de commande via son PID. Lors de tuer un processus, nous avons besoin de spécifier un signal à envoyer. Le signal permet au noyau de savoir comment nous voulons terminer le processus. Les signaux les plus couramment utilisés sont -

  • SIGTERMest implicite car le noyau fait savoir à un processus qu'il devrait s'arrêter dès que cela peut être fait en toute sécurité. SIGTERM donne au processus l'opportunité de se terminer gracieusement et d'effectuer des opérations de sortie en toute sécurité.

  • SIGHUPla plupart des démons redémarreront lorsqu'ils seront envoyés à SIGHUP . Ceci est souvent utilisé sur les processus lorsque des modifications ont été apportées à un fichier de configuration.

  • SIGKILLpuisque SIGTERM équivaut à demander à un processus de s'arrêter. Le noyau a besoin d'une option pour terminer un processus qui ne se conformera pas aux demandes. Lorsqu'un processus est suspendu, l' option SIGKILL est utilisée pour arrêter le processus explicitement.

Pour une liste de tous les signaux qui peuvent être envoyés avec kill, l' option -l peut être utilisée -

[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]#

Utilisation de SIGHUP pour redémarrer le système.

[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]#

pkillpermettra à l'administrateur d'envoyer un kill signal par le nom du processus.

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killallva tuer tous les processus. Soyez prudent en utilisant killall en tant que root, car cela tuera tous les processus pour tous les utilisateurs.

[root@CentOS]# killall chrome

Commande gratuite

freeest une commande assez simple souvent utilisée pour vérifier rapidement la mémoire d'un système. Il affiche la quantité totale de mémoire physique et d'échange utilisée.

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]#

belle commande

nicepermettra à un administrateur de définir la priorité de planification d'un processus en termes d'utilisation du processeur. La gentillesse est essentiellement la façon dont le noyau planifiera des tranches de temps CPU pour un processus ou une tâche. Par défaut, on suppose que le processus a un accès égal aux ressources du processeur.

Tout d'abord, utilisons top pour vérifier la gentillesse des processus en cours d'exécution.

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

Nous voulons nous concentrer sur la colonne NICE représentée par NI . La plage de gentillesse peut être comprise entre -20 et 19 positifs. -20 représente la priorité donnée la plus élevée.

nohup nice --20 ping www.google.com &

renice

renice nous permet de modifier la priorité actuelle d'un processus déjà en cours d'exécution.

renice 17 -p 30727

La commande ci-dessus réduira la priorité de notre commande de processus ping .

firewalld est le contrôleur frontal par défaut pour iptables sur CentOS. Le front-end de firewalld présente deux avantages principaux par rapport aux iptables bruts -

  • Utilise des chaînes et des règles d'abstraction de zones faciles à configurer et à implémenter.

  • Les ensembles de règles sont dynamiques, ce qui signifie que les connexions avec état sont ininterrompues lorsque les paramètres sont modifiés et / ou modifiés.

N'oubliez pas que firewalld est le wrapper pour iptables - pas un remplacement. Bien que les commandes iptables personnalisées puissent être utilisées avec firewalld , il est recommandé d'utiliser firewalld pour ne pas interrompre la fonctionnalité du pare-feu.

Tout d'abord, assurons-nous que firewalld est à la fois démarré et activé.

[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

Nous pouvons voir que firewalld est à la fois actif (pour démarrer au démarrage) et en cours d'exécution. Si inactif ou non démarré, nous pouvons utiliser -

systemctl start firewalld && systemctl enable firewalld

Maintenant que notre service firewalld est configuré, assurons-nous qu'il est opérationnel.

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

Nous pouvons voir, le service firewalld est entièrement fonctionnel.

Firewalld travaille sur le concept de zones . Une zone est appliquée aux interfaces réseau via le gestionnaire de réseau. Nous en discuterons lors de la configuration du réseau . Mais pour l'instant, par défaut, la modification de la zone par défaut changera toutes les cartes réseau laissées dans l'état par défaut de "Zone par défaut".

Jetons un coup d'œil à chaque zone prête à l'emploi avec firewalld .

Sr.No. Zone et description
1

drop

Faible niveau de confiance. Toutes les connexions et paquets entrants sont abandonnés et seules les connexions sortantes sont possibles via l'état complet

2

block

Les connexions entrantes reçoivent une réponse avec un message icmp informant l'initiateur que la demande est interdite

3

public

Tous les réseaux sont limités. Cependant, les connexions entrantes sélectionnées peuvent être explicitement autorisées

4

external

Configure firewalld pour NAT. Le réseau interne reste privé mais accessible

5

dmz

Seules certaines connexions entrantes sont autorisées. Utilisé pour les systèmes en isolation DMZ

6

work

Par défaut, faites confiance à plus d'ordinateurs sur le réseau en supposant que le système se trouve dans un environnement de travail sécurisé

sept

hone

Par défaut, davantage de services ne sont pas filtrés. En supposant qu'un système se trouve sur un réseau domestique où des services tels que NFS, SAMBA et SSDP seront utilisés

8

trusted

Toutes les machines du réseau sont approuvées. La plupart des connexions entrantes sont autorisées sans restriction.This is not meant for interfaces exposed to the Internet

Les zones les plus courantes à utiliser sont: public, drop, travail et domicile.

Certains scénarios où chaque zone commune serait utilisée sont -

  • public- C'est la zone la plus couramment utilisée par un administrateur. Il vous permettra d'appliquer les paramètres personnalisés et de respecter les spécifications RFC pour les opérations sur un réseau local.

  • drop- Un bon exemple d'utilisation de drop est lors d'une conférence de sécurité, sur le WiFi public ou sur une interface connectée directement à Internet. drop suppose que toutes les demandes non sollicitées sont malveillantes, y compris les sondes ICMP. Ainsi, toute demande hors d'état ne recevra pas de réponse. L'inconvénient de la baisse est qu'elle peut interrompre la fonctionnalité des applications dans certaines situations nécessitant une conformité RFC stricte.

  • work- Vous êtes sur un LAN d'entreprise semi-sécurisé. Où tout le trafic peut être considéré comme moyennement sûr. Cela signifie que ce n'est pas du WiFi et que nous avons peut-être IDS, IPS et sécurité physique ou 802.1x en place. Nous devons également être familiers avec les personnes utilisant le LAN.

  • home- Vous êtes sur un LAN domestique. Vous êtes personnellement responsable de chaque système et de l'utilisateur sur le LAN. Vous connaissez chaque machine sur le LAN et qu'aucune n'a été compromise. Souvent, de nouveaux services sont proposés pour le partage de médias entre des personnes de confiance et vous n'avez pas besoin de prendre plus de temps pour des raisons de sécurité.

Les zones et les interfaces réseau fonctionnent à un niveau un à plusieurs. Une seule interface réseau ne peut avoir qu'une seule zone appliquée à la fois. Alors qu'une zone peut être appliquée à plusieurs interfaces simultanément.

Voyons quelles zones sont disponibles et quelles sont les zones actuellement appliquées.

[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]#

Prêt à ajouter des règles personnalisées dans firewalld?

Voyons d'abord à quoi ressemble notre box, à un scanner de ports de l'extérieur.

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#

Autorisons les requêtes entrantes sur le port 80.

Tout d'abord, vérifiez quelle zone est appliquée par défaut.

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

Ensuite, définissez la règle autorisant le port 80 sur la zone par défaut actuelle.

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

Maintenant, vérifions notre case après avoir autorisé les connexions sur le port 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#

Il autorise désormais le trafic non sollicité à 80.

Mettons la zone par défaut à supprimer et voyons ce qui se passe avec l'analyse des ports.

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

Analysons maintenant l'hôte avec l'interface réseau dans une zone plus sécurisée.

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#

Maintenant, tout est filtré de l'extérieur.

Comme démontré ci-dessous, l'hôte ne répondra même pas aux demandes de ping ICMP lorsqu'il est en baisse .

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

Définissons à nouveau la zone par défaut sur public .

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

Voyons maintenant notre jeu de règles de filtrage actuel en public .

[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]#

Telle qu'elle est configurée, notre règle de filtrage du port 80 est uniquement dans le contexte de la configuration en cours. Cela signifie qu'une fois que le système est redémarré ou que le service firewalld est redémarré, notre règle sera rejetée.

Nous allons bientôt configurer un démon httpd , alors rendons nos changements persistants -

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

Maintenant, notre règle du port 80 dans la zone publique est persistante lors des redémarrages et des redémarrages de service.

Voici les commandes courantes de firewalld appliquées avec firewall-cmd .

Commander action
firewall-cmd --get-zones Répertorie toutes les zones qui peuvent être appliquées à une interface
firewall-cmd: état Renvoie l'état actuel du service firewalld
pare-feu-cmd --get-default-zone Obtient la zone par défaut actuelle
firewall-cmd --set-default-zone = <zone> Définit la zone par défaut dans le contexte actuel
pare-feu-cmd --get-active-zone Obtient les zones actuelles en contexte telles qu'elles sont appliquées à une interface
firewall-cmd --zone = <zone> --list-all Répertorie la configuration de la zone fournie
firewall-cmd --zone = <zone> --addport = <port / protocole de transport> Applique une règle de port au filtre de zone
--permanent Rend les modifications de la zone persistantes. L'indicateur est utilisé en ligne avec les commandes de modification

Ce sont les concepts de base de l'administration et de la configuration de firewalld .

La configuration des services de pare-feu basés sur l'hôte dans CentOS peut être une tâche complexe dans des scénarios de mise en réseau plus sophistiqués. L'utilisation et la configuration avancées de firewalld et iptables dans CentOS peuvent nécessiter un didacticiel complet. Cependant, nous avons présenté les bases qui devraient suffire pour accomplir une majorité de tâches quotidiennes.

PHP est l'un des langages Web les plus prolifiques actuellement utilisés. L'installation d'une pile LAMP sur CentOS est quelque chose que chaque administrateur système devra effectuer, probablement le plus tôt possible.

Une pile LAMP traditionnelle se compose de (L) inux (A) pache (M) ySQL (P) HP.

Il y a trois composants principaux à une pile de LAMP sur CentOS -

  • Serveur Web
  • Plateforme / langage de développement Web
  • Serveur de base de données

Note- Le terme LAMP Stack peut également inclure les technologies suivantes: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.

Pour ce tutoriel, nous nous en tiendrons à la pile LAMP traditionnelle de CentOS GNU Linux: serveur Web Apache, serveur de base de données MySQL et PHP.

Nous utiliserons en fait MariaDB. Les fichiers de configuration, bases de données et tables de MySQL sont transparents pour MariaDB. MariaDB est désormais incluse dans le référentiel CentOS standard au lieu de MySQL. Cela est dû aux limites des licences et de la conformité open-source, car Oracle a repris le développement de MySQL.

La première chose à faire est d'installer 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]#

Configurons le service httpd .

[root@CentOS]# systemctl start httpd && systemctl enable httpd

Maintenant, assurons-nous que le serveur Web est accessible via 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#

Comme vous pouvez le voir par la sonde de service nmap, le serveur Web Apache écoute et répond aux demandes sur l'hôte CentOS.

Installer le serveur de base de données MySQL

[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

Nous installons les packages de référentiel suivants pour MariaDB -

mariadb-server.x86_64

Le package principal du démon MariaDB Server.

mariadb-devel.x86_64

Les fichiers doivent être compilés à partir de la source avec la compatibilité MySQL / MariaDB.

mariadb.x86_64

Utilitaires client MariaDB pour administrer MariaDB Server à partir de la ligne de commande.

mariadb-libs.x86_64

Bibliothèques communes pour MariaDB qui pourraient être nécessaires pour d'autres applications compilées avec le support MySQL / MariaDB.

Maintenant, commençons et activons le service MariaDB.

[root@CentOS]# systemctl start mariadb 
[root@CentOS]# systemctl enable  mariadb

Note- Contrairement à Apache, nous n'activerons pas les connexions à MariaDB via notre pare-feu basé sur l'hôte (firewalld). Lors de l'utilisation d'un serveur de base de données, il est considéré comme une meilleure pratique de sécurité d'autoriser uniquement les connexions de socket locales, sauf si l'accès distant au socket est spécifiquement nécessaire.

Assurons-nous que le serveur MariaDB accepte les connexions.

[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]#

Comme nous pouvons le voir, MariaDB écoute sur le port 3306 tcp. Nous laisserons notre pare-feu basé sur l'hôte (firewalld) bloquant les connexions entrantes au port 3306.

Installer et configurer 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

Je recommanderais d'installer les packages php suivants pour une compatibilité commune -

  • 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

Ceci est notre simple fichier php situé dans la racine Web Apache de / 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]#

Changeons le groupe propriétaire de notre page en l'utilisateur système sous lequel notre démon http s'exécute.

[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---

Lorsqu'il est demandé manuellement via 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 et LAMP sont des technologies de programmation Web très populaires. L'installation et la configuration de LAMP ne manqueront pas de figurer sur votre liste de besoins en tant qu'administrateur CentOS. Les packages CentOS faciles à utiliser ont nécessité beaucoup de travail pour compiler Apache, MySQL et PHP à partir du code source.

Python est un langage interprété largement utilisé qui a apporté du professionnalisme au monde du codage d'applications scriptées sur Linux (et d'autres systèmes d'exploitation). Là où Perl était autrefois la norme de l'industrie, Python a surpassé Perl à bien des égards.

Certaines forces de Python par rapport à Perl sont -

  • Progression rapide du raffinement

  • Bibliothèques standard pour la langue

  • La lisibilité du code est pensée dans la définition du langage

  • De nombreux cadres professionnels pour tout, du support de l'interface graphique au développement Web

Python peut faire tout ce que Perl peut faire, et dans bien des cas d'une meilleure manière. Bien que Perl ait toujours sa place parmi la boîte à outils d'un administrateur Linux, apprendre Python est un excellent choix en tant que compétence.

Les plus gros inconvénients de Python sont parfois liés à ses atouts. Dans l'histoire, Python a été conçu à l'origine pour enseigner la programmation. Parfois, ses fondements fondamentaux de «facilement lisible» et de «faire les choses de la bonne manière» peuvent entraîner des complexités inutiles lors de l'écriture d'un code simple. En outre, ses bibliothèques standard ont causé des problèmes lors de la transition des versions 2.X vers 3.X.

Les scripts Python sont en fait utilisés au cœur de CentOS pour des fonctions vitales pour la fonctionnalité du système d'exploitation. Pour cette raison, il est important d'isoler notre environnement de développement Python de l'environnement Python principal de CentOS.

Pour commencer, il existe actuellement deux versions de Python: Python 2.X et Python 3.X.

Les deux étapes sont toujours en production active, bien que la version 2.X se rapproche rapidement de l'amortissement (et ce depuis quelques années). La raison des deux versions actives de Python était essentiellement de corriger les lacunes de la version 2.X. Cela nécessitait que certaines fonctionnalités de base de la version 3.X soient refaites de manière à ne pas prendre en charge certains scripts de la version 2.X.

Fondamentalement, la meilleure façon de surmonter cette transition est: Développer pour 3.X et suivre la dernière version 2.X pour les scripts hérités. Actuellement, CentOS 7.X repose sur une révision semi-actuelle de la version 2.X.

Au moment d'écrire ces lignes, les versions les plus récentes de Python sont: 3.4.6 et 2.7.13.

Ne laissez pas cela confondre ou ne tirez aucune conclusion sur Python. La configuration d'un environnement Python est vraiment assez simple. Avec les frameworks et bibliothèques Python, cette tâche est en fait très facile à accomplir.

Avant de configurer nos environnements Python, nous avons besoin d'un environnement sain. Pour commencer, assurons-nous que notre installation CentOS est entièrement mise à jour et que certains utilitaires de construction sont installés.

Step 1 - Mettez à jour CentOS.

[root@CentOS]# yum -y update

Step 2 - Installez les utilitaires de construction.

[root@CentOS]# yum -y groupinstall "development tools"

Step 3 - Installez certains packages nécessaires.

[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel

Nous devons maintenant installer Python 2.X et 3.X actuels à partir des sources.

  • Télécharger des archives compressées
  • Extraire les fichiers
  • Compiler le code source

Commençons par créer un répertoire de construction pour chaque installation de Python dans / usr / src /

[root@CentOS]# mkdir -p /usr/src/pythonSource

Maintenant, téléchargeons les archives tar source pour chacun -

[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

Nous devons maintenant extraire chacun d'eux de l'archive.

Step 1 - Installez xz-libs et extrayez les archives tar.

[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]#

Step 2 - Décompressez chaque installateur de son archive tar.

[root@CentOS]# tar -xvf ./Python-2.7.13.tar
[root@CentOS]# tar -xvf ./Python-3.6.0.tar

Step 3 - Entrez dans chaque répertoire et exécutez le script de configuration.

[root@CentOS]# ./configure --prefix=/usr/local 
root@CentOS]# make altinstall

Note - Assurez-vous d'utiliser altinstallet ne pas installer. Cela gardera CentOS et les versions de développement de Python séparés. Sinon, vous risquez de casser la fonctionnalité de CentOS.

Vous verrez maintenant que le processus de compilation commence. Prenez une tasse de café et faites une pause de 15 minutes jusqu'à la fin. Puisque nous avons installé toutes les dépendances nécessaires pour Python, le processus de compilation devrait se terminer sans erreur.

Assurons-nous que la dernière version 2.X de Python est installée.

[root@CentOS Python-2.7.13]# /usr/local/bin/python2.7 -V 
Python 2.7.13
[root@CentOS Python-2.7.13]#

Note - Vous voudrez préfixer la ligne shebang pointant vers notre environnement de développement pour 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)]

Juste comme ça, nous avons des installations Python distinctes pour les versions 2.X et 3.X. De là, nous pouvons utiliser chacun et des utilitaires tels quepip et virtualenv pour alléger davantage le fardeau de la gestion des environnements Python et de l'installation des packages.

Ruby est un excellent langage pour le développement Web et l'administration Linux. Ruby offre de nombreux avantages trouvés dans tous les langages précédents mentionnés: PHP, Python et Perl.

Pour installer Ruby, il est préférable de démarrer via rbenv qui permet aux administrateurs d'installer et de gérer facilement les environnements Ruby.

L'autre méthode pour installer Ruby est les packages CentOS standard pour Ruby. Il est conseillé d'utiliser la méthode rbenv avec tous ses avantages. Les packages CentOS seront plus faciles pour les non-avertis de Ruby.

Tout d'abord, obtenons quelques dépendances nécessaires pour l'installateur de rbenv.

  • git-core
  • zlib
  • zlib-devel
  • gcc-c++
  • patch
  • readline
  • readline-devel
  • libyaml-devel
  • libffi-devel
  • openssl-devel
  • make
  • bzzip2
  • autoconf
  • automake
  • libtool
  • bison
  • curl
  • sqlite-devel

La plupart de ces packages peuvent déjà être installés en fonction des options et des rôles choisis lors de l'installation de CentOS. Il est bon d'installer tout ce dont nous ne sommes pas sûrs car cela peut entraîner moins de maux de tête lors de l'installation de packages nécessitant des dépendances.

[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

Méthode 1: rbenv pour les environnements de développement Ruby dynamique

Maintenant, en tant qu'utilisateur qui utilisera Ruby -

[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git
[rdc@CentOS ~]$  https://github.com/rbenv/ruby-build.git

ruby-build fournira des fonctionnalités d'installation à rbenv -

Note- Nous devons passer à root ou à un utilisateur d'administration avant d'exécuter install.sh

[rdc@CentOS ruby-build]$ cd ~/ruby-build
[rdc@CentOS ruby-build]# ./install.sh

Définissons notre shell pour rbenv et assurons que nous avons installé les bonnes options.

[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>]

Certaines commandes utiles de rbenv sont -

Commandes action
local Définit ou affiche la version Ruby spécifique à l'application locale
global Définit ou affiche la version globale de Ruby
coquille Définit ou affiche la version Ruby spécifique au shell
installer Installe une version Ruby à l'aide de ruby-build
désinstaller Désinstalle une version spécifique de Ruby
répéter Rehashes rbenv shims (exécutez ceci après l'installation des exécutables)
version Affiche la version actuelle de Ruby et son origine
les versions Répertorie toutes les versions de Ruby disponibles pour rbenv
lequel Affiche le chemin complet vers un exécutable
d'où Répertorie toutes les versions de Ruby qui contiennent l'exécutable donné

Installons maintenant Ruby -

[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1

Une fois la compilation terminée -

[rdc@CentOS ~]$ ./ruby -v 
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux] 
[rdc@CentOS ~]$

Nous avons maintenant un environnement Ruby fonctionnel avec une version mise à jour et fonctionnelle de la branche Ruby 2.X.

Méthode 2: installer Ruby à partir de packages CentOS

C'est la méthode la plus simple. Cependant, il peut être limité par la version et les gemmes fournies par CentOS. Pour un travail de développement sérieux, il est fortement recommandé d'utiliser la méthode rbenv pour installer Ruby.

Installez Ruby, les packages de développement nécessaires et quelques joyaux courants.

[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

Malheureusement, nous nous retrouvons avec une version quelque peu obsolète de Ruby.

[root@CentOS rdc]# ruby -v 
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@CentOS rdc]#

Perlexiste depuis longtemps. Il a été conçu à l'origine comme un langage de rapport utilisé pour analyser les fichiers texte. Avec une popularité croissante, Perl a ajouté un support de module ou CPAN, des sockets, des threads et d'autres fonctionnalités nécessaires dans un puissant langage de script.

Le plus grand avantage de Perl par rapport à PHP, Python ou Ruby est: il fait les choses avec un minimum de tracas. Cette philosophie de Perl ne signifie pas toujours que les choses sont faites de la bonne manière. Cependant, pour les tâches d'administration sous Linux, Perl est considéré comme le choix incontournable pour un langage de script.

Certains avantages de Perl par rapport à Python ou Ruby sont:

  • Traitement de texte puissant

  • Perl rend l'écriture de scripts rapide et sale (généralement un script Perl sera plus court de plusieurs dizaines de lignes qu'un équivalent en Python ou Ruby)

  • Perl peut tout faire (presque)

Certains inconvénients de Perl sont -

  • La syntaxe peut prêter à confusion

  • Le style de codage en Perl peut être unique et ralentir la collaboration

  • Perl n'est pas vraiment orienté objet

  • En règle générale, il n'y a pas beaucoup de réflexion sur la normalisation et les meilleures pratiques lorsque Perl est utilisé.

Au moment de décider d'utiliser Perl, Python ou PHP; les questions suivantes doivent être posées -

  • Cette application aura-t-elle jamais besoin d'un contrôle de version?
  • D'autres personnes auront-elles un jour besoin de modifier le code?
  • D'autres personnes devront-elles utiliser cette application?
  • Cette application sera-t-elle jamais utilisée sur une autre machine ou architecture CPU?

Si les réponses à tout ce qui précède sont «non», Perl est un bon choix et peut accélérer les choses en termes de résultats finaux.

Ceci étant mentionné, configurons notre serveur CentOS pour utiliser la version la plus récente de Perl.

Avant d'installer Perl, nous devons comprendre le support de Perl. Officiellement, Perl n'est supporté que depuis les deux dernières versions stables. Nous voulons donc être sûrs de garder notre environnement de développement isolé de la version CentOS.

La raison de l'isolement est la suivante: si quelqu'un publie un outil en Perl à la communauté CentOS, il sera probablement modifié pour fonctionner sur Perl comme livré avec CentOS. Cependant, nous souhaitons également installer la dernière version à des fins de développement. Comme Python, CentOS fournit Perl axé sur la fiabilité et non sur la pointe.

Vérifions notre version actuelle de Perl sur CentOS 7.

[root@CentOS]# perl -v 
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

Nous utilisons actuellement Perl 5.16.3. La version la plus récente à ce jour est: perl-5.24.0

Nous voulons absolument mettre à jour notre version, pouvoir utiliser des modules Perl à jour dans notre code. Heureusement, il existe un excellent outil pour maintenir les environnements Perl et garder notre version CentOS de Perl isolée. On l'appelleperlbrew.

Installons 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

Maintenant que Perl Brew est installé, créons un environnement pour la dernière version de Perl.

Tout d'abord, nous aurons besoin de la version actuellement installée de Perl pour démarrer l'installation de perlbrew. Ainsi, récupérons quelques modules Perl nécessaires dans le référentiel CentOS.

Note - Lorsqu'ils sont disponibles, nous voulons toujours utiliser les modules CentOS Perl par rapport au CPAN avec notre installation CentOS Perl.

Step 1 - Installez le module CentOS Perl Make :: Maker.

[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch

Step 2 - Installez la dernière version de perl.

[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc
[root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1

Les options que nous avons choisies pour notre installation Perl sont -

  • n - Aucun test

  • j4 - Exécuter 4 threads en parallèle pour les routines d'installation (nous utilisons un processeur quadcore)

  • threads - Activer le support de thread pour Perl

Une fois que notre installation a été effectuée avec succès, passons à notre dernier environnement 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]#

Impression de script perl simple version perl exécutée dans le contexte de notre environnement perlbrew -

[root@CentOS]# cat ./ver.pl  
#!/usr/bin/perl
print $^V . "\n";

[root@CentOS]# perl ./ver.pl  
v5.24.1 
[root@CentOS]#

Une fois perl installé, nous pouvons charger les modules cpan avec le cpanm de perl brew -

[root@CentOS]# perl-brew install-cpanm

Maintenant , nous allons utiliser le cpanm installateur pour rendre le module LWP avec notre version actuelle de Perl 5.24.1 dans brew perl.

Step 1 - Basculez vers le contexte de notre version actuelle de Perl.

[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

Un sous-shell est lancé avec perl-5.24.1 comme perl activé. Exécutez «exit» pour le terminer.

[root@CentOS ~]#

Step 2 - Installez le module Perl de l'agent utilisateur LWP.

[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent

Step 3 - Testons maintenant notre environnement Perl avec le nouveau module 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 ~]#

Voilà! Perl Brew simplifie l'isolement des environnements Perl et peut être considéré comme une meilleure pratique au fur et à mesure que les choses se passent avec Perl.

LDAP appelé Light Weight Directory Access Protocolest un protocole utilisé pour accéder aux conteneurs de services X.500 au sein d'une entreprise connue à partir d'un annuaire. Ceux qui sont familiers avec l'administration de Windows Server peuvent penser que LDAP est de nature très similaire à Active Directory. Il s'agit même d'un concept très répandu d'imbrication de postes de travail Windows dans une entreprise OpenLDAP CentOS. Sur l'autre spectre, une station de travail CentOS Linux peut partager des ressources et participer avec les fonctionnalités de base d'un domaine Windows.

Le déploiement de LDAP sur CentOS en tant qu'agent de serveur d'annuaire, d'agent de système d'annuaire ou de DSA (ces acronymes sont tous identiques) est similaire aux anciennes installations Novell Netware utilisant la structure de l'arborescence d'annuaires avec NDS.

Bref historique de LDAP

LDAP a été essentiellement créé comme un moyen efficace d'accéder aux répertoires X.500 avec des ressources d'entreprise. X.500 et LDAP partagent les mêmes caractéristiques et sont si similaires que les clients LDAP peuvent accéder aux répertoires X.500 avec certains assistants. Alors que LDAP a également son propre serveur d'annuaire appeléslapd. La principale différence entre LDAP et DAP est que la version allégée est conçue pour fonctionner sur TCP.

Alors que DAP utilise le modèle OSI complet. Avec l'avènement d'Internet, de TCP / IP et d'Ethernet dans les réseaux d'aujourd'hui, il est rare de trouver une implantation de services d'annuaire utilisant à la fois des annuaires d'entreprise DAP et X.500 natifs en dehors de modèles informatiques hérités spécifiques.

Les principaux composants utilisés avec openldap pour CentOS Linux sont -

openldap Bibliothèques de support LDAP
serveur openldap Serveur LDAP
clients openldap Utilitaires du client LDAP
openldap-devel Bibliothèques de développement pour OpenLDAP
compay-openldap Bibliothèques partagées OpenLDAP
giflé Démon du serveur d'annuaire d'OpenLDAP
slurpd Utilisé pour la réplication LDAP sur un domaine d'entreprise

Note - Lors de la dénomination de votre entreprise, il est recommandé d'utiliser le .localTLD. L'utilisation d'un .net ou d'un .com peut entraîner des difficultés lors de la séparation d'une infrastructure de domaine en ligne et interne. Imaginez le travail supplémentaire d'une entreprise utilisant acme.com en interne pour ses opérations externes et internes. Par conséquent, il peut être judicieux de disposer de ressources Internet appelées acme.com ou acme.net . Ensuite, les ressources d'entreprise du réseau local sont représentées sous la forme acme.local . Cela impliquera de configurer les enregistrements DNS, mais paiera en simplicité, éloquence et sécurité.

Installez Open LDAP sur CentOS

Installez openldap, openldap-servers, openldap-clients et migrationstools depuis 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]#

Maintenant, commençons et activons le service slapd -

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

À ce stade, assurons que nous avons notre structure openldap dans / etc / openldap .

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

Ensuite, assurez-vous que notre service slapd est en cours d'exécution.

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]#

Ensuite, configurons notre installation Open LDAP .

Assurez-vous que notre utilisateur ldap système a été créé.

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

Générez nos informations d'identification LDAP.

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

Nous devons enregistrer la sortie de slappasswd.

Configurer Open LDAP

Step 1 - Configurez LDAP pour le domaine et ajoutez un utilisateur administratif.

Tout d'abord, nous voulons mettre en place notre environnement openLDAP. Voici un modèle à utiliser avec la commande 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

Apportez des modifications à: /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif avec la commande 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]#

Vérifions la configuration LDAP modifiée.

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]#

Comme vous pouvez le voir, nos modifications d'entreprise LDAP ont réussi.

Ensuite, nous voulons créer un certificat SSL auto-signé pour OpenLDAP. Cela sécurisera la communication entre le serveur d'entreprise et les clients.

Step 2 - Créez un certificat auto-signé pour OpenLDAP.

Nous utiliserons openssl pour créer un certificat ssl auto-signé. Allez au chapitre suivant,Create LDAP SSL Certificate with opensslpour obtenir des instructions pour sécuriser les communications avec OpenLDAP. Ensuite, lorsque les certificats SSL sont configurés, nous aurons terminé notre configuration d'entreprise OpenLDAP.

Step 3 - Configurez OpenLDAP pour utiliser des communications sécurisées avec certificat.

Créez un fichier certs.ldif dans vim avec les informations suivantes -

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

Ensuite, à nouveau, utilisez la commande ldapmodify pour fusionner les modifications dans la configuration 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]#

Enfin, testons notre configuration OpenLADP.

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

Step 4 - Configurer la base de données slapd.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

Met à jour le schéma OpenLDAP.

Ajoutez les schémas LDAP cosinus et nis.

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

Enfin, créez le schéma d'entreprise et ajoutez-le à la configuration OpenLDAP actuelle.

Voici pour un domaine appelé vmnet. local avec un administrateur LDAP appelé 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

Enfin, importez-le dans le schéma OpenLDAP actuel.

[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]#

Step 5 - Mettre en place un OpenLDAP Enterprise Users.

Ouvrez vim ou votre éditeur de texte préféré et copiez le format suivant. Ceci est configuré pour un utilisateur nommé "entacct" sur le domaine 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

Maintenant, importez les fichiers ci-dessus, tels qu'ils sont enregistrés, dans le schéma OpenLdap.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

Avant que les utilisateurs puissent accéder à LDAP Enterprise, nous devons attribuer un mot de passe comme suit -

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s spécifie le mot de passe de l'utilisateur

-x est le nom d'utilisateur auquel le mot de passe mis à jour est appliqué

-D est le * nom distinctif "pour s'authentifier par rapport au schéma LDAP.

Enfin, avant de vous connecter au compte Entreprise, vérifions notre entrée 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

La conversion d'éléments tels que / etc / passwd et / etc / groups en authentification OpenLDAP nécessite l'utilisation d'outils de migration. Ceux-ci sont inclus dans le package migrationtools . Ensuite, installé dans / usr / share / migrationtools .

[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

Step 6 - Enfin, nous devons autoriser l'accès au service slapd afin qu'il puisse répondre aux demandes.

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

Configurer l'accès client LDAP

La configuration de l'accès client LDAP nécessite les packages suivants sur le client: openldap, clients open-ldap et nss_ldap.

La configuration de l'authentification LDAP pour les systèmes clients est un peu plus simple.

Step 1 - Installer les packs dépendants -

# yum install -y openldap-clients nss-pam-ldapd

Step 2- Configurez l'authentification LDAP avec authconfig .

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 - Redémarrez le service nslcd.

systemctl restart  nslcd

Contexte TLS et SSL

TLS est le nouveau standard pour la sécurité de la couche socket, en procédant SSL. TLS offre de meilleures normes de cryptage avec d'autres fonctionnalités de sécurité et d'encapsulation de protocole faisant progresser SSL. Souvent, les termes TLS et SSL sont utilisés de manière interchangeable. Cependant, en tant qu'administrateur CentOS professionnel, il est important de noter les différences et l'historique qui les séparent.

SSL passe à la version 3.0. SSL a été développé et promu en tant que norme de l'industrie sous Netscape. Après l'achat de Netscape par AOL (un FAI populaire dans les années 90, autrement connu sous le nom d'America Online), AOL n'a jamais vraiment promu le changement nécessaire pour améliorer la sécurité de SSL.

À la version 3.1, la technologie SSL est passée aux normes des systèmes ouverts et a été remplacée par TLS . Étant donné que les droits d'auteur sur SSL appartenaient toujours à AOL, un nouveau terme a été inventé:TLS - Transport Layer Security. Il est donc important de reconnaître que TLS est en fait différent de SSL . D'autant plus que les anciennes technologies SSL ont connu des problèmes de sécurité et que certaines sont aujourd'hui considérées comme obsolètes.

Note- Ce tutoriel utilisera le terme TLS pour parler des technologies 3.1 et supérieures. Puis SSL lors des commentaires spécifiques aux technologies SSL 3.0 et inférieurs.

Gestion des versions SSL et TLS

Le tableau suivant montre comment les versions TLS et SSL seraient liées les unes aux autres. J'ai entendu quelques personnes parler de la version 3.2 de SSL . Cependant, ils ont probablement obtenu la terminologie en lisant un blog. En tant qu'administrateur professionnel, nous voulons toujours utiliser la terminologie standard. Par conséquent, tout en parlant SSL devrait être une référence aux technologies passées. Des choses simples peuvent faire passer un demandeur d'emploi CentOS à un CS Major chevronné.

TLS SSL
- 3.0
1.0 3.1
1.1 3.2
1.2 3,3

TLS remplit aujourd'hui deux fonctions principales importantes pour les utilisateurs d'Internet: Premièrement, il vérifie qui est une partie, connue sous le nom deauthentication. Deux, il offreend-to-end encryption au niveau de la couche de transport pour les protocoles de niveau supérieur qui ne disposent pas de cette fonctionnalité native (ftp, http, protocoles de messagerie, etc.).

Le premier, vérifie qui est une partie et est important pour la sécurité en tant que cryptage de bout en bout. Si un consommateur dispose d'une connexion cryptée à un site Web qui n'est pas autorisé à accepter le paiement, les données financières sont toujours en danger. Voici ce que tous les sites de phishing n'auront pas:a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA.

Il n'y a que deux méthodes pour contourner le fait de ne pas avoir de certificat correctement signé: inciter l'utilisateur à autoriser la confiance d'un navigateur Web pour un certificat auto-signé ou espérer que l'utilisateur n'est pas averti en technologie et ne saura pas l'importance d'un certificat de confiance Autorité (ou une CA).

Dans ce didacticiel, nous utiliserons ce que l'on appelle un certificat auto-signé . Cela signifie que, sans donner explicitement à ce certificat le statut de confiance dans chaque navigateur Web visitant le site Web, une erreur sera affichée décourageant les utilisateurs de visiter le site. Ensuite, cela fera sauter l'utilisateur à travers quelques actions avant d'accéder à un site avec un certificat auto-signé. N'oubliez pas que pour des raisons de sécurité, c'est une bonne chose.

Installer et configurer openssl

openssl est la norme pour les implémentations open source de TLS. openssl est utilisé sur des systèmes tels que Linux, les distributions BSD, OS X et prend même en charge Windows.

openssl est important, car il fournit la sécurité de la couche de transport et fait abstraction de la programmation détaillée de l' authentification et du chiffrement de bout en bout pour un développeur. C'est pourquoi openssl est utilisé avec presque toutes les applications open source utilisant TLS. Il est également installé par défaut sur toutes les versions modernes de Linux.

Par défaut, openssl doit être installé sur CentOS à partir d'au moins la version 5. Juste pour vous assurer, essayons d'installer openssl via YUM. Lancez simplement install, car YUM est suffisamment intelligent pour nous indiquer si un package est déjà installé. Si nous utilisons une ancienne version de CentOS pour des raisons de compatibilité, faire une installation yum -y garantira qu'openssl est mis à jour contre la vulnérabilité semi-récente heart-bleed.

Lors de l'exécution du programme d'installation, il a été constaté qu'il y avait en fait une mise à jour de 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:

Créer un certificat auto-signé pour OpenLDAP

Ceci est une méthode pour créer un auto-signé pour notre précédente installation OpenLDAP .

Pour créer un certificat OpenLDAP auto-signé.

openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365

[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem 
-keyout /etc/openldap/certs/vmnet.pem -days 365 
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#

Maintenant, nos certificats OpenLDAP doivent être placés dans / etc / openldap / certs /

[root@centos]# ls /etc/openldap/certs/*.pem 
/etc/openldap/certs/vmnetcert.pem  /etc/openldap/certs/vmnetkey.pem
[root@centos]#

Comme vous pouvez le voir, le certificat et la clé sont installés dans les répertoires / etc / openldap / certs / . Enfin, nous devons modifier les autorisations de chacun, car ils appartiennent actuellement à l'utilisateur 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]#

Créer un certificat auto-signé pour le serveur Web Apache

Dans ce tutoriel, nous supposerons qu'Apache est déjà installé. Nous avons installé Apache dans un autre didacticiel (configuration du pare-feu CentOS) et allons passer à l'installation avancée d'Apache pour un prochain didacticiel. Donc, si vous n'avez pas déjà installé Apache, veuillez suivre.

Une fois Apache HTTPd peut être installé en suivant les étapes suivantes -

Step 1 - Installez mod_ssl pour le serveur Apache httpd.

Nous devons d'abord configurer Apache avec mod_ssl. En utilisant le gestionnaire de paquets YUM, c'est assez simple -

[root@centos]# yum -y install mod_ssl

Rechargez ensuite votre démon Apache pour vous assurer qu'Apache utilise la nouvelle configuration.

[root@centos]# systemctl reload httpd

À ce stade, Apache est configuré pour prendre en charge les connexions TLS sur l'hôte local.

Step 2 - Créez le certificat SSL auto-signé.

Commençons par configurer notre répertoire de clés TLS privé.

[root@centos]# mkdir /etc/ssl/private 
[root@centos]# chmod 700 /etc/ssl/private/

Note- Assurez-vous que seul le root a un accès en lecture / écriture à ce répertoire. Avec l'accès mondial en lecture / écriture, votre clé privée peut être utilisée pour décrypter le trafic reniflé.

Génération du certificat et des fichiers clés.

[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]#

Note - Vous pouvez utiliser l'adresse IP publique du serveur si vous n'avez pas de nom de domaine enregistré.

Jetons un œil à notre certificat -

[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:

Voici une explication pour chaque option que nous avons utilisée avec la commande openssl -

Commander action
req -X509 Utilisez la norme PKI de gestion X.509 CSR pour la gestion des clés.
-nœuds Ne sécurisez pas notre certificat avec une phrase secrète. Apache doit pouvoir utiliser le certificat sans interruption d'une phrase secrète.
-jours 2555 Indique la validité du certificat à 7 ans ou 2555 jours. La période de temps peut être ajustée au besoin.
-nouveau clé rsa: 2048 Spécifié pour générer à la fois la clé et le certificat en utilisant RSA à 2048 bits de longueur.

Ensuite, nous voulons créer un groupe Diffie-Heliman pour négocier le PFS avec les clients.

[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cela prendra de 5 à 15 minutes.

Perfect Forward Secrecy- Utilisé pour sécuriser les données de session au cas où la clé privée a été compromise. Cela générera une clé utilisée entre le client et le serveur qui est unique pour chaque session.

Maintenant, ajoutez la configuration Perfect Forward Secrecy à notre certificat.

[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt

Configurer Apache pour utiliser les fichiers de clé et de certificat

Nous apporterons des modifications à /etc/httpd/conf.d/ssl.conf -

Nous apporterons les modifications suivantes à ssl.conf . Cependant, avant de faire cela, nous devons sauvegarder le fichier d'origine. Lorsque vous apportez des modifications à un serveur de production dans un éditeur de texte avancé tel que vi ou emcas , il est recommandé de toujours sauvegarder les fichiers de configuration avant d'effectuer des modifications.

[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/

Continuons maintenant nos modifications après avoir copié une copie de travail connue de ssl.conf à la racine de notre dossier personnel.

  • Locate
  • Modifiez à la fois DocumentRoot et ServerName comme suit.
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443

DocumentRootc'est le chemin vers votre répertoire apache par défaut. Dans ce dossier devrait être une page par défaut qui affichera une requête HTTP demandant la page par défaut de votre serveur ou site Web.

ServerNameest le nom du serveur qui peut être une adresse IP ou le nom d'hôte du serveur. Pour TLS, il est recommandé de créer un certificat avec un nom d'hôte. À partir de notre didacticiel OpenLdap, nous avons créé un nom d'hôte centos sur le domaine d'entreprise local: vmnet.local

Nous voulons maintenant commenter les lignes suivantes.

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

Ensuite, indiquez à Apache où trouver notre certificat et notre paire de clés privée / publique.

Spécifiez le chemin d'accès à notre fichier de certificat auto-signé

#   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

Enfin, nous devons autoriser les connexions entrantes vers https via le port 443.

Dans ce chapitre, nous allons en apprendre un peu plus sur le contexte de la création d'Apache HTTP Server, puis installer la version stable la plus récente sur CentOS Linux 7.

Bref historique sur Apache WebServer

Apache est un serveur Web qui existe depuis longtemps. En fait, presque aussi longtemps que l'existence de http lui-même!

Apache a commencé comme un projet plutôt petit au National Center for Supercomputing Applications également connu sous le nom de NCSA. Au milieu des années 90, "httpd", comme on l'appelait, était de loin la plate-forme de serveur Web la plus populaire sur Internet, avec environ 90% ou plus de part de marché.

A cette époque, c'était un projet simple. Le personnel informatique qualifié connu sous le nom de webmaster était responsable de: la maintenance des plates-formes de serveur Web et des logiciels de serveur Web, ainsi que du développement du site front-end et back-end. Au cœur de httpd se trouvait sa capacité à utiliser des modules personnalisés appelés plugins ou extensions. Un webmaster était également suffisamment qualifié pour écrire des correctifs pour le logiciel serveur principal.

À la fin des années 90, le développeur principal et chef de projet de httpd a quitté NCSA pour faire autre chose. Cela a laissé le démon Web le plus populaire dans un état de stagnation.

Étant donné que l'utilisation de httpd était si répandue, un groupe de webmasters httpd chevronnés a appelé à un sommet sur l'avenir de httpd. Il a été décidé de coordonner et d'appliquer les meilleures extensions et correctifs dans une version stable actuelle. Ensuite, le grand-père actuel des serveurs http est né et baptisé Apache HTTP Server.

Little Known Historical Fact- Apache n'a pas été nommé d'après une tribu de guerriers amérindiens. Il a en fait été inventé et nommé avec une torsion: étant fait de nombreux correctifs (ou correctifs) de nombreux informaticiens talentueux: unpatchy ou Apache.

Installer la version stable actuelle sur CentOS Linux 7

Step 1 - Installez httpd via yum.

yum -y install httpd

À ce stade, Apache HTTP Server s'installera via yum.

Step 2 - Modifiez le fichier httpd.conf spécifique à vos besoins httpd.

Avec une installation Apache par défaut, le fichier de configuration d'Apache est nommé httpd.conf et se trouve dans / etc / httpd / . Alors, ouvrons-le dans vim .

Les premières lignes de httpd.conf ouvertes dans 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.

Nous apporterons les modifications suivantes pour permettre à notre installation CentOS de répondre aux requêtes http à partir du port 80.

Hôte et port d'écoute

# 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

De là, nous changeons Apache pour écouter sur un certain port ou une certaine adresse IP. Par exemple, si nous voulons exécuter des services httpd sur un autre port tel que 8080. Ou si nous avons notre serveur Web configuré avec plusieurs interfaces avec des adresses IP distinctes.

Ecoutez

Empêche Apache de se connecter à chaque démon d'écoute sur chaque adresse IP. Ceci est utile pour arrêter de spécifier uniquement le trafic IPv6 ou IPv4. Ou même la liaison à toutes les interfaces réseau sur un hôte multi-hébergé.

#
# 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

La "racine du document" est le répertoire par défaut dans lequel Apache recherchera un fichier d'index à servir pour les requêtes lors de la visite de votre serveur: http://www.yoursite.com/ récupérera et servira le fichier d'index à partir de la racine de votre document.

#
# 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"

Step 3 - Démarrez et activez le service httpd.

[root@centos rdc]# systemctl start httpd && systemctl reload httpd 
[root@centos rdc]#

Step 4 - Configurer le pare-feu pour autoriser l'accès aux requêtes du port 80.

[root@centos]# firewall-cmd --add-service=http --permanent

Comme évoqué brièvement lors de la configuration de CentOS pour une utilisation avec Maria DB, il n'y a pas de package MySQL natif dans le référentiel CentOS 7 yum . Pour en tenir compte, nous devrons ajouter un référentiel hébergé par MySQL.

MariaDB vs MySQL sur CentOS Linux

Une chose à noter est que MySQL nécessitera un ensemble de dépendances de base différent de MariaDB. L'utilisation de MySQL rompra également le concept et la philosophie de CentOS: des packages de production conçus pour une fiabilité maximale.

Donc, au moment de décider d'utiliser Maria ou MySQL, il faut considérer deux options: Mon schéma de base de données actuel fonctionnera-t-il avec Maria? Quel avantage l'installation de MySQL sur Maria me donne-t-elle?

Les composants Maria sont 100% transparents à la structure MySQL, avec une efficacité accrue avec une meilleure licence. À moins qu'une raison impérieuse ne se présente, il est conseillé de configurer CentOS pour utiliser MariaDB.

Les principales raisons de favoriser Maria sur CentOS sont -

  • La plupart des gens utiliseront MariaDB. Lorsque vous rencontrez des problèmes, vous obtiendrez plus d'aide avec Maria.

  • CentOS est conçu pour fonctionner avec Maria. Par conséquent, Maria offrira une meilleure stabilité.

  • Maria est officiellement prise en charge pour CentOS.

Téléchargez et ajoutez le référentiel MySQL

Nous voudrons télécharger et installer le référentiel MySQL à partir de -

http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

Step 1 - Téléchargez le référentiel.

Le référentiel est commodément emballé dans un package rpm pour une installation facile. Il peut être téléchargé avec 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

Step 2 - Installez MySQL à partir de YUM.

Nous pouvons maintenant utiliser le gestionnaire de paquets yum pour installer MySQL -

[root@centos]# yum -y install mysql-server

Step 3 - Démarrez et activez le service de démon MySQL.

[root@centos]# systemctl start mysql 
[root@centos]# systemctl enable  mysql

Step 4 - Assurez-vous que notre service MySQL est opérationnel.

[root@centos]# netstat -antup | grep 3306 
tcp6       0       0 :::3306       :::*       LISTEN       6572/mysqld
[root@centos]#

Remarque - Nous n'autoriserons aucune règle de pare-feu à travers. Il est courant d'avoir MySQL configuré pour utiliserUnix Domain Sockets. Cela garantit que seul le serveur Web de la pile LAMP, localement, peut accéder à la base de données MySQL, en prenant une dimension complète dans le vecteur d'attaque au niveau du logiciel de base de données.

Afin d'envoyer un e-mail à partir de notre serveur CentOS 7, nous aurons besoin de la configuration pour configurer un agent de transfert de courrier (MTA) moderne. Mail Transfer Agent est le démon responsable de l'envoi du courrier sortant pour les utilisateurs du système ou les domaines Internet d'entreprise via SMTP.

Il est à noter que ce tutoriel enseigne uniquement le processus de configuration du démon pour une utilisation locale. Nous n'entrons pas dans les détails sur la configuration avancée pour la mise en place d'un MTA pour les opérations commerciales. Il s'agit d'une combinaison de nombreuses compétences, y compris, mais sans s'y limiter: DNS, obtention d'une adresse IP routable statique qui n'est pas sur liste noire et configuration des paramètres de sécurité et de service avancés. En bref, ce didacticiel est destiné à vous familiariser avec la configuration de base. N'utilisez pas ce didacticiel pour la configuration MTA d'un hôte connecté à Internet.

Avec son accent combiné sur la sécurité et la facilité d'administration, nous avons choisi Postfixen tant que MTA pour ce didacticiel. Le MTA par défaut installé dans les anciennes versions de CentOS est Sendmail .Sendmailest un excellent MTA. Cependant, de l'humble opinion de l'auteur, Postfix atteint un point idéal en adressant les notes suivantes pour un MTA. Avec la version la plus récente de CentOS, Postfix a remplacé Sendmail comme MTA par défaut.

Postfix est un MTA largement utilisé et bien documenté. Il est activement maintenu et développé. Il nécessite une configuration minimale à l'esprit (il ne s'agit que d'un courrier électronique) et est efficace avec les ressources système (encore une fois, il ne s'agit que d'un courrier électronique).

Step 1 - Installez Postfix depuis YUM Package Manager.

[root@centos]# yum -y install postfix

Step 2 - Configurer le fichier de configuration de Postfix.

Le fichier de configuration de Postfix se trouve dans: /etc/postfix/main.cf

Dans une configuration Postfix simple, les éléments suivants doivent être configurés pour un hôte spécifique: nom d'hôte, domaine, origine, inet_interfaces et destination.

Configure the hostname- Le nom d'hôte est un nom de domaine complet de l'hôte Postfix. Dans le chapitre OpenLDAP, nous avons nommé la boîte CentOS: centos sur le domaine vmnet.local . Tenons-nous-en à cela pour ce chapitre.

# 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

Configure the domain- Comme indiqué ci-dessus, le domaine que nous utiliserons dans ce didacticiel est 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

Configure the origin - Pour une configuration de serveur et de domaine unique, il suffit de décommenter les sections suivantes et de laisser les variables Postfix par défaut.

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# [email protected].
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part. 
#
myorigin = $myhostname myorigin = $mydomain

Configure the network interfaces- Nous laisserons Postfix à l'écoute sur notre interface réseau unique et tous les protocoles et adresses IP associés à cette interface. Cela se fait en laissant simplement les paramètres par défaut activés pour 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

Step 3 - Configurer la prise en charge SASL pour Postfix.

Sans la prise en charge de l'authentification SASL, Postfix autorisera l'envoi d'e-mails uniquement à partir d'utilisateurs locaux. Ou cela donnera une erreur de refus de relais lorsque les utilisateurs envoient des e-mails à partir du domaine local.

Note - SASL ou Simple Application Security Layer Frameworkest un cadre conçu pour l'authentification prenant en charge différentes techniques parmi différents protocoles de la couche application. Au lieu de laisser les mécanismes d'authentification au protocole de la couche application, les développeurs (et les consommateurs) SASL exploitent les protocoles d'authentification actuels pour des protocoles de niveau supérieur qui peuvent ne pas avoir la commodité ou une authentification plus sécurisée (en parlant d'accès aux services sécurisés) intégrée.

Installez le package «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

Configurer /etc/postfix/main.cf pour SASL Auth

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

Mes options SASL dans 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

Step 4 - Configurez FirewallD pour autoriser les services SMTP entrants.

[root@centos]# firewall-cmd --permanent --add-service=smtp 
success

[root@centos]# firewall-cmd --reload 
success

[root@centos]#

Maintenant, vérifions pour nous assurer que notre hôte CentOS autorise et répond aux demandes sur le port 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)

Comme vous pouvez le voir, SMTP écoute et le démon répond aux demandes de notre LAN interne.

Installez Dovecot IMAP et POP3 Server

Dovecot est un serveur IMAP et POP3 sécurisé conçu pour gérer les besoins de courrier entrant d'une organisation plus petite à plus grande. En raison de son utilisation prolifique avec CentOS, nous utiliserons Dovecot comme exemple d'installation et de configuration d'un serveur de messagerie entrant pour CentOS et MTA SASL Provider.

Comme indiqué précédemment, nous ne configurerons pas les enregistrements MX pour DNS ni ne créerons de règles sécurisées permettant à nos services de gérer le courrier d'un domaine. Par conséquent, la simple configuration de ces services sur un hôte faisant face à Internet peut laisser une marge de manœuvre pour des failles de sécurité sans enregistrements SPF.

Step 1 - Installez Dovecot.

[root@centos]# yum -y install dovecot

Step 2 - Configurer le pigeonnier.

Le fichier de configuration principal de dovecot se trouve dans: /etc/dovecot.conf . Nous allons d'abord sauvegarder le fichier de configuration principal. Il est recommandé de toujours sauvegarder les fichiers de configuration avant d'effectuer des modifications. De cette façon, les sauts de ligne id (par exemple) sont détruits par un éditeur de texte et des années de modifications sont perdues. La restauration est simple comme la copie de la sauvegarde actuelle en production.

Activer les protocoles et le service démon pour dovecot

# Protocols we want to be serving. 
protocols = imap imaps pop3 pop3s

Maintenant, nous devons activer le démon dovecot pour écouter au démarrage -

[root@localhost]# systemctl start  dovecot 
[root@localhost]# systemctl enable dovecot

Assurons-nous que Dovecot écoute localement sur les ports spécifiés pour: imap, pop3, imap secure et 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]#

Comme on le voit, dovecot écoute sur les ports spécifiés pour IPv4 et IPv4.

POP3 110
POP3 995
IMAP 143
IMAP 993

Maintenant, nous devons établir des règles de pare-feu.

[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]#

Notre sever de courrier entrant accepte les demandes de POP3 , POP3s , IMAP et IMAP aux hôtes sur le réseau local.

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

Avant de nous lancer dans l'installation de FTP sur CentOS, nous devons en apprendre un peu plus sur son utilisation et sa sécurité. FTPest un protocole vraiment efficace et bien affiné pour le transfert de fichiers entre les systèmes informatiques. FTP est utilisé et affiné depuis quelques décennies maintenant. Pour transférer des fichiers efficacement sur un réseau avec latence ou pour une vitesse pure, FTP est un excellent choix. Plus que SAMBA ou SMB.

Cependant, FTP présente certains problèmes de sécurité. En fait, de sérieux problèmes de sécurité. FTP utilise une méthode d'authentification en texte brut très faible. C'est pour cette raison que les sessions authentifiées doivent s'appuyer sur sFTP ou FTPS, où TLS est utilisé pour le cryptage de bout en bout des sessions de connexion et de transfert.

Avec les mises en garde ci-dessus, l'ancien FTP est toujours utilisé dans l'environnement professionnel. L'utilisation principale est, les référentiels de fichiers FTP anonymes. Il s'agit d'une situation où aucune authentification n'est garantie pour télécharger ou télécharger des fichiers. Quelques exemples d'utilisation anonyme de FTP sont -

  • Les grands éditeurs de logiciels utilisent encore des référentiels ftp anonymes permettant aux internautes de télécharger des partagiciels et des correctifs.

  • Permettre aux internautes de télécharger et de télécharger des documents publics.

  • Certaines applications enverront automatiquement des journaux cryptés et archivés ou des fichiers de configuration à un référentiel via FTP.

Par conséquent, en tant qu'administrateur CentOS, être capable d'installer et de configurer FTP est toujours une compétence conçue.

Nous utiliserons un démon FTP appelé vsFTP, ou Démon FTP très sécurisé. vsFTP est utilisé en développement depuis un certain temps. Il a la réputation d'être sécurisé, facile à installer et à configurer et fiable.

Step 1 - Installez vsFTPd avec le gestionnaire de packages YUM.

[root@centos]# yum -y install vsftpd.x86_64

Step 2 - Configurez vsFTP pour démarrer au démarrage avec 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.

Step 3 - Configurez FirewallD pour autoriser le contrôle FTP et les sessions de transfert.

[root@centos]# firewall-cmd --add-service=ftp --permanent 
success 
[root@centos]#

Assurez-vous que notre démon FTP est en cours d'exécution.

[root@centos]# netstat -antup | grep vsftp 
tcp6       0       0 :::21       :::*       LISTEN       13906/vsftpd         
[root@centos]#

Step 4 - Configurez vsFTPD pour l'accès anonyme.

Créer un répertoire FTP racine

[root@centos]# mkdir /ftp

Changer le propriétaire et le groupe de racine FTP en 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]#

Dans ce cas, nous avons donné aux utilisateurs un accès en lecture / écriture à l'ensemble de l'arborescence FTP racine.

Configurer /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.

Nous voudrons changer les directives suivantes dans le fichier vsftp.conf .

  • Activez le téléchargement anonyme en décommentant anon_mkdir_write_enable = YES

  • chown a téléchargé les fichiers appartenant à l' utilisateur ftp du système

    chown_uploads = OUI

    chown_username = ftp

  • Remplacez l'utilisateur système utilisé par vsftp par l'utilisateur ftp: nopriv_user = ftp

  • Définissez la bannière personnalisée que l'utilisateur doit lire avant de se connecter.

    ftpd_banner = Bienvenue dans notre dépôt FTP anonyme. Toutes les connexions sont surveillées et enregistrées.

  • Définissons uniquement les connexions IPv4 -

    écoute = OUI

    listen_ipv6 = NON

Maintenant, nous devons redémarrer ou HUP le service vsftp pour appliquer nos modifications.

[root@centos]# systemctl restart vsftpd

Connectez-vous à notre hôte FTP et assurez-vous que notre démon FTP répond.

[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>

Lorsque nous parlons de la gestion à distance dans CentOS en tant qu'administrateur, nous explorerons deux méthodes -

  • Gestion de la console
  • Gestion GUI

Gestion de la console à distance

La gestion de la console à distance consiste à effectuer des tâches d'administration à partir de la ligne de commande via un service tel que ssh. Pour utiliser efficacement CentOS Linux, en tant qu'administrateur, vous devrez maîtriser la ligne de commande. Linux en son cœur a été conçu pour être utilisé depuis la console. Même aujourd'hui, certains administrateurs système préfèrent la puissance de la commande et économisent de l'argent sur le matériel en exécutant des boîtiers Linux simples sans terminal physique et sans interface graphique installée.

Gestion de l'interface graphique à distance

La gestion de l'interface graphique à distance est généralement réalisée de deux manières: soit une X-Session distante, soit un protocole de couche d'application GUI comme VNC. Chacun a ses points forts et ses inconvénients. Cependant, pour la plupart, VNC est le meilleur choix pour l'administration. Il permet un contrôle graphique à partir d'autres systèmes d'exploitation tels que Windows ou OS X qui ne prennent pas en charge nativement le protocole X Windows.

L'utilisation de sessions X distantes est native à la fois des Window-Managers et des DesktopManagers de X-Window fonctionnant sous X. Cependant, toute l'architecture X Session est principalement utilisée avec Linux. Tous les administrateurs système ne disposeront pas d'un ordinateur portable Linux pour établir une session X distante. Par conséquent, il est plus courant d'utiliser une version adaptée de VNC Server.

Les plus gros inconvénients de VNC sont: VNC ne prend pas en charge nativement un environnement multi-utilisateur tel que les X-Sessions distantes. Par conséquent, pour l'accès GUI aux utilisateurs finaux, XSessions distantes serait le meilleur choix. Cependant, nous nous intéressons principalement à l'administration d'un serveur CentOS à distance.

Nous discuterons de la configuration de VNC pour plusieurs administrateurs par rapport à quelques centaines d'utilisateurs finaux avec des sessions X distantes.

Jeter les bases de la sécurité avec SSH pour l'accès à la console distante

ssh ou Secure Shellest désormais la norme pour administrer à distance n'importe quel serveur Linux. Contrairement à telnet, SSH utilise TLS pour l'authenticité et le cryptage de bout en bout des communications. Lorsqu'il est correctement configuré, un administrateur peut être sûr que son mot de passe et le serveur sont approuvés à distance.

Avant de configurer SSH, parlons un peu de la sécurité de base et de l'accès le moins courant. Lorsque SSH s'exécute sur son port par défaut 22; tôt ou tard, vous allez subir des attaques par dictionnaire par force brute contre des noms d'utilisateur et des mots de passe courants. Cela vient juste avec le territoire. Peu importe le nombre d'hôtes que vous ajoutez à vos fichiers de refus, ils viendront simplement de différentes adresses IP chaque jour.

Avec quelques règles communes, vous pouvez simplement prendre des mesures proactives et laisser les méchants perdre leur temps. Voici quelques règles de sécurité à suivre en utilisant SSH pour l'administration à distance sur un serveur de production -

  • N'utilisez jamais un nom d'utilisateur ou un mot de passe commun. Les noms d'utilisateur sur le système ne doivent pas être ceux par défaut du système ou associés à l'adresse e-mail de l'entreprise comme:[email protected]

  • L'accès root ou l'accès administratif ne doit pas être autorisé via SSH. Utilisez un nom d'utilisateur et un su uniques pour root ou un compte d'administration une fois authentifié via SSH.

  • La politique de mot de passe est un must: Mots de passe utilisateur SSH complexes comme: "This & IS & a & GUD & P @ ssW0rd & 24 & me". Changez les mots de passe tous les quelques mois pour éliminer la vulnérabilité aux attaques incrémentielles par force brute.

  • Désactivez les comptes abandonnés ou inutilisés pendant de longues périodes. Si un responsable du recrutement a un message vocal indiquant qu'il ne fera pas d'entretiens pendant un mois; Cela peut conduire à des personnes connaissant bien la technologie avec beaucoup de temps libre, par exemple.

  • Surveillez vos journaux quotidiennement. En tant qu'administrateur système, consacrez au moins 30 à 40 minutes chaque matin à l'examen des journaux système et de sécurité. Si on vous le demande, faites savoir à tout le monde que vous n'avez pas le temps de ne pas être proactif. Cette pratique aidera à isoler les signes avant-coureurs avant qu'un problème ne se présente aux utilisateurs finaux et aux bénéfices de l'entreprise.

Note On Linux Security- Toute personne intéressée par l'administration Linux devrait suivre activement les nouvelles et la technologie actuelles en matière de cybersécurité. Alors que nous entendons principalement parler d'autres systèmes d'exploitation compromis, une machine Linux non sécurisée est un trésor recherché par les cybercriminels. Avec la puissance de Linux sur une connexion Internet haut débit, un cybercriminel expérimenté peut utiliser Linux pour tirer parti des attaques sur d'autres systèmes d'exploitation.

Installer et configurer SSH pour l'accès à distance

Step 1 - Installez le serveur SSH et tous les packages dépendants.

[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

Step 2 - Faites une utilisation régulière sécurisée à ajouter pour l'accès au shell.

[root@localhost ~]# useradd choozer 
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G 
wheel -a choozer

Note- Nous avons ajouté le nouvel utilisateur au groupe de roues , ce qui permet de se connecter en root une fois que l'accès SSH a été authentifié. Nous avons également utilisé un nom d'utilisateur introuvable dans les listes de mots courants. De cette façon, notre compte ne sera pas verrouillé lorsque SSH est attaqué.

Le fichier contenant les paramètres de configuration du serveur sshd est / etc / ssh / sshd_config .

Les parties que nous voulons modifier initialement sont -

LoginGraceTime 60m
PermitRootLogin no

Step 3- Rechargez le démon SSH sshd .

[root@localhost]# systemctl reload sshd

Il est bon de définir la période de grâce de déconnexion à 60 minutes. Certaines tâches d'administration complexes peuvent dépasser la valeur par défaut de 2 minutes. Il n'y a vraiment rien de plus frustrant que d'avoir un délai d'expiration de session SSH lors de la configuration ou de la recherche de modifications.

Step 4 - Essayons de nous connecter en utilisant les informations d'identification root.

bash-3.2# ssh centos.vmnet.local 
[email protected]'s password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Step 5- Nous ne pouvons plus nous connecter à distance via ssh avec les informations d'identification root . Alors connectons-nous à notre compte utilisateur non privilégié et su dans le compte root .

bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:

[root@localhost choozer]#

Step 6- Enfin, assurons-nous que le service SSHD se charge au démarrage et que firewalld autorise les connexions SSH extérieures.

[root@localhost]# systemctl enable sshd

[root@localhost]# firewall-cmd --permanent --add-service=ssh 
success

[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#

SSH est maintenant configuré et prêt pour l'administration à distance. En fonction de la frontière de votre entreprise, il se peut que le périphérique de bordure de filtrage de paquets doive être configuré pour permettre l'administration à distance SSH en dehors du réseau local de l'entreprise.

Configurer VNC pour l'administration CentOS à distance

Il existe plusieurs façons d'activer l'administration CentOS à distance via VNC sur CentOS 6 - 7. La manière la plus simple, mais la plus limitative, consiste simplement à utiliser un package appelé vino .Vinoest une application Virtual Network Desktop Connection pour Linux conçue autour de la plate-forme Gnome Desktop. Par conséquent, il est supposé que l'installation a été terminée avec Gnome Desktop. Si le bureau Gnome n'a pas été installé, veuillez le faire avant de continuer. Vino sera installé avec une installation GUI Gnome par défaut.

Pour configurer le partage d'écran avec Vino sous Gnome, nous voulons aller dans les Préférences Système CentOS pour le partage d'écran.

Applications->System Tools->Settings->Sharing

Remarques sur la configuration du partage de bureau VNC -

  • Disable New Connections must ask for access- Cette option nécessitera un accès physique pour valider chaque connexion. Cette option empêchera l'administration à distance sauf si quelqu'un se trouve sur le bureau physique.

  • Enable Require a password- Ceci est distinct du mot de passe utilisateur. Il contrôlera l'accès au bureau virtuel et exigera toujours le mot de passe de l'utilisateur pour accéder à un bureau verrouillé (c'est bon pour la sécurité).

  • Forward UP&P Ports: If available leave disabled- Le transfert des ports UP&P enverra des demandes Universal Plug and Play pour un périphérique de couche 3 afin d'autoriser automatiquement les connexions VNC à l'hôte. Nous ne voulons pas de cela.

Assurez-vous que vino écoute sur le port 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]#

Configurons maintenant notre pare-feu pour autoriser les connexions VNC entrantes.

[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp 
success

[root@localhost]# firewall-cmd --reload 
success

[root@localhost rdc]#

Enfin, comme vous pouvez le voir, nous sommes en mesure de connecter notre CentOS Box et de l'administrer avec un client VNC sous Windows ou OS X.

Il est tout aussi important d'obéir aux mêmes règles pour VNC que pour SSH. Tout comme SSH, VNC est continuellement analysé sur les plages IP et testé pour les mots de passe faibles. Il convient également de noter que laisser la connexion CentOS par défaut activée avec un délai d'expiration de la console aide à la sécurité VNC à distance. Comme un attaquant aura besoin du VNC et du mot de passe utilisateur, assurez-vous que votre mot de passe de partage d'écran est différent et aussi difficile à deviner que le mot de passe utilisateur.

Après avoir entré le mot de passe de partage d'écran VNC, nous devons également entrer le mot de passe utilisateur pour accéder à un bureau verrouillé.

Security Note- Par défaut, VNC n'est pas un protocole crypté. Par conséquent, la connexion VNC doit être tunnelée via SSH pour le chiffrement.

Configurer le tunnel SSH via VNC

La configuration d'un tunnel SSH fournira une couche de cryptage SSH pour tunneler la connexion VNC. Une autre fonctionnalité intéressante est qu'elle utilise la compression SSH pour ajouter une autre couche de compression aux mises à jour de l'écran VNC GUI. Plus sûr et plus rapide est toujours une bonne chose pour l'administration des serveurs CentOS!

Donc, à partir de votre client qui lancera la connexion VNC, configurons un tunnel SSH distant. Dans cette démonstration, nous utilisons OS X. Nous devons d'abord sudo -s pour rooter .

bash-3.2# sudo -s 
password:

Entrez le mot de passe de l'utilisateur et nous devrions maintenant avoir un shell root avec une invite # -

bash-3.2#

Maintenant, créons notre tunnel SSH .

ssh -f [email protected] -L 2200:192.168.1.143:5900 -N

Décomposons cette commande -

  • ssh - Exécute l'utilitaire ssh local

  • -f - ssh devrait s'exécuter en arrière-plan après l'exécution complète de la tâche

  • [email protected] - Utilisateur ssh distant sur le serveur CentOS hébergeant les services VNC

  • -L 2200:192.168.1.143:5900 - Créez notre tunnel [Port local]: [hôte distant]: [port distant du service VNC]

  • -N indique à ssh que nous ne souhaitons pas exécuter de commande sur le système distant

bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:

Après avoir entré avec succès le mot de passe de l'utilisateur ssh distant, notre tunnel ssh est créé. Maintenant, pour la partie cool! Pour nous connecter, nous pointons notre client VNC sur l'hôte local sur le port de notre tunnel, dans ce cas le port 2200. Voici la configuration sur le client VNC de Mac Laptop -

Et enfin, notre connexion de bureau VNC à distance!

La chose intéressante à propos du tunnel SSH est qu'il peut être utilisé pour presque tous les protocoles. Les tunnels SSH sont couramment utilisés pour contourner le filtrage des ports de sortie et d'entrée par un FAI, ainsi que pour tromper l'IDS / IPS de la couche d'application tout en évitant la surveillance d'autres couches de session.

  • Votre FAI peut filtrer le port 5900 pour les comptes non professionnels mais autoriser SSH sur le port 22 (ou on peut exécuter SSH sur n'importe quel port si le port 22 est filtré).

  • Les IPS et IDS au niveau de l'application examinent la charge utile. Par exemple, un débordement de tampon courant ou une injection SQL. Le chiffrement SSH de bout en bout cryptera les données de la couche application.

SSH Tunneling est un excellent outil dans la boîte à outils d'un administrateur Linux pour faire avancer les choses. Cependant, en tant qu'administrateur, nous souhaitons explorer le verrouillage de la disponibilité des utilisateurs moins privilégiés ayant accès au tunnel SSH.

Administration Security Note- Restreindre le tunnel SSH est quelque chose qui nécessite une réflexion de la part d'un administrateur. Évaluer pourquoi les utilisateurs ont besoin du tunnel SSH en premier lieu; quels utilisateurs ont besoin de tunnel; ainsi que la probabilité de risque pratique et l'impact dans le pire des cas.

Il s'agit d'un sujet avancé qui s'étend en dehors du domaine d'une introduction de niveau intermédiaire. La recherche sur ce sujet est conseillée pour ceux qui souhaitent atteindre les échelons supérieurs de l'administration Linux CentOS.

Utiliser SSH Tunnel pour Remote X-Windows

La conception de X-Windows sous Linux est vraiment soignée par rapport à celle de Windows. Si nous voulons contrôler une machine Linux distante depuis une autre machine Linux, nous pouvons profiter des mécanismes intégrés à X.

X-Windows (souvent appelé simplement "X"), fournit le mécanisme pour afficher les fenêtres d'application provenant d'une machine Linux vers la partie d'affichage de X sur une autre machine Linux. Ainsi, via SSH, nous pouvons demander qu'une application X-Windows soit transmise à l'écran d'une autre machine Linux à travers le monde!

Pour exécuter une application X à distance via un tunnel ssh, il suffit d'exécuter une seule commande -

[root@localhost]# ssh -X [email protected]

The syntax is - ssh -X [utilisateur] @ [hôte], et l'hôte doit exécuter ssh avec un utilisateur valide.

Voici une capture d'écran de GIMP s'exécutant sur une station de travail Ubuntu via un tunnel XWindows ssh distant.

Il est assez simple d'exécuter des applications à distance depuis un autre serveur ou poste de travail Linux. Il est également possible de démarrer une X-Session entière et d'avoir tout l'environnement de bureau à distance grâce à quelques méthodes.

  • XDMCP

  • Progiciels sans tête tels que NX

  • Configurer d'autres écrans et bureaux dans X et des gestionnaires de bureau tels que Gnome ou KDE

Cette méthode est la plus couramment utilisée pour les serveurs sans tête sans affichage physique et dépasse vraiment la portée d'une introduction de niveau intermédiaire. Cependant, il est bon de connaître les options disponibles.

Il existe plusieurs outils tiers qui peuvent ajouter des fonctionnalités améliorées pour la surveillance du trafic CentOS. Dans ce tutoriel, nous nous concentrerons sur ceux qui sont packagés dans les principaux référentiels de distribution CentOS et le référentiel Fedora EPEL.

Il y aura toujours des situations où un administrateur (pour une raison ou une autre) se retrouvera avec uniquement des outils dans les principaux référentiels CentOS. La plupart des utilitaires décrits sont conçus pour être utilisés par un administrateur avec le shell d'accès physique. Lorsque la surveillance du trafic avec une interface graphique Web accessible, l'utilisation d'utilitaires tiers tels que ntop-ng ou Nagios est le meilleur choix (plutôt que de recréer de telles installations à partir de zéro).

Pour plus d'informations sur les deux solutions d'interface graphique Web configurables, voici quelques liens pour commencer la recherche.

Surveillance du trafic pour les scénarios LAN / WAN

Nagios

Nagios existe depuis longtemps, il est donc à la fois éprouvé et testé. À un moment donné, tout était gratuit et open source, mais a depuis évolué vers une solution d'entreprise avec des modèles de licence payants pour répondre aux besoins de sophistication de l'entreprise. Par conséquent, avant de planifier des déploiements avec Nagios, assurez-vous que les versions sous licence open source répondront à vos besoins ou prévoyez de dépenser avec un budget d'entreprise à l'esprit.

La plupart des logiciels open source de surveillance du trafic Nagios se trouvent sur: https://www.nagios.org

Pour une histoire résumée de Nagious, voici la page officielle de l'histoire de Nagios: https://www.nagios.org/about/history/

ntopng

Un autre excellent outil permettant de surveiller la bande passante et le trafic via une interface graphique Web est appelé ntopng . ntopng est similaire à l'utilitaire Unix ntop et peut collecter des données pour un LAN ou un WAN entier. Fournir une interface graphique Web pour l'administration, la configuration et la création de graphiques facilite son utilisation pour l'ensemble des services informatiques.

Comme Nagious, ntopng propose des versions d'entreprise open source et payantes. Pour plus d'informations sur ntopng , veuillez visiter le site Web:http://www.ntop.org/

Installer le référentiel Fedora EPEL - Paquets supplémentaires pour Enterprise Linux

Pour accéder à certains des outils nécessaires à la surveillance du trafic, nous devrons configurer notre système CentOS pour utiliser le référentiel EPEL.

Le référentiel EPEL n'est pas officiellement maintenu ou pris en charge par CentOS. Cependant, il est maintenu par un groupe de bénévoles de Fedora Core pour traiter les packages couramment utilisés par les professionnels d'Enterprise Linux qui ne sont pas inclus dans CentOS, Fedora Core ou Red Hat Linux Enterprise.

Caution -

N'oubliez pas que le référentiel EPEL n'est pas officiel pour CentOS et peut interrompre la compatibilité et les fonctionnalités sur les serveurs de production avec des dépendances communes. Dans cette optique, il est conseillé de toujours tester sur un serveur hors production exécutant les mêmes services que la production avant de déployer sur un boîtier critique du système.

Vraiment, le plus grand avantage de l'utilisation du référentiel EHEL par rapport à tout autre référentiel tiers avec CentOS est que nous pouvons être sûrs que les binaires ne sont pas corrompus. Il est recommandé de ne pas utiliser les référentiels provenant d'une source non approuvée.

Cela dit, le référentiel EPEL officiel est si commun avec CentOS qu'il peut être facilement installé via 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 }--

Après avoir installé le référentiel EPEL, nous voudrons le mettre à jour.

[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 }--

À ce stade, notre référentiel EPEL doit être configuré et prêt à être utilisé. Commençons par installer nload pour la surveillance de la bande passante de l'interface.

Les outils sur lesquels nous allons nous concentrer dans ce tutoriel sont:

  • nload
  • ntop
  • ifstst
  • iftop
  • vnstat
  • porcs nets
  • Wireshark
  • Dump TCP
  • Traceroute

Ce sont tous des standards pour la surveillance du trafic dans les entreprises Linux. L'utilisation de chaque plage de simple à avancé, nous ne parlerons donc que brièvement d'outils tels que Wireshark et TCP Dump.

Installer et utiliser nload

Avec nos référentiels EPEL installés et configurés dans CentOS, nous devrions maintenant pouvoir installer et utiliser nload . Cet utilitaire est conçu pour tracer la bande passante par interface en temps réel.

Comme la plupart des autres installations de base, nload est installé via le gestionnaire de paquets 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 }--

Maintenant, nous avons installé nload et son utilisation est assez simple.

[root@CentOS rdc]# nload enp0s5

nload surveillera l'interface spécifiée. Dans ce cas, enp0s5 une interface Ethernet, en temps réel depuis le terminal pour les charges de trafic réseau et l'utilisation totale de la bande passante.

Comme on le voit, nload tracera les données entrantes et sortantes de l'interface spécifiée, tout en fournissant une représentation physique du flux de données avec des marques de hachage "#".

La capture d'écran représentée est une simple page Web chargée avec du trafic de démon d'arrière-plan.

Les commutateurs de ligne de commande courants pour nload sont -

Commander action
-une Période de temps
-t Intervalle de mise à jour de l'heure en millisecondes, la valeur par défaut est 500
-u Définit l'affichage de la mesure du trafic h
-U Définit les unités de mesure du trafic total entrant / sortant de la même manière que -u

La syntaxe standard de nload est -

nload [options] <interface>

Si aucune interface n'est spécifiée, nload récupérera automatiquement la première interface Ethernet. Essayons de mesurer le total des données entrantes / sortantes en mégaoctets et les vitesses de transfert de données actuelles en mégabits.

[root@CentOS rdc]# nload -U M -u m

Les données entrant / sortant de l'interface actuelle sont mesurées en mégabits par seconde et chaque ligne «Ttl», représentant le total des données entrantes / sortantes, est affichée en mégaoctets.

nload est utile pour un administrateur pour voir combien de données sont passées par une interface et combien de données entrent / sortent actuellement d'une interface spécifiée.

Pour voir d'autres interfaces sans fermer nload, utilisez simplement les touches fléchées gauche / droite. Cela parcourra toutes les interfaces disponibles sur le système.

Il est possible de surveiller plusieurs interfaces simultanément à l'aide du commutateur -m -

[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5

surveillance de la charge de deux interfaces simultanément (lo et enp0s5) -

systemd a changé la façon dont la journalisation système est gérée pour CentOS Linux. Au lieu que chaque démon du système place les journaux dans des emplacements individuels plutôt que d'utiliser des outils tels que tail ou grep comme principal moyen de trier et de filtrer les entrées de journal,journald a apporté un point d'administration unique pour l'analyse des journaux système.

Les principaux composants de la journalisation systemd sont: journal, jounralctl et journald.conf

journald est le démon de journalisation principal et est configuré en éditant journald.conf tandis que journalctl est utilisé pour analyser les événements journalisés par journald .

Les événements enregistrés par journald incluent: les événements du noyau, les processus utilisateur et les services démons.

Définir le fuseau horaire correct du système

Avant d'utiliser journalctl , nous devons nous assurer que l'heure de notre système est réglée sur l'heure correcte. Pour ce faire, nous voulons utiliser timedatectl .

Vérifions l'heure actuelle du système.

[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]#

Actuellement, le système est adapté au fuseau horaire local. Si votre système ne l'est pas, définissons le fuseau horaire correct. Après avoir modifié les paramètres, CentOS calculera automatiquement le décalage du fuseau horaire par rapport au fuseau horaire actuel, en ajustant immédiatement l'horloge du système.

Listons tous les fuseaux horaires avec 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

C'est la sortie contestée de timedatectl list-timezones . Pour trouver un fuseau horaire local spécifique, la commande grep peut être utilisée -

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

L'étiquette utilisée par CentOS est généralement Pays / Région avec un trait de soulignement au lieu d'un espace (New_York versus "New York").

Maintenant, définissons notre fuseau horaire -

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

L'horloge de votre système devrait ajuster automatiquement l'heure.

Utilisez journalctl pour analyser les journaux

Commutateurs de ligne de commande courants lors de l'utilisation de journalctl -

Commutateur action
-k Répertorie uniquement les messages du noyau
-u Listes par unité spécifique (httpd, sshd, etc ...)
-b Démarre le décalage d'étiquette
-o Enregistre le format de sortie
-p Filtres par type de journal (nom ou numéro)
-F Nom de champ ou valeur de nom de champ
--UTC Heure en décalage UTC
--depuis Filtrer par période

Examiner les journaux de démarrage

Tout d'abord, nous examinerons et configurerons les journaux de démarrage dans CentOS Linux. La première chose que vous remarquerez est que CentOS, par défaut, ne stocke pas la journalisation de démarrage qui est persistante lors des redémarrages.

Pour vérifier les journaux de démarrage par instance de redémarrage, nous pouvons émettre la commande suivante -

[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]#

Après avoir redémarré le système, nous pouvons voir une autre entrée.

[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]#

Maintenant, examinons la dernière instance de journalisation de démarrage -

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Ci-dessus se trouve la sortie condensée de notre dernier démarrage. Nous pourrions également nous référer à un journal de démarrage d'heures, de jours, de semaines, de mois et même d'années. Cependant, par défaut, CentOS ne stocke pas les journaux de démarrage persistants. Pour activer le stockage permanent des journaux de démarrage, nous devons apporter quelques modifications de configuration -

  • Créer des points de stockage centralisés pour les journaux de démarrage
  • Accordez les autorisations appropriées à un nouveau dossier de journal
  • Configurer journald.conf pour la journalisation persistante

Configurer l'emplacement de démarrage pour les journaux de démarrage persistants

L'endroit initial où journald voudra stocker les journaux de démarrage persistants est / var / log / journal . Comme cela n'existe pas par défaut, créons-le -

[root@centos rdc]# mkdir /var/log/journal

Maintenant, donnons au répertoire les autorisations appropriées pour accéder au démon journald -

systemd-tmpfiles --create --prefix /var/log/journal

Enfin, disons à journald qu'il doit stocker les journaux de démarrage persistants. Dans vim ou dans votre éditeur de texte préféré, ouvrez /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

La ligne qui nous intéresse est, Storage = . Supprimez d'abord le commentaire # , puis changez enStorage = persistentcomme illustré ci-dessus. Enregistrez et redémarrez votre système CentOS et assurez-vous qu'il doit y avoir plusieurs entrées lors de l'exécution de journalctl list-boots .

Note- Un identifiant de machine en constante évolution comme celui d'un fournisseur VPS peut entraîner l' échec de journald lors du stockage des journaux de démarrage persistants. Il existe de nombreuses solutions de contournement pour un tel scénario. Il est préférable de parcourir les correctifs actuels publiés sur les forums d'administration CentOS, plutôt que de suivre les conseils fiables de ceux qui ont trouvé des solutions de contournement VPS plausibles.

Pour examiner un journal de démarrage spécifique, nous devons simplement obtenir chaque offset en utilisant journald --list-boots l'offset avec le commutateur -b . Donc, pour vérifier le deuxième journal de démarrage que nous utiliserions -

journalctl -b -2

La valeur par défaut pour -b sans décalage du journal de démarrage spécifié sera toujours le journal de démarrage actuel après le dernier redémarrage.

Analyser les journaux par type de journal

Les événements de journald sont numérotés et classés en 7 types distincts -

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

Par conséquent, si nous voulons voir tous les avertissements, la commande suivante peut être émise via 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'

Le tableau ci-dessus montre tous les avertissements des 4 derniers jours sur le système.

La nouvelle façon de visualiser et de parcourir les journaux avec systemd nécessite peu de pratique et de recherche pour se familiariser avec. Cependant, avec différents formats de sortie et un avis particulier pour rendre tous les journaux de démon emballés universels, cela vaut la peine d'être adopté. journald offre une grande flexibilité et efficacité par rapport aux méthodes traditionnelles d'analyse des journaux.

Avant d'explorer les méthodes propres à CentOS pour déployer un plan de sauvegarde standard, examinons d'abord les considérations typiques pour une politique de sauvegarde de niveau standard. La première chose à laquelle nous voulons nous habituer est la3-2-1 backup rule.

3-2-1 Stratégie de sauvegarde

Dans toute l'industrie, vous entendrez souvent le terme modèle de sauvegarde 3-2-1. C'est une très bonne approche à vivre lors de la mise en œuvre d'un plan de sauvegarde. 3-2-1 est défini comme suit:3copies de données; par exemple, nous pouvons avoir la copie de travail; une copie placée sur le serveur CentOS conçu pour la redondance à l'aide de rsync; et les sauvegardes USB tournées et hors site sont effectuées à partir des données du serveur de sauvegarde.2différents supports de sauvegarde. Nous aurions en fait trois supports de sauvegarde différents dans ce cas: la copie de travail sur un SSD d'un ordinateur portable ou d'un poste de travail, les données du serveur CentOS sur une baie RADI6 et les sauvegardes hors site placées sur des clés USB.1copie des données hors site; nous faisons tourner les clés USB hors site tous les soirs. Une autre approche moderne peut être un fournisseur de sauvegarde dans le cloud.

Récupération du système

Un plan de restauration sans système d'exploitation est simplement un plan établi par un administrateur CentOS pour mettre en ligne des systèmes vitaux avec toutes les données intactes. En supposant une panne de système à 100% et la perte de tout le matériel système antérieur, un administrateur doit avoir un plan pour atteindre un temps de fonctionnement avec des données utilisateur intactes, ce qui coûte un temps d'arrêt minimal. Le noyau monolithique utilisé sous Linux rend en fait les restaurations bare metal à l'aide d'images système beaucoup plus faciles que Windows. Où Windows utilise une architecture micro-noyau.

Une restauration complète des données et une restauration sans système d'exploitation sont généralement effectuées grâce à une combinaison de méthodes, notamment des images disque de production configurées et fonctionnelles des principaux serveurs opérationnels, des sauvegardes redondantes des données utilisateur respectant la règle 3-2-1. Même certains fichiers sensibles qui peuvent être stockés dans un coffre-fort sécurisé et ignifuge avec un accès limité au personnel de confiance de l'entreprise.

Un plan de restauration et de récupération de données bare metal multiphase utilisant des outils CentOS natifs peut consister en:

  • dd pour créer et restaurer des images disque de production des serveurs configurés

  • rsync pour effectuer des sauvegardes incrémentielles de toutes les données utilisateur

  • tar & gzip pour stocker des sauvegardes cryptées de fichiers avec des mots de passe et des notes d'administrateurs. Généralement, cela peut être placé sur une clé USB, crypté et verrouillé dans un coffre-fort auquel un Senior Manager accède. En outre, cela garantit que quelqu'un d'autre connaîtra les informations de sécurité vitales si l'administrateur actuel gagne la loterie et disparaît sur une île ensoleillée quelque part.

Si un système tombe en panne en raison d'une panne matérielle ou d'un sinistre, voici les différentes phases des opérations de restauration -

  • Créer un serveur fonctionnel avec une image bare metal configurée

  • Restaurer les données sur le serveur de travail à partir des sauvegardes

  • Avoir un accès physique aux informations d'identification nécessaires pour effectuer les deux premières opérations

Utiliser rsync pour les sauvegardes de niveau fichier

rsync est un excellent utilitaire pour synchroniser les répertoires de fichiers localement ou vers un autre serveur. rsync est utilisé depuis des années par les administrateurs système, il est donc très perfectionné pour la sauvegarde des données. De l'avis de l'auteur, l'une des meilleures fonctionnalités de la synchronisation est sa capacité à être scriptée à partir de la ligne de commande.

Dans ce tutoriel, nous aborderons rsync de différentes manières -

  • Explorez et parlez de certaines options courantes
  • Créer des sauvegardes locales
  • Créer des sauvegardes à distance via SSH
  • Restaurer les sauvegardes locales

rsyncest nommé pour son objectif: Remote Sync et est à la fois puissant et flexible d'utilisation.

Voici une sauvegarde à distance rsync de base sur ssh -

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

La synchronisation suivante a envoyé près de 2,3 Go de données sur notre réseau local. La beauté de rsync est qu'il fonctionne de manière incrémentielle au niveau du bloc, fichier par fichier. Cela signifie que si nous ne modifions que deux caractères dans un fichier texte de 1 Mo, seuls un ou deux blocs seront transférés sur le réseau local lors de la prochaine synchronisation!

En outre, la fonction incrémentielle peut être désactivée en faveur d'une plus grande bande passante réseau utilisée pour une utilisation moindre du processeur. Cela peut s'avérer utile si vous copiez constamment plusieurs fichiers de base de données de 10 Mo toutes les 10 minutes sur un Backup-Lan dédié de 1 Go. Le raisonnement est le suivant: ceux-ci changeront toujours et transmettront de manière incrémentielle toutes les 10 minutes et peuvent taxer la charge du CPU distant. Étant donné que la charge totale de transfert ne dépassera pas 5 minutes, nous souhaitons peut-être simplement synchroniser les fichiers de la base de données dans leur intégralité.

Voici les commutateurs les plus courants avec rsync -

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path

Commutateur action
-une Mode d'archivage et suppose -r, -p, -t, -g, -l
-ré Synchroniser uniquement l'arborescence de répertoires, pas de fichiers
-r Récursif dans le répertoire
-l Copier les liens symboliques en tant que liens symboliques
-p Conserver les autorisations
-g Préserver le groupe
-v Sortie verbeuse
-z Compresser via le lien réseau
-X Préserver les attributs étendus
-UNE Préserver les ACL
-t Conserver les horodatages
-W Transférer le fichier entier, pas des blocs incrémentiels
-u Ne pas écraser les fichiers sur la cible
--le progrès Afficher la progression du transfert
--effacer Supprimer les anciens fichiers sur la cible
--max-taille = XXX Taille maximale du fichier à synchroniser

Quand utiliser rsync

Ma préférence personnelle pour rsync est lors de la sauvegarde de fichiers d'un hôte source vers un hôte cible. Par exemple, tous les répertoires personnels pour la récupération de données ou même hors site et dans le cloud pour la récupération après sinistre.

Sauvegarde locale avec rsync

Nous avons déjà vu comment transférer des fichiers d'un hôte à un autre. La même méthode peut être utilisée pour synchroniser les répertoires et les fichiers localement.

Faisons une sauvegarde incrémentielle manuelle de / etc / dans le répertoire de notre utilisateur racine.

Tout d'abord, nous devons créer un répertoire off ~ / root pour la sauvegarde synchronisée -

[root@localhost rdc]# mkdir /root/etc_baks

Ensuite, assurez-vous qu'il y a suffisamment d'espace disque disponible.

[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%         /

Nous sommes bons pour synchroniser tout notre répertoire / etc / -

rsync -aAvr /etc/ /root/etc_baks/

Notre répertoire synchronisé / 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 }--

Maintenant, faisons une rsync incrémentielle -

[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]#

Seul notre fichier test_incremental.txt a été copié.

Sauvegardes différentielles à distance avec rsync

Faisons notre première sauvegarde complète rsync sur un serveur avec un plan de sauvegarde déployé. Cet exemple sauvegarde en fait un dossier sur une station de travail Mac OS X sur un serveur CentOS. Un autre grand aspect de rsync est qu'il peut être utilisé sur n'importe quelle plate-forme sur laquelle rsync a été porté.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

Nous avons maintenant sauvegardé un dossier d'un poste de travail sur un serveur exécutant un volume RAID6 avec des supports de reprise après sinistre tournés stockés hors site. L'utilisation de rsync nous a donné une sauvegarde 3-2-1 standard avec un seul serveur disposant d'une matrice de disques redondants coûteuse et de sauvegardes différentielles en rotation.

Maintenant, faisons une autre sauvegarde du même dossier en utilisant rsync après qu'un seul nouveau fichier nommé test_file.txt a été ajouté.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff 
[email protected]'s password:  
sending incremental file list 
 ./ 
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

Comme vous pouvez le voir, seul le nouveau fichier a été livré au serveur via rsync . La comparaison différentielle a été effectuée fichier par fichier.

Voici quelques points à noter: Cela ne copie que le nouveau fichier: test_file.txt, car c'était le seul fichier avec des modifications. rsync utilise ssh. Nous n'avons jamais eu besoin d'utiliser notre compte root sur l'une ou l'autre des machines.

Simple, puissant et efficace, rsync est idéal pour sauvegarder des dossiers entiers et des structures de répertoires. Cependant, rsync en lui-même n'automatise pas le processus. C'est là que nous devons fouiller dans notre boîte à outils et trouver le meilleur, petit et simple outil pour le travail.

Pour automatiser les sauvegardes rsync avec cronjobs , il est essentiel que les utilisateurs SSH soient configurés à l'aide de clés SSH pour l'authentification. Ceci combiné avec les cronjobs permet à rsync d'être exécuté automatiquement à des intervalles de temps.

Utiliser DD pour les images de récupération Bare Metal bloc par bloc

DD est un utilitaire Linux qui existe depuis l'aube du noyau Linux rencontrant les utilitaires GNU.

dd en termes simples copie une image d'une zone de disque sélectionnée. Fournit ensuite la possibilité de copier des blocs sélectionnés d'un disque physique. Donc, à moins que vous n'ayez des sauvegardes, une fois que dd écrit sur un disque, tous les blocs sont remplacés. La perte de données précédentes dépasse les capacités de récupération pour une récupération de données de niveau professionnel, même très coûteuse.

L'ensemble du processus de création d'une image système amorçable avec dd est le suivant:

  • Démarrez à partir du serveur CentOS avec une distribution Linux bootable
  • Trouvez la désignation du disque amorçable à imager
  • Décidez de l'emplacement où l'image de récupération sera stockée
  • Trouvez la taille de bloc utilisée sur votre disque
  • Démarrez l'opération d'image dd

Dans ce tutoriel, par souci de temps et de simplicité, nous allons créer une image ISO de l'enregistrement master-boot à partir d'une machine virtuelle CentOS. Nous stockerons ensuite cette image hors site. Dans le cas où notre MBR est corrompu et doit être restauré, le même processus peut être appliqué à un disque ou une partition amorçable entier. Cependant, le temps et l'espace disque nécessaires sont vraiment un peu exagérés pour ce tutoriel.

Il est recommandé aux administrateurs CentOS de maîtriser la restauration d'un disque / partition entièrement amorçable dans un environnement de test et d'effectuer une restauration sans système d'exploitation. Cela soulagera beaucoup de pression lorsque l'on aura finalement besoin de terminer la pratique dans une situation réelle avec des gestionnaires et quelques dizaines d'utilisateurs finaux comptant les temps d'arrêt. Dans un tel cas, 10 minutes pour comprendre les choses peuvent sembler une éternité et faire transpirer.

Note- Lorsque vous utilisez dd, assurez-vous de NE PAS confondre les volumes source et cible. Vous pouvez détruire les données et les serveurs amorçables en copiant votre emplacement de sauvegarde sur un lecteur de démarrage. Ou peut-être pire détruire les données pour toujours en copiant les données à un niveau très bas avec DD.

Voici les commutateurs et paramètres de ligne de commande courants pour dd -

Commutateur action
si = Dans le fichier ou la source à copier
de = Out file ou la copie du fichier in
bs Définir la taille du bloc d'entrée et de sortie
obs Définir la taille du bloc du fichier de sortie
SCI Définir la taille du bloc du fichier d'entrée
compter Définissez le nombre de blocs à copier
conv Options supplémentaires à ajouter pour l'imagerie
Pas d'erreur N'arrêtez pas de traiter une erreur
synchroniser Blocs d'entrée non montés en cas d'erreur ou de désalignement

Note on block size- La taille de bloc par défaut pour dd est de 512 octets. Il s'agissait de la taille de bloc standard des disques durs de faible densité. Les disques durs à densité plus élevée d'aujourd'hui ont augmenté à des tailles de bloc de 4 096 octets (4 Ko) pour permettre des disques allant de 1 To et plus. Ainsi, nous voudrons vérifier la taille du bloc de disque avant d'utiliser dd avec des disques durs plus récents et de plus grande capacité.

Pour ce tutoriel, au lieu de travailler sur un serveur de production avec dd , nous utiliserons une installation CentOS exécutée dans VMWare. Nous allons également configurer VMWare pour démarrer une image ISO Linux bootable au lieu de travailler avec une clé USB bootable.

Tout d'abord, nous devrons télécharger l'image CentOS intitulée: CentOS Gnome ISO . Cela fait presque 3 Go et il est conseillé de toujours garder une copie pour créer des clés USB amorçables et démarrer dans des installations de serveurs virtuels pour le dépannage et les images bare metal.

D'autres distributions Linux amorçables fonctionneront tout aussi bien. Linux Mint peut être utilisé pour les ISO amorçables car il dispose d'un excellent support matériel et d'outils de disque GUI perfectionnés pour la maintenance.

L'image amorçable CentOS GNOME Live peut être téléchargée à partir de: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Configurons notre installation VMWare Workstation pour démarrer à partir de notre image de démarrage Linux. Les étapes sont pour VMWare sur OS X. Cependant, elles sont similaires dans VMWare Workstation sous Linux, Windows et même Virtual Box.

Note- L'utilisation d'une solution de bureau virtuel telle que Virtual Box ou VMWare Workstation est un excellent moyen de configurer des scénarios de laboratoire pour apprendre les tâches d'administration CentOS. Il offre la possibilité d'installer plusieurs installations CentOS, pratiquement aucune configuration matérielle permettant à la personne de se concentrer sur l'administration, et même d'enregistrer l'état du serveur avant d'apporter des modifications.

Commençons par configurer un cd-rom virtuel et attacher notre image ISO pour démarrer au lieu de l'installation du serveur virtuel CentOS -

Maintenant, définissez le disque de démarrage -

Désormais, une fois démarrée, notre machine virtuelle démarrera à partir de l'image ISO amorçable CentOS et autorisera l'accès aux fichiers sur le serveur Virtual CentOS précédemment configuré.

Vérifions nos disques pour voir où nous voulons copier le MBR (la sortie condensée est la suivante).

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

Nous avons localisé nos deux disques physiques: sda et sdb . Chacun a une taille de bloc de 512 octets. Donc, nous allons maintenant exécuter la commande dd pour copier les 512 premiers octets de notre MBR sur SDA1.

La meilleure façon de procéder est -

[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]#

Juste comme ça, nous avons une image complète de notre enregistrement de démarrage principal. Si nous avons suffisamment d'espace pour créer une image du lecteur de démarrage, nous pourrions tout aussi facilement créer une image de démarrage du système complet -

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

Le conv = sync est utilisé lorsque les octets doivent être alignés pour un support physique. Dans ce cas, dd peut obtenir une erreur si les alignements 4K exacts ne sont pas lus (disons ... un fichier qui ne fait que 3 Ko mais qui doit prendre au moins un seul bloc 4K sur le disque. Ou, il y a simplement une erreur de lecture et le fichier ne peut pas être lu par dd.). Ainsi, dd avec conv = sync, noerror remplira le 3K de données triviales mais utiles sur un support physique dans des alignements de blocs 4K. Sans présenter une erreur pouvant mettre fin à une opération importante.

Lorsque vous travaillez avec des données de disques, nous voulons toujours inclure: conv = sync, noerror parameter.

C'est simplement parce que les disques ne sont pas des flux comme les données TCP. Ils sont constitués de blocs alignés à une certaine taille. Par exemple, si nous avons des blocs de 512 octets, un fichier de seulement 300 octets a encore besoin de 512 octets d'espace disque (éventuellement 2 blocs pour les informations d'inœud comme les autorisations et autres informations sur le système de fichiers).

Utilisez gzip et tar pour le stockage sécurisé

gzip et tar sont deux utilitaires qu'un administrateur CentOS doit s'habituer à utiliser. Ils sont utilisés pour bien plus que simplement décompresser des archives.

Utilisation de Gnu Tar dans CentOS Linux

Tar est un utilitaire d'archivage similaire à winrar sous Windows. Son nom Tape Archive abrégé en tar résume assez bien l'utilitaire. tar prendra les fichiers et les placera dans une archive pour plus de commodité logique. Par conséquent, au lieu des dizaines de fichiers stockés dans / etc. nous pourrions simplement les «compresser» dans une archive pour des raisons de sauvegarde et de stockage.

tar est la norme de stockage de fichiers archivés sous Unix et Linux depuis de nombreuses années. Par conséquent, l'utilisation de tar avec gzip ou bzip est considérée comme une meilleure pratique pour les archives sur chaque système.

Voici une liste des commutateurs et options de ligne de commande courants utilisés avec tar -

Commutateur action
-c Crée une nouvelle archive .tar
-C Extraits dans un autre répertoire
-j Utilise la compression bzip2
-z Utilise la compression gzip
-v Progression de l'archivage des spectacles détaillés
-t Répertorie le contenu des archives
-F Nom de fichier de l'archive
-X Extrait l'archive tar

Voici la syntaxe de base pour créer une archive tar .

tar -cvf [tar archive name]

Note on Compression mechanisms with tar- Il est conseillé de s'en tenir à l'un des deux schémas de compression courants lors de l'utilisation de tar: gzip et bzip2. Les fichiers gzip consomment moins de ressources CPU mais sont généralement plus volumineux. Alors que bzip2 prendra plus de temps à se compresser, ils utilisent plus de ressources CPU; mais entraînera une taille de fichier finale plus petite.

Lors de l'utilisation de la compression de fichiers, nous voudrons toujours utiliser des extensions de fichier standard permettant à tout le monde, y compris nous-mêmes, de savoir (plutôt que de deviner par essais et erreurs) quel schéma de compression est nécessaire pour extraire les archives.

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

Lorsque vous devez éventuellement extraire des archives sur une boîte Windows ou pour une utilisation sous Windows, il est conseillé d'utiliser le .tar.tbz ou .tar.gz car la plupart des extensions simples à trois caractères confondront les administrateurs Windows et Windows uniquement (cependant, c'est parfois le résultat souhaité)

Créons une archive tar gzippée à partir de nos sauvegardes à distance copiées depuis le poste de travail 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

Note- Au lieu d'ajouter tous les fichiers directement à l'archive, nous avons archivé l'intégralité du dossier RemoteStuff . C'est la méthode la plus simple. Tout simplement parce qu'une fois extrait, le répertoire entier RemoteStuff est extrait avec tous les fichiers à l'intérieur du répertoire de travail actuel sous le nom ./currentWorkingDirectory/RemoteStuff/

Extrayons maintenant l'archive dans le répertoire / 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

Comme vu ci-dessus, tous les fichiers ont été simplement extraits dans le répertoire contenant dans notre répertoire de travail actuel.

[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 ~]#

Utilisez gzip pour compresser les sauvegardes de fichiers

Comme indiqué précédemment, nous pouvons utiliser bzip2 ou gzip de tar avec le -j ou -zcommutateurs de ligne de commande. Nous pouvons également utiliser gzip pour compresser des fichiers individuels. Cependant, utiliser bzip ou gzip seul n'offre pas autant de fonctionnalités que lorsqu'il est combiné avec tar .

Lors de l'utilisation de gzip , l'action par défaut consiste à supprimer les fichiers d'origine, en les remplaçant chacun par une version compressée en ajoutant l'extension .gz.

Certains commutateurs de ligne de commande courants pour gzip sont -

Commutateur action
-c Conserve les fichiers après les avoir placés dans l'archive
-l Obtenez des statistiques pour l'archive compressée
-r Compresse récursivement les fichiers dans les répertoires
-1 à 9 Spécifie le niveau de compression sur une échelle de 1 à 9

gzip fonctionne plus ou moins sur une base fichier par fichier et non sur une base d'archive comme certains utilitaires zip de Windows O / S. La raison principale en est que tar fournit déjà des fonctionnalités d'archivage avancées. gzip est conçu pour fournir uniquement un mécanisme de compression.

Par conséquent, lorsque vous pensez à gzip , pensez à un seul fichier. Lorsque vous pensez à plusieurs fichiers, pensez aux archives tar . Explorons maintenant cela avec notre précédente archive tar .

Note - Les professionnels Linux chevronnés se réfèrent souvent à une archive goudronnée comme une archive tar.

Créons une autre archive tar à partir de notre sauvegarde rsync .

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

À des fins de démonstration, gzipons l'archive tar nouvellement créée et demandons à gzip de conserver l'ancien fichier. Par défaut, sans l' option -c , gzip remplacera toute l'archive tar par un fichier .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.

Essayons de tester le commutateur -l avec gzip .

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name 
     2317140467          2326661120        0.4% RemoteStuff.tar
     
[root@centos Documents]#

Pour montrer en quoi gzip diffère des utilitaires Zip Windows, exécutons gzip sur un dossier de fichiers texte.

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

Utilisons maintenant l'option -r pour compresser récursivement tous les fichiers texte du répertoire.

[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]#

Voir? Pas ce que certains auraient pu prévoir. Tous les fichiers texte d'origine ont été supprimés et chacun a été compressé individuellement. En raison de ce comportement, il est préférable de penser à gzip seul lorsque vous devez travailler dans des fichiers uniques.

En travaillant avec des tarballs , extrayons notre tarball rsynced dans un nouveau répertoire.

[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

Comme vu ci-dessus, nous avons extrait et décompressé notre tarball dans le répertoire / tmp.

[root@centos Documents]# ls /tmp 
hsperfdata_root
RemoteStuff

Crypter les archives TarBall

Le chiffrement des archives tarball pour stocker des documents sécurisés auxquels d'autres employés de l'organisation peuvent avoir besoin, en cas de reprise après sinistre, peut être un concept délicat. Il y a essentiellement trois façons de faire cela: soit utiliser GnuPG, soit utiliser openssl, soit utiliser un utilitaire tiers.

GnuPG est principalement conçu pour le cryptage asymétrique et a une association d'identité en tête plutôt qu'une phrase de passe. Certes, il peut être utilisé avec un cryptage symétrique, mais ce n'est pas la principale force de GnuPG. Ainsi, j'écarterais GnuPG pour le stockage d'archives avec une sécurité physique lorsque plus de personnes que la personne d'origine peuvent avoir besoin d'un accès (comme peut-être un directeur d'entreprise qui veut se protéger contre un administrateur détenant toutes les clés du royaume comme levier).

Opensl comme GnuPG peut faire ce que nous voulons et est livré avec CentOS. Mais encore une fois, n'est pas spécifiquement conçu pour faire ce que nous voulons et le cryptage a été remis en question dans la communauté de la sécurité.

Notre choix est un utilitaire appelé 7zip. 7zip est un utilitaire de compression comme gzip mais avec beaucoup plus de fonctionnalités. Comme Gnu Gzip, 7zip et ses standards sont dans la communauté open-source. Nous avons juste besoin d'installer 7zip à partir de notre référentiel EHEL (le prochain chapitre couvrira l'installation des référentiels d'entreprise étendus en détail).

Installez 7zip sur Centos

7zip est une installation simple une fois que nos référentiels EHEL ont été chargés et configurés dans 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

Aussi simple que cela, 7zip est installé et prêt à être utilisé avec un cryptage AES 256 bits pour nos archives tarball.

Utilisons maintenant 7z pour crypter notre archive gzippée avec un mot de passe. La syntaxe pour cela est assez simple -

7z a -p <output filename><input filename>

Où, a: ajouter à l'archive, et -p: crypter et demander la phrase de passe

[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]#

Maintenant, nous avons notre archive .7z qui crypte l'archive tar gzippée avec AES 256 bits.

Note- 7zip utilise le cryptage AES 256 bits avec un hachage SHA-256 du mot de passe et du compteur, répété jusqu'à 512K fois pour la dérivation de clé. Cela devrait être suffisamment sécurisé si une clé complexe est utilisée.

Le processus de chiffrement et de recompression de l'archive peut prendre un certain temps avec des archives plus volumineuses.

7zip est une offre avancée avec plus de fonctionnalités que gzip ou bzip2. Cependant, ce n'est pas en standard avec CentOS ou dans le monde Linux. Ainsi, les autres utilitaires doivent être utilisés le plus souvent possible.

Le système CentOS 7 peut être mis à jour de trois manières -

  • Manually
  • Automatically
  • Mettre à jour manuellement pour les problèmes de sécurité majeurs et configurer les mises à jour automatiques

Dans un environnement de production, il est recommandé de mettre à jour manuellement les serveurs de production. Ou au moins, établissez un plan de mise à jour afin que l'administrateur puisse assurer les services essentiels aux opérations commerciales.

Il est plausible qu'une simple mise à jour de sécurité puisse provoquer des problèmes récursifs avec une application courante qui nécessite une mise à niveau et une reconfiguration par un administrateur. Alors, soyez fatigué de planifier des mises à jour automatiques en production avant de tester d'abord les serveurs de développement et les postes de travail.

Mettre à jour manuellement CentOS 7

Pour mettre à jour CentOS 7, nous voudrons nous familiariser avec la commande yum .yumest utilisé pour gérer les référentiels de paquets dans CentOS 7. yum est l'outil couramment utilisé pour -

  • Mettre à jour le système Linux CentOS 7
  • Rechercher des packages
  • Installer des packages
  • Détecter et installer les dépendances requises pour les packages

Afin d'utiliser yum pour les mises à jour, votre serveur CentOS devra être connecté à Internet. La plupart des configurations installeront un système de base, puis utiliseront yum pour interroger le référentiel CentOS principal pour des fonctionnalités supplémentaires dans les packages et appliquer les mises à jour du système.

Nous avons déjà utilisé yum pour installer quelques paquets. Lorsque vous utilisez yum, vous devrez toujours le faire en tant qu'utilisateur root. Ou un utilisateur avec un accès root. Alors recherchons et installons un éditeur de texte facile à utiliser appelé 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]#

Maintenant, installons l' éditeur de texte 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]#

Nous avons installé l'éditeur de texte nano. Cette méthode, IMO, est beaucoup plus facile que de rechercher des utilitaires sur des sites Web et d'exécuter manuellement les programmes d'installation. De plus, les référentiels utilisent des signatures numériques pour valider les packages en s'assurant qu'ils proviennent d'une source fiable avec yum. Il appartient à l'administrateur de valider l'authenticité lors de l'approbation de nouveaux référentiels. C'est pourquoi il est considéré comme une bonne pratique de se lasser des référentiels tiers.

Yum peut également être utilisé pour supprimer un paquet.

[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

Maintenant, vérifions les mises à jour.

[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

Comme illustré, nous avons quelques dizaines de mises à jour en attente d'installation. En fait, il y a environ 100 mises à jour au total car nous n'avons pas encore configuré les mises à jour automatiques. Ainsi, installons toutes les mises à jour en attente.

[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]:

Après avoir appuyé sur la touche «y», la mise à jour de CentOS 7 commencera. Le processus général par lequel yum passe lors de la mise à jour est -

  • Vérifie les packages actuels
  • Recherche dans le référentiel des packages mis à jour
  • Calcule les dépendances nécessaires pour les packages mis à jour
  • Téléchargements mises à jour
  • Installe les mises à jour

Maintenant, assurons-nous que notre système est à jour -

[root@centos rdc]# yum list updates 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * updates: mirror.compevo.com

[root@centos rdc]#

Comme vous pouvez le voir, aucune mise à jour n'est répertoriée.

Configurer les mises à jour automatiques pour YUM

Dans un environnement d'entreprise, comme mentionné précédemment, les mises à jour automatiques peuvent être ou non la méthode d'installation préférée. Passons en revue les étapes de configuration des mises à jour automatiques avec yum.

Tout d'abord, nous installons un package appelé 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]#

Par défaut, yum-cron ne téléchargera que les mises à jour et ne les installera pas. L'installation automatique des mises à jour incombe à l'administrateur. La plus grande mise en garde est la suivante: certaines mises à jour nécessiteront un redémarrage du système. En outre, certaines mises à jour peuvent nécessiter un changement de configuration avant que les services ne soient à nouveau opérationnels.

La mise à jour des dépendances peut éventuellement créer un problème récursif dans la situation suivante -

  • Une mise à jour est recommandée par yum pour une certaine bibliothèque

  • La bibliothèque ne prend en charge que Apache Server 2.4, mais nous avons le serveur 2.3

  • Notre site de commerce repose sur une certaine version de PHP

  • La nouvelle version d'Apache installée pour la bibliothèque nécessite une mise à niveau de PHP

  • Nos applications Web de production n'ont pas encore été testées avec la nouvelle version PHP

Yum peut continuer et mettre à jour automatiquement Apache et PHP sans préavis, sauf s'il est configuré pour ne pas le faire.

Si les 5 scénarios se déroulent, cela peut entraîner n'importe quoi, d'un gros mal de tête le matin à un possible compromis de sécurité exposant les données de l'utilisateur. Bien que l'exemple susmentionné soit une sorte de tempête parfaite, nous ne voulons jamais qu'un tel scénario se déroule.

Il appartient à l'administrateur d'accéder aux scénarios possibles de perte de revenus potentielle en fonction du temps nécessaire pour restaurer les services en raison de temps d'arrêt possibles dus aux redémarrages et aux reconfigurations des mises à jour. Cette pratique n'est peut-être pas assez conservatrice pour, par exemple, un site de commerce électronique de plusieurs millions de dollars par jour avec des millions de clients.

Configurons maintenant yum-cron pour installer automatiquement les mises à jour du système.

[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

Nous voulons changer apply_updates = no en apply_updates = yes . Configurons maintenant l'intervalle de mise à jour pour yum-cron .

Encore une fois, utiliser ou non des mises à jour automatiques et installer des mises à jour à la demande peut être une arme à double tranchant et doit être pris en compte par un administrateur pour chaque situation unique.

Introduction à Bash Shell

Comme les versions de GNU Linux, les shells sont disponibles dans de nombreuses variétés et leur compatibilité varie. Le shell par défaut dans CentOS est connu sous le nom de Bash ou Bourne Again Shell. Le shell Bash est une version moderne et modifiée de Bourne Shell développée par Stephen Bourne. Bash était le remplacement direct du Thompson Shell original sur le système d'exploitation Unix développé aux Bell Labs par Ken Thompson et Dennis Ritchie (Stephen Bourne était également employé par Bell Labs)

Chacun a sa coque préférée et chacun a ses atouts et ses difficultés. Mais pour la plupart, Bash sera le shell par défaut dans toutes les distributions Linux et le plus couramment disponible. Avec l'expérience, tout le monde voudra explorer et utiliser le shell qui lui convient le mieux. Cependant, en même temps, tout le monde voudra également maîtriser le shell Bash.

Les autres shells Linux incluent: Tcsh, Csh, Ksh, Zsh et Fish.

Développer des compétences pour utiliser n'importe quel shell Linux à un niveau expert est extrêmement important pour un administrateur CentOS. Comme nous l'avons mentionné précédemment, contrairement à Windows, Linux en son cœur est un système d'exploitation en ligne de commande. Un shell est simplement une interface utilisateur qui permet à un administrateur (ou à un utilisateur) d'émettre des commandes vers le système d'exploitation. Si un administrateur système Linux était un pilote de ligne aérienne, utiliser le shell reviendrait à retirer l'avion du pilote automatique et à saisir les commandes manuelles pour un vol plus maniable.

Un shell Linux, comme Bash, est connu en informatique comme un Command Line Interpreter. Microsoft Windows dispose également de deux interpréteurs de ligne de commande appelés DOS (à ne pas confondre avec le système d'exploitation DOS d'origine) et PowerShell.

La plupart des shells modernes comme Bash fournissent constructspermettant à des scripts shell plus complexes d'automatiser les tâches courantes et complexes.

Les constructions incluent -

  • Contrôle de flux de script (ifthen et else)
  • Opérations de comparaison logique (égalité supérieure, inférieure à)
  • Loops
  • Variables
  • Paramètres définissant l'opération (similaire aux commutateurs avec commandes)

Utilisation du script Shell par rapport au langage de script

Souvent, lorsqu'ils songent à effectuer une tâche, les administrateurs se demandent: Dois-je utiliser un script shell ou un langage de script tel que Perl, Ruby ou Python?

Il n'y a pas de règle fixe ici. Il n'y a que des différences typiques entre les shells et les langages de script.

coquille

Shell permet l'utilisation de commandes Linux telles que sed , grep , tee , cat et tous les autres utilitaires basés sur la ligne de commande sur le système d'exploitation Linux. En fait, à peu près n'importe quel utilitaire Linux en ligne de commande peut être scripté dans votre shell.

Un bon exemple d'utilisation d'un shell serait un script rapide pour vérifier une liste d'hôtes pour la résolution DNS.

Notre simple script Bash pour vérifier les noms DNS -

#!/bin/bash 
for name in $(cat $1); do host $name.$2 | grep "has address" 
   done 
exit

petite liste de mots sur laquelle tester la résolution DNS -

dns 
www 
test 
dev 
mail 
rdp 
remote

Sortie par rapport au domaine 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 ~]$

En exploitant de simples commandes Linux dans notre shell, nous avons pu créer un simple script de 5 lignes pour auditer les noms DNS à partir d'une liste de mots. Cela aurait pris un temps considérable en Perl, Python ou Ruby, même en utilisant une bibliothèque DNS bien implémentée.

Langage de script

Un langage de script donnera plus de contrôle en dehors du shell. Le script Bash ci-dessus utilisait un wrapper autour de la commande hôte Linux . Et si nous voulions en faire plus et créer notre propre application comme hôte pour interagir en dehors du shell? C'est là que nous utiliserions un langage de script.

De plus, avec un langage de script hautement maintenu, nous savons que nos actions fonctionneront pour la plupart sur différents systèmes. Python 3.5, par exemple, fonctionnera sur tout autre système exécutant Python 3.5 avec les mêmes bibliothèques installées. Ce n'est pas le cas, si nous voulons exécuter notre script BASH à la fois sous Linux et HP-UX.

Parfois, les lignes entre un langage de script et un shell puissant peuvent être floues. Il est possible d'automatiser les tâches d'administration CentOS Linux avec Python, Perl ou Ruby. Cela est vraiment assez courant. De plus, les développeurs de scripts shell aisés ont créé un démon de serveur Web simple mais fonctionnel dans Bash.

Avec une expérience des langages de script et de l'automatisation des tâches dans les shells, un administrateur CentOS sera en mesure de déterminer rapidement par où commencer lorsqu'il doit résoudre un problème. Il est assez courant de démarrer un projet avec un script shell. Ensuite, passez à un langage de script (ou compilé) à mesure qu'un projet devient plus complexe.

De plus, il est possible d'utiliser à la fois un langage de script et un script shell pour différentes parties d'un projet. Un exemple pourrait être un script Perl pour gratter un site Web. Ensuite, utilisez un script shell pour analyser et formater avec sed , awk et egrep . Enfin, utilisez un script PHP pour insérer des données formatées dans la base de données MySQL à l'aide d'une interface graphique Web.

Avec un peu de théorie derrière les shells, commençons avec les blocs de construction de base pour automatiser les tâches d'un shell Bash dans CentOS.

Entrée sortie et redirection

Traitement de stdout vers une autre commande -

[rdc@centos ~]$ cat ~/output.txt | wc -l 
6039 
[rdc@centos ~]$

Ci-dessus, nous avons passé cat'sstoud à wc pour le traitement avec le caractère pipe . wc a ensuite traité la sortie de cat , imprimant le nombre de lignes de output.txt sur le terminal. Considérez le caractère de tube comme un "tube" passant la sortie d'une commande, à traiter par la commande suivante.

Voici les concepts clés à retenir lors de la redirection de commandes -

Nombre Descripteur de fichier Personnage
0 entrée standard <
1 sortie standard >
2 erreur standard
ajouter stdout >>
attribuer une redirection &
pipe stdout dans stdin |

Nous avons introduit cela dans le premier chapitre sans vraiment parler de redirection ou d'attribution de redirection. Lors de l'ouverture d'un terminal sous Linux, votre shell est considéré comme la cible par défaut pour -

  • entrée standard <0
  • sortie standard> 1
  • erreur standard 2

Voyons comment cela fonctionne -

[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 est notre pseudo terminal. CentOS Linux regarde cela et considère notre application de terminal ouvert comme un vrai terminal avec le clavier et l'écran connectés via une interface série. Cependant, comme un hyperviseur fait abstraction de matériel à un système d'exploitation / dev / pts fait abstraction de notre terminal aux applications.

À partir de la commande lsof ci-dessus , nous pouvons voir sous leFDcolonne que les trois descripteurs de fichier sont définis sur notre terminal virtuel (0,1,2). Nous pouvons maintenant envoyer des commandes, voir la sortie de la commande, ainsi que toutes les erreurs associées à la commande.

Voici des exemples pour STDIN et 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]#

Il est également possible d'envoyer à la fois stdout et stderr vers des fichiers séparés -

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#

Lors de la recherche dans tout le système de fichiers, deux erreurs ont été rencontrées. Chacun a été envoyé dans un fichier séparé pour une lecture ultérieure, tandis que les résultats renvoyés ont été placés dans un fichier texte distinct.

L'envoi de stderr dans un fichier texte peut être utile lorsque vous effectuez des opérations qui génèrent beaucoup de données vers le terminal, comme la compilation d'applications. Cela permettra de parcourir les erreurs qui pourraient être perdues dans l'historique de défilement du terminal.

Une remarque lors du passage de STDOUT à un fichier texte sont les différences entre >> et >. Le double ">>" s'ajoutera à un fichier, tandis que la forme singulière écrasera le fichier et écrira un nouveau contenu (ainsi toutes les données précédentes seront perdues).

STDIN

[root@centosLocal centos]# cat < stdin.txt
Hello,
I am being read form Standard input, STDIN.

[root@centosLocal centos]#

Dans la commande ci-dessus, le fichier texte stdin.txt a été redirigé vers la commande cat qui a renvoyé son contenu à STDOUT .

Le caractère pipe "|"

Le caractère pipe prendra la sortie de la première commande, la passant comme entrée dans la commande suivante, permettant à la commande secondaire d'effectuer des opérations sur la sortie.

Maintenant, nous allons "diriger" la sortie standard de cat vers une autre commande -

[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#

Ci-dessus, wc effectue des calculs sur la sortie de cat qui a été transmise par le tuyau. La commande pipe est particulièrement utile lors du filtrage de la sortie de grep ou egrep -

[root@centosLocal centos]# egrep "^[0-9]{4}$" /usr/dicts/nums | wc -l  
9000 
[root@centosLocal centos]#

Dans la commande ci-dessus, nous avons passé tous les 4 chiffres à wc à partir d'un fichier texte contenant tous les numéros de 65535 passés à travers un filtre egrep .

Redirection de la sortie avec &

La sortie peut être redirigée à l'aide du &personnage. Si nous voulons diriger la sortie à la fois STDOUT et STDERR, dans le même fichier, cela peut être accompli comme suit -

[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]#

Redirection à l'aide du &character fonctionne comme ceci: d'abord, la sortie est redirigée vers out.txt . Deuxièmement, STDERR ou le descripteur de fichier 2 est réaffecté au même emplacement que STDOUT, dans ce cas out.txt .

La redirection est extrêmement utile et est utile pour résoudre les problèmes qui surgissent lors de la manipulation de gros fichiers texte, de la compilation du code source, de la redirection de la sortie dans des scripts shell et de l'émission de commandes Linux complexes.

Bien que puissante, la redirection peut devenir compliquée pour les nouveaux administrateurs CentOS. La pratique, la recherche et des questions occasionnelles à un forum Linux (tel que Stack Overflow Linux) aideront à résoudre des solutions avancées.

Constructions de Bash Shell

Maintenant que nous avons une bonne idée du fonctionnement du shell Bash , apprenons quelques constructions de base, couramment utilisées, pour écrire des scripts. Dans cette section, nous explorerons -

  • Variables
  • Loops
  • Conditionals
  • Contrôle de boucle
  • Lire et écrire dans des fichiers
  • Opérations mathématiques de base

Conseils de dépannage BASH

BASH peut être un peu délicat par rapport à un langage de script dédié. Certains des plus gros blocages dans les scripts BASH sont dus à un échappement incorrect ou à un échec des opérations de script passées au shell. Si vous avez regardé un script plusieurs fois et qu'il ne fonctionne pas comme prévu, ne vous inquiétez pas. Ceci est courant même avec ceux qui utilisent BASH pour créer quotidiennement des scripts complexes.

Une recherche rapide sur Google ou une inscription à un forum Linux expert pour poser une question conduira à une résolution rapide. Il est fort probable que quelqu'un ait rencontré le problème exact et qu'il ait déjà été résolu.

Le script BASH est une excellente méthode pour créer rapidement des scripts puissants pour tout, de l'automatisation des tâches d'administration à la création d'outils utiles. Devenir un développeur de scripts BASH de niveau expert prend du temps et de la pratique. Par conséquent, utilisez des scripts BASH chaque fois que possible, c'est un excellent outil à avoir dans votre boîte à outils d'administration CentOS.

La gestion des packages dans CentOS peut être effectuée de deux manières: depuis le terminal et depuis l'interface utilisateur graphique.

Le plus souvent, la majorité du temps d'un administrateur CentOS utilisera le terminal. La mise à jour et l'installation de packages pour CentOS ne sont pas différentes. Dans cet esprit, nous allons d'abord explorer la gestion des paquets dans le terminal, puis aborderons l'utilisation de l'outil graphique de gestion des paquets fourni par CentOS.

Gestionnaire de packages YUM

YUM est l'outil fourni pour la gestion des paquets dans CentOS. Nous avons brièvement abordé ce sujet dans les chapitres précédents. Dans ce chapitre, nous travaillerons à partir d'une installation CentOS propre. Nous allons d'abord mettre à jour complètement notre installation puis installer une application.

YUM a beaucoup apporté l'installation et la gestion de logiciels sous Linux. YUM vérifie "automatiquement" les dépendances obsolètes, en plus des paquets obsolètes. Cela a vraiment pris une charge de l'administrateur CentOS par rapport à l'ancien temps de compilation de chaque application à partir du code source.

miam check-update

Recherche les packages pouvant mettre à jour les candidats. Pour ce didacticiel, nous supposerons qu'il s'agit d'un système de production qui fera face à Internet sans aucune application de production qui doit être testée par DevOps avant de mettre à niveau les packages. Installons maintenant les candidats mis à jour sur le système.

[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]#

miam mise à jour

Cela installera tous les candidats mis à jour rendant votre installation CentOS actuelle. Avec une nouvelle installation, cela peut prendre un peu de temps en fonction de votre installation et de la vitesse de votre connexion Internet.

[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]:

Installer le logiciel via YUM

Outre la mise à jour du système CentOS, le gestionnaire de packages YUM est notre outil incontournable pour installer le logiciel. Tout, des outils de surveillance réseau, des lecteurs vidéo, aux éditeurs de texte, peut être installé à partir d'un référentiel central avec YUM .

Avant d'installer certains utilitaires logiciels, examinons quelques commandes YUM . Pour le travail quotidien, 90% de l'utilisation de YUM par un administrateur CentOS se fera avec environ 7 commandes. Nous allons passer en revue chacun dans l'espoir de se familiariser avec le fonctionnement de YUM à un niveau compétent pour une utilisation quotidienne. Cependant, comme la plupart des utilitaires Linux, YUM offre une multitude de fonctionnalités avancées qu'il est toujours agréable d'explorer via la page de manuel. Utiliser man yum sera toujours la première étape pour effectuer des opérations inconnues avec n'importe quel utilitaire Linux.

Commandes YUM les plus courantes

Voici les commandes YUM couramment utilisées.

Commander action
liste installée Répertorie les packages installés via YUM
tout lister Répertorie tous les packages actuellement disponibles
liste de groupe Répertorie les packages groupés
Info Fournit des informations détaillées sur un package
chercher Recherche les descriptions et les noms des packages
installer Installe un package
localinstall Installe un package rpm local
retirer Supprime et installe le package
Nettoie tout Nettoie / var / cache / yum pour libérer de l'espace disque
mec miam Comme toutes les commandes Linux, le fichier d'aide

Installer le logiciel avec YUM

Nous allons maintenant installer un navigateur Web basé sur du texte appelé Lynx. Avant l'installation, nous devons d'abord obtenir le nom du package contenant le navigateur Web Lynx. Nous ne sommes même pas sûrs à 100% que notre référentiel CentOS par défaut fournit un package pour le navigateur Web Lynx, alors cherchons et voyons -

[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]#

Nous voyons que CentOS propose le navigateur Web Lynx dans le référentiel. Voyons plus d'informations sur le package.

[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]#

Agréable! La version 2.8 est suffisamment récente, alors installons 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]#

Ensuite, assurons-nous que Lynx s'est installé correctement.

[root@localhost rdc]# yum list installed | grep -i lynx

lynx.x86_64                   2.8.8-0.3.dev15.el7              @base     
[root@localhost rdc]#

Génial! Utilisons Lynx pour voir à quoi ressemble le Web sans "j'aime" et sans jolies images.

[root@localhost rdc]# lynx www.tutorialpoint.in

Génial, nous avons maintenant un navigateur Web pour notre serveur de production qui peut être utilisé sans trop de soucis dans des exploits à distance lancés sur le Web. C'est une bonne chose pour les serveurs de production.

Nous avons presque terminé, mais nous devons d'abord configurer ce serveur pour que les développeurs testent les applications. Ainsi, assurons-nous qu'ils disposent de tous les outils nécessaires à leur travail. Nous pourrions tout installer individuellement, mais CentOS et YUM ont rendu cela beaucoup plus rapide. Installons le package de groupe de développement .

[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]#

Il s'agit d'une liste plus petite de groupes de packages fournis par CentOS. Voyons ce qui est inclus dans le "Groupe de développement".

[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

Le premier écran de sortie est comme vu ci-dessus. Cette liste entière est assez complète. Cependant, ce groupe devra généralement être installé dans son intégralité au fil du temps. Installons l'ensemble du groupe de développement.

[root@localhost rdc]# yum groupinstall "Development Tools"

Ce sera une installation plus importante. Une fois terminé, votre serveur aura la plupart des bibliothèques de développement et des compilateurs pour Perl, Python, C et C ++.

Gestion graphique des packages dans CentOS

Gnome Desktop fournit un outil graphique de gestion de paquets appelé Software. Il est assez simple à utiliser et simple. Software, l'outil de gestion de paquets Gnome pour CentOS peut être trouvé en accédant à: Applications → Outils système → Logiciel.

L'outil de gestion des packages logiciels est divisé en groupes permettant à l'administrateur de sélectionner les packages à installer. Bien que cet outil soit idéal pour la facilité d'utilisation et la simplicité pour les utilisateurs finaux, YUM est beaucoup plus puissant et sera probablement davantage utilisé par les administrateurs.

Voici une capture d'écran de l'outil de gestion des packages logiciels, qui n'est pas vraiment conçu pour les administrateurs système.

Logical Volume Management (LVM)est une méthode utilisée par Linux pour gérer les volumes de stockage sur différents disques durs physiques. Cela ne doit pas être confondu avec RAID. Cependant, il peut être considéré dans un concept similaire à RAID 0 ou J-Bod. Avec LVM, il est possible d'avoir (par exemple) trois disques physiques de 1 To chacun, puis un volume logique d'environ 3 To tel que / dev / sdb. Ou même deux volumes logiques de 1,5 To, 5 volumes de 500 Go ou toute combinaison. Un seul disque peut même être utilisé pour des instantanés de volumes logiques.

Note- L'utilisation de volumes logiques augmente en fait les E / S disque lorsqu'elles sont correctement configurées. Cela fonctionne de la même manière que les données de répartition RAID 0 sur des disques séparés.

Lors de l'apprentissage de la gestion de volume avec LVM, c'est plus facile si nous savons ce qu'est chaque composant dans LVM. Veuillez étudier le tableau suivant pour bien comprendre chaque composant. Si vous en avez besoin, utilisez Google pour étudier. Comprendre chaque élément d'un volume logique est important pour les gérer.

PV Volume physique sda
PP Partition physique sda1, sda2
VG Groupe de volumes Ressources physiques mises en commun
LV Volume logique Vu comme une installation de stockage pour le système d'exploitation

UNE physical volumesera vu comme / dev / sda, / dev / sdb; un disque physique détecté par Linux.

UNE physical partitionsera une section du disque partitionnée par un utilitaire de disque tel que fdisk. Gardez à l'esprit que la partition physique n'est pas recommandée dans la plupart des configurations LVM courantes. Exemple: le disque / dev / sda est partitionné pour inclure deux partitions physiques: / dev / sda1 et / dev / sda1

Si nous avons deux disques physiques de 1 To chacun, nous pouvons créer un groupe de volumes de près de 2 To parmi les deux.

À partir du groupe de volumes, nous pouvons créer trois volumes logiques de toute taille ne dépassant pas la taille totale du groupe de volumes.

Outils d'administration de disque Linux traditionnels

Avant de vous familiariser avec les derniers et les meilleurs outils de gestion LVM dans CentOS 7, nous devons d'abord explorer les outils plus traditionnels qui ont été utilisés pour la gestion des disques Linux. Ces outils seront utiles et continueront d'être utilisés avec les outils LVM avancés d'aujourd'hui tels que System Storage Manager: lsblk, parted et mkfs.xfs.

Maintenant, en supposant que nous ayons ajouté un ou deux autres disques à notre système, nous devons énumérer les disques détectés par Linux. Je conseillerais toujours d'énumérer les disques à chaque fois avant d'effectuer des opérations considérées comme destructives.lsblkest un excellent outil pour obtenir des informations sur le disque. Voyons quels disques CentOS détecte.

[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

Comme vous pouvez le voir, nous avons trois disques sur ce système: sda, sdb et sdc.

Disk sda contient notre installation CentOS fonctionnelle, nous ne voulons donc pas jouer avec sda. Les deux sdb et sdc ont été ajoutés au système pour ce didacticiel. Rendons ces disques utilisables sur CentOS.

Créer une étiquette de disque

[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]#

Nous avons maintenant un disque étiqueté. Exécutez simplement la commande parted de la même manière sur sdc .

Créer les partitions sur le disque

Nous ne créerons qu'une seule partition sur chaque disque. Pour créer des partitions, la commande parted est à nouveau utilisée.

[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Warning - Vous avez demandé une partition de 0,00 à 6442 Mo (secteurs 0..12582911).

L'emplacement le plus proche que nous pouvons gérer est de 17,4 ko à 1048 ko (secteurs 34..2047).

Est-ce toujours acceptable pour vous?

Oui Non? NON

[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%

Information - Vous devrez peut-être mettre à jour / 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]#

Comme vous pouvez le voir sur la sortie de lsblk, nous avons maintenant deux partitions, chacune sur sdb et sdc.

Créer le système de fichiers

Enfin, avant de monter et d'utiliser un volume, nous devons ajouter un système de fichiers. Nous utiliserons le système de fichiers 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]#

Vérifions pour nous assurer que chacun a un système de fichiers utilisable.

[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]#

Chacun utilise maintenant le système de fichiers XFS. Montons-les, vérifions le montage et copions un fichier dans chacun.

[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

Nous avons deux disques utilisables à ce stade. Cependant, ils ne seront utilisables que lorsque nous les montons manuellement. Pour monter chacun au démarrage, nous devons éditer le fichier fstab . En outre, des autorisations doivent être définies pour les groupes ayant besoin d'accéder aux nouveaux disques.

Créer des groupes de volumes et des volumes logiques

L'un des plus grands ajouts à CentOS 7 a été l'inclusion d'un utilitaire appelé System Storage Manager ou ssm .System Storage Manager simplifie considérablement le processus de gestion des pools LVM et des volumes de stockage sous Linux.

Nous allons passer par le processus de création d'un pool de volumes simple et de volumes logiques dans CentOS. La première étape consiste à installer le System Storage Manager.

[root@localhost rdc]# yum  install system-storage-manager

Regardons nos disques en utilisant la commande ssm list .

Comme vu ci-dessus, trois disques au total sont installés sur le système.

  • /sdba1 - Héberge notre installation CentOS

  • /sdb1 - Monté sur / mnt / sdb

  • /sdc1 - Monté sur / mnt / sdc

Ce que nous voulons faire, c'est créer un groupe de volumes en utilisant deux disques (sdb et sdc). Mettez ensuite trois volumes logiques de 3 Go à la disposition du système.

Créons notre groupe de volumes.

[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1

Par défaut, ssm créera un seul volume logique étendant la totalité des 10 Go du pool. Nous ne voulons pas de cela, alors supprimons ceci.

[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]#

Enfin, créons les trois volumes logiques.

[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

Maintenant, vérifions nos nouveaux volumes.

Nous avons maintenant trois volumes logiques distincts répartis sur deux partitions de disque physique.

Les volumes logiques sont une fonctionnalité puissante désormais intégrée à CentOS Linux. Nous avons touché la surface sur la gestion de ces derniers. La maîtrise des pools et des volumes logiques s'accompagne d'une pratique et d'un apprentissage approfondi de Tutorials Point. Pour l'instant, vous avez appris les bases de la gestion LVM dans CentOS et possédez la possibilité de créer des volumes logiques par bandes de base sur un seul hôte.