Skip to content

Commit

Permalink
posts: update FreeBSD VNET jail post
Browse files Browse the repository at this point in the history
- Improved comparison with Docker and FreeBSD Jail with intruducing
  Linux LXC
- Introduced Podman and ocijail in FreeBSD
- Removed short description about Kubernetes
  • Loading branch information
kimminss0 committed Jan 6, 2025
1 parent 43fc416 commit f148230
Showing 1 changed file with 30 additions and 20 deletions.
50 changes: 30 additions & 20 deletions posts/007-freebsd-vnet-jail-config.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,43 @@
---
title: FreeBSD VNET Jail 구성 방법
published: 2024-09-25T15:27:41+0900
updated: 2024-10-02T18:47:00+0900
updated: 2025-01-07T03:00:00+0900
---

FreeBSD의 VNET Jail이 무엇인지, 어디에 쓰는지 소개한다. 구성 과정에서 마주칠 수
있는 문제와 해결 방안을 다룬다.

## FreeBSD Jail

BSD 계열 운영체제는 **Jail** 기능이 있는데, 프로세스, 파일 시스템, 네트워크,
사용자 및 권한을 격리하는 환경을 제공한다.

흔히 Linux의 **Docker**와 비교되지만, Docker와 달리 Jail은 운영체제의 커널
레벨에서 지원하는 기능이다. 따라서 운영체제와 밀접히 통합되어 있으며, 보안 및
안정성, 자원 관리, 네트워크 분리, ZFS 파일 시스템과의 상성과 같은 강력한 장점이
있다.

사실, 요즘의 Docker는 개발 편의를 위한 도구로써 의미가 있다고 본다. Docker
이미지의 생성 및 레포지토리를 통한 배포 등 개발 환경의 구축을 간소화하고 편의를
제공해주는 도구라는 측면에서 장점이 분명하다. 하지만 모든 컨테이너가 하나의
docker daemon에 의해 관리되고, 이 프로세스가 root 권한으로 실행된다는 점에서
근본적인 보안 문제가 있다. 이에 보안 우려가 중요한 환경에서는 **Podman**과 같은
대체제 또는 분산 환경에 적합한 **Kubernetes**를 사용하는 경우가 많다.

Jail 또한 Docker의 편의성에는 못 미친다. 다만 Docker는 개발 도구로, Jail은
서비스를 실제로 운영하는 환경으로 적합하다.

> FreeBSD Jail에 대한 자세한 내용은 추후 포스팅하겠다.
FreeBSD의 **Jail** 기능은 프로세스, 파일 시스템, 네트워크, 사용자 및 권한을
격리하는 환경을 제공한다. Linux의 **Docker**와 비교하자면, Jail은 Docker와 달리
운영체제의 커널 레벨에서 지원하는 기능이다. 따라서 운영체제와 밀접히 통합되어
있으며, 보안 및 안정성, 자원 관리, 네트워크 분리, ZFS 파일 시스템의 활용 등
강력한 장점이 있다.

사실 FreeBSD Jail과 직접적으로 비교할 수 있는 대상은 Docker보다는 LXC가 더
적합해보인다. LXC는 리눅스 커널 차원에서 지원하는 기능이고, 한때 Docker도 LXC를
기반으로 개발되었던 것으로 알고 있다. 지금은 runc라는 별도의 컨테이너 런타임을
사용하고 있다.

Docker는 개발 편의를 위한 도구로써 유용하다. Docker 이미지의 생성 및
레포지토리를 통한 배포 등 개발 환경의 구축을 간소화하고 편의를 제공해주는
도구라는 측면에서 장점이 분명하다. 하지만 모든 컨테이너가 하나의 docker
daemon에 의해 관리되고, 이 프로세스가 root 권한으로 실행된다는 점에서 근본적인
보안 문제가 있다.

이를 해결한 Docker의 대안으로는 **Podman**이 있는데, 각 컨테이너들이 독립적으로
실행되고 이들을 관리하기 위한 daemon 또한 존재하지 않으며, 루트 권한 없이
실행[^rootless-podman-freebsd]되므로 보안상 안전하다. FreeBSD에서도 ocijail
런타임을 활용하여 Podman을 사용할 수 있다. ocijail은 Jail을 활용하여 구현한
컨테이너 런타임이다. 따라서 FreeBSD에서 Docker와 같은 개발 편의 도구가
필요하다면 Podman을 활용할 수 있다.

[^rootless-podman-freebsd]: 리눅스에서 지원. 아쉽게도 아직까지 FreeBSD에서의
Podman은 루트 권한 없이 컨테이너를 생성하지 못한다.

본론으로 돌아와서, FreeBSD에서는 Podman 등을 사용하지 않아도 기본적으로
제공하는 Jail 기능만 활용하더라도 강력한 격리 환경을 구성할 수 있다.

## VNET Jail

Expand Down

0 comments on commit f148230

Please sign in to comment.