Jail은 무엇인가요?
TrueNAS에서의 jail은 ‘OS 수준에서 가상화’라고 표현할 수 있습니다. 말이 좀 어렵긴 한데, 제가 자세하게 설명해 보도록 하겠습니다.
Jail은 개별적인 시스템 처럼 작동합니다. TrueNAS 시스템 아래에 다양한 jail들이 있고, 각 jail들에서 서비스 등이 돌아가는 방식이죠. 그래서 쉽게 이해하면 TrueNAS에 여러개의 가상 머신들이(jail) 돌아가고 있다고 할 수 있지요.
다만 우리가 흔히 생각하는 가상머신과는 다르게, jail은 OS 수준에서 가상화되는 것이므로 cpu, 램 등의 자원 분배가 훨씬 유동적이고, 자유롭습니다. 그렇기 때문에 가상머신 보다 훨씬 효율적이죠.
Jail의 특징
- Jail 내부의 프로세스와 파일 시스템은 chroot 되어있다.
‘chroot 되어있다’라는 뜻은 jail 내부의 루트 폴더 밖으로 나갈 수 없다고 말할 수 있습니다. 그 뜻은, 내부의 프로세스와 파일 시스템은 jail 밖에 영향을 줄 수 없다는 뜻입니다. 그렇기 때문에 jail은 다른 jail에 접근할 수 없으며, TrueNAS 호스트에 접근할 수 없습니다.
- Jail 내부에 jail을 만들 수 있다.
Jail 내부에 또다른 jail을 원하는 만큼 만들 수 있습니다. 이러한 중첩 가능성은 다양한 구성을 만들 수 있도록 해줍니다.
- Jail은 네트워크 구성 등에 관여할 수 없다.
TrueNAS에서 jail은 서로 다른 IP를 가집니다. 네트워크 구성에 관여할 수 없다는 뜻은, jail 내부에서 jail에게 할당된 IP 주소를 바꿀 수 없습니다. 이를 통해 jail 내부에 누가 침투하더라도 해당 jail 이외에는 별 다른 영향을 주기 어렵습니다.
방화벽의 경우, jail 내부 방화벽은 건들 수 있지만, jail 외부 방화벽은 손댈 수 없습니다.
- Jail 내부에서는 커널에 접근할 수 없다.
호스트와 jail은 커널을 공유합니다. 커널을 공유함으로써 처리 속도 등에서 얻는 이득이 크기 때문이죠. 그렇기 때문에 jail 내부에서는 TrueNAS 자체 커널에 접근할 수 없도록 설정되어있습니다.
- Jail 내부는 클린한 FreeBSD 시스템이다.
Jail 내부는 클린 설치된 FreeBSD 시스템과 똑같은 환경입니다. 따라서 프로그램들과 호환성 문제 등을 일으키기 않는다는 장점이 있습니다.
이와 같이 jail은 일반적인 파일 시스템과는 다른 많은 차이점이 있습니다. 이러한 차이점으로부터 얻을 수 있는 장점은 다음과 같습니다.
Jail의 장점
- Jail의 내부에서 외부에 접근할 수 없다는 점만으로도 보안성을 굉장히 높일 수 있습니다. 또한, jail 내부에서 어떠한 짓을 하여도 TrueNAS 호스트에 영향을 줄 수 없습니다. 따라서 jail에 의심스러운 프로그램을 설치해 보는 식으로 jail을 유용하게 사용할 수도 있습니다.
- TrueNAS 호스트와 같은 커널을 사용하고, jail은 오버헤드가 낮습니다. 따라서 다수의 jail을 사용하여도 시스템에 큰 부하가 걸리지 않습니다.
- 서로 다른 jail들은 서로 다른 IP를 부여받습니다. 따라서 다수의 개별 서버를 운용하는 것 처럼 만들 수 있습니다. 예를 들면 여러개의 웹 서버를 운용한다던 식이지요.
- Jail 내부는 클린한 FreeBSD 시스템 이므로 서비스 운용 등에서 호환성과 같은 문제가 발생하지 않않습니다.
결론
Jail은 굉장히 유용한 시스템입니다. 보안성을 높여주는 역할도 해주지요.
앞으로 설치할 SFTP, Plexmediaserver 등과 같은 서비스들은 jail에 설치할 것입니다.
TrueNAS 호스트에서는 아무것도 건들지 않는 것이 좋음을 다시 한번 말씀드리면서 끝내겠습니다.