LXC용 seccomp 화이트리스트를 만드는 가장 좋은 방법은 무엇입니까?

LXC용 seccomp 화이트리스트를 만드는 가장 좋은 방법은 무엇입니까?

나는 비지박스 기반 LXC 컨테이너에 대해 매우 엄격한 seccomp 화이트리스트를 설정하려고 합니다. 나는 Ubuntu의 문서로 시작했습니다 /usr/share/doc/lxc/examples/seccomp-v1.conf. 여기에는 가장 유용한 시스템 호출이 포함된 것으로 보이지만 더 이상 문서화되지는 않은 것 같습니다.

이 파일을 사용하여 컨테이너를 시작했는데 거의 모든 것이 잘 작동하지만 nginx시작되지 않습니다. 이것을 사용하여 두 개의 시스템 호출( / 가 포함된 항목 )이 누락되었음을 strace발견했습니다 . 이름을 숫자로 번역할 수 있게 도와주세요. 그 후 시작되었습니다.*pid**gid*ausyscallnginx

이제 실제로 필요한 파일로 파일을 줄이고 싶습니다. 이를 위해 파일 전체를 반복하고 일시적으로 줄을 제거한 다음 모든 것이 컨테이너에서 여전히 작동하는지 테스트하는 스크립트를 작성했습니다. 마지막으로 새로운(보다 제한적인) 화이트리스트를 생성할 수 있습니다.

이 프로세스는 시간이 많이 걸리기 때문에 지난 주 동안 매일 밤 여러 번 반복이 실행되었습니다. 나는 현재 . 때문에 막혔습니다 lxc-attach fails providing an interactive console. 디버깅하는 더 빠른 방법, 바람직하게는 모든 seccomp 위반을 기록하는 syslog 또는 Lxc를 찾으려고 노력 중입니다.

커널 명령줄에서 설정을 시도했지만 audit=1syslog에서 seccomp 관련 감사 메시지를 본 것은 단 한 번뿐이었습니다. 대조적으로, Lxc는 "컨테이너가 seccomp를 위반했습니다"만을 표시하며, 이는 문제가 있는 시스템 호출을 찾는 데 도움이 되지 않습니다.고쳐 쓰다:설치된 경우 auditd로그가 기록 /var/log/audit/audit.log되고 커널 명령줄 인수는 더 이상 확인되지 않습니다.

묻다:유용한 seccomp 화이트리스트를 생성하는 더 효율적인 방법이 있습니까? 이를 방지하기 위해 lxc-default kexec_load, open_by_handle_at, init_module및 lxc-default 이외의 finit_module제안 사항이 있습니까 delete_module? 위험한 시스템 호출 목록이 있나요?

답변1

동시에 ausyscall을 가져오기 위한 도구를 설치한 후 /var/log/audit/audit.log이제 syslog 대신 seccomp 감사 로그로 이동한다는 사실을 발견했습니다. auditd이 도구가 없으면 로그는 이동할 곳이 없습니다.

파일에는 다음과 유사한 줄이 포함되어 있습니다.

type=SECCOMP msg=audit(1444422928.758:649196): auid=0 uid=100033 gid=100033 ses=1 pid=18459 comm="nginx" exe="/usr/sbin/nginx" sig=31 arch=c000003e syscall=288 compat=0 ip=0x7f2f71555467 code=0x0

어떤 프로세스와 어떤 시스템 호출이 규칙을 위반했는지 명확하게 알려주는데, 이는 나에게 매우 도움이 되었습니다.

그러나 나는 그 질문에 대답하지 않았습니다. 여전히 답변되지 않은 질문이 있으며 저는 이와 같은 화이트리스트 파일을 설정하기 위해 시행착오보다 더 효율적인 방법을 여전히 찾고 있습니다.

관련 정보