Kako stvoriti HTTP proxy koristeći Squid na CentOS 7/8


Web proxyji postoje već duže vrijeme i koriste ih milijuni korisnika širom svijeta. Imaju širok raspon namjena, a najpopularnija je anonimnost na mreži, no postoje i drugi načini na koje možete iskoristiti prednosti web proxyja. Evo nekoliko ideja:

  • Online anonimnost
  • Poboljšajte online sigurnost
  • Poboljšajte vrijeme učitavanja
  • Blokirajte zlonamjerni promet
  • Zabilježite svoju online aktivnost
  • Da biste zaobišli regionalna ograničenja
  • U nekim slučajevima može smanjiti korištenje propusnosti

Kako radi proxy poslužitelj

Proxy poslužitelj je računalo koje se koristi kao posrednik između klijenta i drugih poslužitelja od kojih klijent može tražiti resurse. Jednostavan primjer ovoga je kada klijent postavlja online zahtjeve (na primjer želi otvoriti web stranicu), on se prvo spaja na proxy poslužitelj.

Proxy poslužitelj zatim provjerava predmemoriju svog lokalnog diska i ako se podaci mogu naći tamo, vratit će podatke klijentu, ako nisu predmemorirani, podnijet će zahtjev u ime klijenta koristeći proxy IP adresu (različitu od klijenti) i potom vraćaju podatke klijentu. Proxy poslužitelj pokušat će predmemorirati nove podatke i koristiti ih za buduće zahtjeve upućene istom poslužitelju.

Što je Squid Proxy

Squid je web proxy koji je koristio moj širok raspon organizacija. Često se koristi kao proxy za predmemoriju i poboljšava vrijeme odziva i smanjuje korištenje propusnosti.

U svrhu ovog članka, instalirat ću Squid na Linode CentOS 7 VPS i koristiti ga kao HTTP proxy poslužitelj.

Kako instalirati Squid na CentOS 7/8

Prije nego što počnemo, trebate znati da Squid nema nikakve minimalne zahtjeve, ali količina RAM-a može varirati ovisno o klijentima koji pretražuju internet putem proxy poslužitelja.

Squid uključen je u osnovno spremište i stoga je instalacija jednostavna i jasna. Međutim, prije nego što ga instalirate, provjerite jesu li vaši paketi ažurni pokretanjem.

yum -y update

Nastavite s instaliranjem squida, pokrenite ga i omogućite pri pokretanju sustava pomoću sljedećih naredbi.

yum -y install squid
systemctl start squid
systemctl  enable squid

U ovom trenutku, vaš Squid web proxy već bi trebao biti pokrenut i možete provjeriti status usluge pomoću.

systemctl status squid
Uzorak izlaza
 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.

Evo nekoliko važnih lokacija datoteka kojih biste trebali biti svjesni:

  • Konfiguracijska datoteka Squid: /etc/squid/squid.conf
  • Squid Access log: /var/log/squid/access.log
  • Dnevnik Squid Cachea: /var/log/squid/cache.log

Minimalna squid.conf konfiguracijska datoteka (bez komentara u njoj) izgleda ovako:

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

Konfiguriranje Squida kao HTTP proxyja

Ovdje ćemo vam pokazati kako konfigurirati squid kao HTTP proxy koristeći samo IP adresu klijenta za provjeru autentičnosti.

Dodajte Squid ACL-ove

Ako želite dopustiti IP adresi da pristupi webu putem vašeg novog proxy poslužitelja, morat ćete dodati novi redak ACL (popis kontrole pristupa) u konfiguracijsku datoteku .

vim /etc/squid/squid.conf

Redak koji biste trebali dodati je:

acl localnet src XX.XX.XX.XX

Gdje je XX.XX.XX.XX stvarna IP adresa klijenta koju želite dodati. Redak treba dodati na početak datoteke u kojoj su definirani ACL-ovi. Dobra je praksa dodati komentar uz ACL koji će opisati tko koristi ovu IP adresu.

Važno je napomenuti da ako se Squid nalazi izvan vaše lokalne mreže, trebali biste dodati javnu IP adresu klijenta.

Morat ćete ponovno pokrenuti Squid kako bi nove promjene stupile na snagu.

systemctl  restart squid

Otvorite Squid proxy portove

Kao što ste mogli vidjeti u konfiguracijskoj datoteci, samo su određeni priključci dopušteni za povezivanje. Možete dodati još uređivanjem konfiguracijske datoteke.

acl Safe_ports port XXX

Gdje je XXX stvarni priključak koji želite učitati. Opet je dobra ideja ostaviti komentar pored koji će opisati za što će se luka koristiti.

Da bi promjene stupile na snagu, morat ćete ponovno pokrenuti squid.

systemctl  restart squid

Autentifikacija Squid Proxy klijenta

Vjerojatno ćete htjeti da se vaši korisnici autentificiraju prije korištenja proxyja. U tu svrhu možete omogućiti osnovnu HTTP autentifikaciju. Lako se i brzo konfigurira.

Najprije ćete morati instalirati httpd-tools.

yum -y install httpd-tools

Kreirajmo sada datoteku koja će kasnije pohraniti korisničko ime za provjeru autentičnosti. Squid radi s korisnikom “squid” tako da bi datoteka trebala biti u vlasništvu tog korisnika.

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

Sada ćemo stvoriti novog korisnika pod nazivom “proxyclient ” i postaviti mu lozinku.

htpasswd /etc/squid/passwd proxyclient

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

Sada za konfiguriranje autentifikacije otvorite konfiguracijsku datoteku.

vim /etc/squid/squid.conf

Nakon ACL-ova portova dodajte sljedeće retke:

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

Spremite datoteku i ponovno pokrenite squid kako bi nove promjene stupile na snagu:

systemctl restart squid

Blokirajte web stranice na Squid proxyju

Konačno, izradit ćemo još jedan ACL koji će nam pomoći u blokiranju neželjenih web stranica. Najprije izradite datoteku koja će pohraniti web stranice s crne liste.

touch /etc/squid/blacklisted_sites.acl

Možete dodati neke domene koje želite blokirati. Na primjer:

.badsite1.com
.badsite2.com

Točka u nastavku govori squid-u da blokira sve reference na te stranice uključujući www.badsite1, subsite.badsite1.com, itd.

Sada otvorite konfiguracijsku datoteku Squida.

vim /etc/squid/squid.conf

Odmah nakon ACL-ova portova dodajte sljedeća dva retka:

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

Sada spremite datoteku i ponovno pokrenite squid:

systemctl restart squid

Nakon što je sve ispravno konfigurirano, sada možete konfigurirati svoj lokalni preglednik klijenta ili mrežne postavke operativnog sustava da koriste vaš squid HTTP proxy.

Zaključak

U ovom ste vodiču naučili kako sami instalirati, osigurati i konfigurirati Squid HTTP proxy poslužitelj. S informacijama koje ste upravo dobili, sada možete dodati neka osnovna filtriranja za dolazni i odlazni promet kroz Squid.

Ako se želite dodatno potruditi, možete čak konfigurirati squid da blokira neke web stranice tijekom radnog vremena kako bi spriječio ometanja. Ako imate pitanja ili komentara, postavite ih u odjeljku za komentare u nastavku.