Kalmāru starpniekservera konfigurēšana ar ierobežotu piekļuvi un klientu iestatīšana starpniekservera lietošanai - 5. daļa


Linux Foundation sertificēts inženieris ir kvalificēts profesionālis, kuram ir zināšanas, lai instalētu, pārvaldītu un novērstu traucējumus tīkla pakalpojumos Linux sistēmās, un viņš ir atbildīgs par sistēmas projektēšanu, ieviešanu un pastāvīgu uzturēšanu. plaša arhitektūra.

Iepazīstinām ar Linux Foundation sertifikācijas programmu.

Šīs sērijas 1. daļā mēs parādījām, kā instalēt kalmāru - starpniekservera kešatmiņas serveri tīmekļa klientiem. Pirms turpināt, lūdzu, skatiet šo ziņu (saite sniegta zemāk), ja vēl neesat instalējis kalmārus savā sistēmā.

  1. 1. daļa - instalējiet tīkla pakalpojumus un automātiskās startēšanas konfigurēšanu sāknēšanas laikā

Šajā rakstā mēs parādīsim, kā konfigurēt Squid starpniekserveri, lai piešķirtu vai ierobežotu piekļuvi internetam, un kā konfigurēt http klientu vai tīmekļa pārlūkprogrammu, lai izmantotu šo starpniekserveri.

Operating System :	Debian Wheezy 7.5
IP Address 	 :	192.168.0.15
Hostname	 :	dev2.gabrielcanepa.com.ar
Operating System :	Ubuntu 12.04
IP Address 	 :	192.168.0.104 
Hostname	 :	ubuntuOS.gabrielcanepa.com.ar
Operating System :	CentOS-7.0-1406
IP Address 	 :	192.168.0.17 
Hostname	 :	dev1.gabrielcanepa.com.ar

Atcerēsimies, ka vienkāršā izteiksmē tīmekļa starpniekserveris ir starpnieks starp vienu (vai vairākiem) klienta datoriem un noteiktu tīkla resursu, visbiežāk sastopamais ir piekļuve internetam. Citiem vārdiem sakot, starpniekserveris ir savienots vienā pusē tieši ar internetu (vai ar maršrutētāju, kas ir savienots ar internetu), un, no otras puses, ar klientu datoru tīklu, kas caur to piekļūs globālajam tīmeklim.

Jums var rasties jautājums, kāpēc es vēlētos pievienot vēl vienu programmatūru sava tīkla infrastruktūrai?

1. Kalmāri saglabā iepriekšējo pieprasījumu failus, lai paātrinātu turpmāko pārsūtīšanu . Piemēram, pieņemsim, ka klients1 no interneta lejupielādē CentOS-7.0-1406-x86_64-DVD.iso . Kad klients2 pieprasa piekļuvi tam pašam failam, kalmārs var pārsūtīt failu no kešatmiņas, nevis atkal lejupielādēt no interneta. Kā jūs varat uzminēt, varat izmantot šo funkciju, lai paātrinātu datu pārsūtīšanu datoru tīklā, kuriem nepieciešami bieži kaut kādi atjauninājumi.

2. ACL ( piekļuves kontroles saraksti ) ļauj mums ierobežot piekļuvi vietnēm un/vai uzraudzīt piekļuvi katram lietotājam. Piekļuvi var ierobežot, piemēram, pēc nedēļas dienas, diennakts laika vai domēna.

3. Tīmekļa filtru apiešana ir iespējama, izmantojot tīmekļa starpniekserveri, kuram tiek veikti pieprasījumi un kurš klientam atdod pieprasīto saturu, nevis liek klientam to pieprasīt tieši internetā.

Piemēram, pieņemsim, ka esat pieteicies vietnē klients1 un vēlaties piekļūt vietnei www.facebook.com , izmantojot sava uzņēmuma maršrutētāju. Tā kā vietni var bloķēt jūsu uzņēmuma politikas, varat tā vietā izveidot savienojumu ar tīmekļa starpniekserveri un pieprasīt piekļuvi vietnei www.facebook.com . Tālvadības saturs pēc tam atkal tiek atgriezts caur tīmekļa starpniekserveri, apejot jūsu uzņēmuma maršrutētāja bloķēšanas politikas.

Kalmāru konfigurēšana - pamati

Squid tīmekļa starpniekservera piekļuves kontroles shēma sastāv no diviem dažādiem komponentiem:

  1. ACL elementi ir direktīvas rindiņas, kas sākas ar vārdu “ acl ” un attēlo testu veidus, kas tiek veikti pret jebkuru pieprasījuma darījumu.
  2. Piekļuves saraksta kārtulas veido darbība atļaut vai noraidīt , kam seko vairāki ACL elementi, un tos izmanto, lai norādītu, kāda darbība vai ierobežojums ir jāpiemēro konkrētam pieprasījumam. Tie tiek pārbaudīti secībā, un saraksta meklēšana tiek pārtraukta, tiklīdz viens no noteikumiem ir atbilstošs. Ja kārtulai ir vairāki ACL elementi, tā tiek ieviesta kā būla un operācija (visiem kārtulas ACL elementiem ir jābūt sakritībai, lai kārtula būtu atbilstoša).

Kalmāra galvenais konfigurācijas fails ir /etc/squid/squid.conf , kas ir ~ 5000 rindas garš, jo tajā ir gan konfigurācijas direktīvas, gan dokumentācija. Šī iemesla dēļ mēs izveidosim jaunu failu squid.conf , kurā būs tikai tās rindas, kurās ir iekļautas konfigurācijas direktīvas, atstājot tukšas vai komentētas rindas. Lai to izdarītu, mēs izmantosim šādas komandas.

# mv /etc/squid/squid.conf /etc/squid/squid.conf.bkp

Un tad,

# grep -Eiv '(^#|^$)' /etc/squid/squid.conf.bkp

OR

# grep -ve ^# -ve ^$ /etc/squid/squid.conf.bkp > /etc/squid/squid.conf

Tagad atveriet jaunizveidoto failu squid.conf un meklējiet (vai pievienojiet) šādus ACL elementus un piekļuves sarakstus.

acl localhost src 127.0.0.1/32
acl localnet src 192.168.0.0/24

Divas iepriekš minētās rindas ir pamatelements ACL elementu lietošanai.

  1. Pirmais vārds acl norāda, ka šī ir ACL elementu direktīvas rinda.
  2. Otrais vārds localhost vai localnet norāda direktīvas nosaukumu.
  3. Trešais vārds src šajā gadījumā ir ACL elementa tips, kas tiek izmantots, lai attiecīgi attēlotu klienta IP adresi vai adrešu diapazonu. Jūs varat norādīt vienu resursdatoru pēc IP (vai resursdatora nosaukuma, ja jums ir ieviesta kāda veida DNS izšķirtspēja) vai pēc tīkla adreses.
  4. Ceturtais parametrs ir filtrēšanas arguments, kas “ tiek ievadīts ” direktīvā.

Divas zemāk redzamās rindas ir piekļuves saraksta kārtulas un skaidri atspoguļo iepriekš minētās ACL direktīvas. Dažos vārdos tie norāda, ka http piekļuve jāpiešķir, ja pieprasījums nāk no lokālā tīkla ( localnet ) vai no localhost . Kādas ir atļautās vietējā tīkla vai vietējā resursdatora adreses? Atbilde ir: tie, kas norādīti localhost un localnet direktīvās.

http_access allow localnet
http_access allow localhost

Šajā brīdī jūs varat restartēt Squid , lai piemērotu visas gaidošās izmaiņas.

# service squid restart 		[Upstart / sysvinit-based distributions]
# systemctl restart squid.service 	[systemd-based distributions]

un pēc tam konfigurējiet klienta pārlūkprogrammu vietējā tīklā (mūsu gadījumā - 192.168.0.104 ), lai piekļūtu internetam, izmantojot jūsu starpniekserveri, šādi.

1. Atveriet izvēlni Rediģēt un izvēlieties opciju Preferences .

2. Noklikšķiniet uz Papildu , pēc tam cilnē Tīkls un visbeidzot uz Iestatījumi ...

3. Pārbaudiet Manuāla starpniekservera konfigurācija un ievadiet starpniekservera IP adresi un portu , kur tas meklē savienojumus.

Ņemiet vērā, ka pēc noklusējuma Kalmāri klausās portā 3128 , taču šo darbību varat ignorēt, rediģējot kārtulu piekļuves saraksts , kas sākas ar http_port (pēc pēc noklusējuma tas ir http_port 3128 ).

4. Noklikšķiniet uz Labi , lai piemērotu izmaiņas, un viss ir kārtībā.

Tagad jūs varat pārbaudīt, vai vietējā tīkla klients piekļūst internetam, izmantojot jūsu starpniekserveri, šādi.

1. Savā klientā atveriet termināli un ierakstiet

# ip address show eth0 | grep -Ei '(inet.*eth0)'

Šī komanda parādīs jūsu klienta pašreizējo IP adresi ( 192.168.0.104 nākamajā attēlā).

2. Klientā izmantojiet tīmekļa pārlūkprogrammu, lai atvērtu konkrēto vietni ( linux-console.net šajā gadījumā).

3. Serveris palaidiet.

# tail -f /var/log/squid/access.log

un jūs saņemsiet tiešu skatu par pieprasījumiem, kas tiek apkalpoti, izmantojot Squid .

Klienta piekļuves ierobežošana

Tagad pieņemsim, ka vēlaties skaidri liegt piekļuvi konkrētajai klienta IP adresei, vienlaikus saglabājot piekļuvi pārējam vietējam tīklam.

1. Definējiet jaunu ACL direktīvu šādi (es to nosaucu par ubuntuOS , bet jūs to varat nosaukt kā vēlaties).

acl ubuntuOS src 192.168.0.104

2. Pievienojiet direktīvu ACL sarakstam localnet access , kas jau ir izveidots, bet pirms tā ievadiet izsaukuma zīmi. Tas nozīmē: “ Atļaut piekļuvi internetam klientiem, kas atbilst lokālā tīkla ACL direktīvai, izņemot to, kas atbilst ubuntuOS direktīvai ”.

http_access allow localnet !ubuntuOS

3. Tagad, lai piemērotu izmaiņas, mums ir jārestartē Squid. Tad, ja mēģināsim pārlūkot kādu vietni, mēs atklāsim, ka piekļuve tagad ir liegta.

Kalmāru konfigurēšana - smalkā noskaņošana

Lai ierobežotu piekļuvi kalmāriem pēc domēna, mēs ACL direktīvā izmantosim atslēgvārdu dstdomain šādi.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Kur aizliegtie_domēni ir vienkārša teksta fails, kurā ir domēni, kuriem mēs vēlamies liegt piekļuvi.

Visbeidzot, mums jāpiešķir piekļuve Squid pieprasījumiem, kas neatbilst iepriekšējai direktīvai.

http_access allow localnet !forbidden

Vai varbūt mēs vēlēsimies atļaut piekļuvi šīm vietnēm tikai noteiktā dienas laikā ( 10:00 līdz 11:00 rītā ) tikai pirmdien (M) , trešdiena (W) un piektdiena (F) .

acl someDays time MWF 10:00-11:00
http_access allow forbidden someDays
http_access deny forbidden

Pretējā gadījumā piekļuve šiem domēniem tiks bloķēta.

Kalmāri atbalsta vairākus autentifikācijas mehānismus (Basic, NTLM, Digest, SPNEGO un Oauth) un palīgus (SQL datu bāze, LDAP, NIS, NCSA, lai nosauktu tikai dažus). Šajā apmācībā mēs izmantosim pamata autentifikāciju ar NCSA .

Pievienojiet šādas rindas failam /etc/squid/squid.conf .

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive on
auth_param basic realm Squid proxy-caching web server for Tecmint's LFCE series
acl ncsa proxy_auth REQUIRED
http_access allow ncsa

Piezīme: CentOS 7 kalmāru NCSA spraudnis ir atrodams/usr/lib64/squid/basic_nsca_auth, tāpēc attiecīgi mainiet to augšējā rindā.

Daži paskaidrojumi:

  1. Mums jāsaka Squid, kuru autentifikācijas palīga programmu izmantot ar auth_param direktīvu, norādot programmas nosaukumu (visticamāk, /usr/lib/squid/ncsa_auth vai/usr/lib64/squid/basic_nsca_auth), kā arī nepieciešamības gadījumā visas komandrindas opcijas (/etc/squid/passwd šajā gadījumā).
  2. /etc/squid/passwd fails tiek izveidots, izmantojot rīku htpasswd , kas ļauj pārvaldīt pamata autentifikāciju, izmantojot failus. Tas ļaus mums pievienot to lietotājvārdu (un tiem atbilstošo paroļu) sarakstu, kuriem būs atļauts izmantot Squid.
  3. credentialsttl 30 minūtes būs jāievada lietotājvārds un parole ik pēc 30 minūtēm (šo laika intervālu varat norādīt arī ar stundām).
  4. reģistrjutīga norāda, ka lietotājvārdi un paroles ir reģistrjutīgi.
  5. valstība apzīmē autentifikācijas dialoglodziņa tekstu, kas tiks izmantots kalmāru autentificēšanai.
  6. Visbeidzot, piekļuve tiek piešķirta tikai tad, ja starpniekservera autentifikācija ( prasīta starpniekservera_auth ) ir veiksmīga.

Izpildiet šo komandu, lai izveidotu failu un pievienotu akreditācijas datus lietotājam gacanepa (izlaidiet karogu -c ja fails jau pastāv).

# htpasswd -c /etc/squid/passwd gacanepa

Klienta mašīnā atveriet tīmekļa pārlūku un mēģiniet pārlūkot jebkuru konkrēto vietni.

Ja autentifikācija izdodas, piekļuve pieprasītajam resursam tiek piešķirta. Pretējā gadījumā piekļuve tiks liegta.

Kešatmiņas izmantošana, lai paātrinātu datu pārsūtīšanu

Viena no Squid atšķirīgajām iezīmēm ir iespēja no tīmekļa pieprasīt resursus kešatmiņā uz disku, lai paātrinātu šo objektu turpmākos pieprasījumus no tā paša klienta vai citu puses puses.

Pievienojiet failā squid.conf šīs direktīvas.

cache_dir ufs /var/cache/squid 1000 16 256
maximum_object_size 100 MB
refresh_pattern .*\.(mp4|iso) 2880

Daži iepriekš minēto direktīvu skaidrojumi.

  1. ufs ir kalmāru krātuves formāts.
  2. /var/cache/squid ir augstākā līmeņa direktorijs, kurā tiks saglabāti kešatmiņas faili. Šim direktorijam ir jābūt, un tam jābūt rakstāmam no Squid (Squid NETIEK izveidojis šo direktoriju jums)
  3. 1000 ir summa (MB), kas jāizmanto šajā direktorijā.
  4. 16 ir 1. līmeņa apakšdirektoriju skaits, savukārt 256 ir 2. līmeņa apakšdirektoriju skaits /var/spool/squid .
  5. Direktīva maximum_object_size norāda kešatmiņā atļauto objektu maksimālo lielumu.
  6. refresh_pattern stāsta Kalmāram, kā rīkoties ar konkrētiem failu tipiem ( .mp4 un .iso šajā gadījumā) un cik ilgi tam vajadzētu būt glabājiet pieprasītos objektus kešatmiņā (2880 minūtes = 2 dienas).

Pirmais un otrais 2880 ir attiecīgi zemākā un augšējā robeža tam, cik ilgi objekti bez skaidra derīguma termiņa tiks uzskatīti par neseniem, un tādējādi tos apkalpos kešatmiņa, turpretī 0% ir objektu vecuma procentuālais daudzums (laiks kopš pēdējās modifikācijas), kad katrs objekts bez skaidra derīguma termiņa tiks uzskatīts par neseno.

Pirmais klients ( IP 192.168.0.104 ) lejupielādē 71 MB .mp4 failu 2 minūtēs un 52 sekundēs.

Otrais klients ( IP 192.168.0.17 ) to pašu failu lejupielādē 1,4 sekundēs!

Tas ir tāpēc, ka fails tika piegādāts no Kalmāru kešatmiņas (norāda TCP_HIT/200 ) otrajā gadījumā, atšķirībā no pirmās instances, kad tas tika lejupielādēts tieši no internets (pārstāv TCP_MISS/200 ).

Atslēgvārdi HIT un MISS kopā ar atbildes kodu 200 http norāda, ka fails tika veiksmīgi piegādāts abas reizes, bet kešatmiņa bija HIT un garām. Kad kādu iemeslu dēļ pieprasījumu nevar nodrošināt kešatmiņa, kalmārs mēģina to apkalpot no interneta.

Secinājums

Šajā rakstā mēs esam apsprieduši, kā iestatīt kalmāru tīmekļa kešatmiņas starpniekserveri . Starpniekserveri varat izmantot, lai filtrētu saturu, izmantojot izvēlētos kritērijus, kā arī samazinātu latentumu (jo identiski ienākošie pieprasījumi tiek piegādāti no kešatmiņas, kas atrodas tuvāk klientam nekā tīmekļa serveris, kas faktiski apkalpo saturu, kā rezultātā datu pārsūtīšana) un tīkla trafiku, kā arī (samazinot izmantotās joslas platumu, kas ļauj ietaupīt naudu, ja maksājat par datplūsmu).

Lai iegūtu sīkāku dokumentāciju, varat atsaukties uz Squid vietni (noteikti pārbaudiet arī wiki), taču nevilcinieties sazināties ar mums, ja jums ir kādi jautājumi vai komentāri. Mums būs vairāk nekā prieks dzirdēt no jums!