기술 가이드

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
저자
편집

유사한 자료

탈옥 없이 아이폰 유료 앱 무료로 받기
모바일

탈옥 없이 아이폰 유료 앱 무료로 받기

RAID1 하드 드라이브 교체 및 테스트 가이드
스토리지

RAID1 하드 드라이브 교체 및 테스트 가이드

Ubuntu 18.04에 Opigno LMS 설치 가이드
튜토리얼

Ubuntu 18.04에 Opigno LMS 설치 가이드

약한 모바일·인터넷 신호 원인과 실전 해결 가이드
통신

약한 모바일·인터넷 신호 원인과 실전 해결 가이드

Windows 작업표시줄 고정으로 이동·크기 변경 차단
Windows

Windows 작업표시줄 고정으로 이동·크기 변경 차단

Discord TTS 오류 해결 및 활성화 가이드
기술 가이드

Discord TTS 오류 해결 및 활성화 가이드