ssh_scan - Vérifie la configuration et la politique de votre serveur SSH sous Linux
ssh_scan s’agit d’un prototype d’analyseur de configuration et de politique SSH facile à utiliser pour les serveurs Linux et UNIX, inspiré du Guide de sécurité Mozilla OpenSSH, qui fournit une recommandation de politique de base raisonnable pour les paramètres de configuration SSH tels que les chiffrements, les MAC et les KexAlgos et bien plus encore.
Il présente certains des avantages suivants :
- Il a des dépendances minimales, ssh_scan n’utilise que des Ruby et BinData natifs pour faire son travail, sans dépendances lourdes.
- Il est portable, vous pouvez l’utiliser ssh_scan dans un autre projet ou pour l’automatisation de tâches.
- Il est facile à utiliser, il suffit de le pointer vers un service SSH et d’obtenir un rapport JSON sur ce qu’il prend en charge et l’état de sa politique.
- Il est également configurable, vous pouvez créer vos propres politiques personnalisées qui répondent à vos exigences de politique spécifiques.
Suggéré pour lire : Comment installer et configurer OpenSSH Server sous Linux
Comment installer ssh_scan sous Linux
Il y a trois façons de ssh_scan installer :
Pour installer et exécuter en tant que gem, tapez :
----------- On Debian/Ubuntu -----------
sudo apt-get install ruby gem
sudo gem install ssh_scan
----------- On CentOS/RHEL -----------
yum install ruby rubygem
gem install ssh_scan
Pour exécuter à partir d’un conteneur Docker, tapez :
# docker pull mozilla/ssh_scan
docker run -it mozilla/ssh_scan /app/bin/ssh_scan -t github.com
Pour installer et exécuter à partir des sources, tapez :
# git clone https://github.com/mozilla/ssh_scan.git
cd ssh_scan
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
rvm install 2.3.1
rvm use 2.3.1
gem install bundler
bundle install
./bin/ssh_scan
Comment utiliser ssh_scan sous Linux
La syntaxe d’utilisation de ssh_scan est la suivante :
$ ssh_scan -t ip-address
ssh_scan -t server-hostname
Par exemple, pour analyser les configurations SSH et la politique du serveur 92.168.43.198, entrez :
ssh_scan -t 192.168.43.198
Notez que vous pouvez également passer un [IP/Range/Hostname] à l’option -t, comme indiqué dans les options ci-dessous :
ssh_scan -t 192.168.43.198,200,205
ssh_scan -t test.tecmint.lan
Exemple de sortie
I, [2017-05-09T10:36:17.913644 #7145] INFO -- : You're using the latest version of ssh_scan 0.0.19
[
{
"ssh_scan_version": "0.0.19",
"ip": "192.168.43.198",
"port": 22,
"server_banner": "SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1",
"ssh_version": 2.0,
"os": "ubuntu",
"os_cpe": "o:canonical:ubuntu:16.04",
"ssh_lib": "openssh",
"ssh_lib_cpe": "a:openssh:openssh:7.2p2",
"cookie": "68b17bcca652eeaf153ed18877770a38",
"key_algorithms": [
"[email ",
"ecdh-sha2-nistp256",
"ecdh-sha2-nistp384",
"ecdh-sha2-nistp521",
"diffie-hellman-group-exchange-sha256",
"diffie-hellman-group14-sha1"
],
"server_host_key_algorithms": [
"ssh-rsa",
"rsa-sha2-512",
"rsa-sha2-256",
"ecdsa-sha2-nistp256",
"ssh-ed25519"
],
"encryption_algorithms_client_to_server": [
"[email ",
"aes128-ctr",
"aes192-ctr",
"aes256-ctr",
"[email ",
"[email "
],
"encryption_algorithms_server_to_client": [
"[email ",
"aes128-ctr",
"aes192-ctr",
"aes256-ctr",
"[email ",
"[email "
],
"mac_algorithms_client_to_server": [
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"hmac-sha2-256",
"hmac-sha2-512",
"hmac-sha1"
],
"mac_algorithms_server_to_client": [
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"[email ",
"hmac-sha2-256",
"hmac-sha2-512",
"hmac-sha1"
],
"compression_algorithms_client_to_server": [
"none",
"[email "
],
"compression_algorithms_server_to_client": [
"none",
"[email "
],
"languages_client_to_server": [
],
"languages_server_to_client": [
],
"hostname": "tecmint",
"auth_methods": [
"publickey",
"password"
],
"fingerprints": {
"rsa": {
"known_bad": "false",
"md5": "0e:d0:d7:11:f0:9b:f8:33:9c:ab:26:77:e5:66:9e:f4",
"sha1": "fc:8d:d5:a1:bf:52:48:a6:7e:f9:a6:2f:af:ca:e2:f0:3a:9a:b7:fa",
"sha256": "ff:00:b4:a4:40:05:19:27:7c:33:aa:db:a6:96:32:88:8e:bf:05:a1:81:c0:a4:a8:16:01:01:0b:20:37:81:11"
}
},
"start_time": "2017-05-09 10:36:17 +0300",
"end_time": "2017-05-09 10:36:18 +0300",
"scan_duration_seconds": 0.221573169,
"duplicate_host_key_ips": [
],
"compliance": {
"policy": "Mozilla Modern",
"compliant": false,
"recommendations": [
"Remove these Key Exchange Algos: diffie-hellman-group14-sha1",
"Remove these MAC Algos: [email , [email , [email , hmac-sha1",
"Remove these Authentication Methods: password"
],
"references": [
"https://wiki.mozilla.org/Security/Guidelines/OpenSSH"
]
}
}
]
Vous pouvez utiliser -p pour spécifier un port différent, -L pour activer l’enregistreur d’événements et -V pour définir le niveau de verbosité, comme indiqué ci-dessous :
$ ssh_scan -t 192.168.43.198 -p 22222 -L ssh-scan.log -V INFO
De plus, utilisez un fichier de politique personnalisé (par défaut Mozilla Modern) avec l’option -P ou --policy [FILE] comme suit :
$ ssh_scan -t 192.168.43.198 -L ssh-scan.log -V INFO -P /path/to/custom/policy/file
Tapez ceci pour afficher toutes les options d’utilisation ssh_scan et d’autres exemples :
$ ssh_scan -h
Exemple de sortie
ssh_scan v0.0.17 (https://github.com/mozilla/ssh_scan)
Usage: ssh_scan [options]
-t, --target [IP/Range/Hostname] IP/Ranges/Hostname to scan
-f, --file [FilePath] File Path of the file containing IP/Range/Hostnames to scan
-T, --timeout [seconds] Timeout per connect after which ssh_scan gives up on the host
-L, --logger [Log File Path] Enable logger
-O, --from_json [FilePath] File to read JSON output from
-o, --output [FilePath] File to write JSON output to
-p, --port [PORT] Port (Default: 22)
-P, --policy [FILE] Custom policy file (Default: Mozilla Modern)
--threads [NUMBER] Number of worker threads (Default: 5)
--fingerprint-db [FILE] File location of fingerprint database (Default: ./fingerprints.db)
--suppress-update-status Do not check for updates
-u, --unit-test [FILE] Throw appropriate exit codes based on compliance status
-V [STD_LOGGING_LEVEL],
--verbosity
-v, --version Display just version info
-h, --help Show this message
Examples:
ssh_scan -t 192.168.1.1
ssh_scan -t server.example.com
ssh_scan -t ::1
ssh_scan -t ::1 -T 5
ssh_scan -f hosts.txt
ssh_scan -o output.json
ssh_scan -O output.json -o rescan_output.json
ssh_scan -t 192.168.1.1 -p 22222
ssh_scan -t 192.168.1.1 -p 22222 -L output.log -V INFO
ssh_scan -t 192.168.1.1 -P custom_policy.yml
ssh_scan -t 192.168.1.1 --unit-test -P custom_policy.yml
Découvrez quelques articles utiles sur le serveur SSH :
- Connexion SSH sans mot de passe à l’aide de SSH Keygen en 5 étapes faciles
- 5 bonnes pratiques pour sécuriser le serveur SSH
- Restreindre l’accès des utilisateurs SSH à certains répertoires à l’aide de Chrooted Jail
- Comment configurer des connexions SSH personnalisées pour simplifier l’accès à distance
Pour plus de détails, rendez-vous sur ssh_scan dépôt Github : https://github.com/mozilla/ssh_scan
Dans cet article, nous vous avons montré comment configurer et utiliser ssh_scan sous Linux. Connaissez-vous des outils similaires ? Faites-le nous savoir via le formulaire de commentaires ci-dessous, y compris toute autre réflexion concernant ce guide.