기술 가이드

Squid 및 DansGuardian 투명 프록시 구성 가이드

6 min read 네트워킹 업데이트됨 11 Oct 2025
Squid 및 DansGuardian 투명 프록시 구성 가이드
Squid 및 DansGuardian 투명 프록시 구성 가이드

이 문서는 Ubuntu 계열 시스템에서 Squid 프록시와 DansGuardian을 투명 프록시로 연결하고 NTLM 인증 및 Winbind 권한 문제를 해결하는 단계별 가이드입니다. 주요 구성 파일 수정, 권한 영구화 스크립트 추가, ipmasq 방화벽 규칙 적용, Webmin 모듈 설치 및 점검 목록을 제공합니다.

목표 및 적용 범위

이 가이드는 다음을 달성하도록 설계되었습니다.

  • Squid를 NTLM 인증으로 구성하여 도메인 사용자 인증 지원
  • DansGuardian을 앞단 필터로 배치하여 콘텐츠 필터링을 수행
  • Winbindd 권한 문제 해결을 위해 부팅 시 권한을 재설정
  • ipmasq로 투명 프록시를 라우팅하고 포트 포워딩을 설정
  • Webmin에서 DansGuardian 모듈을 설치하여 관리 편의성 제공

대상 독자: 리눅스 서버 관리자, 네트워크 엔지니어. 사전 요구: 기본적인 쉘 사용, 루트 권한, Samba/Winbind 및 도메인 가입 경험.

사전 점검 체크리스트

  • 서버가 도메인에 가입되어 있는지 확인합니다.
  • Samba/Winbind가 설치되고 실행 중인지 확인합니다.
  • Squid 및 DansGuardian이 설치되어 있는지 확인합니다.
  • Webmin이 설치되어 있거나 설치 가능한지 확인합니다.
  • 방화벽/라우터 접근 권한이 있는지 확인합니다.

Important

Squid의 forwarded_for 기본값은 내부 IP를 외부 사이트로 전달할 수 있으니 반드시 설정 변경을 적용하세요.


1. Squid 프록시 서버 구성

  1. 설정 파일 백업 및 편집

다음 명령으로 설정 파일을 백업하고 편집합니다.

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
nano -c /etc/squid/squid.conf

원본 지시대로 다음 줄을 수정하세요 (라인 번호는 예시이며 실제 파일의 위치를 확인하세요).

  • 73번째 줄을 다음으로 변경: http_port 127.0.0.1:3128 transparent
  • 74번째 줄을 다음으로 변경: http_port 8080
  • 593번째 줄을 다음으로 변경: cache_peer 127.0.0.1 parent 8081 0 no-query login=*:nopassword
  1. NTLM/Basic helper 활성화

다음 블록을 주석 해제하거나 활성화합니다. 라인 범위는 예시이므로 실제 파일에서 해당 블록을 찾아 다음 실행 파일로 대체하세요.

  • 1791부터 1783(역순 표기 오류 가능) 범위를 주석 해제하여 다음으로 교체:

/usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp

  • 1800부터 1803 범위를 주석 해제하여 다음으로 교체:

/usr/bin/ntlm_auth –helper-protocol=squid-2.5-basic

  1. ACL 및 접근 정책 수정
  • 2449번째 줄: acl ntlm_auth proxy_auth REQUIRED
  • 2579번째 줄: http_access allow ntlm_auth
  • 3161번째 줄: forwarded_for off

이 설정은 Squid가 프록시를 통해 연결된 사용자의 도메인 인증을 요구하고, 클라이언트의 실제 내부 IP가 외부 사이트에 전달되지 않도록 합니다.

중요 설명

forwarded_for off는 내부 IP가 외부에 노출되는 것을 방지합니다. 기본값을 그대로 두면 내부 네트워크 IP가 방문 사이트에 전송됩니다.

설정 저장 후 Squid를 재시작하여 적용하세요.


2. Winbindd 권한 문제 해결 (부팅 시 권한 재설정)

문제: Squid가 Winbindd의 특수 소켓 /var/run/samba/winbindd_privileged에 접근해야 하지만 해당 파일의 그룹 권한이 초기화되어 접근이 차단될 수 있습니다. 재부팅 시 권한이 초기화되므로 부팅 시마다 권한을 재설정하는 스크립트를 추가합니다.

/etc/init.d/winbind-ch.sh 파일을 생성/편집하고 다음 내용을 붙여넣습니다.

#!/bin/sh
#set -x
WINBINDD_PRIVILEGED=/var/run/samba/winbindd_privileged
chmodgrp() {
chgrp proxy $WINBINDD_PRIVILEGED || return 1
chmod g+w $WINBINDD_PRIVILEGED || return 1
}
case "$1" in
start)
chmodgrp
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
#EOF

그다음 부팅 스크립트에 추가합니다.

update-rc.d winbind-ch.sh start 21 2 3 4 5 .

이 스크립트는 부팅 시 winbindd 소켓의 그룹을 proxy로 변경하고 그룹 쓰기 권한을 부여합니다. 권한 문제가 계속 발생하면 systemd 환경에서는 별도의 systemd 서비스 단위 파일로 전환하는 것을 권장합니다.

Notes

systemd 기반 시스템에서는 /etc/init.d 스크립트 대신 systemd 서비스 유닛을 사용하는 편이 더 안정적입니다. 이 가이드는 init 스크립트 방식을 설명하지만 필요하면 systemd 서비스 유닛 예시를 요청하세요.


3. DansGuardian 구성

  1. 기본 설정 편집

편집할 파일:

/etc/dansguardian/dansguardian.conf

  • 3번째 줄을 주석 처리
  • 62번째 줄에서 포트를 8080에서 8081로 변경
  • 102번째 줄에서 filtergroups = 1을 filtergroups = 2로 변경하고 그룹 파일을 생성

그룹 파일 복사 및 편집:

cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf2.conf
nano -c /etc/dansguardian/dansguardianf2.conf

  • 해당 파일의 29번째 줄을 다음으로 변경: naughtynesslimit = 100
  1. 바이러스 정의 예외

안티바이러스 업데이트 서버의 정의 파일은 스캐닝에서 차단될 가능성이 높으므로 예외에 추가하세요.

  • /etc/dansguardian/exceptionvirussitelist 파일에 AV 정의 업데이트 도메인을 추가합니다. 예: activeupdate.trendmicro.com
  • 필요하면 /etc/dansguardian/exceptionsitelist에도 도메인 추가. 예: trendmicro.com
  1. DansGuardian 재시작
/etc/init.d/dansguardian restart

주의

Defang 또는 다른 보안 장치가 있는 경우 추가 예외가 필요할 수 있습니다. AV 정의 URL은 자주 바뀔 수 있으므로 문제가 생기면 로그를 확인하여 차단된 호스트를 파악하세요.


4. 방화벽 구성 및 투명 프록시 라우팅

ipmasq 설치:

apt-get install ipmasq -y

위에서 DansGuardian을 8081 포트로 설정했으므로 모든 아웃고잉 HTTP(포트 80) 트래픽을 8081로 리다이렉션해야 합니다. ipmasq 예제 규칙을 복사합니다:

cp /usr/share/doc/ipmasq/examples/basics/I89tproxy.rul /etc/ipmasq/rules/I89tproxy.rul

내부 서버에 포트 포워딩이 필요한 경우 다음 예제를 참고하세요:

/usr/share/doc/ipmasq/examples/dnat/C50dnat.rul

네트워크 토폴로지 힌트

  • 도메인에 가입된 클라이언트: 브라우저 -> Squid(127.0.0.1:3128) -> DansGuardian(8081) -> Squid(8080) -> 인터넷
  • 비도메인 클라이언트: 브라우저 -> DansGuardian(8081) -> Squid(8080) -> 인터넷

이 흐름 때문에 로그에서 내부 도메인 클라이언트의 요청이 127.0.0.1로 보일 수 있습니다. 이는 로컬 루프백을 통해 프록시 체인이 연결되기 때문입니다.


5. Webmin에 DansGuardian 모듈 설치

Web 브라우저로 다음에 접속하여 로그인합니다.

https://192.168.1.1:10000/

Webmin > Webmin Configuration > Webmin Modules 로 이동합니다. “From ftp or http URL” 옵션을 선택하고 다음 URL을 붙여넣어 설치합니다.

http://internap.dl.sourceforge.net/sourceforge/dgwebminmodule/dg-0.5.10-pr5.wbm

설치 후 Webmin을 통해 DansGuardian 규칙 및 예외를 더 쉽게 관리할 수 있습니다.


6. 최종 테스트 및 검증

  1. 서버 재부팅
  2. 테스트 브라우저의 프록시를 서버 IP와 포트 8080으로 설정
  3. 도메인에 가입된 컴퓨터에서 사이트 접속: 자동 NTLM 인증이 작동하는지 확인
  4. 도메인 가입이 안 된 컴퓨터에서 브라우저 접속: 차단/허용 로그와 사용자 표시를 확인
  5. Webmin의 DansGuardian 로그와 시스템 syslog를 확인하여 인증/차단 오류를 점검

Internet Explorer에서 NTLM 실패 시 사용자 이름을 도메인\사용자 형식으로 입력해야 할 수 있습니다.


문제 해결 체크리스트

  • Squid 로그(/var/log/squid/) 및 syslog에서 인증 및 연결 에러 확인
  • /var/run/samba/winbindd_privileged 권한이 proxy 그룹, 그룹 쓰기 권한인지 확인
  • ntlm_auth 경로가 실제로 존재하는지 확인: /usr/bin/ntlm_auth
  • ipmasq 규칙이 올바르게 적용되었는지 확인: iptables 규칙 확인
  • DansGuardian 로그에서 예외로 지정한 도메인이 차단되는지 확인

간단한 진단 명령 예시:

  • ps aux | grep winbind
  • ls -l /var/run/samba/winbindd_privileged
  • grep ntlm_auth /etc/squid/squid.conf
  • iptables -t nat -L -n –line-numbers

역할 기반 체크리스트

관리자(서버 설치/설정 담당)

  • Samba/Winbind 설치 및 도메인 가입 완료
  • Squid, DansGuardian 설치 및 서비스 활성화
  • init 스크립트 또는 systemd 서비스로 권한 부여 자동화
  • ipmasq 규칙 배포 및 방화벽 포트 검증

운영자(일상 운영/모니터링 담당)

  • DansGuardian 및 Squid 로그 주기적 확인
  • 차단 false-positive 모니터링 및 예외 적용
  • Webmin을 통한 정책 변경 시 변경 기록 유지

보안 및 개인정보 고려사항

  • forwarded_for off 설정으로 클라이언트 내부 IP 노출을 차단하세요.
  • NTLM 인증 로그에는 사용자 계정 정보가 포함될 수 있습니다. 로그 보관 정책 및 접근 제어를 검토하세요.
  • 예외 도메인에 민감한 서비스가 포함되지 않도록 주의하세요.

대체 접근법 및 확장 아이디어

  • systemd 환경에서는 앞서 설명한 init 스크립트 대신 systemd 서비스 단위를 작성하여 더 견고하게 권한을 설정하세요.
  • Traffic 관리를 위해 Squid 캐시 정책을 조정하여 대역폭 절감 효과를 노릴 수 있습니다.
  • 고가용성이 필요하면 Squid/DansGuardian을 여러 대 구성하고 로드 밸런서를 배치하세요.

테스트 케이스와 수락 기준

  • 도메인 가입 사용자가 자동으로 NTLM 인증으로 인터넷 접속 가능
  • 비도메인 사용자는 필터 규칙에 따라 적절히 차단/허용됨
  • 재부팅 후에도 /var/run/samba/winbindd_privileged 권한이 올바르게 설정됨
  • 로그에 도메인 사용자명과 접속 URL이 나타남(개인정보 정책에 맞게 로그 보관)

요약

이 가이드는 Squid와 DansGuardian을 연동하여 투명 프록시를 구성하고 Winbind 권한 문제를 부팅 시 자동으로 해결하는 방법을 설명합니다. ipmasq로 트래픽을 리다이렉트하고 Webmin 모듈을 통해 관리를 편리하게 하며, 테스트 및 문제 해결 체크리스트를 제공합니다. 구성 변경 후에는 로그를 통해 인증 흐름과 필터링 동작을 반드시 검증하세요.

참고 링크

공유하기: 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로 원격 네트워크 폴더 연결하기