ssh_scan - Vérifie la configuration et la politique de votre serveur SSH sous Linux
ssh_scan est un prototype de configuration et d'analyseur de politiques 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 et les MAC. , et KexAlgos et bien plus encore.
Il présente certains des avantages suivants :
- Il a des dépendances minimales, ssh_scan n'utilise que Ruby et BinData natifs pour faire son travail, pas de dépendances lourdes.
- C'est portable, vous pouvez utiliser ssh_scan dans un autre projet ou pour automatiser des tâches.
- Il est facile à utiliser, il suffit de le pointer vers un service SSH et d'obtenir un rapport JSON de ce qu'il prend en charge et de l'état de sa politique.
- Il est également configurable, vous pouvez créer vos propres politiques personnalisées qui répondent à vos exigences spécifiques en matière de politique.
Lecture suggérée : Comment installer et configurer le serveur OpenSSH sous Linux
Comment installer ssh_scan sous Linux
Il existe trois manières d'installer ssh_scan :
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, saisissez :
ssh_scan -t 192.168.43.198
Notez que vous pouvez également transmettre 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 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 stratégie personnalisé (la valeur par défaut est Mozilla Modern) avec -P
ou --policy [FILE]
comme ceci :
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 de ssh_scan et plus d'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 sans mot de passe SSH à 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 la prison chrootée
- Comment configurer des connexions SSH personnalisées pour simplifier l'accès à distance
Pour plus de détails, visitez le référentiel Github ssh_scan : 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-nous savoir via le formulaire de commentaires ci-dessous, y compris toute autre réflexion concernant ce guide.