Infograb logo
리눅스 감사 시스템으로 SSH 구성하기

Teleport의 SSH 서비스는 리눅스 감사 시스템(auditd)과 통합되도록 구성할 수 있습니다.

필수 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

  • tctl 관리 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • 실행 중인 Teleport 노드. Teleport 클러스터에 노드를 추가하는 방법은 서버 액세스 시작 가이드를 참조하세요. 노드에서 teleport는 루트 권한으로 systemd 서비스로 실행되어야 합니다.
  • CONFIG_AUDIT로 컴파일된 리눅스 커널 2.6.6+ 이상. 대부분의 리눅스 배포판은 이 옵션이 기본적으로 활성화되어 있습니다.
  • auditd 상태를 확인하기 위한 auditctl (선택 사항).
  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오. 예를 들어:
    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다. 자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

1단계/4. 시스템 구성 확인

Teleport는 시스템에서 auditd가 활성화되어 있는 것을 발견하면 자동으로 auditd 이벤트를 보냅니다. 루트 권한으로 auditctl -s를 호출하여 이를 확인할 수 있습니다.

다음은 해당 명령의 예시 출력입니다:

$ sudo auditctl -s
enabled 1
failure 1
pid 879
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
backlog_wait_time_actual 0
loginuid_immutable 0 unlocked

첫 번째 줄 enabled 1은 auditd가 활성화되어 있으며, Teleport가 이벤트를 보낼 것임을 나타냅니다.

모든 이벤트는 Teleport 노드에서 생성됩니다. invalid user 이벤트는 Teleport 사용자가 인증에 실패할 때 프록시 서비스에서도 생성됩니다.

2단계/4. Teleport 시작하기

Teleport는 루트 권한으로 시스템 서비스(예: systemd 서비스)로 실행하는 것이 중요합니다. 그렇지 않으면 Teleport가 권한 부족으로 auditd에 이벤트를 보내지 않습니다.

Warning

Teleport 프로세스의 로그인 UID가 설정되지 않았는지 확인하세요. 그렇지 않으면 발생된 이벤트에서 세션 ID가 올바르게 설정되지 않습니다. cat /proc/$(pidof teleport)/loginuid를 호출하여 이를 확인할 수 있습니다. 값은 4294967295로 설정되어야 합니다.

3단계/4. PAM 통합 활성화 (선택 사항)

PAM(Pluggable Authentication Modules)이 활성화되면 auditd가 추가 이벤트를 생성할 수 있습니다. Teleport에서 PAM 통합을 활성화하려면, Teleport 노드의 구성 파일(/etc/teleport.yaml 기본값)에 다음 pam 섹션을 추가하세요:

ssh_service:
  # SSH 서비스 활성화
  enabled: true
  # PAM 통합 활성화
  pam:
    # 기본값은 "no"
    enabled: true
    # /etc/pam.d/sshd 구성 사용 (기본값)
    service_name: "sshd"

PAM에서 생성된 이벤트는 통합이 활성화될 때의 sshd 구성에 따라 달라집니다. 대부분의 시스템은 USER_ACCT 또는 USER_START 같은 이벤트를 생성합니다. 추가로, pam_tty_audit.so 모듈을 활성화하면 TTY 입력을 로깅할 수 있습니다.

자세한 내용은 PAM 또는 운영 체제 문서를 참조하세요.

PAM 통합이 활성화되면, auditd 이벤트는 OpenSSH에서 생성된 이벤트와 밀접하게 일치해야 합니다.

4단계/4. auditd로 SSH 세션 추적하기

Teleport에서 SSH 세션을 추적하는 방법은 몇 가지가 있습니다. auditd 이벤트와 상호작용하기 위해 ausearch를 사용할 것입니다. 시스템에 이 도구가 없으면, 설치 방법은 배포판 문서를 참고하세요.

시스템 사용자로 검색하기

시스템 사용자로 로그인할 때 이벤트를 검색하려면 -ua 스위치를 사용하세요. 사용자의 UID는 id 명령으로 확인할 수 있습니다:

$ id bob
uid=1000(bob) gid=1000(bob) groups=1000(bob)

그런 다음 uid를 사용하여 auditd 로그를 검색합니다:

ausearch -ua 1000 -m USER_LOGIN

Teleport 사용자로 검색하기

Teleport에 의해 auditd로 전송된 이벤트는 teleportUser 필드로 보강되며, 이 필드에는 Teleport 사용자의 이름이 포함됩니다. ausearch는 사용자 정의 필드로 검색할 수 없지만, grep을 사용하여 검색할 수 있습니다:

ausearch -m USER_LOGIN | grep teleportUser=bob

세션 ID로 검색하기

특정 세션에서 생성된 모든 이벤트를 찾으려면, 먼저 세션 ID를 찾아야 합니다. 다음과 같이 검색할 수 있습니다:

ausearch  -m USER_LOGIN -x teleport --just-one

그런 다음 해당 세션과 관련된 이벤트를 검색합니다:

ausearch --session 42
Teleport 원문 보기