Cum se creează un proxy HTTP folosind Squid pe CentOS 7/8


Proxy-urile web există de ceva timp și au fost folosite de milioane de utilizatori din întreaga lume. Au o gamă largă de scopuri, cele mai populare fiind anonimatul online, dar există și alte moduri prin care puteți profita de proxy-urile web. Iată câteva idei:

  • Anonimat online
  • Îmbunătățiți securitatea online
  • Îmbunătățiți timpii de încărcare
  • Blocați traficul rău intenționat
  • Înregistrează-ți activitatea online
  • Pentru a evita restricțiile regionale
  • În unele cazuri, poate reduce utilizarea lățimii de bandă

Cum funcționează serverul proxy

Serverul proxy este un computer care este folosit ca intermediar între client și alte servere de la care clientul poate solicita resurse. Un exemplu simplu în acest sens este atunci când un client face cereri online (de exemplu dorește să deschidă o pagină web), el se conectează mai întâi la serverul proxy.

Serverul proxy își verifică apoi memoria cache locală a discului și, dacă datele pot fi găsite acolo, va returna datele clientului, dacă nu sunt stocate în cache, va face cererea în numele clientului folosind adresa IP proxy (diferită de clienți) și apoi returnează datele clientului. Serverul proxy va încerca să memoreze în cache noile date și le va folosi pentru cererile viitoare făcute aceluiași server.

Ce este Squid Proxy

Squid este un proxy web care a folosit gama mea largă de organizații. Este adesea folosit ca proxy de stocare în cache și îmbunătățind timpii de răspuns și reducând utilizarea lățimii de bandă.

În scopul acestui articol, voi instala Squid pe un VPS Linode CentOS 7 și îl voi folosi ca server proxy HTTP.

Cum se instalează Squid pe CentOS 7/8

Înainte de a începe, trebuie să știți că Squid, nu are cerințe minime, dar cantitatea de utilizare a RAM poate varia în funcție de clienții care navighează pe internet prin serverul proxy.

Squid este inclus în depozitul de bază și, prin urmare, instalarea este simplă și simplă. Înainte de a-l instala, totuși, asigurați-vă că pachetele dvs. sunt actualizate rulând.

yum -y update

Continuați cu instalarea squid, porniți și activați-l la pornirea sistemului folosind următoarele comenzi.

yum -y install squid
systemctl start squid
systemctl  enable squid

În acest moment, proxy-ul dvs. web Squid ar trebui să ruleze deja și puteți verifica starea serviciului cu ajutorul.

systemctl status squid
Ieșire eșantion
 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.

Iată câteva locații importante ale fișierelor de care ar trebui să fii conștient:

  • Fișier de configurare Squid: /etc/squid/squid.conf
  • Jurnal de acces Squid: /var/log/squid/access.log
  • Jurnalul Squid Cache: /var/log/squid/cache.log

Un fișier de configurare minim squid.conf (fără comentarii în el) arată astfel:

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

Configurarea Squid ca proxy HTTP

Aici, vă vom arăta cum să configurați squid ca proxy HTTP folosind numai adresa IP a clientului pentru autentificare.

Adăugați ACL-uri Squid

Dacă doriți să permiteți adresei IP să acceseze web prin noul dvs. server proxy, va trebui să adăugați o nouă linie ACL (listă de control acces) în fișierul de configurare .

vim /etc/squid/squid.conf

Linia pe care ar trebui să o adăugați este:

acl localnet src XX.XX.XX.XX

Unde XX.XX.XX.XX este adresa IP reală a clientului pe care doriți să o adăugați. Linia trebuie adăugată la începutul fișierului în care sunt definite ACL-urile. Este o practică bună să adăugați un comentariu lângă ACL, care va descrie cine folosește această adresă IP.

Este important să rețineți că, dacă Squid se află în afara rețelei locale, ar trebui să adăugați adresa IP publică a clientului.

Va trebui să reporniți Squid pentru ca noile modificări să poată intra în vigoare.

systemctl  restart squid

Deschideți porturile proxy Squid

După cum poate ați văzut în fișierul de configurare, numai anumite porturi sunt permise pentru conectare. Puteți adăuga mai multe editând fișierul de configurare.

acl Safe_ports port XXX

Unde XXX este portul real pe care doriți să îl încărcați. Din nou, este o idee bună să lăsați un comentariu lângă care să descrie pentru ce va fi folosit portul.

Pentru ca modificările să aibă efect, va trebui să reporniți squid încă o dată.

systemctl  restart squid

Autentificare client Squid Proxy

Cel mai probabil veți dori ca utilizatorii dvs. să se autentifice înainte de a utiliza proxy-ul. În acest scop, puteți activa autentificarea HTTP de bază. Este ușor și rapid de configurat.

Mai întâi, veți avea nevoie de instalat httpd-tools.

yum -y install httpd-tools

Acum să creăm un fișier care va stoca ulterior numele de utilizator pentru autentificare. Squid rulează cu utilizatorul „squid”, așa că fișierul ar trebui să fie deținut de acel utilizator.

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

Acum vom crea un utilizator nou numit „proxyclient” și vom configura parola acestuia.

htpasswd /etc/squid/passwd proxyclient

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

Acum, pentru a configura autentificarea, deschideți fișierul de configurare.

vim /etc/squid/squid.conf

După porturile ACL-urile adăugați următoarele linii:

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

Salvați fișierul și reporniți squid, astfel încât noile modificări să aibă efect:

systemctl restart squid

Blocați site-uri web pe Squid Proxy

În cele din urmă, vom crea un ultim ACL care ne va ajuta să blocăm site-urile web nedorite. Mai întâi, creați fișierul care va stoca site-urile aflate pe lista neagră.

touch /etc/squid/blacklisted_sites.acl

Puteți adăuga câteva domenii pe care doriți să le blocați. De exemplu:

.badsite1.com
.badsite2.com

Punctul de procedură îi spune calmarului să blocheze toate referințele la site-urile respective, inclusiv www.badsite1, subsite.badsite1.com, etc.

Acum deschideți fișierul de configurare al lui Squid.

vim /etc/squid/squid.conf

Imediat după porturile ACL-urile adaugă următoarele două linii:

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

Acum salvați fișierul și reporniți squid:

systemctl restart squid

Odată ce totul este configurat corect, acum puteți configura browserul clientului local sau setările de rețea ale sistemului de operare pentru a utiliza proxy-ul HTTP squid.

Concluzie

În acest tutorial, ați învățat cum să instalați, să securizați și să configurați singur un server Squid HTTP Proxy. Cu informațiile pe care tocmai le-ați primit, acum puteți adăuga câteva filtre de bază pentru traficul de intrare și de ieșire prin Squid.

Dacă doriți să faceți eforturi suplimentare, puteți chiar să configurați squid să blocheze unele site-uri web în timpul orelor de lucru pentru a preveni distragerile. Dacă aveți întrebări sau comentarii, vă rugăm să le postați în secțiunea de comentarii de mai jos.