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.