chroot 감옥에서 Apache를 실행하는 것이 바람직합니까?

chroot 감옥에서 Apache를 실행하는 것이 바람직합니까?

제가 아는 시스템 관리자로부터 보안 강화를 위해 chroot 감옥에서 Apache를 실행하라는 조언을 받았습니다.

다음과 같은 질문이 있습니다.

  1. 이것이 바람직합니까(즉, 제가 알고 있어야 할 '문제점'이 있습니까)?
  2. chroot 감옥에서 Apache를 실행하면 성능 및 확장성과 같은 기능 문제에 영향을 줍니까?

그는 또한 별도의 chroot 감옥에서 데이터베이스(mySQL 및 PostgreSQL)를 실행하라고 조언했습니다.

이것은 프로덕션 시스템에서 자주 수행되는 작업입니까?

[편집하다]

서버가 Ubuntu 8.04 LTS에서 실행되고 있다는 사실을 잊어버렸습니다.

답변1

Chrooting은 좋은 보안 조치입니다. 악용에 성공한 경우 시스템이 손상될 가능성을 제한하지만 어떤 경우에는 chroot를 회피할 수 있는 방법도 있으므로 시스템을 보호하는 확실한 방법은 아닙니다.

성능과 확장성에 관한 어떤 단점도 알지 못합니다. 데이터베이스 액세스와 관련하여 일반적으로 chroot 내부 소켓에 대한 링크를 통해 수행되므로 데이터베이스 연결을 위해 네트워킹 포트를 열 필요가 없습니다.

편집: 아래는 OpenBSD rc.local(OpenBSD chrooted httpd)에서 가져온 mysql 액세스에 대한 샘플입니다.

if [ X"${mysql_server_flags-NO}" != X"NO" -a -x /usr/local/bin/mysqld_safe ]; then
        rm -R /var/www/var/run/mysql
        mkdir -p /var/www/var/run/mysql
        chown _mysql:_mysql   /var/www/var/run/mysql
        echo -n 'MySQL server: '; /usr/local/bin/mysqld_safe --user=_mysql ${mysql_server_flags} &
        sleep 10
        ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
fi

도움이 되었기를 바랍니다.

답변2

나는 두 개의 프로그램을 가지고 있는데 그 중 하나는 유닉스 도메인 소켓을 통해 서로 통신하는 Apache httpd입니다. chroot에서 실행되도록 전환했는데 성능이 10% 손실되었습니다. 내가 생각하는 실행중인 응용 프로그램에 따라 다릅니다. 이전에는 chroot에서 Apache의 성능 손실을 들어본 적이 없었기 때문에 두 번째 앱이 chroot에서 성능이 손실된 것 같습니다.

관련 정보