안전한 임시 저장소

안전한 임시 저장소

세션 중에 데이터(특히 점프 박스의 비밀번호)를 안전하게 저장하는 방법을 찾으려고 노력 중입니다. 따라서 사용자는 점프 박스 세션에서 특정 대상에 대한 비밀번호를 한 번만 입력하면 됩니다. 이상적으로는 루트 디렉터리에서 데이터를 숨기고 싶습니다.

나는 루트 액세스 권한이 있는 사람들을 신뢰하지만 데이터를 노출할 수 있는 백업과 같이 루트로 실행되는 모든 프로그램을 반드시 신뢰하지는 않습니다.

SELinux 아님 - RHEL에서 사용할 수 있는 정책에는 많은 작업이 필요하고 이식성이 없으며 물론SELinux는 짜증나.

암호화가 작동하지 않습니다. 그런 다음 키가 저장된 위치를 찾아야 합니다.

데몬을 실행하고 소켓 자격 증명 전달을 사용하여 거기에 데이터를 저장/인증하지만 이를 구현하려면 약간의 노력이 필요하며 세션이 끝날 때 데이터가 지워졌는지 확인하고 싶습니다(항상 깨끗하지는 않을 수 있음). 끝)).

O_TMPFILE을 사용하여 이름 없는 파일을 생성하면 세션이 끝날 때 데이터를 채우고 정리하는 많은 문제를 해결하는 것으로 보입니다. 하지만 다른 프로세스는 어떻게 데이터에 액세스합니까? 대답은 소유 프로세스도 청취 소켓을 열고 그런 식으로 요청을 처리하도록 하는 것입니다. 하지만 더 간단한 해결책이 있습니까?

이것을 완전히 다시 생각해야 할까요?

답변1

커널 키링(특히 keyctl명령)을 사용하여 안전한 방법으로 데이터를 저장할 수 있습니다.

커널 키링은 특정 사용자 또는 특정 세션이 사용할 수 있는 키를 저장할 수 있을 만큼 세분화되어 있습니다. 따라서 콘솔에서 SSH를 사용하거나 서로 다른 두 시스템에서 SSH를 사용하여 연결하면 세션이 서로 연결됩니다.

예제 사용법은 다음과 같습니다:

$ keyctl add user mypassword supersecret @s
543456789

커널은 세션에서 값이 "supersecret"인 "mypassword"라는 키만 저장합니다( 사용자 키링 @s도 고려 ).@u

padd다음 명령을 사용하여 stdin에서 읽을 수 있습니다 .

$ echo -n supersecret | keyctl padd user mypassword @s
543456789

그런 다음 이를 검색해야 하는 경우:

$ keyctl print 543456789
supersecret

설명("mypassword")에서 이를 찾으려면 다음 명령을 사용할 수 있습니다 search.

$ keyctl search @s user mypassword
543456789

(그런 다음 키의 ID를 사용하여 인쇄합니다 keyctl print.)

키체인에는 더 많은 기능이 있습니다...사용하고 싶다면 먼저 읽어보세요keyctl 매뉴얼 페이지이를 통해 지원되는 작업과 사용할 키링에 대한 좋은 아이디어를 얻을 수 있습니다.

관련 정보