문제

나는 Apache가 공개 Debian Server에서 실행하고 있으며 설치 보안에 대해 약간 걱정하고 있습니다. 이것은 여러 자유 시간 취미 프로젝트를 주최하는 기계이므로 기계를 사용하는 우리 중 누구도 실제로 업스트림 패치를 끊임없이 지켜 볼 시간이없고 보안 문제를 알고 있습니다. 그러나 나는 나쁜 사람들을 막고 싶습니다. 또는 그들이 들어 오면 샌드 박스에 보관하십시오.

그렇다면 여기에서 가장 잘하고 쉽게 설정할 수있는 솔루션은 무엇입니까? Debian에서 사용자 모드 Linux 샌드 박스를 쉽게 설정할 수 있습니까? 아니면 chroot 감옥일까요? 외부에서 사형 박스 내부의 파일에 쉽게 액세스하고 싶습니다. 이것은 내가 sysadmin이 아니라 프로그래머라는 것이 나에게 매우 분명해지는 시대 중 하나입니다. 어떤 도움이든 대단히 감사하겠습니다!

도움이 되었습니까?

해결책

CHROOT 교도소는 완전한 샌드 박스 환경을 운영 할 때 정말 불안할 수 있습니다. 공격자는 커널 기능에 완전히 액세스 할 수 있으며 예를 들어 마운트 드라이브가 "호스트"시스템에 액세스 할 수 있습니다.

Linux-Vserver를 사용하는 것이 좋습니다. Linux-Vserver는 내부에 완전히 데비안 설치가있는 개선 된 Chroot 감옥으로 볼 수 있습니다. 하나의 단일 커널 내에서 실행되기 때문에 정말 빠르며 모든 코드는 기본적으로 실행됩니다.

나는 개인적으로 모든 서비스를 분리하기 위해 Linux-Vserver를 사용하며 거의 눈에 띄는 성능 차이 만 있습니다.

살펴보십시오 Linux-Vserver Wiki 설치 지침.

안부, 데니스

다른 팁

Xardias의 말이 두 번째이지만 추천합니다 OpenVZ 대신에.

Linux-Vserver와 유사 하므로이 경로를 갈 때이 두 가지를 비교할 수 있습니다.

프록시 http 서버로 웹 서버를 설정합니다.nginx), 그런 다음 트래픽을 다른 OpenVZ 컨테이너 (호스트 이름 또는 요청 된 경로에 따라)로 위임합니다. 각 컨테이너 내부에서 Apache 또는 다른 웹 서버 (예 : nginx, lighttpd, ..)를 설정할 수 있습니다. 이렇게하면 모든 것에 대해 하나의 아파치가 없지만 서비스의 하위 집합 (예 : 프로젝트 당)에 컨테이너를 만들 수 있습니다.

OpenVZ 컨테이너는 완전히 쉽게 업데이트 될 수 있습니다 ( "$ (vzlist); vzctl exec apt-get upgrade; done")).

다른 컨테이너의 파일은 하드웨어 노드에 저장되므로 하드웨어 노드로 SFTPENT를 통해 쉽게 액세스 할 수 있습니다. 그 외에도 ~할 수 있었다 일부 컨테이너에 공개 IP 주소를 추가하고 SSH를 설치 한 다음 컨테이너에서 직접 액세스하십시오. SSH 프록시에서도 들었으므로 추가 공개 IP 주소는이 경우에도 불필요 할 수 있습니다.

항상 가상 컴퓨터 내부에 설정하고 이미지를 유지하여 필요한 경우 다시 롤을 할 수 있습니다. 이렇게하면 서버가 실제 컴퓨터에서 추상화되며 바이러스 등이 가상 머신 내부에 포함되어 있습니다. 앞에서 말했듯이 이미지를 백업으로 유지하면 이전 상태로 복원 할 수 있습니다.

Chroot Jails는 의도에도 불구하고 실수로 사용자가 수행 한 것을 보았습니다.

범죄는 없지만 보안 패치를 감시하고 보안 문제를 알고있을 시간이 없다면 설정에 관계없이 걱정해야합니다. 반면에, 당신이 이러한 문제에 대해 생각하고 있다는 사실은 그러한 기계의 다른 99.9%와 차별화됩니다. 당신은 올바른 길을 가고 있습니다!

나는 아무도 언급하지 않았다는 것이 놀랍습니다 mod_chroot 그리고 Suexec, 이것은 당신이 시작해야 할 기본적인 것들이며, 아마도 당신이 필요한 유일한 것들 일 것입니다.

Selinux를 사용해야합니다. 나는 그것이 데비안에서 얼마나 잘지지되었는지 모르겠다. 그렇지 않은 경우 VM에서 Selinux를 활성화 한 Centos 5.2를 설치하십시오. 대부분의 사람들이 믿는 것만 큼 안전하지 않은 아마추어 Chrooting보다 너무 많은 일을해서는 안됩니다. Selinux는 관리하기 어려운 것으로 유명하지만 Webserver를 실행하는 경우 문제가되지 않아야합니다. httpd가 DB에 연결하도록하기 위해 몇 가지 "Sebool"을해야 할 수도 있지만, 그 문제입니다.

위의 모든 것이 좋은 제안이지만 예상치 못한 나가는 네트워크 연결을 허용하지 않는 iptables 규칙을 추가하는 것이 좋습니다. 가장 자동화 된 웹 익스플로잇이 가장 먼저하는 것은 나머지 페이로드를 다운로드하는 것이므로 네트워크 연결을 방지하면 공격자가 속도가 느려질 수 있습니다.

이와 유사한 일부 규칙을 사용할 수 있습니다 (Webserver는 다른 프로토콜에 대한 액세스가 필요할 수 있음) : iptables -Append output -m 소유자 -UID -Owner Apache -M State -State Spe란, 관련 -Jump 수락 iptables--- -Append Output -M 소유자-UID-Owner Apache -Protocol UDP-Destination-Port 53 -Jump 수락 iptables-append output -m 소유자-uid-oner apache-Jump Reject

Debian을 사용하는 경우 Debootstrap은 친구가 QEMU, Xen, OpenVZ, Lguest 또는 Plethora of of Other와 결합 된 친구입니다.

가상 기계를 만드십시오. VMware 또는 QEMU와 같은 것을 시도하십시오

실제로 어떤 문제를 해결하려고합니까? 해당 서버의 내용에 관심이 있으시면 침입자가 들어가는 것을 방지해야합니다. 침입자가 서버를 사용하여 무엇을할지에 관심이 있다면 서버 자체의 기능을 제한해야합니다.

이러한 문제 중 어느 것도 서버 자체를 심하게 비판하지 않고 가상화로 해결할 수 없었습니다. 나는 당신의 문제에 대한 실제 대답은 이것이라고 생각합니다.

  1. OS 업데이트를위한 쉬운 메커니즘을 제공하는 OS를 실행하십시오.
  2. 공급 업체 지원 소프트웨어를 사용하십시오.
  3. 모든 것을 자주 백업하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top