리틀 스니치 for Linux

1 day ago 2
  • 애플리케이션의 네트워크 연결을 시각화하고 제어할 수 있는 도구로, 어떤 프로그램이 어떤 서버와 통신하는지 확인 가능
  • 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) 이지만 무료 사용 및 재배포 가능
Read Entire Article