기술 가이드

Debian Etch에 Dansguardian 멀티 그룹 필터링과 NTLM 인증 Squid 설치 및 구성 방법

7 min read 네트워크 업데이트됨 22 Oct 2025
Debian Etch에 Dansguardian+Squid(NTLM) 구성
Debian Etch에 Dansguardian+Squid(NTLM) 구성

개요

이 문서는 다음을 목표로 합니다.

  • Squid를 통해 NTLM 인증을 수행하고 인증된 사용자를 기반으로 접근을 제어합니다.
  • Dansguardian으로 사용자 또는 그룹별로 다른 필터링 정책을 적용합니다.
  • dnsmasq와 resolvconf로 내부 DNS/DHCP 동작을 안정화합니다.
  • Samba/Winbind을 통해 Active Directory 도메인에 서버를 조인합니다.
  • ClamAV 백포트 사용으로 Dansguardian의 바이러스 검사 성능 문제를 완화합니다.

주요 컴포넌트와 역할 요약

  • eth0: 외부(인터넷) 인터페이스
  • eth1: 내부 네트워크 인터페이스, 기본 주소 192.168.1.1/24
  • dnsmasq: 내부 DNS 포워더 및 선택적 DHCP
  • resolvconf: 동적 네임서버 관리를 통합
  • Samba/Winbind: AD 인증 통합 및 ntlm_auth 헬퍼 제공
  • Squid: HTTP 프록시 + NTLM 인증
  • Dansguardian: 콘텐츠 필터링(멀티 그룹)
  • ClamAV: 바이러스 검사(백포트에서 설치 권장)

Important: 실제 운영 전에 테스트 네트워크에서 단계별로 검증하세요. 도메인 조인, 시간 동기, DNS 설정이 NTLM/Kerberos 인증에 직접적인 영향을 미칩니다.

전제조건

  • Debian Etch 최소 설치(베이스 시스템)
  • 두 개의 NIC(eth0 외부, eth1 내부 192.168.1.1/24)
  • 도메인 컨트롤러(예: domaincontroller.EXAMPLEDOMAIN.LOCAL)와 관리자 계정
  • 내부 네트워크 사용자와 그룹이 AD에 존재

베이스 시스템 구성 및 SSH 설치

기본 설치에는 SSH가 포함되지 않으므로 SSH부터 설치합니다.

apt-get install ssh openssh-server

SSH로 접속한 뒤 이하 작업을 진행할 수 있습니다.

ClamAV 백포트 설정(화면 지연 문제 해결 목적)

Etch의 ClamAV가 Dansguardian 시작 시 느리게 로드되는 버그가 있어, 백포트에서 최신 패키지를 받아오도록 설정합니다. /etc/apt/sources.lst에 다음 줄을 추가하세요.

deb http://download.webmin.com/download/repository sarge contrib
deb http://www.backports.org/debian etch-backports main contrib non-free

Apt가 백포트에서 ClamAV만 가져오도록 우선순위를 지정하려면 /etc/apt/preferences에 다음을 추가합니다.

Package: clamav
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-base
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-freshclam
Pin: release a=etch-backports
Pin-Priority: 999
Package: libclamav2
Pin: release a=etch-backports
Pin-Priority: 999

Note: ClamAV의 Etch용 버그가 공식적으로 해결되어 더 이상 백포트가 필요해지면 이 단계를 건너뛸 수 있습니다.

패키지 설치 및 Kerberos 구성

Apt 업데이트 후 주요 패키지를 설치합니다.

apt-get update
apt-get install debian-backports-keyring
apt-get install dnsmasq webmin squid dansguardian samba winbind krb5-user libcompress-zlib-perl resolvconf ntp ntpdate

설치 중에 몇 가지 입력 질문이 나옵니다. 아래 예시 답변은 대소문자 구분이 있으니 정확히 입력하십시오.

  • Workgroup: EXAMPLEDOMAIN
  • Modify smb.conf to use WINS settings from DHCP?: No
  • Kerberos servers for your realm: domaincontroller.EXAMPLEDOMAIN.LOCAL
  • Administrative server for your Kerberos realm: domaincontroller.EXAMPLEDOMAIN.LOCAL

Kerberos 재구성 명령:

dpkg-reconfigure krb5-config

추가 질문 예시:

  • Default Kerberos version 5 realm: EXAMPLEDOMAIN.LOCAL
  • Does DNS contain pointers to your realm’s Kerberos Servers?: Yes

Kerberos, DNS, 시간 동기화 모두 정확해야 NTLM/Kerberos 인증이 정상 동작합니다.

resolvconf와 dnsmasq 설정

많은 인터넷 연결이 동적이므로 pppd나 DHCP로 DNS가 바뀌면 Kerberos 실패가 발생할 수 있습니다. resolvconf를 통해 네임서버 관리를 안정화합니다.

/etc/resolvconf/resolv.conf.d/head 파일을 편집하여 도메인 검색을 추가합니다(예: search exampledomain.local).

dnsmasq는 간단한 DNS 포워더이자 DHCP 서버입니다. /var/run/dnsmasq/resolv.conf 파일에 올바른 상위 네임서버를 넣어야 합니다. 예:

nameserver 
nameserver 
nameserver 

/etc/dnsmasq.conf를 편집하여 성능 및 보안을 개선합니다. 예: 내부 인터페이스를 명시하고(eth0 등) 불필요한 서비스는 비활성화합니다.

nano -c /etc/dnsmasq.conf

문서에서는 특정 줄(예: 14, 16, 71)을 주석 해제하라고 되어 있으나, 실제 파일의 주석 숫자는 배포판에 따라 다를 수 있으니 파일 내 설명을 읽고 적절히 설정하세요.

NTP 설정: 도메인 컨트롤러를 시간 서버로 지정

/etc/ntp.conf를 편집합니다.

nano -c /etc/ntp.conf

기존 pool 서버들을 주석 처리하고 도메인 컨트롤러를 추가합니다.

server domaincontroller.exampledomain.local iburst

시간 동기화가 맞지 않으면 Kerberos 인증이 실패합니다. 반드시 확인하세요.

Samba 구성 및 도메인 가입

먼저 smb.conf 백업 후 편집합니다.

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
nano -c /etc/samba/smb.conf

설정 예시(변경할 줄 위치는 파일 버전에 따라 다름):

  • interfaces = 192.168.1.1/255.255.255.0
  • security = ads
  • winbind trusted domains only = yes
  • realm = EXAMPLEDOMAIN.LOCAL
  • winbind cache time = 3600

samba 및 winbind 재시작, 시간 동기화:

net time set -S domaincontroller
/etc/init.d/samba restart
/etc/init.d/winbind restart

도메인 가입:

net ads join -U Administrator

정상 가입 후 테스트 명령:

wbinfo -t

출력 예: checking the trust secret via RPC calls succeeded

wbinfo -u

도메인 사용자 목록이 나와야 합니다.

wbinfo -g

도메인 그룹 목록이 나와야 합니다.

Squid에서 NTLM 인증 구성 예시

Samba/Winbind를 통해 제공되는 ntlm_auth 헬퍼를 Squid 인증에 연결합니다. squid 설정 파일을 편집하세요.

squid.conf에 다음 줄을 추가합니다(경로는 환경에 따라 다를 수 있음).

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param ntlm keep_alive on

acl authenticated proxy_auth REQUIRED
http_access allow authenticated
  • Squid와 Winbind가 정상 작동하려면 시간, DNS, realm, smb.conf 설정이 정확해야 합니다.
  • 투명 프록시 모드에서는 클라이언트가 프록시를 직접 사용하지 않기 때문에 인증을 강제하려면 브라우저/클라이언트에서 프록시 설정이 필요하거나 추가적인 인증 캡처/리다이렉션 기법을 사용해야 합니다.

Dansguardian 멀티 그룹 필터링 전략

Dansguardian은 여러 필터 그룹(filtergroups)을 지원합니다. 기본 전략은 다음 중 하나를 선택하는 것입니다.

  1. Squid의 인증 결과에 따라 서로 다른 Dansguardian 인스턴스(포트별)를 배치하고, iptables 또는 Squid ACL로 트래픽을 포워딩하여 그룹별 필터를 적용한다.
  2. Dansguardian에서 제공하는 필터그룹 기능을 사용하고, 요청 헤더나 인증 정보를 기반으로 그룹을 선택하도록 Squid에서 헤더를 전달한다.
  3. 원격 ACL 외부 프로그램을 사용하여 Squid 수준에서 그룹 정보를 확인한 뒤, Dansguardian 또는 Squid ACL로 접근을 제어한다.

간단한 구현 예(포트별 Dansguardian 인스턴스):

  • Dansguardian 그룹 A 인스턴스: 포트 8081
  • Dansguardian 그룹 B 인스턴스: 포트 8082
  • Squid는 인증 후 특정 ACL에 따라 요청을 해당 Dansguardian 인스턴스로 전달

iptables로 내부 사용자 IP 대역에 따라 포워딩하려면 소스 IP 기반으로 PREROUTING 규칙을 추가할 수 있습니다(예: 교사/학생 VLAN 구분 시).

# HTTP 트래픽을 Squid 투명 포트로 리디렉션
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# 예: 특정 내부 서브넷을 다른 Dansguardian 포트로 리디렉션(컨셉)
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8081

참고: 실제 다중 그룹 환경에서는 Squid ACL, external_acl_type, ntlm_auth, wbinfo 결과를 조합해 더 세밀한 제어를 구현하는 것이 일반적입니다.

투명 프록시와 NAT 기본 설정

IP 포워딩 활성화:

echo 1 > /proc/sys/net/ipv4/ip_forward

간단한 NAT 예시:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

HTTP를 Squid 투명 포트로 리다이렉트(위 예와 동일):

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Important: HTTPS(포트 443)는 투명 프록시에서 복잡성이 큽니다. HTTPS 필터링/SSL 검사는 법적·보안적 고려사항이 있으므로 신중히 도입하세요.

테스트 및 검증 체크리스트

  • wbinfo -t로 신뢰 키 검증
  • wbinfo -u, wbinfo -g로 사용자/그룹 조회
  • ntlm_auth를 직접 실행해 Squid 헬퍼 연결 확인
  • 브라우저에서 프록시 인증으로 AD 자격증명으로 접속 테스트
  • Dansguardian 로그(/var/log/dansguardian/*)에서 필터링 작동 여부 확인
  • Squid 로그(/var/log/squid/access.log)에서 인증 및 요청 흐름 확인
  • DNS 및 Kerberos가 올바르게 해석되는지 테스트: nslookup, host, kinit 등

문제 발생 시 점검 포인트

  • 시간 불일치: Kerberos/NTLM 실패의 가장 흔한 원인입니다. ntp 동작을 확인하세요.
  • DNS 오류: 도메인 컨트롤러 이름 조회 실패는 인증 실패로 연결됩니다.
  • smb.conf와 realm 설정 오류: security = ads와 realm 값이 적절한지 확인하세요.
  • Winbind 서비스 상태: /etc/init.d/winbind 상태 확인 및 로그 확인
  • 방화벽: LDAP(389), Kerberos(88), RPC/SMB 관련 포트 차단 여부 확인
  • ntlm_auth 경로 및 권한: Squid가 헬퍼를 실행할 수 있도록 권한 설정

롤백 및 복구 절차

  1. 변경 전 백업: /etc/samba/smb.conf.bak, /etc/squid/squid.conf.bak, /etc/dansguardian/dansguardian.conf.bak
  2. 서비스 중지: Dansguardian, Squid, Samba, Winbind 순으로 중지
  3. iptables 규칙 초기화(필요 시): iptables -F, iptables -t nat -F
  4. 원본 설정 파일 복원
  5. 서비스 재시작 및 기본 연결 확인

보안 및 개인정보 노트

  • NTLM은 네트워크 인증 방식 중 하나로, 최신 환경에서는 Kerberos(및 최신 브라우저 설정)를 권장합니다. 가능한 경우 HTTPS와 세션 암호화를 적용하세요.
  • 필터링 로그는 개인정보에 해당할 수 있으므로 보존 기간, 접근 권한을 명확히 정의하세요.

역할 기반 체크리스트

네트워크 관리자

  • DNS, NTP, Kerberos 설정 검증
  • Samba/Winbind 도메인 가입 및 신뢰 테스트
  • Squid와 ntlm_auth 헬퍼 구성

보안 담당자

  • Dansguardian 필터 그룹 정책 검토
  • 로그 보존 및 접근 통제 정책 수립

헬프데스크

  • 브라우저 프록시 설정 안내
  • 인증 실패시 기본 점검 절차(시간, 네트워크, 자격증명)

미니 방법론(배포 시 권장 순서)

  1. 베이스 시스템 설치 및 네트워크 인터페이스 확인
  2. DNS/시간 동기화 설정
  3. Samba/Winbind 도메인 가입 및 검증
  4. Squid 기본 인증 설정 및 로컬 테스트
  5. Dansguardian 단일 그룹으로 연동 테스트
  6. 멀티 그룹 전략 적용 및 점진적 롤아웃
  7. 모니터링과 로그 검수

1라인 용어집

  • ntlm_auth: Samba가 제공하는 Squid용 NTLM 인증 헬퍼
  • wbinfo: Winbind 유틸리티로 AD 사용자/그룹 조회 도구
  • resolvconf: 동적 네임서버 업데이트를 통합하는 유틸리티
  • dnsmasq: 경량 DNS 포워더 및 DHCP 서버

결론

이 가이드는 Debian Etch 환경에서 Dansguardian 멀티 그룹 필터링과 Squid NTLM 인증을 결합해 내부 네트워크에 맞춘 인터넷 게이트웨이를 만드는 전체 흐름을 제공합니다. 핵심 성공 요소는 DNS, 시간 동기화, Samba/Winbind의 안정성입니다. 단계별로 구성하고 각 단계에서 충분히 검증한 후 프로덕션에 적용하세요.

요약

  • DNS와 NTP 동기화가 가장 중요합니다.
  • Samba/Winbind와 ntlm_auth 연동으로 Squid 인증을 수행합니다.
  • Dansguardian은 멀티 그룹 전략으로 구현 가능하며 포트별 인스턴스 또는 헤더 기반 라우팅을 사용해 분기할 수 있습니다.
  • 투명 프록시 구성 시 HTTPS는 별도 고려가 필요합니다.

Notes: 이 문서는 교육·참고용으로, 운영 환경에 적용 시 정책·법적 요구사항을 함께 검토하시기 바랍니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기