Recherche de site Web

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 :

  1. Connexion sans mot de passe SSH à l'aide de SSH Keygen en 5 étapes faciles
  2. 5 bonnes pratiques pour sécuriser le serveur SSH
  3. Restreindre l'accès des utilisateurs SSH à certains répertoires à l'aide de la prison chrootée
  4. 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.