Debian Etch에 Dansguardian 멀티 그룹 필터링과 NTLM 인증 Squid 설치 및 구성 방법
개요
이 문서는 다음을 목표로 합니다.
- 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-serverSSH로 접속한 뒤 이하 작업을 진행할 수 있습니다.
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-freeApt가 백포트에서 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: 999Note: 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)을 지원합니다. 기본 전략은 다음 중 하나를 선택하는 것입니다.
- Squid의 인증 결과에 따라 서로 다른 Dansguardian 인스턴스(포트별)를 배치하고, iptables 또는 Squid ACL로 트래픽을 포워딩하여 그룹별 필터를 적용한다.
- Dansguardian에서 제공하는 필터그룹 기능을 사용하고, 요청 헤더나 인증 정보를 기반으로 그룹을 선택하도록 Squid에서 헤더를 전달한다.
- 원격 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 MASQUERADEHTTP를 Squid 투명 포트로 리다이렉트(위 예와 동일):
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128Important: 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가 헬퍼를 실행할 수 있도록 권한 설정
롤백 및 복구 절차
- 변경 전 백업: /etc/samba/smb.conf.bak, /etc/squid/squid.conf.bak, /etc/dansguardian/dansguardian.conf.bak
- 서비스 중지: Dansguardian, Squid, Samba, Winbind 순으로 중지
- iptables 규칙 초기화(필요 시): iptables -F, iptables -t nat -F
- 원본 설정 파일 복원
- 서비스 재시작 및 기본 연결 확인
보안 및 개인정보 노트
- NTLM은 네트워크 인증 방식 중 하나로, 최신 환경에서는 Kerberos(및 최신 브라우저 설정)를 권장합니다. 가능한 경우 HTTPS와 세션 암호화를 적용하세요.
- 필터링 로그는 개인정보에 해당할 수 있으므로 보존 기간, 접근 권한을 명확히 정의하세요.
역할 기반 체크리스트
네트워크 관리자
- DNS, NTP, Kerberos 설정 검증
- Samba/Winbind 도메인 가입 및 신뢰 테스트
- Squid와 ntlm_auth 헬퍼 구성
보안 담당자
- Dansguardian 필터 그룹 정책 검토
- 로그 보존 및 접근 통제 정책 수립
헬프데스크
- 브라우저 프록시 설정 안내
- 인증 실패시 기본 점검 절차(시간, 네트워크, 자격증명)
미니 방법론(배포 시 권장 순서)
- 베이스 시스템 설치 및 네트워크 인터페이스 확인
- DNS/시간 동기화 설정
- Samba/Winbind 도메인 가입 및 검증
- Squid 기본 인증 설정 및 로컬 테스트
- Dansguardian 단일 그룹으로 연동 테스트
- 멀티 그룹 전략 적용 및 점진적 롤아웃
- 모니터링과 로그 검수
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: 이 문서는 교육·참고용으로, 운영 환경에 적용 시 정책·법적 요구사항을 함께 검토하시기 바랍니다.