제가 아는 시스템 관리자로부터 보안 강화를 위해 chroot 감옥에서 Apache를 실행하라는 조언을 받았습니다.
다음과 같은 질문이 있습니다.
- 이것이 바람직합니까(즉, 제가 알고 있어야 할 '문제점'이 있습니까)?
- 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에서 성능이 손실된 것 같습니다.