1P by GN⁺ 2시간전 | ★ favorite | 댓글 1개
  • 애플리케이션의 네트워크 연결을 시각화하고 제어할 수 있는 도구로, 어떤 프로그램이 어떤 서버와 통신하는지 확인 가능
  • Connections View에서 실시간 및 과거 트래픽을 앱별로 표시하며, 클릭 한 번으로 연결 차단데이터 사용량 추적 지원
  • BlocklistsRules 기능을 통해 원치 않는 트래픽을 범주별 또는 세부 조건별로 정교하게 제어 가능
  • 내부적으로 eBPF를 이용해 커널 수준에서 연결을 감시하고, 웹 UI를 통해 PWA 형태의 인터페이스 제공
  • 보안 도구가 아닌 프라이버시 중심 도구로, 일반 소프트웨어의 외부 통신 차단에는 적합하지만 고급 공격 방어용으로는 제한적임

개요

  • Little Snitch for Linux는 애플리케이션의 네트워크 연결을 실시간으로 시각화하고 제어할 수 있는 도구
    • 어떤 애플리케이션이 어떤 서버와 통신하는지 확인 가능
    • 원치 않는 연결 차단, 트래픽 기록, 데이터 사용량 추적 기능 제공
  • Linux 커널 6.12 이상BTF 커널 지원 필요
  • 웹 UI는 http://localhost:3031/에서 접근 가능하며, PWA(Progressive Web App) 형태로 설치 가능

연결 모니터링

  • Connections View에서 현재 및 과거 네트워크 활동을 애플리케이션별로 표시
    • 규칙과 차단 목록에 의해 차단된 항목, 데이터 사용량, 트래픽 히스토리 표시
    • 최근 활동, 데이터량, 이름 기준으로 정렬 및 필터링 가능
    • 클릭 한 번으로 연결 차단 가능
  • 하단의 트래픽 다이어그램은 시간에 따른 데이터량을 시각화
    • 특정 구간을 드래그해 확대하면 해당 기간의 활동만 필터링되어 표시됨

차단 목록 관리

  • Blocklists 기능으로 원치 않는 트래픽 범주를 일괄 차단 가능
    • 원격 소스에서 자동 다운로드 및 최신 상태 유지
    • 지원 형식: 도메인당 한 줄, 호스트명당 한 줄, /etc/hosts 형식(IP + 호스트명), CIDR 네트워크 범위
    • 와일드카드, 정규식, glob, URL 기반 형식은 지원하지 않음

      • 효율성을 위해 도메인 기반 목록 사용 권장
      • 예시 목록: Hagezi, Peter Lowe, Steven Black, oisd.nl
      • macOS용 .lsrules 형식은 Linux 버전과 호환되지 않음

사용자 정의 규칙

  • Rules 기능은 블록리스트보다 세밀한 제어 제공
    • 특정 프로세스, 포트, 프로토콜 단위로 설정 가능
    • 규칙 목록은 정렬 및 필터링 가능
  • 규칙을 통해 세부적인 네트워크 제어 정책 구성 가능

접근 보안

  • 기본적으로 웹 인터페이스는 로컬에서 실행 중인 모든 프로세스가 접근 가능
    • 악성 애플리케이션이 규칙 변경, 차단 목록 수정, 필터 비활성화 가능성 존재
  • 이를 방지하기 위해 인증 요구 설정 가능
    • 세부 설정은 고급 구성(Advanced configuration)에서 수행

내부 구조

  • eBPF를 이용해 Linux 네트워크 스택에 후킹
    • eBPF 프로그램이 출력 연결을 감시하고 데이터를 데몬으로 전달
    • 데몬은 통계 추적, 규칙 처리, 웹 UI 제공 역할 수행
  • eBPF 프로그램과 웹 UI의 소스코드는 GitHub에서 공개

고급 구성

  • 기본 UI는 주요 설정만 노출하며, 고급 설정은 텍스트 파일로 구성
    • 변경 후 littlesnitch 데몬 재시작 필요
  • 기본 설정 경로: /var/lib/littlesnitch/config/
    • 직접 수정하지 말고, 수정할 파일을 /var/lib/littlesnitch/overrides/config/로 복사 후 편집
    • override 디렉터리의 설정이 항상 우선 적용됨
  • 주요 설정 파일
    • web_ui.toml: 네트워크 주소, 포트, TLS, 인증 설정
      • 여러 사용자가 접근 가능할 경우 인증 활성화 필요
      • 루프백 외부 노출 시 TLS 추가 필요
    • main.toml: 규칙에 일치하지 않는 연결의 기본 동작 설정
      • 기본값은 허용이며, 필요 시 거부로 변경 가능
      • 잘못 설정 시 시스템 접근 불가 위험 존재
    • executables.toml: 실행 파일 그룹화 규칙
      • 버전 번호 제거로 동일 앱의 여러 버전을 하나로 표시
      • 셸 및 앱 관리 프로세스의 부모 관계 정의
      • 커뮤니티 피드백을 통해 지속 개선
  • eBPF 프로그램과 웹 UI는 사용자 빌드 버전으로 교체 가능
    • override 디렉터리의 버전이 우선 적용됨

한계점

  • 보안 도구가 아닌 프라이버시 도구로 설계
    • macOS 버전보다 단순하며, eBPF 제약으로 기능적 한계 존재
  • eBPF는 저장 공간 및 프로그램 복잡도 제한이 있어
    • 트래픽이 많을 경우 캐시 테이블이 넘쳐 패킷과 프로세스, DNS 이름 간 매핑이 불완전해질 수 있음
    • IP 주소에서 원래 조회된 호스트명을 복원할 때 추론(heuristics) 사용
    • macOS 버전은 딥 패킷 검사(DPI) 로 더 정확한 매핑 수행
  • 일반 소프트웨어의 외부 통신 감시 및 차단에는 적합하지만 고급 공격자에 대한 시스템 방어용으로는 부적합

라이선스

  • 구성 요소 3개로 구성
    • eBPF 커널 프로그램웹 UIGNU GPL v2로 공개, GitHub에서 이용 가능
    • 데몬(littlesnitch --daemon)비공개(proprietary) 이지만 무료 사용 및 재배포 가능
Hacker News 의견들
  • 나는 Little Snitch나 Open Snitch를 사용하지 않지만, 허용된 프로그램을 악용한 요청도 차단할 수 있는지 궁금했음
    예를 들어 suspicious.py가 Firefox를 호출해 데이터를 업로드하면, 방화벽이 이를 막을 수 있는지 알고 싶음

    • Little Snitch for Linux는 프로세스와 부모 프로세스의 네임스페이스를 함께 고려해 규칙을 평가함
      스크립트를 #!/bin/interpreter로 실행하면 스크립트 경로에 규칙이 적용되지만, interpreter script 형식으로 실행하면 다르게 동작함
    • 단순 규칙으로는 차단되지 않음
      Open Snitch에서는 부모 트리에 python 프로세스가 포함되어 있는지 등을 기준으로 세밀하게 매칭할 수 있음
    • 라이브러리 로딩이나 프로세스 간 메모리 조작(예: OpenProcess, WriteProcessMemory, CreateRemoteThread)까지 고려하면 훨씬 복잡해짐
      예전 Windows 방화벽인 Outpost나 Zone Alarm은 이런 행위를 탐지하는 Leak Control 기능을 제공했음
    • SELinux의 MAC 정책을 활용하면 각 프로세스가 접근할 수 있는 파일과 포트를 제한할 수 있음
      대부분의 배포판이 이 기능을 포함하지만, 일반 사용자는 규칙 학습이나 설정을 잘 하지 않음
  • Fedora 43에서 실행해봤는데 CPU 코어를 모두 점유하고, 50K 라인 로그를 남기며 실패했음
    BPF_PROG_LOAD syscall returned Argument list too long 오류가 발생함

    • 개발자가 Fedora에서 테스트하지 않았다고 밝힘
      ARM64 VM에서는 로드되지만 프로세스를 식별하지 못함
      eBPF 호환성 문제를 조사 중이며, 리소스가 한정되어 시간이 필요하다고 함
    • 이미 GitHub 이슈가 등록되어 있음
    • 공식 다운로드 페이지에 따르면 Btrfs 파일 시스템에서는 작동하지 않음
      Fedora 기본 파일 시스템이 Btrfs라 프로세스 식별이 불가능하며, 1.0.1 버전에서 수정 예정임
    • 나도 같은 문제를 겪었음. CPU 절반만 쓰지만 웹 UI가 작동하지 않음
    • 이런 게 바로 평범한 리눅스 경험임. 2026년이 리눅스 데스크톱의 해라는 말이 농담처럼 들림
  • 리눅스 사용자로서 코드의 개방성을 중요하게 생각함
    OpenSnitch + OpenSnitch-UI 조합으로 충분히 만족하고 있음

  • 리눅스에서 유료 툴 모델이 얼마나 실현 가능한지 궁금했음
    대부분은 무료, 후원 기반, 혹은 오픈코어 모델임
    Little Snitch가 Linux 버전을 무료로 공개한 이유가 “리눅스에서는 돈이 안 된다”는 인식 때문인지, 다른 이유가 있는지 궁금함

    • 리눅스 커뮤니티는 폐쇄형 소프트웨어에 대한 불신이 강함
      나도 네트워크 트래픽을 다루는 폐쇄형 프로그램은 꺼림칙함
      대신 FOSS 프로젝트에는 매년 수천 달러를 기부함
      하지만 이런 사용자는 소수라, 완전 오픈소스로는 수익을 내기 어려움
    • OpenSnitch가 이미 존재하고 무료이기 때문에, 유료 대체재는 설득력이 약함
      특히 방화벽처럼 권한이 높은 코드는 오픈소스가 아니면 신뢰하기 어려움
    • Little Snitch for Linux의 개발자는 “우리는 투자자가 아닌 작은 독립 팀이며, 이번 결정은 개인적인 선택이었다”고 밝힘
      결과가 어떻게 될지 궁금하다고 함
    • 개발자의 동기는 공식 블로그 글에 잘 설명되어 있음
  • 관련 블로그 포스트: Little Snitch for Linux 소개

  • 예전에 Windows용 ZoneAlarm이 있었음
    리눅스에는 왜 이런 게 없었는지 늘 궁금했음

    • 예전에 AmigaOS용으로 ZoneAlarm과 비슷한 프로그램을 직접 만들었음
      Direwall 코드를 찾아보니 옛날 C 스타일이 그대로 남아 있음
      소켓 라이브러리를 패치해 동작했는데, 지금도 컴파일될지 궁금함
    • ZoneAlarm의 강점은 기술뿐 아니라 사용자 교육과 UX 설계였음
      처음엔 시끄럽게 묻지만, 학습 후 조용해지는 구조를 명확히 설명했음
      그래서 사용자 신뢰를 얻었고, 나도 그 점 때문에 추천했음
    • 당시에는 GNU 소프트웨어가 대부분이라 스파이웨어가 거의 없었음
      상용 소프트웨어가 리눅스로 들어오면서 네트워크 감시 욕구가 생겼음
    • ZoneAlarm을 2000년대 초에 썼던 기억이 남
    • Kerio Personal Firewall도 기억남. 이후 ZA나 Comodo로 옮겼는데, 격리 실행 기능이 인상적이었음
      Windows의 무분별한 실행을 제한할 수 있어서 좋았음
  • Little Snitch를 오래 사용해왔고, 모든 네트워크 요청을 수동 승인
    하지만 커널 확장 수준의 권한을 가진 프로그램을 얼마나 신뢰할 수 있을지 고민됨
    회사나 개발자에 대한 정보가 거의 없어 궁금함

    • Little Snitch for Linux 개발자가 직접 답변함
      eBPF 컴포넌트는 GPLv2 오픈소스로 공개되어 있으며, GitHub 코드에서 확인 가능함
      다만 데몬은 root 권한으로 실행되어야 하므로, SELinux 같은 접근 제어로 제한할 필요가 있음
      첫 릴리스라 버그 리포트 대응 중이며, 리눅스 환경의 다양성에 놀랐다고 함
    • 이 회사는 20년 넘게 활동한 Mac용 독립 개발사로, Little Snitch는 오래전부터 사랑받는 제품임
    • 나는 Android용 Little Snitch/OpenSnitch 영감의 FOSS 방화벽을 공동 개발 중임
      macOS에서는 커널 확장이 아니라 Network Extension API를 사용함
      네트워크 관찰이 목적이라면 Sniffnet 같은 GUI 스니퍼도 있음
  • Linux 포트 출시를 축하함
    완전 오픈소스이자 터미널 기반의 대안으로 내가 유지 중인 RustNet을 소개함
    TUI 기반 실시간 패킷 모니터링 도구로, 방화벽은 아니지만 Landlock을 통해 자체 샌드박싱함

    • 흥미로워 보여서 나중에 사용해볼 예정임
  • OpenSnitch와 비교가 궁금함
    OpenSnitch GitHub

    • Little Snitch를 써봤는데 IP→도메인 해석이 거의 안 되고, 프로세스 식별도 실패함
      이는 Linux 버전의 기술적 한계 때문임
      eBPF 기반이라 캐시 오버플로 시 프로세스 매핑이 불가능하고, macOS처럼 딥 패킷 검사를 쓸 수 없음
      공식 설명에 자세히 나와 있음
    • 나도 OpenSnitch를 설치했지만 지금은 꺼둔 상태임. 아마 피로감 때문이었을 듯함
    • 개발자 블로그에 따르면, 기존 도구들이 “프로세스별 연결을 한눈에 보고 클릭 한 번으로 차단” 하는 기능을 제공하지 않아 직접 만들었다고 함
      관련 글
    • OpenSnitch는 완전한 오픈소스이며 구독도 없음. 소프트웨어는 이렇게 되어야 함
  • OpenSnitch를 만족스럽게 사용 중임
    다만 플러그인 시스템이 생겨서 사용자 행동과 네트워크 연결을 함께 분석하고, 예상치 못한 연결만 알림으로 띄워주면 좋겠음
    팝업 대신 CLI 기반의 자동 허용 래퍼도 있으면 편리할 것 같음