BPF를 사용한 SSH 향상된 세션 녹화
BPF를 사용하여 SSH 세션 명령을 녹화하는 방법.
이 가이드는 BPF를 사용한 SSH 향상된 세션 녹화와 Teleport 클러스터에서 설정하는 방법을 설명합니다. Teleport의 기본 SSH 및 Kubernetes 세션 녹화 기능은 터미널에 출력되는 내용을 캡처합니다. 이 방식에는 본질적인 장점이 있습니다. 예를 들어, 입력 내용이 캡처되지 않기 때문에 Teleport 세션 녹화에는 일반적으로 터미널에 입력된 비밀번호가 포함되지 않습니다. 단점은 세션 녹화의 유용성을 떨어뜨리는 여러 기법이 존재한다는 것입니다. 난독화 . 예를 들어, echo Y3VybCBodHRwOi8vd3d3LmV4YW1wbGUuY29tCg== | base64 --decode | sh 명령어 자체에는 curl http://www.example.com 이 포함되어 있지 않지만, 디코딩되면 실제로 실행되는 것은 이 명령입니다. 셸 스크립트 . 예를 들어, 사용자가 스크립트를 업로드하여 실행하는 경우 스크립트 내에서 실행되는 명령어는 캡처되지 않고 출력 결과만 캡처됩니다. 터미널 제어 . 터미널은 사용자가 터미널 에코를 비활성화할 수 있는 기능을 포함해 다양한 제어 기능을 지원합니다. 이는 자격 증명을 요청할 때 자주 사용됩니다. 터미널 에코를 비활성화하면 명령어가 캡처되지 않은 채로 실행될 수 있습니다. 또한 세션 녹화는 구조화되지 않은 특성으로 인해 수집하여 모니터링 및 경고를 수행하기가 어렵습니다. Teleport 향상된 세션 녹화는 고급 보안 기능과 더 뛰어난 로깅 기능을 제공하고, 사용자와 그 활동을 더 잘 연관시킴으로써 이 세 가지 문제를 모두 완화합니다. Security Warning Teleport 향상된 세션 녹화는 그 자체로 안전한 환경을 제공하지 않으며, Linux 보안 모듈(SELinux, AppArmor 등)을 대체하지 않습니다. 신뢰할 수 있는 호스트 환경을 강제하려면 핵심 시스템 바이너리와 라이브러리에 대한 적절한 접근 제어, 잘 설계된 사용자 관리 등 합리적인 시스템 하드닝 관행과 함께 사용해야 합니다. 권한이 있는 사용자(root로든 sudo 를 통해서든)는 세션 녹화 활동을 방해할 수 있다는 점에 유의하세요(예: 필요한 라이브러리를 언로드/비활성화하거나, Teleport 실행 방식을 변경하거나, 커널 기능을 변조하거나, 터널을 생성하거나, 단순히 제한된 세션 밖에서 작업을 수행하는 등). 또한 모니터링 대상 콘솔 세션과 모니터링 대상이 아닌 콘솔 세션을 모두 가지고 있거나 ptrace 권한을 가진 로컬 사용자의 경우 녹화에 완전히 포착되지 않을 수 있습니다. 데몬(systemd, crond, atd 등)을 통해 실행된 명령어는 녹화된 세션 범위를 벗어날 수 있습니다. 무단 데이터 전송 가능성을 방지하려면 이그레스 트래픽에 대한 적절한 네트워크 기반 제한도 구현해야 합니다. 또한 전체 바이너리 경로(잠재적인 심볼릭 링크 고려), 공유 라이브러리 프리로딩을 통한 변경 사항, 환경 변수와 같은 특정 포렌식 정보는 세션 녹화에 캡처되지 않을 수 있습니다. 사전 요구사항 # 실행 중인 Telepo