서버 설정 · 4 min read · Sep 23, 2025

데비안 스퀴즈, 스쿼드, 케르베로스/LDAP 인증, 액티브 디렉토리 통합 및 사이핀 리포터

데비안 스퀴즈, 스쿼드, 케르베로스/LDAP 인증, 액티브 디렉토리 통합 및 사이핀 리포터

소개

이 문서는 Kerberos를 사용하여 인증을 위해 액티브 디렉토리와 원활하게 통합되는 스쿼드 프록시의 설정을 다룹니다. LDAP는 Kerberos를 통해 인증되지 않은 사용자를 위한 백업으로 사용됩니다. 권한 관리는 액티브 디렉토리의 그룹에 의해 관리됩니다. 이는 NTLMv2를 지원하지 않는 Windows 7 클라이언트에 특히 유용합니다. 사이트 접근 및 제한을 위한 화이트리스트 및 블랙리스트를 사용할 수 있습니다.

이 가이드에서는 다음 예제를 사용합니다. 필요한 경우 클라이언트 도메인, 호스트 이름 및 IP로 섹션을 업데이트해야 합니다.

  • 도메인 = example.local
  • 서브넷 = 192.168.0.0/24
  • 프록시 서버: IP = 192.168.0.26, HOSTNAME = squidproxy.example.local
  • Windows 서버 1: IP = 192.168.0.1, HOSTNAME = domaincontroller1.example.local
  • Windows 서버 2: IP = 192.168.0.10, HOSTNAME = server2.example.local

기본적인 데비안 스퀴즈 설치와 기본적인 데비안 관리 기술이 필요합니다. vi가 텍스트 편집기로 사용됩니다.

전제 조건

클라이언트 인터넷 익스플로러 브라우저는 인터넷 옵션:: 고급 설정에서 “통합 Windows 인증 사용”이 선택되어 있어야 하며 프록시 자동 감지가 활성화되어 있어야 합니다. 확실하지 않은 경우 구글링하세요. 모든 최신 웹 브라우저는 프록시 자동 감지를 지원합니다. Firefox와 Chrome도 Windows 인증을 지원합니다.

DNS 구성

dnsutils를 설치합니다:

apt-get install dnsutils

Windows DNS 서버에서 프록시 서버의 호스트 이름에 대한 새로운 A 레코드 항목을 추가하고 해당 PTR(역 DNS) 항목도 생성되어 작동하는지 확인합니다. 프록시가 이름 해석을 위해 Windows DNS 서버를 사용하고 있는지 확인하고 /etc/resolv.conf를 적절히 업데이트합니다.

vi /etc/resolv.conf
search example.local
nameserver 192.168.0.1
nameserver 192.168.0.10

내부 및 외부 호스트 이름에 핑을 보내 DNS가 작동하는지 확인합니다.

ping domaincontroller1.example.local -c 4 && ping google.com -c 4

Windows DNS에서 Windows 서버와 로컬 프록시 IP를 역 조회할 수 있는지 확인합니다.

dig -x 192.168.0.1
dig -x 192.168.0.26

경고: DNS 조회가 실패하면 수정될 때까지 진행하지 마십시오. 그렇지 않으면 프록시 인증이 실패합니다.

NTP 구성

ntp 패키지를 설치합니다:

apt-get install ntp

Kerberos는 인증을 위해 Windows 도메인 컨트롤러와 시간이 동기화되어야 하므로 프록시가 그들로부터 시간을 얻도록 구성합니다.

vi /etc/ntp.conf

다음 섹션을 찾아 ntp 서버를 필요에 따라 업데이트합니다. 도메인 컨트롤러나 NTP 서버가 여러 개 있는 경우 여러 줄을 추가할 수 있습니다.

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.local

그런 다음 NTP를 재시작하고 테스트합니다.

invoke-rc.d ntp restart
tpq -p

도메인 컨트롤러 및 conf 파일에 나타나는 순서대로 처리되는 다른 NTP 서버를 참조하는 출력을 볼 수 있어야 합니다.

Kerberos 구성

Kerberos 패키지를 설치합니다:

apt-get install krb5-user libkrb53

제공된 기본값을 수락합니다. 우리는 그것들을 덮어쓰고 있습니다.

Kerberos를 설정합니다.

cp /etc/krb5.conf /etc/krb5.conf.default
cat /dev/null > /etc/krb5.conf
vi /etc/krb5.conf

파일을 편집하여 변수(강조 표시된)를 클라이언트의 도메인 및 서버로 교체합니다.

경고: Windows 도메인 컨트롤러의 OS 버전에 따라 관련 Windows 200X 섹션의 주석을 제거하고 반대 섹션의 주석을 추가하십시오.

도메인 컨트롤러가 1개만 있는 경우 “[realms]” 섹션에서 추가 “kdc” 항목을 제거합니다.

[libdefaults]
        default_realm = EXAMPLE.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/PROXY.keytab
; for Windows 2003
        default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; for Windows 2008 with AES
;        default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
        EXAMPLE.LOCAL = {
                kdc = domaincontroller1.example.local
                kdc = server2.example.local
                admin_server = domaincontroller1.example.local
                default_domain = example.local
        }
[domain_realm]
        .example.local = EXAMPLE.LOCAL
        example.local = EXAMPLE.LOCAL

스쿼드 3 설치

apt-get install squid3 ldap-utils

참고: 스쿼드 구성은 msktutil이 구성된 후에 이루어집니다.

msktutil 설치 및 실행

msktutil 패키지를 얻어 설치합니다.

cd /var/cache/apt/archives/
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules
dpkg -i msktutil_0.4-2_i386.deb
cd

msktutil이 액세스를 위해 액티브 디렉토리에 프록시 객체를 생성할 수 있도록 서버에 Kerberos 세션을 시작합니다.

kinit administrator

도메인 관리자 비밀번호를 입력하십시오.

오류 없이 반환되어야 합니다. 다음으로 티켓을 성공적으로 얻었는지 확인할 수 있습니다:

klist

이제 서비스 원칙으로 AD에서 프록시를 구성합니다. (강조된 값을 네트워크에 맞게 업데이트하십시오.)

경고: msktutil을 사용하여 생성한 OU에서 객체를 이동해서는 안 됩니다.

msktutil -c -b “CN=COMPUTERS” -s HTTP -k /etc/squid3/PROXY.keytab –computer-name SQUIDPROXY \
–upn HTTP/squidproxy.example.local –server domaincontroller1.example.local –verbose

서버 2008 도메인을 사용하는 경우 명령 끝에 “–enctypes 28”을 추가합니다.

msktutil -c -b “CN=COMPUTERS” -s HTTP -k /etc/squid3/PROXY.keytab –computer-name SQUIDPROXY \
–upn HTTP/squidproxy.example.local –server domaincontroller1.example.local –verbose –enctypes 28

스쿼드가 키탭을 읽을 수 있도록 키탭의 권한을 설정합니다.

chgrp proxy /etc/squid3/PROXY.keytab
chmod g+r /etc/squid3/PROXY.keytab

Windows 서버에서 SQUIDPROXY 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 “계정 재설정”을 선택하여 AD에서 컴퓨터 계정을 재설정한 다음, msktutil을 다음과 같이 실행하여 키탭이 예상대로 업데이트되고 msktutil이 /etc/krb5.conf에서 키탭을 올바르게 가져오는지 확인합니다.

먼저 프록시를 재부팅하여 kinit 명령으로 생성된 Kerberos 티켓을 지운 다음 다음을 실행합니다:

msktutil --auto-update --verbose

키탭을 찾을 수 없는 경우 명령에 “-k /etc/squid3/PROXY.keytab”를 추가하여 작동하는지 확인한 다음 해결될 때까지 문제를 해결하십시오. 그렇지 않으면 사용자가 스쿼드로 인증할 수 없습니다.

다음 내용을 크론에 추가하여 만료될 때(일반적으로 30일 정도) 액티브 디렉토리에서 컴퓨터 계정을 자동으로 업데이트할 수 있습니다. 필요시 syslog에서 오류를 확인할 수 있도록 logger를 통해 파이프합니다. msktutil은 기본 /etc/krb5.conf 파일을 매개변수로 사용하므로 변경할 경우 이를 염두에 두십시오.

SHELL 및 PATH 변수는 크론이 제대로 실행되도록 하기 위해 존재합니다. 이를 변경하려면 아는 대로 변경하십시오.

crontab -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.