만약 당신이 SSH 인증서를 사용하지 않았다면 당신의 SSH가 틀렸을 것입니다 | 3회: 이상적인 SSH 흐름

지난 2회에서 우리는 특권 방문을 어떻게 더 잘 관리하는지 소개했다.오늘 우리는 인증서와 기존 신분 제공자를 사용하여 단일 로그인 접근을 하는 이상적인 SSH 흐름을 볼 수 있습니다.

이상적인 SSH 흐름


SSH 인증서 인증은 이상적인 SSH 흐름의 기초입니다.
SSH의 경우 사용자가 먼저 터미널에서 로그인 명령을 실행합니다(예: step ssh login).
$ step ssh login
Your default web browser has been opened for you to login: https://accounts.google.com/...
브라우저가 열리고 SSO 흐름이 조직의 ID 공급업체에서 시작됩니다.

웹 기반의 단일 로그인 흐름은 강력한 MFA(예를 들어 FIDO U2F)와 귀하의 신분 공급자가 제공하는 다른 고급 신분 검증 기능을 쉽게 이용할 수 있습니다.사용자는 익숙한 절차를 사용하여 로그인하고 규범 신분 제공 프로그램에서 사용자를 삭제하면 SSH 접근이 신속하게 종료될 수 있습니다.
사용자가 SSO를 완료하면 OIDC ID 토큰과 같은 토큰이 로그인 유틸리티에 반환됩니다.이 유틸리티는 새 키 쌍을 생성하고 인증서 요청에 대한 인증과 인증을 불러오는 영패를 사용하여 CA로부터 인증서 서명을 요청합니다.
CA가 반환하는 인증서의 유효기간은 영업일 기준 16-20시간입니다.로그인 유틸리티는 서명 인증서와 해당하는 개인 키를 사용자의 ssh-agent에 자동으로 추가합니다.
사용자는 이런 세부 사항을 알 필요가 없다.그들이 알아야 할 것은 SSH를 사용하기 위해서는 step ssh login을 먼저 실행해야 한다는 것이다.완료되면 일반 사용자처럼 SSH를 사용할 수 있습니다.
$ ssh prod01.example.com
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1036-gcp x86_64)

Last login: Wed Sep 11 04:04:51 2019 from 98.210.132.79
mmalone@prod01:~$
브라우저 쿠키와 마찬가지로 이 흐름에서 발급된 단기 인증서는 짧은 증명서로 근무일만 지속됩니다.사이트에 로그인하는 것과 마찬가지로 SSH에 로그인하면 세션을 만들 수 있습니다.이것은 간단한 과정으로 매일 최대 한 번만 완성할 수 있다.이것은 빈번하지 않다. 강력한 다기능 분석은 낙담하거나 알레르기가 없는 사용자를 사용할 수 있다.
사용자가 로그인할 때마다 디스크에 접촉하지 않는 새 키와 인증서가 자동으로 생성됩니다.ssh-agent을 직접 삽입하면 사용자와 민감한 증거를 분리할 수 있습니다.사용자가 다른 장치에서 연결하려면 step ssh login을 실행하는 것이 ssh-agent에서 키를 추출하고 다시 사용하는 것보다 쉽습니다.
이런 흐름은 많은 가능한 변화가 있다.인증서 만료 시간을 조정하여 CA에서 SSO 대신 PAM 인증을 사용하거나 스마트 카드나 TPM에서 개인 키를 생성하거나 ssh-agent을 사용하지 않거나 MFA를 실제 SSH 연결로 이동할 수 있습니다.개인적으로 나는 이런 조합이 안전성과 가용성의 최상의 균형을 제공했다고 생각한다.사실상 대부분의 기존 SSH 배포에 비해 조작이 간단하고 안전하며 사용할 수 있다.
SSH 인증서 인증에 대한 비판자는 이 인증서가 새롭고 지원되지 않으며 이 도구가 존재하지 않아 실천에서 인증서를 사용할 수 없다고 말한다.사실은 인증서 인증은 약 10년 전 OpenSSH 5.4에 추가된 것이다.그것은 전투 테스트를 거쳐 대규모 운영 생산에 사용되었다.이러한 이상적인 SSH 흐름을 구축하는 데 필요한 도구는 이미 사용할 수 있습니다.

도구


SSH 인증서를 관리하는 데 사용되는 기존 도구가 많습니다.다음은 몇 가지입니다.

  • step-ca 현재 SSH CA (X.509 CA 제외)

  • step 으로 사용자와 호스트가 step-ca에서 쉽게 인증서를 받을 수 있음
  • ssh-keygen은 루트 인증서를 생성하고 사용자와 호스트 인증서를 서명할 수 있습니다.

  • netflix/bless 은 넷플릭스의 SSH CA로 AWS Lambda에서 실행되며 IAM
  • 을 사용합니다.

  • nsheridan/cashier 은 무전기의 SSH CA
  • 입니다.

  • uber/pam-ussh 인증서 권한 수여 sudo 사용

  • hashicorp/vault SSH secrets engine
  • step-ca의 적절한 구성을 통해 step을 사용할 수 있습니다.

    시작 시 호스트 인증서 자동 가져오기


    프레젠테이션을 위해 aws CLI 도구를 사용하여 새 EC2 인스턴스를 만듭니다.재미있는 비트는 some light configuration에 숨겨져 있습니다(user-data startup script 사용). 호스트 인증서를 가져오고 인증서 인증을 사용합니다.
    $ aws ec2 run-instances --image-id ami-07d0cf3af28718ef8 \
        --count 1 --instance-type t2.micro \
        --key-name mike-test \
        --security-group-ids launch-wizard-7 \
        --user-data file://startup.sh
    
    주의: 당신은 이곳에서 우리의 instance identity document support을 사용할 수 있을 것입니다. 그러나 우리는 아직 해결해야 할 문제가 있습니다.기대해주세요.

    SSO(OAuth OIDC)를 사용하여 사용자 인증서 얻기


    현재 우리는 로컬에서 step ssh certificate(brew install step)을 사용하여 새 키 쌍을 생성합니다. CAusing SSO에서 인증서를 가져오고 인증서와 개인 키를 ssh-agent에 자동으로 추가합니다.
    많이 들리지만 명령일 뿐입니다.
    $ step ssh certificate [email protected] id_ecdsa
    ✔ Provisioner: Google (OIDC)
    Your default web browser has been opened to visit:
    
    https://accounts.google.com/o/oauth2/v2/auth?client_id=650...
    
    ✔ CA: https://ca.internal
    ✔ Private Key: id_ecdsa
    ✔ Public Key: id_ecdsa.pub
    ✔ Certificate: id_ecdsa-cert.pub
    ✔ SSH Agent: yes
    
    완료 후, 우리는 인증서 인증을 사용하여 SSH를 통해 우리가 방금 만든 실례에 연결할 수 있으며, 두부가 필요하지 않습니다!
    $ ssh [email protected]
    Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1044-aws x86_64)
    
    Last login: Thu Sep 12 02:25:43 2019 from 98.210.132.79
    mike@ip-172-31-70-94:~$
    
    자세한 내용은 getting started guideSSH example repo을 참조하십시오.CA를 설정할 때 --ssh 플래그를 step ca init에 전달해야 합니다(입문 안내서는 그렇게 하지 않습니다).
    SSH 인증서의 인증을 더욱 훌륭하게 하려면 아직도 해야 할 일이 많다.우리는 지금 노력하고 있다.만약 당신이 어떤 생각이 있다면, let us know!

    SSH 인증서 사용


    SSH 인증서는 SSH 개선에 큰 역할을 합니다.그것은 허위 두부 경고와 호스트 키 검증 실패를 없앴다.복잡한 키 승인 및 배포 프로세스를 포기하고 SSO를 SSH로 확장할 수 있습니다.이것은 호스트의 키 업데이트를 가능하게 하고 키를 다시 사용하는 것보다 사용자를 더 쉽게 합니다.그것은 SSH 키를 짧게 하고 키 관리를 소홀히 하여 안전하지 않게 합니다.
    몇 분 안에 SSH CA를 배포하고 호스트를 재구성할 수 있습니다.전환이 쉽습니다. - 공개 키 인증을 계속 지원할 수 있습니다.
    SSH 인증서는 SSH를 수행하는 올바른 방법입니다.
    SSH 인증서에 대한 자세한 내용은 를 참조하십시오.당신은 심지어 우리의 무료 위탁 관리 서비스를 시도하여 5분도 안 되는 시간 안에 SSH 인증서의 가치를 체험할 수 있습니다!

    좋은 웹페이지 즐겨찾기