웹사이트 검색

ssh_scan - Linux에서 SSH 서버 구성 및 정책을 확인합니다.


ssh_scan은 Mozilla OpenSSH 보안 가이드에서 영감을 받은 Linux 및 UNIX 서버용 프로토타입 SSH 구성 및 정책 스캐너로, 암호, MAC과 같은 SSH 구성 매개변수에 대한 합리적인 기본 정책 권장 사항을 제공합니다. , KexAlgos 등이 있습니다.

다음과 같은 이점이 있습니다.

  • 최소한의 종속성이 있으며 ssh_scan은 기본 Ruby 및 BinData만 사용하여 작업을 수행하며 과도한 종속성은 없습니다.
  • 이식성이 뛰어나 다른 프로젝트나 작업 자동화에 ssh_scan을 사용할 수 있습니다.
  • 사용하기 쉽습니다. SSH 서비스를 가리키기만 하면 지원 내용과 정책 상태에 대한 JSON 보고서를 받을 수 있습니다.
  • 또한 구성 가능하므로 특정 정책 요구 사항에 맞는 사용자 지정 정책을 직접 만들 수도 있습니다.

권장 읽기: Linux에서 OpenSSH 서버를 설치하고 구성하는 방법

Linux에 ssh_scan을 설치하는 방법

ssh_scan을 설치할 수 있는 세 가지 방법은 다음과 같습니다.

gem으로 설치하고 실행하려면 다음을 입력하세요.

----------- 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

Docker 컨테이너에서 실행하려면 다음을 입력하십시오.

docker pull mozilla/ssh_scan
docker run -it mozilla/ssh_scan /app/bin/ssh_scan -t github.com

소스에서 설치하고 실행하려면 다음을 입력하십시오.

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

Linux에서 ssh_scan을 사용하는 방법

ssh_scan을 사용하는 구문은 다음과 같습니다.

ssh_scan -t ip-address
ssh_scan -t server-hostname

예를 들어 92.168.43.198 서버의 SSH 구성 및 정책을 검색하려면 다음을 입력합니다.


ssh_scan -t 192.168.43.198

아래 옵션에 표시된 대로 [IP/Range/Hostname]을 -t 옵션에 전달할 수도 있습니다.


ssh_scan -t 192.168.43.198,200,205
ssh_scan -t test.tecmint.lan
샘플 출력

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"
      ]
    }
  }
]

-p를 사용하여 다른 포트를 지정하고, -L을 사용하여 로거를 활성화하고, -V를 사용하여 아래와 같이 세부 수준을 정의할 수 있습니다.

ssh_scan -t 192.168.43.198 -p 22222 -L ssh-scan.log -V INFO

또한 다음과 같이 -P 또는 --policy [FILE]와 함께 사용자 정의 정책 파일(기본값은 Mozilla Modern)을 사용합니다.

ssh_scan -t 192.168.43.198 -L ssh-scan.log -V INFO -P /path/to/custom/policy/file

모든 ssh_scan 사용 옵션과 추가 예시를 보려면 다음을 입력하세요.

ssh_scan -h
샘플 출력
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

SSH 서버에 대한 몇 가지 유용한 기사를 확인하세요.

  1. SSH Keygen을 사용하여 간단한 5단계로 SSH 비밀번호 없는 로그인
  2. SSH 서버 보안을 위한 5가지 모범 사례
  3. Chrooted Jail을 사용하여 특정 디렉터리에 대한 SSH 사용자 액세스를 제한합니다.
  4. 원격 액세스를 단순화하기 위해 사용자 정의 SSH 연결을 구성하는 방법

자세한 내용은 ssh_scan Github 저장소를 방문하세요: https://github.com/mozilla/ssh_scan

이 기사에서는 Linux에서 ssh_scan을 설정하고 사용하는 방법을 설명했습니다. 비슷한 도구를 알고 있나요? 이 가이드에 관한 다른 의견을 포함하여 아래 피드백 양식을 통해 알려주십시오.