Vyhledávání na webu

Jak vytvořit HTTP proxy pomocí Squid na CentOS 7/8


Webové servery proxy existují již nějakou dobu a používají je miliony uživatelů po celém světě. Mají širokou škálu účelů, nejoblíbenější je online anonymita, ale existují i jiné způsoby, jak využít webové proxy. Zde je několik nápadů:

  • Online anonymita
  • Zlepšete zabezpečení online
  • Zlepšete dobu načítání
  • Blokovat škodlivý provoz
  • Zaznamenejte svou online aktivitu
  • Obejít regionální omezení
  • V některých případech může snížit využití šířky pásma

Jak funguje proxy server

Proxy server je počítač, který se používá jako prostředník mezi klientem a jinými servery, ze kterých může klient požadovat prostředky. Jednoduchým příkladem toho je, když klient zadává online požadavky (například chce otevřít webovou stránku), nejprve se připojí k proxy serveru.

Proxy server poté zkontroluje mezipaměť svého lokálního disku a pokud tam data najdou, vrátí data klientovi, pokud nejsou uložena v mezipaměti, provede požadavek v zastoupení klienta pomocí IP adresy proxy (jiné než klienti) a poté data vrátit klientovi. Proxy server se pokusí uložit nová data do mezipaměti a použije je pro budoucí požadavky na stejný server.

Co je Squid Proxy

Squid je webový proxy server, který využíval mé široké spektrum organizací. Často se používá jako mezipaměť proxy a zlepšuje dobu odezvy a snižuje využití šířky pásma.

Pro účely tohoto článku budu instalovat Squid na Linode CentOS 7 VPS a používat jej jako HTTP proxy server.

Jak nainstalovat Squid na CentOS 7/8

Než začneme, měli byste vědět, že Squid nemá žádné minimální požadavky, ale velikost využití paměti RAM se může lišit v závislosti na klientech, kteří prohlížejí internet přes proxy server.

Squid je součástí základního úložiště, a proto je instalace jednoduchá a přímočará. Před instalací se však spuštěním ujistěte, že jsou vaše balíčky aktuální.

yum -y update

Pokračujte instalací squid, spusťte a povolte jej při startu systému pomocí následujících příkazů.

yum -y install squid
systemctl start squid
systemctl  enable squid

V tuto chvíli by již váš webový proxy Squid měl být spuštěn a vy můžete ověřit stav služby pomocí.

systemctl status squid
Ukázkový výstup
 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.

Zde jsou některá důležitá umístění souborů, o kterých byste měli vědět:

  • Konfigurační soubor Squid: /etc/squid/squid.conf
  • Protokol přístupu Squid: /var/log/squid/access.log
  • Protokol Squid Cache: /var/log/squid/cache.log

Minimální konfigurační soubor squid.conf (bez komentářů) vypadá takto:

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

Konfigurace Squid jako HTTP proxy

Zde vám ukážeme, jak nakonfigurovat squid jako HTTP proxy pomocí pouze klientské IP adresy pro autentizaci.

Přidat Squid ACL

Pokud chcete povolit IP adrese přístup k webu prostřednictvím vašeho nového proxy serveru, budete muset do konfiguračního souboru přidat nový řádek ACL (access control list). .

vim /etc/squid/squid.conf

Řádek, který byste měli přidat, je:

acl localnet src XX.XX.XX.XX

Kde XX.XX.XX.XX je skutečná IP adresa klienta, kterou chcete přidat. Řádek by měl být přidán na začátek souboru, kde jsou definovány ACL. Je dobrým zvykem přidat komentář vedle ACL, který bude popisovat, kdo používá tuto IP adresu.

Je důležité si uvědomit, že pokud se Squid nachází mimo vaši místní síť, měli byste přidat veřejnou IP adresu klienta.

Aby se nové změny projevily, budete muset Squid restartovat.

systemctl  restart squid

Otevřete Squid Proxy porty

Jak jste mohli vidět v konfiguračním souboru, pro připojení jsou povoleny pouze určité porty. Další můžete přidat úpravou konfiguračního souboru.

acl Safe_ports port XXX

Kde XXX je skutečný port, který chcete načíst. Opět je dobré zanechat komentář, který bude popisovat, k čemu bude port použit.

Aby se změny projevily, budete muset squid ještě jednou restartovat.

systemctl  restart squid

Ověření proxy klienta Squid

S největší pravděpodobností budete chtít, aby se uživatelé před použitím proxy ověřili. Za tímto účelem můžete povolit základní ověřování HTTP. Jeho konfigurace je snadná a rychlá.

Nejprve budete muset nainstalovat httpd-tools.

yum -y install httpd-tools

Nyní vytvoříme soubor, do kterého bude později uloženo uživatelské jméno pro ověření. Squid běží s uživatelem “squid ”, takže soubor by měl být ve vlastnictví tohoto uživatele.

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

Nyní vytvoříme nového uživatele s názvem “proxyclient ” a nastavíme jeho heslo.

htpasswd /etc/squid/passwd proxyclient

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

Nyní pro konfiguraci ověřování otevřete konfigurační soubor.

vim /etc/squid/squid.conf

Po portech ACL přidejte následující řádky:

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

Uložte soubor a restartujte chobotnici, aby se nové změny projevily:

systemctl restart squid

Blokovat webové stránky na Squid Proxy

Nakonec vytvoříme poslední ACL, který nám pomůže zablokovat nežádoucí webové stránky. Nejprve vytvořte soubor, který bude ukládat stránky na černé listině.

touch /etc/squid/blacklisted_sites.acl

Můžete přidat některé domény, které chcete zablokovat. Například:

.badsite1.com
.badsite2.com

Následující tečka říká chobotnici, aby zablokovala všechny odkazy na tyto stránky, včetně www.badsite1, subsite.badsite1.com, atd.

Nyní otevřete konfigurační soubor Squid.

vim /etc/squid/squid.conf

Hned za seznamy ACL portů přidejte následující dva řádky:

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

Nyní uložte soubor a restartujte chobotnici:

systemctl restart squid

Jakmile je vše správně nakonfigurováno, nyní můžete nakonfigurovat místní klientský prohlížeč nebo síťová nastavení operačního systému tak, aby používal váš squid HTTP proxy.

Závěr

V tomto tutoriálu jste se naučili, jak sami nainstalovat, zabezpečit a nakonfigurovat server Squid HTTP Proxy. S informacemi, které jste právě získali, můžete nyní přidat základní filtrování příchozího a odchozího provozu přes Squid.

Pokud si přejete udělat něco navíc, můžete dokonce nakonfigurovat chobotnici tak, aby během pracovní doby blokovala některé webové stránky, abyste zabránili rozptýlení. Pokud máte nějaké dotazy nebo připomínky, napište je do sekce komentářů níže.