Sådan oprettes en HTTP-proxy ved hjælp af blæksprutte på CentOS 7/8


Webproxyer har eksisteret i nogen tid nu og er blevet brugt af millioner af brugere over hele kloden. De har en lang række formål, mest populære er online anonymitet, men der er andre måder, du kan drage fordel af webproxyer på. Her er nogle ideer:

  • Online anonymitet
  • Forbedre onlinesikkerhed
  • Forbedre indlæsningstider
  • Bloker ondsindet trafik
  • Log din online aktivitet
  • For at omgå regionale begrænsninger
  • I nogle tilfælde kan brugen af båndbredde reduceres

Proxy-serveren er en computer, der bruges som mellemled mellem klienten og andre servere, hvorfra klienten kan anmode om ressourcer. Et simpelt eksempel på dette er, når en klient fremsætter onlineanmodninger (for eksempel ønsker at åbne en webside), han opretter først forbindelse til proxyserveren.

Proxy-serveren kontrollerer derefter dens lokale diskcache, og hvis dataene kan findes derinde, vil den returnere dataene til klienten, hvis de ikke cachelagres, sender den anmodningen på klientens vegne ved hjælp af proxy-IP-adressen (forskellig fra klienter), og returner derefter dataene til klienten. Proxy-serveren vil prøve at cache de nye data og vil bruge dem til fremtidige anmodninger til den samme server.

Blæksprutte er en webproxy, der brugte min brede vifte af organisationer. Det bruges ofte som en cache-proxy og forbedrer responstider og reducerer brug af båndbredde.

Med henblik på denne artikel installerer jeg Squid på en Linode CentOS 7 VPS og bruger den som en HTTP-proxyserver.

Sådan installeres blæksprutte på CentOS 7/8

Inden vi starter, skal du vide, at blæksprutte ikke har nogen minimumskrav, men mængden af RAM-brug kan variere afhængigt af klienter, der surfer på internettet via proxyserveren.

Blæksprutte er inkluderet i basislageret, og installationen er således enkel og ligetil. Før du installerer det, skal du dog sørge for, at dine pakker er opdaterede ved at køre.

# yum -y update

Fortsæt ved at installere blæksprutte, start og aktiver den ved systemstart ved hjælp af følgende kommandoer.

# yum -y install squid
# systemctl start squid
# systemctl  enable squid

På dette tidspunkt skal din Squid-webproxy allerede køre, og du kan bekræfte status for tjenesten med.

# 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.

Her er nogle vigtige filplaceringer, du skal være opmærksom på:

  • Blækspruttekonfigurationsfil: /etc/squid/squid.conf
  • Blæksprutteadgangslog: /var/log/squid/access.log
  • Blæksprutte-cache-log: /var/log/squid/cache.log

En minimum squid.conf konfigurationsfil (uden kommentarer i den) ser sådan ud:

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

Konfiguration af blæksprutte som en HTTP-proxy

Her viser vi dig, hvordan du konfigurerer blæksprutter som en HTTP-proxy, der kun bruger klientens IP-adresse til godkendelse.

Hvis du ønsker at give IP-adressen adgang til internettet via din nye proxyserver, skal du tilføje en ny ACL (adgangskontrolliste) linje i konfigurationsfilen.

# vim /etc/squid/squid.conf

Linjen du skal tilføje er:

acl localnet src XX.XX.XX.XX

Hvor XX.XX.XX.XX er den faktiske klient-IP-adresse, du vil tilføje. Linjen skal tilføjes i begyndelsen af filen, hvor ACL'erne er defineret. Det er en god praksis at tilføje en kommentar ved siden af ACL, der beskriver, hvem der bruger denne IP-adresse.

Det er vigtigt at bemærke, at hvis Squid er placeret uden for dit lokale netværk, skal du tilføje klientens offentlige IP-adresse.

Du bliver nødt til at genstarte blæksprutter, så de nye ændringer kan træde i kraft.

# systemctl  restart squid

Som du måske har set i konfigurationsfilen, er det kun visse porte, der er tilladt at oprette forbindelse til. Du kan tilføje flere ved at redigere konfigurationsfilen.

acl Safe_ports port XXX

Hvor XXX er den aktuelle port, du ønsker at indlæse. Igen er det en god ide at efterlade en kommentar ved siden af, der beskriver, hvad havnen skal bruges til.

For at ændringerne skal træde i kraft, skal du genstarte blæksprutten igen.

# systemctl  restart squid

Du vil sandsynligvis have dine brugere til at godkende, før de bruger proxyen. Til dette formål kan du aktivere grundlæggende HTTP-godkendelse. Det er let og hurtigt at konfigurere.

Først skal du installere httpd-værktøjer.

# yum -y install httpd-tools

Lad os nu oprette en fil, der senere gemmer brugernavnet til godkendelse. Blæksprutte kører med brugeren "blæksprutte", så filen skal ejes af den bruger.

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

Nu opretter vi en ny bruger kaldet “proxyclient” og opsætter dens adgangskode.

# htpasswd /etc/squid/passwd proxyclient

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

Åbn konfigurationsfilen for at konfigurere godkendelsen.

# vim /etc/squid/squid.conf

Efter portens ACL'er tilføjes følgende linjer:

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

Gem filen og genstart blæksprutter, så de nye ændringer kan træde i kraft:

# systemctl restart squid

Endelig opretter vi en sidste ACL, der hjælper os med at blokere uønskede websteder. Opret først den fil, der gemmer de sortlistede websteder.

# touch /etc/squid/blacklisted_sites.acl

Du kan tilføje nogle domæner, du vil blokere. For eksempel:

.badsite1.com
.badsite2.com

Den fortsatte prik fortæller blæksprutte at blokere alle referencer til disse websteder inklusive www.badsite1, subsite.badsite1.com osv.

Åbn nu Squid's konfigurationsfil.

# vim /etc/squid/squid.conf

Lige efter portens ACL'er tilføj følgende to linjer:

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

Gem nu filen og genstart blæksprutter:

# systemctl restart squid

Når alt er konfigureret korrekt, kan du nu konfigurere din lokale klientbrowser eller operativsystemets netværksindstillinger til at bruge din blæksprutte HTTP-proxy.

I denne vejledning lærte du at installere, sikre og konfigurere en Squid HTTP-proxyserver alene. Med de oplysninger, du lige har fået, kan du nu tilføje nogle grundlæggende filtrering for indgående og udgående trafik gennem blæksprutte.

Hvis du ønsker at gå en ekstra mil, kan du endda konfigurere blæksprutter til at blokere nogle websteder i arbejdstiden for at forhindre distraktioner. Hvis du har spørgsmål eller kommentarer, bedes du sende dem i kommentarfeltet nedenfor.