[23편] 서버 접속은 허용하고, 삭제 명령은 막았다 — QueryPie 명령어 통제
2026년 11월 9일
지난 글에서는 개발자 계정으로 웹 터미널에 접속했다. 서버 비밀번호를 따로 알려 주지 않아도 접속할 수 있었다. 이번에는 서버에 들어온 뒤 실행하는 명령을 제한해 봤다.
상황은 간단하게 잡았다. 담당자는 서버의 계정과 파일 내용을 확인할 수 있지만, 파일을 지우는 rm 명령은 사용하지 못하게 하는 것이다. 실습용 파일 하나를 준비하고 QueryPie의 Command Templates를 적용했다.
제한할 명령을 템플릿에 넣었다
관리자 화면에서 Servers → Server Access Control → Command Templates를 열었다. Create Template을 눌러 Lab - Block Delete라는 템플릿을 만들었다.
Base Type은 Deny로 선택했다. 화면 설명대로 목록에 넣은 항목을 제한하고 나머지는 허용하는 방식이다. Commands (SSH)의 Keyword에 rm을 입력하고 Enter로 등록했다.

이번에 막으려는 명령이 무엇인지 템플릿에서 바로 볼 수 있었다. 서버 상태를 확인하는 데 필요한 명령은 그대로 사용하면서, 제한할 명령만 정해 둘 수 있다는 점이 좋았다.
기존 SSH 역할에 명령어 제한을 연결했다
22편에서 만든 Operations Lab SSH Policy를 열었다. 접속할 서버 그룹과 labops 계정, SSH 설정은 그대로 두고 actions 아래의 commandsRef에 Lab - Block Delete를 지정했다.

이 정책은 Demo Developer에게 부여한 Operations Lab Operator 역할에 연결돼 있다. 사용자를 다시 만들거나 서버 계정을 바꿀 필요 없이, 그 역할로 접속했을 때 적용할 명령어 규칙을 추가했다. 변경 사유를 적고 저장했다.
새로 접속해 보니 조회 명령은 그대로 됐다
Demo Developer 계정에서 Operations Lab Operator를 선택하고 SSH Operations Lab에 새로 접속했다. labops 계정으로 웹 터미널을 여는 과정은 지난 글과 같았다.

whoami의 결과는 labops, pwd의 결과는 /home/labops였다. 이어서 ls -l /home/labops/delete-demo.txt를 실행했다. 실습 파일이 131바이트로 표시됐다.

명령어 제한을 적용해도 담당자가 하려던 확인 작업은 계속할 수 있었다. 이제 같은 파일을 지우는 명령을 입력해 봤다.
삭제 명령은 막히고 파일은 그대로 남았다
rm /home/labops/delete-demo.txt를 입력하고 Enter를 눌렀다. 터미널에 [QueryPie] Restricted라는 메시지가 나타났다. 해당 명령은 보안 정책으로 허용되지 않는다는 안내였다.

다시 ls -l로 파일을 확인했다. 파일 이름과 131바이트 크기가 그대로였다. cat으로 내용도 읽어 봤다. 실습을 위해 넣어 둔 문장이 정상적으로 출력됐다.

삭제 명령이 제한된 뒤에도 터미널 연결은 유지됐다. 담당자는 파일을 확인하는 작업을 이어갈 수 있었다. 접속을 통째로 막지 않고, 허용된 작업과 제한된 명령을 같은 연결 안에서 구분할 수 있었다.
감사 화면에도 차단 여부가 구분돼 남았다
실습을 마치고 관리자 화면의 Audit → Servers → Command Audit를 열었다. Demo Developer로 검색하니 방금 입력한 명령들이 시간순으로 나왔다.

03:59:26에 입력한 rm 명령은 No.12로 남아 있었다. Restricted 항목에는 Restricted, Restricted Command에는 rm이 표시됐다. 앞뒤의 ls와 cat은 Not Restricted였다.
사용자가 어떤 명령을 입력했는지에 더해, 그 명령이 정책에 의해 제한됐는지도 목록에서 확인할 수 있었다. 작업자가 보내 준 터미널 화면에만 의존하지 않고 관리자가 직접 기록을 찾을 수 있었다.
누가 어떤 역할로 시도했는지도 확인했다
차단된 rm 기록을 열어 상세 내용을 봤다. 사용자는 Demo Developer, 역할은 Operations Lab Operator, 서버 계정은 labops였다. 대상 서버와 실행 시각, 웹에서 실행했다는 정보도 함께 표시됐다.

접속을 허용한 뒤에도, 실행할 명령은 역할별로 정할 수 있었다. 이번에는 같은 labops 계정으로 파일을 조회할 수 있었지만, 등록한 rm 명령은 QueryPie에서 제한됐다. 파일도 그대로 남았고, 시도한 사용자와 차단 결과는 감사 이력에 기록됐다.
서버 점검을 맡기면서 꼭 제한하고 싶은 명령이 있을 때 활용하기 좋겠다는 생각이 들었다. 담당자는 필요한 확인 작업을 계속하고, 관리자는 역할에 적용할 명령어 규칙과 그 사용 이력을 함께 관리할 수 있었다.
다음 글에서는 이 터미널 작업을 녹화 기록으로 다시 열어 볼 예정이다. 어떤 명령을 입력했는지뿐 아니라 작업 당시 화면까지 따라가 보려 한다.
이번 실습은 QueryPie Community 11.6.7과 별도로 준비한 Ubuntu 서버에서 진행했다. 삭제 대상으로 사용한 파일은 실습용 텍스트 파일이다.
참고: Command Templates · 서버 접근 정책 설정 · Command Audit
![[22편] 서버 비밀번호를 입력하지 않고 SSH에 접속했다 — QueryPie 웹 터미널](/assets/content/acp-lab-notes/web-terminal/01.webp)
![[24편] 서버에서 한 작업을 다시 재생해봤다 — QueryPie 세션 녹화](/assets/content/acp-lab-notes/session-recording/01.webp)