보안 강화 가이드 - OpenClaw 배포 방案
AI 폭주 방지 —— OpenClaw를 샌드박스에 가둔다
OpenClaw를 샌드박스에 넣는 이유가 뭐야
AI은 코드 작성, 파일 수정, 스크립트 실행을 도와줄 수 있는데, 이것이 강점인 동시에 위험성도 있음. 만약 AI이 실행하면 안 될 명령을 실행하면 결과는 클 수 있음.
샌드박스 대 베어메탈
['AI가 rm -rf / 명령으로 전체 시스템 삭제 (실제 사례 여럿)', 'AI가 시스템 핵심 설정 파일 실수 수정, 서버 부팅 불가', 'API Key가 AI 로그로 출력돼 누구나 볼 수 있음', '컨테이너 탈출, 호스트 머신의 다른 서비스 영향', 'AI가 네트워크를 통해 민감 데이터 유출']
['읽기 전용 파일시스템, AI가 파일 수정 불가', '모든 Linux capability 폐기, 권한 최소로', 'CPU와 메모리 제한, 리소스 고갈 방지', '네트워크 격리, 필요 API 끝점만 접속 가능', '로그 감사, 모든 작동 기록 남음']
Docker 샌드박스 구축
핵심 아이디어: 읽기 전용 마운트 + 네트워크 차단 + 리소스 제한.
# 높은 제약이 있는 컨테이너 생성
이 명령어가 한 것: 파일시스템 읽기 전용, 모든 특권 버리기, 메모리 1GB 제한, CPU 1코어 제한, 프로세스 100개 제한, 완전 단네. 거친 거 맞지.
docker-compose.yml 샌드박스 설정
실제 배포는 Nginx 리버스 프록시 권장. 8080을 80/443 뒤에 숨기기. 디버깅 완료 후 8080 인바운드 규칙 삭제 기억할 것.
version: "3.8"
AppArmor / Seccomp 강화
더 많은 보안 비교 알고 싶으면 이 글 참고:
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": ["SCMP_ARCH_X86_64", "SCMP_ARCH_AARCH64"],
"syscalls": [
{
"names": [
"read", "write", "open", "close", "stat", "fstat",
"mmap", "mprotect", "munmap", "brk", "ioctl",
"access", "pipe", "select", "sched_yield",
"dup", "dup2", "clone", "execve", "exit",
"wait4", "kill", "getpid", "getuid", "getgid",
"socket", "connect", "sendto", "recvfrom"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
이 seccomp 설정은 가장 기본 시스템 콜만 허용, mount, ptrace 같은 위험 조작은 전부 차단.
샌드박스 배포(OpenClaw)
격리 컨테이너 생성
키 쌍 생성. 공개키 업로드. 비밀번호 로그인과 root 직접 연결 비활성화.
읽기 전용 파일 시스템
/tmp와 지정한 workspace 디렉토리 외 다른 곳은 쓸 수 없음.
네트워크 제한
internal network로 외부 인터넷 직접 접속 차단, API 필요하면 프록시 경유.
자원 제한
CPU, 메모리, 프로세스 수에 모두 상한선을 설정해 컨테이너가 호스트 머신의 리소스를 독점하지 못하도록 방지.
일상 사용 편함, 응답 빠름, 문제 적은 설정:
또는
다층 격리 보호, 파일 시스템 읽기 전용, 네트워크 화이트리스트 제어, 리소스 제한. AI 오작동은 컨테이너 내부만 영향, 시스템 영향 없음.
시스템 권한 공유, 파일 완전히 읽고 쓸 수 있어, 네트워크 제한 없어. 배포 간단하지만, AI가 실수하면 전체 시스템에 영향 미칠 수 있고 심하면 삭제도 가능.