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 -
ré | 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.