Optimiser et Sécuriser Linux.

Dans ce tutoriel, je vais recenser quelques astuces pratiques qui peuvent vous faire gagner du temps sous Linux pour optimiser et sécuriser Linux. Que vous soyez débutant ou chevronné ces tips vont vous faire gagner du temps, c’est sûre. 100% pratique.

N’hésitez pas à mettre cette page en favoris car elle sera mise à jour régulièrement. Vous pouvez aussi m’envoyer vos astuces pour débloquer une situation sous Linux.

nouvel publication dans l'article Comment faire un reset du password root sous CentOS.

Si vous avez perdu votre mot de passe root sur une machine CentOS, voici une procédure très simple pour le changer. Nous allons voir comment réinitialiser le mot de passe root en cinq étapes.

Pour réaliser cet exploit, il est quand même nécessaire d’avoir un accès physique à la machine.

Etape 1 : redémarrer la machine et accéder au menu de configuration de Grub.

faire un reset du password root sous CentOS depuis le menu Grub

Etape 2 : Placez-vous sur un item du menu, puis appuyer sur la touche « e » (permet d’éditer le menu)

Etape 3 : Se placer sur la ligne qui contient Kernel et appuyer de nouveau sur « e », pour éditer la ligne de lancement du kernel.

faire un reset du password root sous CentOS depuis le menu Grub

Etape 4 : Ajouter le chiffre 1 à la fin de la ligne et appuyer sur Entrée.

faire un reset du password root sous CentOS depuis le menu Grub

Etape 5 : Rebooter en appuyant sur la touche « b ». Après quelques secondes vous aurez accès au shell et en utilisant la commande passwd, vous pourrez changer le mot de passe du root.

Changer le mot de passe root sous CentOS

Voici une technique simple et efficace pour faire un reset d’un mot de passe oublié.

Lister tous les paquets installés sur une machine Linux.

Grâce à une simple commande, vous allez pouvoir lister sur votre serveur les paquets installés. Outre l’aspect inventaire de cette commande, vous pouvez surveiller les installations et repérer les dysfonctionnement dû à l’installation d’un paquet. Très utile pour les sys-admin.

Les formats de paquets

Les paquets peuvent prendre plusieurs formes en fonction de votre distribution. Le format RPM (RedHat Package Manager), a été, comme son nom l’indique, créé à l’origine pour la distribution Red Hat. Depuis, de nombreuses distributions l’ont utilisé, on peut citer par exemple CentOS ou SuSE. Il existe d’autres formats de paquets dans le monde Linux qui sont DEB (pour Debian) et TGZ (pour Slackware).

Qu’est-ce qu’un paquet ?

C’est un fichier (une archive, un peu comme un fichier .tar ou .zip) qui contient tous les fichiers appartenant à une application, une bibliothèque, etc. ainsi que des scripts de contrôle qui sont exécutés lors de l’installation ou de la désinstallation de l’application. Ce fichier contient également toutes les dépendances à d’autres applications, bibliothèques, etc.

Note : on parle indifféremment de paquet, package ou même paquetage pour désigner le fichier qui contient l’ensemble des fichiers d’un programme.

Lister les paquets installés sous Ubuntu

# dpkg --list

Lister les paquets installés sous Ubuntu

Voici l’explication par colonne :

  • Le statut du paquet : la plupart du temps, il sera affiché « ii », qui signifie  » installer. Mais l’on pourra également trouver « H » pour « semi-installé » ou d’autres états dont la signification est précisée juste avant le début de la liste
  • Le nom du paquet tel que présent dans les dépôts
  • La version du paquet, une information qui sera la plupart du temps très utile pour les dépendances par exemple
  • L’architecture du système pour le paquet
  • La description du paquet, afin de voir si celui-ci nous semble utile ou pas.

Bonus !! Sauvegarder les paquets installés sous Ubuntu dans un fichier texte

Cette astuce vous permet de stocker tous les paquets dans un fichier texte en vue d’une nouvelle installation sur une autre machine. Cela peut vous faire gagner du temps.

# dpkg --get-selections > liste-des-paquets_`hostname`_`date +%Y-%m-%d-%H-%M`

Pour restaurer les paquets, voici les commandes à respecter sur une machine :

# sudo apt-get update
# sudo apt-get install dselect
# sudo dselect update
# sudo dpkg --set-selections < liste-des-paquets>
# sudo apt-get -u dselect-upgrade

Sous CentOS, la commande équivalente pour afficher les paquets installés est :

# yum list installed

Changer le fuseau horaire de votre serveur Linux

Il peut arriver sur certaines installations Linux que l’heure ne soit pas une heure locale mais UTC (pour Universal Time Coordinated). En France cela pose des problèmes surtout si vous renvoyez vos logs vers un syslog comme Splunk par exemple, il faut toujours jongler avec les heures en enlevant 2 ou 1 heures suivant la saison. La meilleure heure pour un serveur est l’heure locale. Voici la commande pour paramétrer votre serveur Linux avec le bon fuseau horaire :

# sudo dpkg-reconfigure tzdata

Changer le fuseau horaire de votre serveur Linux

Changer le fuseau horaire de votre serveur Linux

Changer le fuseau horaire de votre serveur Linux

L’enchaînement des commandes sous Linux

Lorsqu’on réalise des tâches d’administrations, on peut être amené a enchainer plusieurs commandes de suite. Alors au-lieu de les taper les unes après les autres, on peut réaliser un enchainement de commandes grâce aux caractères d’enchainement.

Voici une petite description des 3 caractères d’enchainement sous Linux.

Le point virgule

Un enchainement de commande avec un point virgule enchaînera les commandes sans se soucier de la réussite ou de l’échec de chacune. On peut utiliser ces commandes quand nous sommes sûr de leurs réussites ou alors quand leurs bonnes exécutions n’est pas importante.

Par exemple si l’on souhaite créer un dossier puis s’y rendre pour y créer un fichier vide, on exécutera le commande suivante :

mkdir /home/~/mondossier1/; cd /home/~/dossier1/ ; touch monfichier1

C’est la manière la moins propre d’enchainer les commandes sous Linux. On peut imaginer une gestion plus complexe des commandes avec une mini gestion des erreurs. Il serait alors préférable d’être capable de n’exécuter les commandes suivantes uniquement si les précédentes se sont correctement executées.

Le « && »

Il est parfois nécessaire d’exécuter une commande que si la commande précédente a réussie. Par exemple si l’on souhaite vérifier l’existence d’un dossier et, si il existe, créer un fichier dedans :

cd /home/~/mondossier1 && touch monfichier1

Dans cet exemple, si la commande cd /home/~/mondossier1 ne s’exécute pas correctement (c’est à dire que le dossier n’existe pas), la commande touch monfichier1 qui créer un fichier vide ne s’exécutera pas et ne déclenchera pas de message d’erreur. Intéressant non!

Linux enregistre un paramètre à chaque exécution de commande qui peut être récupéré dans un script par exemple. Ce paramètre se met à « 0 » si la commande s’est executée correctement et à « 2 » quand la commande à échouée.

Pour déterminer si une commande a bien réussie, Linux analyse ce paramètre et, dans le cas d’un « 0 » avec un enchainement de commande « && », il exécute la commande suivante.
Si le paramètre en question est « 2 », il met donc fin à l’exécution des prochaines commandes.

Le « || »

il peut être aussi intéressant d’exécuter une commande uniquement si la commande précédente ne se déroule pas correctement au lieu de mettre fin à toute la ligne de commande. Cela est possible avec les caractères « || ».

Si l’on souhaite, comme auparavant, voir si un dossier existe et si c’est le cas y créer un fichier. On peut également vouloir créer le dossier si il n’est pas encore présent :

cd /home/~/dossier1 || mkdir / /home/~/mondossier1 && touch monfichier1

C’est un exemple simple mais on peut imaginer des choses beaucoup plus complexes.

Ici, le paramètre de vérification de l’exécution de la commande n’est pas « 0 » (= la commande « cd /home/~/mondossier1 » à échouée), on créera le fichier avec la commande « mkdir ». Puis dans un second temps on créera le fichier « monfichier1 ».

Installer CURL à partir de sa source.

Sur certaines distributions l’installation de CURL via le système de paquets est parfois impossible à cause de versions de dépendance (Ubuntu 18.04 LTS par exemple). En plus le SSL n’est pas pris en charge. Il faut alors désinstaller des paquets pour faire une régression. Pas toujours simple! Voici donc comment installer CURL sur votre système grâce à ses sources.

Désinstaller le CURL existant

# apt remove curl
# apt purge curl

Installer les dépendances

# apt install -y build-essential libcurl4 openssl libssl-dev libssh-dev zlib1g-dev zlib libbrotli-dev brotli libkrb5-dev libldap2-dev librtmp-dev libpsl-dev libnghttp2-dev

Compiler les sources de CURL (Adapter la version de CURL)

cd /usr/local/src
rm -rf curl*
wget https://curl.haxx.se/download/curl-7.69.1.zip
unzip curl-7.69.1.zip
cd curl-7.69.1
./configure --with-ssl --with-zlib --with-gssapi --enable-ldap --enable-ldaps --with-libssh --with-nghttp2
make
make install

Une fois compilé, si vous avez cette erreur au lancement de CURL  :

Erreur de compilation de l'utilitaire CURL

Pour résoudre ce problème de lien symbolique, il faut utiliser les commandes suivantes (Attention!!! il faudra peut-être adapté vos chemins en fonction de vos distributions et de la version de CURL). Cette installation est réalisé sous Ubuntu 18.04 LTS.

# rm /usr/lib/x86_64-linux-gnu/libcurl.so.4
# ln -s /usr/local/lib/libcurl.so.4.6.0 /usr/lib/x86_64-linux-gnu/libcurl.so.4

Afficher la version de CURL avec les protocoles supportés.

Lister les utilisateurs et les groupes sur un système Linux.

Voici comment récupérer la liste des utilisateurs et des groupes sur un système GNU/Linux (les commandes sont à passer en root).

Afficher les utilisateurs :

# cat /etc/passwd | awk -F: '{print $1}'

Afficher les utilisateurs existants sous Linux.

Afficher les groupes :

# cat /etc/group | awk -F: '{print $1}'

Afficher la liste des groupes sous Linux.

Désactiver l’IPV6 sur Ubuntu.

Tout est dit dans le titre. Si l’IPv6 ne vous sert à rien sur votre serveur Linux, on le désactive. Voici comment en quelques lignes de commandes, comment se débarasser de l’IPv6 sous Ubuntu.

Pour savoir si l’IPv6 est activé sur vos interfaces réseau, il suffit d’utiliser la commande suivant :

# ifconfig

Pour savoir si l'IPv6 est activé sur vos interfaces réseau, il suffit d'utiliser la commande ifconfig sous Linux

Comme toujours avant je vous conseille d’effectuer une mise à jour de votre système avec les commandes suivantes :

# sudo apt update
# sudo apt upgrade

Ensuite éditer le fichier sysctl.conf :

# vi /etc/sysctl.conf

Puis rajouter à la fin du fichier les lignes suivantes :

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf..disable_ipv6 = 1

Remplacer  <nom_de_l’interface> par le nom de votre interface sur le serveur, ou il faut désactiver l’IPv6. Par défaut l’IPv6 sera désactiver sur l’interface de loopback.

Pour que les modifications soient prises en compte, inutile de redémarrer votre serveur. Utiliser cette commande :

# sysctl -p

Désactiver l'IPV6 sur Ubuntu dans le fichier sysctl.conf

Enfin, pour vérifier si la commande a bien désactiver l’IPv6 sur les interfaces, retaper ifconfig, il ne devrait y avoir aucune ligne inet6.

Désactiver l'IPV6 sur Ubuntu dans le fichier sysctl.conf

Corriger l’erreur Could not get lock /var/lib/dpkg/lock-frontend – open (11: Resource temporarily unavailable).

Vous tentez d’installer ou de mettre à jour un logiciel ou votre distribution avec la commande APT et vous avez ce message d’erreur :

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Corriger l'erreur Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)

Cette erreur survient généralement lorsqu’une précédente mise à jour s’est mal déroulée et le processus est bloqué. Vous avez plusieurs solutions pour résoudre ce problème.

Vous pouvez utiliser la ligne de commande Linux pour rechercher et tuer le processus en cours. Pour ce faire, utilisez la commande ci-dessous:

# ps aux | grep -i apt

Corriger l'erreur Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable).

Cela vous montrera l’identifiant du processus exécutant apt ou apt-get. Dans l’exemple ci-dessus, l’ID de processus est 3274. Vous pouvez ignorer la dernière ligne contenant «grep –color = auto».

Vous pouvez utiliser l’identifiant du processus pour le tuer avec la commande :

sudo kill -9

Ou sinon vous pouvez utilisez une méthode plus radicale. Cette commande va tuer toutes les instances d’un programme en cours d’exécution :

sudo killall apt apt-get

Grâce à la commande wget, vous allez pouvoir récupérer très rapidement votre adresse IP Publique.

Récupérer votre adresse IP publique avec wget sous Ubuntu.

Vous pourrez ensuite l’utiliser dans des scripts par exemple où pour faire des vérifications si vous utilisez une connexion VPN.

$ wget -qO- icanhazip.com

Une petite explication s’impose :

La commande  wget est un gestionnaire de téléchargement libre. Il est issu du projet GNU, il permet le téléchargement avancé de fichiers sur des réseaux et sur Internet. Par exemple, il permet de créer des miroirs de sites, ou d’effectuer des téléchargements récursifs. Son nom vient de World Wide Web et de GET qui est le nom de la commande utilisée dans le protocole HTTP pour récupérer un fichier. Il est capable de communiquer avec les protocoles HTTP et FTP. (Source Wikipédia)

La syntaxe des commandes wget est relativement simple :

wget [option] [URL]

Pour avoir plus de renseignements taper :

$ man wget

Voici le résultat de la commande :

Récupérer votre adresse IP publique avec wget sous Ubuntu.

De manière plus générale, si vous souhaitez connaitre votre IP publique lorsque vous naviguez sur un site, que ce soit chez vous ou dans votre entreprise vous pouvez aller sur ce site : http://icanhazip.com/. Pratique, simple et efficace.

That’s All.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

vel, sit justo consequat. ultricies mi, porta. risus. accumsan fringilla id nunc