OpenClaw VPS 보안 설정 및 hardening 가이드
OpenClaw는 shell command와 browser 제어 권한을 가집니다. CVE-2026-32922 같은 취약점에 대비하여 비특권 사용자 생성, firewall 설정, systemd 활용 등 VPS 환경에서 안전하게 실행하는 방법을 상세히 설명합니다.
OpenClaw의 정의와 보안 강화가 우선인 이유
OpenClaw는 self-hosted AI agent입니다. 사용자의 서버에서 실행하며, 대규모 언어 모델(LLM)에 연결하여 shell command를 실행하고, browser를 제어하며, 파일을 읽고 쓸 수 있으며, 채팅 앱을 통해 전달된 메시지에 따라 동작할 수 있습니다. 이러한 광범위한 권한은 이 도구의 핵심 기능인 동시에 가장 큰 보안 리스크입니다. 모든 명령을 실행할 수 있는 agent의 안전성은 해당 agent가 실행되는 환경과 설정된 제한 범위에 전적으로 의존합니다.
이 가이드는 두 가지 사실을 전제로 합니다. 첫째, OpenClaw는 사용자가 직접 보안을 강화(harden)하도록 설계되었습니다. 이 도구의 보안 모델은 엄격한 tool policy, sandboxing, 세밀한 권한 설정을 기본값이 아닌 운영자의 책임으로 규정합니다. 둘째, 이 프로젝트는 이미 심각한 보안 사고를 겪었습니다. 2026년 3월, 4일 만에 9개의 보안 이슈가 공개되었으며, 여기에는 심각도 9.9점의 권한 상승(privilege-escalation) 취약점인 CVE-2026-32922가 포함되어 있었습니다. 이러한 사실이 OpenClaw 사용을 금지해야 함을 의미하지는 않습니다. 다만, 편의 위주의 설정을 피해야 함을 의미하며, 본 가이드는 신중한 설정 방법을 제시합니다.
다행인 점도 있습니다. OpenClaw는 이미 한 가지 안전한 설정을 기본으로 제공합니다. 모든 것을 제어하는 단일 프로세스인 gateway가 기본적으로 loopback address를 리스닝하므로, 사용자가 의도적으로 노출하지 않는 한 인터넷에서 접근할 수 없습니다. 아래의 작업 대부분은 이 상태를 유지하고, 사고 발생 시 피해 범위(blast radius)를 제한하는 데 집중되어 있습니다.
OpenClaw 전용 비특권 사용자 생성
agent를 절대 root 권한으로 실행하지 마십시오. OpenClaw를 root로 실행하는 상태에서 버그, 잘못된 명령, 또는 앞서 언급한 CVE와 같은 문제가 발생하면 피해 규모를 제한할 수 없습니다. 로그인 shell과 sudo 권한이 없는 전용 system user를 생성한 후, 해당 사용자로 agent를 실행하십시오.
sudo useradd --system --home /opt/openclaw --shell /usr/sbin/nologin openclawOpenClaw가 소유하는 모든 항목은 /opt/openclaw 아래에 위치하며, 해당 계정이 소유합니다. 이것이 가장 중요한 단계입니다. 이는 비특권 사용자로 서비스 실행하기에서 다루는 원칙과 동일합니다. agent가 실행되는 계정의 권한이 해당 agent가 파괴할 수 있는 범위의 한계가 됩니다.
OpenClaw 설치
OpenClaw는 npm package로 배포됩니다. 서버에 Node.js가 설치되어 있지 않다면 먼저 설치하십시오. 패키지를 global하게 설치하면 모든 사용자의 PATH에 openclaw binary가 추가됩니다. 그 다음, 한 번만 수행하는 onboarding 단계를 실행하십시오.
sudo npm install -g openclaw@latest
sudo -u openclaw openclaw onboardonboarding을 openclaw 사용자로 실행하면 agent의 설정 파일이 root가 아닌 해당 사용자의 홈 디렉토리인 /opt/openclaw에 저장됩니다. 또한 이 프로젝트는 한 줄로 설치를 완료하는 curl -fsSL https://openclaw.ai/install.sh | bash installer를 제공합니다. onboarding 시 --install-daemon flag는 건너뛰십시오. 이 flag는 OpenClaw 자체 서비스를 등록하지만, 아래에서 구축할 hardened systemd unit이 더 엄격한 보안을 제공합니다.
Gateway를 loopback에 유지하고 방화벽 뒤에 배치
gateway는 기본적으로 127.0.0.1에 바인딩됩니다. 이 설정을 그대로 유지하십시오. 해당 port를 인터넷에 공개해야 할 이유는 거의 없습니다. 포트를 공개하는 것은 명령을 실행하는 프로세스에 누구나 원격으로 침투할 수 있는 통로를 제공하는 것과 같습니다.
실수로 노출되는 것을 방지하기 위해 서버 앞에 default-deny 방화벽을 설정하십시오.
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable여기서 피해야 할 두 가지 함정이 있습니다. IPv4만 적용되는 방화벽은 IPv6에서 동일한 서비스를 완전히 노출시킬 수 있으며, 이는 많은 사용자가 겪는 IPv6 방화벽 격차 문제입니다. 또한 노트북에서 gateway에 접속해야 하는 경우, port를 개방하지 마십시오. VPN이나 SSH tunnel을 통해 접속하여 agent가 공개된 인터넷의 리스닝 상태가 되지 않도록 하십시오.
Secret 정보 격리
OpenClaw는 연결된 언어 모델을 위해 API key가 필요합니다. 이 키는 비용을 발생시킬 수 있고, agent를 통해 사용자를 대리하여 동작할 수 있으므로 비밀번호와 동일하게 취급해야 합니다. unit file이나 모든 repository에 키를 포함하지 마십시오. 오직 OpenClaw 사용자만 읽을 수 있는 파일에 저장하십시오.
sudo install -o openclaw -g openclaw -m 600 /dev/null /opt/openclaw/openclaw.env
sudoedit /opt/openclaw/openclaw.env # add ANTHROPIC_API_KEY=... or your model provider's keysystemd unit은 EnvironmentFile를 사용하여 해당 파일을 로드하므로, 키가 command line, log 또는 shell history에 남지 않고 프로세스에 전달됩니다.
Hardened systemd service로 실행
agent를 systemd로 실행하면 자동 재시작, journalctl를 통한 깨끗한 로그 관리, 그리고 가장 중요한 기능인 커널 수준의 sandboxing 옵션을 사용할 수 있습니다. 이를 통해 프로세스가 침해당하더라도 접근 가능한 범위를 축소할 수 있습니다. agent에게 가장 중요한 옵션은 권한 상승을 방지하는 NoNewPrivileges, 허용된 디렉토리를 제외한 파일 시스템을 읽기 전용으로 만드는 ProtectSystem=strict, 격리된 임시 디렉토리를 위한 PrivateTmp, 그리고 home 디렉토리를 읽을 수 없게 하는 ProtectHome입니다.
여기서 완성된 hardened unit을 생성한 후 /etc/systemd/system/openclaw.service로 복사하십시오.
unit은 agent를 제어하는 장기 실행 프로세스인 openclaw gateway를 시작합니다. 만약 which openclaw가 서버에서 다른 경로를 나타내면 ExecStart를 그에 맞게 수정하십시오. 이러한 지시어와 daemon-reload, enable --now에 대한 상세 설명은 systemd 서비스로 프로그램 실행하기에서 확인할 수 있습니다. unit을 붙여넣은 후 실행하는 짧은 명령은 다음과 같습니다.
sudo systemctl daemon-reload
sudo systemctl enable --now openclawFront door 보안 강화
agent 서버의 안전성은 주변 서버의 보안 수준에 따라 결정됩니다. 두 가지 추가 레이어로 보안을 완성하십시오. VPS에서 SSH 보안 강화하기와 같이 SSH를 key-only 인증으로 변경하고 root login을 차단하여, 서버 관리 계정이 brute-force 공격을 받지 않도록 하십시오. 그 다음 Fail2ban을 추가하여 모든 public port를 공격하는 스캐너들을 차단하십시오. 이 설정들이 OpenClaw를 직접 수정하지는 않지만, 공격자가 OpenClaw에 도달하기 위해 사용하는 경로를 차단합니다.
의도적인 업데이트 유지
2026년 3월의 취약점 공개는 최신 상태를 유지해야 한다는 가장 명확한 근거입니다. agent의 권한 상승 버그는 일반적인 웹 앱보다 훨씬 심각합니다. agent는 이미 명령을 실행할 수 있는 권한을 가지고 있기 때문입니다. 프로젝트의 release를 주시하고, 보안 업데이트를 신속히 적용하며, OpenClaw 업그레이드를 미뤄야 할 작업이 아닌 일상적인 유지보수로 취급하십시오.
실제로 무엇을 강화하고 있는지 이해하려면 OpenClaw 스타일 agent의 아키텍처를 참조하십시오. 또한 VPS에서 자신만의 AI agent 구축하기에서 모든 agent에 적용되는 일반적인 구조를 확인할 수 있습니다.
FAQ
공용 VPS에서 OpenClaw를 실행해도 안전합니까?
보안 강화를 수행한다면 안전할 수 있습니다. OpenClaw는 설계상 강력합니다. shell command를 실행하고 browser를 제어하므로, 부주의한 설정은 매우 위험합니다. 이 프로젝트는 이미 심각한 CVE(2026년 3월 CVE-2026-32922)를 겪은 바 있습니다. 보안 모델은 운영자가 직접 제한 사항을 추가할 것을 요구합니다. 비특권 사용자로 실행하고, default-deny 방화벽 뒤의 loopback에 gateway를 유지하며, API key를 격리하고, hardened systemd service로 실행하십시오.
OpenClaw gateway를 인터넷에 노출시켜야 합니까?
아니요. gateway는 기본적으로 loopback에 바인딩되며, 그 상태를 유지해야 합니다. gateway는 agent를 제어하는 단일 프로세스이므로, 노출된 gateway는 명령을 실행하는 프로세스로 들어가는 원격 경로가 됩니다. 원격 접속이 필요한 경우 port를 여는 대신 VPN이나 SSH tunnel을 사용하십시오.
OpenClaw는 어떤 사용자로 실행해야 합니까?
로그인 shell과 sudo 권한이 없는 전용 system user로 실행해야 하며, 절대 root로 실행해서는 안 됩니다. agent가 침해될 경우, 해당 사용자 계정이 피해 범위의 한계가 됩니다. 따라서 해당 계정은 /opt/openclaw와 같은 디렉토리 아래의 자신의 파일만 소유해야 하며, 그 외의 권한은 없어야 합니다.
OpenClaw의 API key를 어떻게 안전하게 관리합니까?
OpenClaw 사용자만 읽을 수 있는 파일(mode 600)에 저장하고, systemd의 EnvironmentFile를 사용하여 서비스에 로드하십시오. 키를 unit file, shell history, 또는 git repository에 포함하지 마십시오. 키가 유출되었다고 의심되는 경우 즉시 교체(rotate)하십시오.