웹사이트 검색

Ubuntu 20.04에 Squid 프록시 서버를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. Squid 프록시 설치\n
  4. IP 기반 인증 설정
  5. 사용자 기반 인증 설정
  6. 결합 인증 설정\n
  7. 트래픽을 익명화하도록 Squid 설정\n
  8. 오징어 프록시 확인\n
  9. 결론

Squid는 주로 트래픽, 보안 및 DNS 조회 필터링에 사용되는 모든 기능을 갖춘 Linux 기반 프록시 애플리케이션입니다. 또한 리소스를 캐싱하여 웹 서버 성능을 향상시키는 데 사용됩니다. 간단히 말해서 Squid 서버는 인바운드 클라이언트 요청을 더 쉽게 검색할 수 있도록 데이터가 저장된 서버로 리디렉션하는 인터넷과 데스크톱 컴퓨터 사이에서 중개자 역할을 하는 컴퓨터입니다. HTTP, FTP, TLS, SSL, Internet Gopher 및 HTTPS를 포함한 여러 프로토콜을 지원합니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 Squid 프록시 서버를 설치하고 설정하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 20.04를 실행하는 서버.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령으로 업데이트할 수 있습니다.

apt-get update -y

모든 패키지가 업데이트되면 시스템을 다시 시작하여 변경 사항을 적용하십시오.

오징어 프록시 설치

기본적으로 Squid 패키지는 Ubuntu 20.04 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install squid -y

Squid가 설치되면 다음 명령을 사용하여 Squid 서비스의 상태를 확인할 수 있습니다.

systemctl status squid

다음 출력이 표시되어야 합니다.

? squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago
       Docs: man:squid(8)
    Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
    Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
   Main PID: 49283 (squid)
      Tasks: 4 (limit: 2353)
     Memory: 16.4M
     CGroup: /system.slice/squid.service
             ??49283 /usr/sbin/squid -sYC
             ??49285 (squid-1) --kid squid-1 -sYC
             ??49287 (logfile-daemon) /var/log/squid/access.log
             ??49288 (pinger)

Aug 23 12:00:24 ubunt4 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubunt4 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubunt4 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubunt4 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubunt4 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubunt4 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubunt4 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubunt4 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubunt4 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubunt4 squid[49285]: storeLateRelease: released 0 objects

기본적으로 Squid는 포트 3128에서 수신 대기합니다. 다음 명령으로 확인할 수 있습니다.

netstat -plunt | grep 3128

다음 출력이 표시되어야 합니다.

tcp6       0      0 :::3128                 :::*                    LISTEN      50017/(squid-1)

완료되면 다음 단계로 진행할 수 있습니다.

IP 기반 인증 설정

클라이언트가 인터넷에 액세스하도록 제한할 수 있는 몇 가지 방법이 있습니다. 이 섹션에서는 클라이언트 IP 주소를 기반으로 인증하도록 Squid를 설정합니다.

Squid 기본 구성 파일을 편집하여 수행할 수 있습니다.

nano /etc/squid/squid.conf

파일 시작 부분에 다음 줄을 추가합니다.

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2

완료되면 파일을 저장하고 닫습니다. 그런 다음 Squid 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart squid

어디에:

  • client1 및 client2는 클라이언트 컴퓨터를 식별하는 이름입니다.\n
  • 192.168.10.10 및 192.168.10.11은 클라이언트 컴퓨터의 IP 주소입니다.\n

이제 IP 192.168.10.10 및 192.168.10.11로 구성된 컴퓨터만 인터넷에 액세스할 수 있습니다.

사용자 기반 인증 설정

사용자 및 암호를 기반으로 인증하도록 Squid를 설정할 수도 있습니다. 이렇게 하려면 시스템에 Apache utils 패키지를 설치해야 합니다.

다음 명령을 실행하여 Apache utils 패키지를 설치합니다.

apt install apache2-utils -y

설치가 완료되면 다음 명령을 사용하여 첫 번째 사용자를 생성합니다.

htpasswd /etc/squid/passwd client1

아래와 같이 비밀번호를 설정하라는 메시지가 표시됩니다.

New password: 
Re-type new password: 
Adding password for user client1

그런 다음 다음 명령을 사용하여 두 번째 사용자를 만듭니다.

htpasswd /etc/squid/passwd client2

아래와 같이 비밀번호를 설정합니다.

New password: 
Re-type new password: 
Adding password for user client2

다음으로 다음 명령을 사용하여 두 사용자를 모두 확인할 수 있습니다.

cat /etc/squid/passwd

다음 출력이 표시되어야 합니다.

client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/
client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0

다음으로 Squid 기본 구성 파일을 엽니다.

nano /etc/squid/squid.conf

이전 섹션에서 추가한 처음 세 줄을 제거하고 파일 시작 부분에 다음 줄을 추가합니다.

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

파일을 저장하고 닫습니다. 그런 다음 Squid 프록시 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart squid

이제 인터넷에 액세스하려면 사용자 이름과 암호를 입력해야 합니다.

결합된 인증 설정

IP 주소와 사용자 이름/암호를 기반으로 클라이언트를 인증하도록 Squid를 설정할 수도 있습니다.

Squid 기본 구성 파일을 엽니다.

nano /etc/squid/squid.conf

이전 섹션에서 추가한 다음 줄을 찾습니다.

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

그리고 다음 줄로 바꿉니다.

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users

완료되면 파일을 저장하고 닫은 다음 Squid 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart squid

트래픽을 익명화하도록 Squid 설정

다음으로 Squid HTTP 프록시에서 트래픽을 수신하는 서버에서 클라이언트 IP 주소를 마스킹하는 몇 가지 규칙을 추가해야 합니다.

Squid 기본 구성 파일을 편집하여 이를 수행할 수 있습니다.

nano /etc/squid/squid.conf

파일 시작 부분에 다음 줄을 추가합니다.

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

완료되면 파일을 저장하고 닫은 다음 Squid 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart squid

오징어 프록시 확인

다음으로 Mozilla 웹 브라우저에서 프록시 서버를 정의해야 합니다.

클라이언트 시스템으로 이동하여 Mozilla 웹 브라우저를 열고 아래와 같이 편집 => 기본 설정을 클릭합니다.

네트워크 설정 섹션을 클릭하고 설정을 클릭합니다. 다음 페이지가 표시됩니다.

수동 프록시 구성 라디오 버튼을 선택하고 HTTP 호스트 필드에 Squid 서버 IP 주소를 입력하고 포트 필드에 3128을 입력하고 모든 프로토콜에 이 프록시 서버 사용 확인란을 선택한 다음 확인 버튼을 클릭하여 설정을 저장합니다.

이제 브라우저는 Squid 프록시를 통해 인터넷을 탐색하도록 구성되었습니다.

이를 확인하려면 URL https://www.whatismyip.com/을 입력하십시오. 아래와 같이 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.

이전에 만든 Squid 프록시 서버 사용자 이름과 암호를 제공하고 확인 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

위 페이지에는 클라이언트 컴퓨터의 IP 주소 대신 Squid 서버 IP 주소가 표시되어야 합니다.

결론

축하합니다! Ubuntu 20.04 서버에 Squid 프록시 서버를 성공적으로 설치하고 구성했습니다. 단어, 도메인 및 IP를 기반으로 특정 웹 사이트를 제한하도록 Squid 프록시를 구성할 수도 있습니다. 자세한 내용은 Squid 공식 문서를 참조하십시오.