Linux용 Little Snitch로 네트워크 활동 모니터링하기
컴퓨터의 애플리케이션들은 아무 말도 없이 조용히 네트워크 연결을 맺습니다. Linux용 Little Snitch는 이런 활동을 눈에 보이게 해주고, 원하지 않는 연결을 막을 수 있게 해줍니다. 어떤 애플리케이션이 어떤 서버와 통신 중인지 정확히 볼 수 있고, 초대하지 않은 연결은 차단하며, 시간별 트래픽 기록과 데이터 양을 추적할 수 있죠.
설치 및 실행
설치한 후에는 터미널에서 littlesnitch 명령어를 실행하거나 http://localhost:3031/에 접속하면 됩니다. 이 URL을 북마크해두거나 Progressive Web App으로 설치할 수도 있어요. Chromium 기반 브라우저라면 기본적으로 지원하고, Firefox 사용자라면 Progressive Web Apps 확장 프로그램을 설치하면 됩니다.
연결 모니터링
대부분의 작업은 연결 보기(Connections view)에서 이루어집니다. 여기서는 애플리케이션별로 현재와 과거의 네트워크 활동을 보여주고, 규칙과 차단 목록으로 차단된 항목을 표시하며, 데이터 양과 트래픽 기록을 추적합니다.
마지막 활동, 데이터 양, 이름 순으로 정렬하고 관련 항목만 필터링하면 예상치 못한 활동을 쉽게 발견할 수 있습니다. 연결을 차단하려면 한 번의 클릭만 있으면 돼요.
하단의 트래픽 다이어그램은 시간별 데이터 양을 보여줍니다. 특정 시간 범위를 드래그로 선택하면 해당 기간의 활동만 확대해서 볼 수 있습니다.
차단 목록(Blocklists)
차단 목록을 사용하면 원치 않는 트래픽의 전체 카테고리를 한 번에 차단할 수 있습니다. Little Snitch는 원격 소스에서 목록을 다운로드하고 자동으로 최신 상태를 유지합니다. 지원하는 형식은 여러 가지인데요. 줄당 하나의 도메인, 줄당 하나의 호스트명, /etc/hosts 형식(IP 주소 다음 호스트명), CIDR 네트워크 범위 같은 것들입니다. 다만 와일드카드 형식, 정규 표현식, glob 패턴이나 URL 기반 형식은 지원하지 않습니다.
도메인 기반 목록이 호스트 기반 목록보다 더 효율적으로 처리되니, 선택지가 있다면 도메인 기반을 선택하는 게 좋습니다. Hagezi, Peter Lowe, Steven Black, oisd.nl 같은 잘 알려진 브랜드들을 시작점으로 삼아보세요.
참고로, macOS용 Little Snitch의 .lsrules 형식은 Linux 버전과 호환되지 않습니다.
규칙(Rules)
차단 목록은 도메인 수준에서 작동하지만, 규칙을 사용하면 더 세밀한 제어가 가능합니다. 규칙은 특정 프로세스를 대상으로 할 수 있고, 특정 포트나 프로토콜을 매칭할 수 있으며, 필요한 만큼 광범위하거나 좁게 설정할 수 있어요. 규칙 보기에서는 규칙들을 정렬하고 필터링할 수 있어서, 규칙이 많아져도 관리하기 쉽습니다.
보안 설정
기본적으로 Little Snitch의 웹 인터페이스는 로컬 머신에서 실행 중인 모든 것에 열려 있습니다. 문제가 있거나 악의적인 애플리케이션이라면 이론상 규칙을 추가하거나 삭제하고, 차단 목록을 조작하거나 필터를 완전히 끌 수도 있죠.
이것이 걱정된다면 Little Snitch를 인증이 필요하도록 설정할 수 있습니다. 자세한 내용은 아래의 고급 설정 섹션을 참고하세요.
작동 원리
Little Snitch는 eBPF를 사용해서 Linux 네트워크 스택에 후킹됩니다. eBPF는 커널에서 일어나는 일을 관찰하고 가로챌 수 있게 하는 메커니즘이에요. eBPF 프로그램이 나가는 연결을 감시하고 데이터를 데몬으로 전달하면, 이 데몬이 통계를 추적하고 규칙을 전처리한 후 웹 UI를 제공합니다.
eBPF 프로그램과 웹 UI의 소스 코드는 GitHub에 공개되어 있습니다.
설정
UI는 의도적으로 가장 일반적인 설정만 노출합니다. 더 기술적인 설정이 필요하면 일반 텍스트 파일로 설정할 수 있는데, littlesnitch 데몬을 재시작한 후에 적용됩니다.
기본 설정은 /var/lib/littlesnitch/config/에 있습니다. 이 파일들을 직접 수정하지 말고, 변경하고 싶은 파일을 /var/lib/littlesnitch/overrides/config/에 복사해서 수정하세요. Little Snitch는 항상 오버라이드 버전을 우선합니다.
가장 주의 깊게 봐야 할 파일들:
config.json— 데몬 설정ebpf.json— eBPF 프로그램 설정ui.json— 웹 UI 설정
eBPF 프로그램과 웹 UI는 원하면 직접 빌드한 버전으로 바꿀 수 있습니다. 소스 코드는 모두 GitHub에 있으며, 이 경우에도 Little Snitch는 오버라이드에 있는 버전을 우선합니다.
보안 vs. 개인정보 보호
Linux용 Little Snitch는 보안이 아닌 개인정보 보호를 염두에 두고 만들어졌는데, 이 구분이 중요합니다. macOS 버전은 더 많은 복잡성을 허용할 수 있어서 더 강력한 보장을 제공할 수 있죠. Linux에서는 기초가 eBPF인데, 이건 강력하지만 한계가 있습니다. 저장소 크기와 프로그램 복잡도에 엄격한 제한이 있거든요.
트래픽이 많을 때는 캐시 테이블이 오버플로우되어 모든 네트워크 패킷을 프로세스나 DNS 이름에 확실하게 연결할 수 없게 됩니다. 그리고 주어진 IP 주소에 대해 원래 조회됐던 호스트명을 복원하려면 추측에 의존해야 합니다. macOS 버전은 깊은 패킷 검사(deep packet inspection)로 이를 더 안정적으로 처리해요. 하지만 Linux에선 그런 방법이 옵션이 아닙니다.
소프트웨어가 뭘 하는지 모니터링하고 정상적인 소프트웨어가 전화를 거는 것을 막으려면 Linux용 Little Snitch가 잘 작동합니다. 하지만 결정된 공격자로부터 시스템을 강화하려면 적절한 도구가 아닙니다.
라이선스
Linux용 Little Snitch는 세 가지 컴포넌트로 구성됩니다. eBPF 커널 프로그램과 웹 UI는 GNU General Public License 버전 2로 배포되며 GitHub에서 사용할 수 있습니다. 데몬(littlesnitch --daemon)은 독점이지만 사용과 재배포가 자유입니다.