SW/리눅스

Ubuntu 18.04 : Squid Proxy 설치, 구성 방법, 예제, 명령어

얇은생각 2021. 10. 13. 07:30
반응형

Squid는 HTTP, HTTPS, FTP 등과 같은 널리 사용되는 네트워크 프로토콜을 지원하는 완벽한 캐시 프록시입니다. Squid는 주로 반복 요청을 캐싱하고, 웹 트래픽을 필터링하고, 지리적 제한이 있는 콘텐츠에 액세스하여 웹 서버의 성능을 향상시키는 데 사용됩니다.

Ubuntu 18.04에 Squid Proxy를 설정하고 이를 사용하도록 Firefox 및 Google Chrome 웹 브라우저를 구성하는 프로세스를 안내합니다.

 

 

 

Ubuntu에 Squid를 설치

Squid 패키지는 기본 Ubuntu 18.04 저장소에 포함되어 있습니다. sudo 사용자로 다음 명령을 입력하여 설치합니다.

sudo apt update
sudo apt install squid

 

 

설치가 완료되면 Squid 서비스가 자동으로 시작됩니다.

설치가 성공했고 Squid 서비스가 실행 중인지 확인하려면 서비스 상태를 인쇄할 다음 명령을 입력합니다.

sudo systemctl status squid

# ● squid.service - LSB: Squid HTTP Proxy version 3.x
#    Loaded: loaded (/etc/init.d/squid; generated)
#    Active: active (running) since Thu 2019-06-27 11:45:17 UTC
# ...

 

 

 

Squid를 구성

/etc/squid/squid.conf 파일을 편집하여 squid를 구성할 수 있습니다. 또한 "포함" 지시문을 사용하여 포함할 수 있는 구성 옵션과 함께 별도의 파일을 사용할 수도 있습니다.

구성 파일에는 각 구성 옵션의 기능을 설명하는 주석이 포함되어 있습니다. 

변경하기 전에 원래 구성 파일을 백업하는 것이 좋습니다.

sudo cp /etc/squid/squid.conf{,.orginal}

 

 

파일을 편집하려면 텍스트 편집기에서 엽니다.

sudo nano /etc/squid/squid.conf

 

 

기본적으로 Squid는 서버의 모든 네트워크 인터페이스에서 포트 3128을 수신하도록 구성되어 있습니다. 

포트를 변경하고 수신 인터페이스를 설정하려면 http_port로 시작하는 줄을 찾아 인터페이스 IP 주소와 새 포트를 지정합니다. 인터페이스가 지정되지 않은 경우 Squid는 모든 인터페이스에서 수신 대기합니다.

# /etc/squid/squid.conf

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

 

 

대부분의 사용자는 모든 인터페이스와 기본 포트에서 Squid를 실행하면 됩니다. 

Squid에서 ACL(액세스 제어 목록)을 사용하여 클라이언트가 웹 리소스에 액세스하는 방법을 제어할 수 있습니다.

 기본적으로 Squid는 로컬 호스트에서만 액세스를 허용합니다.

프록시를 사용할 모든 클라이언트의 고정 IP 주소가 있는 경우 허용된 IP를 포함하는 ACL을 생성할 수 있습니다.

기본 구성 파일에 IP 주소를 추가하는 대신 다음과 같은 IP를 저장할 새 전용 파일을 생성합니다.

# /etc/squid/allowed_ips.txt

192.168.33.1
# All other allowed IPs

 

 

완료되면 기본 구성 파일을 열고 allowed_ips(첫 번째 강조 표시된 줄)라는 이름의 새 ACL을 생성하고 http_access 지시문(두 번째 강조 표시된 줄)을 사용하여 해당 ACL에 액세스할 수 있도록 합니다.

# /etc/squid/squid.conf

# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

 

 

http_access 규칙의 순서가 중요합니다. http_access denied all을(를) 모두 거부하기 전에 줄을 추가해야 합니다. 

http_access 지시문은 방화벽 규칙과 유사한 방식으로 작동합니다. Squid는 규칙을 위에서 아래로 읽으며 규칙이 아래 규칙과 일치하면 처리되지 않습니다.

구성 파일을 변경할 때마다 변경 내용을 적용하려면 Squid 서비스를 재시작해야 합니다.

sudo systemctl restart squid

 

 

 

Squid 인증

Squid는 인증된 사용자에 대한 Samba, LDAP 및 HTTP 기본 인증을 포함하여 다양한 백엔드를 사용할 수 있습니다.

기본 인증을 사용하도록 Squid를 구성합니다. HTTP 프로토콜에 내장된 간단한 인증 방법입니다.

openssl을 사용하여 암호를 생성하고 아래와 같이 tee 명령을 사용하여 /etc/squid/htpasswd 파일에 사용자 이름:passwd를 추가합니다.

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

 

 

암호 "Sz$Zdg69"로 "josh"라는 사용자를 생성하겠습니다.

printf "josh:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd

# josh:RrvgO7NxY86VM

 

 

이제 사용자가 생성되었으므로 HTTP 기본 인증을 실행하고 htpasswd 파일을 포함합니다. 

기본 구성을 열고 다음을 추가합니다.

# /etc/squid/squid.conf

# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

 

 

처음 세 개의 강조 표시된 줄은 Authenticationed라는 이름의 새 ACL을 생성하고 마지막 강조 표시된 줄은 인증된 사용자에 대한 액세스를 허용합니다.

Squid 서비스를 다시 시작합니다.

sudo systemctl restart squid

 

 

 

방화벽을 구성

UFW를 사용하여 방화벽을 관리한다고 가정할 때, Squid 포트를 열 수 있습니다. 이를 위해 기본 Squid 포트에 대한 규칙이 포함된 'Squid' 프로필을 사용하도록 설정합니다.

sudo ufw allow 'Squid'

 

 

 

상태 유형을 확인하려면 다음과 같이 하십시오.

sudo ufw status

# Status: active
# 
# To                         Action      From
# --                         ------      ----
# 22/tcp                     ALLOW       Anywhere
# Squid                      ALLOW       Anywhere
# 22/tcp (v6)                ALLOW       Anywhere (v6)
# Squid (v6)                 ALLOW       Anywhere (v6)

 

 

Squid가 다른 비기본 포트(예: 8888)에서 실행 중인 경우 sudo uflow allow 8888/tcp를 사용하여 해당 포트의 트래픽을 허용할 수 있습니다.

 

 

 

프록시를 사용하도록 브라우저를 구성

이제 Squid(스퀴드)를 설정했으므로 마지막 단계에서는 기본 브라우저를 사용하도록 구성합니다.

 

파이어폭스

아래 단계는 Windows, MacOS 및 Linux에서 동일합니다.

오른쪽 위에서 햄버거 아이콘 ▼를 클릭하여 Firefox의 메뉴를 엽니다.

⚙ Preferences 링크를 클릭합니다. 

아래로 스크롤하여 네트워크 설정 섹션으로 이동한 다음 설정...을 클릭합니다. 버튼을 눌러주세요

 새 창이 열립니다.

 Manual proxy configuration(수동 프록시 구성) 라디오 버튼을 선택합니다.

HTTP Host 필드에 Squid 서버 IP 주소를, Port 필드에 3128을 입력합니다.

모든 프로토콜에 대해 이 프록시 서버 사용 확인란을 선택합니다.

OK(확인) 버튼을 클릭하여 설정을 저장합니다.

Ubuntu 18.04 : Squid Proxy 설치, 구성 방법, 예제, 명령어

 

 

이 때 Firefox가 구성되고 Squid 프록시를 통해 인터넷을 검색할 수 있습니다. 확인하려면 google.com을 열고 "what is my ip"를 입력하면 Squid 서버 IP 주소가 표시됩니다. 

기본 설정으로 되돌리려면 네트워크 설정으로 돌아가서 시스템 프록시 설정 사용 라디오 버튼을 선택하고 설정을 저장합니다. 

FoxyProxy와 같이 Firefox의 프록시 설정을 구성하는 데 도움이 되는 여러 플러그인이 있습니다.

 

 

구글 크롬

Google Chrome은 기본 시스템 프록시 설정을 사용합니다. 운영 체제 프록시 설정을 변경하는 대신 SwitchyOmega와 같은 추가 기능을 사용하거나 명령줄에서 Chrome 웹 브라우저를 시작할 수 있습니다.

새 프로필을 사용하여 Chrome을 시작하고 Squid 서버에 연결하려면 다음 명령을 사용합니다.

 

 

Linux: 다음을 참조하십시오.

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

 

 

MacOS: 다음을 참조하십시오.

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

 

 

Windows: 다음을 참조하십시오.

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

 

 

프로파일이 없는 경우 프로파일이 자동으로 생성됩니다. 이렇게 하면 여러 Chrome 인스턴스를 동시에 실행할 수 있습니다.

프록시 서버가 제대로 작동하는지 확인하려면 google.com을 열고 "what is my ip"를 입력합니다. 브라우저에 표시되는 IP는 서버의 IP 주소여야 합니다.

Ubuntu 18.04에 Squid를 설치하고 사용하도록 브라우저를 구성하는 방법에 대해 배웠습니다.

Squid는 가장 인기 있는 프록시 캐싱 서버 중 하나입니다. 이 기능은 웹 서버의 속도를 향상시키며 사용자가 인터넷에 제한적으로 액세스하는 데 도움이 될 수 있습니다.

반응형