Zoeken op website

Een HTTP-proxy maken met Squid op CentOS 7/8


Webproxy's bestaan al geruime tijd en worden door miljoenen gebruikers over de hele wereld gebruikt. Ze hebben een breed scala aan doeleinden, waarvan de meest populaire online anonimiteit is, maar er zijn andere manieren waarop u kunt profiteren van webproxy's. Hier zijn enkele ideeën:

  • Online anonimiteit
  • Verbeter de onlinebeveiliging
  • Verbeter de laadtijden
  • Blokkeer kwaadaardig verkeer
  • Registreer uw online activiteit
  • Om regionale beperkingen te omzeilen
  • In sommige gevallen kan het bandbreedtegebruik worden verminderd

Hoe proxyserver werkt

De proxyserver is een computer die wordt gebruikt als tussenpersoon tussen de client en andere servers waarvan de client bronnen kan opvragen. Een eenvoudig voorbeeld hiervan is dat wanneer een client online verzoeken doet (bijvoorbeeld een webpagina wil openen), hij eerst verbinding maakt met de proxyserver.

De proxyserver controleert vervolgens de lokale schijfcache en als de gegevens daarin kunnen worden gevonden, stuurt hij de gegevens terug naar de client. Als deze niet in de cache zijn opgeslagen, zal hij het verzoek namens de client doen met behulp van het proxy-IP-adres (anders dan het klanten) en stuur de gegevens vervolgens terug naar de klant. De proxyserver zal proberen de nieuwe gegevens in het cachegeheugen op te slaan en deze gebruiken voor toekomstige verzoeken aan dezelfde server.

Wat is Squid-proxy

Squid is een webproxy die mijn brede scala aan organisaties gebruikte. Het wordt vaak gebruikt als caching-proxy en verbetert de responstijden en vermindert het bandbreedtegebruik.

Voor de doeleinden van dit artikel installeer ik Squid op een Linode CentOS 7 VPS en gebruik ik deze als HTTP-proxyserver.

Hoe Squid op CentOS 7/8 te installeren

Voordat we beginnen, moet je weten dat Squid geen minimumvereisten heeft, maar de hoeveelheid RAM-gebruik kan variëren, afhankelijk van de clients die via de proxyserver op internet surfen.

Squid is opgenomen in de basisrepository en dus is de installatie eenvoudig en ongecompliceerd. Voordat u het installeert, moet u er echter voor zorgen dat uw pakketten up-to-date zijn door deze uit te voeren.

yum -y update

Ga verder met het installeren van squid, start het en schakel het in bij het opstarten van het systeem met behulp van de volgende opdrachten.

yum -y install squid
systemctl start squid
systemctl  enable squid

Op dit punt zou uw Squid-webproxy al actief moeten zijn en kunt u de status van de service verifiëren met.

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

Hier zijn enkele belangrijke bestandslocaties waar u rekening mee moet houden:

  • Inktvisconfiguratiebestand: /etc/squid/squid.conf
  • Inktvistoegangslogboek: /var/log/squid/access.log
  • Squid Cache-logboek: /var/log/squid/cache.log

Een minimaal squid.conf configuratiebestand (zonder commentaar erin) ziet er als volgt uit:

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

Squid configureren als een HTTP-proxy

Hier laten we u zien hoe u squid configureert als een HTTP-proxy met alleen het IP-adres van de client voor authenticatie.

Voeg Squid ACL's toe

Als u wilt dat het IP-adres toegang krijgt tot internet via uw nieuwe proxyserver, moet u een nieuwe ACL-regel (toegangscontrolelijst) toevoegen aan het configuratiebestand .

vim /etc/squid/squid.conf

De regel die u moet toevoegen is:

acl localnet src XX.XX.XX.XX

Waarbij XX.XX.XX.XX het feitelijke client-IP-adres is dat u wilt toevoegen. De regel moet worden toegevoegd aan het begin van het bestand waar de ACL's zijn gedefinieerd. Het is een goede gewoonte om naast ACL een opmerking toe te voegen waarin wordt beschreven wie dit IP-adres gebruikt.

Het is belangrijk op te merken dat als Squid zich buiten uw lokale netwerk bevindt, u het openbare IP-adres van de client moet toevoegen.

Je moet Squid opnieuw opstarten, zodat de nieuwe wijzigingen van kracht kunnen worden.

systemctl  restart squid

Open Squid-proxypoorten

Zoals je misschien in het configuratiebestand hebt gezien, zijn alleen bepaalde poorten toegestaan voor verbinding. U kunt meer toevoegen door het configuratiebestand te bewerken.

acl Safe_ports port XXX

Waarbij XXX de daadwerkelijke poort is die u wilt laden. Ook hier is het een goed idee om een opmerking achter te laten, waarin wordt beschreven waarvoor de poort zal worden gebruikt.

Om de wijzigingen door te voeren, moet je Squid opnieuw opstarten.

systemctl  restart squid

Squid Proxy Client-authenticatie

U wilt hoogstwaarschijnlijk dat uw gebruikers zich verifiëren voordat ze de proxy gebruiken. Voor dat doel kunt u basis-HTTP-authenticatie inschakelen. Het is eenvoudig en snel te configureren.

Eerst moet je httpd-tools geïnstalleerd hebben.

yum -y install httpd-tools

Laten we nu een bestand maken waarin later de gebruikersnaam voor de authenticatie wordt opgeslagen. Squid wordt uitgevoerd met gebruiker “squid”, dus het bestand moet eigendom zijn van die gebruiker.

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

Nu gaan we een nieuwe gebruiker aanmaken met de naam “proxyclient” en het wachtwoord instellen.

htpasswd /etc/squid/passwd proxyclient

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

Om de authenticatie te configureren, opent u nu het configuratiebestand.

vim /etc/squid/squid.conf

Voeg na de poorten ACL's de volgende regels toe:

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

Sla het bestand op en start squid opnieuw op, zodat de nieuwe wijzigingen van kracht kunnen worden:

systemctl restart squid

Blokkeer websites op Squid Proxy

Ten slotte zullen we nog een laatste ACL maken waarmee we ongewenste websites kunnen blokkeren. Maak eerst het bestand waarin de sites op de zwarte lijst worden opgeslagen.

touch /etc/squid/blacklisted_sites.acl

U kunt enkele domeinen toevoegen die u wilt blokkeren. Bijvoorbeeld:

.badsite1.com
.badsite2.com

De volgende stip vertelt squid om alle verwijzingen naar die sites te blokkeren, inclusief www.badsite1, subsite.badsite1.com, enz.

Open nu het configuratiebestand van Squid.

vim /etc/squid/squid.conf

Net na de poorten voegen ACL's de volgende twee regels toe:

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

Sla nu het bestand op en start squid opnieuw:

systemctl restart squid

Zodra alles correct is geconfigureerd, kunt u nu de netwerkinstellingen van uw lokale clientbrowser of besturingssysteem configureren om uw squid HTTP-proxy te gebruiken.

Conclusie

In deze tutorial leerde je hoe je zelf een Squid HTTP Proxy-server kunt installeren, beveiligen en configureren. Met de informatie die u zojuist heeft ontvangen, kunt u nu een aantal basisfilters toevoegen voor inkomend en uitgaand verkeer via Squid.

Als u een stap verder wilt gaan, kunt u squid zelfs configureren om sommige websites tijdens werkuren te blokkeren om afleiding te voorkomen. Als u vragen of opmerkingen heeft, kunt u deze in het commentaargedeelte hieronder plaatsen.