Linux는 높은 보안성을 인정받고 있으며, 3대 운영체제 중 개인 정보 보호 측면에서 상대적으로 적은 문제를 안고 있습니다. 하지만 아무리 안전한 시스템이라도 개선의 여지는 항상 존재합니다. 여기서 ‘Firejail’이라는 도구가 등장합니다. Firejail은 사용자가 실행 중인 응용 프로그램을 격리된 환경, 즉 ‘샌드박스’ 안에 가두어 시스템의 다른 부분에 접근하지 못하도록 하는 프로그램입니다. 이는 Linux 환경에서 가장 널리 사용되는 샌드박싱 도구 중 하나이며, 많은 Linux 배포판에서 기본적으로 제공합니다. 이제 Linux에서 Firejail을 설치하고 사용하는 방법을 살펴보겠습니다.
주의: 본문 하단에 비디오 튜토리얼이 제공되니 참고하시기 바랍니다.
설치 방법
Ubuntu
sudo apt install firejail
Debian
sudo apt-get install firejail
Arch Linux
sudo pacman -S firejail
만약 Arch Linux의 저장소에 있는 Firejail 버전이 만족스럽지 않다면, AUR의 Git 버전을 사용하는 것을 고려해 보세요.
Fedora
안타깝게도 Fedora에서는 Firejail 패키지가 기본 저장소에 존재하지 않습니다. 따라서 Fedora 사용자는 Copr 저장소를 활용하여 설치해야 합니다. Copr은 Ubuntu의 PPA 또는 Arch Linux의 AUR과 유사한 개념으로, 사용자들이 소프트웨어를 공유하는 플랫폼입니다. Firejail 관련 Copr 저장소가 많으므로, 특정 저장소가 업데이트를 중단하면 웹사이트에서 다른 저장소를 찾아보시면 됩니다.
Fedora에서 Firejail을 설치하려면 다음 명령을 사용하세요:
sudo dnf copr enable ssabchew/firejail sudo dnf install firejail
openSUSE
openSUSE 사용자들은 OBS(Open Build Service)에서 Firejail을 찾을 수 있습니다. Leap 및 Tumbleweed의 최신 버전에 맞는 Firejail을 간편하게 설치할 수 있습니다. 자세한 내용은 여기에서 확인하세요.
YaST를 통해 설치하려면 1-클릭 설치 버튼을 클릭하면 됩니다.
기타 Linux 배포판
Firejail의 소스 코드는 지원되지 않는 Linux 배포판에서도 쉽게 컴파일하여 사용할 수 있습니다.
먼저 시스템에 Git 패키지를 설치해야 합니다. 패키지 관리자를 열고 “git”을 검색하여 설치하세요. 또한, Linux 배포판에 맞는 빌드 도구도 설치해야 합니다. 예를 들어 Debian/Ubuntu에서는 ‘build-essential’ 패키지가 필요합니다.
Git 패키지가 설치되면 다음 명령을 사용하여 Firejail 소스 코드를 다운로드합니다:
git clone https://github.com/netblue30/firejail.git
소스 코드가 다운로드되었으면, 다음 명령으로 해당 폴더로 이동합니다:
cd firejail
컴파일하기 전에 ‘configure’ 스크립트를 실행하여 시스템 정보를 수집합니다. 이는 중요한 단계이며, 생략하면 소프트웨어를 빌드할 수 없습니다.
configure
다음으로 ‘make’ 명령을 사용하여 컴파일을 위한 makefile을 생성합니다.
make
마지막으로 다음 명령을 사용하여 Firejail 소프트웨어를 시스템에 설치합니다.
sudo make install-strip
Firejail 사용 방법
Firejail을 사용하여 프로그램을 샌드박싱하는 것은 매우 간단합니다. 기본적으로, 실행하려는 명령 앞에 “firejail”을 붙이기만 하면 됩니다. 예를 들어, Gedit 텍스트 편집기를 샌드박스 환경에서 실행하려면 터미널에서 ‘firejail gedit’ 명령을 입력하면 됩니다. 이렇게 하면 Gedit은 시스템의 나머지 부분과 격리되어 실행됩니다. 간단한 샌드박싱에는 이 방법으로 충분하지만, 더 세밀한 설정을 위해서는 추가적인 구성이 필요합니다.

예를 들어 ‘firejail firefox’ 명령으로 Firefox를 실행하면, Firefox는 격리된 환경에서 실행되어 시스템의 다른 어떤 부분에도 영향을 주지 않습니다. 이는 보안 측면에서 매우 유용하지만, 특정 디렉토리에 파일을 다운로드해야 할 경우 Firejail이 시스템의 모든 디렉토리에 접근하는 것을 막기 때문에 문제가 될 수 있습니다. 따라서 샌드박스 환경에서 허용하거나 차단할 디렉토리를 구체적으로 설정해야 합니다. 다음은 그 방법입니다.
프로필 화이트리스트 및 블랙리스트 설정
화이트리스트와 블랙리스트 설정은 각 애플리케이션별로 이루어집니다. 차단된 애플리케이션에 대한 전역 기본값을 설정하는 방법은 없습니다. Firejail은 이미 많은 구성 파일이 설정되어 있으며, 이러한 구성 파일은 일반적인 기본값을 제공하여 사용자가 설정을 직접 수정하지 않아도 됩니다. 하지만 고급 사용자라면 이러한 유형의 파일을 편집하여 더 세밀하게 설정할 수 있습니다.
터미널을 열고 ‘/etc/firejail’ 디렉토리로 이동합니다:
cd /etc/firejail
‘ls’ 명령을 사용하여 디렉토리의 내용을 확인하고, ‘more’ 명령을 사용하여 페이지별로 내용을 확인합니다. Enter 키를 눌러 다음 페이지로 이동합니다.
이제 설정하려는 애플리케이션의 구성 파일을 찾아 메모해 둡니다. 여기서는 Firefox를 예로 계속 진행하겠습니다.
ls | more
Nano 텍스트 편집기를 사용하여 Firefox Firejail 프로필을 엽니다:
sudo nano /etc/firejail/firefox.profile
앞서 언급했듯이 Firejail 앱은 일반적인 기본값으로 설정되어 있습니다. 이는 개발자들이 대부분의 사용자에게 적합한 기본값을 설정해두었다는 의미입니다. 예를 들어, 앱이 샌드박스 환경에 있더라도 시스템의 ‘~/Downloads’ 디렉토리와 플러그인 디렉토리에 접근할 수 있습니다. 이 허용 목록에 항목을 추가하려면 구성 파일에서 허용 목록 관련 섹션을 찾아 직접 규칙을 작성하면 됩니다.

예를 들어, Firejail로 실행되는 Firefox에서 Facebook 프로필에 사진을 더 쉽게 업로드하려면 다음 설정을 추가해야 합니다:
whitelist ~/Pictures
블랙리스트에도 동일한 원칙이 적용됩니다. Firefox의 샌드박스 버전이 특정 디렉토리를 절대로 볼 수 없도록 하려면 다음과 같이 설정합니다:
blacklist ~/secret/file/area
‘Ctrl + O’ 키를 눌러 변경 사항을 저장합니다.
참고: ‘~/”는 ‘/home/현재 사용자’ 디렉토리를 의미합니다.
결론
샌드박싱은 정보 유출이나 악성 행위자로부터 데이터를 보호하는 매우 좋은 방법입니다. Linux 시스템의 보안에 조금이라도 걱정이 있다면, Firejail을 사용해 보는 것을 적극 추천합니다.