웹사이트 검색

CentOS 7/8에서 Squid를 사용하여 HTTP 프록시를 만드는 방법


웹 프록시는 꽤 오랫동안 사용되어 왔으며 전 세계 수백만 명의 사용자가 사용해 왔습니다. 목적은 다양하며 가장 인기 있는 것은 온라인 익명성이지만 웹 프록시를 활용할 수 있는 다른 방법도 있습니다. 다음은 몇 가지 아이디어입니다.

  • 온라인 익명성
  • 온라인 보안 향상
  • 로딩 시간 개선
  • 악성 트래픽 차단
  • 온라인 활동을 기록하세요
  • 지역 제한을 우회하려면
  • 어떤 경우에는 대역폭 사용량을 줄일 수 있습니다.

프록시 서버 작동 방식

프록시 서버는 클라이언트와 클라이언트가 리소스를 요청할 수 있는 다른 서버 사이의 중개자로 사용되는 컴퓨터입니다. 이에 대한 간단한 예는 클라이언트가 온라인 요청(예: 웹 페이지 열기)을 할 때 먼저 프록시 서버에 연결하는 것입니다.

그런 다음 프록시 서버는 로컬 디스크 캐시를 확인하고 거기에서 데이터를 찾을 수 있으면 클라이언트에 데이터를 반환하고, 캐시되지 않은 경우 프록시 IP 주소(서버와는 다름)를 사용하여 클라이언트를 대신하여 요청합니다. 클라이언트) 그런 다음 데이터를 클라이언트에 반환합니다. 프록시 서버는 새 데이터를 캐시하려고 시도하고 동일한 서버에 대한 향후 요청에 이를 사용합니다.

오징어 프록시란?

Squid는 다양한 조직에서 사용되는 웹 프록시입니다. 캐싱 프록시로 자주 사용되며 응답 시간을 개선하고 대역폭 사용량을 줄입니다.

이 기사의 목적에 따라 Linode CentOS 7 VPS에 Squid를 설치하고 이를 HTTP 프록시 서버로 사용하겠습니다.

CentOS 7/8에 Squid를 설치하는 방법

시작하기 전에 Squid에는 최소 요구 사항이 없지만 RAM 사용량은 프록시 서버를 통해 인터넷을 검색하는 클라이언트에 따라 달라질 수 있다는 점을 알아야 합니다.

Squid는 기본 저장소에 포함되어 있으므로 설치가 간단하고 간단합니다. 그러나 설치하기 전에 실행하여 패키지가 최신 상태인지 확인하십시오.

yum -y update

오징어 설치를 진행하고 다음 명령을 사용하여 시스템 시작 시 오징어를 시작하고 활성화합니다.

yum -y install squid
systemctl start squid
systemctl  enable squid

이 시점에서 Squid 웹 프록시가 이미 실행 중이어야 하며 서비스 상태를 확인할 수 있습니다.

systemctl status squid
샘플 출력
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

다음은 알아두어야 할 몇 가지 중요한 파일 위치입니다.

  • 오징어 구성 파일: /etc/squid/squid.conf
  • 오징어 액세스 로그: /var/log/squid/access.log
  • 오징어 캐시 로그: /var/log/squid/cache.log

최소 squid.conf 구성 파일(주석 없음)은 다음과 같습니다.

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Squid를 HTTP 프록시로 구성

여기에서는 인증을 위해 클라이언트 IP 주소만 사용하여 Squid를 HTTP 프록시로 구성하는 방법을 보여줍니다.

오징어 ACL 추가

IP 주소가 새 프록시 서버를 통해 웹에 액세스하도록 허용하려면 구성 파일에 새 ACL(액세스 제어 목록) 줄을 추가해야 합니다. .

vim /etc/squid/squid.conf

추가해야 할 줄은 다음과 같습니다.

acl localnet src XX.XX.XX.XX

여기서 XX.XX.XX.XX는 추가하려는 실제 클라이언트 IP 주소입니다. 이 행은 ACL이 정의된 파일의 시작 부분에 추가되어야 합니다. 이 IP 주소를 사용하는 사람을 설명하는 설명을 ACL 옆에 추가하는 것이 좋습니다.

Squid가 로컬 네트워크 외부에 있는 경우 클라이언트의 공용 IP 주소를 추가해야 한다는 점에 유의하는 것이 중요합니다.

새로운 변경 사항을 적용하려면 Squid를 다시 시작해야 합니다.

systemctl  restart squid

오징어 프록시 포트 열기

구성 파일에서 볼 수 있듯이 특정 포트만 연결이 허용됩니다. 구성 파일을 편집하여 더 추가할 수 있습니다.

acl Safe_ports port XXX

XXX는 로드하려는 실제 포트입니다. 이번에도 포트의 용도를 설명하는 설명을 옆에 남겨 두는 것이 좋습니다.

변경 사항을 적용하려면 Squid를 다시 한 번 다시 시작해야 합니다.

systemctl  restart squid

Squid 프록시 클라이언트 인증

아마도 프록시를 사용하기 전에 사용자가 인증을 받기를 원할 것입니다. 이를 위해 기본 HTTP 인증을 활성화할 수 있습니다. 쉽고 빠르게 구성할 수 있습니다.

먼저 httpd-tools가 설치되어 있어야 합니다.

yum -y install httpd-tools

이제 나중에 인증을 위해 사용자 이름을 저장할 파일을 만들어 보겠습니다. Squid는 “squid ” 사용자로 실행되므로 해당 사용자가 파일을 소유해야 합니다.

touch /etc/squid/passwd
chown squid: /etc/squid/passwd

이제 “proxyclient ”라는 새 사용자를 만들고 해당 사용자의 비밀번호를 설정하겠습니다.

htpasswd /etc/squid/passwd proxyclient

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

이제 인증을 구성하려면 구성 파일을 엽니다.

vim /etc/squid/squid.conf

포트 ACL 뒤에 다음 줄을 추가합니다.

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

새로운 변경 사항이 적용되도록 파일을 저장하고 Squid를 다시 시작하세요.

systemctl restart squid

Squid 프록시에서 웹사이트 차단

마지막으로 원치 않는 웹사이트를 차단하는 데 도움이 되는 마지막 ACL을 만듭니다. 먼저 블랙리스트에 등록된 사이트를 저장할 파일을 만듭니다.

touch /etc/squid/blacklisted_sites.acl

차단하려는 일부 도메인을 추가할 수 있습니다. 예를 들어:

.badsite1.com
.badsite2.com

앞의 점은 squid에게 www.badsite1, subsite.badsite1.com 등을 포함한 해당 사이트에 대한 모든 참조를 차단하도록 지시합니다.

이제 Squid의 구성 파일을 엽니다.

vim /etc/squid/squid.conf

포트 ACL 바로 뒤에 다음 두 줄을 추가합니다.

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

이제 파일을 저장하고 오징어를 다시 시작하세요.

systemctl restart squid

모든 것이 올바르게 구성되면 이제 Squid HTTP 프록시를 사용하도록 로컬 클라이언트 브라우저 또는 운영 체제의 네트워크 설정을 구성할 수 있습니다.

결론

이 튜토리얼에서는 Squid HTTP 프록시 서버를 직접 설치, 보안 및 구성하는 방법을 배웠습니다. 방금 얻은 정보를 사용하여 이제 Squid를 통해 들어오고 나가는 트래픽에 대한 몇 가지 기본 필터링을 추가할 수 있습니다.

더 많은 노력을 기울이고 싶다면 근무 시간 동안 일부 웹 사이트를 차단하여 주의가 산만해지는 것을 방지하도록 오징어를 구성할 수도 있습니다. 질문이나 의견이 있으시면 아래 의견란에 게시해 주세요.