sudo with MFA

sudo with MFA를 사용하면 영구적인 sudo 권한 없이도 Websh 터미널 세션에서 sudo 명령을 실행할 수 있습니다. sudo 명령 입력 시 MFA 추가 인증이 필요합니다.

이 페이지는 대화형 터미널 세션을 다룹니다. 토큰으로 실행되는 자동화 파이프라인의 sudo명령 패턴과 sudo를 참고하세요. 토큰은 인가 방식이 다르며 서비스 토큰에는 sudo 정책이 적용되지 않습니다.

요구 사항

  • 대상 서버에 Alpamon 1.3.2 이상 설치
  • Policies 메뉴의 서버 접근 정책에서 sudo with MFA 활성화 (활성화 시 필요한 PAM 모듈이 서버에 자동 설치됨)

sudo with MFA 활성화

  1. 사이드바에서 Policies > 서버 접근으로 이동합니다 (서버 접근 정책 참고)
  2. sudo with MFA 사용을 활성화합니다
  3. Alpamon 1.3.2 이상이 실행 중이고 그 시점에 연결된 서버에 PAM 모듈이 자동으로 설치됩니다

참고: 그 시점에 오프라인이던 서버에는 설치가 전달되지 않고, 다시 연결돼도 자동으로 재시도하지 않습니다. 해당 호스트에서 alpamon-pam을 직접 설치하세요. sudoers 규칙이 없는 경우를 참고하세요.

참고: Policies 메뉴는 Superuser 멤버에게만 표시되며, sudo with MFA 활성화에는 superuser 권한이 필요합니다. Staff 사용자는 활성화된 sudo with MFA를 사용할 수 있지만 설정을 변경할 수는 없습니다.

참고: sudo with MFA 사용 토글은 Alpacon Cloud(Auth0 기반) 워크스페이스에서만 제공됩니다. 토큰 인증을 사용하는 셀프 호스팅 워크스페이스에는 이 설정이 표시되지 않습니다.

참고: sudo with MFA는 root 직접 접속 허용 설정과 독립적으로 작동합니다. root 직접 접속이 비활성화되어 있어도 sudo with MFA를 통해 sudo 명령을 사용할 수 있습니다.

sudo with MFA 비활성화

서버 접근 정책에서 sudo with MFA 사용을 끄면 즉시 적용되며, 워크스페이스 전체의 동작이 다음과 같이 바뀝니다.

  • Alpacon이 sudo를 인가하지 않게 됩니다. 해당 서버에 PAM 모듈이 설치돼 있든 없든, Alpacon에 도달한 sudo 요청은 모든 서버에서 거부됩니다. 거부 시 WORKSPACE_SUDO_WITH_MFA_DISABLED 코드가 함께 전달됩니다. “Alpacon denied this sudo command”를 참고하세요. Alpacon이 호스트를 관리하기 전부터 자체 sudoers 권한을 갖고 있던 시스템 계정은 그 권한을 그대로 유지합니다.
  • 서버는 그대로 유지됩니다. 어떤 패키지도 제거되지 않고 서버로 명령이 전송되지도 않습니다. alpamon-pam 패키지는 설정과 이 패키지가 관리하던 sudoers 규칙까지 그대로 설치된 상태로 남아 있지만, 설정이 꺼져 있는 동안에는 아무 역할을 하지 않습니다.
  • 이미 승인을 기다리던 요청은 거부되지 않습니다. 승인 대기 목록에 그대로 남지만, 승인해도 sudo 명령이 실행되지는 않으며, 그 뒤에 있던 인가는 자체 만료 시점에 소멸됩니다.
  • Websh 외부 sudo 비활성화가 함께 꺼집니다. 이 설정은 sudo with MFA에 의존하므로 자동으로 꺼집니다.

비활성화는 정책만 바꾸는 동작입니다. Alpacon이 sudo를 인가하지 않게 되는 것뿐이고 서버에는 아무 변화가 없습니다. 그래서 언제든 되돌릴 수 있으며, 설정을 다시 켜면 서버에서 별도 복구 작업 없이 sudo with MFA가 다시 동작합니다.

sudo with MFA 사용을 다시 켜면 sudo가 곧바로 다시 인가됩니다. 그 시점에 연결된 모든 서버에는 alpamon-pam도 함께 설치되므로, 패키지가 없던 서버는 이때 받게 됩니다.

작동 방식

터미널에서 sudo 명령을 실행하면:

  1. sudo 명령을 입력합니다(예: sudo systemctl restart nginx).
  2. 터미널에 MFA 인증이 필요해요 오버레이가 나타납니다. 클릭하여 인증하기를 클릭해 인증 창을 엽니다.
  3. MFA를 완료하면 명령이 실행됩니다.
  4. 이후 sudo 명령은 sudo with MFA 타임아웃이 만료될 때까지 추가 인증 없이 실행됩니다. 이 기간은 워크스페이스 관리자가 서버 접근 정책에서 설정합니다.

인증에 실패하거나 MFA 세션이 만료되면 터미널이 명령을 다시 실행해 인증하라고 안내합니다.

sudo 정책과 부여

sudo 명령이 어떻게 인가되는지는 워크스페이스의 Privileged access 설정(Policies 메뉴, superuser 전용, Alpacon Cloud/Auth0 워크스페이스)에 따라 달라집니다.

  • Sudo 정책: 관리자는 특정 사용자나 서버에 대해 특정 명령을 사전 인가할 수 있습니다. 작업 세션에 바인딩된 정책은 MFA 우회를 허용할 수 있어, 비대화형 호출자(예: exec를 실행하는 AI 에이전트)가 대화형 MFA 프롬프트 없이 해당 명령을 실행할 수 있습니다.
  • 승인: sudo 요청은 관리자 승인으로 인가될 수 있습니다.

직접 권한·정책·승인 등 모든 인가는 기록됩니다. Sudo 기록에서 검토하세요.

sudo-rs 호환성

Ubuntu 25.10 이상(26.04 포함)은 기본 sudosudo-rs를 제공합니다. sudo with MFA는 이러한 호스트에서도 동작하며 alpamon-pam 패키지 1.1.2 이상이 필요합니다. Alpacon이 sudo-rs를 감지해 PAM을 통해 sudo 명령을 인가합니다.

기존 sudo(1.9 이상)에서는 Alpacon이 /etc/sudo.conf에 별도의 sudo 승인 플러그인을 등록합니다. sudo-rs에는 플러그인 인터페이스가 없으므로 이 플러그인은 사용되지 않으며 sudo-rs 호스트의 /etc/sudo.conf에도 나타나지 않습니다. 정상 동작이며 설정 오류가 아닙니다.

참고: 터미널이 연결되지 않은 sudo-rs 호스트에서 sudo 명령이 거부되면(예: alpacon exec), sudo-rs는 거부 사유를 표시하지 못하고 대신 A terminal is required to authenticate를 출력합니다. 실제 원인은 PAM 및 sudo 문제에서 확인하세요.

관련 문서

최종 수정: