시나리오: "게이트웨이" 시스템은 소규모 LAN을 인터넷에 연결하는 라우터 및 방화벽 역할을 합니다. 또한 이 머신은 웹 서버(간단한 웹 사이트 호스팅)와 인터넷에서 (루트가 아닌) SSH 액세스를 제공하는 SSH 서버를 실행합니다.
목표: 악의적인 해커가 인터넷을 통해 시스템에 침입하여 발생하는 피해를 완화합니다(웹 서버 및 SSH 서버에는 인터넷에 노출된 포트만 사용됨). 중요한 문제는 SSH 서버를 통한 침입으로 인해 웹 서버가 손상되어서는 안 되며 그 반대의 경우도 마찬가지라는 것입니다.
권장 접근 방식: 권한이 없는 LXC 컨테이너 2개(웹 및 SSH 서버용으로 하나)와 호스트에서 실행되는 라우터/방화벽을 구성합니다. 컨테이너는 별도의 브리지에 있는 가상 네트워크 인터페이스를 사용하여 호스트에 연결되며, SSH/웹 기능을 활성화하도록 포트 전달 및 방화벽 규칙이 구성됩니다.
질문: 위의 접근 방식은 SSH와 웹 서버를 컴퓨터에서 직접 실행하는 것보다 외부 위협에 대해 더 나은 보안을 제공합니까? 해결해야 할 결함이나 문제가 있습니까? 라우터/방화벽 자체가 세 번째 컨테이너(물리적 네트워크 인터페이스에 매핑됨)에서 실행되면 보안이 향상됩니까? 경험이 있으신 경우 기타 관련 의견/제안을 자유롭게 제공해 주시기 바랍니다.
답변1
좋은 생각입니다. 컨테이너가 바로 그런 용도입니다.
이는 컨테이너 웹 서버가 chroot에서 자주 실행되기 전에는 일반적이었습니다.
lxc 네트워크에 브리지를 사용하지 않고 라우터 모드를 사용하는 경우
lxc.net.0.veth.mode = router
또한 웹 서버에는 SSH 서버에 대한 네트워크 경로가 없으며 트래픽을 수신할 수 없습니다. OpenSSL에는 트래픽 스누핑을 심각한 문제로 만드는 버그가 있습니다(가슴 아픈 일). www 서버가 pwnd에 걸릴 가능성이 낮더라도 lxc 컨테이너 내부에서는 손상이 덜 발생하므로 추가 보안 계층을 갖는 것이 좋습니다. 일반 소프트웨어에서 심각한 원격 실행 버그가 가끔 발생합니다(예: 쉘 쇼크).