이 절차는 출발지를 제한한 Squid 6.13 프록시에 NCSA 기반 Basic 인증을 추가합니다. Debian 13의 도우미는 /usr/lib/squid/basic_ncsa_auth입니다. 패키지의 경로와 서비스 계정을 확인하세요.

첫 계정 만들기

배포판의 htpasswd 도구를 사용하고 대화형으로 비밀번호를 입력하세요.

sudo htpasswd -c /etc/squid/users proxyuser
sudo chown root:proxy /etc/squid/users
sudo chmod 640 /etc/squid/users

소유권은 Debian 서비스 그룹을 가정합니다. Squid는 파일을 읽어야 하지만 다른 사용자는 읽지 못해야 합니다. 나중에 계정을 추가할 때는 -c를 생략하세요. 새 파일을 만들며 기존 항목을 덮어쓸 수 있습니다.

같은 허용 규칙에서 출발지와 로그인 요구하기

기존 대상 포트, 관리, localhost, 링크 로컬 보호 규칙 뒤에 배치하세요.

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/users
auth_param basic realm PrivateProxy

acl proxy_client src 198.51.100.27/32
acl logged_in proxy_auth REQUIRED

http_access allow proxy_client logged_in
http_access deny all

클라이언트 주소를 Squid가 관측하는 출발지로 바꿉니다. 두 조건이 모두 일치해야 합니다. 로그인 규칙을 우회할 수 있는 앞선 광범위한 클라이언트 허용 규칙을 지우되 리스너와 방화벽 제한은 유지하세요.

구문 분석, 다시 로드, 두 요청 비교

sudo squid -k parse -f /etc/squid/squid.conf

분석 오류를 고친 뒤 테스트 전에 관리되는 Squid 서비스를 다시 로드합니다. 허용된 출발지에서 인증 정보 없이 요청하면 인증 요구를 받아야 합니다. 실제 프록시 호스트 이름으로 승인된 요청과 비교하세요.

curl --proxy http://proxy.example:3128 --proxy-basic --proxy-user proxyuser --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/

사용자 이름만 주면 curl이 비밀번호를 요청합니다. 유효한 요청은 대상에 도달해야 합니다.

Basic 인증은 클라이언트와 프록시 사이의 교환을 암호화하지 않습니다. 이후 대상의 HTTPS는 평문 프록시에 이미 보낸 인증 정보를 보호할 수 없으므로 적절히 보호된 경로를 사용하세요. 이 지시문은 Squid 6.13용입니다. Squid 8은 해당 버전의 설정을 참조하세요.

관련 글