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


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

  • Online anonimnost
  • Poboljšajte sigurnost na mreži
  • Poboljšajte vrijeme učitavanja
  • Blokirajte zlonamjerni promet
  • Zabilježite svoju aktivnost na mreži
  • Da se zaobiđu regionalna ograničenja
  • U nekim slučajevima može smanjiti korištenje propusnog opsega

Kako radi proxy server

Proxy server je računar koji se koristi kao posrednik između klijenta i drugih servera od kojih klijent može tražiti resurse. Jednostavan primjer ovoga je kada klijent postavlja online zahtjeve (na primjer, želi da otvori web stranicu), on se prvo povezuje na proxy server.

Proxy server tada provjerava svoju lokalnu predmemoriju diska i ako se podaci tamo mogu pronaći, vratit će podatke klijentu, ako nisu keširani, uputit će zahtjev u ime klijenta koristeći proxy IP adresu (različitu od klijenti), a zatim vratite podatke klijentu. Proxy server će pokušati keširati nove podatke i koristit će ih za buduće zahtjeve upućene istom serveru.

Šta je Squid proxy

Squid je web proxy koji je koristio moj širok spektar organizacija. Često se koristi kao proxy za keširanje i poboljšava vrijeme odgovora i smanjuje korištenje propusnog opsega.

Za potrebe ovog članka, instalirat ću Squid na Linode CentOS 7 VPS i koristiti ga kao HTTP proxy server.

Kako instalirati Squid na CentOS 7/8

Prije nego što počnemo, trebali biste znati da Squid nema nikakve minimalne zahtjeve, ali količina korištenja RAM-a može varirati ovisno o klijentima koji pretražuju internet preko proxy servera.

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

yum -y update

Nastavite tako da instalirate squid, pokrenite ga i omogućite ga pri pokretanju sistema koristeći sljedeće naredbe.

yum -y install squid
systemctl start squid
systemctl  enable squid

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

systemctl status squid
Sample Output
 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:

  • Squid konfiguracijski fajl: /etc/squid/squid.conf
  • Dnevnik pristupa lignji: /var/log/squid/access.log
  • Dnevnik keša lignje: /var/log/squid/cache.log

Minimalni squid.conf konfiguracijski fajl (bez komentara u njemu) 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 Squid-a kao HTTP proxyja

Ovdje ćemo vam pokazati kako konfigurirati squid kao HTTP proxy koristeći samo IP adresu klijenta za autentifikaciju.

Dodajte Squid ACL-ove

Ako želite dozvoliti IP adresi da pristupi webu preko vašeg novog proxy servera, morat ćete dodati novi ACL (kontrolna lista pristupa) red u konfiguracijski fajl .

vim /etc/squid/squid.conf

Linija koju biste trebali dodati je:

acl localnet src XX.XX.XX.XX

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

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

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

systemctl  restart squid

Otvorite Squid proxy portove

Kao što ste možda vidjeli u konfiguracijskoj datoteci, samo su određeni portovi dozvoljeni za povezivanje. Možete dodati još uređivanjem konfiguracijske datoteke.

acl Safe_ports port XXX

Gdje je XXX stvarni port koji želite učitati. Opet je dobra ideja da ostavite komentar pored koji će opisati za šta će se port koristiti.

Da bi promjene stupile na snagu, morat ćete ponovo pokrenuti squid još jednom.

systemctl  restart squid

Squid proxy provjera autentičnosti klijenta

Najvjerovatnije ćete željeti da se vaši korisnici provjere autentičnosti prije korištenja proxyja. U tu svrhu možete omogućiti osnovnu HTTP autentifikaciju. Lako i brzo se konfiguriše.

Prvo će vam trebati instalirani httpd-tools.

yum -y install httpd-tools

Sada kreirajmo datoteku koja će kasnije pohraniti korisničko ime za autentifikaciju. Squid radi sa korisnikom “squid ” tako da bi fajl trebao biti u vlasništvu tog korisnika.

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

Sada ćemo kreirati novog korisnika pod nazivom “proxyclient ” i postaviti njegovu lozinku.

htpasswd /etc/squid/passwd proxyclient

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

Sada da konfigurišete autentifikaciju otvorite konfiguracionu datoteku.

vim /etc/squid/squid.conf

Nakon portova ACL-ova dodajte sljedeće redove:

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

Sačuvajte datoteku i ponovo pokrenite squid kako bi nove promjene stupile na snagu:

systemctl restart squid

Blokirajte web stranice na Squid proxyju

Konačno, kreirat ćemo još jedan ACL koji će nam pomoći da blokiramo neželjene web stranice. Prvo, kreirajte datoteku koja će pohraniti web lokacije na crnoj listi.

touch /etc/squid/blacklisted_sites.acl

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

.badsite1.com
.badsite2.com

Tačka koja nastavlja govori squidu da blokira sve reference na te web lokacije uključujući www.badsite1, subsite.badsite1.com, itd.

Sada otvorite konfiguracijsku datoteku Squida.

vim /etc/squid/squid.conf

Odmah nakon portova ACL-ovi dodajte sljedeća dva reda:

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

Sada spremite datoteku i ponovo pokrenite squid:

systemctl restart squid

Nakon što se sve ispravno konfigurira, sada možete konfigurirati svoj lokalni pretraživač klijenta ili mrežne postavke operativnog sistema da koristi vaš squid HTTP proxy.

Zaključak

U ovom vodiču ste naučili kako sami instalirati, osigurati i konfigurirati Squid HTTP proxy server. Uz informacije koje ste upravo dobili, sada možete dodati neko osnovno filtriranje za dolazni i odlazni promet kroz Squid.

Ako želite ići više, možete čak konfigurirati squid da blokira neke web stranice tokom radnog vremena kako biste spriječili ometanje. Ako imate bilo kakvih pitanja ili komentara, objavite ih u odeljku za komentare ispod.