Cryptage de fichier Openssl. Cryptage de fichiers avec mot de passe à l'aide d'OpenSSL. Archivage et chiffrement des répertoires

Cryptage d'un seul fichier

# openssl aes-128-cbc -salt -in fichier -out fichier.aes # chiffrer le fichier# openssl aes-128-cbc -d -salt -in file.aes ​​​​-out file # décrypter le fichier Naturellement, le fichier peut aussi être une archive.

Archivage et chiffrement des répertoires

# tar -cf - répertoire | openssl aes-128-cbc -salt -out répertoire.tar.aes # openssl aes-128-cbc -d -salt -in répertoire.tar.aes | goudron -x -f -

Idem, seul le type d'archive tar.gz

# tar -zcf - répertoire | openssl aes-128-cbc -salt -out répertoire.tar.gz.aes # zip et crypter les répertoires# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | goudron -xz -f - # décrypter les répertoires et décompresser l'archive
  • Utiliser -k mon mot de passe secret après aes-128-cbc, de sorte qu'on ne vous demande pas de mot de passe, mais gardez à l'esprit que cela est très peu sûr.
  • Utiliser aes-256-cbcà la place de aes-128-cbc pour obtenir un chiffrement plus stable, la consommation du processeur augmente.

Cryptage GPG

Alternative PGP autorisé GPL(Licence publique générale GNU). GnuPG est un moyen très connu de chiffrer et de signer des e-mails ou d'autres données, et gpg fournit également un système avancé de gestion de clés. Ces exemples ne couvrent que le cryptage des fichiers. Le plus simple est le chiffrement symétrique. Dans ce cas, le fichier est crypté à l'aide d'un mot de passe, donc quelqu'un qui connaît le mot de passe peut le décrypter, aucune clé n'est requise. GPG ajoute l'extension "* .gpg" au nom du fichier crypté. # fichier gpg -c # Crypter le fichier avec le mot de passe# fichier gpg.gpg # Décrypter le fichier ( -o un autre fichier)

Cryptage à l'aide d'une paire de clés

Pour plus d'informations, consultez la documentation GPG Quick Start, GPG / PGP Basics et gnupg. Clé privée et clé publique, la base de la cryptographie asymétrique. Choses à retenir:
  • Votre clé publique est utilisée par d'autres pour chiffrer des fichiers que, en tant que destinataire, vous seul pouvez déchiffrer (même pas celui qui l'a chiffré).
  • Votre clé privée est cryptée avec un mot de passe et est utilisée pour décrypter les fichiers cryptés avec votre clé publique. La clé privée doit être conservée en lieu sûr. N'oubliez pas que si la clé privée ou le mot de passe est perdu, les fichiers cryptés disparaîtront avec eux.
  • Un fichier de clés peut contenir plusieurs clés.
Vous devez d'abord générer une paire de clés. Les valeurs par défaut sont correctes, mais vous devrez entrer un nom, une adresse e-mail et un commentaire (facultatif). Le commentaire est utile lors de la création de plusieurs clés pour un nom/e-mail donné. De plus, vous devrez spécifier une phrase clé (exactement une phrase et non un mot). # gpg --gen-key # Cela peut prendre un certain temps Les clés sont stockées dans ~ / .gnupg / dans et dans C: / Documents and Settings /% USERNAME% / Application Data / gnupg /... sur Windows. ~ / .gnupg / pubring.gpg # Contient votre clé publique et vos clés importées~ / .gnupg / secring.gpg # Peut contenir plus d'une clé Quelques options couramment utilisées :
  • -e Crypter les données
  • -ré Décrypter les données
  • -r NAME chiffrer pour le destinataire NAME (ou "nom complet" ou " [email protégé]")
  • -une Générer une sortie clé "ascii blindé"
  • -o Sortie dans un fichier

Cryptage à usage personnel uniquement

Ne nécessite aucune exportation/importation de clé, vous les avez déjà. # gpg -e -r Fichier "Votre nom" # Chiffrer avec la clé publique# gpg -o fichier -d fichier.gpg # Décrypter. Option utilisée -o, sinon allez à sortie standard

Cryptage - déchiffrement à l'aide de clés

Tout d'abord, vous devez exporter votre clé publique afin qu'elle puisse être utilisée pour déchiffrer les données. Vous devez également importer la clé publique d'Alice pour chiffrer les fichiers pour elle. Les clés peuvent être transmises dans un fichier ascii normal. Par exemple, Alice exporte une clé, vous l'importez pour vous-même, maintenant vous pouvez chiffrer les fichiers pour elle et elle seule peut les déchiffrer. # gpg -a -o alicekey.asc --export "Alice" # Alice exportera la clé dans un fichier ASCII.# gpg --send-keys --keyserver subkeys.pgp.net KEYID # Alice met la clé sur le serveur.# gpg --import alicekey.asc # Vous importez vous-même la clé.# gpg --search-keys --keyserver subkeys.pgp.net "Alice" # Ou le récupérer sur le serveur.# gpg -e -r Fichier "Alice" # Crypter le fichier pour Alice.# gpg -d fichier.gpg -o fichier # Décryptez le fichier crypté par Alice pour vous.

Gestion des clés

# gpg --list-keys # Liste des clés publiques avec KEYIDS KEYID suit "/" par exemple pour : pub 1024D / D12B77CE - KEYID est D12B77CE# gpg --gen-revoke "Votre nom" # Générer la CRL (liste de révocation des certificats)# gpg --list-secret-keys # Liste des clés privées# gpg --delete-keys NOM # Supprimer la clé publique du "porte-clés" local# gpg --delete-secret-key NOM # Supprimer la clé privée du "porte-clés" local# gpg --fingerprint KEYID # Afficher l'empreinte digitale de la clé# gpg --edit-key KEYID # Modifier la clé (par exemple, signature ou ajouter/supprimer un e-mail)

Il existe de nombreuses situations dans lesquelles vous devez crypter un certain fichier ou dossier. Par exemple, si les données sont transmises sur des canaux ouverts ou stockées sur un support externe. Beaucoup (y compris moi-même) utilisent truecrypt, mais le but principal de ce programme est de travailler avec des partitions cryptées, ce n'est donc pas très bon dans ce cas.

Pour de telles tâches, OpenSSL est tout à fait approprié - une solution multiplateforme fiable. OpenSSL prend en charge divers algorithmes de cryptage, en plus il est installé par défaut sur de nombreux systèmes d'exploitation, et l'installation sur d'autres est facile.

Sous habrakat - les bases de l'utilisation du cryptage symétrique et asymétrique dans OpenSSL, ainsi que quelques scripts qui simplifient le cryptage asymétrique avec une clé à usage unique.

Le moyen le plus simple de protéger vos données avec OpenSSL est le cryptage symétrique. Les commandes suivantes cryptent et décryptent le fichier documents.zip à l'aide d'AES avec une clé de 256 bits :

Openssl enc -aes-256-cbc -salt -in documents.zip -out documents.enc
openssl enc -d -aes-256-cbc -in documents.enc -out documents.zip

Le problème avec ces commandes peut être qu'elles nécessitent un mot de passe. Il y a des situations où cela n'est pas souhaitable. Par exemple, sauvegarde / cryptage automatique des données selon un calendrier, ou si les données sont cryptées par une personne et décryptées par une autre.

Le cryptage à clé publique a été inventé pour de tels cas. En général, vous devrez créer des clés publiques et privées. La première commande générera la clé privée private.pem, la seconde générera la clé publique public.pem :

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out public.pem

En conséquence, vous obtenez une paire de clés RSA de 2048 bits. Malheureusement, dans le système RSA, la taille des données chiffrées est limitée par la taille de la clé, vous ne pouvez donc pas chiffrer plus de 2 Ko de données. Il existe un moyen de contourner cela - les informations sont d'abord cryptées avec un algorithme symétrique (comme celui utilisé ci-dessus) à l'aide d'une clé à usage unique. Cette clé à usage unique est ensuite chiffrée avec la clé publique. Lors du déchiffrement, la clé à usage unique est déchiffrée en privé. Plus à ce sujet a déjà été très bien écrit dans.

Le script suivant aidera à automatiser le cryptage, à la sortie duquel vous recevrez une clé unique et des données (encrypt.sh) sous forme cryptée :

NOM DE FICHIER = "$ 1"
CLÉ PUBLIQUE = "$ 2"
SESSIONKEY = "$ 3"
RÉSULTAT = "$ 4"

# Générer la clé symétrique aléatoire
PASSIZE = 30
if [-c / dev / urandom] ; ensuite
KEY = `head -c 30 / dev / urandom | openssl enc -base64`
autre
CLÉ = `openssl rand -base64 30`
Fi
exporter la CLÉ

# Crypter la clé symétrique à l'aide de la clé publique
openssl rsautl -encrypt -inkey "$ PUBLICKEY" -out "$ SESSIONKEY" -pubin<CLÉ $
FEO

# Crypter le fichier
openssl enc -aes-256-cbc -pass env: KEY -in "$ FILENAME" -out "$ RESULT"

La commande suivante utilise la clé publique public.pem pour chiffrer le fichier documents.zip. Il générera une clé à usage unique cryptée session.key et des données cryptées documents.enc :

./encrypt.sh documents.zip public.pem session.key documents.enc

Script de décryptage (decrypt.sh) :

CLÉ PRIVÉE = "$ 1"
SESSIONKEY = "$ 2"
CRYPTÉE = "$ 3"
DÉCRYPTÉ = "$ 4"

# Décrypter la clé symétrique à l'aide de la clé privée
KEY = `openssl rsautl -decrypt -inkey" $ PRIVATEKEY "-in" $ SESSIONKEY "`
exporter la CLÉ

# Décrypter le fichier
openssl enc -aes-256-cbc -d -pass env: KEY -in "$ ENCRYPTED" -out "$ DECRYPTED"

La commande de décryptage utilise la clé privée private.pem et la clé à usage unique session.key pour décrypter le fichier documents.enc. Il va générer un fichier documents.zip :

./decrypt.sh private.pem session.key documents.enc documents.zip

Comme vous pouvez le voir, le chiffrement à clé publique peut être presque aussi simple que le chiffrement symétrique. Mais il existe un moyen encore plus simple. Le blog SbF₅ m'a incité à écrire cet article. Son auteur (sans doute plus sophistiqué que moi en bash) a écrit un script qui archive un dossier, le crypte avec une clé publique et génère un autre script contenant tout ce dont vous avez besoin : une clé à usage unique, des données et les commandes de décryptage proprement dites. De plus, le script peut générer une paire de clés RSA pour vous :

./encrypt-file.sh -keys public.pem private.pem
./encrypt-file.sh dossier public.pem> decrypt-folder.sh
chmod + x déchiffrer-dossier.sh
./decrypt-folder.sh private.pem> folder.tar

Dans cet exemple, nous avons d'abord généré une paire de clés. Après cela, le dossier du dossier a été chiffré dans le script decrypt-folder.sh, puis déchiffré dans l'archive folder.tar. Un inconvénient possible de cette méthode est que les données dans decrypt-folder.sh sont stockées au format BASE64, et donc leur taille augmente.

UPD Déplacé sur le blog Sécurité de l'information.

Il existe de nombreuses situations dans lesquelles vous devez crypter un certain fichier ou dossier. Par exemple, si les données sont transmises sur des canaux ouverts ou stockées sur un support externe. Beaucoup (y compris moi-même) utilisent truecrypt, mais le but principal de ce programme est de travailler avec des partitions cryptées, ce n'est donc pas très bon dans ce cas.

Pour de telles tâches, OpenSSL est tout à fait approprié - une solution multiplateforme fiable. OpenSSL prend en charge divers algorithmes de cryptage, en plus il est installé par défaut sur de nombreux systèmes d'exploitation, et l'installation sur d'autres est facile.

Sous habrakat - les bases de l'utilisation du cryptage symétrique et asymétrique dans OpenSSL, ainsi que quelques scripts qui simplifient le cryptage asymétrique avec une clé à usage unique.

Le moyen le plus simple de protéger vos données avec OpenSSL est le cryptage symétrique. Les commandes suivantes cryptent et décryptent le fichier documents.zip à l'aide d'AES avec une clé de 256 bits :

Openssl enc -aes-256-cbc -salt -in documents.zip -out documents.enc
openssl enc -d -aes-256-cbc -in documents.enc -out documents.zip

Le problème avec ces commandes peut être qu'elles nécessitent un mot de passe. Il y a des situations où cela n'est pas souhaitable. Par exemple, sauvegarde / cryptage automatique des données selon un calendrier, ou si les données sont cryptées par une personne et décryptées par une autre.

Le cryptage à clé publique a été inventé pour de tels cas. En général, vous devrez créer des clés publiques et privées. La première commande générera la clé privée private.pem, la seconde générera la clé publique public.pem :

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out public.pem

En conséquence, vous obtenez une paire de clés RSA de 2048 bits. Malheureusement, dans le système RSA, la taille des données chiffrées est limitée par la taille de la clé, vous ne pouvez donc pas chiffrer plus de 2 Ko de données. Il existe un moyen de contourner cela - les informations sont d'abord cryptées avec un algorithme symétrique (comme celui utilisé ci-dessus) à l'aide d'une clé à usage unique. Cette clé à usage unique est ensuite chiffrée avec la clé publique. Lors du déchiffrement, la clé à usage unique est déchiffrée en privé. Plus de détails à ce sujet ont déjà été très bien écrits dans l'article sur Habré.

Le script suivant aidera à automatiser le cryptage, à la sortie duquel vous recevrez une clé unique et des données (encrypt.sh) sous forme cryptée :

NOM DE FICHIER = "$ 1"
CLÉ PUBLIQUE = "$ 2"
SESSIONKEY = "$ 3"
RÉSULTAT = "$ 4"

# Générer la clé symétrique aléatoire
PASSIZE = 30
if [-c / dev / urandom] ; ensuite
KEY = `head -c 30 / dev / urandom | openssl enc -base64`
autre
CLÉ = `openssl rand -base64 30`
Fi
exporter la CLÉ

# Crypter la clé symétrique à l'aide de la clé publique
openssl rsautl -encrypt -inkey "$ PUBLICKEY" -out "$ SESSIONKEY" -pubin<CLÉ $
FEO

# Crypter le fichier
openssl enc -aes-256-cbc -pass env: KEY -in "$ FILENAME" -out "$ RESULT"

La commande suivante utilise la clé publique public.pem pour chiffrer le fichier documents.zip. Il générera une clé à usage unique cryptée session.key et des données cryptées documents.enc :

./encrypt.sh documents.zip public.pem session.key documents.enc

Script de décryptage (decrypt.sh) :

CLÉ PRIVÉE = "$ 1"
SESSIONKEY = "$ 2"
CRYPTÉE = "$ 3"
DÉCRYPTÉ = "$ 4"

# Décrypter la clé symétrique à l'aide de la clé privée
KEY = `openssl rsautl -decrypt -inkey" $ PRIVATEKEY "-in" $ SESSIONKEY "`
exporter la CLÉ

# Décrypter le fichier
openssl enc -aes-256-cbc -d -pass env: KEY -in "$ ENCRYPTED" -out "$ DECRYPTED"

La commande de décryptage utilise la clé privée private.pem et la clé à usage unique session.key pour décrypter le fichier documents.enc. Il va générer un fichier documents.zip :

./decrypt.sh private.pem session.key documents.enc documents.zip

Comme vous pouvez le voir, le chiffrement à clé publique peut être presque aussi simple que le chiffrement symétrique. Mais il existe un moyen encore plus simple. Le blog SbF₅ m'a incité à écrire cet article. Son auteur (sans doute plus sophistiqué que moi en bash) a écrit un script qui archive un dossier, le crypte avec une clé publique et génère un autre script contenant tout ce dont vous avez besoin : une clé à usage unique, des données et les commandes de décryptage proprement dites. De plus, le script peut générer une paire de clés RSA pour vous :

./encrypt-file.sh -keys public.pem private.pem
./encrypt-file.sh dossier public.pem> decrypt-folder.sh
chmod + x déchiffrer-dossier.sh
./decrypt-folder.sh private.pem> folder.tar

Dans cet exemple, nous avons d'abord généré une paire de clés. Après cela, le dossier du dossier a été chiffré dans le script decrypt-folder.sh, puis déchiffré dans l'archive folder.tar. Un inconvénient possible de cette méthode est que les données dans decrypt-folder.sh sont stockées au format BASE64, et donc leur taille augmente.

UPD Déplacé sur le blog Sécurité de l'information.

OpenSSL Est un puissant ensemble d'outils qui peuvent être utilisés pour cryptage des fichiers et des messages.

Si vous souhaitez utiliser le même mot de passe que pour cryptage en texte clair, et pour sa suite décryptage, alors vous devez utiliser algorithme de chiffrement symétrique.

A partir de cet article, vous apprendrez comment crypter et décrypter les fichiers et les messages avec un mot de passe à partir de la ligne de commande sous Linux en utilisant OpenSSL.

Comment : crypter le fichier

$ openssl enc -aes-256-cbc -salt -in fichier.txt-en dehors fichier.txt.enc

256 bits AES est un algorithme cryptographique utilisé par le gouvernement des États-Unis pour crypter les informations à leur niveau le plus secret.

Option -sel(sel) doit être utilisé TOUJOURS si la clé secrète est générée à partir d'un mot de passe.

Sans utiliser l'option -sel, il est possible de mener une attaque par dictionnaire très efficace, qui conduira à la divulgation de données cryptées. La raison en est que sans ajouter le « sel », le même mot de passe générera toujours la même clé secrète.

Lorsque salt est utilisé, les 8 premiers octets sont réservés pour salt. Il est généré de manière aléatoire lorsque le fichier est crypté et est lu à partir du fichier crypté lors du décryptage.

Comment : décrypter le fichier

$ openssl enc -aes-256-cbc -ré-dans fichier.txt.enc-en dehors fichier.txt

Encodage et décodage Base64

L'encodage Base64 est une méthode standard pour convertir des informations binaires 8 bits en un sous-ensemble limité de caractères ASCII pour un transport sécurisé entre les systèmes de messagerie et d'autres systèmes qui ne prennent pas en charge le format 8 bits.

Par défaut, le fichier crypté est créé au format binaire. Si vous allez l'envoyer par e-mail, IRC, etc., vous devez l'enregistrer encodé en Base64. Pour crypter un fichier encodé en Base64, ajoutez l'option -une:

$ openssl enc -aes-256-cbc -salt -une-dans fichier.txt-en dehors fichier.txt.enc

Options La description
-une Indique à OpenSSL que les données chiffrées sont encodées en Base64.

Aussi, possibilité -une, doit être spécifié lors du déchiffrement :

$ openssl enc -aes-256-cbc -ré -une-dans fichier.txt.enc-en dehors fichier.txt

Crypter / Décrypter sans invite de mot de passe

Étant donné que le mot de passe est rendu visible, cette méthode ne doit être utilisée que lorsque la sécurité n'est pas importante.

Par défaut, l'utilisateur est invité à saisir un mot de passe de manière interactive.

Lors de l'écriture d'un script BASH, vous souhaiterez peut-être faire en sorte que le mot de passe soit saisi de manière non interactive à l'aide de l'option -k.

Le cryptage à clé publique a été inventé pour de tels cas.

Chiffrez le fichier à l'aide du mot de passe fourni :

$ openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.enc -k PASS

Décryptez le fichier à l'aide du mot de passe fourni :

$ openssl enc -aes-256-cbc -d -in file.txt.enc -out file.txt -k PASS

Des outils comme OpenSSH et OpenSSL n'ont pas besoin d'être présentés. Ce sont les amis éternels de tout administrateur système et de nombreux utilisateurs avancés. Cependant, tout le monde ne connaît pas leur véritable pouvoir et leurs capacités accumulées au fil des années de développement. Aujourd'hui, vous découvrirez de nombreuses façons intéressantes d'utiliser ces programmes.

OpenSSH

Remplaçant Telnet qui fuit, OpenSSH est toujours le système de gestion à distance n ° 1 pour la sécurité et la facilité d'utilisation. Tout le monde est capable de le comprendre, même les théières les plus chromées, mais l'écrasante majorité des utilisateurs utilise le minimum de ses capacités. Ignorons les histoires sur les clés, la redirection de port, le proxy et d'autres astuces utiles mais bien connues et considérons des manières réellement intéressantes et peu courantes d'utiliser cet outil.

INFO

Une liste complète des commandes OpenSSL peut être consultée à l'aide des paramètres suivants : list-standart-commands, list-message-digest-commands, list-cipher-commands.

L'astuce numéro un est donc les connexions multiples. OpenSSH est capable de gérer de nombreuses connexions simultanées à la même machine. En règle générale, les utilisateurs exécutent simplement une commande et attendent qu'elle se termine pour exécuter la suivante. Heureusement, ce problème peut être facilement contourné en divisant une connexion en plusieurs sessions. Ajoutez simplement les lignes suivantes à la configuration ssh (~/.ssh/config) :

ControlMaster auto ControlPath ~ / .ssh / mux_% h_% p_% r

Vous pouvez créer autant de connexions que vous le souhaitez sur le même serveur, sans perdre de temps à vous ré-authentifier.


L'astuce numéro deux consiste à créer des connexions proxy. Disons que vous ne pouvez pas créer directement une connexion au serveur SSH, mais vous pouvez utiliser un autre hôte pour cela, auquel vous avez également un accès SSH. Ajoutez les lignes suivantes à votre configuration :

ForwardAgent oui Hôte hôte HostName host.com ProxyCommand ssh proxy-host.com \ netcat -q 600% h% p

La commande ssh host créera une connexion au serveur host.com via le serveur proxy-host.com.

L'astuce numéro trois va au-delà de l'isolement HTTP. De nombreuses organisations non seulement réduisent le trafic qu'elles n'aiment pas, mais forcent également les utilisateurs à se connecter uniquement en utilisant le protocole HTTP. Cette injustice est facilement contournée avec le tire-bouchon (www.agroman.net/corkscrew/), qui peut tunneler le trafic SSH sur HTTP. Installez-le simplement sur votre machine et ajoutez les lignes suivantes à la configuration (où proxy.com et 80 sont l'adresse et le port du proxy HTTP externe) :

Hôte * ProxyCommand tire-bouchon proxy.com 80% h% p

Toutes les connexions passeront désormais par le proxy HTTP spécifié.

Astuce numéro quatre - test de bande passante réseau. Pour tester la vitesse de connexion, il n'est pas nécessaire d'installer un logiciel spécialisé, l'utilitaire pv et le bon vieux SSH suffisent :

$ sudo apt-get install pv $ oui | pv | ssh host.com "cat> / dev / null"

Astuce numéro cinq - analyse du trafic réseau à distance. Presque tous les systèmes UNIX ont un renifleur de réseau tcpdump, mais la lecture de ses journaux est assez fastidieuse. Les fonctionnalités OpenSSH aident à simplifier l'analyse du trafic :

$ ssh [email protégé] tcpdump -w - "port! 22" \ | wireshark -k -i -

Désormais, tout le trafic passant par host.com sera visible dans la fenêtre graphique wireshark sur votre machine.

Astuce numéro six - transférer des fichiers à basse vitesse. Parfois, il est nécessaire de transférer un grand nombre de fichiers vers une machine distante, mais faites-le pour que le processus n'interfère pas avec le réseau. Dans ce cas, vous pouvez utiliser l'outil cstream :

$ sudo apt-get install cstream $ tar -cj / backup | cstream -t 512k | \ hôte ssh "tar -xj -C / backup"

Astuce numéro sept - ouvrez toujours la session SSH. Les utilisateurs d'ordinateurs portables, dont la connexion au réseau peut ne pas être permanente, doivent redémarrer le client SSH à chaque fois que le réseau apparaît, et le tuer lorsque la connexion est perdue. Cela peut être évité en utilisant l'outil autossh, qui maintiendra l'illusion d'une connexion permanente au serveur, rétablissant la connexion lorsque le réseau est disponible :

$ sudo apt-get install autossh $ autossh -M50000 -t server.example.com \ "screen -raAd mysession"

Astuce numéro huit - exécuter une commande sur plusieurs serveurs en même temps. Les commentaires sont superflus :

$ echo "temps de disponibilité" | pipi "ssh host1" "ssh host2" \ "ssh host3"

Astuce numéro neuf - comparaison de fichiers à distance. Il est souvent nécessaire de comparer les versions locale et distante d'une configuration, mais la copie de fichiers dans les deux sens est peu pratique et prend du temps. Dans ce cas, vous pouvez utiliser la commande suivante :

$ ssh [email protégé] cat / chemin / vers / distant / fichier | \ diff / chemin / vers / local / fichier -

La même chose peut être faite pour deux fichiers situés sur des serveurs différents :

$ diff<(ssh host1 cat /etc/apt/sources.list) \ <(ssh host2 cat /etc/apt/sources.list)

cpu0 : RNG AES

Résultats de référence des outils cryptographiques intégrés au CPU de la plate-forme VIA Eden (instructions du processeur pour travailler avec l'algorithme de chiffrement symétrique par bloc AES) :

% vitesse openssl -elapsed -evp aes-256-cbc type 16 octets 64 octets 256 octets 1024 octets 8192 octets aes-256-cbc 21780.33k79591.78k 198578.08k 317102.05k 383371.05k

Astuce numéro 10 - afficher les journaux de plusieurs machines en même temps. En utilisant multitail et SSH, vous pouvez facilement afficher les journaux de deux serveurs en même temps :

$ sudo apt-get install multitail $ multitail -l "ssh host1" tail -f \ /var/log/apache2/error.log "" -l "ssh host2 \" tail -f / var / log / apache2 / error. Journal ""

Astuce numéro 11 - copier des fichiers d'une machine distante à une autre via la machine locale. Si deux machines distantes ne peuvent pas établir de communication entre elles, les fichiers entre elles peuvent être transférés en utilisant votre ordinateur comme lien intermédiaire :

$ ssh [email protégé]"cd / répertoire && tar -cf -." | \ ssh [email protégé]"cd / répertoire && tar -xf -"

Astuce numéro 12 - copier la sortie d'une commande à distance dans le presse-papiers. Il est souvent nécessaire de copier le résultat d'une commande à distance dans le presse-papiers afin de le coller dans un e-mail, un message de forum, etc. Le moyen le plus simple de le faire est d'utiliser l'utilitaire xclip :

$ ssh [email protégé] chat /fichier.txt | xclip

Astuce numéro 13 - synchronisation de l'heure avec SSH. Si la machine n'a pas accès au serveur NTP ou que le client NTP n'est pas installé dessus, vous pouvez synchroniser l'heure entre les machines comme suit :

# date --set = "$ (ssh [email protégé] Date) "

Astuce numéro 14 - installer des packages d'une machine distante sur une machine locale. Il est souvent nécessaire de synchroniser deux machines pour qu'elles aient le même ensemble de packages installés. Il est difficile de le faire en utilisant des méthodes standard, mais en utilisant SSH, c'est aussi simple que de décortiquer des poires :

# ssh remotehost "dpkg --get-selections" | \ dpkg --set-selections && désélectionner l'installation

Astuce n°15 - Capture d'écran à distance. Il est très facile d'obtenir une image du serveur X à partir d'une machine distante en utilisant le package graphique ImageMagick standard :

# ssh [email protégé]"DISPLAY =: 0.0 import -window \ root -format png -" | afficher -format png -

Astuce numéro 16 - accélérer le transfert de données. Si les machines auxquelles la connexion est établie se trouvent à l'intérieur d'un réseau sécurisé connu (par exemple, un bureau ou un domicile), le transfert de données SSH peut être légèrement accéléré en utilisant un algorithme de cryptage moins puissant. Pour ce faire, ajoutez les lignes suivantes au fichier de configuration :

Hôte host.com Chiffres arcfour256 MAC [email protégé]

Astuce numéro 17 - Sortie audio d'une machine distante vers une machine locale. Parfois, vous souhaitez obtenir du son avec l'image du bureau de la machine distante. Cela se fait avec le dd trivial :

$ dd si = / dev / dsp | ssh -c arcfour -C \ [email protégé] jj de = / dev / dsp

Astuce numéro 18 - exécuter un script local sur une machine distante. Souvent, vous devez exécuter un script sur une machine distante, mais le copier n'est pas du tout nécessaire, exécutez simplement la commande simple suivante :

$ ssh -T [email protégé] < script.sh

OpenSSL

OpenSSL est un système de protection et de certification des données qui a été développé en réponse à la création du Secure Socket Layer (SSL) par Netscape. Contrairement aux idées reçues, OpenSSL n'est pas du tout un outil d'implémentation du protocole SSL et peut effectuer une grande variété de fonctions, dont la gestion des clés et des certificats, le calcul des hachages, etc. Voici juste une liste incomplète des capacités de ce moissonneur cryptographique :

  • création et gestion des clés RSA et DSA (commandes rsa, dsa, dsaparam) ;
  • création de certificats au format x509, génération de demandes de certification, restauration (commandes x509, req, verify, ca, crl, pks12, pks7) ;
  • cryptage de données symétrique et asymétrique (commandes enc, rsautl) ;
  • calcul de hachage (commande dgst);
  • travailler avec S/MIME (commande s/mime).

OpenSSL peut également être utilisé pour vérifier les serveurs et les clients SSL à l'aide de commandes spéciales s client/s serveur et de tester la vitesse de divers algorithmes (vitesse de commande).

Nous avons écrit plus d'une fois sur le travail avec le package OpenSSL, nous ne considérerons donc pas d'exemples standard de son utilisation, tels que la création de hachages et de certificats, mais nous passerons immédiatement à des astuces plus sérieuses.


Le temps, c'est de l'argent

L'une des caractéristiques intéressantes d'OpenSSL est qu'il peut comparer les algorithmes utilisés et la vitesse d'établissement d'une connexion SSL. La commande s_time standard est destinée à cela. Pour estimer la vitesse d'établissement d'une connexion SSL, vous devez l'appliquer à la commande openssl :

$ openssl s_time -connect gmail.com:443 \ -www /test.html -new 103 connexions en 0,75 s ; 137,33 connexions/utilisateur sec, octets lus 42436 103 connexions en 31 secondes réelles, 412 octets lus par connexion

La même chose peut être faite avec les algorithmes les plus robustes :

$ openssl s_time -ssl3 -cipher HIGH \ -connect gmail.com:443 -www / -new 99 connexions en 0,73 s ; 135,62 connexions/utilisateur sec, octets lus 40 788 99 connexions en 31 secondes réelles, 412 octets lus par connexion

Ces deux commandes permettent de déterminer le débit maximum du serveur SSL. Mais un moyen encore plus intéressant consiste à tester tous les algorithmes pris en charge. Pour ce faire, nous devrons recourir à des scripts :

IFS = ":" pour c dans $ (openssl ciphers -ssl3 RSA); do echo $ c openssl s_time -connect host: 443 -www / -new \ -time 10 -cipher $ c 2> & 1 | grep octets echo fait

Cette commande permet de mesurer la vitesse d'établissement d'une connexion SSL à l'aide de divers algorithmes de cryptage, qui peuvent être utilisés, par exemple, pour régler un serveur SSL. Si vous n'avez pas encore de serveur SSL, il est facile de l'émuler en utilisant OpenSSL lui-même. Lancez le serveur OpenSSL sur la machine serveur :